LoopBanner 一个支持自动播放和循环滚动的banner控件
来源:互联网 发布:国家顶级域名汇总 编辑:程序博客网 时间:2024/04/28 20:27
LoopBanner
最近项目告一段落,决定把里面用到的一些自定义控件整理出来。一个支持自动播放和循环滚动的banner控件。代码有一点粗糙,不过基本实现了需求,先放上来,以后有空再改进。
实现功能
- 自动播放功能
- 循环滚动功能
- 更新banner
- 支持和ListView嵌套使用
控件原理
使用ViewPager进行banner的显示
循环滚动原理
在真实需要显示的banner前后各增加一个页
如有3页需要显示的广告,则在ViewPager创建5个页面,page1,page2,page3显示对应的广告页,page0显示page3的页面,page4显示page1的页面。
当滚动到page4时,通过ViewPager.setCurrentItem(1,false)切换到page1(对page0的处理类似),达到循环滚动的目的。
使用方法
继承 BannerView
使用前需构造自己的控件类,该类继承自BannerView,实现BannerView中的抽象方法
/** * 初始化banner配置 会在初始化viewPager之前调用,如,是否循环播放,banner页面数目等 */protected abstract void initConfig();/** * 设置图片 * * @param imageView * @param index */protected abstract void setBannerImage(ImageView imageView, int index);/** * 选中banner时调用 * * @param currentItem */protected abstract void bannerPagerSelected(int currentItem);
初始化
在initConfig()中进行BannerView的初始化设定,其中setPageNumber(int)必须进行设置,其余根据需要配置
@Overrideprotected void initConfig() { // 设置总页数,一般为list.size(),此项必须设置,如未设置,请在需要的地方调用refreshBanner setPageNumber(3); // 设置启动页数,默认为0,不需要设置 setStartItem(2); // 设置是否循环,默认不能循环拖动 setLoopMode(BannerView.MODE_LOOP); // 设置是否需要小白点 setNeedWhitePoint(true); // 设置小白点位置,默认在左边 setIndicatorGravity(Gravity.CENTER); // 设置banner图片缩放方式,默认为FIT_XY setItemImageScaleType(ScaleType.CENTER_INSIDE);}
设置Banner图片
@Overrideprotected void setBannerImage(ImageView imageView, int index) { //设置图片资源 int resId = 0; switch (index) { case 0: resId = R.drawable.banner_0; break; case 1: resId = R.drawable.banner_1; break; case 2: resId = R.drawable.banner_2; break; default: break; } imageView.setImageResource(resId);}
使用你实现的ExampleBannerView
布局文件
<com.mushi.banner.ExampleBannerView android:id="@+id/id_banner" android:layout_width="match_parent" android:layout_height="300dp" ></com.mushi.banner.ExampleBannerView>
设置自动播放
// 设置自动滚动bannerView.setAutoPlaySupport(true);bannerView.startAutoPlay();
设置banner的点击事件
// 设置点击响应事件bannerView.setOnBannerClickListener(new BannerView.OnBannerClickListener() { @Override public void onBannerClick(int position) { System.out.println("You click, position = " + position); }});
刷新banner
// 在数据更新后刷新banner,必须在初始化后面使用bannerView.refreshBanner(pageNumebr);
代码地址 https://github.com/Tanyangfan/LoopBanner
0 0
- LoopBanner 一个支持自动播放和循环滚动的banner控件
- IOS无限自动循环滚动banner(源码)
- Loop--Banner循环自动滚动视图
- Android banner,轮播图自动滚动控件
- 自己写的一个Gif播放类,支持任意控件上播放。自动获取时间。
- Viewpager--无限循环新闻banner图(支持手动和自动)
- 无线循环的可自动滚动播放轮播图
- viewflow实现类似淘宝,网易新闻的横幅banner,可循环自动播放
- viewflow实现类似淘宝,网易新闻的横幅banner,可循环自动播放
- android 实现自动滚动的 Banner 横幅
- android 实现自动滚动的 Banner 横幅
- UIScrollView的循环滚动+UIPageControll+NSTimer实现的自动循环滚动播放最终完善版
- Android 无限循环且支持自动滚动的ViewPager
- android 自动播放Banner
- 【iOS_GitHub】banner(广告页/循环滚动广告图片/无限循环自动滚动卡片)
- 一个支持所有媒体类型和循环播放的类[精华]
- jQuery 几种不同的slide滑动banner,包括自动播放和带缩略图
- UIScrollView实现循环滚动和自动滚动
- Hibernate-Validation的使用
- zend Studio快捷键操作说明
- 时间选择器机获取上边时间
- windows phone应用程序生命周期
- [安卓开发工具]
- LoopBanner 一个支持自动播放和循环滚动的banner控件
- hdoj 2095 find your present (2)(异或运算)
- oracle数据库知识点整理
- Python安装Scrapy
- Sublime
- 初学Redis(2)——用Redis作为Mysql数据库的缓存
- 2.8 Android 产品统计 报表 好用的“友盟”
- jquery 对 Json 的各种遍历
- javascript二维数组遍历