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