1. 程式人生 > >ViewPager setCurrentItem 設定滑動速度

ViewPager setCurrentItem 設定滑動速度

參考:http://hiqianjin.com/blog/474

當我們用一個按鈕來控制ViewPager 切換到下一頁的時候:

mViewPager.setCurrentItem(++currPositon),該方法會讓ViewPager快速閃到下一頁,使用者體驗極差。

1、這時自定義一個Scroller類(控制ViewPager的滑動速度)是一個很好的解決辦法:

package com.example.july21;

import android.content.Context;
import android.view.animation.Interpolator;
import android.widget.Scroller;

public class FixedSpeedScroller extends Scroller {

	private int mDuration = 1000;//這裡是定義切換的時長

	public FixedSpeedScroller(Context context) {
		super(context);
	}

	public FixedSpeedScroller(Context context, Interpolator interpolator) {
		super(context, interpolator);
	}

	public FixedSpeedScroller(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, mDuration);
	}

	@Override
	public void startScroll(int startX, int startY, int dx, int dy) {
		super.startScroll(startX, startY, dx, dy, mDuration);
	}

}

2、在ViewPager類中增加對ViewPager初始化的程式碼(說句廢話,該方法要在mViewPager,findViewById後)

import java.lang.reflect.Field;


private void setViewPagerScrollSpeed() {
	try {
		Field mScroller = null;
		mScroller = ViewPager.class.getDeclaredField("mScroller");
		mScroller.setAccessible(true);
		FixedSpeedScroller scroller = new FixedSpeedScroller(mViewPager.getContext());
		mScroller.set(mViewPager, scroller);
	} catch (NoSuchFieldException e) {

	} catch (IllegalArgumentException e) {

	} catch (IllegalAccessException e) {

	}
}