随着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轮播图实现相关推荐

  1. Mint-UI 移动首页开发 - header导航、banner轮播图

    Mint-UI 移动首页style排版问题:header导航.banner轮播图.footer底部版权··· ··· 资源预览: 中文 2.x官方文档(含演示地址): 文档首页 中文 2.x官方文档( ...

  2. html中制作banner,css banner轮播图怎么做?

    css banner轮播图怎么做?下面本篇文章给大家简单介绍一下.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. 初步了解动画效果吧.轮播图我一直以为靠jquery插件完成的,突然发 ...

  3. 谷粒学院-首页数据显示-banner轮播图微服务搭建

    新建banner轮播图微服务 1.在service模块下创建子模块service_cms 2.配置application.properties # 服务端口 server.port=8004 # 服务 ...

  4. AxureRP实战(三)Banner轮播图交互(进阶篇)

    前一篇<AxureRP实战(二)Banner轮播图交互(基础篇)>用淘宝的首页banner案例讲解了如何运用动态面板实现banner轮播图的切换,有了基本交互功能.但是,交互效果还有些欠缺 ...

  5. banner轮播图切换插件

    下载地址 banner轮播图切换插件,基于jquery实现的图片轮播效果. dd:

  6. H5页面中的视频轮播(类似于banner轮播图效果)

    先说下我的需求,如下图: 手机模型中间部分是视频播放,当一条视频播放完毕后,整屏会自动上滑切换到下一个视频. 详细效果展示请在PC端点击:http://www.17jianyue.cn/ 查看 提起轮 ...

  7. Android Studio Banner轮播图

    Banner轮播图 使用步骤 代码片段 使用步骤 1.导依赖 2.写布局 3.图片集合(图片网址,图片资源id),标题集合 4.常用方法 图片集合 banner.setImages(imgs); 加载 ...

  8. android banner动画框架,Android Studio Banner轮播图使用

    现在恰好有个项目需要做个轮播图效果,这个需求也是很常见的需求,于是就做个笔记写一下实现过程 分为加载本地图片和网络图片 加载本地图片 第一步:先在build.gradle中加入banner和glide ...

  9. ViewFlipper实现带圆点的banner轮播图

    1 布局文件定义ViewFlipper以及小圆点 <RelativeLayoutandroid:id="@+id/rl_banner"android:layout_width ...

最新文章

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

热门文章

  1. 用CSS实现“滑动门”技术
  2. 约书亚—摩西的好助手
  3. 又一位零基础成功转行上岸的 Python 大佬
  4. 五一劳动节出门适合戴什么耳机?骨传导耳机是首选
  5. PHP全自动采集在线高清壁纸网站源码
  6. uni问题:APP端打包后拨打电话功能失效
  7. mysql报错:mysql5.7和mysql8,查询时sql关键字rank问题
  8. Python3安装完全攻略 Mac篇
  9. 无聊的一天,就用python随便做个控制台小游戏吧
  10. 021.求解钢材切割的最佳订单