Mise en page poids avertissement poids imbriqué mauvaises performances

je suis nouveau sur android. Maintenant je reçois un avertissement pour la mauvaise performance de poids imbriqué.Je n'ai qu'une image et trois boutons dans mon premier écran. PLs me donner une idée.



<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@color/backgroundColor"
    android:orientation="vertical"
    android:gravity="center_horizontal"
    android:weightSum="10"
    >


    <ImageView
        android:layout_weight="4"
        android:id="@+id/imageLogo"
        android:layout_width="wrap_content" 
        android:layout_height="0dip"
        android:contentDescription="@string/Img"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="20dp"
        android:src="@drawable/home_screen_logo" />

    <LinearLayout
       android:layout_weight="6"
       android:layout_width="fill_parent"
    android:layout_height="0dip" 
    android:orientation="vertical" 
    android:gravity="center_horizontal"
        >

        <LinearLayout android:layout_height="0dp" android:layout_width="fill_parent"
            android:layout_weight="1"
            android:id="@+id/temp"></LinearLayout>
    <ImageButton
        android:id="@+id/btnLogin"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/login"
        android:contentDescription="@string/Img"  
        android:layout_weight="1"
        />
    <LinearLayout android:layout_height="0dp" android:layout_width="fill_parent"
            android:layout_weight="1"></LinearLayout>
    <ImageButton
        android:id="@+id/btnFbLogin"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
         android:background="@drawable/btnfb"
         android:contentDescription="@string/Img"
        />
    <LinearLayout android:layout_height="0dp" android:layout_width="fill_parent"
            android:layout_weight="1"></LinearLayout>
    <ImageButton
        android:id="@+id/btnRegister"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:background="@drawable/btnregister"
        android:contentDescription="@string/Img"/>
</LinearLayout>
</LinearLayout>



Merci d'avance

1
demandé sur Community 2013-02-06 09:58:17

3 réponses

les poids imbriqués sont mauvais pour la performance parce que:

les poids de mise en page exigent qu'un widget soit mesuré deux fois. Lorsqu'un essai linéaire avec des poids non nuls est imbriqué dans un autre essai linéaire avec des poids non nuls, alors le nombre de mesures augmente de façon exponentielle.

il est toujours préférable d'utiliser RelativeLayouts et ajuster votre vue selon les endroits d'autres vues sans en utilisant des valeurs spécifiques de dpi.

courtoisie: pourquoi les poids emboîtés sont-ils mauvais pour la performance? Alternatives?

6
répondu Shrikant 2017-05-23 12:29:50

les poids imbriqués sont mauvais pour la performance parce que:

Les poids de disposition

exigent qu'un widget soit mesuré deux fois. Lorsqu'un La distribution linéaire avec des poids non nuls est imbriquée à l'intérieur d'un autre Linéarisation avec des poids non nuls, puis le nombre de mesures augmentation exponentielle.

il est toujours préférable d'utiliser RelativeLayout s et ajuster votre vue selon les endroits d'autres vues sans utiliser de valeurs dpi spécifiques.

Refer: http://developer.android.com/resources/articles/layout-tricks-efficiency.html

vous pouvez utiliser une distance relative dans la plupart des cas pour éviter de telles mesures coûteuses. Dans un RelativeLayout, les vues sont alignées avec leur parent, avec le RelativeLayout lui-même, ou avec d'autres vues.

pour bien comprendre comment les vues sont positionnées les unes par rapport aux autres, une trame de la mise en page peut être capturée en utilisant la perspective HierarchyViewer D'Android SDK.

0
répondu GrIsHu 2013-02-06 06:10:51

essayer de supprimer le android:weightSum="10" de la disposition linéaire, également supprimer android:layout_weight="1"

Maintenant, vous voyez que l'avertissement a disparu!

assurez-vous de garder les poids dans les boutons et d'autres choses dans des dispositions linéaires!

j'espère que cela peut résoudre votre problème :)

0
répondu marios 2014-03-26 01:43:41