一皇筛、什么是ViewPager属拾?
1.1 谷歌官方解釋
introduction
1.2 大致意思
布局管理器允許左右翻轉(zhuǎn)帶數(shù)據(jù)的頁面桃移,你想要顯示的視圖可以通過實現(xiàn)PagerAdapter來顯示。這個類其實是在早期設(shè)計和開發(fā)的蹂析,它的API在后面的更新之中可能會被改變舔示,當它們在新版本之中編譯的時候可能還會改變源碼。
ViewPager經(jīng)常用來連接Fragment电抚,它很方便管理每個頁面的生命周期惕稻,使用ViewPager管理Fragment是標準的適配器實現(xiàn)。最常用的實現(xiàn)一般有FragmentPagerAdapter和FragmentStatePagerAdapter蝙叛。
FragmentPagerAdapter和FragmentStatePagerAdapter是ViewPager和Fragment一起使用時才會用到俺祠,后面會詳細介紹,這里就不介紹了借帘。
1.3 介紹總結(jié)
- ViewPager是v4包中的一個類蜘渣。
- ViewPager繼承自ViewGroup,其實是一個容器肺然。
- ViewPager類似于ListView蔫缸,也有自己的適配器,里面用來填充數(shù)據(jù)頁面狰挡。
- ViewPager一般和Fragment一起使用捂龄,它更方面的管理頁面中Fragment的生命周期。
二加叁、ViewPager的簡單使用
布局文件中申明控件
-
由于ViewPager是一個類似ListView的容器倦沧,一般使用單標簽
<!--填充整個頁面的ViewPager--> <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="match_parent"/>
代碼中設(shè)置顯示數(shù)據(jù)
-
獲取控件對象
ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager);
-
自定義類繼承PagerAdapter填充頁面和數(shù)據(jù)
int getCount():返回顯示多少個頁面
boolean isViewFromObject(View view, Object object):判斷初始化返回的Object是不是一個View對象
Object instantiateItem(ViewGroup container, int position):初始化顯示的條目對象
-
void destroyItem(ViewGroup container, int position, Object object):銷毀條目對象
/** * 自定義類實現(xiàn)PagerAdapter,填充顯示數(shù)據(jù) */ class MyAdapter extends PagerAdapter { // 顯示多少個頁面 @Override public int getCount() { return 5; } @Override public boolean isViewFromObject(View view, Object object) { return view == object; } // 初始化顯示的條目對象 @Override public Object instantiateItem(ViewGroup container, int position) { // return super.instantiateItem(container, position); // 準備顯示的數(shù)據(jù)它匕,一個簡單的TextView TextView tv = new TextView(MainActivity.this); tv.setGravity(Gravity.CENTER); tv.setTextSize(20); tv.setText("我是天才" + position + "號"); // 添加到ViewPager容器 container.addView(tv); // 返回填充的View對象 return tv; } // 銷毀條目對象 @Override public void destroyItem(ViewGroup container, int position, Object object) { // super.destroyItem(container, position, object); container.removeView((View) object); } }
-
設(shè)置適配器
viewPager.setAdapter(new MyAdapter());
效果圖
Demo1效果圖