云课堂的题目
下载bug项目:https://github.com/lzyzsd/AndroidUIPorblems ,请注意打开开发者选项中的ShowOverDraw选项,查看都有哪些过度绘制区域,并作出优化。
要求:写一篇博客,将分析解决过程描述清楚,提交作业时附上链接地址,并上传改好的项目文件。
解题过程:
- 打开开发者选项中的ShowOverDraw选项,发现主界面和OverDrawViewActivity界面都有过度绘制的问题。
- 对于主界面,在布局XML中删除多余的背景色,减少了一个LinearLayout的层级,基本达到效果(还可以取消主界面的初始窗口背景,但我觉得不好看,就没取消)。
- OverDrawViewActivity界面主要是多个界面层叠的问题,我使用canvas.clipRect()方法将每次绘图切片,让他只占显示出来的大小,不会占用多余的地方。(但感觉用的有点蠢,还望指教)。clipRect()方法参考文档:http://googlers.iteye.com/blog/1289439
- 对于BusyOnDrawViewActivity界面,主要问题在于,在onDraw()方法中执行了太多初始化内容和耗时操作。解决方法:
1.把初始化的内容都移到构造方法中执行。
2.对于耗时操作,新开线程,让他去新的线程中慢慢跑,如果此耗时操作需要顺序执行,还需要加锁。 - BusyOnDrawViewActivity的布局XML中使用了太多的层级,可以考虑使用Relativlayout优化,但感觉界面可读性有点差,就没优化。