Android 布局优化篇

一、标签的使用

include:标签共享布局

ViewStub:标签实现延迟加载,是一种不可视并大小为0的视图,当它设置为可见或者被inflate之后,就会填充布局资源。

merge:标签减少布局层次

二、尽量使用CompoundDrawable

比如:android:drawableBottom="@mipmap/ic_launcher"

三、使用Lint

Android Lint除了可以对Java代码进行静态的检查之外,也可以用来为检查应用的布局是否存在可以优化的地方。Lint的如下规则是专门为优化布局设置的:

  • AndroidLintUseCompoundDrawables:就是前面介绍的尽量使用CompoundDrawable.
  • MergeRootFrame:就是前面介绍的merge标签减少布局层次。
  • TooManyViews:单个布局存在太多的View,默认情况下,单个布局中View的个数最多只能是80个,可以考虑使用CompoundDrawables等来减少View的个数。
  • TooDeepLayout:避免过深的布局嵌套,默认的情况下,单个布局最多层次10,可以考虑使用RelativeLayout来减少布局的层次。
  • UselessParent:多余的父控件。
  • NestedWeights:android:layout_weight 属性会使 View进行两次的测量,当一个LinearLayout 拥有非0dp值得android:layout_weight属性,这是如果再外面嵌套有一个非0dp的LinearLayout,对控件的测量指数增加。
  • UselessLeaf:一个布局没有子View,也没有设置背景,应该去掉。
  • InefficientWeight:当LinearLayout中只有一个子View定义了android:layout_weight属性,更高性能的做法是使用0dp的 android:layout_height或者android:layout_width来替换它,这样这个子View就不需要测量它自身对应的大小。

 

《Android高级进阶》

你可能感兴趣的:(Android,性能优化篇)