《Android 4 高级编程》之UI优化
来源:互联网 发布:为何说数据驱动安全 编辑:程序博客网 时间:2024/05/16 09:19
为了快速响应和流畅,我们要尽量使1:布局简单;2:避免因为小的UI的变化而导致整个UI重新填充
UI的优化:
<include>
<include>标签经常用于View的复用
我们可以在一个layotu/xml文件中通过<inclued>标签来实现一个layout的复用:
如:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <include android:id="@+id/basic" layout="@layout/layout_basic"/> </RelativeLayout>
这样我们就实现了一个layout的复用
注意<include>里面的layout如果只是要做当前界面的一部分的时候,最好是"wrap_content"
<ViewStub>
常用作初始隐藏控件再显示的优化,通常称为延迟加载
通常我们在一个界面开始的时候,可能把所有的View都加载上去,然后把需要隐藏的View设置为GONE
在需要显示的时候再设置为Visiable。来显示出来
这样做的话,其实这个初始隐藏的View其实还是在界面开始加载的时候就实例化了。占据了资源和延长了加载界面的时间。
而如果使用<ViewStub>标签来实现界面的初始隐藏:ViewStub里面的都是默认隐藏的
然后在需要的时候再实例化ViewStub中的界面,我们就能把隐藏的界面给加载进来,从而减少了界面oncreate时候的加载时间。
注意点:
1:ViewStub只能inflate一次,inflate后,ViewStub置null,其实我们加载进来控件后,也不需要这个ViewStub了
2:ViewStub只能inflate一个布局文件,也就是一个layout.xml
使用例子:
1:指定需要初始隐藏的layout:我只放了一张图片
2:指定包含<ViewStub>的layout:
3:代码中实现显示和隐藏:
效果就是图片初始隐藏,点击button,把图片显示出来,再点击,图片隐藏。
<merge>
通常是使用<merge>标签作为根标签,也只能作为根标签,来替代FrameLayout根标签使用
是为了减少一层冗余的FrameLayout。
参考:http://blog.sina.com.cn/s/blog_62f987620100sf13.html
FrameLayout为根标签:
Merge为根标签:
我们可以通过<include>标签将<merge>标签所在的layout添加到一个界面
注意:
1:<merge>标签只能为根标签
2:当我们要inflate的layout是以merge为根标签的话,我们需要使用:
View android.view.LayoutInflater.inflate(int resource, ViewGroup root, boolean attachToRoot)
我们需要指定里面的父级ViewGrop参数,还需要将第三个参数设置为true。
说实话,个人认为inflate一个merge为根标签的layout,实在是蛋疼,并且麻烦。
- 《Android 4 高级编程》之UI优化
- Android UI高级之Notification
- Android UI高级之Menu
- Android UI高级之Fragment
- Android UI高级之RecyclerView
- android优化之UI优化
- Android UI优化之OverDraw
- Android UI 优化4
- Android UI高级控件之ArrayAdapter
- Android UI高级控件之SimpleAdapter
- Android UI高级控件之ArrayAdapter
- Android UI高级之自定义控件
- Android UI高级控件之ViewHolder
- Android性能优化之UI渲染优化
- Android性能优化之UI渲染优化
- Android高级UI-listView的原理及优化
- Android高级学习之性能优化
- Android之性能优化【高级篇】
- zoj 1240 IBM Minus One
- ALAssetsGroup failed to add asset: 错误 IOS8
- 返回本地变量的指针是很危险的
- 利用特殊的二叉树层序重构二叉树
- ubi 下ubi_ltree_entry获取与初始化过程
- 《Android 4 高级编程》之UI优化
- 大话设计模式——饕餮盛宴
- pgpool + postgres 读写分离配置(3)
- Idea14 Debug模式如何调试——快捷键
- Ubuntu下配置Hadoop环境
- 认证服务器Authpuppy搭建要点
- .h文件与.c文件的区别
- 一个IO的传奇一生 (1)
- 页面初始化datagrid时重复加载两次