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