Java GetXVelocity返回错误的值
我有一个根据触摸移动的视图,我想跟踪我移动它的速度,所以我使用了Java GetXVelocity返回错误的值,java,android,Java,Android,我有一个根据触摸移动的视图,我想跟踪我移动它的速度,所以我使用了VelocityTracker,如下所示,但根据我的日志,当我从左向右移动视图时,速度有时为负值,反之亦然(当我从右向左移动视图时,速度有时为正值), 我不明白为什么 public boolean onTouch(View v, MotionEvent event) { int eid = event.getAction(); int index
VelocityTracker
,如下所示,但根据我的日志,当我从左向右移动视图时,速度有时为负值,反之亦然(当我从右向左移动视图时,速度有时为正值),
我不明白为什么
public boolean onTouch(View v, MotionEvent event) {
int eid = event.getAction();
int index = event.getActionIndex();
int pointerId = event.getPointerId(index);
switch (eid) {
case MotionEvent.ACTION_DOWN:
if (firstTouch)
offsetY = (int) (event.getRawY() - v.getY());
if (firstTouch)
offsetX = (int) (event.getRawX() - v.getX());
if(mVelocityTracker == null)
mVelocityTracker = VelocityTracker.obtain();
else
mVelocityTracker.clear();
mVelocityTracker.addMovement(event);
break;
case MotionEvent.ACTION_MOVE:
mVelocityTracker.addMovement(event);
v.setX(event.getRawX() - offsetX);
break;
case MotionEvent.ACTION_UP:
mVelocityTracker.computeCurrentVelocity(1000);
float velocity= VelocityTrackerCompat.getXVelocity(mVelocityTracker,pointerId);
// I print the speed and get the negative somtimes
Log.d("speed ","speed : "+speed );
firstTouch = true;
mVelocityTracker.recycle();
mVelocityTracker = null;
break;
default:
break;
}
return true;
}
});
有人知道为什么会发生这种情况以及如何解决吗?
谢谢大家! 负速度有什么问题?当我期望正速度时,它是错误的,例如当我从左向右移动对象时
“当我从左向右移动视图时,它是相反的”
那么相反的在这里意味着什么?你一直在从左向右移动手指吗?相反,当我从右向左移动手指并获得正速度时,它闻起来像个虫子,也许你应该遵循GestureDetector
或ScrollView
源代码了解它们如何使用VelocityTracker