如何获取动画开始时所在的视图对象......?

16

我有三个 ImageView,在其中启动了相同的动画(translate)。

我有动画监听器,在 onAnimationEnd(Animation animation) 方法中,

我想知道动画在哪个 ImageView 上结束了..?

从动画对象中如何知道它是在哪个 ImageView 上启动的..?

提前感谢..!


尝试在onAnimationEnd()中保持一个标志。 - aNi
1个回答

33

你无法知道动画结束时的对象是什么。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);

@W.K.S 你好!能否请您再详细解释一下呢?:) - Slava
@Slava,我的评论是不正确的。实际上,这个答案很好 :) - W.K.S

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接