Android App 沉浸式狀態欄解決方案

wnai9891 8年前發布 | 466K 次閱讀 Android開發 移動開發

來自: http://laobie.github.io/android/2016/02/15/status-bar-demo.html


伴隨著 Android 5.0 發布的 Material Design,讓 Android 應用告別了以前的工程師審美,迎來了全新的界面,靈動的交互,也讓越來越多的 App 開始遵從 material design 設計原則,不再是以前拿著iOS設計稿,做著Android開發。本文就其中的沉浸式狀態欄這一特性,描述其兼容到4.4的實現,以及一些使用中的小細節。

前言

在4.4之前狀態欄一直是黑色的,在4.4中帶來了 windowTranslucentStatus 這一特性,因此可以實現給狀態欄設置顏色,如下圖所示,狀態欄顏色不再是黑色,而是可以定制的顏色。

國內將狀態欄變色叫做沉浸式狀態欄,時間久了,叫的人多了,大家就不再深究,默認了這種叫法。

可以在知乎上看到關于這個問題的討論:為什么在國內會有很多用戶把「透明欄」(Translucent Bars)稱作 「沉浸式頂欄」?

需要解決的問題

  1. 4.4及其以上都是可以實現沉浸式狀態欄效果的,5.0及其以上可以直接在主題中設置顏色,或者調用 Window 類中的 setStatusBarColor(int color) 來實現,這兩種方式在5.0上都比較簡單,但是如何兼容到4.4呢?
  2. 圖片背景的頁面,怎樣讓狀態欄透明或者半透明(效果如下)?
  3. 使用 DrawerLayout 時,主界面實現沉浸狀態欄同時,怎樣保證抽屜視圖也能延伸到狀態欄(如下圖所示),且兼容到4.4?
  4. </ol>

    以上就是本文要解決的問題,下面給出解決方案。

    解決方案

    1. 給狀態欄設置顏色

    思路是: