Obtención de la lista de todas las ventanas en Android

¿Es posible obtener una lista de todas las ventanas de mi aplicación para Android ?

Si no es así, ¿es posible obtener notificaciones sobre la creación de una nueva vista o una ventana ?

Saludos

Por ejemplo: Me gustaría saber si hay una vista visible del teclado en la pantalla, o si hay un diálogo de alerta en la pantalla. ¿Es eso posible? ¿Puedo obtener la instancia de View o Window que la contiene?

Sí, esto es posible de varias maneras diferentes. Todas las vistas que se muestran en la pantalla se agregan a un grupo de vistas, que suelen ser diseños como R.layout.main, LinearLayout, RelativeLayout, etc.

Puede acceder a las vistas en tiempo de ejecución, después de que se han construido los diseños, utilizando un controlador como onWindowFocusChanged:

@Override public void onWindowFocusChanged(boolean hasFocus) { int count = myLayout.getChildCount(); for(int i = 0; i < count; i++) { View v = myLayout.getChildAt(i); ... } } 

Simplemente puede configurar un subproceso dentro de OnWindowFocusChanged que le notificará si se crea un teclado comprobando constantemente el número de vistas de niños del diseño actual.

Sólo puede obtener vistas que son administradas por su aplicación.

Esto incluye todas las vistas excepto el estado y las barras de navegación (para más alto que HoneyComb). Si elige tener su propio InputMethod, esa vista también puede ser suya, pero tendrá que registrar las vistas de teclado adecuadas. Vea esta pregunta para más información sobre eso.

De lo contrario, si desea obtener todas las vistas en su ventana:

 ViewGroup decor = (ViewGroup)activity.getWindow().getDecorView(); int count = decor.getChildCount(); for(int i = 0; i < count; i++) { View view = decor.getChildAt(i); //voila } 

Hey utilizar este código que le ayudará a encontrar si cualquier diálogo se crea en su actividad

 class MyActivity extends Activity { @Override public void onAttachedToWindow() { super.onAttachedToWindow(); Log.d("TAG", "New Window ATTACHED"); } } 

OnAttachedToWindow se llamará cada vez que el usuario cree un nuevo diálogo o algo

Para el problema del teclado, puede usar su propia instancia de vista de teclado con KeyboardView en su diseño: http://developer.android.com/reference/android/inputmethodservice/KeyboardView.html

Utilice el mismo principio para las otras vistas que desea manejar: adminístrelas usted mismo en su diseño. No sé si usted puede en el software que usted planea hacer pero ésta es una manera que puede trabajar.

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