当前位置: 首页 > news >正文

android自动无限轮播,Android安卓比较完美的无限自动轮播

轮播功能在APP中是比较常见的,网上也有很多第三方的自动轮播库,做的很不错,这里自己手写一版简单的ViewPager+Handler机制的自动无限轮播,小白可以直接上手的。

先上简单的核心代码,代码中有详细的注释。

private void initView() {

auto_viewpager = (ViewPager) findViewById(R.id.vp_shuffling);

tv_content = (TextView) findViewById(R.id.tv_content);

dotLayout = (LinearLayout) findViewById(R.id.layout_point);

mADParseArray = new ArrayList();

mADParseArray

.add("http://m.easyto.com/m/zhulifuwu_banner.jpg");

mADParseArray

.add("http://m.easyto.com/m/japan/images/banner_3y_new.jpg");

mADParseArray

.add("http://m.easyto.com/m/japan/images/banner_5y_new.jpg");

final int size = mADParseArray.size();

content = new String[]{"轮播图介绍一", "轮播图介绍二", "轮播图介绍三"};

auto_viewpager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {

/**

* @param position:跳转完毕的页码角标,这个方法做自动轮播

*/

@Override

public void onPageSelected(int position) {

Log.e(TAG, "onPageSelected");

refreshPoint(position % size);

if (mHandler.hasMessages(HOME_AD_RESULT)) {

mHandler.removeMessages(HOME_AD_RESULT);

}

mHandler.sendEmptyMessageDelayed(HOME_AD_RESULT, 3000);

}

/**

* @param arg0:滑动时代表当前页角标,滑动结束时代表滑动停止时的页码角标

* @param arg1:0-1或者1-0变化

* @param arg2:0 屏幕的宽度值变化

*/

@Override

public void onPageScrolled(int arg0, float arg1, int arg2) {

Log.e(TAG, "onPageScrolled");

}

/**

* @param arg0:0 没滑动 1:正在滑动 2:滑动完毕

*/

@Override

public void onPageScrollStateChanged(int arg0) {

Log.e(TAG, "onPageScrollStateChanged = " + arg0);

if (ViewPager.SCROLL_STATE_DRAGGING == arg0

&& mHandler.hasMessages(HOME_AD_RESULT)) {

mHandler.removeMessages(HOME_AD_RESULT);

}

}

});

//

BannerAdapter adapter = new BannerAdapter(mContext, mADParseArray);

auto_viewpager.setAdapter(adapter);

initPointsLayout(size);

auto_viewpager.setCurrentItem(size * 1000, false);//设置当前position,不设置开始无法右滑

// 利用handler启动自动轮播

mHandler.sendEmptyMessageDelayed(HOME_AD_RESULT, 3000);

}

handler中

private Handler mHandler = new Handler() {

public void handleMessage(Message msg) {

switch (msg.what) {

// 广告

case HOME_AD_RESULT:

auto_viewpager.setCurrentItem(auto_viewpager.getCurrentItem() + 1,

true);//设置播放下一页

break;

}

}

};

其中比较重要的就是viewpager滑动监听的三个回调方法,以及设置当前Item为一个比较大的数,这样就能在开始的时候左滑了auto_viewpager.setCurrentItem(size * 1000, false),但是这个数不易过大。注释上都有详细的解释,相信看了这个以后小白应该也会手写一个简单的无限自动轮播功能了。是不是简明易懂0.0

相关文章:

  • 端点安全:为何只有检测率远远不够
  • android 添加json动画,Lottie 站在巨人的肩膀上实现 Android 酷炫动画效果
  • android 找不到布局id,为什么给layout加上id,ButterKnife就找不到资源了?
  • 安装BizTalk Server 2006出现BizTalk架构编辑器同类型化DataSet设计器冲突
  • android 路由表参数,Android点我达路由DRouter框架设计与解析
  • WEB2.0下的门户网站建设
  • android https 证书过期变更,使用自定义证书的Android https连接
  • android7彩蛋oppo,OPPO ColorOS 7来了!没想到重磅消息却是“彩蛋”Reno3系列?
  • 利用CodeSmith为SQL Server CE生成项目代码
  • android隐藏微信好友,如何使用微信隐藏的恢复小技巧?微信好友恢复!
  • 梦里方知此身背
  • android指纹登录demo,Android指纹认证Demo源码
  • assicdoc 转换html,Swagger+spring boot 转换为html,PDF文件等
  • 英雄会开幕致辞--分享交流,开放协作带来共同繁荣的时代
  • html按钮过渡效果,css3_transition: 体验好的过渡效果。附 好看的按钮
  • [数据结构]链表的实现在PHP中
  • Akka系列(七):Actor持久化之Akka persistence
  • Facebook AccountKit 接入的坑点
  • Js基础知识(四) - js运行原理与机制
  • Kibana配置logstash,报表一体化
  • ReactNativeweexDeviceOne对比
  • 创建一种深思熟虑的文化
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 规范化安全开发 KOA 手脚架
  • 好的网址,关于.net 4.0 ,vs 2010
  • 基于 Babel 的 npm 包最小化设置
  • 简单数学运算程序(不定期更新)
  • 利用阿里云 OSS 搭建私有 Docker 仓库
  • 聊聊sentinel的DegradeSlot
  • 嵌入式文件系统
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 微信支付JSAPI,实测!终极方案
  • 小程序 setData 学问多
  • 一些css基础学习笔记
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • #etcd#安装时出错
  • #QT(智能家居界面-界面切换)
  • #vue3 实现前端下载excel文件模板功能
  • (0)Nginx 功能特性
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (4) PIVOT 和 UPIVOT 的使用
  • (4)(4.6) Triducer
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (转)shell调试方法
  • .naturalWidth 和naturalHeight属性,
  • .Net - 类的介绍
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .NET Core工程编译事件$(TargetDir)变量为空引发的思考
  • .Net 访问电子邮箱-LumiSoft.Net,好用
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地中转一个自定义的弱事件(可让任意 CLR 事件成为弱事件)
  • .NET委托:一个关于C#的睡前故事
  • .NET中使用Redis (二)
  • .net中我喜欢的两种验证码