一、认识ViewPager
ViewPager
1.加入ViewPager:使用<android.support.v4.view.ViewPager></android.support.v4.view.ViewPager>组件
2.将Layout布局装换为View对象
(1)LayoutInflater lf=getLayoutInflater().from(this);lf.inflate(resource,root);
(2)View.inflate(context,resource,root);
3.ViewPager的形象:一个容器:可以盛装view对象或者是Fragment.
4.三个适配器:
(1)PagerAdapter 数据源:List<View>
(2)FragmentPagerAdapter 数据源:List<Fragment>
(3)FragmentStatePagerAdapter 数据源:List<Fragment>
二、适配器PagerAdapter
第一步 新建一个view1.xml对象
第二步 配置好属性后 在layout文件夹下复制多几个view2,3,4
第三步 在MainActivity中view1,2,3,4转为View对象
并作为数据源(private List<View>viewList;(声明))
viewList=new ArrayList<View>();(实例化)
第四步 把布局转成View对象 View view1 = View.inflate(this, R.layout.view1, null);//有好几条
第五步 放在数据源集合viewList1.add(view1);
第六步 新建类MyPagerAdapter 继承PagerAdapter
getCount()方法,返回的是页卡的数量
isViewFromObject(),判断View是否来自于对象
instantiateItem(),实例化一个页卡
destroyItem(),销毁一个页卡
第七步 回到MainActivity创建PagerAdapter适配器
第八步 写好一个ViewPager 传到Activity 然后初始化
第九步 给ViewPager加载适配器
第二步 配置好属性后 在layout文件夹下复制多几个view2,3,4
第三步 在MainActivity中view1,2,3,4转为View对象
并作为数据源(private List<View>viewList;(声明))
viewList=new ArrayList<View>();(实例化)
第四步 把布局转成View对象 View view1 = View.inflate(this, R.layout.view1, null);//有好几条
第五步 放在数据源集合viewList1.add(view1);
第六步 新建类MyPagerAdapter 继承PagerAdapter
getCount()方法,返回的是页卡的数量
isViewFromObject(),判断View是否来自于对象
instantiateItem(),实例化一个页卡
destroyItem(),销毁一个页卡
第七步 回到MainActivity创建PagerAdapter适配器
第八步 写好一个ViewPager 传到Activity 然后初始化
第九步 给ViewPager加载适配器
三、.pagerTabStrip和.pagerTitleStrip
ViewPager
添加PagerTabStrip和PagerTitleStrip
1. Acitity中为ViewPager添加PagerTabStrip
<android.support.v4.view.ViewPager >
<android.support.v4.view.PagerTabStrip
android:id="@+id/tab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top">
</android.support.v4.view.PagerTabStrip>
2. 为ViewPager的tab设置标题资源为String
titleList = new ArrayList<String>();
titleList.add("First");
titleList.add("Second");
3. MyPagerAdapter中改一下构造函数,并重写getPageTitle()方法
public MyPagerAdapter(List<View> viewList, List<String> titleList) {
this.viewList = viewList;
this.titleList = titleList;
}
重写getPagerTitle()
@Override
public CharSequence getPageTitle(int position) {
// TODO Auto-generated method stub
return titleList.get(position);
}
4. 创建PagerAdapter并设置给viewPager
MyPagerAdapter pagerAdapter = new MyPagerAdapter(viewList, titleList);
viewPager = (ViewPager) findViewById(R.id.viewPager);
viewPager.setAdapter(pagerAdapter);
5. PagerTitleStrip使用方法和PagerTabStrip一样
添加PagerTabStrip和PagerTitleStrip
1. Acitity中为ViewPager添加PagerTabStrip
<android.support.v4.view.ViewPager >
<android.support.v4.view.PagerTabStrip
android:id="@+id/tab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top">
</android.support.v4.view.PagerTabStrip>
2. 为ViewPager的tab设置标题资源为String
titleList = new ArrayList<String>();
titleList.add("First");
titleList.add("Second");
3. MyPagerAdapter中改一下构造函数,并重写getPageTitle()方法
public MyPagerAdapter(List<View> viewList, List<String> titleList) {
this.viewList = viewList;
this.titleList = titleList;
}
重写getPagerTitle()
@Override
public CharSequence getPageTitle(int position) {
// TODO Auto-generated method stub
return titleList.get(position);
}
4. 创建PagerAdapter并设置给viewPager
MyPagerAdapter pagerAdapter = new MyPagerAdapter(viewList, titleList);
viewPager = (ViewPager) findViewById(R.id.viewPager);
viewPager.setAdapter(pagerAdapter);
5. PagerTitleStrip使用方法和PagerTabStrip一样
四、FragmentPagerAdapter
第一步 建立一个Fragment1继承Fragment
第二步 Fragment1中建立初始化界面的方法onCreateView
第三步 复制出4个Fragment2,3,4 并修改好布局文件
第四步 声明Fragment //private List<Fragment>fragList;
第五步 通过Fragment作为ViewPager的数据源
初始化 //fragList=new ArrayList<Fragment>();
添加 //fragList.add(new Fragment1());
第六步 配置数据适配器
新建一个类MyFragmentPagerAdapter 继承FragmentPagerAdapter 并实习一些必要的方法
第七步 使用getPageTitle方法实现标题信息返回
第八步 在MainActivity加载适配器
初始化MyFragmentPagerAdapter
Vocation加载适配器 //pager.setAdapter(adapter2);
第九步 MyFragmentPager中返回值设置好
第十步 为添加页卡的维护和销毁 在MainActivity中设置好新方法 再加载新的适配器
第二步 Fragment1中建立初始化界面的方法onCreateView
第三步 复制出4个Fragment2,3,4 并修改好布局文件
第四步 声明Fragment //private List<Fragment>fragList;
第五步 通过Fragment作为ViewPager的数据源
初始化 //fragList=new ArrayList<Fragment>();
添加 //fragList.add(new Fragment1());
第六步 配置数据适配器
新建一个类MyFragmentPagerAdapter 继承FragmentPagerAdapter 并实习一些必要的方法
第七步 使用getPageTitle方法实现标题信息返回
第八步 在MainActivity加载适配器
初始化MyFragmentPagerAdapter
Vocation加载适配器 //pager.setAdapter(adapter2);
第九步 MyFragmentPager中返回值设置好
第十步 为添加页卡的维护和销毁 在MainActivity中设置好新方法 再加载新的适配器
五、监听器
ViewPager
切换页卡的监听器:
1.OnPageChangListener,其中最常用的函数是onPageSelected(int arg0);
2.Fragment生命周期比较全,以fragment为资源的ViewPager比较好控制,适用于逻辑比较复杂的情况,如果只是为了展示则推荐以view为资源的viewPager
切换页卡的监听器:
1.OnPageChangListener,其中最常用的函数是onPageSelected(int arg0);
2.Fragment生命周期比较全,以fragment为资源的ViewPager比较好控制,适用于逻辑比较复杂的情况,如果只是为了展示则推荐以view为资源的viewPager