• <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)翻頁(yè),一個(gè)是直接setCurrentItem(一般用于點(diǎn)擊上面的tab直接setCurrentItem)。下面的方法介紹也會(huì)針對(duì)這兩種情況分別介紹。
    最后還會(huì)討論這三個(gè)方法相對(duì)執(zhí)行順序的問(wèn)題。


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



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


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


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

    穩(wěn)定

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

    貼心

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

    專業(yè)

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

    快速

    MVP模式小步快跑

    承諾

    我們選擇聲譽(yù)

    堅(jiān)持

    10年專注高端品質(zhì)開發(fā)
    • 返回頂部
    69国产精品视频免费| 国产亚洲精品福利在线无卡一 | 国产精品亚洲综合天堂夜夜| 国产69精品久久久久777| 久久99精品福利久久久| 99久久国产精品免费一区二区| 国产精品成人观看视频| 秋霞日韩一区二区三区在线观看 | 北条麻妃久久99精品| 国产成人久久精品二区三区| 精品视频免费在线| 日韩电影中文字幕在线网站| 日韩中文字幕在线不卡| 日韩人妻高清精品专区| 99久久精品国产第一页| 亚洲精品无码你懂的| 老汉精品免费AV在线播放| 国产精品视频一区二区噜噜| 97精品国产91久久久久久| 久久亚洲精品无码观看不卡| 国产精品一香蕉国产线看观看| 日韩精品无码久久一区二区三| 亚洲处破女AV日韩精品| 亚洲AV无码专区日韩| 国产亚洲蜜芽精品久久| 国产成品精品午夜视频| 国产精品午夜小视频观看| 国产精品漂亮美女在线观看| 精品久久久久国产| 国产精品无码翘臀在线观看| 揄拍成人国产精品视频| 国产精品毛多多水多| 国产精品自拍亚洲| 国产精品亚洲片在线花蝴蝶| 国产精品公开免费视频| 日韩视频无码日韩视频又2021| 日韩电影无码A不卡| 亚洲高清日韩精品第一区| 无码日韩精品一区二区三区免费| 日韩精品亚洲人成在线观看 | 中文国产成人精品久久一|