我基本都是寫一些小而美的實(shí)用東西(我也寫不了太高大上的東西--).今天這個(gè)一定可以讓頭疼這個(gè)功能的猿們?cè)僖膊挥煤ε隆那霸贚istview的時(shí)代像拖動(dòng)等改變item的效果都需要做各種回調(diào)及手勢(shì)處理等部蛇。大部分人都選擇去使用第三方庫。而RecyclerView出現(xiàn)后很多動(dòng)畫手勢(shì)效果都變的簡(jiǎn)單了許多抹腿。谷歌把很多常用的都進(jìn)行的封閉和接口回調(diào)(擴(kuò)展)。ok今天我們就開始進(jìn)入正題房蝉。先上效果圖
Step1
首先我們需要繼承
ItemTouchHelper.Callback
在里面處理一些事件處理及設(shè)置
- 這里復(fù)寫這兩個(gè)方法可以對(duì)事件做“開關(guān)”
- 這里的設(shè)置就看圖吧逞盆。不用解釋了
- 這里主要對(duì)拖動(dòng)時(shí)的一些事件做處理 比如有兩個(gè)viewType時(shí)不做任何效果處理及adapter數(shù)據(jù)處理等
- 這里可以在對(duì)滑動(dòng)舅逸、拖動(dòng)及停頓時(shí)做一些繪制 這里我對(duì)側(cè)滑時(shí)改變alpha
Step2
我們需要兩個(gè)回調(diào)來通知事件處理
Step3
在adapter中實(shí)現(xiàn)
onMoveAndSwipedListener
Step4
將我們自定義的Helper和RecyclerView進(jìn)行關(guān)聯(lián)即完成了簡(jiǎn)單的拖動(dòng)及側(cè)滑
在效果圖中 我們可以看到彪置。點(diǎn)擊右邊的圖標(biāo)是也是可以拖動(dòng)的惶桐。這是可以通過
ItemTouchHelper.startDrag(ViewHolder)
來
手動(dòng)開啟拖動(dòng)。當(dāng)然也有startSwipe(viewHolder)
方法
源碼:https://github.com/EasonHolmes/RecyclerView_Swipe_Move