例如:
TranslateAnimation(float fromXDelta, float toXDelta, float fromYDelta, float toYDelta)这个是相对自身的就对坐标的移动,但移动后执行该动画的View自身X Y值不变,当手动设置坐标时,如
view.setX(x);
view.setY(y);
view的显示位置不会在当前的x,y坐标位置,而是在相对该位置执行过anim后的位置,而事件可以在该位置触发。
解决方案:使用Animation的监听
实例:
ImageView img = new …… 创建ImageView
TranslateAnimation anim = new TranslateAnimation( 0, x, 0,y);
anim.setFillAfter(true);//设置移动后留在当前位置,不返回
anim.setDuration(500);
anim.setInterpolator(mAcitvity,android.R.anim.accelerate_decelerate_interpolator);
img.startAnimation(anim);
//设置动画监听器, 在监听到动画结束时清除img动画,设置img x,y坐标
anim.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationRepeat(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationEnd(Animation animation) {
// TODO Auto-generated method stub
img.clearAnimation();
img.setX(x);
img.setY(y);
}
});
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。