SkillAgentSearch skills...

RxBanner

一个灵活可制定的基于 Recyclerview 的轮播图控件,支持自动轮播,无限循环。 同时可关闭无限循环变成 引导页 ,带有引导完成接口回调

Install / Use

/learn @leveychen/RxBanner
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

RxBanner

[停止维护]

API Apache 2.0 License

一个灵活可制定的基于 Recyclerview 的轮播图控件,支持自动轮播,无限循环。

同时可关闭无限循环变成 引导页 ,带有引导完成接口回调,详见demo

中文文档   English

更新日志

1.1.3

1.完善一些点击事件的逻辑

2.新增当 rb_canSwipe = false 时的点击事件响应

3.修复 自定义指示器 刷新数据时没有默认选中的问题

1.1.2

1.新增 引导页 监听 RxBannerGuideFinishedListener ,调整引导页功能实现

2.新增单张图片时可否滑动设置 rb_canSwipeWhenSingle, 仅单张图片时有效

1.1.1

1.新增滑动阻尼设置 rb_flingDamping, 阻尼越大滑动越困难,默认为RecyclerView标准最小滑动值. 修复 issues #2

2.新增自定义指示器,用法与说明请下翻至 指示器 部分, 由 CircleIndicator 修改整合,感谢原作者, 原始需求 issues #3

Demo Apk

fir.im      rxbanner_demo.apk

github      rxbanner_demo.apk

预览

    

    

引用

1.添加 jitpack

    allprojects {
        repositories {
            ...
            maven { url 'https://jitpack.io' }
        }
    }

2.导入引用    

    implementation 'com.github.leveychen:RxBanner:1.1.4'

LATEST RELEASE

依赖出错问题

由于本项目采用28.0.0-rc02的版本编译,28以下版本可能会出现依赖失败的情况,处理办法如下:

app.gradle 最下面添加

configurations.all {
    resolutionStrategy.eachDependency { DependencyResolveDetails details ->
        def requested = details.requested
        if (requested.group == 'com.android.support') {
            if (!requested.name.startsWith("multidex")) {
                //这里指定需要统一的依赖版本,这里统一为27.1.1,这里以27.1.1为例
                details.useVersion '27.1.1'
            }
        }
    }
}

强制使用你的主项目的编译版本

用法

layout

see Attributes

    <cn.levey.bannerlib.RxBanner
        android:id="@+id/rx_banner"
        android:layout_width="match_parent"
        android:layout_height="160dp"/>

java

    banner = findViewById(R.id.rx_banner);
    banner
        .setLoader(new ImageLoader())               // see `image loader`
        .setConfig(config)                          // see `config`
        .setDatas(iamgesUrls, titles)
        .start();

一些 image loader 的栗子

Fresco     Glide     Picasso     UniversalImageLoader

可以愉快的玩耍了,下面是一些可选内容

配置信息 -可选

自定义配置信息,所有参数设置均和 xml 布局里一致,优先级高于 xml 布局文件

    RxBannerConfig config = banner.getConfig();
    config.set(value);
    ...
    banner.setConfig(config);
    banner.start();

setConfig() 必须在 setDatas()start() 之前设置。

