随着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. PCA(1):基础知识介绍
  2. MikuMikuDance 6 菜单汉化补丁
  3. 是我,一行代码三个 Bug!!! | 每日趣闻
  4. 第八届蓝桥杯决赛 图书排列
  5. linux限制单个用户使用,linux下限制用户使用系统资源
  6. 高程5.7单体内置对象 5.8小结
  7. 增强版的RecycleViewAdapter,能够直接使用
  8. 重订增广(清朝·周希陶)
  9. txt转mobi格式
  10. excel表格如何不需鼠标往下拖动而自动往下填
  11. cmd设置文件兼容性
  12. STK航空仿真(一)界面配置和插入模型
  13. Centos7.4-docker安装部署实战
  14. Excel日期格式转为常规文本格式
  15. 【模型分享】全网质量最高最全《王者荣耀》角色3D模型独立角色
  16. CF 1139C Edgy Trees
  17. 桌面计算机右击选项里没有管理员,为什么没有以管理员身份运行选项
  18. buid和version之间的区别
  19. php1064,PHP创建表错误1064
  20. python爬虫实战(2)

热门文章

  1. 【iOS取证篇】iPhone7系列进入恢复模式和DFU模式的操作方法
  2. 【提示学习】Exploiting Cloze Questions for Few Shot Text Classification and Natural Language Inference
  3. 6种自媒体赚钱方法!
  4. 时间转换——Java
  5. 中国投入产出表(1990-2018年)
  6. HBuilder中wap2app(将移动站点转换为移动应用)
  7. 打赏少了,监管严了,秀场直播又变天
  8. 百度回应“搜索引擎百度已死”
  9. IT时代周刊封面文章:百度搜索公正性彻底调查
  10. 令人惊叹的概念手机--“福田杯”中国手机设计大赛的作品系列