0

私はここ数時間以来、私が必死に理解しようとしている本当の問題を抱えています. どこにも行きません...

画面上の 2 本の指の正確な位置を処理する必要があるアプリケーションを作成しているときに、(私にとっては) 予期しない動作に遭遇しました。いくつかのデバッグの後、1 本の指を画面上の静止位置に保ち、別の指で同じ画面上をスライドさせると、動いている指だけでなく静止している指の座標も変化することがわかりました。(実生活ではありませんが: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のアプリへのリンクを見つけました。

Google エンジニアの Dianne Hackborn は、公式のAndroid Developer Groupでこれについてコメントしています。

Android はハードウェアからのデータのみを処理するため、これは Android のバグではないようです。したがって、ドライバーの問題か、開発者が制御できない問題である可能性が最も高いです。

アプリケーションで正確なマルチタッチジェスチャが本当に必要なので、回避策を探しています。助けていただければ幸いです。

于 2012-09-11T17:40:47.163 に答える