注:本文内容是《Android 群英传》学习笔记,主要提炼书中内容然后加上部分自己的完善和补充。
android 渲染机制
- 16ms :1000ms在显示60帧画面的单位时间。系统通过VSYNC信号出发对UI的渲染、重绘。
- 检测UI渲染时间工具
- 开发者选项->Profile GPU Rendering(GPU配置未见)->On the screen as bars(以条的形式显示与屏幕)
- 每一条柱状先都包含三部分
- 蓝色代表测量绘制Display List的时间,
- 红色代表OpenGL渲染Display List 所需要的时间
- 黄色代表CPU等待GPU处理的时间。
- 中间的绿色横线代表VSYNC时间16ms
- 需要尽量将所有条形图都控制在这条绿线之下。
避免Overdraw
避免Overdraw ,开发者选项中有一个检测工具(Enable GPU Overdraw 调试GPU过度轩渲染),减少红色区域,增加蓝色区域。
优化布局层次
Google建议View 的高度不应超过10层,避免嵌套过多。
ViewStub 实现view的延迟加载
- ViewStub默认不加载
- 两种方式显示通过ViewStub 加载显示的View
mViewStub = (ViewStub)findViewById(R.id.viewstub); mViewStub.setVisiable(View.VISIABLE);
-
View inflateView = mViewStub.inflate();
区别是inflate()方法可以返回引用的布局,可以通过findViewById 找到layout加载的空间。儿不管使用哪种方式,一旦<ViewStub>被设置为可见或者inflate了,<ViewStub>就不存在了。并将这个Layout 的ID重新设置为<ViewStub>中通过android:inflateId属性所指定的ID。