recyclerview 滑动到当前_Android RecyclerView 滚动到中间位置

最近看到QQ音乐的歌词每次滑动后都可以滚回到中间位置。觉得甚是神奇,打开开发者模式显示布局,发现歌词部分不是采用 android 控件的写的,应该是前端写的。于是,我想,能不能用 recyclerView 实现这个自动回滚到中间位置呢。

功夫不负有心人,查找了一些资料之后,终于搞定了。

下面由我细细讲来。

目标

点击某个条目,在经过4s无任何操作之后,该条目滚动到中间位置显示。点击后,用户在滑动,等用户不操作后再开始延时。用户多次点击,记最后一次点击位置。

分析

首先先考虑,滚动到指定位置是如何操作的?

//滚动到指定位置

recyclerView.scrollToPosition(position);//平滑滚动到指定位置

recyclerView.smoothScrollToPosition(position);

有没有滚动到制定像素位置呢?

//scrollBy(x, y)这个方法是自己去控制移动的距离,单位是像素,所以在使用scrollBy(x, y)需要自己去计算移动的高度或宽度。

recyclerView.scrollBy(x, y)

可是,问题是滚动到中间位置啊?这个怎么办呢?这样子行不行呢?

mRecyclerView.scrollToPosition(0);

mRecyclerView.scrollBy(0,400);

先滚动到制定位置,在滚动一段距离不就好了?运行发现,这两行代码只执行第一行,第二行无效。

debug 调试看了下,还是没有弄懂,实现太复杂。

那就是说这样是不行的,那有没有其他办法呢?

RecyclerView 有一个滚动监听方法:

mRecyclerView.addOnScrollListener(newRecyclerView.OnScrollListener() {

@Overridepublic void onScrollStateChanged(RecyclerView recyclerView, intnewState) {super.onScrollStateChanged(recyclerView, newState);

}

@Overridepublic void onScrolled(RecyclerView recyclerView, int dx, intdy) {super.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值