如果在Activity的layout中放一張圖片,并且設置圖片的寬和高為match,效果如下:
接下來隱藏掉狀態欄和actionbar,在activity中加入以下代碼:
<code>
setContentView(R.layout.activity_main);
View decorView = getWindow().getDecorView();
int option = View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(option);
ActionBar actionBar = getSupportActionBar();
actionBar.hide();
</code>
decorview:
DecorView為整個Window界面的最頂層View。 二、DecorView只有一個子元素為LinearLayout。代表整個Window界面,包含通知欄,標題欄,內容顯示欄三塊區域。 三、LinearLayout里有兩個FrameLayout子元素。
<code>
int option = View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(option)
</code>
可以設置頁面全屏
<code>
ActionBar actionBar = getSupportActionBar();
actionBar.hide();
</code>
設置全屏看不出來效果。。要去掉actionbar。
之后的顯示效果:
要實現顯示狀態欄的沉浸模式效果:
<code>
if (Build.VERSION.SDK_INT >= 21) {
View decorView = getWindow().getDecorView();
int option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
decorView.setSystemUiVisibility(option);
getWindow().setStatusBarColor(Color.TRANSPARENT);
}
ActionBar actionBar = getSupportActionBar();
actionBar.hide();
</code>
替換了flag并且設置狀態欄的顏色為透明即可(只能在5.0以上生效)顯示效果:
隱藏底部導航欄也是替換flag就可以:
<code>
View decorView = getWindow().getDecorView();
int option = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(option);
ActionBar actionBar = getSupportActionBar();
actionBar.hide();
</code>
顯示效果:
但是只要點擊一次以后就會變為:
現在實現透明的狀態欄和透明的底部導航欄:
<code>
if (Build.VERSION.SDK_INT >= 21) {
View decorView = getWindow().getDecorView();
int option = View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE; decorView.setSystemUiVisibility(option);
getWindow().setNavigationBarColor(Color.TRANSPARENT); getWindow().setStatusBarColor(Color.TRANSPARENT);
}
ActionBar actionBar = getSupportActionBar();actionBar.hide();
</code>
顯示效果:
真正的沉浸模式:
重寫activity的onWindowFocusChanged()方法即可
<code>
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if (hasFocus && Build.VERSION.SDK_INT >= 19) {
View decorView = getWindow().getDecorView();
decorView.setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY); } }
</code>
顯示效果:
點擊屏幕并不會顯示出來狀態欄和底部的導航欄,只要向下拉不可見的狀態欄或者向上拉不可見的導航欄就可以顯示出來