タイトルに記載されている問題に直面しており、何か間違ったことをしているのだろうか、それとも 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)) のようなものを呼び出しますが、これは間違っていると感じ、適切な方法があると思いますこれを行う。