0

我有一个GridView谁的孩子ImageViews。这是一个 3x3 GridView。如果用户按下某个Button我会更改这些孩子的顺序(随机)。

为了使其更具动态性,我决定在用户​​单击按钮时应用动画。在将每个孩子放置到最终位置之前,我将它们移动到屏幕内的三个随机位置。所以最后,当用户单击 Button 时,每个 ImageView(子)移动到三个随机位置,然后转到它在 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 回答