viewpager是啥嘞,是一个页面切换的组件,可以往里面填充多个View,然后可以通过触摸屏幕左右滑动来切换不同的view,需要一个Adapter,将要显示的view和viewpager进行绑定,而viewpager有他自己特定的adapter:PagerAdapter,google官方建议我们使用fragment填充viewpager,这样可以方便的生成每个page以及管理每个page的生命周期,它有两个不同的adapter,他们分别是FragmentPageAdapter和FragmentStatePagerAdapter。顺便说下ViewPager的缓存机制:它会缓存当前页,前一页,以及后一页,比如有4个页面,当处于第一页时,缓存第一、第二页;当处于第二页时,缓存第一、第二、第三页;当处于第三页时,缓存第二、第三、第四页;当处于第四页时,缓存第三、第四页。
PagerAdapter要重写的方法:
1.getCount():获得viewpager中有多少个view;
2.destroyItem():移除一个给定位置的页面,适配器可以从容器中删除这个视图,为了确保在finishUpdate(viewGroup)返回时视图能够被移除;
3.instantiateItem():将给定位置的view添加到viewgroup中,创建并显示出来;返回一个代表新增页面的object(key),通常都是直接返回view本身就可以了,当然也可以自定义自己的key,但是key和view要一一对应;
4.isViewFromObject():判断instantiateItem(ViewGroup ,int)函数所返回来的key与一个页面视图是否是代表的同一个视图,通常直接写return view==object就可以了。
一个栗子:
activity_viewpager.xml文件
自定义要切换的Fragment
定义适配器
再看Activity
自定义的带圆角的蓝条:
实现效果: