java - Android onTouchEvent坐标跳转

标签 java android touch touch-event ontouchlistener

在我的应用程序中,我有一个元素需要用户在屏幕上四处移动它,为此我使用了 RelativeLayout 和 onTouchListener。

我遇到的问题是,在我的 onTouchListener 中,我得到了一些关于 getX()getY().

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

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

下面是我的 LogCat 结果。

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

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

当我在屏幕上拖动它时,这导致我的视​​图在所需位置和偏移位置之间来回跳动。

我添加了检查以确保我只创建了一个元素,并且这个监听器不会从这个单一 View 以外的任何地方调用。

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

编辑

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;    
    }
};

最佳答案

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

关于java - Android onTouchEvent坐标跳转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16273249/

相关文章:

javascript - jquery 将如何为移动设备实现触摸事件?

ios - didSelectRow 未很好地注册单元格触摸

java - 用行填充矩阵

java - 将此 Activity 转换为 fragment

java - 二叉搜索树迭代非键

Android布局<include/>标签

java - 为什么我的渲染方法不显示任何内容?

android - 如何保护Android应用APK的..res/raw/文件夹中的视频?

android - 如何在android 4.2中显示选项菜单

javascript - 对抗移动设备上的触摸事件,劫持正常滚动