三方面:Android的渲染机制,内存与GC,电量优化。
渲染优化:
UI达到60fps需要再16ms内完成绘制
工具:打开手机里的开发者选项,选择Profile GPU Rendering,选中On screen as bars的选项。
1,层叠组件来实现复杂的UI效果,可能造成过度绘制,canvas.clipRect指定绘制区域
2,减少布局嵌套,推荐使用constraintLayout,
约束集 LinearLayout(线性布局),RelativeLayout(相对布局),百分比布局等的功能于一身,扁平式的布局方式,无任何嵌套,减少布局的层级,优化渲染性能。使用merge,viewSub
Refresh Rate:代表了屏幕在一秒内刷新屏幕的次数,这取决于硬件的固定参数,例如60Hz。
Frame Rate:代表了GPU在一秒内绘制操作的帧数,例如30fps,60fps。
GPU会获取图形数据进行渲染,然后硬件负责把渲染后的内容呈现到屏幕上,他们两者不停的进行协作。
绘制流程
:Android需要把XML布局文件转换成GPU能够识别并绘制的对象。这个操作是在DisplayList的帮助下完成的。DisplayList持有所有将要交给GPU绘制到屏幕上的数据信息。任何时候View中的绘制内容发生变化时,都会重新执行创建DisplayList,渲染DisplayList,更新到屏幕上等一系列操作。
RecyclerView的尺寸在每次改变时,比如你加任何些东西。setHasFixedSize 的作用就是确保尺寸是通过用户输入从而确保RecyclerView的尺寸是一个常数。RecyclerView 的Item宽或者高不会变。每一个Item添加或者删除都不会变。如果你没有设置setHasFixedSized没有设置的代价将会是非常昂贵的。因为RecyclerView会需要而外计算每个item的size
控件: