studio reuse other android performance android-linearlayout relativelayout

android - reuse - ¿Es RelativeLayout más costoso que LinearLayout?



include layout in other layout android (5)

A menos que esté desplegando muchas Vistas (por ejemplo, en un ListView), el rendimiento de elegir entre LinearLayout o RelativeLayout es insignificante. Elija el que sea más conveniente para el trabajo y preocúpese por el rendimiento solo cuando lo necesite.

Y esto es lo que dicen los documentos oficiales sobre Creación de diseños eficientes sobre el rendimiento de RelativeLayout y LinearLayout:

Lamentablemente, no es la forma más eficiente de crear interfaces de usuario cumplir con las funciones básicas. Un ejemplo común es el abuso de LinearLayout, que conduce a una proliferación de vistas en la jerarquía de vistas. Cada vista (o peor, cada administrador de diseño) que agregue a su aplicación tiene un costo: la inicialización, el diseño y el dibujo se vuelven más lentos. El pase de disposición puede ser especialmente costoso cuando anida varios LinearLayout que usan el parámetro de peso, que requiere que el niño se mida dos veces.

Siempre he estado usando RelativeLayout cada vez que necesitaba un contenedor de visualización, debido a su flexibilidad, incluso si solo quería mostrar algo realmente simple.

¿Está bien hacerlo, o debería intentar usar LinearLayout cuando puedo, desde el punto de vista de rendimiento / buenas prácticas?

¡Gracias!


En una charla en Google I / O 2013 (Escritura de vistas personalizadas para Android), Romain Guy aclaró el malentendido que hizo que todos comenzaran a usar RelativeLayouts para todo. Un RelativeLayout siempre tiene que hacer dos pasos de medida. En general, es insignificante siempre que su jerarquía de vistas sea simple. Pero si su jerarquía es compleja, hacer un pase de medida adicional podría ser bastante costoso. Además, si anida RelativeLayouts, obtendrá un algoritmo de medición exponencial.

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

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


Puedes probar

<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>

Descubrirá que hay muchas cosas diferentes si sus páginas cargan algunas imágenes de Internet. En este caso, LinearLayout es 100% mejor que RelativeLayout.


Relativelayout es más efectivo que Linearlayout.

Desde here :

Es un concepto erróneo común que el uso de las estructuras de diseño básico conduce a los diseños más eficientes. Sin embargo, cada widget y diseño que agregue a su aplicación requiere inicialización, diseño y dibujo. Por ejemplo, el uso de instancias anidadas de LinearLayout puede conducir a una jerarquía de vista excesivamente profunda. Además, anidar varias instancias de LinearLayout que usan el parámetro layout_weight puede ser especialmente costoso ya que cada niño debe medirse dos veces. Esto es particularmente importante cuando el diseño se infla repetidamente, como cuando se usa en un ListView o GridView.


ACTUALIZACIÓN EN 2018: en la versión N de Android, la clase ConstraintLayout proporciona una funcionalidad similar a RelativeLayout , pero a un costo significativamente menor. Es un administrador de diseño muy poderoso y debe usarse siempre que sea necesario para construir una GUI compleja.