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對象中進行:
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中進行,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 App中讀取XML與JSON格式數(shù)據(jù)的基本方法示例
這篇文章主要介紹了Android App中讀取XML與JSON格式數(shù)據(jù)的基本方法示例,Android中自帶的JSONObject非常好用,需要的朋友可以參考下2016-03-03Android實現(xiàn)創(chuàng)建或升級數(shù)據(jù)庫時執(zhí)行語句
這篇文章主要介紹了Android實現(xiàn)創(chuàng)建或升級數(shù)據(jù)庫時執(zhí)行語句,是比較實用的功能,需要的朋友可以參考下2014-08-08Android實現(xiàn)手勢控制ImageView圖片大小
這篇文章主要介紹了Android實現(xiàn)手勢控制ImageView圖片大小的相關(guān)資料,需要的朋友可以參考下2016-02-02Android Recyclerview實現(xiàn)多選,單選,全選,反選,批量刪除的功能
本篇文章主要介紹了Android Recyclerview 實現(xiàn)多選,單選,全選,反選,批量刪除的功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-06Android AlertDialog多種創(chuàng)建方式案例詳解
這篇文章主要介紹了Android AlertDialog多種創(chuàng)建方式案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08Android完美實現(xiàn)平滑過渡的ViewPager廣告條
這篇文章主要為大家詳細(xì)介紹了Android完美實現(xiàn)平滑過渡的ViewPager廣告條,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-11-11