Android沉浸式狀態列 + scrollView頂部伸縮 + actionBar漸變
最近需求要做一個拉縮漸變的狀態列,往上拉的時候,需要顯示actionBar,這個過程是漸變的,頂部的圖片背景能實現拉縮,並且還要實現狀態列沉浸式
效果如如下:

- 實現狀態列的透明化
- 實現ScrollView的拉縮
- 實現ActionBar的漸變
實現
1、至於試下實現ScrollView的拉縮這個效果很簡單重寫onTouchEvent方法,利用滑動的垂直方向的距離,然後在設定圖片的大小

image.png
這裡要注意的是:在手指釋放的時候需要進行恢復圖片的高度
如果有興趣的話可以加入Android工程師交流Q群:752016839 主要針對Android開發人員提升自己,突破瓶頸,相信你來學習,會有提升和收穫。在這個群裡會有你所需要的內容。
2、ActionBar的透明度很簡單了,在onScrollChanged裡進行操作即可

image.png
3、至於沉浸式狀態列就很簡單了,之前寫過帖子
這裡我簡單的封裝了一些工具類

image.png
在相應的Activity或基類執行這段程式碼就ok了。
可見在4.4到5.0的系統、5.0及以上系統的處理方式有所不同
除了這種程式碼修改額方式外,還可以通過主題來修改,需要在values、values-v19、values-v21目錄下分別建立相應的主題:

image.png
給相應Activity或Application設定該主題就ok了。
兩種方式根據需求選擇就好了,到這裡我們就完成了第一步,將狀態列透明化了。
完成了第一步,我們開始給狀態列加上想要的色彩吧!
在values、values-v19目錄新增如下尺寸:

關於25dp,在有些系統上可能有誤差,這裡不做討論!
2.1 頁面頂部使用Toolbar(或自定義title) 一般情況狀態列的顏色和Toolbar的顏色相同,既然狀態列透明化後,佈局頁面延伸到了狀態列,何不給Toolbar加上一個狀態列高度的頂部padding呢:

image.png
效果圖下:

image

image.png