第一步:Fragment
定义FragmentPageAdapter并继承FragmentPagerAdapter类
实现一下方法
//在构造方法中初始化Fragment
public FragmentPageAdapter(FragmentManager fm){
super(fm);
Log.i(TAG, “FragmentPageAdapter: “+”====”);
home = new HomeFragment();
video = new VideoFragment();
follow = new FollowFragment();
mine = new MineFragment();
}
//函数的目的为生成新的 Fragment 对象。
public Fragment getItem(int position) {
Fragment fragment = null;
switch (position){
case 0:
fragment = home;
break;
case 1:
fragment = video;
break;
case 2:
fragment = follow;
break;
case 3:
fragment = mine;
break;
}
return fragment;
}
//返回一共多少个Fragment
@Override
public int getCount() {
return DEFAULT_NUM;
}
//函数中判断一下要生成的 Fragment 是否已经生成过了,如果生成过//了,就使用旧的,旧的将被 Fragment.attach();如果没有,就调//用 getItem() 生成一个新的,新的对象将被 //FragmentTransation.add()
@Override
public Object instantiateItem(ViewGroup container, int position) {
return super.instantiateItem(container, position);
}
//该函数被调用后,会对 Fragment 进行 //FragmentTransaction.detach()。这里不是 remove(),只是 //detach(),因此 Fragment 还在 FragmentManager 管理中,Fragment 所占用的资源不会被释放
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
super.destroyItem(container, position, object);
}
在MainActivity中创建实例
FragmentPageAdapter fragmentPageAdapter = new FragmentPageAdapter(getSupportFragmentManager());
第二步:创建ViewPager的应用
初始化ViewPager
viewPager = (ViewPager) findViewById(R.id.viewPager);
设置适配器
viewPager.setAdapter(fragmentPageAdapter);
//默认选择第一页
viewPager.setCurrentItem(0);
//设置OnPageChange监听
viewPager.addOnPageChangeListener(this);
//当页面在滑动的时候会调用此方法,在滑动被停止之前,此方法回一直得到
//其中三个参数的含义分别为:
//arg0 :当前页面,及你点击滑动的页面
//arg1:当前页面偏移的百分比
//arg2:当前页面偏移的像素位置
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
//此方法是页面跳转完后得到调用,arg0是你当前选中的页面的//Position(位置编号)。
@Override
public void onPageSelected(int position) {
}
//在状态改变的时候调用
//arg0 ==1的时辰默示正在滑动,arg0==2的时辰默示滑动完毕了,arg0==0的时辰默示什么都没做
@Override
public void onPageScrollStateChanged(int state) {
if (state == 2) {
switch (viewPager.getCurrentItem()) {
case 0:
b_new_home.setChecked(true);
break;
case 1:
b_new_video.setChecked(true);
break;
case 2:
b_new_follow.setChecked(true);
break;
case 3:
b_new_mine.setChecked(true);
break;
}
}
}
最后在布局文件中添加
在布局文件中添加ViewPager