我正在为 Android 开发游戏。为了帮助实现它,我的想法是创建一个视图的子类。然后我会插入这个类的几个实例作为主视图的子视图。每个实例都会在按下时处理检测(通过 OnTouchListener)。
我现在遇到的问题是如何遍历所有这些子视图以便读取它们的状态并处理它们? (即当他们都达到某种状态时,应该发生一些事情)。
或者有没有更好的方法让屏幕上的多个对象响应触摸并且我可以检查它们的状态?
原文由 Slapout 发布,翻译遵循 CC BY-SA 4.0 许可协议
我正在为 Android 开发游戏。为了帮助实现它,我的想法是创建一个视图的子类。然后我会插入这个类的几个实例作为主视图的子视图。每个实例都会在按下时处理检测(通过 OnTouchListener)。
我现在遇到的问题是如何遍历所有这些子视图以便读取它们的状态并处理它们? (即当他们都达到某种状态时,应该发生一些事情)。
或者有没有更好的方法让屏幕上的多个对象响应触摸并且我可以检查它们的状态?
原文由 Slapout 发布,翻译遵循 CC BY-SA 4.0 许可协议
我做了一个递归函数的小例子:
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
}
}
}
}
该函数将开始遍历 ViewGroup
中的所有视图元素(从第一项到最后一项),如果子项是 ViewGroup
然后用该子项重新启动函数以检索所有嵌套视图在那个孩子里面。
原文由 Tobrun 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答961 阅读✓ 已解决
2 回答1k 阅读✓ 已解决
1 回答839 阅读✓ 已解决
2 回答948 阅读
2 回答888 阅读
1 回答822 阅读
2 回答692 阅读
@jqpubliq 是对的,但如果你真的想遍历所有视图,你可以简单地使用
getChildCount()
和getChildAt()
来自ViewGroup
56d0a9 的方法一个简单的递归方法将完成剩下的工作。