Android 4.4版本加入了沉浸式者這項功能,相信大家手中的安卓機也早已是Android 4.4甚至更高版本。越來越多的應用實現了沉浸式狀態欄這一個效果。 我們先看一個Demo,來熟悉一下沉浸式。 在圖中可以清晰地看到,我們項目的頂部和手機的狀態欄是融合在一起。這樣表現得非常美觀,自然。 其實, ...
Android 4.4版本加入了沉浸式者這項功能,相信大家手中的安卓機也早已是Android
4.4甚至更高版本。越來越多的應用實現了沉浸式狀態欄這一個效果。
我們先看一個Demo,來熟悉一下沉浸式。
在圖中可以清晰地看到,我們項目的頂部和手機的狀態欄是融合在一起。這樣表現得非常美觀,自然。
其實,實現這一效果並非難事。
網上關於沉浸式的例子數不勝數,但是不是誤導新人,就是垃圾代碼太多。
話不多說,來看看我是怎樣實現這一個效果的。
首先我們在要實現這一效果的佈局文件(e.g. example.xml)對應的Activity裡面加入
下麵代碼。考慮到谷歌對Android 5.0以後的版本進行了大改。所以我們要在代碼里進
行判
斷,Android 4.4版本的沉浸式和Android 5.0以後版本的沉浸式是不太一樣的。
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // API >= 4.4 or API < 5.0 全透明狀態欄 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); } // API >=5.0 全透明實現 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { Window window = getWindow(); window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE); window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); window.setStatusBarColor(Color.TRANSPARENT); } }
然後我們在佈局文件(e,g. example.xml)下添加如下代碼
<RelativeLayout...> ------> 最外層 ... </RelativeLayout> ------> 最外層 在最外層裡面加上 android:clipToPadding="true" android:fitsSystemWindows="true"
至此,我們的沉浸式就實現了。代碼量很小,也很容易理解。
更多編程知識請關註,我的新浪微博: @吳天昊TnnoWu