同じアニメーションオブジェクトに対して2つのリスナーを設定する方法があるのだろうかと思います。同じAnimation用に2つのアニメーションリスナーを設定するにはどうすればよいですか?
私は2つのアニメーションリスナーを設定しようとしましたが、最初に入れたものは呼び出されませんでした。 2番目のリスナーは無視されます。
同じアニメーションオブジェクトに対して2つのリスナーを設定する方法があるのだろうかと思います。同じAnimation用に2つのアニメーションリスナーを設定するにはどうすればよいですか?
私は2つのアニメーションリスナーを設定しようとしましたが、最初に入れたものは呼び出されませんでした。 2番目のリスナーは無視されます。
実際に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
に他のすべてのリスナーを割り当てます。
単純なトリックは
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) {
}
}
..その他、各種
なるとコールバックの残りのために同じことをするだろう
我々は –
コールから別のリスナーを助けることができるようにあなたのコードを投稿してくださいアニメーションオブジェクトに設定されているリスナーです。 – Toris
まあ、 "addAnimationListener"ではなく "setAnimationListener"です。これは、一度に1つしか可能でないことを示します。 1人のリスナーしか使用できませんか?何をしたいですか? –