首頁  >  文章  >  Java  >  Android實現沉浸式通知列通知列背景顏色跟隨app導航列背景顏色而改變

Android實現沉浸式通知列通知列背景顏色跟隨app導航列背景顏色而改變

高洛峰
高洛峰原創
2017-01-20 15:48:031904瀏覽

最近好多app都已經滿足了沉浸式通知欄, 所謂沉浸式通知欄:就是把用來導航的各種介面操作空間隱藏在以程式內容為主的情景中,透過相對「隱形」的介面來達到把使用者可視範圍最大化地用到內容本身。 

而最新安卓4.4系統的通知列沉浸模式就是在軟體開啟的時候通知列和軟體頂部顏色融為一體,這樣不僅可以使軟體和系統本身更加融為一體。 就是手機的通知欄的顏色不再是白色、黑色簡單的兩種了,本人用的小米4手機,米4手機中的自帶軟體都支援沉浸式通知欄, 舉個例子:大家可以看一下自己的qq,它的標題的背景顏色是藍色的,那麼通知欄也會變成藍色。之前可能不行,也是最近支援了。

不知道miui6什麼時候能統一支持一下。下面跟大家說一下怎麼讓自己的app支援沉浸式通知欄:

github上已經有大牛研究出來了,說一下怎麼實現的:

先下載SystemBarTint,將裡面的SystemBarTintManager.java拷貝出來放到自己的專案中, 在actitvity的onCreate()方法中判斷並設定通知欄顏色(顏色需依照軟體的titlebar的背景自己定義) 

程式碼一:

程式碼如下:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
setTranslucentStatus(true);
}
SystemBarTintManager tintManager = new SystemBarTintManager(this);
tintManager.setStatusBarTintEnabled(true);
tintManager.setStatusBarTintResource(R.color.statusbar_bg);//通知栏所需颜色

通知列的狀態

@TargetApi(19)
private void setTranslucentStatus(boolean on) {
Window win = getWindow();
WindowManager.LayoutParams winParams = win.getAttributes();
final int bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
if (on) {
winParams.flags |= bits;
} else {
winParams.flags &= ~bits;
}
win.setAttributes(winParams);
}

這樣就可以完美實現沉浸式通知列的。注意系統一定在4.4以上。小夥伴們趕快來試試吧。

代碼二:

通知欄(notification)背景顏色跟隨app導覽列(top title)背景顏色變化而變化。
這也叫沉浸式狀態欄,這是Google在android 4.4以上的系統提出的。
樣式如圖所示:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
}

然後在xml佈局文件中加入:

android:clipToPadding="false"
android:fitsSystemWindows="true"

更多Android實現沉浸式通知欄通知欄背景顏色跟隨app導航欄背景顏色而改變相關文章請關注PHP中文網!


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn