Viewpager OnPageChangeListener 滑動(dòng)事件講解
今天在做項(xiàng)目的時(shí)候,由于要處理viewPager頁(yè)面滑動(dòng)的事件,所以對(duì)其進(jìn)行了一個(gè)小小的研究
首先ViewPager在處理滑動(dòng)事件的時(shí)候要實(shí)現(xiàn)OnPageChangeListener接口,實(shí)現(xiàn)三個(gè)方法:
- onPageScrollStateChanged
- onPageScrolled
- onPageSelected
onPageScrollStateChanged(int state)
此方法是在狀態(tài)改變的時(shí)候調(diào)用,其中state這個(gè)參數(shù)有三種狀態(tài):
- SCROLL_STATE_DRAGGING(1)表示用戶手指“按在屏幕上并且開(kāi)始拖動(dòng)”的狀態(tài)(手指按下但是還沒(méi)有拖動(dòng)的時(shí)候還不是這個(gè)狀態(tài),只有按下并且手指開(kāi)始拖動(dòng)后log才打出。)
- SCROLL_STATE_IDLE(0)滑動(dòng)動(dòng)畫做完的狀態(tài)。
- SCROLL_STATE_SETTLING(2)在“手指離開(kāi)屏幕”的狀態(tài)。
一個(gè)完整的滑動(dòng)動(dòng)作,三種狀態(tài)的出發(fā)順序?yàn)椋?,2,0),當(dāng)viewPager狀態(tài)改變時(shí)候的代碼塊:
Mou icon
打印結(jié)果:
Mou icon
onPageScrolled(int position, float positionOffset, int positionOffsetPixels)
當(dāng)頁(yè)面在滑動(dòng)的時(shí)候會(huì)調(diào)用此方法,在滑動(dòng)被停止之前,此方法回一直得到調(diào)用。其中三個(gè)參數(shù)的含義分別為:
- position :當(dāng)前頁(yè)面,即你點(diǎn)擊滑動(dòng)的頁(yè)面(從A滑B,則是A頁(yè)面的position。官方說(shuō)明:Position index of the first page currently being displayed. Page position+1 will be visible if positionOffset is nonzero.)
- positionOffset:當(dāng)前頁(yè)面偏移的百分比
- positionOffsetPixels:當(dāng)前頁(yè)面偏移的像素位置
頁(yè)面滾動(dòng)時(shí)侯log演示如下:
Mou icon
日志打印:
Mou icon
onPageSelected(int position)
此方法是頁(yè)面跳轉(zhuǎn)完后得到調(diào)用,position是你當(dāng)前選中的頁(yè)面的Position(位置編號(hào))(從A滑動(dòng)到B,就是B的position)