1,ViewPager的onPageChangeListener有三個方法分別是
onPageScrolled(int position, float positionOffset, int positionOffsetPixels)
onPageSelected(int position)
onPageScrollStateChanged(int state)
2,當ViewPager頁面可見時,執行
onPageScrolled(int position, float positionOffset, int positionOffsetPixels),此時三個參數的值分別是position=0,positionOffset=0.0,positionOffsetPixels=0
3,當按住頁面並往左拖動並且手指未鬆開時,先執行onPageScrollStateChanged(int state),此時,state=1,
然後執行onPageScrolled(int position, float positionOffset, int positionOffsetPixels),此時該方法的三個參數分別爲position=0,positionOffset從0.0開始逐漸增加但始終小於1,positionOffsetPixels從0開始增加,但始終小於屏幕寬度的分辨率
4,繼續第三條的狀態,如果positionOffset<0.6時鬆開手指,此時還是回到原來的界面,而不顯示新的界面,反之將顯示新的界面,
5,當拖動後鬆開手指,無論是否顯示新的界面,將先執行onPageScrollStateChanged(int state),此時,state=2,然後不斷執行onPageScrolled(int position, float positionOffset, int positionOffsetPixels)
5.1 如果滑動到新的界面,將執行onPageSelected(int position),postion將被賦予當前頁面的索引,然後不斷 執行onPageScrolled(int position, float positionOffset, int positionOffsetPixels)
當positionOffset和positionOffsetPixels的值都變爲0時,執行onPageScrollStateChanged,
此時state=0
5.2 如果回到當前的頁面,將首先不斷執行
onPageScrolled(int position, float positionOffset, int positionOffsetPixels)
當positionOffset和positionOffsetPixels的值都變爲0時,執行onPageScrollStateChanged,
此時state=0