问题描述
- 在固定时间后关闭对话框
-
应用中包含一个对话框。我想要在x秒后自动关闭这个对话框。前提是如果这段时间用户对应用没有任何操作。
类似弹出的音量拖动条(两秒钟用户没有操作就自动关闭)。
不知道怎么实现?请高手指点,谢谢。
解决方案
// a dialog
final Dialog dialog = new Dialog(getApplicationContext());
// the code inside run() will be executed if .postDelayed() reaches its delay time
final Runnable runnable = new Runnable() {
@Override
public void run() {
dialog.dismiss(); // hide dialog
}
};
Button interaction = (Button) findViewById(R.id.bottom);
final Handler h = new Handler();
// pressing the button is an "interaction" for example
interaction.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
h.removeCallbacks(runnable); // cancel the running action (the hiding process)
h.postDelayed(runnable, 5000); // start a new hiding process that will trigger after 5 seconds
}
});
追踪用户动作
@Override
public void onUserInteraction(){
h.removeCallbacks(runnable); // cancel the running action (the hiding process)
h.postDelayed(runnable, 5000); // start a new hiding process that will trigger after 5 seconds
}
解决方案二:
用个TimerTask,秒数++,增加到2秒就关闭,同时检测touch事件,一有触摸就恢复秒数为0,两边协调一下
时间: 2024-10-02 07:04:36