国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 系統(tǒng) > Android > 正文

Android 使用 ViewPager循環(huán)廣告位的實(shí)現(xiàn)

2020-04-11 11:15:04
字體:
供稿:網(wǎng)友

如何實(shí)現(xiàn)循環(huán)播放

現(xiàn)在網(wǎng)上實(shí)現(xiàn)循環(huán)播放都是在adapter的getCount()方法返回一個(gè)較大的值并且instantiateItem(ViewGroup container, int position)中通過取余(position/datas.size())的方式,讓ViewPager不斷的播放下去。

這里我們通過修改數(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)白屏的情況。如果哪位大神知道,麻煩指教下。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 临桂县| 元朗区| 灵山县| 山东省| 内江市| 柘荣县| 凤山县| 昌邑市| 南溪县| 滕州市| 宿州市| 化州市| 介休市| 垣曲县| 漳州市| 旬阳县| 新河县| 长岛县| 金门县| 平山县| 池州市| 东乌| 红桥区| 郑州市| 中方县| 白水县| 繁峙县| 长治县| 浮梁县| 桐庐县| 互助| 滁州市| 嘉黎县| 宁海县| 金昌市| 梁平县| 清河县| 平邑县| 太谷县| 永城市| 宜良县|