我有三个 ImageView,在其中启动了相同的动画(translate)。
我有动画监听器,在 onAnimationEnd(Animation animation) 方法中,
我想知道动画在哪个 ImageView 上结束了..?
从动画对象中如何知道它是在哪个 ImageView 上启动的..?
提前感谢..!
我有三个 ImageView,在其中启动了相同的动画(translate)。
我有动画监听器,在 onAnimationEnd(Animation animation) 方法中,
我想知道动画在哪个 ImageView 上结束了..?
从动画对象中如何知道它是在哪个 ImageView 上启动的..?
提前感谢..!
你无法知道动画结束时的对象是什么。AnimationListener 的整个目的就是监听动画,而不是对象。
解决方案
1- 创建自己的 Animation 类,并在其中保存正在进行动画的对象的引用。
这将允许您在函数 onAnimationEnd
中将 Animation 强制转换为 YourAnimation 并获取引用。
2- 更简单的解决方案是创建具有正在被动画化对象引用的自定义 AnimationListener。
例如:
public class MyAnimationListener implements AnimationListener {
ImageView view;
public void setImage(ImageView view) {
this.view = view;
}
public void onAnimationEnd(Animation animation) {
// Do whatever you want
}
public void onAnimationRepeat(Animation animation) {
}
public void onAnimationStart(Animation animation) {
}
}
当你想要给你的ImageView添加动画效果时,你需要执行以下操作:
MyAnimationListener listener = new MyAnimationListener();
listener.setImage(myImage);
myAnimation.setAnimationListener(listener);