Android 使用 ViewPager循環(huán)廣告位的實(shí)現(xiàn)
如何實(shí)現(xiàn)循環(huán)播放
現(xiàn)在網(wǎng)上實(shí)現(xiàn)循環(huán)播放都是在adapter的getCount()方法返回一個(gè)較大的值并且instantiateItem(ViewGroup container, int position)中通過(guò)取余(position/datas.size())的方式,讓ViewPager不斷的播放下去。
這里我們通過(guò)修改數(shù)據(jù)源和設(shè)置currentItem的方式實(shí)現(xiàn)。
修改數(shù)據(jù)源:
final List<Integer> datas = new ArrayList<>();
//這里添加測(cè)試數(shù)據(jù),實(shí)際項(xiàng)目中可以是從網(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對(duì)象中進(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一樣即可。
如何實(shí)現(xiàn)自動(dòng)循環(huán):
實(shí)現(xiàn)自動(dòng)循環(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之后就可以啟動(dòng)自動(dòng)循環(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時(shí)一定要在OnPageChangeListener中進(jìn)行,Adapter的finishUpdate(View view)中設(shè)置會(huì)出現(xiàn)白屏的情況。如果哪位大神知道,麻煩指教下。
- Android ViewPager實(shí)現(xiàn)無(wú)限循環(huán)輪播廣告位Banner效果
- Android ViewPager循環(huán)播放廣告實(shí)例詳解
- Android實(shí)現(xiàn)Banner界面廣告圖片循環(huán)輪播(包括實(shí)現(xiàn)手動(dòng)滑動(dòng)循環(huán))
- Android 使用viewpager實(shí)現(xiàn)無(wú)限循環(huán)(定時(shí)+手動(dòng))
- Android viewpager中動(dòng)態(tài)添加view并實(shí)現(xiàn)偽無(wú)限循環(huán)的方法
- Android ViewPager實(shí)現(xiàn)無(wú)限循環(huán)效果
- Android實(shí)現(xiàn)輪播圖無(wú)限循環(huán)效果
- Android仿京東淘寶自動(dòng)無(wú)限循環(huán)輪播控件思路詳解
- Android ViewPager實(shí)現(xiàn)智能無(wú)限循環(huán)滾動(dòng)回繞效果
- Android開(kāi)發(fā)實(shí)現(xiàn)廣告無(wú)限循環(huán)功能示例
相關(guān)文章
Android檢測(cè)手機(jī)多點(diǎn)觸摸點(diǎn)數(shù)的方法
這篇文章主要為大家詳細(xì)介紹了Android檢測(cè)手機(jī)多點(diǎn)觸摸點(diǎn)數(shù)的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05
Android 網(wǎng)絡(luò)請(qǐng)求框架Volley實(shí)例詳解
這篇文章主要介紹了Android 網(wǎng)絡(luò)請(qǐng)求框架Volley實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-06-06
詳解MVP模式在Android開(kāi)發(fā)中的應(yīng)用
MVP是MVC衍生而來(lái)的,很早以前就由某軟公司提出,近年來(lái)在Android應(yīng)用開(kāi)發(fā)中越來(lái)越多的被提及,越來(lái)越重要了。這篇文章主要介紹了詳解MVP模式在Android開(kāi)發(fā)中的應(yīng)用,有興趣的可以了解一下。2016-11-11
Android GZip的使用-開(kāi)發(fā)中網(wǎng)絡(luò)請(qǐng)求的壓縮實(shí)例詳解
這篇文章主要介紹了Android GZip的使用-開(kāi)發(fā)中網(wǎng)絡(luò)請(qǐng)求的壓縮實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2016-11-11
Android中監(jiān)聽(tīng)軟鍵盤(pán)輸入的使用方式
今天我們來(lái)討論一下Android中監(jiān)聽(tīng)軟鍵盤(pán)輸入的使用方式,它允許用戶輸入文本和執(zhí)行其他操作,但是,有時(shí)候我們需要在用戶輸入文本時(shí)進(jìn)行一些特殊的處理,比如實(shí)時(shí)驗(yàn)證輸入內(nèi)容、限制輸入字符的類型等,因此,了解如何監(jiān)聽(tīng)軟鍵盤(pán)輸入是非常重要的2023-10-10
Android實(shí)現(xiàn)帶有記住密碼功能的登陸界面
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)帶有記住密碼功能的登陸界面,主要采用SharedPreferences來(lái)保存用戶數(shù)據(jù),感興趣的小伙伴們可以參考一下2016-05-05
Android實(shí)現(xiàn)左上角(其他邊角)傾斜的標(biāo)簽(環(huán)繞效果)效果
這篇文章主要介紹了Android實(shí)現(xiàn)左上角(其他邊角)傾斜的標(biāo)簽(環(huán)繞效果)效果,本文通過(guò)圖文實(shí)例代碼相結(jié)合的形式給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-10-10
android基礎(chǔ)教程之開(kāi)機(jī)啟動(dòng)示例
這篇文章主要介紹了android開(kāi)機(jī)啟動(dòng)示例,開(kāi)機(jī)自動(dòng)啟動(dòng)程序后開(kāi)機(jī)啟動(dòng)廣播功能實(shí)現(xiàn),需要的朋友可以參考下2014-02-02

