1、设置滑动切换速度
ViewPagerScroller sc = new ViewPagerScroller(this);
sc.setScrollDuration(scrollTime);//默认切换2秒
sc.initViewPagerScroll(viewPager);
自定义ViewPagerScroller
/**
* ViewPager 滚动速度设置
*
*/
public class ViewPagerScroller extends Scroller {
private int mScrollDuration = 2000; // 滑动速度
/**
* 设置速度速度
* @param duration
*/
public void setScrollDuration(int duration){
this.mScrollDuration = duration;
}
public ViewPagerScroller(Context context) {
super(context);
}
public ViewPagerScroller(Context context, Interpolator interpolator) {
super(context, interpolator);
}
// public ViewPagerScroller(Context context, Interpolator interpolator, boolean flywheel) {
// super(context, interpolator, flywheel);
// }
@Override
public void startScroll(int startX, int startY, int dx, int dy, int duration) {
super.startScroll(startX, startY, dx, dy, mScrollDuration);
}
@Override
public void startScroll(int startX, int startY, int dx, int dy) {
super.startScroll(startX, startY, dx, dy, mScrollDuration);
}
public void initViewPagerScroll(ViewPager viewPager) {
try {
Field mScroller = ViewPager.class.getDeclaredField("mScroller");
mScroller.setAccessible(true);
mScroller.set(viewPager, this);
} catch(Exception e) {
e.printStackTrace();
}
}
}
2、切换动画
//页面切换效果
public class CubeTransformer implements PageTransformer {
/**
* position参数指明给定页面相对于屏幕中心的位置。它是一个动态属性,会随着页面的滚动而改变。当一个页面填充整个屏幕是,它的值是0;
* 当一个页面刚刚离开屏幕的右边时,它的值是1;当一个页面刚刚进入屏幕时,它的是值是-1。当两个也页面分别滚动到一半时,其中一个页面的位置是-0.5,另一个页面的位置是0.5。基于屏幕上页面的位置
* ,通过使用诸如setAlpha()、setTranslationX()、或setScaleY()方法来设置页面的属性,来创建自定义的滑动动画。
*/
public void transformPage(View view, float position) {
if (position <= 0) {
//从右向左滑动为当前View
//设置旋转中心点;
ViewHelper.setPivotX(view, view.getMeasuredWidth());
ViewHelper.setPivotY(view, view.getMeasuredHeight() * 0.5f);
//只在Y轴做旋转操作
ViewHelper.setRotationY(view, 90f * position);
} else if (position <= 1) {
//从左向右滑动为当前View
ViewHelper.setPivotX(view, 0);
ViewHelper.setPivotY(view, view.getMeasuredHeight() * 0.5f);
ViewHelper.setRotationY(view, 90f * position);
}
}
}
viewPager.setPageTransformer(true, new CubeTransformer());