38

私はAndroid用のゲームに取り組んでいます。それを実装するのを助けるために、私の考えは、ビューのサブクラスを作成することです。次に、このクラスのいくつかのインスタンスをメイン ビューの子として挿入します。各インスタンスは、(OnTouchListener を介して) 押されたときの検出を処理します。

私が今抱えている問題は、これらすべてのサブビューをループして、それらのステータスを読み取って処理できるようにする方法です。(つまり、すべてが特定の状態に達すると、何かが起こるはずです)。

または、タッチに反応する複数のオブジェクトを画面上に表示し、そのステータスを確認できるより良い方法はありますか?

4

5 に答える 5

69

再帰関数の小さな例を作成しました。

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その子で関数を再起動して、その子内のすべてのネストされたビューを取得します。

于 2013-09-24T11:17:37.377 に答える
25

@jqpubliqは正しいですが、本当にすべてのビューを確認したい場合は、からのメソッドgetChildCount()getChildAt()メソッドを使用できますViewGroup。残りは単純な再帰的方法で行います。

于 2010-04-08T06:07:43.190 に答える
0

Views動きがある場合、何かをうまくレンダリングするのは非常に困難になるようなサウンドを使用します。本当に静的なことをしていない限り、おそらく aCanvasまたは usingに描画したいと思うでしょう。これは、Android ゲームの作成に関する昨年の I/O カンファレンスでOpenGL素晴らしい講演です。ちょっと長いので、15分くらい飛ばしてもいいです。また、ソースも公開されています。それはあなたに物事を進める方法の良いアイデアを与えるはずです

于 2010-04-08T03:59:13.597 に答える