2.2.2新版Banner轮播图实现

Android Banner2.2.2实现横向重叠布局 一、效果展示 Android Banner2.2.2 实现横向重叠 二、GitHub GitHub - youth5201314/banner: 🔥🔥🔥Banner 2.0 来了!Android广告图片轮播控件,内部基于ViewPager2实现,Indicator和UI都可以自定义。 借用Banner2.2.2 三、具体实现 1、导入依赖 implementation 'io.github.youth5201314:banner:2.2.2' implementation.. 阅读详情

随着Android弃用了jcenter库以后,Banner的使用也大大的和以前不同,下面就来介绍一下2.2.2版本banner的使用和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 Central
    implementation '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.Banner
        android: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;

    @Override
    protected 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) {
            @Override
            public 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
    @Override
    public 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);
    }

    @Override
    public 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()) {
                    @Override
                    public 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的生命周期
    
    @Override
    protected void onStart() {
        super.onStart();
        //开始轮播
        banner.start();
    }
    
    @Override
    protected void onStop() {
        super.onStop();
        //停止轮播
        banner.stop();
    }
    
    @Override
    protected void onDestroy() {
        super.onDestroy();
        //销毁
        banner.destroy();
    }
    
    //方法二:调用banner的addBannerLifecycleObserver()方法,让banner自己控制
   
    protected void onCreate(Bundle savedInstanceState) {
         //添加生命周期观察者
        banner.addBannerLifecycleObserver(this);
    }
}

7.Demo地址

Demo地址

Android---Banner轮播图 实现一个简单的轮播图效果,Banner框架已经帮我们做了一个适配器--能够帮助我们快速开发,完成首页轮播图效果的需求。 阅读详情

相关推荐

Android Studio 中 Banner控件实现首页轮播图

打开banner -> res -> layout ->activity_main.xml。为了方便,这里我们把模块名命名为banner。

qq_73830179的博客 1989

Android中banner的使用步骤

Android中banner的使用步骤

弱水三千只取一瓢饮 1万+

【番外篇】Android Studio 中 Banner控件实现首页轮播图

打开banner -> res -> layout ->activity_main.xml。为了方便,这里我们把模块名命名为banner。

qq_73830179的博客 1387

banner2.1新版的使用,图片加载方法

新版banner没有了设置图片和加载图片的方法,弄了好几天才发现要设置适配器才可以使用。使用banner.setaAapter方法设置适配器,里面创建一个匿名内部类,然后继承BannerImageAdapter的方法。 我是先创建一个数组,把图片的名字保存进去,因为load只能是string类型。Constants.Base_URl_IMAGE是我存储的一个基础地址,相当于http://.*.***.***:8080/myapp/img,imagesUrl[position]就是我的图片名,position

weixin_44764244的博客 1666

Android中的Banner轮播图的使用

Banner轮播图是一种常见的移动应用界面设计元素,用于展示多张图片或广告,并支持自动切换。它通常以水平方向循环滚动的形式呈现,用户可以通过手动滑动或自动播放查看不同的内容。以下是一份详细介绍Banner轮播图的内容:1.用途和场景:用于应用中展示广告、推广内容等。用于突出显示应用中的重要信息、特色功能等。在应用启动时,通过轮播图引导用户了解应用的特性。2.基本特征:支持自动切换轮播图内容,增强用户体验。允许用户通过手势滑动切换轮播图,提供交互性。

Sean_Word的博客 2269

【Android笔记90】Android之轮播图Banner的使用

​Banner是一个第三方的轮播图组件,它提供了非常简单的轮播图实现方式,之前的文章中,我有些过如何使用Android实现轮播图的效果,可以看下这篇文章【【Android笔记55】Android之如何使用ViewPager2实现自动轮播图的效果】,这种自己实现的轮播图有些复杂,如果项目中,有多个页面都需要轮播图,那就可想而知工作量得多大,所以这里介绍Banner轮播图组件,可以轻松的帮助我们实现轮播图效果。

✅ Java 开发工程师 2657

Fragment中利用banner实现轮播图(Banner2.2.2)

在Fragment中利用banner2.2.2实现轮播图

everythingiwant的博客 2858

PC端Banner轮播图设计与实现

