我想调用函数(如果用户没有触摸另一个视图10秒钟,则关闭一个小部件)。 可触摸视图有听众喜欢
@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中删除时,即使我触摸视图也会将其关闭。怎么解决这个问题?
答案 0 :(得分:1)