我正在使用以下代码更改幻灯片:
viewPager.setCurrentItem(index++,true);
但变化太快了。有没有办法手动设置动画速度
我一直想自己做,并且已经实现了一个解决方案(但是使用了反射) 我还没有测试过它,但是它应该可以工作,或者只需要很少的修改。在Galaxy Nexus JB 4.2.1上测试过。您需要在XML中使用ViewPagerCustomDuration,而不是ViewPager,然后可以执行以下操作:
ViewPagerCustomDuration vp=(ViewPagerCustomDuration)findViewById(R.id.myPager);
副总裁setScrollDurationFactor(2);//使动画速度加倍
查看页面rcustomduration.java:
导入android.content.Context;
导入android.support.v4.view.ViewPager;
导入android.util.AttributeSet;
导入android.view.animation.Interpolator;
导入java.lang.reflect.Field;
公共类ViewPagerCustomDuration扩展了ViewPager{
公共视图页面rcustomduration(上下文){
超级(上下文);
postInitViewPager();
}
public ViewPagerCustomDuration(上下文、属性集属性){
超级(上下文,attrs);
postInitViewPager();
}
private ScrollerCustomDuration mScroller=null;
/**
*使用我们自己的类重写Scroller实例,以便更改
*持续时间
*/
私有void postInitViewPager(){
试一试{
字段滚动器=ViewPager.class.getDeclaredField(“mScroller”);
scroller.setAccessible(true);
字段插值器=ViewPager.class.getDeclaredField(“sInterpolator”);
插值器.setAccessible(true);
mScroller=new ScrollerCustomDuration(getContext(),
(Interpolator)Interpolator.get(null));
scroller.set(这个,mScroller);
}捕获(例外e){
}
}
/**
*设置持续时间将更改的系数
*/
公共无效设置CrollDurationFactor(双滚动系数){
mScroller.setScrollDurationFactor(滚动系数);
}
}
ScrollerCustomDuration.java:
导入android.annotation.SuppressLint;
导入android.content.Context;
导入android.view.animation.Interpolator;
导入android.widget.Scroller;
公共类ScrollerCustomDuration扩展了Scroller{
专用双系数=1;
公共ScrollerCustomDuration(上下文){
超级(上下文);
}
公共ScrollerCustomDuration(上下文、插值器和插值器){
super(上下文、插值器);
}
@SuppressLint(“新API”)
公共ScrollerCustomDuration(上下文上下文、插值器、插值器){
超级(上下文、插值器、飞轮);
}
/**
*设置持续时间将更改的系数
*/
公共无效设置CrollDurationFactor(双滚动系数){
mScrollFactor=滚动因子;
}
@凌驾
公共无效开始滚动(int startX、int startY、int dx、int dy、int duration){
超级startScroll(startX,startY,dx,dy,(int)(持续时间*mScrollFactor));
}
}
希望这对别人有帮助