Android布局优化
来源:互联网 发布:一搜影咖软件 编辑:程序博客网 时间:2024/06/05 10:08
今天学习了几种android中简单的布局优化。
Android布局原则:
(1)尽量多使用LinearLayout(线性布局)和RelativeLayout(相对布局),不要使用AbsoluteLayout(绝对布局)。
(2)在布局层次一样的情况下,建议使用LinearLayout代替RelativeLayout,因为LinearLayout性能要稍微高一点。
(3)将可复用的组件抽取出来并通过include标签使用。
(4)使用ViewStub标签来加载一些不常用的布局。
(5)使用merge标签减少布局的嵌套层次。
1. include的使用
作用:将共用的组件抽取出来单独防盗一个xml文件中,然后使用include标签导入共用布局。
效果:提高UI的制作和复用效率,也能保证制作的UI布局更加规整和易于维护。
先把测试文件的activity设置为android:theme="@android:style/Theme.Light.NoTitleBar"去掉标题栏。
新建一个layout取名为content_title:
在activity_main中引用上面layout文件:
在MainActivity.java中是可以直接拿到TextView的id的,来在MainActivity中试图改下标题名称。
运行结果:
当然我们还可以为其他的TextView设置点击事件,这里即使是用include标签引用进来的layout,在activity中还是可以直接获取到的,也可以为空间设置各种点击事件啥的。这样就提高了UI的灵活性以及性能。
2. 使用merge合并UI布局
作用:合并UI布局,使用该标签能降低UI布局的嵌套层次
场景(1):布局根节点是FrameLayout且不需要设置background或padding等属性,可以用merge代替。
场景(2):某布局作为子布局被其他布局include时,使用merge当做该布局的顶节点。这样在被引入时顶结点会自动被忽略。
新建一个layout取名为content_progress:
在main_activity中添加:
结果:
总结merge:
(1)merge标签中的子集是直接加到Activity的FrameLayout根节点下,(Activity视图的根节点都是frameLayout)。如果你所创建的Layout并不是用framLayout作为根节点(而是应用LinerLayout等定义root标签),就不能通过merge来优化UI结构。
(2)当应用Include或者ViewStub标签从外部导入xml结构时,可以将被导入的xml用merge作为根节点表示,这样当被嵌入父级结构中后可以很好的将它所包含的子集融合到父级结构中,而不会出现冗余的节点。
(3)只可以作为xmllayout的根节点。
(4)当需要扩充的xmllayout本身是由merge作为根节点的话,需要将被导入的xml layout置于viewGroup中,同时需要设置attachToRoot为True。
android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="隐藏的内容" /> android:id="@+id/btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="显示隐藏内容" /> android:id="@+id/stub" android:layout="@layout/content_text" android:layout_width="wrap_content" android:layout_height="wrap_content" />
运行结果:
点击显示隐藏内容:
隐藏的内容就显示出来了。
3. 使用ViewStub惰性加载
作用:ViewStub标签同include标签一样可以用来引入一个外部布局,不同的是,ViewStub引入的布局默认不会扩张,既不会占用显示也不会占用位置,从而在解析layout时节省cpu和内存。
新建一个layout取名为content_text,在里面就添加一个TextView:
在main_activity中添加:
然后MainActivity中:
运行结果:
点击显示隐藏内容:
隐藏的内容就显示出来了。
注意:
0 0
- Android优化--布局优化
- *【布局优化】android布局原则
- Android性能优化---布局优化
- Android性能优化---布局优化
- Android开发优化-布局优化
- android性能优化--布局优化
- Android开发优化-布局优化
- Android性能优化-布局优化
- Android性能优化-布局优化
- android 优化之布局优化
- Android优化之布局优化
- Android性能优化-布局优化
- 【Android】布局优化
- Android布局优化
- Android 布局优化
- Android布局优化
- Android布局优化
- Android布局优化
- 10-排序5 PAT Judge
- 异步任务AsyncTask初步
- 异步任务AsyncTask进阶
- AsyncTask模拟进度条
- TextView实现跑马灯
- Android布局优化
- 三季度全国招聘放缓,超4成职场人想跳槽
- Android动画
- 解析Json数据格式
- 活动的启动模式
- mac os 工作空间 桌面顺序
- Android自动朗读(TTS)
- android菜单动画
- 直接插入排序法