如何使用手势检测器和动画移动视图

时间:2014-09-30 14:00:09

标签: android animation android-animation

我在线性布局中添加了一个view,我希望在用户推送它的方向上移动view,因为我在视图上添加了onTouchListner,以及我已经定义了一个手势检测器。

gestureDetector的{​​{1}}方法中,我已在视图

上启动了翻译动画
onFling

翻译动画效果很好,但动画视图保持原始位置。要将视图移动到目标位置,我正在设置视图x& y属性为mX和mY

@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {

mX = e2.getX();
mY = e2.getY();

TranslateAnimation transA = new TranslateAnimation(
                    e1.getX(),e2.getX(),e1.getY(),e2.getY());

transA.setDuration(1000);
transA.setAnimationListener(MainActivity.this);
mBtn.startAnimation(transA);

return super.onFling(e1, e2, velocityX, velocityY);
}

但这不能正常工作。请帮助,如果有任何其他方法可以实现这一点,请告诉我。

1 个答案:

答案 0 :(得分:0)

那里还有一个按钮吗?我看到一个mBtn。请注意,视图动画只会转换绘制视图的位置而不是实际位置(因此按钮可点击区域不会随按钮移动)。您可以尝试执行transA.setFillAfter(true),这应该阻止它返回到原始位置,但我相信可点击区域将保持不变。因此,您应该尝试执行属性动画,因为它将更新视图的属性,而不仅仅是绘制它的位置。当你动画x和y时,做一个viewpropertyanimator可能是最容易的。您可以在此处阅读更多内容:http://developer.android.com/guide/topics/graphics/prop-animation.html