延時操做

這幾天一直在作視頻播放器,其中要讓狀態欄和媒體控制器,出現後不點擊屏幕的話,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;
    }
}
相關文章
相關標籤/搜索