要想实现不同的ViewPager的切换效果便需要自己写一个类实现ViewPager.PageTransformer这个接口,并重写transformPAge这个方法:
transformPage方法有两个参数,第一个view当然就是应用动画的那个控件,第二个是一个float类型的值,不是我们平常见到的position位置,而是当前滑动状态的表示,相对于当前position的position。它有三个临界值-1 0 1,0代表当前屏幕显示的view的position,1代表当前view的下一个view所在的position,-1代表当前view的前一个view所在的position
image左右滑动时position的变化情况:
@Overrde
public void transformPage(View view, float position){
if(position < -1){//[负无穷,-1]页面在屏幕外的左边
...
}else if (position <= 0){
//页面从屏幕外左边进入屏幕的过程
//页面从屏幕往左移动的过程
...
}else if (position <= 1){
//页面从屏幕右边进入屏幕的过程
//页面从屏幕往右移动的过程
...
}else{//[1,正无穷]页面在屏幕外的右边
...
}
}
在transformPage中写完自己所需要的实现切换效果后,只需要加上下面一句代码就可以实现特殊的页面的切换效果了:
mViewPager.setPageTransformer(true, new MyPageTransformer());
在重写transformPage的方法的时候,用的比较多的方法主要是如下几个:
获取页面的宽度
view.getWidth();
改变页面透明度
view.setAlpha();
改变页面的大小
view.setScaleX();
view.setScaleY();
改变页面的水平位置
view.setTranslationX();
网友评论