`

Android性能优化系列---Improving Layout Performance(二)

阅读更多

Improving Layout Performance(二)

本文出处:http://developer.android.com/training/improving-layouts/reusing-layouts.html

 

         Re-using Layouts with <include/>

        为了提高你的Layouts的复用性,你也可以使用<include/> 和 <merge/> 标签内嵌一个布局到另一个布局里。

        布局重用是十分强大的,能让你产生可重用的复杂布局。例如,一个 yes/no按钮面板,或者有描述文本的自定义进度条。那即是在你的应用里,各个布局里通有的共性的元素能抽取出来、独自里管理。然后被其他的需要的Layout引入。因此,当你写自定义的View产生UI组件时,你能作为一个Layout文件更容易复用它。

 

        Create a Re-usable Layout

        如果你已经知道某个布局需要复用,产生一个新的XML布局文件,定义这个Layout.例如,这是一个来自于G-Kenya代码库的布局。定义了一个title bar。文件名为(titlebar.xml),被包含在每个activity的布局文件里。

     <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>

 

        Use the <include> Tag

        在你想要引用可重用组件的布局里加入<include/>标签。例如,这是一个来自于G-Kenya 代码库的布局文件。该文件include进了上述的titlebar.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="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/>标签里,你也能重写所有的layout参数(任何android:layout_*属性),例如:

         <include android:id=”@+id/news_title”

                      android:layout_width=”match_parent”

                      android:layout_height=”match_parent”

                      layout=”@layout/titlebar”/>

 

          然而,如果你想要用<include>标签重写布局属性,为了其他的布局属性能生效,你必须要同时重写android:layout_height和android:layout_width属性。

 

          Use the <merge> Tag

          某些时候,自定义可重用的布局包含了过多的层级标签,比如我们需要在LinearLayout里面嵌入一个重用的组件,而恰恰这个自定义的可重用的组件根节点也是LinearLayout,这样就多了一层没有用的嵌套,无疑这样只会拖慢程序速度。而这个时候如果我们使用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平级

分享到:
评论

相关推荐

    Android代码-android性能优化视频、文档和工具收集

    awesome-android-performance This is a list of awesome Android tutorials, videos and tools for performance optimization View Google Official Videos Double Layout Taxation Android Performance Patterns...

    Android代码-android-priority-jobqueue

    Priority Job Queue is an implementation of a Job Queue specifically written for Android to easily schedule jobs (tasks) that run in the background, improving UX and application stability.

    improving-network-performance-in-multi-core-systems-paper

    Today’s resource-intensive applications running on Intel® multi-core processor-based platforms are driving the need not only for greater networking bandwidth, but also for more efficient processing ...

    Improving the Lightning Performance

    该标准文档的标题“Improving the Lightning Performance”(提升雷电性能)主要指通过一系列技术和方法来提高电力系统中架空配电线路对于雷电冲击的抵抗能力。在电力行业中,“雷电性能”的提升通常涉及到对现有...

    Android代码-ChatMessagesAdapter-android

    ChatMessagesAdapter for Android QuickBlox simple to use UI library for showing quickblox chat messages inside android application. Features Ready-to-go QBChatMessage view adapter with a set of view ...

    921164-MB51-Improving the runtime using database

    "921164-MB51-Improving the runtime using database"这个主题主要关注通过优化数据库来提高MB51和类似事务如MMBE的运行性能。 首先,了解数据库优化的重要性是关键。在SAP系统中,大部分业务流程都需要与数据库...

    Improving Lookup Performance over a widely-deployed DHT

    本文《Improving Lookup Performance over a widely-deployed DHT》聚焦于Kademlia协议,一种广泛部署的DHT,旨在探讨并优化其查找性能。 ### 核心知识点 #### 1. DHT与Kademlia简介 DHT是一种分布式数据存储机制...

    High Performance in-memory computing with Apache Ignite.pdf

    Sharing Spark RDD states between different Spark applications for improving performance. Processing events & streaming data, integrate Apache Ignite with other frameworks like Storm, Camel, etc. ...

    藏经阁-Improving Python and Spark Performance and Interoperability.

    藏经阁-Improving Python and Spark Performance and Interoperability 在本篇文章中,我们将讨论如何提高 Python 和 Spark 的性能和互操作性。Spark 是一个基于 Scala 编写的分布式计算框架,运行在 Java 虚拟机...

    Improving WS-Security Performance with a Template-Based Approach

    ### 基于模板的方法提升WS-Security性能 #### 概述 随着Web服务在全球范围内的广泛应用,确保这些服务的安全性和可靠性的需求日益增长。为了满足这一需求,一系列与Web服务安全相关的规范被提出,其中最核心的是WS...

    2020-自校正网络20cvpr-SCNet-Improving Convolutional Networks with Sel

    然而,"2020-自校正网络20cvpr-SCNet-Improving Convolutional Networks with Self-Calibrated Convolutions"这篇论文提出了一种新的思路,即不通过调整网络架构,而是改进CNN的基础卷积特征转换过程来提升性能。...

    Improving the Performance of an IP-over-P2P

    The investigation produced detailed measurements in order to profile the application and help on improving the performance. Code analysis shows that the current IPOP version suffers from ...

    Chapter 5 - Improving Managed Code Performance.pdf

    在.NET平台上,托管代码性能优化是一个重要课题,微软官方文档提供了一系列的设计和编程技巧来帮助开发者提升其.NET应用程序的性能。本章的目的是提供一系列优化和改进托管代码性能的技术,指导开发者编写可以充分...

    Optimizing Java_Practical Techniques for Improving JVM Application Performance

    Optimizing Java_Practical Techniques for Improving JVM Application Performance-O’Reilly(2018) How do you define performance? Most developers, when asked about the performance of their application, ...

    Android代码-cloudopt-next

    Radically reducing development time and improving development experience. Cloudopt Next absorbed the ideas of Spring Boot,JFinal,Resty,Vertx and other excellent projects, and not only had a very ...

    藏经阁-Improving Python and Spark Per.pdf

    藏经阁-Improving Python and Spark Performance and Interoperability with Apache Arrow 本篇文章介绍了 PySpark UDF(User Defined Functions)的当前状态和限制,并讨论了 Apache Arrow 如何改进 PySpark UDF ...

    Android代码-FastTextView

    https://engineering.instagram.com/improving-comment-rendering-on-android-a77d5db3d82e http://ragnraok.github.io/textview-pre-render-research.html Features 1.Faster than Android TextView 2.More ...

Global site tag (gtag.js) - Google Analytics