2013-07-22 17 views
6

Ho acceso la sovrapposizione della GPU Overdraw nelle impostazioni dello sviluppatore e ho notato che la mia app non è ottimizzata e non sono sicuro dove cambiarla per farlo funzionare un po 'meglio. Ecco un'immagine di esso.Ottimizzazione e riduzione dello svuotamento della GPU - Android

enter image description here

Le sezioni rossi sono tutti parte di un ListView e così è qui che non so come ottimizzarlo, mantenendo lo stesso stile. Ecco la layout.xml per ogni sezione ListView:

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

sto veramente perso con l'ordinamento questo fuori e sono felice di dare qualsiasi altro file si consiglia di contribuire ad alleviare la GPU overdraw che sta accadendo. Non sono sicuro di cosa fare in quanto è un ListView e quindi non può essere modificato facilmente. Tieni presente che lo stile deve essere mantenuto il più vicino possibile.

risposta

5

L'RelativeLayout e i bambini per le righe non sembrano essere il problema. Invece, è roba dietro di loro.

È necessario leggere Romain Guy's epic blog post per diagnosticare jank (o copertura simile in :: tosse :: libri per sviluppatori Android ben tenuti). In particolare, usa la Vista gerarchica per determinare cosa è stratificato su cosa e cerca di eliminare completamente i livelli non necessari o almeno renderli trasparenti se il loro colore è completamente sovrapposto a qualcosa di più alto nell'asse Z.

Alcuni di questi potrebbero richiedere modifiche nel progetto o forse una complessità significativa nel raggiungere il tuo aspetto attuale. Ad esempio, il tuo 5dip di padding sta causando l'inserimento di ListView all'interno della pagina, il che significa che qualsiasi cosa si trovi dietro di esso fa capolino dai bordi. Quindi, non è possibile eliminare le cose che stanno dietro, o renderle completamente trasparenti, in quanto è visibile all'utente. Potresti essere in grado di elaborare un mezzo in base al quale esiste solo il bordo 5dip e l'interno è trasparente, ma potrebbe risultare disordinato.

Altre cose possono essere più semplici da riparare. Ad esempio, la striscia verde con l'area blu al di sotto di essa suggerisce che la tua striscia verde è un po 'di View sovrapposta alla maggior parte dello sfondo della pagina. Se riesci a far sì che siano impilati verticalmente, piuttosto che sovrapposti, ciò eliminerebbe un pizzico di overdraw.

(Naturalmente, che potrebbe essere ViewPager farlo, come sto cercando di indovinare che si sta utilizzando ViewPager qui, e non ho mai controllato overdraw su un ViewPager based UI)

Problemi correlati