1. setCurrentItem()方法中
mScroller.startScroll(sx, sy, dx, dy, duration):左右切換ViewPager頁面執(zhí)行的動畫瀑踢;
2. 實現(xiàn)自動輪播3種方式
1>:使用 Timer類 寫一個 定時器才避;
2>:使用 handler 發(fā)送消息;
3>:使用 start Thread棘劣,開啟一個子線程
這里采用 handler方式楞遏,handler可能會出現(xiàn)內(nèi)存泄露問題(原因就是:handler生命周期比activity的生命周期大)
如果不銷毀 handler首昔,那么 handler可以一直執(zhí)行糙俗,activity就不會被銷毀,如果 activity不會被銷毀巧骚,可能就會導(dǎo)致內(nèi)存泄露的問題;
3. 控制改變 ViewPager切換的速率
// 3. 改變ViewPager的切換速率
// 方式1:duration 持續(xù)的時間竣蹦,在源碼中是局部變量沧奴,無法改變,
// 方式2:可以改變 mScroll扼仲,在源碼中發(fā)現(xiàn)是 private,使用反射
try {
// 通過ViewPager這個類驰后,獲取mScroller屬性矗愧,然后把mScroll屬性設(shè)置為我們自定義的 BannerScroll
Field field = ViewPager.class.getDeclaredField("mScroller") ;
// 設(shè)置參數(shù),第一個object表示這兒屬性在哪個類唉韭,第二個參數(shù)代表要設(shè)置的值
mScroll = new BannerScroll(context);
// 設(shè)置為強(qiáng)制改變私有private屬性
field.setAccessible(true);
field.set(this , mScroll);
} catch (Exception e) {
e.printStackTrace();
}