前言: ViewGroup可以實現很多功能,如簡單的頁面導航和頁面滑動等等。谷歌公司
為我們提供ViewGroup的API。谷歌公司推薦我們把ViewGroup和Fragment一起使,如果一起使用的話,
應該使用FragmentPagerAdapter和FragmentStatePagerAdapter來進行適配處理,在這里我們只看單
獨使用ViewGroup的情況,這時我們需要使用PagerAdapter
(一)至少要進行重寫的函數
1 public boolean isViewFromObject(View arg0, Object arg1)?
2 public int getCount()?
3 public void destroyItem(ViewGroup container, int position,Object object)
4 public Object instantiateItem(ViewGroup container, int position)?
(二)重寫函數解析
其實PagerAdapter和AdapterView存在著一定的區別,ViewPager使用回調函數來
表示一個更新的過程,而并不像AdapterView一樣使用一個視圖回收機制,
當然在有時也會使用這種巧妙的方式,就是當我們按照android推薦的
方式將Fragment和ViewPager一起使用時,在這里就不提了。在pageradapter
中使用一個鍵值來對應每一個視圖,這個鍵值獨立于這個頁面所在的position
當然在你進行自定義的時候,如果使用的PagerAdapter比較簡單,你也可以直接
使用視圖對應的position來充當鍵值,好了接下來我就大致說下我對這四個
重寫函數的大致理解,全是拙見哈哈。
1 getCount()?
毋庸多言,這個就是來返回你所想要在Viewpager中使用的View的個數,這個View的布局可以自己設定,
并不一定非要占滿屏幕,在你任意給定的位置都可以實現ViewPager的效果。
2 destroyItem(ViewGroup container, int position,Object object)
這個函數用來移除一個給定位置的視圖。
3 instantiateItem(ViewGroup container, int position)
這是一個很重要的函數了,它用來創建指定位置的頁面視圖,并將其保存到給定的容器
container之中。
它返回一個你新增加的視圖頁面對應的鍵值,這個鍵值并不一定就要返回視圖本身,其實只要是
能夠與你的這個視圖相對應的就行。
4 isViewFromObject(View arg0, Object arg1)
這個函數用來判斷instantiateItem()函數返回的值對應的視圖是否與參數傳遞進來的這個視圖
是同一個視圖,如果是的話就返回true,否者就返回false。
實現標題欄的控件PagerTabStrip與PagerTitleStrip,也很簡單只是在PagerAdapter中添加幾個函數就可以實現
更漂亮的效果,這里就不說了,有興趣的可以自己學習。。。。。。
為我們提供ViewGroup的API。谷歌公司推薦我們把ViewGroup和Fragment一起使,如果一起使用的話,
應該使用FragmentPagerAdapter和FragmentStatePagerAdapter來進行適配處理,在這里我們只看單
獨使用ViewGroup的情況,這時我們需要使用PagerAdapter
(一)至少要進行重寫的函數
1 public boolean isViewFromObject(View arg0, Object arg1)?
2 public int getCount()?
3 public void destroyItem(ViewGroup container, int position,Object object)
4 public Object instantiateItem(ViewGroup container, int position)?
(二)重寫函數解析
其實PagerAdapter和AdapterView存在著一定的區別,ViewPager使用回調函數來
表示一個更新的過程,而并不像AdapterView一樣使用一個視圖回收機制,
當然在有時也會使用這種巧妙的方式,就是當我們按照android推薦的
方式將Fragment和ViewPager一起使用時,在這里就不提了。在pageradapter
中使用一個鍵值來對應每一個視圖,這個鍵值獨立于這個頁面所在的position
當然在你進行自定義的時候,如果使用的PagerAdapter比較簡單,你也可以直接
使用視圖對應的position來充當鍵值,好了接下來我就大致說下我對這四個
重寫函數的大致理解,全是拙見哈哈。
1 getCount()?
毋庸多言,這個就是來返回你所想要在Viewpager中使用的View的個數,這個View的布局可以自己設定,
并不一定非要占滿屏幕,在你任意給定的位置都可以實現ViewPager的效果。
2 destroyItem(ViewGroup container, int position,Object object)
這個函數用來移除一個給定位置的視圖。
3 instantiateItem(ViewGroup container, int position)
這是一個很重要的函數了,它用來創建指定位置的頁面視圖,并將其保存到給定的容器
container之中。
它返回一個你新增加的視圖頁面對應的鍵值,這個鍵值并不一定就要返回視圖本身,其實只要是
能夠與你的這個視圖相對應的就行。
4 isViewFromObject(View arg0, Object arg1)
這個函數用來判斷instantiateItem()函數返回的值對應的視圖是否與參數傳遞進來的這個視圖
是同一個視圖,如果是的話就返回true,否者就返回false。
PagerAdapter pagerAdapter = new PagerAdapter() {@Overridepublic boolean isViewFromObject(View arg0, Object arg1) {// TODO Auto-generated method stubreturn arg0 == arg1;}/*** 返回要滑動的View的個數*/@Overridepublic int getCount() {// TODO Auto-generated method stubreturn viewList.size();}/*** destroyItem():從當前container中刪除指定位置(position)的View*/@Overridepublic void destroyItem(ViewGroup container, int position,Object object) {// TODO Auto-generated method stubcontainer.removeView(viewList.get(position));}/*** instantiateItem():做了兩件事,第一:將當前視圖添加到container中,第二:返回當前View*/@Overridepublic Object instantiateItem(ViewGroup container, int position) {// TODO Auto-generated method stubcontainer.addView(viewList.get(position));return viewList.get(position);}};
基本上將這四個函數重寫后就能夠完成對PagerAdapter的設置了。當然android.support.v4包還為我們提供了
實現標題欄的控件PagerTabStrip與PagerTitleStrip,也很簡單只是在PagerAdapter中添加幾個函數就可以實現
更漂亮的效果,這里就不說了,有興趣的可以自己學習。。。。。。