优化和降低GPU Overdraw - Android

The*_*Doc 7 optimization android listview

我在开发人员设置中打开了GPU Overdraw叠加层,发现我的应用程序没有经过优化,我不确定在哪里更改它以使其更好地工作.这是它的图像.

在此输入图像描述

红色部分都是ListView的一部分,因此我不知道如何在保持相同样式的同时优化它.这是每个ListView部分的layout.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/background_card"
android:orientation="horizontal"
android:padding="5dip" >

<ImageView
    android:id="@+id/list_image"
    android:layout_width="50dip"
    android:layout_height="50dip"
    android:src="@drawable/gta5thumb"
    android:padding="3dip"
    android:background="@drawable/image_bg"
    android:layout_centerVertical="true"/>





<TextView
    android:id="@+id/title"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignTop="@id/list_image"
    android:layout_toRightOf="@id/list_image"
    android:text="Grand Theft Auto 5"
    android:textColor="#040404"
    android:textSize="18sp"

    android:layout_marginLeft="4dp"
    android:textStyle="bold"/>

<TextView
    android:id="@+id/date1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/title"
    android:textColor="#343434"
    android:textSize="14sp"
    android:layout_marginTop="1dip"
    android:layout_toRightOf="@id/list_image"
    android:layout_marginLeft="4dp"
    android:text="17th September 2013" />
<TextView
    android:id="@+id/date2"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/date1"
    android:textColor="#343434"
    android:textSize="14sp"
    android:layout_marginTop="1dip"
    android:visibility="visible"
    android:layout_marginLeft="4dp"
    android:layout_toRightOf="@id/list_image"
    android:text="17th September 2013" />
<TextView
    android:id="@+id/date3"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textColor="#343434"
    android:textSize="14sp"
    android:layout_marginLeft="4dp"
    android:text="17th September 2013"
    android:layout_below="@+id/date2"
    android:layout_toRightOf="@+id/list_image"/>

<TextView
    android:id="@+id/platforms"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_alignTop="@id/title"
    android:gravity="right"
    android:text="360, PS3"
    android:layout_marginRight="3dip"
    android:textSize="12sp"
    android:textColor="#10bcc9"
    android:textStyle="bold"/>

 <!-- Rightend Arrow -->    
 <ImageView android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/arrow"
    android:layout_alignParentRight="true"
    android:layout_centerVertical="true"/>

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

我真的迷失了对此进行排序,我很乐意提供您可能想要帮助缓解正在发生的GPU Overdraw的任何其他文件.我不确定该怎么做,因为它是一个ListView,所以不能轻易改变.请记住,风格需要尽可能保持密切.

Com*_*are 5

RelativeLayout和孩子们为你行似乎不会成为问题.相反,它是他们背后的东西.

你应该阅读Romain Guy关于诊断jank(或者:: cough ::备受好评的Android开发者书籍中的类似报道)的史诗博客文章.具体来说,使用层次结构视图来确定什么是层叠在什么上,并尝试彻底摆脱不必要的层,或者至少如果它们的颜色与Z轴中更高的颜色完全重叠则使它们透明.

其中一些可能需要改变您的设计,或者在实现您当前的外观方面可能需要很大的复杂性.例如,你5dip的填充会导致ListView页面内嵌,这意味着它背后的任何东西都会在边缘上掠过.因此,您无法摆脱它背后的东西,或者让它完全透明,因为它对用户是可见的.你可能能够找到一种方法,只有5dip边界存在,内部是透明的,但这可能会变得混乱.

其他东西可能更容易修复.例如,绿色条带下面有蓝色区域表示您的绿色条带是View在页面背景的大部分上分层的.如果你可以使它们垂直堆叠,而不是重叠,这将消除一些过度绘制.

(当然,这可能就是ViewPager这样,因为我猜你在ViewPager这里使用,我从来没有在ViewPager基于UI的UI 上检查过度绘制)