studio soporte resolucion pesos para pantallas pantalla multiples match_parent layouts diseño diferentes aplicacion adaptar adaptable android android-layout view size dimensions

soporte - pesos layout android



¿Cuál es la diferencia entre getWidth/Height() y getMeasuredWidth/Height() en Android SDK? (1)

Como su nombre indica, la medida de Ancho / Altura se usa durante la fase de medición y diseño.

Déjame dar un ejemplo,

Se pide a un widget que se mida a sí mismo. El widget dice que quiere que sea 200px por 200px. Esto se mide Ancho / alto.

Durante la fase de diseño, es decir, en el método onLayout. El método puede usar el width / height medido de sus elementos secundarios o asignar un nuevo ancho / alto llamando al método de diseño de la vista.

digamos que el método onLayout llama a childview.layout (0,0,150,150) ahora el ancho / alto de la vista es diferente al ancho / alto medido.

Sugeriría que no se use el método measureWidth / height fuera onLayout.

para resumir .

  1. onMeasure -> establece measuredWidth / measuredHeight
  2. onLayout -> configura el ancho / alto del widget.

adicionalmente
public void View.layout(int l, int t, int r, int b)
parece ser el lugar donde ocurre la asignación de posición y tamaño.

La documentación de Android dice que hay dos tamaños para una vista, las dimensiones medidas y las dimensiones del dibujo . La dimensión medida es la que se calculó en el paso de la medida (el método onMeasure ), mientras que las dimensiones del dibujo son el tamaño real en la pantalla. Particularmente, la documentación dice que:

Estos valores pueden, pero no tienen que ser, ser diferentes del ancho y la altura medidos.

Entonces, mi pregunta es: ¿qué podría hacer que la dimensión del dibujo sea diferente de la dimensión medida? Si el onMeasure respeta los requisitos de diseño (dados como los parámetros widthMeasureSpec y heightMeasureSpec , ¿cómo podría el SDK decidir que la vista debería tener un tamaño de dibujo diferente?

Además, ¿cómo / dónde en el código fuente de Android el ancho / alto medido se usa para calcular el ancho / alto del dibujo? Intenté buscar en el código fuente de View , pero no puedo entender cómo se usa el measuredWidth / Height para calcular el ancho / alto final. Tal vez tiene algo que ver con el relleno, pero no estoy seguro.