Android最佳实践性能(三)提高性能布局(再利用布局与<include/>')
来源:互联网 发布:加拿大研究生留学 知乎 编辑:程序博客网 时间:2024/05/18 00:21
再利用布局与<include/>'的
这节课教你
- 创建一个可重复使用的布局
- 使用<include>标记
- 使用<merge>标签
你也应该阅读
- 布局资源
尽管Android提供了多种部件提供小和可重复使用的互动元素,您可能还需要重新使用需要的特殊布局更大的组件。为了有效地重复使用完整的布局,您可以使用<include/>'的
和<merge/>
标签嵌入当前布局内的另一个布局。
重用布局是特别强大,因为它允许你创建可重用的复杂的布局。举例来说,一个是/否按钮面板,或自定义进度条的说明文字。这也意味着您的应用程序是通用的多种布局的任何元素可以被提取出来,单独管理,然后包括在每个布局。因此,尽管你可以通过编写自定义创建单独的UI组件视图
中,您可以更轻松地重新使用布局文件做到这一点。
创建一个可重复使用的布局
如果你已经知道你想要重新使用的布局,创建一个新的XML文件并定义布局。例如,下面是来自G-肯尼亚codelab定义将包括在每个活动(标题栏的布局titlebar.xml
):
<FrameLayout xmlns:android = "http://schemas.android.com/apk/res/android" android:layout_width = ”match_parent” android:layout_height = "wrap_content" android:background = "@color/titlebar_bg" > <ImageView android:layout_width = "wrap_content" android:layout_height = "wrap_content" android:src = "@drawable/gafricalogo" /> </FrameLayout>
根视图
应该正是你喜欢的方式出现在每个布局向其中添加此布局。
使用<include>标记
里面要添加可重用的组件,添加布局<include/>'的
标签。例如,下面是来自G-肯尼亚codelab,其中包括来自上方的标题栏的布局:
这里的布局文件:
<LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android" android:orientation = "vertical" android:layout_width = ”match_parent” android:layout_height = ”match_parent” android:background = "@color/app_bg" android:gravity = "center_horizontal" > <include layout = "@layout/titlebar" /> <TextView android:layout_width = ”match_parent” android:layout_height = "wrap_content" android:text = "@string/hello" android:padding = "10dp" /> ... </LinearLayout>
您也可以覆盖所有的布局参数(任何机器人:layout_ *
属性)通过在指定它们所包含的布局的根视图<include/>'的
标签。例如:
<include android:id = ”@+id/news_title” android:layout_width = ”match_parent” android:layout_height = ”match_parent” layout = ”@layout/title” />
不过,如果你想覆盖使用布局属性的<include>
标签,必须覆盖两个 机器人:layout_height
和机器人:layout_width
为了让其他布局属性才能生效。
使用<merge>标签
该<merge />
标签有助于消除在你的视图层次冗余视图组中的另一个包括一个布局的时候。例如,如果你的主要布局是一个垂直的LinearLayout
,其中两个连续的意见,可以被重新使用多种布局,然后重复使用的布局,其中放置两种观点都需要自己的根视图。然而,使用另一个的LinearLayout
作为根的可重复使用的布局将导致垂直的LinearLayout
内的垂直的LinearLayout
。嵌套的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>
现在,当你有这种布局在其他布局(使用<include/>'的
标签),系统会忽略<merge>
元素,并直接放置在布局的两个按钮,代替的<include/>'的
标签。
- Android最佳实践性能(三)提高性能布局(再利用布局与<include/>')
- Android最佳实践性能(三)提高性能布局(优化布局层次结构)
- Android最佳实践性能(三)提高性能布局(按需加载视图)
- Android最佳实践性能(三)提高性能布局(使ListView滚动流畅)
- Android最佳性能实践布局优化技巧
- android 布局性能优化(<include />)
- Android最佳性能实践(四)——布局优化技巧
- Android最佳性能实践——布局优化技巧
- Android最佳性能实践(四)——布局优化技巧
- Android最佳性能实践(四)——布局优化技巧
- Android最佳性能实践(四)——布局优化技巧
- Android最佳性能实践(四)——布局优化技巧
- Android最佳性能实践(四)——布局优化技巧
- Android最佳性能实践(四)——布局优化技巧
- Android最佳性能实践(四)——布局优化技巧
- Android最佳性能实践(四)——布局优化技巧
- Android最佳性能实践(四)——布局优化技巧
- Android最佳性能实践(四)——布局优化技巧
- 9家知名P2P联合送现金,金额之巨震惊业界!
- Acceptor-Connector模式一(Acceptor的工作)V2.0
- poj 1088 滑雪 (记忆化 Dp)
- Win7 快捷方式变成浏览器图标解决
- 存储与服务器的连接方式对比(DAS,NAS,SAN)
- Android最佳实践性能(三)提高性能布局(再利用布局与<include/>')
- 将数字字符串两位一组转换为16进制数
- Android Gson用法
- C++继承(改错题)
- Linux /proc第一篇---->/proc/pid记录了什么
- java 简单的单例模式
- mysql查询今天,昨天,近7天,近30天,本月,上一月数据
- SmartWeatherAPI - 加密
- 【shell脚本练习】判断目录读写权限