android 改變ViewPager切換頁面時的速度
阿新 • • 發佈:2019-02-06
宣告:引自http://zhidao.baidu.com/link?url=9YCi4uGUki-xgV6d8_ZN5N1Jq9-eRw4efaiwvC6_aehw62IoskmrrS1ew1Cm11UmTO4UNMoaZEN6DI1HUedTLJA8Kt1-v0lWMCW_Jnd_wHy 點選開啟連結
原生的ViewPager頁面切換速度較快,但是又沒有方法設定切換速度,所以只能自定義一個滾動器,利用反射改變切換速度,程式碼如下:
import java.lang.reflect.Field; import android.content.Context; import android.support.v4.view.ViewPager; import android.view.animation.Interpolator; import android.widget.Scroller; /** * ViewPager 滾動速度設定 * * @author lyy * */ 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(); } } }
使用:
ViewPagerScroller pagerScroller = new ViewPagerScroller(getActivity());
pagerScroller.setScrollDuration(1000);//設定時間,時間越長,速度越慢
pagerScroller.initViewPagerScroll(mViewPager);