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

zhouyao888 8年前發布 | 33K 次閱讀 Android開發 移動開發

來自: http://blog.csdn.net//lyhhj/article/details/46547273


最近好多app都已經滿足了沉浸式通知欄,</span> 所謂沉浸式通知欄:就是把用來導航的各種界面操作空間隱藏在以程序內容為主的情景中,通過相對“隱形”的界面來達到把用戶可視范圍最大化地用到內容本身上。</span></span>
而最新安卓4.4系統的通知欄沉浸模式就是在軟件打開的時候通知欄和軟件頂部顏色融為一體,這樣不僅可以使軟件和系統本身更加融為一體。</span></span> 就是手機的通知欄的顏色不再是白色、黑色簡單的兩種了,本人用的小米4手機,米4手機中的自帶軟件都支持沉浸式通知欄,</span>
舉個例子:大家可以看一下自己的qq,它的標題的背景顏色是藍色的,那么通知欄也會變成藍色。之前可能不行,也是最近支持了。</span>
網上有支持沉浸通知欄的軟件,大家可以下載下來讓自己的手機上所有的軟件都支持,但是效果好像不太好。</span> 下面是教程:</span>
http://www.jb51.net/shouji/289496.html</span>

</span>不知道miui6什么時候能統一支持一下。下面給大家說一下怎么讓自己的app支持沉浸式通知欄:</span>

</span>
github上已經有大牛研究出來了,說一下怎么實現的:</span>




首先下載SystemBarTint,將里面的SystemBarTintManager.java拷貝出來放到自己的項目中,</span>
在actitvity的onCreate()方法中判斷并設置通知欄顏色(顏色需要根據軟件的titlebar的背景自己定義)</span>
代碼如下:</span>

  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);//通知欄所需顏色  
  8. </ol> </div> 復制代碼 </div> 下面是設置通知欄的狀態

    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.     }
    13. </ol> </div> 復制代碼 </div> 這樣就可以完美實現沉浸式通知欄的。注意系統一定是在4.4以上。小伙伴們趕快來試一下吧。

     本文由用戶 zhouyao888 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
     轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
     本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!