4

私のタイトルが十分に明確でない場合は、詳細に説明します。

複数のボタン (10 個以上) で満たされた画面があり、そのうちの 1 つを押して、onTouch/onClick をアクティブにするとします。指を離さずに動かすと、スライドした他のボタンがアクティブになります。この特定のケースでは、仮想ピアノの上をスライドしたときにサウンドが再生されるようにします。

すべての ACTION_MOVE を登録し、新しいイベントをアクティブにするいくつかの境界を見つける onTouchListener ソリューションについては知っていますが、複数のボタンがあり、遅延なくスムーズにスライドできるようにしたい場合、これは最適とは言えません。

ビューの touchListener をアクティビティのジェスチャリスナーと組み合わせることを提案するこのスレッドも読みましたが、これも私の状況にはまったく最適ではありません。

touchlistener とジェスチャリスナーの組み合わせはまだ試していませんが、他に方法がないという人がいれば試してみます。

4

2 に答える 2

4

私の意見では、これを行う適切な方法は、ボタンを忘れて、キーボード全体を描画するカスタムビューを作成することです。このビューでは、タッチイベントを好きなように処理できます。ジェスチャ検出器も必要ありません。モーションイベントのアクションと座標を分析するだけで、非常に簡単です。

ACTION_MOVEと遅延についてあなたが何を意味するのかわかりません。遅延を最小限に抑えるには、ACTION_DOWNに反応し、ダウン状態のときに他のキーをホバーした場合はACTION_MOVEに反応します。それより速くなることはできません。ボタンを使用すると、ユーザーがACTION_UPで指を離すと、onClick()イベントがトリガーされるため、重要な遅延が発生します。

ボタンは、あなたが説明するように機能することを意図したものではありません。ユーザーがボタンをタップし、同時に指を離しても、周囲の他のビューでonClickイベントがトリガーされないという考え方です。これにより、偽のクリックを防ぎます。

于 2011-04-08T18:16:43.403 に答える
1

私は実際に「簡単な」方法を取り、現在どのボタンがホバーされているかを検出できる座標計算を使用ACTION_DOWNしてonTouch メソッドでボタンを使用しました。13個のボタンでラグフリーです。ACTION_MOVEevent.getX()event.getY()

于 2011-12-18T11:04:24.503 に答える