1. setCurrentItem()方法中
mScroller.startScroll(sx, sy, dx, dy, duration):左右切换ViewPager页面执行的动画;
2. 实现自动轮播3种方式
1>:使用 Timer类 写一个 定时器;
2>:使用 handler 发送消息;
3>:使用 start Thread,开启一个子线程
这里采用 handler方式,handler可能会出现内存泄露问题(原因就是:handler生命周期比activity的生命周期大)
如果不销毁 handler,那么 handler可以一直执行,activity就不会被销毁,如果 activity不会被销毁,可能就会导致内存泄露的问题;
3. 控制改变 ViewPager切换的速率
// 3. 改变ViewPager的切换速率
// 方式1:duration 持续的时间,在源码中是局部变量,无法改变,
// 方式2:可以改变 mScroll,在源码中发现是 private,使用反射
try {
// 通过ViewPager这个类,获取mScroller属性,然后把mScroll属性设置为我们自定义的 BannerScroll
Field field = ViewPager.class.getDeclaredField("mScroller") ;
// 设置参数,第一个object表示这儿属性在哪个类,第二个参数代表要设置的值
mScroll = new BannerScroll(context);
// 设置为强制改变私有private属性
field.setAccessible(true);
field.set(this , mScroll);
} catch (Exception e) {
e.printStackTrace();
}