AddOnLayoutChangeListener vs addOnGlobalLayoutListener vs post (Runnable r)

PROBLEMA : Supongamos que tenemos un caso simple: tenemos vista y tenemos que mostrar algunos datos en esta vista. Usamos el método estático showData (View view) para hacer esto. Quiero saber el momento exacto en que se mide el diseño de la vista y puedo acceder a getWidth () getHeight () y estar seguro de que este es el ancho final y la altura de mi vista.

LO QUE SÉ : (no estoy seguro de que soy 100% correcto):

Conozco 3 enfoques diferentes para hacer esto

  • View.addOnLayoutChangeListener – sabemos cuando se cambia el diseño, podemos obtener altura y ancho
  • View.getViewTreeObserver (). AddOnGlobalLayoutListener – para mi caso casi lo mismo, pero obtenemos información más adelante. Porque layoutChange burbujas de los niños a la raíz, y globalLayout de la raíz a los niños (a la derecha?).
  • View.post (Runnable r) – está funcionando, pero no sé por qué runnable se publica en ui thread se ejecuta después de que se mide la vista.

PREGUNTA : ¿Cuál es el mejor enfoque para saber que se mide la vista? ¿y por qué?

¿Cuál es el mejor enfoque para saber que se mide la vista?

El mejor enfoque? OnGlobalLayoutListener con View.getMeasuredHeight() o View.getMeasuredWidth()

¿y por qué?

Debido a que su madre le conoce mejor que usted mismo, por lo que es mejor consultar el ViewGroup sobre su estado que automáticamente habla mucho sobre los niños.

View.post() enqueue el proceso en la cola ui. Ui queue = {1,2}, más tarde después de llamar a esa línea = {1,2, runnable}. Tan definitivamente funcionará después de 1,2

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.