Android_UI开发总结(七):布局优化

  • 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属性
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值