我有一个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()。
有人知道为什么会这样吗?
谢谢!