开源一个基于ViewPager的无限轮循动画指示器
来源:互联网 发布:exjia商城源码 编辑:程序博客网 时间:2024/05/19 18:18
前言
在对自定义控件还模糊的时候,看到ViewPagerIndicator和android-auto-scroll-view-pager,决定自己做一个轮循效果的指示器。项目放在GitHub很久了,但一直都不完善,前段时间看到了AndroidImageSlider和CircleIndicator项目,又将自己的项目在功能性和健壮性上充实了下,目前还不支持直接从Gradle和Maven引入。
项目地址:https://github.com/lightSky/InfiniteIndicator
Screenshot
Demo Download
APK Donwload
整个项目参考了一下几个项目:
android-auto-scroll-view-pager
AndroidImageSliderCircleIndicator
Android-ViewPagerIndicator
Setting
setInterval(long)
轮循的间隔时间,单位为毫秒,默认为2500
.setDirection(int)
设置Page轮循的方向, 默认是RIGHT
.setInfinite(boolean)
是否启动轮询效果,默认是开启的.setScrollDurationFactor(double)
Page的滑动速度setStopScrollWhenTouch(boolean)
是否在用户触屏时,停止滑动,默认是停止滑动- setIndicatorPosition 设置Indicator的显示位置,共7种枚举
startAutoScroll()
启动轮循,间隔时间为getInterval()
.startAutoScroll(int)
启动轮循,同时传入间隔时间stopAutoScroll()
停止轮循
Tip:为了防止内存泄露,及时释放资源,你应该在onPause和onResume中手动stop和start轮循
三种Indicator的枚举值
- indicator_default 默认的指示器CircleIndicator
- indicator_anim_circle 带动画的圆点指示器AnimCircleIndicator
- indicator_anim_line is 带动画的line指示器AnimLineIndicator
后两种带动画的指示器实现方式是相同的,只是指示器的样式和动画效果不同,你可以参考AnimIndicator去自定义动画和样式,这里为了方便演示和使用,所以将它们作为枚举值独立了。
Indicator的实现方式:
CircleIndicator:不支持动画,在ViewPagerIndicator的CircleIndicator上做了些更改,支持了轮循,考虑到轮循,因此只支持Snap效果的绘制。
AnimIndicator:支持动画,参考CircleIndicator项目。
图片加载
支持从本地加载以及从网络加载图片。图片下载使用了Picasso,你也可以使用ImageLoader进行替换。但需要你自己去修改。当图片加载失败时,当前Page会被remove掉,Indicator会做相应的刷新。
当只有一条数据时,Indicator默认不显示。
<com.lightsky.infiniteindicator.InfiniteIndicatorLayout android:id="@+id/indicator_default_circle" app:indicator_type="indicator_anim_circle" android:layout_height="wrap_content" android:layout_weight="match_parent"/>
public class MainActivity extends Activity { private InfiniteIndicatorLayout mDefaultIndicator; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mDefaultIndicator = (InfiniteIndicatorLayout)findViewById(R.id.indicator_default_circle); HashMap<String,String> url_maps = new HashMap<String, String>(); url_maps = new HashMap<String, String>(); url_maps.put("Page A", "https://raw.githubusercontent.com/lightSky/InfiniteIndicator/master/res/a.jpg"); url_maps.put("Page B", "https://raw.githubusercontent.com/lightSky/InfiniteIndicator/master/res/b.jpg"); url_maps.put("Page C", "https://raw.githubusercontent.com/lightSky/InfiniteIndicator/master/res/c.jpg"); url_maps.put("Page D", "https://raw.githubusercontent.com/lightSky/InfiniteIndicator/master/res/d.jpg"); for(String name : url_maps.keySet()){ DefaultSliderView textSliderView = new DefaultSliderView(this); textSliderView .image(url_maps.get(name)) .setScaleType(BaseSliderView.ScaleType.Fit) .setOnSliderClickListener(this); textSliderView.getBundle() .putString("extra",name); mDefaultIndicator.addSlider(textSliderView); } mDefaultIndicator.setIndicatorPosition(InfiniteIndicatorLayout.IndicatorPosition.Center_Bottom); mDefaultIndicator.startAutoScroll(); } @Override protected void onPause() { super.onPause(); mDefaultIndicator.stopAutoScroll(); } @Override protected void onResume() { super.onResume(); mDefaultIndicator.startAutoScroll(); }}
0 0
- 开源一个基于ViewPager的无限轮循动画指示器
- 开源一个基于ViewPager的无限轮循动画指示器
- viewpager自添加指示器,无限轮播
- 基于ViewPager的无限循环自动播放带指示器的轮播图CarouselFigureView
- ViewPager图片无限轮播加轮播指示器
- ViewPager中代码动态的添加小圆点作为指示器indicator,以及实现无限轮播
- 一个带指示器的引导页(ViewPager)
- iOS 一个带动画的等待指示器
- Android 具有动画的 Viewpager滑动CircleIndicator指示器
- 基于MVP模式下的无限轮播ViewPager
- 设计ViewPager的指示器
- 一个炒鸡好用的 indicator 开源指示器
- android Fragment与ViewPager,自画指示器的一个应用
- 简单的一个ViewPager无限循环
- ViewPager的无限轮播
- Viewpager的无限轮播
- viewpager的无限轮播
- Viewpager的无限轮播!!!
- android tools命名空间
- window10专业版激活
- 【bzoj4591】【Shoi2015超能粒子炮·改】【lucas定理】
- Android动态加载技术三个关键问题详解
- 解决Tomcat反复加载Spring配置文件
- 开源一个基于ViewPager的无限轮循动画指示器
- ffmpeg 命令使用
- 关于UIScrollView上面布局遇到的问题
- Error:Execution failed for task ':app:processDebugManifest'
- Nginx反向代理后,图片路径错误
- [XPath/Python] XPath 与 lxml (二)XPath 语法 - iFantasticMe
- Rxjava中toList操作符
- NotePad++替换行前、行后空格,替换空行
- Linux常用命令(八)上机操作命令部分解答