如何为同一个动画设置两个动画侦听器?

时间:2016-10-20 08:41:07

标签: android android-animation

我想知道是否有任何方法可以为同一个动画对象设置两个侦听器。

我尝试设置两个动画侦听器,但是我放置的那个只是被调用。第二个监听器被忽略。

2 个答案:

答案 0 :(得分:0)

我强烈建议您使用Animators而不是实际拥有addListener方法的动画。

除此之外,您分配多个侦听器的方式是拥有一个侦听器来保存其他侦听器并将消息发送给它们。

public interface Listener {
   void onEvent();
}

public class CompoundListener implements Listener {

    private final Collection<Listener> listeners = new CopyOnWriteArrayList<Listener>();

    public void addListener(Listener lis) {
        listeners.add(lis);
    }

    public void removeListener(Listener lis) {
        listeners.remove(lis);
    }

    @Override
    public void onEvent() {
       for(Listener lis : listeners) {
          lis.onEvent();
       }
    }
}

然后只需将CompoundListener设置为主侦听器,并将所有其他侦听器分配给CompoundListener

答案 1 :(得分:0)

简单的伎俩是

class ListenerWrapper implements Animation.AnimationListener {

    private List<Animation.AnimationListener> listeners;

    @Override
    public void onAnimationStart(Animation animation) {
        for (Animation.AnimationListener listener : listeners)
            listener.onAnimationStart(animation);
    }

    @Override
    public void onAnimationEnd(Animation animation) {

    }

    @Override
    public void onAnimationRepeat(Animation animation) {

    }
}

..等等

对其余的回调做同样的事情