Disposición de interfaz de usuario de dos pasos: ¿Por qué?

He notado que Android, WPF y Silverlight siguen un patrón de diseño de dos pasadas. Hay un método recursivo Measure () que se llama para dimensionar el elemento, posiblemente varias veces. A continuación, se llama un método recursivo Layout / Arrange () que establece las posiciones exactas de los niños en su control padre y también establecerá el tamaño final del control.

Mi pregunta: ¿por qué se divide esto en dos pases, especialmente cuando, para algunos tipos de controles, Measure () no puede calcular el tamaño real de un control sin establecer realmente las posiciones de los niños? ¿Hay algún tipo de caso de disposición minoritaria que sea posible por esto?

Estoy tratando de crear mi propio kit de herramientas de interfaz de usuario, y actualmente estoy inclinado hacia un diseño de un solo paso Layout (), pero me gustaría estar convencido de si esto es sabio o no.

Gracias por leer esto 🙂

Sean

La razón de los dos pasos es que cualquier elemento en la estructura puede influir en el espacio disponible restante de los otros.

Algunos elementos desean tomar el mayor espacio posible mientras que otros tienen dimensiones fijas. También puede tener elementos con sólo un ancho máximo definido. Crea una ecuación que no se puede resolver en un paso.

Los diferentes paneles de la jerarquía preguntan a los elementos qué tamaño necesitan en la primera pasada, luego distribuyen el espacio entre ellos de acuerdo a la naturaleza de cada panel y finalmente informan cada elemento de su espacio asignado.

EDIT: Más explicaciones

El principal inconveniente de un diseño de paso único es que se está manejando cada elemento secuencialmente. Un primer elemento toma una cierta cantidad de espacio y los otros toman el resto. ¿Por qué este elemento es el primero? Pruebe su algoritmo con diferentes orden de elementos, y tendrá diferentes diseños resultantes.

Un diseño de dos pasos simula un comportamiento paralelo en el que cada elemento influye en todo el diseño.

  • ¿Cómo crear un botón de círculo en la esquina inferior derecha de Android 5+?
  • Jerarquía de estilo en Android - ¿cuál es el orden de importancia?
  • Configurar Alpha / Opacidad de Diseño
  • Cómo deshacerse completamente de la GUI de una actividad (evitar una pantalla en negro)
  • FacebookButton SDK v4 LoginButton ignora las personalizaciones XML
  • Multi Seleccionar cuadro <select> en dispositivos móviles
  • Selector de horas / minutos para el temporizador de cuenta atrás de Android
  • Aplicación para Android que muestra bordes negros que superponen los bordes de la interfaz de usuario - algún tipo de modo de compatibilidad?
  • Cómo desplazar el edittext dentro de la vista de desplazamiento
  • Android: Colaboración de la interfaz de usuario (Jenkins + Spoon +?)
  • Alineación de componentes en RelativeLayout
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.