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
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?
les poids imbriqués sont mauvais pour la performance parce que:
Les poids de dispositionexigent 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.
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 :)