我遇到了標題中描述的問題,並想知道我是否做錯了什麼,或者這是另一個Android故障。以下是關於問題的更多信息: 我有一個圖像視圖,支持雙擊縮放和縮放縮放,但希望使用單個短按在操作欄中顯示圖像標題(實際調用getActionBar())。 show()和hide())。此外,帶有圖像的視圖位於ViewPager中(位於支持庫v4中)。我目前在做以下幾件事: 在我,以阻止網頁變化按捏變焦放大時,這樣做的viewpager:onSingleTapConfirmed()在onDoubleTap()之後引發
// 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.I確實解決了這個問題,使用事件監聽器之間的時間差異調用類似if(!((System.currentTimeMillis() - start)< 500))但是這只是感覺錯誤,我猜這裏有一個正確的方法來做到這一點。
(我知道這是一個古老的問題。)這是因爲發生的事情可能如何/在那裏你調用[GestureDetector#的onTouchEvent(MotionEvent)](HTTP://開發商.android.com /參考/機器人/視圖/ GestureDetector.html#的onTouchEvent(android.view.MotionEvent));如果,例如它會接收到相同的觸摸事件兩次,您將得到您描述的問題。你可以在你使用GestureListener的地方發佈你的代碼部分嗎? – justasm