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 ...
最新文章
- Matlab并行编程方法1
- Android四大基本组件介绍与生命周期
- PacBio But Not Illumina Technology Can Achieve Fast, Accurate and Complete Closure of the High GC, C
- LVS DR模型配置示例
- 【Java设计模式】建造者模式、原型模式
- Spring休眠教程
- SpringMVC获取response的问题
- 关于子元素连续数字和英文内容溢出父元素的问题
- win7计算机病毒制作教程,了解病毒的秘密,为win7打造安全盔甲
- 领导的这些职场暗语,你一定要知道!
- 时域分析——有量纲特征值含义一网打尽
- 老调长谈的Flex 4.6 可视组件的生命周期
- rasp 系统_一类PHP RASP实现
- 全闪存存储 NetApp AFF A 系列 ——引领闪存的未来发展
- java-php-python-ssm-兴澜幼儿园管理系统-计算机毕业设计
- 山经·南山经:杻阳山 [niǔ yáng shān]
- 数商云商业服务业SaaS管理系统:实现高效业务协作,助力企业完善数字化转型之路
- 哪款蓝牙耳机跑步好用?跑步好用的耳机推荐
- 如果通过Java来完成大数据开发,需要学习哪些内容
- 美术加:想要画好人物头像,头骨结构先吃透~