可以通过Handler发送延迟消息来实现判断有无操作,实现原理就是,给Activity注册OnTouch事件,当用户触摸屏幕,手指离开的时候发送一个延迟消息。
以下为实现步骤及代码:
1.创建Handler实例
Handler handler = new Handler(){
public void handlerMessage(Message msg){
}
};
2.创建一个Runnable
private Runnable runnable = new Runnable() {
@Override
public void run() {
//用户5秒没操作了
}
};
3.给Activity注册Touch事件
public boolean onTouchEvent(android.view.MotionEvent event) {
switch(event.getAction()){
case MotionEvent.ACTION_DOWN:{ //手指下来的时候,取消之前绑定的Runnable
handler.removeCallbacks(runnable);
break;
}
case MotionEvent.ACTION_UP:{ //手指离开屏幕,发送延迟消息 ,5秒后执行
handler.sendEmptyMessageDelayed(0, 1000 * 5);
break;
}
}
return super.onTouchEvent(event);
};
希望对你有帮助!首先需要定义一个handler进行接收消息后的处理。然后在适当的时候发送消息,发送消息时需要用到延时,sendMessageDelayed(msg,delay),这里delay就是5000,并且在发送消息之前需要清除掉上一次发送时的delay值removeMessages()。
这样在onKeyDown函数里调用发消息的方法的话,表示在用户点击后5秒发送一个消息到handler,如果在5秒内又有操作的话,会先清除上次的计时再从零开始计时5秒。
所以handler收到消息时一定是用户5秒内无操作的时候,可以在handleMessage()里写上你需要的处理逻辑。
看你的手指在不在上面啊