大佬教程收集整理的这篇文章主要介绍了android – 增加viewpager smoothscroll持续时间,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我从不同的帖子收集了一些信息,this solution看起来很完美.我最终得到了这段代码“@H_618_4@ @H_915_3@myPager.java:@H_618_4@
public class MyPager extends ViewPager { public MyPager(Context context,AttributeSet attrs) { super(context,attrs); this.enabled = true; posTinitViewPager(); } private ScrollerCustomDuration mScroller = null; /** * Override the Scroller instance with our own class so we can change the * duration */ private void posTinitViewPager() { try { Class<?> viewpager = ViewPager.class; Field scroller = viewpager.getDeclaredField("mScroller"); scroller.setAccessible(true); Field interpolator = viewpager.getDeclaredField("sInterpolator"); interpolator.setAccessible(true); mScroller = new ScrollerCustomDuration(getContext(),(Interpolator) interpolator.get(null)); scroller.set(this,mScroller); } catch (Exception E) { Log.e("MyPager",e.getmessage()); } } /** * Set the factor by which the duration will change */ public void setScrollDurationFactor(double scrollFactor) { mScroller.setScrollDurationFactor(scrollFactor); } }
ScrollerCustomDuration.java@H_618_4@
public class ScrollerCustomDuration extends Scroller { private double mScrollFactor = 2; public ScrollerCustomDuration(Context context) { super(context); } public ScrollerCustomDuration(Context context,Interpolator interpolator) { super(context,interpolator); } public ScrollerCustomDuration(Context context,Interpolator interpolator,Boolean flywheel) { super(context,interpolator,flywheel); } /** * Set the factor by which the duration will change */ public void setScrollDurationFactor(double scrollFactor) { mScrollFactor = scrollFactor; } @Override public void startScroll(int startX,int startY,int dx,int dy,int duration) { super.startScroll(startX,startY,dx,dy,(int) (duration * mScrollFactor)); } }
问题是,当通过行scrolller.set(this,mScroller)运行时,我无法摆脱这个异常; MyPager:@H_618_4@
java.lang.IllegalArgumentexception: invalid value for field
任何的想法?@H_618_4@
private void posTinitViewPager() { try { Class<?> viewpager = ViewPager.class; Field scroller = viewpager.getDeclaredField("mScroller"); scroller.setAccessible(true); Field interpolator = viewpager.getDeclaredField("sInterpolator"); interpolator.setAccessible(true); mScroller = new ScrollerCustomDuration(getContext(),(Interpolator) interpolator.get(null)); Log.d("TAG","mScroller is: " + mScroller + "," + mScroller.getClass().getSuperclass().getCanonicalName() + "; this class is " + this + "," + getClass().getSuperclass().getCanonicalName()); scroller.set(this,mScroller); } catch (Exception E) { Log.e("MyPager",e.getmessage()); }
编辑:问题是导入语句不正确. mScroller是一个android.widget.Scroller,你不能给它分配一个com.WazaBe.HoloEverywhere.widget.Scroller.@H_618_4@
以上是大佬教程为你收集整理的android – 增加viewpager smoothscroll持续时间全部内容,希望文章能够帮你解决android – 增加viewpager smoothscroll持续时间所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。