监听器 -可选

    点击图片时的回调
    banner.setOnBannerClickListener(new RxBannerClickListener())
        onItemClick(int position, Object data)
        onItemLongClick(int position, Object data)

    //点击标题时的回调
    banner.setOnBannerTitleClickListener(new RxBannerTitleClickListener())
        onTitleClick(int position, String title);

    //图片切换时的回调
    banner.setOnBannerChangeListener(new RxBannerChangeListener())
        onBannerSelected(int position)
        onBannerScrollStateChanged(int state)

    //一旦定义引导页监听就可变成引导页
    banner.setOnGuideFinishedListener(new RxBannerGuideFinishedListener()
        onGuideFinished()

生命周期

更好的 在 Activity 、 Fragment 和其他 view 中管理生命周期

    banner.onResume()
    banner.onPause()
    banner.onDestroy()

全局设置 -可选

    RxBannerConfig
        .getInstance()
        .setDebug(true)  // debug: default false
        .setScrollStateChangedListener(new RxBannerScrollStateChangedListener()
        .setLoader(new RxBannerImageViewLoader())
        .setOrientation(LinearLayout.HORIZONTAL)
        .setOrderType(RxBannerConfig.OrderType.ASC)
        .setTimeInterval(5000);

引导页

定义一下布局就行了

activity_guide.xml

为了更好的引导页体验,最好关闭无限循环和自动轮播

    banner:rb_infinite="false"
    banner:rb_autoPlay="false"

然后监听一下回调

    banner.setOnGuideFinishedListener(new RxBannerGuideFinishedListener()
        onGuideFinished()
        // todo

大功告成

属性

所有属性均以 rb_ 开头

Banner

|属性|格式|初始值|描述 |---|---|---|---| |rb_autoPlay|boolean|true|以 rb_timeInterval 的间隔自动播放 |rb_infinite|boolean|true|是否无限循环,关闭无限循环并且设置引导页回调即可变成引导页 |rb_canSwipe|boolean|true|是否允许手动滑动,此设置与自动轮播无关 |rb_canSwipeWhenSingle|boolean|true|单张图片时是否能手动滑动,此设置与自动轮播无关 |rb_aspectRatio|float|/| 宽高比,数值必须大于0,拿16:9为例就是1.7778,高度等于宽度则为1,同时 android:layout_height 不能为 wrap_content 或者 match_parent。需要随便定义一个数值, 比如 1dp。当 orientation = vertical 且在ScrollView中时,高度不推荐大于父容器,否则可能滑动被拦截,导致且在ScrollView中时无法滑动 |rb_timeInterval|integer (millisecond)|5000| 200毫秒以上 |rb_orientation|horizontal / vertical|horizontal| / |rb_itemPercent|integer|100| 宽度或者高度的百分比,取决于 rb_orientation 方向 |rb_itemScale|float|1|缩放比 |rb_itemSpace|dimension|0|两个item之间的间距 |rb_centerAlpha|float|1|中间 item 透明度 |rb_sideAlpha|float|1|旁边 item 透明度 |rb_itemMoveSpeed|float|1|滑动速度 |rb_flingDamping|float|1|滑动阻尼,越大越不容易滑动 |rb_orderType|asc / desc|asc| 升序或者降序排列 |rb_viewPaperMode|boolean|true|跟 ViewPaper 一样,一次滑动一页 |rb_emptyViewText|string|'暂无图片'| 当图片为空且 'rb_emptyViewResource' 没有定义时 |rb_emptyViewResource|reference| / | 当图片为空时显示

标题

|属性|格式|初始值|描述 |---|---|---|---| |rb_title_visible|boolean|true| / |rb_title_gravity|gravity|START| / |rb_title_layout_gravity|gravity|CENTER_HORIZONTAL and BOTTOM| / |rb_title_margin|dimension|0dp| margin |rb_title_padding|dimension|3dp| padding |rb_title_width|dimension / enum|MATCH_PARENT| / |rb_title_height|dimension / enum|WRAP_CONTENT| / |rb_title_size|dimension|14sp| / |rb_title_color|color|Color.WHITE| / |rb_title_backgroundColor|color|#55000000| / |rb_title_backgroundResource|reference| / | / |rb_title_marquee|boolean|true| 跑马灯 |rb_title_lineSpacingMultiplier|float|1.0f| lineSpacingMultiplier

指示器

|属性|格式|初始值|描述 |---|---|---|---| |rb_indicator_visible|boolean|true| / |rb_indicator_clickable|boolean|true| 是否可以点击指示器来切换banner |rb_indicator_orientation|horizontal / vertical|horizontal|/ |rb_indicator_layout_gravity|gravity|BOTTOM / END|/ |rb_indicator_radius|dimension|5dp|指示器大小 |rb_indicator_textSize|dimension|14sp|numeric numeric_circle 专用 |rb_indicator_textColor|color|Color.WHITE|numeric numeric_circle 专用 |rb_indicator_backgroundColor|color|/|numeric numeric_circle 专用 |rb_indicator_backgroundResource|reference|/|numeric numeric_circle 专用 |rb_indicator_scale|float|0.7| scale or scale_down 专用 |rb_indicator_margin|dimension|8dp| margin |rb_indicator_padding|dimension|3dp| padding |rb_indicator_selected_color|color|#FFFFFF| / |rb_indicator_unselected_color|color|#33FFFFFF| / |rb_indicator_interactiveAnimation|boolean|false| / |rb_indicator_animationDuration|integer|350|毫秒 |rb_indicator_animationType|type|none|see AnimationType |rb_indicator_rtl_mode|on / off / auto|auto|支持左右自动布局 RTL |rb_indicator_selectedResource|reference|/| custom 专用,用法参考 CircleIndicator |rb_indicator_unselectedResource|reference|/| custom 专用,用法参考 CircleIndicator |rb_indicator_animatorResource|reference|/|custom 专用,用法参考 CircleIndicator |rb_indicator_animatorReverseResource|reference|/|custom 专用,用法参考 CircleIndicator

AnimationType

这里抄的,了解一下 PageIndicatorView / CircleIndicator

|名称|属性| 预览 |---|---|--- |AnimationType.NONE|none| anim_none |AnimationType.COLOR|color |anim_color |AnimationType.SCALE|scale |anim_scale |AnimationType.SCALE_DOWN|scale_down|anim_swap |AnimationType.SLIDE|slide|anim_slide |AnimationType.WORM|worm|anim_worm |AnimationType.FILL|fill|![anim_worm](

View on GitHub
GitHub Stars80
CategoryDevelopment
Updated1y ago
Forks13

Languages

Java

Security Score

70/100

Audited on Apr 10, 2024

No findings