问题:为imageview添加了动画,动画播放完之后imageview的点击事件(点击、长按)消失了。
一.概述
当我们给view做动画的时候,平移到某一个位置,却发现响应不了点击事件,因为view的真实位置还在原来的地方,具体解决办法如下.
二.实例
思路:当我们完成动画之后,手动设置view的位置,这样就能响应view的点击事件了,具体如下
private void startAnim() {
TranslateAnimation translateAnimation = new TranslateAnimation(0, 100, 0, 100);
translateAnimation.setDuration(1000);
translateAnimation.setFillAfter(true);
iv_laucher.startAnimation(translateAnimation);
translateAnimation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
//清除动画
iv_laucher.clearAnimation();
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) iv_laucher.getLayoutParams();
params.leftMargin = params.leftMargin + 100;
params.topMargin = params.topMargin + 100;
iv_laucher.setLayoutParams(params);
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
}
也就是
animation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
view.clearAnimation();
view.layout(left, top, left+width, top+height);
}
});
在动画播放完成时候清除View的动画,然后再设置View的位置;