Viewpager OnPageChangeListener 滑動(dòng)事件講解

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)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容