0
点赞
收藏
分享

微信扫一扫

Android RecyclerView实现ViewPager效果,用LinearSnapHelper


文章目录

  • ​​LinearSnapHelper效果​​

LinearSnapHelper效果

SnapHelper是RecyclerView功能的一种拓展,使RecyclerView滑动行为类似ViewPager,无论怎么滑动最终停留在某页正中间。ViewPager一次只能滑动一页,RecyclerView+SnapHelper方式可以一次滑动好几页,且最终都停留在某页正中间。非常实用和酷炫。

SnapHelper的实现原理是监听RecyclerView.OnFlingListener中的onFling接口。LinearSnapHelper是抽象类SnapHelper的具体实现

Android RecyclerView实现ViewPager效果,用LinearSnapHelper_抽象类

上面的效果只需下面几行代码即可

val snapHelper = LinearSnapHelper()
//保证recyclerView滚动停止是,可以停在中间位置,类似于viewPager效果
snapHelper.attachToRecyclerView(binding.recycler)

整体代码非常少,如下:

class MainActivity : AppCompatActivity() {

private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)

val layoutManager = LinearLayoutManager(this, RecyclerView.HORIZONTAL, false)
binding.recycler.layoutManager = layoutManager
binding.recycler.adapter = MyAdapter(listOf("1", "2", "3", "4", "5", "6", "7", "8"))

val snapHelper = LinearSnapHelper()
//保证recyclerView滚动停止是,可以停在中间位置,类似于viewPager效果
snapHelper.attachToRecyclerView(binding.recycler)

binding.btn.setOnClickListener {
//获取中间位置的position
val view = snapHelper.findSnapView(layoutManager)
if (view != null) {
val position = layoutManager.getPosition(view)
Toast.makeText(this, " $position", Toast.LENGTH_SHORT).show()
}
}
}
}


举报

相关推荐

0 条评论