Android 使用 ViewPager循环广告位的实现

 更新时间:2015年11月25日 10:59:54   作者:John.w  
本文给大家分享android使用 ViewPager循环广告位的实现,感兴趣的朋友一起学习吧

如何实现循环播放

现在网上实现循环播放都是在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)中设置会出现白屏的情况。如果哪位大神知道,麻烦指教下。

相关文章

  • Android检测手机多点触摸点数的方法

    Android检测手机多点触摸点数的方法

    这篇文章主要为大家详细介绍了Android检测手机多点触摸点数的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • Android 网络请求框架Volley实例详解

    Android 网络请求框架Volley实例详解

    这篇文章主要介绍了Android 网络请求框架Volley实例详解的相关资料,需要的朋友可以参考下
    2017-06-06
  • 详解MVP模式在Android开发中的应用

    详解MVP模式在Android开发中的应用

    MVP是MVC衍生而来的,很早以前就由某软公司提出,近年来在Android应用开发中越来越多的被提及,越来越重要了。这篇文章主要介绍了详解MVP模式在Android开发中的应用,有兴趣的可以了解一下。
    2016-11-11
  • Android  GZip的使用-开发中网络请求的压缩实例详解

    Android GZip的使用-开发中网络请求的压缩实例详解

    这篇文章主要介绍了Android GZip的使用-开发中网络请求的压缩实例详解的相关资料,需要的朋友可以参考下
    2016-11-11
  • Android中监听软键盘输入的使用方式

    Android中监听软键盘输入的使用方式

    今天我们来讨论一下Android中监听软键盘输入的使用方式,它允许用户输入文本和执行其他操作,但是,有时候我们需要在用户输入文本时进行一些特殊的处理,比如实时验证输入内容、限制输入字符的类型等,因此,了解如何监听软键盘输入是非常重要的
    2023-10-10
  • Android仿微信发朋友圈浏览图片效果

    Android仿微信发朋友圈浏览图片效果

    这篇文章主要介绍了Android仿微信发朋友圈浏览图片效果的相关资料,需要的朋友可以参考下
    2016-01-01
  • Android实现带有记住密码功能的登陆界面

    Android实现带有记住密码功能的登陆界面

    这篇文章主要为大家详细介绍了Android实现带有记住密码功能的登陆界面,主要采用SharedPreferences来保存用户数据,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • Android 资源混淆的方案及注意事项

    Android 资源混淆的方案及注意事项

    资源混淆有助于减小包体积,也可以提高被反编译后阅读代码的难度。还可以应对一些安全检测机构对于资源混淆要求。本文基于微信的Android资源混淆工具,实现资源混淆
    2021-05-05
  • Android实现左上角(其他边角)倾斜的标签(环绕效果)效果

    Android实现左上角(其他边角)倾斜的标签(环绕效果)效果

    这篇文章主要介绍了Android实现左上角(其他边角)倾斜的标签(环绕效果)效果,本文通过图文实例代码相结合的形式给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-10-10
  • android基础教程之开机启动示例

    android基础教程之开机启动示例

    这篇文章主要介绍了android开机启动示例,开机自动启动程序后开机启动广播功能实现,需要的朋友可以参考下
    2014-02-02

最新评论