0

我在这里遇到了一个真正的问题,自过去几个小时以来我一直在拼命想弄清楚。哪儿也去不了...

在编写一个需要处理两个手指在屏幕上的确切位置的应用程序时,我遇到了一个意想不到的行为(对我来说)。经过一些调试,我发现当我将一根手指保持在屏幕上的静态位置,同时用另一根手指在同一屏幕上滑动时,不仅会改变移动手指的坐标,还会改变静态手指的坐标!(虽然不是在现实生活中:D)

这是仅 y 坐标的示例日志输出。
y(0) 是握在屏幕底部的静态手指,
y(1) 从上到下移动。

有趣的是,在我到达屏幕底部之前,y(1) 达到了最大值 480。

有人可以向我解释这种行为吗?

这是我用来生成日志的代码,也许我犯了一个愚蠢的错误......

编辑:在“htc 愿望”上进行了测试。

    @Override
    public boolean onTouchEvent( MotionEvent e ) {
        String s = "";
        for ( int i = 0; i < e.getPointerCount(); i++ ) {
                s += "y(" + i + ")=" + (int)e.getY( i ) + " ";
        }
        Log.d( "some tag", s );
        return true;
    }
  • 09-11 17:57:09.257: D/TouchHandler(14932): y(0)=480
  • 09-11 17:57:09.267: D/TouchHandler(14932): y(0)=480 y(1)=5
  • 09-11 17:57:09.287: D/TouchHandler(14932): y(0)=480 y(1)=10
  • 09-11 17:57:09.327: D/TouchHandler(14932): y(0)=480 y(1)=30
  • 09-11 17:57:09.367: D/TouchHandler(14932): y(0)=480 y(1)=70
  • 09-11 17:57:09.427: D/TouchHandler(14932): y(0)=480 y(1)=121
  • 09-11 17:57:09.528: D/TouchHandler(14932): y(0)=480 y(1)=206
  • 09-11 17:57:09.608: D/TouchHandler(14932): y(0)=480 y(1)=271
  • 09-11 17:57:09.618: D/TouchHandler(14932): y(0)=480 y(1)=281
  • 09-11 17:57:09.628: D/TouchHandler(14932): y(0)=447 y(1)=293
  • 09-11 17:57:09.638: D/TouchHandler(14932): y(0)=447 y(1)=304
  • 09-11 17:57:09.658: D/TouchHandler(14932): y(0)=428 y(1)=311
  • 09-11 17:57:09.668: D/TouchHandler(14932): y(0)=419 y(1)=317
  • 09-11 17:57:09.678: D/TouchHandler(14932): y(0)=415 y(1)=325
  • 09-11 17:57:09.688: D/TouchHandler(14932): y(0)=413 y(1)=333
  • 09-11 17:57:09.698: D/TouchHandler(14932): y(0)=411 y(1)=351
  • 09-11 17:57:09.708: D/TouchHandler(14932): y(0)=411 y(1)=363
  • 09-11 17:57:09.718: D/TouchHandler(14932): y(0)=411 y(1)=373
  • 09-11 17:57:09.728: D/TouchHandler(14932): y(0)=411 y(1)=383
  • 09-11 17:57:09.748: D/TouchHandler(14932): y(0)=480 y(1)=480
  • 09-11 17:57:09.758: D/TouchHandler(14932): y(0)=459 y(1)=438
  • 09-11 17:57:09.768: D/TouchHandler(14932): y(0)=459 y(1)=432
  • 09-11 17:57:09.778: D/TouchHandler(14932): y(0)=445 y(1)=431
  • 09-11 17:57:09.788: D/TouchHandler(14932): y(0)=439 y(1)=432
  • 09-11 17:57:09.798: D/TouchHandler(14932): y(0)=437 y(1)=436
  • 09-11 17:57:09.818: D/TouchHandler(14932): y(0)=439 y(1)=441
  • 09-11 17:57:09.828: D/TouchHandler(14932): y(0)=443 y(1)=447
  • 09-11 17:57:09.838: D/TouchHandler(14932): y(0)=450 y(1)=456
  • 09-11 17:57:09.838: D/TouchHandler(14932): y(0)=459 y(1)=467
  • 09-11 17:57:09.858: D/TouchHandler(14932): y(0)=469 y(1)=480
  • 09-11 17:57:09.868: D/TouchHandler(14932): y(0)=476 y(1)=480
  • 09-11 17:57:09.878: D/TouchHandler(14932): y(0)=479 y(1)=480
  • 09-11 17:57:09.888: D/TouchHandler(14932): y(0)=480 y(1)=480
4

1 回答 1

0

好吧,我已经在互联网上寻找了相当长的一段时间。
我遇到了这篇文章,它描述了这个问题,即使是一段短视频和指向google.play 上的应用程序的链接,也可以用来在某些设备上重现这种行为。

谷歌工程师 Dianne Hackborn 在官方的Android Developer Group上对此进行了评论。

这似乎不是 Android 错误,因为 Android 只处理来自硬件的数据。因此,这很可能是驱动程序问题或我们开发人员无法控制的问题。

现在我正在寻找一种解决方法,因为我的应用程序中确实需要准确的多点触控手势。帮助将不胜感激。

于 2012-09-11T17:40:47.163 回答