- 浏览: 280642 次
- 性别:
- 来自: 济南
文章分类
最新评论
本文原创, 转载请注明出处 : http://blog.csdn.net/qinjuning
译二:
使用<include />标签复用布局文件
翻译地址:
http://developer.android.com/training/improving-layouts/reusing-layouts.html#Merge
尽管 Android 通过内置了各种各样的控件提供了微小、可复用的交互性元素,也许你需要复用较大 的
组件 ---- 某些特定布局文件 。为了更有效率复用的布局文件,你可以使用<include />以及<merge />
标签将其他的布局文件 加 入到当前的布局文件中。
复用布局文件是一种特别强大的方法,它允许你创建可复用性的布局文件。例如,一个包含“Yse”or“No”的
Button面版,或者是带有文字说明的 Progressbar。复用布局文件同样意味着你应用程序里的任何元素都能从
繁杂 的布局文件提取出来进行单独管理,接着你需要做的只是加入这些独立的布局文件(因为他们都是可复用地)。
因此,当你通过自定义View创建独立的UI组件时,你可以复用布局文件让事情变得更简单。
1、创建一个可复用性的布局文件
如果你已经知道复用布局的”面貌”,那么创建、定义布局文件( 命名以”.xml”为后缀)。例如,这里是一个来自
G- Kenya codelab 的布局文件,定义了在每个Activity中都要使用的一个自定义标题 (titlebar.xml): 由于这些
可复用性 布局被添加至其他布局文件中,因此,它的每个根视图(root View)最好是精确(exactly)的。
<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>
2、使用<include />标签
在需要添加这些布局的地方,使用<include />标签 。 例如,下面是一个来自G-Kenya codelab的布局文件,
它复用了上面列出的“title bar”文件, 该布局文件如下:
<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>
你也可以在<include />节点中为被添加的布局文件的root View定义特别标识,重写所有layout参数即可(任何
以“android:layout_”为前缀的属性)。例如:
<include android:id=”@+id/news_title” android:layout_width=”match_parent” android:layout_height=”match_parent” layout=”@layout/title”/>
3、使用<merge />标签
当在布局文件中复用另外的布局时, <merge />标签能够在布局层次消除多余的视图元素。例如,如果你的
主布局文件是一个垂直地包含两个View的LinearLayout,该布局能够复用在其他布局中,而对任意包含两个View的
布局文件都需要一个root View(否则, 编译器会提示错误)。然而,在该可复用性布局中添加一个LinearLayout
作为root View,将会导致一个垂直的LinearLayout包含另外的垂直LinearLayout。内嵌地LinearLayout只能减缓
UI效率,其他毫无用处可言。
该复用性布局利用.xml呈现如下:
<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="horizontal">
<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"/>
</LinearLayout>
为了避免冗余的布局元素,你可以使用<merge />作为复用性布局文件地root View 。例如:
使用<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 />节点并且直接添加两个Button去
取代<include />节点。
另外的,按需加载View视图 ,请看:
http://developer.android.com/training/improving-layouts/loading-ondemand.html
如何使ListView流畅滑动 ,请看:
http://developer.android.com/training/improving-layouts/smooth-scrolling.html
发表评论
-
unity基础开发----物体位移和旋转实用代码
2013-11-21 22:46 1270using UnityEngine; using Syst ... -
android 动态时钟 附源码
2013-09-24 12:03 1281自定义View实践 例子代码 自定义动态时钟 ... -
android Dialog 背景问题
2013-08-14 11:22 1206我们在使用自定义的Dialog的时候,喜欢自己 ... -
ScrollView scrollTo 的使用 动画效果
2013-08-05 17:43 4602今天用到了ScrollView scrollTo方法 ... -
Android中View绘制优化之一---- 优化布局层次
2012-09-04 23:00 1074... -
Android中View绘制优化之三---- 优化View
2012-09-13 21:00 1082... -
兰林任务管理应用程序雏形版以及概要说明
2012-09-15 21:54 879... -
Android中measure过程、WRAP_CONTENT详解以及xml布局文件解析流程浅析(上)
2012-10-10 18:14 1166... -
Android中measure过程、WRAP_CONTENT详解以及xml布局文件解析流程浅析(下)
2012-10-17 20:05 862... -
Android中文件选择器的实现
2012-11-30 08:59 1172... -
【编译原理】使用Lex将C/C++文件输出为HTML文件
2012-07-20 09:37 107008年9月入学,12年7月毕业,结束了我在软件学院愉快丰富的大 ... -
【编译原理】正则表达式
2012-07-21 21:49 230208年9月入学,12年7月毕业,结束了我在软件学院愉快丰富的大 ... -
【OpenCV】访问Mat图像中每个像素的值
2012-07-22 07:10 1171今天百度搜资料还搜到了自己的。。。《访问图像中每个像素的值 ... -
【编译原理】用Yacc做语法分析
2012-07-23 05:47 177308年9月入学,12年7月毕 ... -
【UML】UML几种图的绘制
2012-07-24 09:49 99008年9月入学,12年7月毕业,结束了我在软件学院愉快丰富的大 ... -
【OpenCV】邻域滤波:方框、高斯、中值、双边滤波
2012-07-26 10:52 1458邻域滤波(卷积) 邻域算子值利用给定像素 ... -
【数据结构】排序算法:希尔、归并、快速、堆排序
2012-07-28 06:15 102508年9月入学,12年7月毕 ... -
【OpenCV】角点检测:Harris角点及Shi-Tomasi角点检测
2012-07-31 13:25 1546角点 特征检测与匹配 ... -
【UML】案例分析:机场运作系统
2012-08-01 17:22 313308年9月入学,12年7月毕 ... -
【OpenCV】边缘检测:Sobel、拉普拉斯算子
2012-08-04 13:41 1547边缘 边缘(edge)是指图像局部强度变化最显著的部分。主要 ...
相关推荐
在Android开发中,UI性能优化是一项至关重要的任务,它直接影响到应用的用户体验。...在实际开发中,结合其他优化技巧,如使用`<ViewStub>`、懒加载、减少不必要的视图复用等,可以使Android应用的UI性能更上一层楼。
<include />标签允许我们将一个布局文件嵌入到另一个布局文件中,这对于创建可重用的组件非常有用。例如,你可以创建一个包含标题和内容的通用布局,然后在多个地方通过<include />引用这个通用布局,同时利用<merge...
`<include/>` 标签允许开发者将一个布局文件包含到另一个布局文件中,实现布局的复用。例如,在多个活动或视图中,如果有一个常见的头部布局(如标题栏),可以将其设计为单独的XML文件(如`titlebar.xml`),然后...
例如,如果一个相对布局中有一个常用的子布局,我们可以将其抽取为单独的XML文件,然后在需要的地方使用`<include>`标签引入。 同时,`<merge>`标签也是一个实用工具,它用于减少布局嵌套,提高性能。当我们在一个...
5. **使用<include>标签**:通过<include>标签重用布局文件,减少重复代码。 6. **使用<merge>标签**:利用<merge>标签解决由include或自定义组合ViewGroup带来的多余层级问题。 7. **使用<ViewStub>标签**:在需要...
`<include>`标签允许开发者将一个XML布局文件嵌入到另一个布局文件中,以此达到组件化设计的目的。 首先,理解Android布局的基础是非常重要的。Android提供了多种UI构件,如TextView、Button、ImageView等,这些...
`<include>`标签则允许在多个布局文件中重用相同的视图结构。 为了优化布局性能,开发者需要注意以下几点: 1. **避免深度嵌套**:深嵌套的布局会导致绘制时间增加,影响用户体验。尽可能使用单一布局或合并布局来...
`include`标签允许开发者将一个布局文件嵌入到另一个布局文件中,实现布局的复用。这样做的好处在于,当多个视图需要共享同一部分设计时,可以避免代码冗余,提高代码维护性。例如,在上面的例子中,`include`标签...
总结,Android中的ListView通过自定义Adapter和布局文件,可以实现灵活的表格化数据展示。通过不断优化,开发者可以提供更高效、用户友好的数据展示体验。对于大型项目,还可以考虑使用RecyclerView,它提供了更多的...
在XML布局中嵌套多个控件,通过`<include/>`标签或者直接嵌套实现。 2. 在Java代码中,通过找到子控件的引用,设置它们的行为和交互。 3. 将逻辑封装在父控件中,对外提供统一的接口,隐藏内部细节。 结合提供的...
3. include标签:在XML布局中,可以使用<include>标签引入已定义的自定义布局,实现代码复用。这不仅简化了布局结构,还方便进行统一管理和更新。 4. Style与Theme:利用样式(Style)和主题(Theme)可以共享UI...
最后,`ch04_reusablelayout`可能涉及到了可复用的布局,比如使用include标签来重复使用部分布局,或者使用Fragment来模块化界面,这两种方式都能提高代码的可维护性和复用性。 以上就是Activity、View和布局在...
完成XML定义后,你可以在布局文件中通过引用`@drawable/line_my`来使用这个分割线,例如: ```xml <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@...
- 使用`<include>`,`<viewstub>`,`<merge>`标签简化布局代码,减少视图重复。 这些方法可以帮助开发者系统地提升Android应用的性能,确保用户获得流畅、高效的应用体验。在实际开发中,应结合具体项目需求灵活...
2. **布局优化**:当XML布局文件中的视图(View)数量过多(例如超过80个),可能会影响应用性能。为了优化,可以采用以下策略: - 使用`<include>`标签重用布局。 - 使用`<merge>`标签减少视图层级,提高渲染效率...
7. **性能优化**:布局优化包括减少视图层级、避免过度绘制、合理使用include标签等,这些都是提高应用性能的关键点。分析网易新闻的布局结构,找出优化空间,是我们可以从这个demo中学习的重要部分。 总之,...
- 布局优化:减少重复绘制,使用`<include>`标签复用,`<ViewStub>`按需加载。 - 绘制优化:`onDraw`方法中避免创建新对象,避免耗时任务和大量循环,以确保60fps的流畅度(绘制时间不超过16ms)。 - 内存泄漏...
4. 适当使用include标签:将重复的布局部分抽取成单独的XML文件,然后在其他布局中引用,可以减少代码重复并提高可维护性。 5. 使用LayoutInflater.inflate()的第三个参数为false:这可以使视图复用,尤其是在...
关键在于`<include>`标签,它用于引用外部的`list_item`布局,这是表格的每一行。 **2. 创建list_item布局** 在`list_item.xml`文件中,我们创建了一个LinearLayout,设置为水平方向,以形成表格的列。在这个布局...