我已经添加了一个view
线性布局,我想view
在运行时按照用户推动它的方向移动它,为此我添加onTouchListner
了视图,并且定义了一个手势检测器。
在gestureDetector
的onFling
方法中,我已开始在视图上翻译动画
@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);
}
翻译动画效果很好,但是在动画视图保持其原始位置之后。要将视图移动到目标位置,我将视图x和y属性设置为mX和mY
@Override
public void onAnimationEnd(Animation animation) {
mBtn.setX(mX);
mBtn.setY(mY);
}
但这不能正常工作。请帮助,如果还有其他方法可以实现这一目标,请告诉我。
是否也有一个正在移动的按钮?我看到了一个mBtn。请注意,视图动画只会改变绘制视图的位置,而不是改变其实际位置(因此,按钮可单击区域不会随按钮移动)。您可以尝试做transA.setFillAfter(true),这应该阻止它返回原始位置,但是我相信可点击区域将保持不变。因此,您应该尝试进行属性动画处理,因为它会更新视图的属性,而不仅是绘制位置。在为x和y设置动画时,执行viewpropertyanimator可能是最简单的。您可以在此处了解更多信息:http : //developer.android.com/guide/topics/graphics/prop-animation.html
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句