我在线性布局中添加了一个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);
}
但这不能正常工作。请帮助,如果有任何其他方法可以实现这一点,请告诉我。
答案 0 :(得分:0)
那里还有一个按钮吗?我看到一个mBtn。请注意,视图动画只会转换绘制视图的位置而不是实际位置(因此按钮可点击区域不会随按钮移动)。您可以尝试执行transA.setFillAfter(true),这应该阻止它返回到原始位置,但我相信可点击区域将保持不变。因此,您应该尝试执行属性动画,因为它将更新视图的属性,而不仅仅是绘制它的位置。当你动画x和y时,做一个viewpropertyanimator可能是最容易的。您可以在此处阅读更多内容:http://developer.android.com/guide/topics/graphics/prop-animation.html