2

私のバージョンの OnTouchListener (および onTouch メソッド) を定義してすべてのボタンにアタッチすることにより、アプリにマルチタッチ ボタンを実装しました。リスナーの標準的な動作に属すると思われる 1 つのことを除いて、すべてが完全に機能します。長いので、コードを掲載せずに説明できることを願っています。

ボタンをクリックしたままにすると、期待どおりに onTouch メソッドが呼び出され、アプリケーションはボタンがクリックされたことを認識します。2 つ目のボタンをクリックしたままにすると、期待どおりに onTouch メソッド (最初のボタンに関連する) が呼び出され、アプリケーションはボタンがクリックされたことを認識します。

2 番目のボタンだけを離すと、最初のボタンの指が完全に静止したままになると、onTouch イベントは呼び出されず、2 番目のボタンは論理的に解放されません。onTouch メソッドは、最初の指を 1 ピクセル以上動かした場合にのみ呼び出され、その瞬間にのみ 2 番目のボタンが離されます。

指を正確に同じ位置に 1 ミリ秒以上維持するのは非常に難しいことを私は知っています :-) が、時々起こることがあります..この動作の理由を理解するために、しばらく時間を費やす必要がありました。解決策が見つかりません。この問題を回避するための提案はありますか? どうもありがとうございました。

4

1 に答える 1

0

onTouch内でこれを試してください

PointF curr = new PointF(event.getX(), event.getY());
switch (event.getAction()) {
    case MotionEvent.ACTION_UP:
        float xDiff = Math.abs(curr.x-start.x);
        float yDiff = Math.abs(curr.y-start.y);
        if (xDiff < 5f && yDiff < 5f) {
        //insert here your code when button is click
        }
     break;

プッシュの不正確さを避けるのに役立ちます。

于 2012-06-02T20:48:07.717 に答える