Android----banner使用详解

昨天10.31 ,斗破苍穹的三年之约终于出来了,自己也等了很久很久,敬师长,敬家人,敬朋友,敬每一个前行路上正在奋战的自己,星光不问赶路人,时间不负有心人。

效果图:

  1. 添加依赖

      implementation 'com.youth.banner:banner:2.1.0'
    
  2. 添加权限到你的 AndroidManifest.xml

    <!-- if you want to load images from the internet -->
    <uses-permission android:name="android.permission.INTERNET" />
    
  3. 布局文件

    <com.youth.banner.Bannerandroid:id="@+id/banner"android:layout_width="0dp"android:layout_height="250dp"android:layout_margin="10dp"app:banner_radius="20dp"    // 圆角android:clickable="true"   //  是否可点击app:banner_indicator_selected_color="#95F2EC"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.157"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" />
    
  4. 逻辑代码

    package com.hnucm.xiaotang;import android.os.Bundle;import androidx.fragment.app.Fragment;import android.util.Log;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;import com.bumptech.glide.Glide;
    import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
    import com.bumptech.glide.request.RequestOptions;
    import com.youth.banner.Banner;
    import com.youth.banner.adapter.BannerImageAdapter;
    import com.youth.banner.holder.BannerImageHolder;
    import com.youth.banner.indicator.CircleIndicator;
    import com.youth.banner.listener.OnBannerListener;import org.json.JSONArray;
    import org.json.JSONException;
    import org.xutils.common.Callback;
    import org.xutils.http.RequestParams;
    import org.xutils.x;import java.util.ArrayList;
    import java.util.List;public class ShouYeFragment extends Fragment implements OnBannerListener {@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {View inflate = inflater.inflate(R.layout.fragment_shou_ye, container, false);Banner banner =inflate.findViewById(R.id.banner);List<String> imgList = new ArrayList<>();x.Ext.init(getActivity().getApplication());x.Ext.setDebug(BuildConfig.DEBUG);  // 是否输出debug日志, 开启debug会影响性能.x.view().inject(getActivity());  //没有用到view注解可以先不用imgList.add("https://cdn.jsdelivr.net/gh/Yqifei/Blog-Image@master/20211026/image.6719h9mvs700.png");imgList.add("https://cdn.jsdelivr.net/gh/Yqifei/Blog-Image@master/20211031/800-(11).2txrpbqztva0.jpg");imgList.add("https://cdn.jsdelivr.net/gh/Yqifei/Blog-Image@master/20211031/800-(5).5s6zwxy19v40.jpg");imgList.add("https://cdn.jsdelivr.net/gh/Yqifei/Blog-Image@master/20211031/800-(10).24p8puxcmqbk.jpg");imgList.add("https://cdn.jsdelivr.net/gh/Yqifei/Blog-Image@master/20211031/800-(14).pizaxijh534.jpg");RequestParams params = new RequestParams("https://www.fastmock.site/mock/08392ee207964eb010bf22b157103494/androidJavaEE/banner");x.http().get(params, new Callback.CommonCallback<String>() {@Overridepublic void onSuccess(String result) {try {JSONArray jsonArray = new JSONArray(result);for (int i=0;i<jsonArray.length();i++){imgList.add((String)jsonArray.get(i));}banner.setDatas(imgList);    //  动态更新banner数据} catch (JSONException e) {e.printStackTrace();}}@Overridepublic void onError(Throwable ex, boolean isOnCallback) {}@Overridepublic void onCancelled(CancelledException cex) {}@Overridepublic void onFinished() {}});banner.setAdapter(new BannerImageAdapter<String>(imgList) {@Overridepublic void onBindView(BannerImageHolder holder, String data, int position, int size) {System.out.println("hello TEST");Glide.with(holder.itemView).load(data).apply(RequestOptions.bitmapTransform(new RoundedCorners(30))).into(holder.imageView);}}).setIndicator(new                                      CircleIndicator(getContext())).setLoopTime(1000).setOnBannerListener(this);//  设置圆形指示点,设置循环时间,设置监听器return inflate;}@Overridepublic void OnBannerClick(Object data, int position) {   //  监听每一个图片的点击事件Log.i("tag", "你点了第"+position+"张轮播图");}
    }
    
  5. 常见的一些属性设置

    方法

    更多方法以实际使用为准,下面不一定全部列出了

    方法名 返回类型 描述
    getAdapter() extends BannerAdapter 获取你设置的BannerAdapter
    getViewPager2() ViewPager2 获取ViewPager2
    getIndicator() Indicator 获取你设置的指示器(没有设置直接获取会抛异常哦)
    getIndicatorConfig() IndicatorConfig 获取你设置的指示器配置信息(没有设置直接获取会抛异常哦)
    getRealCount() int 返回banner真实总数
    setUserInputEnabled(boolean) this 禁止手动滑动Banner;true 允许,false 禁止
    setDatas(List) this 重新设置banner数据
    isAutoLoop(boolean) this 是否允许自动轮播
    setLoopTime(long) this 设置轮播间隔时间(默认3000毫秒)
    setScrollTime(long) this 设置轮播滑动的时间(默认800毫秒)
    start() this 开始轮播(主要配合生命周期使用),或者你手动暂停再次启动
    stop() this 停止轮播(主要配合生命周期使用),或者你需要手动暂停
    setAdapter(T extends BannerAdapter) this 设置banner的适配器
    setAdapter(T extends BannerAdapter,boolean) this 设置banner的适配器,是否支持无限循环
    setOrientation(@Orientation) this 设置banner轮播方向(垂直or水平)
    setOnBannerListener(this) this 设置点击事件,下标是从0开始
    addOnPageChangeListener(this) this 添加viewpager2的滑动监听
    setPageTransformer(PageTransformer) this 设置viewpager的切换效果
    addPageTransformer(PageTransformer) this 添加viewpager的切换效果(可以设置多个)
    setIndicator(Indicator) this 设置banner轮播指示器(提供有base和接口,可以自定义)
    setIndicator(Indicator,boolean) this 设置指示器(传false代表不将指示器添加到banner上,配合布局文件,可以自我发挥)
    setIndicatorSelectedColor(@ColorInt) this 设置指示器选中颜色
    setIndicatorSelectedColorRes(@ColorRes) this 设置指示器选中颜色
    setIndicatorNormalColor(@ColorInt) this 设置指示器默认颜色
    setIndicatorNormalColorRes(@ColorRes) this 设置指示器默认颜色
    setIndicatorGravity(@IndicatorConfig.Direction) this 设置指示器位置(左,中,右)
    setIndicatorSpace(int) this 设置指示器之间的间距
    setIndicatorMargins(IndicatorConfig.Margins) this 设置指示器的Margins
    setIndicatorWidth(int,int) this 设置指示器选中和未选中的宽度,直接影响绘制指示器的大小
    setIndicatorNormalWidth(int) this 设置指示器未选中的宽度
    setIndicatorSelectedWidth(int) this 设置指示器选中的宽度
    setIndicatorRadius(int) this 设置指示器圆角,不要圆角可以设置为0
    setIndicatorHeight(int) this 设置指示器高度
    setBannerRound(float) this 设置banner圆角(还有一种setBannerRound2方法,需要5.0以上)
    setBannerGalleryEffect(int,int,float) this 画廊效果
    setBannerGalleryMZ(int,float) this 魅族效果
    setStartPosition(int) this 设置开始的位置 (需要在setAdapter或者setDatas之前调用才有效哦)
    setIndicatorPageChange() this 设置指示器改变监听 (一般是为了配合数据操作使用,看情况自己发挥)
    setCurrentItem() this 设置当前位置,和原生使用效果一样
    addBannerLifecycleObserver() this 给banner添加生命周期观察者,内部自动管理banner的生命周期

    Attributes属性

    在banner布局文件中调用,如果你自定义了indicator请做好兼容处理。 下面的属性并不是每个指示器都用得到,所以使用时要注意!

    Attributes format describe
    banner_loop_time integer 轮播间隔时间,默认3000
    banner_auto_loop boolean 是否自动轮播,默认true
    banner_infinite_loop boolean 是否支持无限循环(即首尾直接过渡),默认true
    banner_orientation enum 轮播方向:horizontal(默认) or vertical
    banner_radius dimension banner圆角半径,默认0(不绘制圆角)
    banner_indicator_normal_width dimension 指示器默认的宽度,默认5dp (对RoundLinesIndicator无效)
    banner_indicator_selected_width dimension 指示器选中的宽度,默认7dp
    banner_indicator_normal_color color 指示器默认颜色,默认0x88ffffff
    banner_indicator_selected_color color 指示器选中颜色,默认0x88000000
    banner_indicator_space dimension 指示器之间的间距,默认5dp (对RoundLinesIndicator无效)
    banner_indicator_gravity dimension 指示器位置,默认center
    banner_indicator_margin dimension 指示器的margin,默认5dp,不能和下面的同时使用
    banner_indicator_marginLeft dimension 指示器左边的margin
    banner_indicator_marginTop dimension 指示器上边的margin
    banner_indicator_marginRight dimension 指示器右边的margin
    banner_indicator_marginBottom dimension 指示器下边的margin
    banner_indicator_height dimension 指示器高度(对CircleIndicator无效)
    banner_indicator_radius dimension 指示器圆角(对CircleIndicator无效)
    banner_round_top_left boolean 设置要绘制的banner圆角方向(如果都不设置默认全部)
    banner_round_top_right boolean 设置要绘制的banner圆角方向(如果都不设置默认全部)
    banner_round_bottom_left boolean 设置要绘制的banner圆角方向(如果都不设置默认全部)
    banner_round_bottom_right boolean 设置要绘制的banner圆角方向(如果都不设置默认全部)
  6. github官网: GitHub - youth5201314/banner:

    Android----banner使用详解相关推荐

    1. 《Android游戏开发详解》——第1章,第1.6节函数(在Java中称为“方法”更好)...

      本节书摘来自异步社区<Android游戏开发详解>一书中的第1章,第1.6节函数(在Java中称为"方法"更好),作者 [美]Jonathan S. Harbour,更 ...

    2. JMessage Android 端开发详解

      JMessage Android 端开发详解 目前越来越多的应用会需要集成即时通讯功能,这里就为大家详细讲一下如何通过集成 JMessage 来为你的 App 增加即时通讯功能. 首先,一个最基础的 ...

    3. 《Java和Android开发实战详解》——2.5节良好的Java程序代码编写风格

      本节书摘来自异步社区<Java和Android开发实战详解>一书中的第2章,第2.5节良好的Java程序代码编写风格,作者 陈会安,更多章节内容可以访问云栖社区"异步社区&quo ...

    4. Android事件流程详解

      Android事件流程详解 网络上有不少博客讲述了android的事件分发机制和处理流程机制,但是看过千遍,总还是觉得有些迷迷糊糊,因此特地抽出一天事件来亲测下,向像我一样的广大入门程序员详细讲述an ...

    5. Android Studio 插件开发详解二:工具类

      转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78112856 本文出自[赵彦军的博客] 在插件开发过程中,我们按照开发一个正式的项 ...

    6. 《Android游戏开发详解》一2.16 区分类和对象

      本节书摘来异步社区<Android游戏开发详解>一书中的第2章,第2.16节,作者: [美]Jonathan S. Harbour 译者: 李强 责编: 陈冀康,更多章节内容可以访问云栖社 ...

    7. Android Framework系统服务详解

      Android Framework系统服务详解 操作环境 系统:Linux (Ubuntu 12.04) 平台:高通 Android版本:5.1 PS: 符号...为省略N条代码 一.大致原理分析 A ...

    8. android屏幕适配详解

      android屏幕适配详解 官方地址:http://developer.android.com/guide/practices/screens_support.html 一.关于布局适配建议 1.不要 ...

    9. Android LiveData组件详解以及LiveDataBus

      转载请标明出处:https://blog.csdn.net/zhaoyanjun6/article/details/99749323 本文出自[赵彦军的博客] 一.LiveData简介 LiveDat ...

    10. Android Studio 插件开发详解四:填坑

      转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78265540 本文出自[赵彦军的博客] 系列目录 Android Gradle使用 ...

    最新文章

    1. 弄懂“进程”(下):进程的控制、同步和通信
    2. KTHREAD 结构体属性介绍
    3. [转]在VS中为C/C++源代码文件生成对应的汇编代码文件(.asm)
    4. step5 . day4 网络编程 基于UDP协议的网络编程流程及API
    5. C语言程序设计 | 程序环境和预处理:翻译环境和执行环境、宏、条件编译
    6. Nginx模块学习之————accesskey权限模块使用(简单的m3u8防盗链)
    7. tars框架php,TarsPHP: TARS-PHP是针对php使用tars二进制协议,以及tars平台整体运维、RPC等一系列能力的解决方案...
    8. python解释器的提示符是shell嘛_python解释器怎么运行
    9. 宝塔linux 屏蔽ip,宝塔屏蔽国外IP保护网站安全
    10. 网络规划设计师水平考试备考资料(2.计算机网络原理)
    11. 给机器人罗宾写一封英语回信_小学英语人教(13版三起点)六年级上册Unit1
    12. 台湾瑞昱Realtek RTL8153-VC-CG USB3.0 to lan简介
    13. 计算机机房动环系属于什么分项,动环监控系统
    14. FZU 2213 Common Tangents(公切线)
    15. 生日快乐网站模板(HTML5+JS+CSS) 带音效
    16. 【JavaWeb】火车票管理系统 (三)用户登录-03
    17. 如何对下拉菜单进行截图
    18. Python 生成图片验证码(详解)
    19. date类型的时间转换成年月日格式
    20. Mybatis再学习

    热门文章

    1. openssl命令查看证书有效期_使用 openssl 生成证书
    2. 天下大事必作于细,聊聊腾讯兼容测试的升级“打怪”历程
    3. 抽奖系统的实现(两种)
    4. android直播sdk+美颜,直播中有没有美颜SDK有何区别?
    5. 单片机毕业设计 stm32万能红外遥控器
    6. 八戒帮扶V5v1.39 VUE任务系统微信公众平台任务系统完美运营
    7. JavaScript智能填写续写版(QQ邮箱地址栏简化版)
    8. 单元测试@Test+@RunWith(SpringRunner.class)
    9. 被社会毒打的20年毕业的后端
    10. revit模型怎么在手机上看_e建筑手机版下载-e建筑(轻松查看CAD图纸和BIM模型)1.2.4 官方苹果版-东坡下载...