主要是实现类似这个效果
这个效果其实也很简单,只是之前看到一些网上的实现方法感觉特别复杂,就决定自己写一个,也当做个记录。
首先是初始化组件
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
欢迎关注本人公众号和小程序,谢谢