bug项目地址:https://github.com/lzyzsd/AndroidUIPorblems
这次作业是视图优化,首先运行程序之前,在开发者选项中勾选Show GPU Overdraw
1.程序首页如下
出现3X及以上的过度绘制区域有button上面的文本及下面的整个LinearLayout。
两个button的过度绘制是由于整个界面背景及button默认背景的叠加,这个是合理的需求,所以不改。
下面的LinearLayout背景和界面背景一样,可以删去,效果如下。
2.打开OVERDRAWVIEW界面
画了四个矩形,第一个铺满整个界面,第二个从界面高度1/4处画到最下面,第三个和第四个分别从1/3和1/2处往下画。因此界面越往下过度绘制的程度越高。
改为只绘制每个矩形的可见部分,效果如下:
3.打开BUSYONDRAW
没有严重的过度绘制的问题。
本来想用Profile GPU Rendering来查看的,奈何电脑性能太差,模拟机的操作都挺卡的,看不出效果,只能在真机上操作,结果显示跳转有点卡顿。
查看代码发现在自定义控件的onDraw方法中有一个循环1k的System.out.println操作,加上加载的自定义控件有30个,相当于在UI线程中做了3W个这样的操作。
于是删除该后台输出操作,重新运行,页面跳转流畅。
时间: 2024-10-14 19:00:30