Android性能优化-布局优化
2016-03-03 11:14
501 查看
本篇博客是在学习郭神的博客后作的学习总结。详细学习请访问原文http://blog.csdn.net/guolin_blog/article/details/43376527。
1.对于重复使用的布局,如custom_head 自定义头布局,放到单独的布局文件中。需要使用时,使用<include>标签进行引用。
2.使用<include>标签时,可能会造成多余的嵌套布局(最外层多一个Layout),降低性能,解决方案使用<merge>标签 配合<include>使用。
3.仅在需要时加载布局,如一个隐藏的布局(在用户进行某一操作下,才显示),我们通常的做法是设置visible属性为invisible或gone,但是这种做法性能表现较低,每个布仍 然有它的宽高背景等。推荐的做法是使用ViewStub,它没有大小,没有绘制能力,也不参与布局,资源消耗非常低。
xml代码中使用如下:
java中使用如下
1.对于重复使用的布局,如custom_head 自定义头布局,放到单独的布局文件中。需要使用时,使用<include>标签进行引用。
2.使用<include>标签时,可能会造成多余的嵌套布局(最外层多一个Layout),降低性能,解决方案使用<merge>标签 配合<include>使用。
3.仅在需要时加载布局,如一个隐藏的布局(在用户进行某一操作下,才显示),我们通常的做法是设置visible属性为invisible或gone,但是这种做法性能表现较低,每个布仍 然有它的宽高背景等。推荐的做法是使用ViewStub,它没有大小,没有绘制能力,也不参与布局,资源消耗非常低。
xml代码中使用如下:
<ViewStub android:id="@+id/stubview" android:layout="@layout/layout_header" android:layout_width="match_parent" android:layout_height="wrap_content"/>需要注意的是layout 无法使用<merge>标签,故可能会造成嵌套布局。
java中使用如下
ViewStub viewStub = ViewStub findViewById(R.id.stubview); if(viewStub!=null){ //仅第一次能查找到,故需判断 View view = viewStub.inflat(); . . . }需要注意的是findViewByid仅在第一次能查找到,需要做非空判断。
相关文章推荐
- Android Touch事件传递机制
- Android ViewPager + Fragment 懒加载处理
- 解决Android Genymotion模拟器library "/system/lib/libhoudini.so" not found报错问题
- Android静态变量的生命周期
- Android调用系统默认浏览器访问的方法
- DexClassLoader简介
- android 开发技巧(13)--处理空列表
- 如何停止Android Monkey脚本
- Android中Window添加View的底层原理
- android:exported 属性详解
- Animation特效——Tween Animation
- Android中的观察者模式
- Android SQLite (一) 数据库简介
- Android滑动锁屏
- Android时间间隔 SystemClock.uptimeMillis 和 System.currentTimeMillis
- Android Studio常用快捷键
- Android之取消ViewPage+Fragment的预加载
- android从零单排之Environment
- android 报错:invalid resource directory name bin/res/crunch
- Android--播放Gif的取巧办法