0
我想調用函數(如果用戶未觸及另一個視圖10秒,關閉一個小部件)。 可觸摸的觀點有聽衆喜歡處理程序刪除回調,並再次投入ACTION_UP
@Override
public boolean onTouchEvent(MotionEvent event) {
int x = (int) event.getX();
int y = (int) event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_MOVE:
if(handler != null){
handler.removeCallbacksAndMessages(null);
handler = null;
}
break;
case MotionEvent.ACTION_DOWN:
if(handler != null){
handler.removeCallbacksAndMessages(null);
handler = null;
}
break;
case MotionEvent.ACTION_UP:
startTime = Calendar.getInstance().get(
Calendar.MILLISECOND);
handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
isMenuVisible = false;
postInvalidate();
}
}, startTime + EXPANDED_PERIOD);
break;
}
return true;
}
我曾嘗試也只有一個成員處理程序,並避免創建起來。想法是當用戶做出行動等待10秒,如果不再觸摸然後關閉。 但它不關閉。當我在ACTION_DOWN和ACTION_MOVE中移除時,即使我觸摸視圖,移除它也會關閉。如何解決這個問題?