为视图创建动画.. 来自developer.android.com:
ImageView spaceshipImage = (ImageView) findViewById(R.id.spaceshipImage);
Animation hyperspaceJumpAnimation = AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump);
spaceshipImage.startAnimation(hyperspaceJumpAnimation);
我想知道我是否可以扩展ImageView,以便我创建的每个MyImageView在点击时都会有动画。
我还应该在MyImageView类之外为每个MyImageView设置一个不同的OnClickListener。
这可能吗?
答案 0 :(得分:6)
尝试这种方法......
public class MyImageView extends ImageView implements
View.OnClickListener {
private View.OnClickListener clickListener;
public MyImageView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
setOnClickListener(this);
}
public MyImageView(Context context, AttributeSet attrs) {
super(context, attrs);
setOnClickListener(this);
}
public MyImageView(Context context) {
super(context);
setOnClickListener(this);
}
@Override
public void setOnClickListener(OnClickListener l) {
if (l == this) {
super.setOnClickListener(l);
} else {
clickListener = l;
}
}
@Override
public void onClick(View v) {
// start the Animation...
// handle click event yourself and pass the event to supplied
// listener also...
if (clickListener != null) {
clickListener.onClick(this);
}
}
}
答案 1 :(得分:2)
try to use these code:::--->
ImageView spaceshipImage = (ImageView) findViewById(R.id.spaceshipImage);
spaceshipImage.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Animation hyperspaceJumpAnimation = AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump);
spaceshipImage.startAnimation(hyperspaceJumpAnimation);
}
});
答案 2 :(得分:1)
是的,你可以扩展ImageView并同时实现OnClickListener:
public class MyImageView extends ImageView implements View.OnClickListener {
}
请记得调用setOnClickListener(this)
,因为您的类负责在构造函数中管理视图的单击。当调用onClick时,请调用startAnimantion(yourAnimation)
。