私は 3 つの画像ボタン (カスタム画像ボタンに基づく) を持つアプリケーションを持っています。この画像ボタンにはアニメーション終了があり、最初の画像ボタンがアニメーションを完了すると、このカスタム画像ボタンのすべてのインスタンスが AnimationEnd メソッドをトリガーします。
これが私のコードです:
import java.util.concurrent.Callable;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.ImageButton;
class MyImageButton extends ImageButton{
protected Callable<Void> AnimEnd = null;
public void setOnAnimationEndListener(Callable<Void> AnimEnd1) {
this.AnimEnd = AnimEnd1;
}
public MyImageButton(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public MyImageButton(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
public MyImageButton(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
}
@Override
protected void onAnimationEnd() {
super.onAnimationEnd();
//Functionality here
if(this.AnimEnd != null){
try{
this.AnimEnd.call();
}
catch(Exception e){
}
}
}
}
3 つの画像ボタンが互いに 2 秒 (2000 ミリ秒) 離れたオフセットでアニメーション化されていることに注目してください。
画像ボタンのコールバックを次のように設定します。
object1.setOnAnimationEndListener(new Callable<Void>() {
@Override
public Void call() throws Exception {
object1.setAnimation(null);
object1.setLayoutParams(params);
// TODO Auto-generated method stub
return null;
}
});
// Similarly object2, object3 all of them are instances of MyImageButton