使用merge subView优化布局
来源:互联网 发布:不喜欢知否的男主 编辑:程序博客网 时间:2024/06/01 08:05
- 减少视图层级 merge
merge标签在UI的结构优化中起着非常重要的作用,它可以删减多余的层级,优化UI。merge多用于替换FrameLayout或者当一个布局包含另一个时,merge标签消除视图层次结构中多余的视图组。例如你的主布局文件是垂直布局,引入了一个垂直布局的include,这是如果include布局使用的LinearLayout就没意义了,使用的话反而减慢你的UI表现。这时可以使用merge标签优化。
<merge xmlns:android="http://schemas.android.com/apk/res/android"> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/add"/> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/delete"/> </merge>
现在,当你添加该布局文件时(使用标签),系统忽略merge 节点并且直接添加两个Button。更多merge 介绍可以参考《Android Layout Tricks #3: Optimize by merging》
- 需要时加载 ViewStub
ViewStub 标签最大的优点是当你需要时才会加载,使用他并不会影响UI初始化时的性能。各种不常用的布局想进度条、显示错误消息等可以使用ViewStub 标签,以减少内存使用量,加快渲染速度。ViewStub 是一个不可见的,大小为0的View。ViewStub 标签使用如下:
<ViewStub android:id="@+id/stub_import" android:inflatedId="@+id/panel_import" android:layout="@layout/progress_overlay" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="bottom" />
当你想加载布局时,可以使用下面其中一种方法:
((ViewStub) findViewById(R.id.stub_import)).setVisibility(View.VISIBLE); // or View importPanel = ((ViewStub) findViewById(R.id.stub_import)).inflate();
当调用inflate()函数的时候,ViewStub被引用的资源替代,并且返回引用的view。 这样程序可以直接得到引用的view而不用再次调用函数findViewById()来查找了。
注:ViewStub目前有个缺陷就是还不支持 标签。
更多标签介绍可以参考《Android Layout Tricks #3: Optimize with stubs》
0 0
- 使用merge subView优化布局
- 使用merge标签优化布局
- android Merge的使用(布局的优化)
- Android布局优化 merge标签使用
- 使用include、merge、ViewStub优化布局
- Android 布局优化merge标签的使用
- Android 布局优化(merge使用)
- Android使用include/merge/ViewStub优化布局
- 布局优化:使用include、merge、ViewStub
- 布局优化---merge标签的使用
- Android 性能优化 四 布局优化merge标签的使用
- android优化之布局优化-Merge标签的使用
- 性能优化之布局优化篇二 使用<merge>标签
- Android merge布局优化
- android布局优化-merge
- 布局优化-使用include和merge及viewstub
- Android布局优化之<merge>与<ViewStub>标签使用
- Android布局优化之include、merge、ViewStub的使用
- 利用redis + lua解决抢红包高并发的问题
- 安卓7.0原生暂不支持压感屏技术
- redmine启动失败问题couldn't find HOME environment -- expanding
- 选择、快速排序算法实现
- jquery easyUI的dialog方法弹出对话框多个按钮进行选择
- 使用merge subView优化布局
- Git使用教程
- Android下event事件深度解析
- 最近5年133个Java面试问题列表
- CodeForces - 673B Problems for Round (模拟)水
- MYSQL必知必会读书笔记 第二十六章 管理事务处理
- c++模板(二)---------类模板
- java的IO操作
- 轻松制作GIF动画!教你玩转PS时间轴之进阶技巧篇