仿微信读书首页一样,一次动翻一页效果,用RecycleView去实现,是因为这样可以实现卡片效果,如图:
先说一下,卡片的效果就是把RecycleView的item布局设置为 wrap_content 即可。
下面说一下一次只滑动一页的实现:
//设置recycleView布局管理器
val layoutManager = LinearLayoutManager(this)
layoutManager.orientation = LinearLayoutManager.HORIZONTAL
recycleView.layoutManager = layoutManager
// 滑动后Snap
PagerSnapHelper().attachToRecyclerView(contentView)
// 滑动时使父布局不响应事件
recycleView.setOnTouchListener(DisInterceptTouchListener())
就这么几行简单的代码即可实现。
最后。添加 DisInterceptTouchListener监听。
class DisInterceptTouchListener : View.OnTouchListener {
@SuppressLint("ClickableViewAccessibility")
override fun onTouch(v: View, event: MotionEvent): Boolean {
if (v !is ViewGroup) {
return false
}
when (event.action) {
MotionEvent.ACTION_DOWN -> {
v.parent.requestDisallowInterceptTouchEvent(true)
v.onTouchEvent(event)
return true
}
MotionEvent.ACTION_MOVE -> {
v.parent.requestDisallowInterceptTouchEvent(true)
}
MotionEvent.ACTION_UP, MotionEvent.ACTION_CANCEL -> {
v.parent.requestDisallowInterceptTouchEvent(false)
}
}
return false
}
}