延时操做

这几天一直在作视频播放器,其中要让状态栏和媒体控制器,出现后不点击屏幕的话,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;
    }
}
相关文章
相关标签/搜索