轉載請註明地址: http://write.blog.csdn.net/postedit?ref=toolbar&ticket=ST-115185-XsUMM5H1LCzIubq12aQ6-passport.csdn.net 謝謝!
對於動態顯示和隱藏狀態欄,寫Demo中可能很容易就實現了,但是在項目中就不一定了,因爲牽扯的方面可能太多了,下面說說我踩的那些坑:
1,必須保證當前ac繼承的ac沒有問題,有人說不要使用AppCompatAc,但我試了下是沒有問題的,還有就是你要保證你繼承的ac裏面沒有做一個全屏什麼的判斷,具體自己看吧(lz就是在這裏被坑的........)
2,在Android 4.1 之後,View有方法setSystemUiVisiability(params)可以設置狀態欄的顯示隱藏,但是使用這個方法有一個bug就是當你手動把狀態欄觸摸下來後,它是會一直顯示的咯,就是你的隱藏失效了.至於params請自行百度哈,很多博客都有詳細描敘,具體代碼如下:
public void onClick(View view) {
switch (view.getId()) {
case R.id.bt1:
bt1.setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN);
break;
case R.id.bt2:
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
break;
}
}
3,設置窗口來隱藏狀態欄,使用這個的好處就是當你手動觸摸屏幕把狀態欄顯示出來後,大約兩秒狀態欄還是會自動隱藏起來,完美解決上面那方法的不足之處,具體代碼如下:
//隱藏狀態欄
activity.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
// 顯示狀態欄
activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);