现在新兴的App很多,开发新手也很多。在一个App的起步阶段,追求的是快和多,鲜少有人关注页面布局的优化等一些基础的性能调优的问题。但是作为有一定工作经验的Android工程师来说,或者对于追求代码简洁之美的开发者来说,在开发时,应该有“惜字如金、一气呵成”的意识和要求,并努力使之成为一种固化下来的习惯。“先粗放、再优化”的工作习惯其实是不可取的,粗放也该有个度,不应该低于对基本知识点的要求。
原文见:Android布局优化之过度绘制 - 残剑_ - 博客园
避免布局过度绘制的方法:
1. 尽量多使用RelativeLayout和LinearLayout, 不要使用绝对布局AbsoluteLayout,
2. 在布局层次一样的情况下, 建议使用LinearLayout代替RelativeLayout, 因为LinearLayout性能要稍高一点.3. 在完成相对较复杂的布局时,建议使用RelativeLayout,RelativeLayout可以简单实现LinearLayout嵌套才能实现的布局.
4. 将可复用的组件抽取出来并通过include标签使用;5. 使用ViewStub标签来加载一些不常用的布局;6. 动态地inflation view性能要比SetVisiblity性能要好.当然用VIewStub是最好的选择.7. 使用merge标签减少布局的嵌套层次8. 去掉多余的背景颜色
9. 对于有多层背景颜色的Layout来说,留最上面一层的颜色即可,其他底层的颜色都可以去掉10. 对于使用Selector当背景的Layout(比如ListView的Item,会使用Selector来标记点击,选择等不同的状态),可以将normal状态的color设置为”@android:color/transparent”,来解决对应的问题
11. 内嵌使用包含layout_weight属性的LinearLayout会在绘制时花费昂贵的系统资源,因为每一个子组件都需要被测量两次。在使用ListView与GridView的时候,这个问题显的尤其重要,因为子组件会重复被创建.所以要尽量避免使用Layout_weight12. 使得Layout宽而浅,而不是窄而深(在Hierarchy Viewer的Tree视图里面体现)
网友评论