ViewPager的使用
此文章仅作为自己的笔记所用。
若有同仁感兴趣阅读,发现错误,还望指出,一起进步。
本文涵盖了三块内容:1.viewpager的基本使用;2.viewpager与fragment(碎片)的结合使用;3.viewpager的动画使用。
一、ViewPager的基本使用
1).首先,要使用viewPager需要在布局文件.xml中添加该组件<android.support.v4.view.ViewPager>,如下:

2).建立三个layout作为滑动要显示的内容,如下只给出一个代码:

3).要使用普通的ViewPager,必须要为Activity中findViewById找到的viewPager组件设置一个Adapter,这个和RecyclerView、ListView是很相似的。可以定义一个类继承自PagerAdapter,这个类需要实现四个方法,分别为:
instantiateItem(ViewGroup container, intposition):添加到容器,初始化
destroyItem(ViewGroup container, intposition,Object object):从容器移除
getCount():返回视图个数
isViewFromObject(View view,Object object):是否匹配(这个有点难解释,我不太能表述清楚)
而我通常是将他们封装成一个父类,从而避免多次调用的时候返回去写一些没有意义的代码。同时,有的viewpager需要显示tab或者title,这就可以在此类中选择是否要实现相应的方法。那么我写的父类如下:

这里我写了一个抽象方法,也就是继承的子类必须实现这个方法,为的是将参数初始化。
继承的子类如下:

而在Activity中的使用就比较简单了:

接下来我们将添加title和tab进去:

如所画的矩形框,是添加的tab和title的代码。
2).在刚才要实现的子类中添加一个构造方法,用来传入显示的title/tab的文字,重写一个要显示title/tab的方法。

最后,是在activity中的使用:

二、与碎片相结合使用
1)每一个碎片都应该对应一个Fragment的子类来初始化页面,在这里为了方便我只写了一个Fragment来创建三个view。

2.Fragment与ViewPager的组合使用,Google提供了FragmentPagerAdapter与FragmentStatePagerAdapter两个类,其中第一个适用于fragment较少的,另一个适用较多的。代码如下:

3.Activity中的使用:

三、动画使用
动画的话,需要建立一个类,让其实现ViewPager.PageTransformer接口。然后接口中重写方法transformPager(View pager,int position)
在这里,我觉得需要说明几个比较重要的或者说常用的参数。
1.position:这个是位置,一般我们要关注的是两个页面的位置,一个是即将消失的位置,一个是即将出现的位置。这两个pager的位置是在[-1,1]之间(同时也就是说完整出现的一个动画的位置占满了这之间的位置),也就是说当位置小于-1的时候,也就全部消失了,大于1的时候,也就还没出现。而我们的动画,则是根据这个position来做的。
2.ScaleX与ScaleY:这两个是表示pager页面的大小(我是这样理解的,有错的地方欢迎指正),可以通过设置这个值来制作动画。
3.alpha:这个比较好理解,就是透明度
4.translationX与translationY:这个分别是在X轴与Y轴上的偏移量。