先看看Demo效果圖:

如Demo所示,當向上滑動串列時,頂部的View顏色發生了漸變,從半透明變成了不透明,以及頂部View的布局與狀態欄融合在了一起,要實作上面的這個效果大致是:1.設定狀態欄透明或者半透明 ,2.監聽串列的滑動距離來控制View背景色的漸變,
1.沉浸式狀態欄(狀態欄透明設定)
1.1 第一種方法:可以通過直接修改狀態欄的屬性,必須在Android5.0以上才支持,也就是api21,所以要創建一個資源檔案夾,命名為:values-v21,然后在該檔案夾下新建styles.xml檔案,再在檔案里設定屬性,如下圖:

1.2 第二種方法:通過代碼來設定屬性,(推薦使用這種的方法,因為兼容性更好),如下圖代碼:

然后在Activity或者Fragment呼叫StatusbarUtils的statusBarColorTransparent方法即可實作沉浸式狀態欄,
2.RecyclerView、ScrollView的滾動監聽,通過判斷滾動的距離,改變頂部布局的樣式
2.1 通過RecyclerView實作
2.1.1 布局檔案:



通過上面的三個布局檔案,就能組合出下面這張原理圖:

當滑鼠拖動串列從A0點滾到A1點時(也就是輪播圖底部與標題欄底部重合時),標題由半透明的淺藍變成不透明的深藍的程序:

2.1.2 RecyclerView滾動監聽的代碼部分:

2.2通過ScrollView實作
2.2.1 布局檔案:

2.2.2 ScrollView滾動監聽的代碼部分:

總結與啟發:
1.RecyclerView滾動介面回呼的dy與ScrollView滾動介面回呼的scrollY是有區別的,RecyclerView是回傳每次滾動的距離,需要進行累加再If判斷;ScrollView是不需要累加,直接回傳總距離,直接進行If判斷了,
2.除了可以通過滾動監聽,改變狀態欄的顏色透明度外,還可以做很多,比如控制頂部某個view的顯示與隱藏,加上一些影片(入場影片,出場影片…)或者音效,或者插入gif圖等等,實作很炫酷的效果,
完整的demo地址:https://github.com/yanhuomatou2015/SlideGradientViewBg.git
今天的分享結束了,再見~
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/243873.html
標籤:其他
上一篇:C語言100題之第一題及變式:四個數字分別為1,2,3,4,能組成多少個互不相同且無重復數字的三位數,它們分別是什么?
