这几天一直在作视频播放器,其中要让状态栏和媒体控制器,出现后不点击屏幕的话,5秒后自动消失,这里要用到延时操做java
第一种方法android
private void noshow(){ new Handler().postDelayed(new Runnable(){ if(isShow()){//这是我须要的一个判断 down();//这是我须要执行的一个动画 getActivity().getWindow().addFlags(WindowManager.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); } },5000); }
可是这个第一种方法会有一个问题,就是屡次点击,第一次这个可能在第二次isshow为真时执行ssh
第二种方法post
就是经过handler延时发送消息动画
在每次点击的前先取消消息,再发送,这样若是有前次的消息尚未发送,那么就直接取消,发送此次的
code
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; } }