Android[学习] UI优化方案
项目开发完毕后,然后就是优化,怎么优化呢,我是先从ui方向优化。
###第一种 Overdraw的检测
手机里面就能打开测试,设置 -> 开发者选项 -> 调试GPU过度绘制 -> 显示GPU过度绘制,从字面意思就可以看到,它是查看绘制过程中过度绘制严重程度。
打开后会发现有多种颜色,每种颜色代表不同的过度绘制程度。
那么如果你发现你的app上深红色的色块比较多,那么可能就要注意了。
怎么处理呢?
-
(1)布局程度的调整,如果在布局中重复设置 background,就会出现过度绘制,例如,在设置列表listview背景为白色,background=“white”,但是想让条目也为白色,设置background为白色,这样就造成了过度绘制
-
(2)使用中设置background,例如在设置imageview的时候先设置一个预显示background,然后再设置
-
(3)自定义View中有些图片要叠加使用,就会造成过度绘制,使用clipRect能解决这类型问题。
###第二种 Hierarchy Viewer 减少不必要的且套
Android studio中有
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7VOJS6zz-1593140247187)(http://i.imgur.com/A2bdISH.png)]
Android的官方文档中,有这么一句话:
出于安全考虑,Hierarchy Viewer只能连接Android开发版手机或是模拟器
romainguy在github上有个项目ViewServer,可以下载下来导入到IDE中,里面有个ViewServer的类,类注释上也标注了用法,在你希望调试的Activity以下该三个方法中,添加几行代码:
public class MyActivity extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Set content view, etc. ViewServer.get(this).addWindow(this); } public void onDestroy() { super.onDestroy(); ViewServer.get(this).removeWindow(this); } public void onResume() { super.onResume(); ViewServer.get(this).setFocusedWindow(this); } }
经验:一个是Linearlayout嵌套的,一个是RelativeLayout的。Linearlayout的版本相对RelativeLayout的版本要慢很多(请多次点击Profile Node取样)。即可说明RelativeLayout的版本更优于Linearlayout的写法,并且Hierarchy Viewer可以帮助我们发现类似的问题。
第三种 Android标签的优化
如果在一个项目中需要用到相同的布局设计,可以通过 标签来重用layout代码,
这样可以多次引用一个布局片段而不用重复的复制、粘贴。通过include标签也可以覆写一些属性的值,
标签在UI的结构优化中起着非常重要的作用,它可以删减多余的层级,优化UI。多用于替换FrameLayout或者当一个布局包含另一个时,标签消除视图层次结构中多余的视图组。例如你的主布局文件是垂直布局,引入了一个垂直布局的include,这是如果include布局使用的LinearLayout就没意义了,使用的话反而减慢你的UI表现。这时可以使用标签优化。
标签最大的优点是当你需要时才会加载,使用他并不会影响UI初始化时的性能。各种不常用的布局想进度条、显示错误消息等可以使用标签,以减少内存使用量,加快渲染速度。是一个不可见的,大小为0的View。
更多相关文章
- Android开发的硬件加速
- android中使用okhttp实现文件上传
- Android绘制文本基本概念之- top, bottom, ascent, descent, bas
- 啥是佩奇?打造Android界佩奇
- Android(安卓)MVC模式实例(一)
- 安卓ScrollView总结
- Android(安卓)ApiDemo分析(九)--Graphics
- Android通知管理(NotificationManager)的使用,包括震动,led闪屏
- [转]android 修改ramdisk.img和init.rc && android启动后设置/da