Question

J'ai toujours été à l'aide RelativeLayout chaque fois que je besoin d'un conteneur View, en raison de sa flexibilité, même si je voulais juste quelque chose de très simple affichage.

Est-il correct de le faire, ou devrais-je essayer d'utiliser un LinearLayout quand je peux, d'un point de vue performances / bonnes pratiques?

Merci!

Était-ce utile?

La solution

Dans un discours à Google I / O 2013 (affichages personnalisés d'écriture pour Android), Romain Guy a précisé le malentendu que tout le monde fait de commencer à utiliser pour tout RelativeLayouts. Un RelativeLayout a toujours à faire deux passes de mesure. Dans l'ensemble, il est négligeable aussi longtemps que la hiérarchie de vue est simple. Mais si votre hiérarchie est complexe, faire une passe de mesure supplémentaire pourrait être assez coûteux. Aussi, si vous RelativeLayouts nid, vous obtenez un algorithme de mesure exponentielle.

https://www.youtube.com/watch?v=NYtB6mlu7vA&t=1m41s

https://www.youtube.com/watch?v=NYtB6mlu7vA&t=38m04s

Autres conseils

À moins que vous pose sur beaucoup de vues (par exemple dans un ListView), la performance de choisir entre LinearLayout ou RelativeLayout est négligeable. Décrochez selon le plus facile à utiliser pour le travail, et l'inquiétude sur la performance que lorsque vous avez besoin.

Et voici ce que les documents officiels sur Création de layouts efficaces dit sur la performance de RelativeLayout et LinearLayout:

  

en tenir aux fonctions de base est   malheureusement pas le plus efficace   manière à créer des interfaces utilisateur. UNE   exemple courant est l'abus de   LinearLayout, ce qui conduit à un   prolifération des vues dans la vue   hiérarchie. Chaque vue - ou pire,   chaque gestionnaire de mise en page - que vous ajoutez à   votre application a un coût:   l'initialisation, la mise en page et le dessin   devenir plus lent. La passe de mise en page peut être   particulièrement cher quand vous nid   plusieurs LinearLayout qui utilisent le   paramètre de poids, ce qui nécessite la   enfant à mesurer deux fois.

Relativelayout est plus efficace que LinearLayout.

De :

  

Il est une idée fausse que l'utilisation des structures de mise en page de base conduit à la plupart des dispositions efficaces. Cependant, chaque widget et la mise en page que vous ajoutez à votre application nécessite l'initialisation, la mise en page et le dessin. Par exemple, en utilisant les instances imbriquées de LinearLayout peut conduire à une hiérarchie de vision trop profonde. En outre, plusieurs cas de nidification de LinearLayout qui utilisent le paramètre layout_weight peuvent être particulièrement coûteux que chaque enfant a besoin d'être mesurés deux fois. Ceci est particulièrement important lorsque la mise en page est gonflé à plusieurs reprises, comme lorsqu'il est utilisé dans un ListView ou GridView.

2018 UPDATE: Dans la version de N applications, le ConstraintLayout classe offre une fonctionnalité similaire à RelativeLayout, mais à un coût nettement inférieur. Il est responsable de la mise en page très puissant et il doit être utilisé chaque fois qu'il est nécessaire de construire une interface graphique complexe.

Vous pouvez essayer

<LinearLayout>
       <ViewPager/><!--Loading images from net, it is very good as a testing case.-->
       <ViewPagerIndicator/>
       <TextView/> <!--Show some info about page-->
</LinearLayout>

<RelativeLayout>           
       <ViewPager/><!--Loading images from net, it is very good as a testing case.-->
       <ViewPagerIndicator below="id of ViewPager"/>
       <TextView below="id of ViewPagerIndicator"/> <!--Show some info about page-->
</RelativeLayout>

Vous trouverez qu'il ya beaucoup de sommes différentes, si vos pages charger des images à partir d'Internet. Dans ce cas, le LinearLayout est 100% mieux que RelativeLayout jamais.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top