RecyclerView方案打造的可见页为两页或三页的轮播控件

使用


implementation 'com.vegen.open:VRecyclerViewBanner:1.1.0'

其中 ‘+’ 请填写版本号我的Github项目地址
Download 后的最新版本

示例(kotlin)


<com.vegen.open.library.VRecyclerViewBanner
        android:id="@+id/banner_type1"
        android:layout_width="match_parent"
        android:layout_height="140dp"
        android:layout_marginTop="10dp"
        android:layout_marginBottom="10dp"
        app:centerScale="1.2"
        app:itemSpace="10"
        app:autoPlaying="true"
        app:showIndicator="false">
</com.vegen.open.library.VRecyclerViewBanner>
var bannerDataList = arrayListOf(
                "https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=1836951760,4163997228&fm=27&gp=0.jpg",
                "https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=4266268942,741349847&fm=27&gp=0.jpg",
                "https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=3776651069,3057832255&fm=26&gp=0.jpg"
        )
        
var adapter = HomeBannerAdapter(bannerDataList)
banner_type1.setAdapter(adapter)
banner_type1.setCurrentIndex(1)

轮播样式的 Adapter

class HomeBannerAdapter(var bannerList: ArrayList<String>) : RecyclerView.Adapter<HomeBannerAdapter.ViewHolder>() {

    private var onBannerItemClickListener: VRecyclerViewBanner.OnBannerItemClickListener? = null

    override fun onBindViewHolder(p0: ViewHolder, p1: Int) {
        var imgUrl = bannerList[p1]
        Glide.with(p0.ivBg.context).load(imgUrl).into(p0.ivBg)
        p0.itemView.setOnClickListener {
            onBannerItemClickListener?.onItemClick(p1)
        }
    }

    override fun onCreateViewHolder(p0: ViewGroup, p1: Int): ViewHolder {
        val view = LayoutInflater.from(p0.context).inflate(R.layout.item_home_bannner, p0, false)
        return ViewHolder(view)
    }

    override fun getItemCount(): Int {
        return bannerList?.size
    }

    fun setOnBannerItemClickListener(onBannerItemClickListener: VRecyclerViewBanner.OnBannerItemClickListener) {
        this.onBannerItemClickListener = onBannerItemClickListener
    }


    class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
        var ivBg: ImageView
        var tvName: TextView

        init {
            tvName = itemView.findViewById(R.id.tv_name)
            ivBg = itemView.findViewById(R.id.iv_bg)
        }
    }
}

demo 效果如下
在这里插入图片描述

相关属性


属性名称方法意义类型默认值
app:showIndicatorsetShowIndicator(boolean showIndicator)是否显示指示器booleanfalse
app:intervalsetAutoPlayDuration(int autoPlayDuration)轮播时间间隔int4000
app:isAutoPlayingsetAutoPlaying(boolean isAutoPlaying)是否开启自动轮播booleantrue
app:orientationsetOrientation(int orientation)轮播图方向enumhorizontal
app:itemSpacesetItemSpace(int itemSpace)图片间距int20
app:centerScalesetCenterScale(float centerScale)当前图片缩放比列float1.2
app:moveSpeedsetMoveSpeed(float moveSpeed)滚动速度,越大越快float1.0
app:showItemCountsetShowItemCount(int count)可视范围内显示的个数enumTHREE
app:firstItemMarginLeftsetFirstItemMarginLeft(float marginLeft)第一个 item 的左边距,showItemCount=TWO 时才生效的属性dimension0dp

项目地址


Github项目地址:https://github.com/Vegen/VRecyclerViewBanner

致谢
RecyclerBanner 参考了部分源码

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值