Android指示器,轮播与循环轮播
wptr33 2025-05-23 20:39 4 浏览
Android UI Libs之CircleIndicator
1. 说明
CircleIndicator,顾名思义,圆形指示器,只一个可以用来做轮播的第三方库。
2. 配置
在模块的build.gradle中添加依赖:compile '
me.relex:circleindicator:1.2.1@aar'
3. 基本使用
在xml布局文件中定义ViewPager
与CircleIndicator
:
<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>
注意:ViewPager
与CircleIndicator
一般放在同一个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,它里面包含一个ImageView
,MyPagerAdapter
是我自定义的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,我们需要将其中的LoopPagerAdapterWrapper
,LoopViewPager
这两个类复制到我们的项目中来就。然后要将
改为
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技术漫谈
相关推荐
- 吸顶大法 -- UWP中的工具栏吸顶的实现方式之一
-
如果一个页面中有很长的列表/内容,很多应用都会在用户向下滚动时隐藏页面的头,给用户留出更多的阅读空间,同时提供一个方便的吸顶工具栏,比如淘宝中的店铺页面。下面是一个比较简单的实现,如果有同学有更好的实...
- C# ListView实现在日志中添加图片
-
ListView想在日志中添加图片,需要配合ImageList控件使用。1、在ListView控件中添加ImageList,视图选择Details2、添加列,有几张图片显示就添加几列ListViewI...
- 安卓里面优秀的第三方插件gitHub文件
-
pinned-section-listview这个列表是正确实施其他实现缺失很多功能。这些都是快速滚动页眉和页脚点击固定部分除此之外,它不产生任何不必要的视图、布局等很瘦。xUtils3...
- android使用greendao来保存数据
-
有时我们的数据属于保存到数据库,对于Android应用和IOS应用,我们一般都会使用SQLite这个嵌入式的数据库作为我们保存数据的工具。由于我们直接操作数据库比较麻烦,而且管理起来也非常的麻烦,所以...
- 常见电脑桌面问题,你知多少
-
(一)桌面图标无法删除出现一些不认识的图标1.关闭正常运行且需要删除的程序;2.运行杀毒软件进行扫毒处理;3.系统欢迎或者重装系统;4.通过软件自带的卸载程序或者第三方软件(QQ管家、360)进行卸载...
- 独家|React Native 无限列表的优化与实践
-
导语本文介绍了在使用ReactNative开发过程中,如何对无限列表组件进行技术选型,如何使用RecyclerListView组件对无限列表进行性能优化,如何解决无限列表与标签页搭配使用时的内存...
- 深入浅出SlidingMenu
-
如果想直接查看源码的话可以从我的Github上下载查看:https://github.com/zhanghuijun0/demo-for-android/tree/master/SlidingMenu...
- 就问你酷不酷 定制自己的动态壁纸
-
虽然壁纸可以经常更换,但总是看着静态壁纸难免让人乏味。下面就教你如何设置动态壁纸,让你的桌面动起来炫起来。WindowsXP系统虽已退休多年,但在国内仍有大量的忠实用户,那我们就从它说起。其实Win...
- 安卓的ViewPager概述
-
一、ViewPager概述1、定义与用途:...
- Flet 手机app界面设计,导航和路由,在多个界面之间自由跳转
-
前面的几篇文章,基本讲清楚了Flet界面设计,但都是“单个界面”。在实际项目中,肯定需要设计“多个界面”啊,多个界面直接怎么导航呢?也就是Flet的路由功能,这是Flet开发的必备技术。依然保...
- Android指示器,轮播与循环轮播
-
AndroidUILibs之CircleIndicator1.说明CircleIndicator,顾名思义,圆形指示器,只一个可以用来做轮播的第三方库。2.配置在模块的build.gradle...
- Shopee新手指南:Shopee卖家中心用户界面介绍
-
1.Shopee各站点前台网页链接:2.Shopee各站点后台网页链接3.ShopeeAPP下载:安卓版下载链接:https://pan.baidu.com/s/1eSp8M1k#list/path...
- Django 官方推荐的姿势:类视图
-
作者:HelloGitHub-追梦人物在开发网站的过程中,有一些视图函数虽然处理的对象不同,但是其大致的代码逻辑是一样的。比如一个博客和一个论坛,通常其首页都是展示一系列的文章列表或者帖子列表。对处理...
- ViewPager介绍和使用说明
-
ViewPager类提供了多界面切换的新效果。新效果有如下特征:...
- 一周热门
-
-
C# 13 和 .NET 9 全知道 :13 使用 ASP.NET Core 构建网站 (1)
-
因果推断Matching方式实现代码 因果推断模型
-
git pull命令使用实例 git pull--rebase
-
git 执行pull错误如何撤销 git pull fail
-
面试官:git pull是哪两个指令的组合?
-
git fetch 和git pull 的异同 git中fetch和pull的区别
-
git pull 和git fetch 命令分别有什么作用?二者有什么区别?
-
还可以这样玩?Git基本原理及各种骚操作,涨知识了
-
git pull 之后本地代码被覆盖 解决方案
-
git命令之pull git.pull
-
- 最近发表
- 标签列表
-
- git pull (33)
- git fetch (35)
- mysql insert (35)
- mysql distinct (37)
- concat_ws (36)
- java continue (36)
- jenkins官网 (37)
- mysql 子查询 (37)
- python元组 (33)
- mybatis 分页 (35)
- vba split (37)
- redis watch (34)
- python list sort (37)
- nvarchar2 (34)
- mysql not null (36)
- hmset (35)
- python telnet (35)
- python readlines() 方法 (36)
- munmap (35)
- docker network create (35)
- redis 集合 (37)
- python sftp (37)
- setpriority (34)
- c语言 switch (34)
- git commit (34)