android开发 如何优化布局
2017-04-17 18:25
323 查看
如何优化布局?
1. 在view可见时才加载布局
场景:有些布局会隐藏有些布局会展示把View的初始可见View.GONE但是在Inflate布局的时候View仍然会被Inflate,也就是说仍然会创建对象,会被实例化,会被设置属性。也就是说,会耗费内存等资源。
替换方式:
推荐的做法是使用android.view.ViewStub,ViewStub是一个轻量级的View,使用非常简单:
mViewStub = (ViewStub) this.findViewById(R.id.viewstub);
mViewStub.inflate();
它是一个占用资源非常小的控件,相当于一个“占位控件”。使用时可以为ViewStub指定一个布局,在Inflate布局的时候,只有ViewStub会被初始化,然后当ViewStub被设置为可见的时或调用了ViewStub.inflate()的时候,ViewStub所指向的布局就会被inflate实例化,此布局文件直接将当前ViewStub替换掉,然后ViewStub的布局属性都会传给它所指向的布局。这样,就可以使用ViewStub在运行时动态显示布局,节约内存资源。
目的:正确把握住ViewStub的应用场景非常重要,因为使用ViewStub可以优化布局,一般应用在当前布局或控件在用户使用较少情况下,这样可以提高性能,节约内存,加快界面渲染
对于ViewSub如何使用,可查看此文
2. 布局重用
可以通过这个标签直接加载外部的xml到当前结构中,是复用UI资源的常用标签3. 减少视图层级
标签在UI的结构优化中起着非常重要的作用,它可以删减多余的层级,优化UI。多用于替换FrameLayout(因为所有的Activity视图的根结点都是FrameLayout,如果当前的布局根结点是Framelayout,那么可以用merge替代,减少多余的层级)或者当一个布局包含另一个时,标签消除视图层次结构中多余的视图组。例如你的主布局文件是垂直布局,又include引入了一个垂直布局,这是如果include布局使用的LinearLayout就没意义了,使用的话反而减慢你的UI渲染。这时可以使用标签进行优化。<merge xmlns:android="http://schemas.android.com/apk/res/android"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="" /> </merge>
相关文章推荐
- Android开发教程 如何优化andriod布局
- androidUI开发之-优化你的布局层次结构
- Android开发之如何手写代码进行页面布局
- Android官方开发文档Training系列课程中文版:布局性能优化之按需加载View
- Android开发笔记(七十四)布局文件优化
- [整]Android开发优化-布局优化
- android开发布局优化之ViewStub
- Android开发优化-布局优化
- android开发之merge结合include优化布局
- Android官方开发文档Training系列课程中文版:布局性能优化之布局复用
- Android开发优化-布局优化
- android开发布局优化之ViewStub
- 菜鸟学习之Android Fragment 开发,快速提升用户体验的方法-布局规划之如何借鉴?
- Android开发 布局优化
- android_应用开发之(优化布局层次结构)
- android开发学习---layout布局、显示单位和如何进行单元测试
- android开发之布局优化之include、ViewStub、merge使用与源码分析
- android开发布局优化之ViewStub
- Android开发之merge结合include优化布局
- Android开发之布局优化