前一段时间,在作android里app项目修改的时候,上面希望得到一个自定义的titlebar界面。这个问题看似简单,不深入分析,还是会走不少弯路的。首先拿到这个问题,我有一下想法:
第一个种替换,就是最直接的也是我最开始想到的:写一个layout文件,来替换到这个应用的这个activity的titlebar,那么android系统应该会提供关于titlebar的参数,我们什么时候用到titlebar呢,对,就在配置文件和activity界面可以修改.在我尝试在一个活动里面用上自定义布局的titlebar后发现,我的layout无法完整填充这个titlebar,存在丑陋的间隙,不符合要求。这一条路失败。
第二种先删除,再添加。这一种看似于第一种有点相同 ,其实,思考方式上有很大的区别。上一种我老想的是在该应用替换掉系统的titlebar,于是我就陷入了一种思维里:查找系统提供操作titlebar的接口,然后把它替换掉就可以了。这个思维的可怕之处就是让你不会思考别的途径来解决这个问题,并且它强迫你进入到一个循环:要解决a,发现要先解决b,要解决b,再发现要解决c问题等,最后呢,你发现你走的这条路的最后还是没有解决掉你的问题,那么你之前做的一些努力对这个项目来说或许就是无用功。那么为什么没有想到删除比修改要灵活很多呢?我觉得这个或许就是大多数人思考的方式(至少我是这样)。好,还是先说这个问题,采用这个方法后,出现了一个新问题:从一个界面到另一个界面,或者程序启动的时候,这段时间也许屏幕黑屏等,出现了titlebar,当界面完全展示出来时,titlebar就消失了,我的一个同事呢就是查找activity的毛病。其实这个还是基础知识的问题:界面要想展示出来,必须调用onResume,而他在onResume里面设置窗口是没有titlebar的,问题显而易见,应该在配置文件的时候,把这个界面该为titlebar的主题即可。
今天还有一个问题,也是非常简单:我想根据配置文件里面的属性值,来启动或取消android的应用的权限。
拿到这个问题,你或许在想:启动好实现,取消怎么做呢?于是乎我就去找怎么取消应用中已经注册了的权限(比如关闭网络接受相关的权限,用户不想用流量了),然后这个我突然又发觉,我干什么去找这个呢?什么都不坐不就等于取消吗。
这段时间,我经常遇到这些类似的问题:接到一个任务,心想立刻把它作出来,而没有仔细的,按照一定的思维好好分析它。或许有的人会说,你如果不去走弯路,你怎么知道你在走弯路呢?这个也有一点的道理,但是有谁愿意走弯路呢,我们有捷径不走,难道去走弯路?
干什么事情,都事先都应该有个思路,就想初中高中的时候,数学老师给我们讲:求最大值问题有三种思路:a,b,c.....。经验丰富的开发人员思考问题肯定有他自己的思维逻辑。我就在想:这个思维逻辑才是最重要的,而不是所谓的经验。就像我一年前我的boss对我讲:解决问题,要有你自己的思路,即使搜索也要有你的技巧在里面。这句话对我的印象很深,有时候我也跟我的同事交流,但是现在发现我也做的不行。
一旦有了自己的解决问题的思维方式之后,不管里做什么开发,你都可以轻松应对。这思路不再这里,就在你的心里。