简介:让用户左右切换当前的view
第一步:设置PagerAdapter适配器类给它提供数据
第二步:设置addOnPageChangeListener 来提供滚动监听
第三步:设置ViewPager.PageTransformer来定于翻页动画(关键就是重写transformPage方法)
adapter:
PagerAdapter:基类适配器是一个通用的ViewPager适配器
FragmentPagerAdapter:(适用于页面比较少的情况)
FragmentStatePagerAdapter:更专注于每一页是Fragment的情况(适用于页面比较多的情况)
// 下面抄自原文的封装adapter
public class AdapterViewpager extends PagerAdapter {
private List<View> mViewList;
public AdapterViewpager(List<View> mViewList) {
this.mViewList = mViewList;
}
@Override
public int getCount() {//必须实现
return mViewList.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {//必须实现
return view == object;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {//必须实现,实例化
container.addView(mViewList.get(position));
return mViewList.get(position);
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {//必须实现,销毁
container.removeView(mViewList.get(position));
}
}
监听器
viewpager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
// position :当前页面,及你点击滑动的页面;positionOffset:当前页面偏移的百分比;positionOffsetPixels:当前页面偏移的像素位置
}
@Override
public void onPageSelected(int position) {
// 是当前选中的页面的Position
}
@Override
public void onPageScrollStateChanged(int state) {
//state ==1的时表示正在滑动,state ==2的时表示滑动完毕了,state ==0的时表示什么都没做
}
});
}
原文地址,详细