通过@keyframes可以定义动画的多个关键帧,例如:from {opacity: 0;

weixin_34064233的博客 889

Android三方框架banner实现轮播图

Android三方框架banner实现轮播图关于效果图第一步,添加引用第二步,新增实体类及测试数据第三步,添加banner实例控件,修改主界面代码自定义图片+标题轮播图效果图你以为到这里就结束了?? 关于   本篇使用的是基于viewpager2的一个开源banner,性能、生命周期都有保障,就是有一点小的功能需要我们自己去修改。本篇也是作为简易音乐博客系列之一。 效果图 第一步,添加引用   在工程build下添加仓库maven: allprojects { repositories {

Tobey_r1的博客 5977

三、使用HM进行简单的视频隐写demo

三、使用HM进行简单的视频隐写前言一、实验环境二、实验思路三、实验过程3.1 提取原始载体3.2 使用LSB隐写算法进行隐写3.3 放回含密载体3.4 提取含密载体3.5 使用LSB提取算法进行比对四、碰到的问题以及解决思路4.1 块的结构体发生变化4.1.1 产生的原因4.1.2 解决方法4.2 一个有趣的现象4.2.1 产生的原因4.3 视频产生较大失真4.3.1 产生的原因4.3.2 解决方法五、总结 前言 在前两篇博客中介绍了基于HEVC/H.265视频编解码器的视频隐写的基本思路,本文将详细记录

杨酬勤的博客 1792

展会客流统计的客流统计系统,WiFi客流每时每客

一般展会的举行时间都在3-7天之间,展会作为市场部门一项重要工作,一直以来没有一项有效的工具能够提供数据支持。 展会最重要的是通过活动和产品来吸引参展者的参观,如何统计展会期间的客流量呢?如何通过将数据转化成为活动数据的支撑呢? 目前成熟的解决方案有,视频客流统计、WiFi客流统计、红外线客流统计等方式。由于展会通常的时间都比较短,视频、红外线客流统计采购及安装价格都比较高,需

isentech的博客 3994

【Android】轮播图——Banner

Banner轮播图是一种在网页和移动应用界面设计中常见的元素,主要用于在一个固定的区域内自动或手动切换一系列图片,以展示不同的内容或信息。这个控件在软件当中经常看到,商品促销、热门歌单、头像新闻等等。它不同于ViewPgaer在于无需手动进行翻页,它会自动进行轮播,但也可手动滑动到你所要看的页面。接下来就来学习轮播图的使用吧!

2301_79828182的博客 3989

BrepNet实战:5分钟搞定三维CAD模型的加工特征识别(附Python代码)

本文详细介绍了BrepNet在三维CAD模型加工特征识别中的实战应用,通过Python代码演示了从环境搭建到模型训练的全流程。BrepNet基于边界表示(BRep)的深度学习框架,能够高效识别加工特征,显著提升工业设计和智能制造领域的效率。文章还提供了性能优化和部署建议,帮助开发者快速实现AI驱动的几何特征识别。

weixin_29044713的博客 506

安卓中如何设置轮播图——banner

安卓中如何设置轮播图——banner 在安卓中制作app时我们有时候需要制作轮播图,实现图片自动循环播放的功能。虽然在安卓中可以实现,但是太麻烦了,所以我们导入banner控件去实现这个功能。 banner官网 1 首先导入依赖 添加依赖 implementation 'com.youth.banner:banner:2.1.0' implementation 'com.github.bumptech.glide:glide:4.12.0'//添加网络图片 添加网络权限 <uses-permiss

zhimingdaye的博客 4726

PySpark机器学习生产化陷阱:跨节点依赖问题的7种解决方案

隐式依赖陷阱使用ldd解决方案:在基础镜像中预装和路径冲突终极解法依赖树瘦身技巧用conda-tree可减少40%环境体积PySpark机器学习生产化的核心矛盾在于分布式环境的确定性与灵活性不可兼得。轻量级方案(1-3)牺牲一致性换取灵活性重量级方案(4-6)牺牲灵活性换取确定性混合方案(7)针对特殊场景补充正如某AI平台架构师所言:“环境一致性不是技术问题,而是工程纪律问题选择适合团队当前阶段的方案,建立严格的依赖管理流程,才能让PySpark真正扛起生产环境的大旗。

datacanvas2426的博客 909

科技与伦理的平衡点:人类计算的伦理

科技与伦理的平衡点:人类计算的伦理 关键词 科技与伦理 人类计算 隐私问题 道德决策自动化 公平性与偏见 法律与社会责任 摘要 本

AI天才研究院 1162

Banner轮播图(kotlin)

Banner轮播图 简介:(不多做介绍,直接上代码) 代码 1、依赖包添加 implementation 'com.youth.banner:banner:1.4.10' implementation 'com.github.bumptech.glide:glide:3.7.0' 2、网络权限 <uses-permission android:name="android.permissio...

wy313622821的博客 7777

YOLOV5 自动刷图脚本实战(十五)之如何找到正确的门

DXF是一个2D游戏,我们所看到的人物移动,其实是后面的背景在移动,我们所看到的画面,不过是一个完整背景中的一个镜头视角而已想要正确找到门的坐标,我们需要对不同的地图中的每个房间做一些配置信息。

qq_38892949的博客 2806

Banner实现轮播图

一.Banner实现轮播图: github官网:https://github.com/youth5201314/banner 1.思路: 1.依赖: implementation ‘com.youth.banner:banner:1.4.10’ //轮播图 <com.youth.banner.Banner android:id="@+id/banner" a...

qq_45488134的博客 873

基于Simulink和Control System Toolbox的线控转向(Steer-by-Wire)系统设计

通过上述步骤,我们成功设计并实现了基于 Simulink 和 Control System Toolbox 的线控转向(Steer-by-Wire)系统。该系统能够接收来自方向盘的角度指令,经过控制器处理后,驱动转向执行器(如电动机),实现对车辆前轮转向角度的精确控制。通过虚拟场景仿真、硬件在环测试和实车测试,验证了系统的响应速度、控制精度、车辆稳定性和实时性能,并通过参数优化进一步提升了系统的性能。

MHD0815的博客 549

VxWorks系列 快速导航

Vxworks系列快速阅览导航

Mr.Sugarcane 1308

最新kotlin android 轮播图的实现,超简单 - android banner

写在前面 本人android小白,刚学kotlinandroid ,所以这篇文章是给小白看的 由于项目中需要使用到轮播图,自己造轮子不太可能所以肯定是要用到第三方库的 但是我发现网上大部分都是java android的,或者又有一些都是太老旧 正文 此次采用的是youth5201314的banner库,这个项目在github上也是拥有超多的star 第一步 在gradle中添加banner 和 glide 依赖 (这里用到glide是需要用到他的图片加载,也可以不用具体请参考.....

qq_39909614的博客 5296

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Android使用banner实现自动手动轮播图

无图无真相 Banner Github地址:https://github.com/youth5201314/banner 首先添加依赖: //banner轮播框架 implementation 'com.youth.banner:banner:1.4.10' // Glide 图片加载 implementation 'com.github....

qq_38363506的博客 6353

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

安卓首页界面:用Banner框架实现Android轮播图效果

1111

qq_68469751的博客 4066

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Banner 轮播图之简单使用

一:Banner框架简介 项目地址:https://github.com/youth5201314/banner。该框架是基于RecyclerView和ViewPager来实现的。在之前要实现轮播图需要先自定义一简单RecyclerView,然后使用Timer来转动其坐标位置,对初学者而言十分不友好。由于官网上讲的详细,所以本文是本着“最通俗、最易懂、最简单”而来。 二:使用方法 由于该框架是基于RecyclerView的,也就是说只要有RecyclerView的基础,上手该框架没有任何难度且快速。 1:添

kicinio的博客 2900

Qt Quick Controls2 — 轮播图 Banner 图的实现

Qt Quick Controls2 — 轮播图 Banner 图的实现 贴码如下: import QtQuick 2.0 import QtQuick.Controls 2.5 import QtQuick.Layouts 1.3 Rectangle { id:root property int i: 0; //图片地址数组↓ property var ima...

HiroGuo 的博客 602
上一篇: 计算机网络面试题总结
下一篇: Java垃圾回收机制(GC原理)解析
浮空over
博客等级 码龄7年 6粉丝 33原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值