以下为分析过程、指出问题、大致修改思路,修改好的项目请下载网盘中文件。
run之后可以看出,竖屏时存在过度绘制,横屏时不存在。
打开代码发现,过多嵌套LinearLayout,并且给LinearLayout指定了不必要的背景。TextView也
指定了无谓的背景色。因此这部分可以采用RelativeLayout并去掉没有意义的背景色。
修改前,竖屏:
横屏:
修改后:
2.第一个按钮overdrawview
mPaint.setColor(Color.GRAY);
canvas.drawRect(0, 0, width, height, mPaint);
mPaint.setColor(Color.CYAN);
canvas.drawRect(0, height/4, width, height, mPaint);
mPaint.setColor(Color.DKGRAY);
canvas.drawRect(0, height/3, width, height, mPaint);
mPaint.setColor(Color.LTGRAY);
canvas.drawRect(0, height/2, width, height, mPaint);
各种重叠绘制,乱七八糟。实际只需要对从上往下0-1/4,1/4-1/3,1/3-1/2,1/2-1分别绘制
GRAY、CYAN、DKGRAY、LTGRAY即可。
修改前:
修改后:
3.第二个按钮busyondraw
第二个按钮点击之后,耗时很久才响应。打开ShowOverDraw选项并不存在过度绘制问题。但是打
开代码之后发现LinearLayout嵌套多层,耗费大量时间、严重影响用户体验。可以修改为
RelativeLayout或者GridLayout布局。