RecyclerView上拉隱藏Toolbar,下拉顯示

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

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




效果圖

分析

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

2.toolbar什麼時候滾動?從動圖中咱們能夠看到是用戶向下滑動必定的距離以後才消失,出現反之!注意:這邊的距離手咱們控制隨意ssh

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

代碼實現

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

代碼

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

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

3.到第二步爲止,就能夠正常的滑動隱藏啦!!(RecyclerView的Adaper本身寫啊!!)。要實現效果圖中的效果 咱們還差幾步!首先呢 ,咱們在佈局文件上取點巧,就是用FrameLayout做爲父控件佈局!看xml佈局文件:
xml佈局設計

你們能夠看到其實recyclerview仍是充滿屏幕的 那個toolbar只是咱們疊在上面的!OK,佈局文件取巧完了,咱們再來取巧下Adapter!你們應該知道在適配器中有這麼個方法: public int getItemViewType(int position) 就是根據位置不一樣返回不一樣的ViewType 固然這個ViewType是咱們本身定義 在通常的列表中咱們的item view都是相同的,可是有時候會有不相同的view在同一個列表中,此時我麼就用到這個方法啦!我如今的解決方案呢,就是在第一個View中添加一個和toolbar相同的view,那麼在正常的顯示的時候 列表的第一個能被用戶看到 而不是被toolbar遮擋住了!!!如今就請你們看一下適配器的代碼吧!3d

代碼

代碼

上面兩段代碼 就是適配器的所有代碼了 !很簡單的!你們一看就會拉!!!xml

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

歡迎你們評論啊!!!!!!!!!!!!!!!!!!!!!

相關文章
相關標籤/搜索