Android onTouchEvent坐标跳过

Mat*_*ark 9 java android touch ontouchlistener touch-event

我的应用程序,我有一个元素,要求用户在屏幕上移动它,为此我使用RelativeLayout和onTouchListener.

那我遇到的问题是,我的脑海中onTouchListener,我得到一些奇怪的结果getX()getY().

我将以下代码行添加到我的onTouch()- > ACTION_MOVE块中:

Log.v("example", "Touch: {x:" + event.getX() + " } {y:" + event.getY() + "}");

以下是我的LogCat结果.

04-29 03:16:11.000:V/myApp(24188):触摸!
04-29 03:16:11.057:V/myApp(24188):触摸:{x:69.78699} {y:107.774216} 04-29
03:16:11.103:V/myApp(24188):触摸:{x:77.86926 } {y:173.37648} 04-29
03:16:11.158:V/myApp(24188):触摸:{x:69.78699} {y:108.781845} 04-29
03:16:11.205:V/myApp(24188):触摸:{x:77.86926} {y:174.38597} 04-29
03:16:11.463:V/myApp(24188):触摸:{x:69.78699} {y:109.64778} 04-29
03:16:11.502:V/myApp(24188):触摸:{x:77.86926} {y:175.62172} 04-29
03:16:11.596:V/myApp(24188):触摸:{x:69.23099} {y:109.40666} 04-29
03 :16:11.654:V/myApp(24188):Touch Up!

如你所见,我的手指在一条直线上非常缓慢地移动,我得到一个跳跃的结果,其中正确的坐标实际上是每隔一行.

当我将其拖过屏幕时,这导致我的视​​图在所需位置和偏移位置之间跳回和第四.

我已经添加了检查以确保我只创建一个单独的元素,并且不会从除此单个视图之外的任何位置调用此侦听器.

有没有其他人之前看过这个问题,并且对我能做些什么来解决它有任何见解?

编辑

View.OnTouchListener onTouch = new View.OnTouchListener() {

    @Override
    public boolean onTouch(View v, MotionEvent event) {

        switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:
            Log.d("example", "Touch down");
            break;

        case MotionEvent.ACTION_UP:
            Log.d("example", "Touch up");
            break;

        case MotionEvent.ACTION_MOVE:
            Log.v("example", "Touch: {x:" + event.getX() + " } {y:" + event.getY() + "}");
        }

        return true;    
    }
};
Run Code Online (Sandbox Code Playgroud)

Mat*_*ark 8

我能够通过使用event.getRawX()和解决这个问题event.getRawY().