Android指示器,轮播与循环轮播

boyanx7个月前技术教程25

Android UI Libs之CircleIndicator

1. 说明

CircleIndicator,顾名思义,圆形指示器,只一个可以用来做轮播的第三方库。

2. 配置

在模块的build.gradle中添加依赖:compile '
me.relex:circleindicator:1.2.1@aar'

3. 基本使用

在xml布局文件中定义ViewPagerCircleIndicator

<RelativeLayout

android:layout_width="match_parent"

android:layout_height="150dp">

<android.support.v4.view.ViewPager

android:id="@+id/view_pager"

android:layout_width="match_parent"

android:layout_height="150dp">

</android.support.v4.view.ViewPager>

<me.relex.circleindicator.CircleIndicator

android:id="@+id/indicator"

android:layout_width="match_parent"

android:layout_height="48dp"/>

</RelativeLayout>

注意:ViewPagerCircleIndicator一般放在同一个RelativeLayout中,并且CircleIndicator放在后面

在java文件中的相关操作:

this.indicator = (CircleIndicator) findViewById(R.id.indicator); this.viewpager = (ViewPager) findViewById(R.id.view_pager);

List<Fragment> list=new ArrayList<>();

myFragment1 = new MyFragment(R.drawable.image1);

myFragment2 = new MyFragment(R.drawable.image2);

myFragment3 = new MyFragment(R.drawable.image3); list.add(myFragment1); list.add(myFragment2); list.add(myFragment3);

MyPagerAdapter myPagerAdapter=new MyPagerAdapter(getSupportFragmentManager(),list);

viewpager.setAdapter(myPagerAdapter);

indicator.setViewPager(viewpager);

MyFragment是我自定义的Fragment,它里面包含一个ImageViewMyPagerAdapter是我自定义的Adapter。

程序运行界面:

我们发现可以轮播,但是不能循环,我们想要循环怎么办,别担心,下一节我们来实现循环轮播。

CircleIndicator还有下面一些属性,属性命名很规则,一看名字就知道属性是干什么的:

  • app:ci_width:

  • app:ci_height

  • app:ci_margin

  • app:ci_drawable

  • app:ci_drawable_unselected

  • app:ci_animator

  • app:ci_animator_reverse

  • app:ci_orientation (default:horizontal)

  • app:ci_gravity (default:center)

4. 高级使用

该库的LoopingViewPager目录下面为我们提供了循环的ViewPager,我们需要将其中的LoopPagerAdapterWrapperLoopViewPager这两个类复制到我们的项目中来就。然后要将
android.support.v4.view.ViewPager
改为
com.lavor.circleindicatordemo.LoopViewPager

  • 当我们的Adapter是继承自FragmentPagerAdapter 时,无法使用该循环的ViewPager(即LoopViewPager

  • 当我们的Adapter是SamplePagerAdapter时,SamplePagerAdapter是该库实例中的一个Adapter时,可以循环轮播,但是明显从最后一个滑动到第一个时,第一页显示了两次,貌似利用该库中的LoopViewPager还无法解决这个问题。

我们要实现循环轮播的最佳解决方案:

  • 利用另一个库LoopViewPager下面的LoopViewPager

  • 修改CircleIndicator下面CircleIndicator的源代码,将setViewPager(ViewPager viewPager)方法中的ViewPager改为上面所提库中的LoopViewPager,并将与之关联的ViewPager都改为上面所提库中的LoopViewPager,其他关联代码对应改过来。

程序运行后的界面:

程序源代码下载,我的github仓库:
https://github.com/lavor-zl/UILibs

欢迎关注我的微信公众号:Android技术漫谈

欢迎关注我的简述专题:Android技术漫谈

标签: 轮播图代码

相关文章

APICloud 多端开发教程 |《企业展示》源码深度解析

此项目为企业展示类应用,主要功能包括企业信息展示、案例展示、加盟申请等。项目源码在 https://github.com/apicloudcom/company-display仓库的 widget 目...

文章内容转化为吸引眼球圆形可视化图片,配今日头条等平台的传播

一、内容提炼与结构化处理1. 提取核心观点从文章中筛选3-5个核心论点或金句,例如数据结论、争议性观点、实用技巧等。避免文字过多,建议每张圆形图仅承载1个核心信息。2. 数据可视化若文章含统计数据,可...

22. 教你零基础搭建小程序:小程序的常见组件(2)- image

大家好~今天讲小程序的常见组件—— image 图片标签小程序中的图片标签相当于 web 中的图片标签 ,但也存在着不同之处。例如:小程序在后期要打包上线时,对图片的大小是有要求的,图片要<2M所以,...

前端开发需要了解常用7种JavaScript设计模式

作者 | Deven译者 | 王强策划 | 小智转发链接:https://mp.weixin.qq.com/s/Lw4D7bfUSw_kPoJMD6W8gg前言JavaScript 中的设计模式指的是...

JS实现轮播图案例(一看就懂,逻辑清晰)

1. 功能分析实现如图所示的轮播图,要实现的功能主要有:鼠标经过轮播图模块,左右按钮显示,离开隐藏左右按钮。点击右侧按钮一次,图片下滑一张;点击左侧按钮,图片上滑一张。图片播放的同时,下面小圆圈模块跟...

教你从头开始写课堂签到的微信小程序(二)实现签到及视频播放

一、签到子页面布局子页面主要是一个签到按钮,然后下方是签到记录列表。1、签到按钮布局代码:<button class='sign-button' bindtap='sig...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。