2

タイトルに記載されている問題に直面しており、何か間違ったことをしているのだろうか、それとも Android の別の不具合なのだろうかと考えていました。問題の問題についてもう少し詳しく説明します。ダブルタップしてズームし、ピンチしてズームすることをサポートする画像のビューがありますが、1回の短いタップを使用してアクションバーに画像のタイトルを表示したいと思います(実際には getActionBar().show を呼び出します)。 () および hide())。また、画像を含むビューは ViewPager にあります (サポート ライブラリ v4 にあります)。私は現在、次のことを行っています: viewpager では、ピンチしてズームするときにページの変更を停止するためにこれを行います:

// view in the fragment is a reference to MyZoomableImageView
viewPager.setOnTouchListener(new OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
                 currentFragment.view.dispatchTouchEvent(event);
             if (currentFragment.view.downloaded && (!currentFragment.view.whole || event.getPointerCount() > 1)) {
                return true;
            } else {
                return false;
            }

        }
    });

そして私の customImageView で、このリスナーを使用してジェスチャー検出器を追加します。

public class GestureListener extends GestureDetector.SimpleOnGestureListener {

    @Override
    public boolean onDoubleTap(MotionEvent e) {
                    Log.d(TAG, "DOUBLE");
        zoom();
        return true;
    }


    @Override
    public boolean onSingleTapConfirmed(MotionEvent e) {
                Log.d(TAG, "SINGLE");
            Activity a = ((Activity) context);
            ActionBar action = a.getActionBar();
            if (action.isShowing()) {
                action.hide();
            } else {
                action.show();
            }
        }
        return true;
    };

誰が私が間違っているのか、ダブルタップ後にSINGEとDOUBLEの両方のメッセージが記録されるのはなぜですか.

PS.イベントリスナー間の時間差を使用してこれを解決しました if (!((System.currentTimeMillis() - start) < 500)) のようなものを呼び出しますが、これは間違っていると感じ、適切な方法があると思いますこれを行う。

4

2 に答える 2

2

私は間違っている可能性があり、これを確認する必要があります。ただし、OnSingleTapConfirmed()Android が 1 回のタップが発生したことを確認した場合にのみ消費されます (多くの場合、これには時間がかかります)。OnSingleTapUp()使ったほうがうまくいくと思います。

http://developer.android.com/reference/android/view/GestureDetector.SimpleOnGestureListener.htmlから

public boolean onSingleTapConfirmed(MotionEvent e)

シングルタップが発生したときに通知されます。

onSingleTapUp(MotionEvent) とは異なり、これは、ユーザーの最初のタップの後にダブルタップ ジェスチャにつながる 2 番目のタップが続いていないことを検出器が確信した後にのみ呼び出されます。

于 2013-06-26T14:40:36.987 に答える
0

あなたが持っている可能性はありますか

設定 / アクセシビリティ / 拡大ジェスチャー

オン?これらがオンになっている場合、ダブルタップは (ほとんどの場合) onSingleTapConfirmed() として報告されます。このバグも参照してください:

https://code.google.com/p/android/issues/detail?id=185872

于 2016-02-02T16:48:34.363 に答える