exemplo - toolbar android material design - Code Examples
exemplo - toolbar android material design
Por que os pesos aninhados são ruins para o desempenho? Alternativas? (4)
A principal razão pela qual os pesos aninhados são ruins é que quando um layout tem filhos com um peso, ele deve ser medido duas vezes (acho que isso é mencionado no aviso de fiapos). Isso significa que um layout ponderado que também contenha um layout ponderado deve ser medido quatro vezes, e cada 'camada' de pesos adicionados aumenta as medidas com uma potência de dois.
No ICS (API level 14), o GridLayout foi adicionado, o que permite soluções simples e 'planas' para muitos layouts que anteriormente exigiam pesos. Se você estiver desenvolvendo versões anteriores do Android, terá um pouco mais de dificuldade na remoção de pesos, mas o uso de um RelativeLayout e o nivelamento o máximo possível do layout na cabina geralmente removem grande parte dos pesos aninhados.
Escrevi alguns arquivos de layout em que usei o atributo layout_weight para criar uma proporção entre diferentes visualizações.
Em algum momento, começo a receber avisos sobre os pesos aninhados.
Então, pergunto-me por que os pesos aninhados são ruins para o desempenho e se há uma maneira mais eficiente de criar uma proporção constante entre as dimensões de exibição que podem ser usadas para diferentes tamanhos de tela e que não precisam especificar muitos valores de dpi dimensionados através de vários arquivos de layout (para diferentes tamanhos de tela, quero dizer).
Acho que a única alternativa é criar uma função que seria chamada onResume e definir todos os tamanhos e posições. De qualquer forma, em peso, você pode definir apenas tamanhos, mas nenhum preenchimento (para que os layouts se tornem ainda mais complicados), sem textSize (impossível compensar isso de alguma forma), sem falar em coisas como o número de linhas.
Existe uma solução fácil para evitar LinearLayouts aninhados com pesos - apenas use Tablelayout com weighSum e LinearLayout aninhado com weightSum - Tablelayout tem os mesmos atributos de LinearLayout (orientação, weightSum, layout_weight, etc.) e não mostra mensagem - "pesos aninhados tem mau desempenho "
Pesos aninhados são ruins para desempenho porque:
Os pesos de layout exigem que um widget seja medido duas vezes. Quando um LinearLayout com pesos diferentes de zero é aninhado dentro de outro LinearLayout com pesos diferentes de zero, o número de medições aumenta exponencialmente.
É melhor usar RelativeLayout e ajustar sua visualização de acordo com os locais de outras visualizações sem usar valores de dpi específicos.