2016-10-20 11 views
0

同じアニメーションオブジェクトに対して2つのリスナーを設定する方法があるのだろうかと思います。同じAnimation用に2つのアニメーションリスナーを設定するにはどうすればよいですか?

私は2つのアニメーションリスナーを設定しようとしましたが、最初に入れたものは呼び出されませんでした。 2番目のリスナーは無視されます。

+0

我々は –

+1

コールから別のリスナーを助けることができるようにあなたのコードを投稿してくださいアニメーションオブジェクトに設定されているリスナーです。 – Toris

+3

まあ、 "addAnimationListener"ではなく "setAnimationListener"です。これは、一度に1つしか可能でないことを示します。 1人のリスナーしか使用できませんか?何をしたいですか? –

答えて

0

実際にaddListenerメソッドを使用しているアニメーションではなく、Animatorsを使用することを強くお勧めします。

複数のリスナーを割り当てる方法は、他のリスナーを保持し、それらにメッセージを送信するリスナーを持つことです。

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に他のすべてのリスナーを割り当てます。

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) { 

    } 
} 

..その他、各種

なるとコールバックの残りのために同じことをするだろう

関連する問題