一連のイベントの と の値をgetX()
読み取ると、これらの座標から特定の距離のしきい値を超えるまで、イベントが座標を返すことがわかりました。それ以降は常に正しい座標が返されます。getY()
onTouch
ACTION_MOVE
ACTION_DOWN
再現する手順:
- デフォルトのアクティビティで新しいアプリケーション プロジェクトを作成する
次のメソッドをデフォルト アクティビティに追加します。
@Override public boolean onTouchEvent(MotionEvent event) { Log.i("getXYDelay", "(x,y)=("+event.getX() + "," + event.getY() + ")"); return super.onTouchEvent(event); }
デバイス上で実行し、タッチしてドラッグするときに logcat を監視します
タッチしてドラッグするたびに、getX()
/のgetY()
結果は、指が中心メートルの半分ほど移動した後にのみ変化し始め、それ以降は正確であることがわかります。
多くの状況でこれがどのように役立つかはわかりますが、作成中のアプリケーションで問題が発生するため、次のようになります。
- この初期ラグは上書き可能ですか? それともバイパスできますか?
- デバイス固有ですか?
理想的には、単一の OpenGL サーフェス ビューに対してオフにしたいと考えています。
ノート:
- Samsung Note SPen を使用している場合は発生しません。
- 同じことが起こり
getRawX()/getRawY()
ます。 - これはエミュレーターでは発生しないため、ハードウェア タッチ ドライバーが原因であると考えられます。
更新: これはハードウェア ドライバーまたは同様のレベルが原因であり、アプリケーションの制御を超えていると想定しています。これを android 開発者グループにも投稿しようとしましたが、数週間後、モデレーターはまだ私の投稿に座っているようです。