最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2015年11月25日 10:59:54   作者:John.w  
本文給大家分享android使用 ViewPager循環(huán)廣告位的實(shí)現(xiàn),感興趣的朋友一起學(xué)習(xí)吧

如何實(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)白屏的情況。如果哪位大神知道,麻煩指教下。

相關(guān)文章

最新評(píng)論

安国市| 丹巴县| 南澳县| 新营市| 庆城县| 新营市| 民勤县| 新和县| 商城县| 永泰县| 花莲市| 揭东县| 和龙市| 洛扎县| 云阳县| 桃园市| 桓台县| 基隆市| 辽宁省| 福贡县| 尉犁县| 西乌珠穆沁旗| 宁化县| 上林县| 大石桥市| 侯马市| 来安县| 巴林右旗| 高唐县| 杭锦旗| 射阳县| 南乐县| 巢湖市| 鄂托克前旗| 洞口县| 长治县| 湘乡市| 台湾省| 德兴市| 津南区| 淮阳县|