`

Android中View绘制优化二一---- 使用<include />标签复用布局文件

阅读更多

 

本文原创, 转载请注明出处 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




 

分享到:
评论

相关推荐

    Android UI 优化之merge标签的使用

    在Android开发中,UI性能优化是一项至关重要的任务,它直接影响到应用的用户体验。...在实际开发中,结合其他优化技巧,如使用`&lt;ViewStub&gt;`、懒加载、减少不必要的视图复用等,可以使Android应用的UI性能更上一层楼。

    Android布局技巧之合并布局

    &lt;include /&gt;标签允许我们将一个布局文件嵌入到另一个布局文件中,这对于创建可重用的组件非常有用。例如,你可以创建一个包含标题和内容的通用布局,然后在多个地方通过&lt;include /&gt;引用这个通用布局,同时利用&lt;merge...

    Android抽象布局——include、merge 、ViewStub详解

    `&lt;include/&gt;` 标签允许开发者将一个布局文件包含到另一个布局文件中,实现布局的复用。例如,在多个活动或视图中,如果有一个常见的头部布局(如标题栏),可以将其设计为单独的XML文件(如`titlebar.xml`),然后...

    android Activity布局初步(三)- 相对布局

    例如,如果一个相对布局中有一个常用的子布局,我们可以将其抽取为单独的XML文件,然后在需要的地方使用`&lt;include&gt;`标签引入。 同时,`&lt;merge&gt;`标签也是一个实用工具,它用于减少布局嵌套,提高性能。当我们在一个...

    android layout布局分析与优化

    5. **使用&lt;include&gt;标签**:通过&lt;include&gt;标签重用布局文件,减少重复代码。 6. **使用&lt;merge&gt;标签**:利用&lt;merge&gt;标签解决由include或自定义组合ViewGroup带来的多余层级问题。 7. **使用&lt;ViewStub&gt;标签**:在需要...

    Android布局技巧之创建可重用的UI组件

    `&lt;include&gt;`标签允许开发者将一个XML布局文件嵌入到另一个布局文件中,以此达到组件化设计的目的。 首先,理解Android布局的基础是非常重要的。Android提供了多种UI构件,如TextView、Button、ImageView等,这些...

    Android开发——布局管理

    `&lt;include&gt;`标签则允许在多个布局文件中重用相同的视图结构。 为了优化布局性能,开发者需要注意以下几点: 1. **避免深度嵌套**:深嵌套的布局会导致绘制时间增加,影响用户体验。尽可能使用单一布局或合并布局来...

    Android布局技巧之include、merge与ViewStub标签的巧用

    `include`标签允许开发者将一个布局文件嵌入到另一个布局文件中,实现布局的复用。这样做的好处在于,当多个视图需要共享同一部分设计时,可以避免代码冗余,提高代码维护性。例如,在上面的例子中,`include`标签...

    Android使用ListView表格化显示数据的研究与应用.pdf

    总结,Android中的ListView通过自定义Adapter和布局文件,可以实现灵活的表格化数据展示。通过不断优化,开发者可以提供更高效、用户友好的数据展示体验。对于大型项目,还可以考虑使用RecyclerView,它提供了更多的...

    【Android进阶】(1)用继承和组合方式自定义控件

    在XML布局中嵌套多个控件,通过`&lt;include/&gt;`标签或者直接嵌套实现。 2. 在Java代码中,通过找到子控件的引用,设置它们的行为和交互。 3. 将逻辑封装在父控件中,对外提供统一的接口,隐藏内部细节。 结合提供的...

    安卓自定义布局资源共享

    3. include标签:在XML布局中,可以使用&lt;include&gt;标签引入已定义的自定义布局,实现代码复用。这不仅简化了布局结构,还方便进行统一管理和更新。 4. Style与Theme:利用样式(Style)和主题(Theme)可以共享UI...

    activity、view 以及布局

    最后,`ch04_reusablelayout`可能涉及到了可复用的布局,比如使用include标签来重复使用部分布局,或者使用Fragment来模块化界面,这两种方式都能提高代码的可维护性和复用性。 以上就是Activity、View和布局在...

    android利用xml实现分割线

    完成XML定义后,你可以在布局文件中通过引用`@drawable/line_my`来使用这个分割线,例如: ```xml &lt;TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@...

    Android性能优化方法

    - 使用`&lt;include&gt;`,`&lt;viewstub&gt;`,`&lt;merge&gt;`标签简化布局代码,减少视图重复。 这些方法可以帮助开发者系统地提升Android应用的性能,确保用户获得流畅、高效的应用体验。在实际开发中,应结合具体项目需求灵活...

    Android——Android lint工具项目资源清理详解

    2. **布局优化**:当XML布局文件中的视图(View)数量过多(例如超过80个),可能会影响应用性能。为了优化,可以采用以下策略: - 使用`&lt;include&gt;`标签重用布局。 - 使用`&lt;merge&gt;`标签减少视图层级,提高渲染效率...

    Android优秀布局demo_珍贵学习资料_02

    7. **性能优化**:布局优化包括减少视图层级、避免过度绘制、合理使用include标签等,这些都是提高应用性能的关键点。分析网易新闻的布局结构,找出优化空间,是我们可以从这个demo中学习的重要部分。 总之,...

    小结NT_Q&A.docx

    - 布局优化:减少重复绘制,使用`&lt;include&gt;`标签复用,`&lt;ViewStub&gt;`按需加载。 - 绘制优化:`onDraw`方法中避免创建新对象,避免耗时任务和大量循环,以确保60fps的流畅度(绘制时间不超过16ms)。 - 内存泄漏...

    深入理解layout优化

    4. 适当使用include标签:将重复的布局部分抽取成单独的XML文件,然后在其他布局中引用,可以减少代码重复并提高可维护性。 5. 使用LayoutInflater.inflate()的第三个参数为false:这可以使视图复用,尤其是在...

    Android listView 绘制表格实例详解

    关键在于`&lt;include&gt;`标签,它用于引用外部的`list_item`布局,这是表格的每一行。 **2. 创建list_item布局** 在`list_item.xml`文件中,我们创建了一个LinearLayout,设置为水平方向,以形成表格的列。在这个布局...

Global site tag (gtag.js) - Google Analytics