gpt4 book ai didi

java - 处理程序删除回调并再次放入 ACTION_UP

转载 作者:行者123 更新时间:2023-12-01 13:42:22 24 4
gpt4 key购买 nike

我想调用函数(如果用户 10 秒内没有触摸另一个 View ,则关闭一个小部件)。可触摸 View 有监听器,例如

@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 中删除时,即使我触摸 View ,它也会关闭。如何解决这个问题?

最佳答案

您不应该在 postDelayed() 中添加 startTime

Read doc here.

请改用以下代码。

handler.postDelayed(***, EXPANDED_PERIOD);

关于java - 处理程序删除回调并再次放入 ACTION_UP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20624263/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com