¿Cómo mejora el rendimiento en LinearLayout la configuración de baselineAligned a false?
Solo estaba construyendo una interfaz de usuario en xml, y Lint me dio una advertencia y me dijo que estableciera android:baselineAligned en false para mejorar el rendimiento en ListView.
Los documentos para los cambios de Pelusa que agregaron esta advertencia dicen
Rendimiento de diseño: Encuentra LinearLayouts con pesos donde debe establecer android: baselineAligned="false" para un mejor rendimiento, y también encuentra casos en los que tiene pesos anidados que pueden causar rendimiento problema.
Puede ¿alguien explica por qué esto mejora el rendimiento, específicamente cuando se trata de peso?
3 answers
Al establecer android:baselineAligned="false"
, está evitando el trabajo adicional que el diseño de su aplicación tiene que hacer para alinear las líneas de base de sus hijos; lo que obviamente puede aumentar el rendimiento. (Menos operaciones innecesarias en UI => Mejor rendimiento)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-18 05:17:18
Cómo ayuda android:baselineAligned="false"
. Puede que no sea la respuesta, pero ayuda a conseguir el concepto.
Acabo de conseguir 3 elementos (icono, texto, botón) centrado verticalmente en LinearLayout horizontal.
Esto puede parecer simple, pero en realidad especificando android: gravity= "center_vertical" como LinearLayout atributo no es suficiente-el icono está centrado, pero el texto y el botón no lo están. Esto es porque (presumiblemente) el texto tiene una línea de base y un algoritmo de centrado utiliza en lugar de 'real' centro vertical. Pero lo que es peor-botón (que viene junto al texto) se centra utilizando la línea de base del texto!
Especificar android: baselineAligned= "false" en LinearLayout convierte esto apagado, y todo se centra correctamente.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-08-21 12:32:44
// Baseline alignment requires to measure widgets to obtain the
// baseline offset (in particular for TextViews). The following
// defeats the optimization mentioned above. Allow the child to
// use as much space as it wants because we can shrink things
// later (and re-measure).
if (baselineAligned) {
final int freeSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);
child.measure(freeSpec, freeSpec);
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-19 12:19:06