05
2017
10

【Android】の基础——布局优化和过度绘制

在提高app性能上面,除了在内存上优化,还可以在布局上优化。

布局优化

通过<include>、<merge>标签

使用<include>引入其他的布局。
使用<merge>减少视图层级结构。

通过ViewStub进行盐池加载

ViewStub是一个轻量级的View,它是一个看不见的,不占布局位置,占用资源非常小的控件。可以为ViewStub指定一个布局,在Inflate布局的时候,只有ViewStub会被初始化,然后当ViewStub被设置为可见的时候,或是调用了ViewStub.inflate()的时候,ViewStub所向的布局就会被Inflate和实例化,然后ViewStub的布局属性都会传给它所指向的布局。

过度绘制

过度绘制:在屏幕一个像素上绘制多次(超过一次)。比如一个TextView后有背景,那么显示文本的像素至少绘了两次,一次是背景,一次是文本。

解决办法:

  1. 利用Hierarchy Viewer(一个能够以可视化的角度直观的获得UI布局设计的结构和各种属性信息的工具),对某一个UI的布局进行分析,得到整体的布局图,通过观察相关的属性查看是否有冗余的layout。
  2. 移除不必要的background:
    e.g.:移除Window默认的Background:
    getWidow.setBackgroundDrawable(null);
上一篇:Python GUI编程(Tkinter)创建一个GUI程序 下一篇:(一)安卓框架搭建之项目分层、主题、gradle基本配置