android开发 如何优化布局
来源:互联网 发布:36氪 知乎 编辑:程序博客网 时间:2024/05/22 12:41
如何优化布局?
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开发 如何优化布局
- Android开发 布局优化
- Android开发优化-布局优化
- Android开发优化-布局优化
- Android开发之布局优化
- [整]Android开发优化-布局优化
- Android应用开发之布局优化
- android开发布局优化之ViewStub
- Android开发博客第一天:布局优化
- Android开发中的性能优化---布局
- Android优化--布局优化
- Android开发学习之路--性能优化之布局优化
- andorid开发布局优化
- Android官方开发文档Training系列课程中文版:布局性能优化之布局层级优化
- *【布局优化】android布局原则
- 【Android 开发技巧】布局优化利器<include/>和ViewStub
- android开发之merge结合include优化布局
- Android开发笔记(七十四)布局文件优化
- Linux进程/线程协作之eventfd
- Linux日常——进程状态
- 多线程竞争问题分析
- matplotlib作图
- 列表推导式/列表解析笔记
- android开发 如何优化布局
- 使用Liferay DXP创建图片播放
- 关掉ubuntu16.04图形界面启动
- vim替换
- Java知识点总结
- linux 挂载命令和帮助命令
- 使用threejs点云秀出酷炫的图片效果(一)
- 【消息队列MQ】各类MQ比较
- JAVA中查询一个词在内容中出现的次数、判断集合中是否包含关键字、查询字符串数组单个字符的长度