首先看一下完成的效果圖:
第一次做gif做的不好,效果體驗很差诱桂,看不出demo的效果
RecyclerView現(xiàn)在可以說是每一個項目必不可少的控件了洋丐,刪除對應RecyclerView的item也成為項目中很常見的需求。
前段時間和朋友聊天發(fā)現(xiàn)IOS的微信和Android的微信刪除也是不一樣的(可能是騰訊想追求各個系統(tǒng)最原汁原味的體驗吧)挥等,但是我很詫異友绝,想實現(xiàn)用Android仿ios的側(cè)滑刪除,我查了一些資料弄清了原理肝劲,寫了一個狗信 跟大家分享一下迁客。
核心思路: ?重寫onTouchEvent方法,讓RecyclerView的item布局通過 scrollTo辞槐、scrollBy掷漱、Scroller方法根據(jù)手指滑動到指定位置。
一榄檬、布局文件
超出屏幕的部分為頂置和刪除按鈕卜范。這樣才能給布局有側(cè)滑顯示按鈕的空間
二、onTouchEvent方法處理分析
? ? ? 1鹿榜、當手指按下的時候通過findChildViewUnder(x,y)方法獲取到點擊對象的視圖海雪,進一步獲取到頂置和刪除按鈕的長度,二者長度之和即為你滑動的最大距離舱殿。
? ? ?2奥裸、當手指向左滑的時候,通過scorllBy方法讓側(cè)滑內(nèi)容隨手指滑動的距離沪袭,緩緩滑動出來湾宙。
當滑動的距離大于最大滑動距離則讓item停留在最大距離 scrollTo
? ? ?3、當已處于劃出狀態(tài)的時候,點擊通過Scroller方法讓他自動滑回起始位置:
? 4侠鳄、根據(jù)滑動的距離和速度自定義你想要的狀態(tài)埠啃,VelocityTracker(檢測手指滑動速度)當然也可以不加,加了增加用戶體驗:
三畦攘、定義接口傳回點擊事件
四霸妹、Over
實現(xiàn)的思路其實很簡單,理清楚邏輯就可以了知押∧睦可以自己動手實現(xiàn)一下赶诊。
您覺得對您有幫助可以給我點個贊改淑。
demo(歡迎Star):github.com/ChaosOctopus/DogChat