2013-07-22 8 views
6

Po włączeniu nakładki GPU Overdraw w ustawieniach programisty zauważyłem, że moja aplikacja nie jest zoptymalizowana i nie jestem pewien, gdzie ją zmienić, aby działała nieco lepiej. Oto jego obraz.Optymalizowanie i obniżanie przekroczenia GPU - Android

enter image description here

Czerwone odcinki są częścią ListView i tak to tam nie wiem, jak zoptymalizować go zachowując ten sam styl. Oto layout.xml dla każdej sekcji 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> 

jestem naprawdę stracił z sortowaniem na to uwagę i jestem szczęśliwy, że daje żadnych innych plików może chcesz pomóc złagodzić GPU Overdraw, co się dzieje. Nie jestem pewien, co robić, ponieważ jest to ListView, więc nie można go tak łatwo zmienić. Pamiętaj, że styl musi być trzymany jak najbliżej.

Odpowiedz

5

The RelativeLayout i dzieci dla twoich wierszy nie wydają się być problemem. Zamiast tego, to coś za nimi.

Powinieneś przeczytać Romain Guy's epic blog post o diagnozowaniu jank (lub podobnym pokryciu w :: kaszel :: uznanych książek dla programistów Androida). W szczególności użyj widoku hierarchicznego, aby określić, co jest warstwą, i spróbuj pozbyć się niepotrzebnych warstw, lub przynajmniej uczyń je przezroczystymi, jeśli ich kolor jest całkowicie pokryty przez coś wyższego w osi Z.

Niektóre z nich mogą wymagać zmian w projekcie lub być może znaczne komplikacje w osiągnięciu obecnego wyglądu. Na przykład twoje wypełnienie 5dip powoduje, że ListView jest wstawiane wewnątrz strony, co oznacza, że ​​wszystko, co znajduje się za tym, zagląda na krawędzie. W związku z tym nie można pozbyć się elementów za nim ani uczynić go w pełni przezroczystym, ponieważ jest widoczny dla użytkownika. Być może uda Ci się wypracować środki, dzięki którym istnieje tylko granica 5dip, a wnętrze jest przezroczyste, ale może się to stać niepotrzebne.

Inne rzeczy mogą być łatwiejsze do naprawy. Na przykład zielony pasek z niebieskim obszarem pod nim sugeruje, że twój zielony pasek jest w pewnym stopniu View, który jest ułożony warstwowo na większości tła strony. Jeśli możesz sprawić, by były ułożone pionowo, a nie zachodzące na siebie, wyeliminowałoby to szczypanie nadmiernego przeciągnięcia.

(Oczywiście, że może być ViewPager to robić, jak zgaduję, że używasz ViewPager tutaj, a ja nigdy nie zostały sprawdzone Overdraw na interfejsie opartym ViewPager)

Powiązane problemy