Прокрутите по всем подзонам вида Android?

Я работаю над игрой для Android. Чтобы помочь реализовать его, моя идея – создать подкласс представления. Затем я вставлял несколько экземпляров этого класса в качестве дочерних элементов основного представления. Каждый экземпляр обрабатывал бы обнаружение при нажатии (через OnTouchListener).

Проблема, с которой я сталкиваюсь сейчас, – это как мне перебирать все эти подзадачи, чтобы я мог читать их статусы и обрабатывать их? (Т.е. когда все они достигают определенного состояния, должно случиться что-то).

Или есть лучший способ иметь несколько объектов на экране, которые реагируют на касание и чей статус я могу проверить?

@jqpubliq Правильно, но если вы действительно хотите пройти через все Представления, вы можете просто использовать методы getChildCount() и getChildAt() из ViewGroup . Остальное будет выполнять простой рекурсивный метод.

Я сделал небольшой пример рекурсивной функции:

 public void recursiveLoopChildren(ViewGroup parent) { for (int i = parent.getChildCount() - 1; i >= 0; 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 } } } } 

Функция начнет циклически перемещаться по всем элементам просмотра внутри группы просмотра (от последнего до первого элемента), если дочерний элемент представляет собой группу просмотра, затем перезапустите функцию с этим дочерним элементом, чтобы получить все вложенные представления внутри этого дочернего элемента.

Использование Views звучит так, как будто это будет жестоко сложно сделать что-нибудь хорошее, если есть движение. Вероятно, вы хотите рисовать на Canvas или использовать OpenGL если вы не делаете что-то действительно статичное. Вот отличная беседа с конференцией I / O последних лет о создании игр для Android. Его вид длинный, и вы можете пропустить около 15 минут. Также доступен источник. Это должно дать вам хорошее представление о способах решения

Почему бы просто не использовать массив или вектор, чтобы отслеживать эти представления? Я думаю, это был бы самый простой и эффективный способ.