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

進階的玄武發表於2015-06-18
版權宣告:本文為博主原創文章,轉載請標明出處。 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.   
  5.         SystemBarTintManager tintManager = new SystemBarTintManager(this);  
  6.         tintManager.setStatusBarTintEnabled(true);  
  7.         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.         }  
  11.         win.setAttributes(winParams);  
  12.     }

複製程式碼

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


相關文章