2.2.2新版Banner轮播图实现
随着Android弃用了jcenter库以后,Banner的使用也大大的和以前不同,下面就来介绍一下2.2.2版本banner的使用和Demo
文章目录
- 一、改进内容
- 二、Demo效果图
- 二、步骤
- 1.引入库,依赖banner
- 2.xml文件
- 3.activity文件
- 4.继承BannerAdapter,和RecyclerView的Adapter一样(如果你只是图片轮播也可以使用默认的)
- 5.Banner具体方法调用
- 6.Banner使用中优化体验
- 7.Demo地址
一、改进内容
首先看看新版Banner都改进了哪些内容:
主要改进功能介绍
- 使用了ViewPager2为基础控件 ViewPager2介绍
- 支持了androidx兼容包
- 方便了UI、Indicator自定义
- 支持画廊效果、魅族效果
- 兼容了水平和垂直轮播,也可以实现类似淘宝头条的效果
- 依赖包目前只需要导入了ViewPager2
二、Demo效果图
二、步骤
1.引入库,依赖banner
//Project中build.Gradle
repositories {maven { url "https://s01.oss.sonatype.org/content/groups/public" }
}
//moudle中build.gradle
dependencies{//2.1.0以前jcenter的依赖//implementation 'com.youth.banner:banner:2.1.0'//现在Maven Centralimplementation 'io.github.youth5201314:banner:2.2.2'}
2.xml文件
代码如下:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><com.youth.banner.Bannerandroid:id="@+id/banner"android:layout_width="match_parent"android:layout_height="150dp"app:banner_loop_time="2000"app:banner_radius="15dp"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintTop_toTopOf="parent"app:layout_constraintVertical_bias="0.05"/></androidx.constraintlayout.widget.ConstraintLayout>
3.activity文件
public class MainActivity extends AppCompatActivity {private List<Integer> mBannerList = new ArrayList();private Banner mBanner;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initData();initBanner();}private void initData(){mBannerList.add(R.drawable.lunbo01);mBannerList.add(R.drawable.lunbo02);mBannerList.add(R.drawable.lunbo03);mBannerList.add(R.drawable.lunbo04);mBannerList.add(R.drawable.lunbo05);}private void initBanner(){mBanner = findViewById(R.id.banner);mBanner.setAdapter(new BannerImageAdapter<Integer>(mBannerList) {@Overridepublic void onBindView(BannerImageHolder holder, Integer data, int position, int size) {holder.imageView.setImageResource(data);}});mBanner.isAutoLoop(true);mBanner.setIndicator(new CircleIndicator(this));mBanner.start();}
}
到此就可以完成上述的轮播图功能!!,文章末尾贴出Demo地址,接下来介绍一下Banner进阶功能使用
4.继承BannerAdapter,和RecyclerView的Adapter一样(如果你只是图片轮播也可以使用默认的)
!!!此步骤可以省略,图片轮播提供有默认适配器,其他的没有提供是因为大家的可变性要求不确定,所以直接自定义的比较好。
/*** 自定义布局,下面是常见的图片样式,更多实现可以看demo,可以自己随意发挥*/
public class ImageAdapter extends BannerAdapter<DataBean, ImageAdapter.BannerViewHolder> {public ImageAdapter(List<DataBean> mDatas) {//设置数据,也可以调用banner提供的方法,或者自己在adapter中实现super(mDatas);}//创建ViewHolder,可以用viewType这个字段来区分不同的ViewHolder@Overridepublic BannerViewHolder onCreateHolder(ViewGroup parent, int viewType) {ImageView imageView = new ImageView(parent.getContext());//注意,必须设置为match_parent,这个是viewpager2强制要求的imageView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT));imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);return new BannerViewHolder(imageView);}@Overridepublic void onBindView(BannerViewHolder holder, DataBean data, int position, int size) {holder.imageView.setImageResource(data.imageRes);}class BannerViewHolder extends RecyclerView.ViewHolder {ImageView imageView;public BannerViewHolder(@NonNull ImageView view) {super(view);this.imageView = view;}}
}
5.Banner具体方法调用
public class BannerActivity extends AppCompatActivity {public void useBanner() {//--------------------------简单使用-------------------------------banner.addBannerLifecycleObserver(this)//添加生命周期观察者.setAdapter(new BannerExampleAdapter(DataBean.getTestData())).setIndicator(new CircleIndicator(this));//—————————————————————————如果你想偷懒,而又只是图片轮播————————————————————————banner.setAdapter(new BannerImageAdapter<DataBean>(DataBean.getTestData3()) {@Overridepublic void onBindView(BannerImageHolder holder, DataBean data, int position, int size) {//图片加载自己实现Glide.with(holder.itemView).load(data.imageUrl).apply(RequestOptions.bitmapTransform(new RoundedCorners(30))).into(holder.imageView);}}).addBannerLifecycleObserver(this)//添加生命周期观察者.setIndicator(new CircleIndicator(this));//更多使用方法仔细阅读文档,或者查看demo}
}
6.Banner使用中优化体验
(可选)生命周期改变时
public class BannerActivity {//方法一:自己控制banner的生命周期@Overrideprotected void onStart() {super.onStart();//开始轮播banner.start();}@Overrideprotected void onStop() {super.onStop();//停止轮播banner.stop();}@Overrideprotected void onDestroy() {super.onDestroy();//销毁banner.destroy();}//方法二:调用banner的addBannerLifecycleObserver()方法,让banner自己控制protected void onCreate(Bundle savedInstanceState) {//添加生命周期观察者banner.addBannerLifecycleObserver(this);}
}
7.Demo地址
Demo地址
2.2.2新版Banner轮播图实现相关推荐
- Mint-UI 移动首页开发 - header导航、banner轮播图
Mint-UI 移动首页style排版问题:header导航.banner轮播图.footer底部版权··· ··· 资源预览: 中文 2.x官方文档(含演示地址): 文档首页 中文 2.x官方文档( ...
- html中制作banner,css banner轮播图怎么做?
css banner轮播图怎么做?下面本篇文章给大家简单介绍一下.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. 初步了解动画效果吧.轮播图我一直以为靠jquery插件完成的,突然发 ...
- 谷粒学院-首页数据显示-banner轮播图微服务搭建
新建banner轮播图微服务 1.在service模块下创建子模块service_cms 2.配置application.properties # 服务端口 server.port=8004 # 服务 ...
- AxureRP实战(三)Banner轮播图交互(进阶篇)
前一篇<AxureRP实战(二)Banner轮播图交互(基础篇)>用淘宝的首页banner案例讲解了如何运用动态面板实现banner轮播图的切换,有了基本交互功能.但是,交互效果还有些欠缺 ...
- banner轮播图切换插件
下载地址 banner轮播图切换插件,基于jquery实现的图片轮播效果. dd:
- H5页面中的视频轮播(类似于banner轮播图效果)
先说下我的需求,如下图: 手机模型中间部分是视频播放,当一条视频播放完毕后,整屏会自动上滑切换到下一个视频. 详细效果展示请在PC端点击:http://www.17jianyue.cn/ 查看 提起轮 ...
- Android Studio Banner轮播图
Banner轮播图 使用步骤 代码片段 使用步骤 1.导依赖 2.写布局 3.图片集合(图片网址,图片资源id),标题集合 4.常用方法 图片集合 banner.setImages(imgs); 加载 ...
- android banner动画框架,Android Studio Banner轮播图使用
现在恰好有个项目需要做个轮播图效果,这个需求也是很常见的需求,于是就做个笔记写一下实现过程 分为加载本地图片和网络图片 加载本地图片 第一步:先在build.gradle中加入banner和glide ...
- ViewFlipper实现带圆点的banner轮播图
1 布局文件定义ViewFlipper以及小圆点 <RelativeLayoutandroid:id="@+id/rl_banner"android:layout_width ...
最新文章
- PCA(1):基础知识介绍
- MikuMikuDance 6 菜单汉化补丁
- 是我,一行代码三个 Bug!!! | 每日趣闻
- 第八届蓝桥杯决赛 图书排列
- linux限制单个用户使用,linux下限制用户使用系统资源
- 高程5.7单体内置对象 5.8小结
- 增强版的RecycleViewAdapter,能够直接使用
- 重订增广(清朝·周希陶)
- txt转mobi格式
- excel表格如何不需鼠标往下拖动而自动往下填
- cmd设置文件兼容性
- STK航空仿真(一)界面配置和插入模型
- Centos7.4-docker安装部署实战
- Excel日期格式转为常规文本格式
- 【模型分享】全网质量最高最全《王者荣耀》角色3D模型独立角色
- CF 1139C Edgy Trees
- 桌面计算机右击选项里没有管理员,为什么没有以管理员身份运行选项
- buid和version之间的区别
- php1064,PHP创建表错误1064
- python爬虫实战(2)
热门文章
- 【iOS取证篇】iPhone7系列进入恢复模式和DFU模式的操作方法
- 【提示学习】Exploiting Cloze Questions for Few Shot Text Classification and Natural Language Inference
- 6种自媒体赚钱方法!
- 时间转换——Java
- 中国投入产出表(1990-2018年)
- HBuilder中wap2app(将移动站点转换为移动应用)
- 打赏少了,监管严了,秀场直播又变天
- 百度回应“搜索引擎百度已死”
- IT时代周刊封面文章:百度搜索公正性彻底调查
- 令人惊叹的概念手机--“福田杯”中国手机设计大赛的作品系列