现在的位置: 首页 > 综合 > 正文

android布局性能优化

2017年11月18日 ⁄ 综合 ⁄ 共 4019字 ⁄ 字号 评论关闭

本质是通过复用控件达到性能优化。

1、通过<Include/>

被复用控件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" 
    android:background="#ccc"
    >
    <TextView 
        android:gravity="center"
         android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="使用include复用控件"
    android:textSize="15sp"
    android:textColor="@android:color/holo_red_light"
        />
    

</LinearLayout>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity"
    android:orientation="vertical"
     >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

    <QuickContactBadge
        android:id="@+id/quickContactBadge1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView1"
        android:layout_marginTop="48dp"
        android:layout_toRightOf="@+id/textView1" />

    <ProgressBar
        android:id="@+id/progressBar1"
        style="?android:attr/progressBarStyleLarge"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/quickContactBadge1"
        android:layout_below="@+id/quickContactBadge1"
        android:layout_marginRight="34dp"
        android:layout_marginTop="37dp" />

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/progressBar1"
        android:layout_below="@+id/progressBar1"
        android:layout_marginTop="26dp"
        android:text="Button" />
    <include layout="@layout/bottom"
        android:id="@+id/myresue"
       android:layout_alignParentBottom="true"
      
        />

</LinearLayout>

复用效果:

2‘通过Merge

解决布局嵌套降低性能的问题。把一个布局中处在同意层次的控件抽取出来,在include,提高性能。

<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
   android:layout_gravity="center_vertical"
     >

    <Button
        android:id="@+id/button1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Button1" />

    <Button
        android:id="@+id/button2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Button2" />

</merge>

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <LinearLayout 
        android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:background="#f00"
        >
         <TextView 
        android:gravity="center"
         android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="使用Merge复用控件"
    android:textSize="15sp"
    android:textColor="@android:color/holo_red_light"
        />
    
        
    </LinearLayout>
     <LinearLayout 
         
        android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
      android:background="#0f0"
       
        >
            <TextView 
        android:gravity="center"
         android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="使用Merge复用控件"
    android:textSize="15sp"
    android:textColor="@android:color/holo_red_light"
        />
         
     </LinearLayout>
    
      <LinearLayout 
        android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
      android:background="#00f"
       
        >
            <TextView 
        android:gravity="center"
         android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="使用Merge复用控件"
    android:textSize="15sp"
    android:textColor="@android:color/holo_red_light"
        /> 
          
      </LinearLayout>
      <LinearLayout 
            android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
          >
          <include layout="@layout/mybutton"/>
      </LinearLayout>
      
    

</LinearLayout>

效果:

抱歉!评论已关闭.