Android onTouchEvent 坐标跳过

2024-01-03

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

我遇到的问题是我的内心onTouchListener,我得到了一些奇怪的结果getX() and 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):着陆!
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):修饰!

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

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

我添加了检查以确保我只创建单个元素,并且不会从除此单个视图之外的任何地方调用此侦听器。

有没有其他人以前见过这个问题,并且知道我可以采取什么措施来解决它?

EDIT

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(), and event.getRawY().

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android onTouchEvent 坐标跳过 的相关文章

随机推荐