这几天一直在做视频播放器,其中要让状态栏和媒体控制器,出现后不点击屏幕的话,5秒后自动消失,这里要用到延时操作
第一种方法
private void noshow(){ new Handler().postDelayed(new Runnable(){ if(isShow()){//这是我需要的一个判断 down();//这是我需要执行的一个动画 getActivity().getWindow().addFlags(WindowManager.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); } },5000);}
但是这个第一种方法会有一个问题,就是多次点击,第一次这个可能在第二次isshow为真时执行
第二种方法
就是通过handler延时发送消息
在每次点击的前先取消消息,再发送,这样如果有前次的消息还没有发送,那么就直接取消,发送这次的
mHandler.removeMessages(UPDATE_NOSHOW);//取消消息mHandler.sendEmptyMessageDelayed(UPDATE_NOSHOW, 5000);//5秒后发送
然后在接收消息的地方做处理
private Handler mHandler = new Handler(){ public void handleMessage(android.os.Message msg) { case UPDATE_NOSHOW: if(isShow()){ down();//这是我需要执行的一个动画 getActivity().getWindow().addFlags(WindowManager.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); } break; default: break; }}