RecyclerView上拉隱藏Toolbar,下拉顯示


RecyclerView下拉隱藏Toolbar,上拉顯示效果圖

先說個事:最近我准備做個開源的博客園android客戶端!符合Google最新的material design設計風格的!不知道有沒有小伙伴願意和我一起做呢?如果有願意的,請私信我哦!!!!我還打算每天直播我們工作的進度,代碼,以及BUG等!!


效果圖

分析

1.首先看toolbar的滾動,肯定用屬性動畫(沒得說)

2.toolbar何時滾動?從動圖中我們可以看到是用戶向下滑動一定的距離之后才消失,出現反之!注意:這邊的距離手我們控制隨意

3.大家不知道注意了了沒,就是在toolbar完全隱藏的時候,我們的RecyclerView是完全顯示的,並沒有距離頂部一個toolbar的高度!!這個地方實現有點取巧 我會在下面的代碼中說明!!

代碼實現

1.首先來為toolbar實現隱藏和顯示的兩個動畫,在這里 我就定義兩個函數來分別實現這兩個動畫。代碼過於簡單我就直接上代碼了:

代碼

2.現在我們只要監聽RecyclerView的滾動事件來控制toolbar的顯示與隱藏就行了!。我簡單的來說一下思路:當用戶向下滑動一定的距離(這個距離我們人為控制),當滑動的距離超過這個距離且當前的toolbar是顯示的,就隱藏!反之顯示。但是在這里我們要注意下這個問題:就是這個滑動距離怎么算?
我們先來看一下recyclerview的滑動監聽函數RecyclerView.OnScrollListener他有兩個回調函數 我們只要關注其中的一個就行啦!就是這個:
函數
其中dy就表示垂直方向的滑動距離!了解玩這個之后 我就來看代碼

代碼
在這里,我首先是判斷是了當前頁面的第一個顯示的是否是列表中的第一個,如果是就顯示toolbar!另外我還定義了兩個變量
isshow和disy,分別表示toolbar是否顯示和滑動的總距離。還有個細節要注意下 就是當你觸發到某種狀態之后 disy一定要清零啊!!切記切記!!!另外,這個disy的總滑動距離的計算方式也要注意下!

3.到第二步為止,就可以正常的滑動隱藏啦!!(RecyclerView的Adaper自己寫啊!!)。要實現效果圖中的效果 我們還差幾步!首先呢 ,我們在布局文件上取點巧,就是用FrameLayout作為父控件布局!看xml布局文件:
xml布局

大家可以看到其實recyclerview還是充滿屏幕的 那個toolbar只是我們疊在上面的!OK,布局文件取巧完了,我們再來取巧下Adapter!大家應該知道在適配器中有這么個方法: public int getItemViewType(int position) 就是根據位置不同返回不同的ViewType 當然這個ViewType是我們自己定義 在一般的列表中我們的item view都是相同的,但是有時候會有不相同的view在同一個列表中,此時我么就用到這個方法啦!我現在的解決方案呢,就是在第一個View中添加一個和toolbar相同的view,那么在正常的顯示的時候 列表的第一個能被用戶看到 而不是被toolbar遮擋住了!!!現在就請大家看一下適配器的代碼吧!

代碼

代碼

上面兩段代碼 就是適配器的全部代碼了 !很簡單的!大家一看就會拉!!!

好了 今天就講到這兒吧!!!

歡迎大家評論啊!!!!!!!!!!!!!!!!!!!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM