SORU
18 AĞUSTOS 2012, CUMARTESİ


Neden 0dp performans geliştirme olarak kabul edilir?

Bircevapbu soru sonunda, açıklamalar ve çözümleri birleştirerek dolu olmuştur.

Soru

Etrafa baktım ama gerçekten neden açıklayan bir şey bulamadımAndroid Lintyanı sıra bazıEclipseipuçları 0dp layout_height layout_width Bazı değerleri yerine tavsiye.

Örneğin, değiştirilmesi önerildi ListView bir ben var

Önce

<ListView
    android:id="@android:id/list"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1">
</ListView>

Sonra

<ListView
    android:id="@android:id/list"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1">
</ListView>

Benzer şekilde, bir değişiklik önerdiListe görünümü öğesi. Bu değişiklikler önce ve sonra hepsi birbirine benzer, ama bu performans güçlendiriciler neden ve ne anlama ilgileniyorum.

Herkes neden böyle bir açıklama var mı? Eğer yardımı olacaksa, burada ListView genel düzeni.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <ImageView
        android:id="@ id/logo_splash"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    </ImageView>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical"
        android:background="@color/background"
        android:layout_below="@id/logo_splash">

        <ListView
            android:id="@android:id/list"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1">
        </ListView>

        <TextView
            android:id="@android:id/empty"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/no_upcoming" />

    </LinearLayout>        
</RelativeLayout>

Cevap

Gerçekten cevaplar ve başvurulan bağlantıları bir arada aşağıda çünkü burada bir cevap veriyorum. Eğer bir şey hakkında yanılıyorsam, bana bildirin.

What is the trick with 0dip layout_height or layouth_width?

İle çalışan 3 Genel yerleşim özellikleri vardırgenişlikveyükseklik

  1. android:layout_height
  2. android:layout_width
  3. android:layout_weight

LinearLayout bir zamandikeyo zaman layout_weight etkisiyükseklikçocuk Views (ListView). 0dp 21 *ayarı bu niteliği göz ardı edilmesine neden olacak.

Örnek

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">
    <ListView
        android:id="@android:id/list"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1">
    </ListView>
</LinearLayout>

LinearLayout bir zamanyatayo zaman layout_weight etkisigenişlikçocuk Views (ListView). 0dp layout_width ayarı bu niteliği göz ardı edilmesine neden olacak.

Örnek

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal">
    <ListView
        android:id="@android:id/list"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1">
    </ListView>
</LinearLayout>

Öznitelik görmezden istediğiniz nedeni, eğer bunu göz ardı etmedin bile, daha fazla CPU zamanı kullanır düzenini hesaplamak için kullanılan olurdu.

Ayrıca bu düzeni üç özelliklerini bir arada kullanırken nasıl olması gerektiği üzerinde herhangi bir karışıklığı önler. Bu vurgulanmış@geliştirici androidcevap aşağıda.

Ayrıca,Android LintveEclipseher iki 0dip kullanmak demek. Cevap aşağıda, sıfır beden birimlerinin herhangi birinde aynı olduğundan*32, *, 0px, **33 vb kullanabilirsiniz.

Liste Görünümü üzerinde wrap_content kaçının

Layout_width of a ListView

Eğer hiç getView(...) bir çok kez yaptığım gibi denir merak ettiyseniz, wrap_content ile ilgili olduğu ortaya çıkıyor.

Yukarıda kullanıyordum gibi wrap_content kullanarak daha fazla CPU süresi neden olacak Viewtüm alt s ölçülen neden olur. Bu ölçüm 39 ** denilen neden olur. Şimdi bu test ettik ve getView(...) denir sayısını önemli ölçüde azalır.

İki wrap_content ile ListViews getView(...) her satır, diğer tarafta ListView ve her satır için 4 kez 3 kez çağrıldı.

Önerilen bu değişen 0dp, getView(...) sadece bir kez, her satır için çağrıldı. Bu oldukça iyi bir gelişme olduğunu, ancak 0dp göre ListView wrap_content kaçınma ile yapmak daha vardır.

Ancak 0dp önerisi bu yüzden performansı artırmak önemli.

CEVAP
18 AĞUSTOS 2012, CUMARTESİ


Bu var öncelikle

<ListView
    android:id="@android:id/list"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1">
</ListView>

Hiç sıkıntı içine götürecek wrap_content olarak Liste Görünümü yüksekliği. Here ve this answer nedeni budur.

Daha fazla,

Etrafa baktım ama gerçekten neden açıklayan bir şey bulamadım Android Lint olarak Tutulması bazı ipuçları bazılarının yerini göstermektedir 0dp ile layout_width ve layout_height değerlerini.

Yüksekliği için kullanılabilir kadar Al ile Liste Görünümü anlamına gelir layout_weight = "1" kullanıyor çünkü. Yani, bu durumda layout_height = "wrap_content" android:layout_height="0dp" değiştirmek için kullanmaya gerek yok ve Liste Görünümü yükseklik layout_weight = "1" tarafından yönetilecek.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • KRQE

    KRQE

    6 AĞUSTOS 2007
  • Nightmare2005

    Nightmare200

    14 Ocak 2007
  • psidot

    psidot

    2 Kasım 2006