Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> ViewPager循環廣告位的實現,viewpager循環廣告位

ViewPager循環廣告位的實現,viewpager循環廣告位

編輯:關於android開發

ViewPager循環廣告位的實現,viewpager循環廣告位


1、如何實現循環播放

2、如何實現自動循環

 

如何實現循環播放

現在網上實現循環播放都是在adapter的getCount()方法返回一個較大的值並且instantiateItem(ViewGroup container, int position)中通過取余(position/datas.size())的方式,讓ViewPager不斷的播放下去。

這裡我們通過修改數據源和設置currentItem的方式實現。

修改數據源:

final List<Integer> datas = new ArrayList<>();
//這裡添加測試數據,實際項目中可以是從網絡獲取數據
        datas.add(R.mipmap.welcome_page_01);
        datas.add(R.mipmap.welcome_page_02);
        datas.add(R.mipmap.welcome_page_03);

        //處理數據源
        datas.add(0,datas.get(datas.size()-1));
        datas.add(datas.get(1));

設置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一樣即可。

 

如何實現自動循環:

實現自動循環,方法比較多,比如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);
            }
        }
    }

獲取數據,給ViewPager設置Adapter之後就可以啟動自動循環:

if(!(mHandler!=null && mHandler.get()!=null)){
  mHandler = new WeakReference<BannerHander>(new BannerHander());
}
mHandler.get().sendEmptyMessageDelayed(1, 300);

這裡我們是用了弱引用,主要是為了防止出現內存溢出。

 

注意:

 在設置CurrentItem時一定要在OnPageChangeListener中進行,Adapter的finishUpdate(View view)中設置會出現白屏的情況。如果哪位大神知道,麻煩指教下。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved