• <kbd id="qyk40"></kbd>
  • <strike id="qyk40"></strike><samp id="qyk40"><pre id="qyk40"></pre></samp>

    ViewPage使用時(shí),最關(guān)鍵的代碼就是setOnPageChangeListener,傳入一個(gè)ViewPager.SimpleOnPageChangeListener對(duì)象。ViewPager.SimpleOnPageChangeListener是個(gè)接口,有三個(gè)方法,下面做介紹。
    注:ViewPager有兩個(gè)操作,一個(gè)是用手指滑動(dòng)翻頁,一個(gè)是直接setCurrentItem(一般用于點(diǎn)擊上面的tab直接setCurrentItem)。下面的方法介紹也會(huì)針對(duì)這兩種情況分別介紹。
    最后還會(huì)討論這三個(gè)方法相對(duì)執(zhí)行順序的問題。


    1.onPageSelected(int position):這個(gè)方法有一個(gè)參數(shù)position,代表哪個(gè)頁面被選中。當(dāng)用手指滑動(dòng)翻頁的時(shí)候,如果翻動(dòng)成功了(滑動(dòng)的距離夠長),手指抬起來就會(huì)立即執(zhí)行這個(gè)方法,position就是當(dāng)前滑動(dòng)到的頁面。如果直接setCurrentItem翻頁,那position就和setCurrentItem的參數(shù)一致,這種情況在onPageScrolled執(zhí)行方法前就會(huì)立即執(zhí)行。



    2.onPageScrolled(int position,float positionOffset, int positionOffsetPixels):這個(gè)方法會(huì)在屏幕滾動(dòng)過程中不斷被調(diào)用。
    有三個(gè)參數(shù),第一個(gè)position,這個(gè)參數(shù)要特別注意一下。當(dāng)用手指滑動(dòng)時(shí),如果手指按在頁面上不動(dòng),position和當(dāng)前頁面index是一致的;如果手指向左拖動(dòng)(相應(yīng)頁面向右翻動(dòng)),這時(shí)候position大部分時(shí)間和當(dāng)前頁面是一致的,只有翻頁成功的情況下最后一次調(diào)用才會(huì)變?yōu)槟繕?biāo)頁面;如果手指向右拖動(dòng)(相應(yīng)頁面向左翻動(dòng)),這時(shí)候position大部分時(shí)間和目標(biāo)頁面是一致的,只有翻頁不成功的情況下最后一次調(diào)用才會(huì)變?yōu)樵撁妗?/font>
    當(dāng)直接設(shè)置setCurrentItem翻頁時(shí),如果是相鄰的情況(比如現(xiàn)在是第二個(gè)頁面,跳到第一或者第三個(gè)頁面),如果頁面向右翻動(dòng),大部分時(shí)間是和當(dāng)前頁面是一致的,只有最后才變成目標(biāo)頁面;如果向左翻動(dòng),position和目標(biāo)頁面是一致的。這和用手指拖動(dòng)頁面翻動(dòng)是基本一致的。
    如果不是相鄰的情況,比如我從第一個(gè)頁面跳到第三個(gè)頁面,position先是0,然后逐步變成1,然后逐步變成2;我從第三個(gè)頁面跳到第一個(gè)頁面,position先是1,然后逐步變成0,并沒有出現(xiàn)為2的情況。
    positionOffset是當(dāng)前頁面滑動(dòng)比例,如果頁面向右翻動(dòng),這個(gè)值不斷變大,最后在趨近1的情況后突變?yōu)?。如果頁面向左翻動(dòng),這個(gè)值不斷變小,最后變?yōu)?。
    positionOffsetPixels是當(dāng)前頁面滑動(dòng)像素,變化情況和positionOffset一致。


    3.onPageScrollStateChanged(int state):這個(gè)方法在手指操作屏幕的時(shí)候發(fā)生變化。有三個(gè)值:0(END),1(PRESS) , 2(UP) 。
    當(dāng)用手指滑動(dòng)翻頁時(shí),手指按下去的時(shí)候會(huì)觸發(fā)這個(gè)方法,state值為1,手指抬起時(shí),如果發(fā)生了滑動(dòng)(即使很小),這個(gè)值會(huì)變?yōu)?,然后最后變?yōu)? 。總共執(zhí)行這個(gè)方法三次。一種特殊情況是手指按下去以后一點(diǎn)滑動(dòng)也沒有發(fā)生,這個(gè)時(shí)候只會(huì)調(diào)用這個(gè)方法兩次,state值分別是1,0 。
    當(dāng)setCurrentItem翻頁時(shí),會(huì)執(zhí)行這個(gè)方法兩次,state值分別為2 , 0 。


    三個(gè)方法的執(zhí)行順序?yàn)椋河檬种竿蟿?dòng)翻頁時(shí),最先執(zhí)行一遍onPageScrollStateChanged(1),然后不斷執(zhí)行onPageScrolled,放手指的時(shí)候,直接立即執(zhí)行一次onPageScrollStateChanged(2),然后立即執(zhí)行一次onPageSelected,然后再不斷執(zhí)行onPageScrollStateChanged,最后執(zhí)行一次onPageScrollStateChanged(0)。
    其它的情況由這個(gè)可以推出來,不再贅述。

    穩(wěn)定

    產(chǎn)品高可用性高并發(fā)

    貼心

    項(xiàng)目群及時(shí)溝通

    專業(yè)

    產(chǎn)品經(jīng)理1v1支持

    快速

    MVP模式小步快跑

    承諾

    我們選擇聲譽(yù)

    堅(jiān)持

    10年專注高端品質(zhì)開發(fā)
    亚洲国产精品国自产电影| 精品一区二区三区电影| 亚洲av永久无码精品天堂久久| 成人区精品人妻一区二区不卡| 中文精品无码中文字幕无码专区| 日本精品视频在线观看| 狠狠色婷婷久久综合频道日韩| 98久久人妻无码精品系列蜜桃 | 国农村精品国产自线拍| 亚洲精品国精品久久99热| 日韩视频在线免费观看| 国产在线观看91精品不卡| 精品国产一区二区三区香蕉事| 亚洲高清国产拍精品熟女| 国产精品1024永久免费视频| 亚洲精品中文字幕乱码| 久久精品99久久香蕉国产色戒| 日本aⅴ精品中文字幕| 无码人妻精品一区二区三| 国产福利精品一区二区| 亚洲国产精品特色大片观看完整版| 亚洲精品无码mv在线观看网站 | 久久夜色精品国产尤物| 久久se精品一区精品二区| 亚洲精品无码久久久久| 国产在线精品免费aaa片| 国内精品久久久久久99| 亚洲国产一成人久久精品| 亚洲国产另类久久久精品黑人| 最新国产乱人伦偷精品免费网站| 青青热久久久久综合精品| 99精品国产高清一区二区三区| 免费精品久久天干天干| 国语精品一区二区三区| 九九热在线视频观看这里只有精品| 久久97精品久久久久久久不卡| 国产精品偷伦视频观看免费| 国产精品无码A∨精品影院| 国产成人无码精品一区二区三区| 久久精品免视看国产成人| 日韩精品无码一区二区三区不卡|