美文网首页
Android开发ViewPager手动无限轮播循环(banne

Android开发ViewPager手动无限轮播循环(banne

作者: 你的益达233 | 来源:发表于2021-01-29 11:16 被阅读0次

前言

  • 这里不是通过原生的ViewPager实现的,通过banner的库来实现viewpager的需求
  • 它本质也是操作viewpager,但是没法读懂完整代码,或者说关键代码没理解透切,只能拿来用

效果图

轮播.png

有两个库可以实现:

1、com.youth.banner:banner:2.1.0 因为项目不是Androidx,所以暂时弃用
2、com.github.Achenglove:AchengImageSliders:v1.0.2 公司同事写的

本文章用第二个库

开始实现

1、xml

<com.ccr.achengimagesilderlibrary.SliderLayout
    android:id="@+id/slider_live"
    android:layout_width="match_parent"
    android:layout_height="78dp"
    app:layout_constraintTop_toBottomOf="@id/tv_course_live_title"
    android:layout_marginTop="20dp"/>  

2、具体使用示例代码

SliderLayout它添加的View需要继承BaseSliderView
效果图的View

class LiveSliderView(context:Context,var item: HomeNewBean.LiveCourse) : BaseSliderView(context) ,View.OnClickListener{
override fun getView(): View {

    val v = LayoutInflater.from(this.context).inflate(R.layout.fragment_home_course_live_item, null as ViewGroup?)
    var tvTitle = v.findViewById<TextView>(R.id.title_text)
    tvTitle.setText(item.title)

    var name_text = v.findViewById<TextView>(R.id.name_text)
    name_text.setText(item.publisher)

    var iv_img = v.findViewById<ImageView>(R.id.iv_img)
    GlideHelper.load(context,item.img?:"",iv_img,4)

    var iv_live_gif = v.findViewById<ImageView>(R.id.iv_live_gif)

    if (item.live == "直播中"){
        Glide.with(mContext)
                .asGif()
                .load(R.drawable.live)
                .into(iv_live_gif)
    } else {
        iv_live_gif.setImageResource(R.mipmap.icon_live_status)
    }

    val status_text = v.findViewById<TextView>(R.id.status_text)
    status_text.setText(item.status?:"")

    v.setOnClickListener(this)

    return v
}

override fun onClick(v: View?) {
    
}


}

你看从中你可以做的文章就很多,我的布局是不是可以是viewpager,recycleview等等
使用代码:

                val liveSliderView = LiveSliderView(mActivity!!,liveData.live_course[i])

                slider_live?.addSlider(liveSliderView)  

这里的添加,我们也可以添加不同的SliderView对不对,这样它轮播的内容就可以不一样了
最后还有些SliderLayout的基本属性

                val str = MyApplication.context?.resources.getStringArray(R.array.silder)
                slider_live?.setPresetTransformer(str[0])
                slider_live?.setPresetIndicator(SliderLayout.PresetIndicators.Center_Bottom)
                slider_live?.setCustomAnimation(DescriptionAnimation(false))//是否显示底部弹框
                slider_live?.setDuration(3000)
                slider_live?.indicatorVisibility = PagerIndicator.IndicatorVisibility.Invisible //不要原来的指示器
                slider_live?.addOnPageChangeListener(object :ViewPagerEx.OnPageChangeListener{
                    override fun onPageScrollStateChanged(p0: Int) { 
                    }
                    override fun onPageScrolled(p0: Int, p1: Float, p2: Int) {
                    }

                    override fun onPageSelected(pos: Int) {
                    }

                })  
                slider_live?.startAutoCycle()  

如果这个库还没法满足你需求,就用com.youth.banner:banner:2.1.0看看,这个更强大些

相关文章

网友评论

      本文标题:Android开发ViewPager手动无限轮播循环(banne

      本文链接:https://www.haomeiwen.com/subject/bilqtltx.html