studio libreria example custom clase android view

libreria - view android studio



¿Recorre todas las subvistas de una vista de Android? (3)

Estoy trabajando en un juego para Android. Para ayudar a implementarlo, mi idea es crear una subclase de una vista. Luego insertaría varias instancias de esta clase como hijos de la vista principal. Cada instancia manejaría la detección cuando se presionó (a través de OnTouchListener).

El problema que tengo ahora es cómo hacer un bucle a través de todas estas subvistas para poder leer sus estados y procesarlos. (Es decir, cuando todos alcanzan un cierto estado, algo debe suceder).

¿O hay una mejor manera de tener varios objetos en la pantalla que respondan al tacto y cuyo estado puedo verificar?


He hecho un pequeño ejemplo de una función recursiva:

public void recursiveLoopChildren(ViewGroup parent) { for (int i = 0; i < parent.getChildCount(); i++) { final View child = parent.getChildAt(i); if (child instanceof ViewGroup) { recursiveLoopChildren((ViewGroup) child); // DO SOMETHING WITH VIEWGROUP, AFTER CHILDREN HAS BEEN LOOPED } else { if (child != null) { // DO SOMETHING WITH VIEW } } } }

La función comenzará en bucle sobre todos los elementos de vista dentro de un grupo de vista (del último al primer elemento), si un hijo es un grupo de vista y luego reinicia la función con ese niño para recuperar todas las vistas anidadas dentro de ese niño.


Usar Views parece que va a ser brutalmente difícil renderizar algo bien si hay movimiento. Probablemente quieras dibujar en un Canvas o usar OpenGL menos que estés haciendo algo realmente estático. Aquí hay una gran charla de la conferencia de E / S del año pasado sobre cómo crear juegos para Android. Es un poco largo y puedes saltarte unos 15 minutos. También está disponible la fuente. Eso debería darte una buena idea de las formas de hacer las cosas.


@jqpubliq Tiene razón, pero si realmente quiere ver todas las Vistas, simplemente puede usar los métodos getChildCount() y getChildAt() de ViewGroup . Un simple método recursivo hará el resto.