Android 使用 ViewPager循環(huán)廣告位的實現(xiàn)
如何實現(xiàn)循環(huán)播放
現(xiàn)在網(wǎng)上實現(xiàn)循環(huán)播放都是在adapter的getCount()方法返回一個較大的值并且instantiateItem(ViewGroup container, int position)中通過取余(position/datas.size())的方式,讓ViewPager不斷的播放下去。
這里我們通過修改數(shù)據(jù)源和設(shè)置currentItem的方式實現(xiàn)。
修改數(shù)據(jù)源:
final List<Integer> datas = new ArrayList<>();
//這里添加測試數(shù)據(jù),實際項目中可以是從網(wǎng)絡(luò)獲取數(shù)據(jù)
datas.add(R.mipmap.welcome_page_01);
datas.add(R.mipmap.welcome_page_02);
datas.add(R.mipmap.welcome_page_03);
//處理數(shù)據(jù)源
datas.add(0,datas.get(datas.size()-1));
datas.add(datas.get(1));
設(shè)置currentItem需要在OnPageChangeListener對象中進(jìn)行:
mViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
if(position==0){
mViewPager.setCurrentItem(datas.size()-2,false);
}else if(position==datas.size()-1){
mViewPager.setCurrentItem(1,false);
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
Adapter和一般的ViewPager的Adapter一樣即可。
如何實現(xiàn)自動循環(huán):
實現(xiàn)自動循環(huán),方法比較多,比如Timer,Handler,Alarm等等。這里我們使用Handle的方式
自定義Handler類如下:
public class BannerHander extends Handler{
@Override
public void handleMessage(Message msg) {
if(msg.what==1){
mViewPager.setCurrentItem(mViewPager.getCurrentItem()+1);
sendEmptyMessageDelayed(1,3000);
}
}
}
獲取數(shù)據(jù),給ViewPager設(shè)置Adapter之后就可以啟動自動循環(huán):
if(!(mHandler!=null && mHandler.get()!=null)){
mHandler = new WeakReference<BannerHander>(new BannerHander());
}
mHandler.get().sendEmptyMessageDelayed(1, 300);
這里我們是用了弱引用,主要是為了防止出現(xiàn)內(nèi)存溢出。
注意:
在設(shè)置CurrentItem時一定要在OnPageChangeListener中進(jìn)行,Adapter的finishUpdate(View view)中設(shè)置會出現(xiàn)白屏的情況。如果哪位大神知道,麻煩指教下。
- Android ViewPager實現(xiàn)無限循環(huán)輪播廣告位Banner效果
- Android ViewPager循環(huán)播放廣告實例詳解
- Android實現(xiàn)Banner界面廣告圖片循環(huán)輪播(包括實現(xiàn)手動滑動循環(huán))
- Android 使用viewpager實現(xiàn)無限循環(huán)(定時+手動)
- Android viewpager中動態(tài)添加view并實現(xiàn)偽無限循環(huán)的方法
- Android ViewPager實現(xiàn)無限循環(huán)效果
- Android實現(xiàn)輪播圖無限循環(huán)效果
- Android仿京東淘寶自動無限循環(huán)輪播控件思路詳解
- Android ViewPager實現(xiàn)智能無限循環(huán)滾動回繞效果
- Android開發(fā)實現(xiàn)廣告無限循環(huán)功能示例
相關(guān)文章
Android 網(wǎng)絡(luò)請求框架Volley實例詳解
這篇文章主要介紹了Android 網(wǎng)絡(luò)請求框架Volley實例詳解的相關(guān)資料,需要的朋友可以參考下2017-06-06
詳解MVP模式在Android開發(fā)中的應(yīng)用
MVP是MVC衍生而來的,很早以前就由某軟公司提出,近年來在Android應(yīng)用開發(fā)中越來越多的被提及,越來越重要了。這篇文章主要介紹了詳解MVP模式在Android開發(fā)中的應(yīng)用,有興趣的可以了解一下。2016-11-11
Android GZip的使用-開發(fā)中網(wǎng)絡(luò)請求的壓縮實例詳解
這篇文章主要介紹了Android GZip的使用-開發(fā)中網(wǎng)絡(luò)請求的壓縮實例詳解的相關(guān)資料,需要的朋友可以參考下2016-11-11
Android實現(xiàn)左上角(其他邊角)傾斜的標(biāo)簽(環(huán)繞效果)效果
這篇文章主要介紹了Android實現(xiàn)左上角(其他邊角)傾斜的標(biāo)簽(環(huán)繞效果)效果,本文通過圖文實例代碼相結(jié)合的形式給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-10-10

