天天看點

Android實作沉浸式通知欄,通知欄可以根據app的顔色可改變啦

版權聲明:本文為部落客原創文章,轉載請标明出處。 https://blog.csdn.net/lyhhj/article/details/46547273

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

而最新

安卓

4.4系統的通知欄沉浸模式就是在軟體打開的時候通知欄和軟體頂部顔色融為一體,這樣不僅可以使軟體和系統本身更加融為一體。就是手機的通知欄的顔色不再是白色、黑色簡單的兩種了,本人用的小米4手機,米4手機中的自帶軟體都支援沉浸式通知欄,

舉個例子:大家可以看一下自己的qq,它的标題的背景顔色是藍色的,那麼通知欄也會變成藍色。之前可能不行,也是最近支援了。

網上有支援沉浸通知欄的軟體,大家可以下載下傳下來讓自己的手機上所有的軟體都支援,但是效果好像不太好。下面是教程:

http://www.jb51.net/shouji/289496.html

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

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

首先下載下傳SystemBarTint,将裡面的SystemBarTintManager.java拷貝出來放到自己的項目中,

在actitvity的onCreate()方法中判斷并設定通知欄顔色(顔色需要根據軟體的titlebar的背景自己定義)

代碼如下:

  1. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {  
  2.             setTranslucentStatus(true);  
  3.         }  
  4.         SystemBarTintManager tintManager = new SystemBarTintManager(this);  
  5.         tintManager.setStatusBarTintEnabled(true);  
  6.         tintManager.setStatusBarTintResource(R.color.statusbar_bg);//通知欄所需顔色  

複制代碼

下面是設定通知欄的狀态

  1. @TargetApi(19)   
  2.     private void setTranslucentStatus(boolean on) {  
  3.         Window win = getWindow();  
  4.         WindowManager.LayoutParams winParams = win.getAttributes();  
  5.         final int bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;  
  6.         if (on) {  
  7.             winParams.flags |= bits;  
  8.         } else {  
  9.             winParams.flags &= ~bits;  
  10.         win.setAttributes(winParams);  
  11.     }

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

繼續閱讀