我有一个带有 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