-
Lint 检测
- 如果一个FrameLayout 是整个布局的根节点,并且也没有提供背景、留白等等,那么可以使用标签来替换掉,因为DecorView本身就是一个FrameLayout。如果替换之后,出现空指针异常,说明merge下层的view没有被获取到,可以试着给view添加一个id。
- 在TextView上设置带透明度alpha值的黑色文本可以实现灰色的效果。但是,直接通过设置灰色的话能够获得更好的性能。(view设置了alpha值,则至少需要渲染两次。这是因为使用了alpha的view需要先知道混合view的下一层元素是什么,然后再结合上层的view进行Blend混色处理。透明动画、淡入淡出和阴影等效果都涉及到某种透明度,这就会造成了过度绘制)
- onDraw()中不要创建新的局部变量,因为onDraw()方法可能会被频繁调用,大量的临时对象会导致内存抖动,会造成频繁的GC,从而使UI线程被频繁阻塞,导致画面卡顿。
- Android要求每帧的绘制时间不超过16ms,在onDraw()进化耗时操作的话,轻则掉帧,严重的话会造成卡顿。
- 如果一个线性布局中包含一个 ImageView 和一个 TextView,可以使用复合图片来替换掉
-
Layout Inspector
- 如果布局中存在多余的层级嵌套,可以使用include结合merge,ViewStub进行优化。
- 合理选择layout;
- 如果子布局中的bg和父布局是一样的,那边可以删除一个;
- 如果根布局中的bg和主题的背景是一样的,可以删除根布局的bg;
- 代码设置页面无背景 getWindow().setBackgroundDrawable(null);
- 尽量避免使用linearlayout中的layout_weight属性
Android_UI开发总结(七):布局优化
最新推荐文章于 2021-02-01 14:51:10 发布