0

私には がいて、GridViewその子供はImageViewsです。それは 3x3GridViewです。ユーザーが特定のボタンを押すと、Buttonこれらの子の順序が (ランダムに) 変更されます。

より動的にするために、ユーザーがボタンをクリックしたときにアニメーションを適用することにしました。各子を最終的な位置に配置する前に、画面内の 3 つのランダムな位置に移動します。最後に、ユーザーがボタンをクリックすると、各 ImageView (子) が 3 つのランダムな位置に移動し、GridView 内の最終的な位置に移動します。

このアニメーションを Galaxy S と同様のデバイスでテストしたところ、問題なく動作しました。しかし、今日、Galaxy S III でテストしたところ、奇妙なことが起こりました。最初の画像 (mGrid.getChildAt(0)) を除くすべての画像が移動します。最初の子はその位置 (0,0) にとどまり、アニメーションが終了すると、最終的な位置に直接移動します。さらに奇妙なことに、アニメーション中に ImageView の位置を確認したところ、画像が動いていると表示されました。

アニメーションを実行するには、TweenEngine ( http://code.google.com/p/java-universal-tween-engine/ )を使用しています。

        for(int n=0; n<3; n++){
            Timeline parallel = tl.beginParallel();

            for(int i=0; i<mGrid.getChildCount(); i++){ 
                int x = r.nextInt(width);
                int y = r.nextInt(height);

                parallel.push(Tween.to(mGrid.getChildAt(i), ViewAccessor.POSITION_XY, 0.35f).target(x, y));

            }

            parallel.end();
        }

私の ViewAccessor では、target.setX と target.setY を使用しています。ImageView が移動したかどうかを確認するには、getX() と getY() を使用します。

なぜこれが起こっているのか知っている人はいますか?

ありがとう!

4

1 に答える 1

1

invalidate() メソッドで強制的にビューを更新してみてください。このようなもの:

mGridView.invalidate();

それが役立つかどうかを確認してください。

于 2013-06-06T14:15:11.227 に答える