有關ViewPager這個控件呢。吶,ViewPager是一個允許使用者左右滑動數據頁面的布局管理器,我們可以通過適配器(pagerAdapter)來管理要顯示的頁面,PagerAdapter是用于"將多個頁面填充到ViewPager"的適配器的一個基類,大多數情況下呢,我們更傾向于自定義一個繼承了PagerAdapter并且相對具體一些的一個適配器來使用。
在繼承PagerAdapter基類之后,需要重寫四個方法
1.instantiateitem(ViewGroup,int);
instantiateItem(ViewGroup, int)? // 當要顯示的圖片可以進行緩存的時候,會調用這個方法進行顯示圖片的初始化,我們將要顯示的ImageView加入到ViewGroup中,然后作為返回值返回即可
2.detroyitem(VeiwGroup,object,int);
destroyItem(ViewGroup, int, Object) // PagerAdapter只緩存三張要顯示的圖片,如果滑動的圖片超出了緩存的范圍,就會調用這個方法,將圖片銷毀
3.getCount();
getCount() // 獲取要滑動的控件的數量
4.isViewFromObject(View,Object);
isViewFromObject(View, Object)? // 來判斷顯示的是否是同一張圖片,這里我們將兩個參數相比較返回即可
其中后兩個方法是在繼承之后自動重寫,然而前兩個方法則需要在進行該操作時手動重寫。
ViewPager不直接處理每一個視圖而是將各個視圖與一個鍵相聯系起來,這個鍵呢,是我們常見的一個東西,如圖所示:
就是上圖中黑色箭頭標記出來的小圓點,它就是這個鍵了,其中isViewFromObject(View,Object)方法就是代表著當前頁面是否與給定的鍵相關聯的一個方法,如果相關聯,就代表對應的是同一個View返回true,否則返回false。
ViewPager在處理滑動事件的時候需要實現OnPageChangerListener接口,實現這個接口我們也需要重寫三個方法
onpageScrollStateChanged
onpageScrolled
onpageSelected
其中onpageScrollStateChanged(int arg0)方法是在狀態改變的時候使用,它的參數arg0有三種狀態(0,1,2)。當arg==1時代表正在滑動,arg==2是代表滑動結束,arg==0代表什么都沒做。當我們的頁面開始滑動時,三種狀態的變化順序為(1,2,0)。
onpageScrolled(nt arg0,float arg1,int arg2)方法是在當頁面滑動的時候才會調用此方法,在滑動停止前,此方法會被一直調用,其中的三個參數分別代表:
arg0:當前頁面,及你點擊滑動的頁面;
arg1:當前頁面偏移的百分比;
arg2:當前頁面偏移的像素位置
最后,onpageSelected(int arg0)方法是在頁面跳轉完之后得到調用,arg0是你當前選中的頁面的position(位置編號)。
在大部分時候,項目中的ViewPager會和Fragment同時出現,每一個ViewPager的頁面就是一個Fragment(微信主頁)?Android提供了一些專門的適配器來讓ViewPager與Fragment一起工作,也就是FragmentPagerAdapter與FragmentStatePagerAdapter。
FragmentPagerAdapter繼承自PagerAdapter,主要用來展示多個Fragment頁面,并且每一個Fragment都會被保存在fragmentmanager中。
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。