RecyclerView详解(六):实现列表上下循环滑动的需求

主要是实现类似这个效果
在这里插入图片描述
这个效果其实也很简单,只是之前看到一些网上的实现方法感觉特别复杂,就决定自己写一个,也当做个记录。

首先是初始化组件

private fun initUI() {
        setContentView(R.layout.activity_rv_animation)
        tv_title.text = "上下滑动的动画效果"
        val linearLayoutManager = LinearLayoutManager(this)
        rv_message.layoutManager = linearLayoutManager
        homeAdapter = HomeAdapter()
        rv_message.adapter = homeAdapter

        /**
         * 既然是动画,就会有时间,我们把动画执行时间变大一点来看一看效果
         */
        val defaultItemAnimator = DefaultItemAnimator()
        defaultItemAnimator.addDuration = 500
        defaultItemAnimator.removeDuration = 500
        rv_message.itemAnimator = defaultItemAnimator
    }

显示的动画也可以自己写,不过我这边只是用了默认的动画,简单更改了一下动画的时间,可以看起来更柔和一点。

之后就是需要一个定时操作类,这边使用handler进行实现。

 private val mHandler: Handler = object: Handler(){
        override fun handleMessage(msg: Message) {
            super.handleMessage(msg)
            if(mDatas.size > 2){
                val mes = mDatas.removeAt(0)
                homeAdapter!!.notifyItemRemoved(0)

                mDatas.add(mes)
                homeAdapter!!.notifyItemInserted(mDatas.size-1)
                sendEmptyMessageDelayed(1,2500)
            }

        }
    }

这里需要使用notifyItemxxx对指定位置进行刷新,才能有动画效果。

git地址:https://gitee.com/stonezry/AndroidDemo

欢迎关注本人公众号和小程序,谢谢
在这里插入图片描述

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/stonezry/article/details/106192348