/**
* 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();
}
}
}
这个是设置viewPager切换过度时间的类
ViewPagerScroller scroller =
new
ViewPagerScroller(context);
scroller.setScrollDuration(
0
);
scroller.initViewPagerScroll(viewPager);
//这个是设置切换过渡时间为0毫秒
ViewPagerScroller scroller =
new
ViewPagerScroller(context);
scroller.setScrollDuration(
2000
);
scroller.initViewPagerScroll(viewPager);
//这个是设置切换过渡时间为2秒
viewpager.setPageTransformer(true, new ViewPager.PageTransformer() { public static final float MAX_SCALE = 1.0f; public static final float MIN_SCALE = 0.8f; @Override public void transformPage(View page, float position) { //页面变化范围[-1 , 1] if (position < -1) { position = -1; } else if (position > 1) { position = 1; } float tempScale = position < 0 ? 1 + position : 1 - position;// float slope = (MAX_SCALE - MIN_SCALE) / 1; float scaleValue = MIN_SCALE + tempScale * slope; page.setScaleX(scaleValue); page.setScaleY(scaleValue); if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) { page.getParent().requestLayout(); } } });