Android NestedScrolling帮你实现一个简单的嵌套滑动

本文介绍了Android中的NestedScrolling机制,如何解决ScrollView与ListView等组件的滑动冲突问题。通过实现NestedScrollParent和NestedScrollChild接口,父View不再需要拦截scroll事件,子View通过回调通知父View其滑动意图,从而实现协同处理滑动,确保流畅的用户体验。关键在于正确处理子View滑动的消费时机和数量,调整父View和子View的显示状态。
摘要由CSDN通过智能技术生成

1. 仅仅有图片可以参考.

1. 首先你得知道正常的事件分发机制,即当一个事件被某个拦截时,当前手势接下来的事件都会交给View进行处理。

2. 这也是为什么ScrollView嵌套ListView 产生滑动冲突,体验不佳的原因。

3. 使用NestedScrollParent组合NestedScrollChild并不是改变这种机制,而正是利用这种机制进行恰当的回调。

4. NestedScrollParent和NestedScrollChild是2个接口,实现NestedScrollParent的View不再需要拦截scroll事件。

5.也就是说全程处理滑动事件的仅仅是子View 但是子View能滑动多少,实现NestedScrollParent的父View说了算。

5. 实现NestedScrollChild接口的子View 需要在touch事件里恰当的处理好回调方法,及时准确的通知父View 自己准备要进行的动作。

6. 子View 通过把scroll的动作告知父View ,父View可以通过实现回调的方法来响应这些回调 1.处理自身的位置 2.告知子View要处理的位置。

7. 举个栗子:RecyclerView接到滑动事件,要向上滑动10,再没滑动之前 把要滑动的情况优先告知父View(实现NestedScrollParent)。

8. 父View再接到RecyclerView可以产生向上滑动10的时候优先做出处理,先让自己身滑动5,并告知RecyclerView “我已经消费了5”。

9. RecyclerView 把本来要消费的10 和已经被父View消费的5 综合起来判断自己要消费多少。即RecyclerView仅仅向上滑动了5.

10.      所以关键点就在于你什么时候想消费、并且消费多少 子View的滑动,这影响到父View和子View的具体展示。


布局:仅仅是一个父容器(实现NestedScrollParent) 内嵌入 TopView 和实现了NestedScrollChild的RecyclerView。


<?xml version="1.0" encoding="utf-8"?>
<com.yushilei.nestedscrolling.NestedScrollLayout
    android:id="@+id/nested"
    xmlns:android="http://schemas.an
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值