首页
学习
活动
专区
圈层
工具
发布

淘宝首页Bug!嵌套滑动及NestedScroll

Android NestedScrolling机制完全解析 带你玩转嵌套滑动 一、项目实例--电商首页 1、嵌套滑动的问题点 看懂了以上文章后,现在来分享一下项目中的问题。...分别看下淘宝、京东的 外部RecyclerView(整个首页列表)、内部RecyclerView(底部tab中的商品流列表) 嵌套时的滑动效果。 ? 在这里插入图片描述京东 VS 淘宝 ?...整个过程手指是连续拖动的,没有抬起。 淘宝:在tab滑到顶部后,手指继续拖动,但商品流是不能滑动的。这时手指抬起然后再次拖动商品流 才会滑动。 很显然,我们认为京东的滑动更丝滑。...开始滑动 外部RecyclerView 时、开始滑动内部RecyclerView时,都询问NestedScrollLayout2是否处理且如何处理。...主要关注调用scrollBy时滚动的是哪个列表,滚动了多少。

1.6K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    智能下拉刷新框架-SmartRefreshLayout

    通过SmartRefreshLayout框架,你可以在一个稳定强大的下拉布局中实现自己项目需求的 Header ,不用去关心滑动事件处理,不用关心子控件的回弹和滚动边界,只需关注自己真正的项目需求Header...> 在Android Studio 中的预览效果图 和 运行效果图 ?...可以看到在列表已经滚动到中部时,轻微下拉列表是不会触发刷新的,但是如果是触摸固定的布局,则可以触发下拉。从这里可以看出 SmartRefreshLayout 对滚动边界的判断是动态的,智能的!...支持在Android Studio Xml 编辑器中预览 效果 支持分别在 Default(默认)、Xml、JavaCode 等三个地方设置 Header 和 Footer....boolean 拖动Footer的时候是否同时拖动内容(默认true) setEnableAutoLoadmore boolean 是否监听列表滚动到底部时触发加载事件 setDisableContentWhenRefresh

    4.3K50

    ItemTouchHelper 实现交互动画

    在onMove方法中处理拖拽的回调逻辑,那么什么时候被调用?当Item被拖拽排序移动到另一个Item的位置的时候被调用。在onSwiped方法当Item被滑动删除到不见中处理被删除后的逻辑。...上下拖动时与其他item进行位置交换 ItemTouchHelper.Callback本身不具备将两个item互换位置的功能,但RecyclerView可以,我们可以在item拖动的时候把当前item与另一个...让item执行了两种属性动画而已,在ItemTouchHelper.Callback中有一个方法可以拿到item被拖拽或滑动时的位移变化,那就是onChildDraw()方法,在该方法中设置item渐变和缩放属性动画...(如竖直列表就是上和下,水平列表就是左和右) * wipeFlags:与列表滚动方向垂直的动作标识(如竖直列表就是左和右,水平列表就是上和下) * * 思路:如果你不想上下拖动...更改list中开始和结尾position的位置 Collections.swap(imageBeans, srcPosition, targetPosition);

    4.3K20

    Material Design 实战 之第四弹 —— 卡片布局

    卡片式布局也是MaterialsDesign中提出的一个新的概念,它可以让页面中的元素看起来就像在卡片中一样,并且还能拥有圆角和投影,下面我们就开始具体学习一下。...其中, scroll 表示当RecyclerView向上滚动时,Toolbar会跟着一起向上滚动并实现隐藏; enterAlways 表示当RecyclerView向下滚动时...,从而使得RecyclerView中的每个元素都是在卡片当中的。...其中, scroll表示当RecyclerView向上滚动时,Toolbar会跟着一起向上滚动并实现隐藏; enterAlways表示当RecyclerView向下滚动时,Toolbar会跟着一起向下滚动并重新显示...又会根据当前滚动的距离情况,做出消失或者重新出现的反应; 这其实也是MaterialDesign中的一项重要设计思想,因为当用户在向上滚动RecyclerView的时候,其注意力肯定是在RecyclerView

    2.6K10

    【Android 事件分发】ItemTouchHelper 事件分发源码分析 ( 绑定 RecyclerView )

    事件传递机制 七 ) 【Android 事件分发】ItemTouchHelper 简介 ( 拖动/滑动事件 | ItemTouchHelper.Callback 回调 ) 【Android 事件分发...实现拖动排序 ( 设置滑动方向 | 启启用长按拖动功能 | 拖动距离判定 | 设置拖动触发操作 ) 【Android 事件分发】ItemTouchHelper 事件分发源码分析 ( 绑定 RecyclerView...中 , 调用 RecyclerView.addOnItemTouchListener 方法 , 为 RecyclerView 设置了触摸监听器 , 该触摸监听器是定义在 ItemTouchHelper...; void onDraw(@NonNull Canvas c, @NonNull RecyclerView parent, @NonNull State state) 方法是绘制方法 , 在该方法中调用了..., 利用 Canvas 进行绘图 ; 在 RecyclerView.ItemDecoration 中 , 不仅仅只能绘制分割线 , 可以绘制任何图形 , 图片 , 颜色 , 与自定义组件绘制功能一样强大

    50920

    JankStats 推出 alpha 版本

    例如,从 API 24 开始就可以使用 FrameMetrics 获取相关数据,后续多个版本也在进一步丰富该功能,以便为您提供更多详细信息。...该日志是从我在应用中开始滑动 RecyclerView 时获取的。...当 RecyclerView 开始移动 (被 "拖动") 以及 RecyclerView 开始自由滚动 (被 "放置") 时,我们可在开始之前看到与界面状态相关的信息 (仅列出 Activity 状态)...同样,Android Vitals 信息中心也可以告诉您,应用存在性能问题,但无法告诉您问题发生时应用的具体运行情况。因此,您很难通过这些信息来知晓应该如何处理出现的问题。...例如,您可能想知道,某个特定的 Activity 或 Fragment 在何时处于活动状态,或 RecyclerView 何时处于滚动状态。

    1.3K60

    【Android 事件分发】ItemTouchHelper 源码分析 ( OnItemTouchListener 事件监听器源码分析 二 )

    实现拖动排序 ( 设置滑动方向 | 启启用长按拖动功能 | 拖动距离判定 | 设置拖动触发操作 ) 【Android 事件分发】ItemTouchHelper 事件分发源码分析 ( 绑定 RecyclerView..., 则拖动判定成功 , 执行响应的方法 ; 如果拖动比例没有超过该值 , 说明没有触发拖动操作 , 直接返回 ; // 在该判断中 , 使用了 threshold 系数 乘以 水平 /..., 执行拖动响应方法 , 即开发者自定义的 Callback 中的 onMove 方法 ; public boolean onMove(@NonNull RecyclerView recyclerView...activePointerIndex); } // 按下第一次后 , mSelected 便进行赋值 // 有了 mSelected 值后 , 开始在滑动中处理...* 开始拖动/滑动给定的 View 组件. 如果想要清除传入 null.

    1.4K20

    Flutter完整开发实战详解(十八、 神奇的ScrollPhysics与Simulation)

    Flutter 中的 ListView 、CustomScrollView 等 Scrollable 控件,在 Android 和 iOS 平台的滚动和边界拖拽效果,会有如下图所示的平台区别呢?...,那么如前图所示,Android 平台上拖拽溢出的蓝色半圆的怎么来的?...4、_MaterialScrollBehavior 中针对 Android 平台实现了 buildViewportChrome 的蓝色半球拖拽溢出效果。...applyPhysicsToUserOffset 方法进行了 override ,其中 用户没有达到边界前,依旧返回默认的 offset,当用户到达边界时,通过算法来达到模拟溢出阻尼效果。...总结起来就是 ScrollPhysics 中控制了用户触摸转化和边界条件,并且在用户停止触摸时,利用 Simulation 实现了自动滚动与溢出回弹的动画效果。 自此,第十八篇终于结束了!

    16.2K61

    【Qt】未添加scrollArea造成界面过大

    这种现象在移动端开发中尤为突出,例如表格组件在加载数百行数据时,未添加 scrollArea 的界面会直接撑破屏幕尺寸,导致控件变形、布局错乱。...在 Android 开发中,若 RecyclerView 未嵌套在 NestedScrollView 中,当数据集超过屏幕高度时,界面会向下无限延伸,甚至引发 Activity 内存溢出。...Android 平台则依赖 NestedScrollView 与 RecyclerView 的组合使用。...在智能家居控制界面中,将设备列表 RecyclerView 包裹在 NestedScrollView 内,并设置 android:fillViewport="true",可确保列表在有限空间内显示,同时支持平滑滚动...从移动应用到桌面软件,滚动机制始终是界面可用性的基石。当我们在代码中添加每一个 scrollArea 时,不仅是在解决显示问题,更是在构建用户与内容之间的高效通道。

    12100

    【Android 事件分发】ItemTouchHelper 实现拖动排序

    配置侧滑删除 1、设置移动标志 ( 拖动/滑动 ) 2、启用长按拖动功能 3、拖动距离判定设置 4、设置拖动排序触发操作 5、RecyclerView.Adapter 适配器中的交换排序操作 三、完整代码实现.../滑动 ) 重写 ItemTouchHelper.Callback 的 getMovementFlags 方法 , 在该方法中设置滑动/拖动标志位 ; 滑动 / 拖动 标志 , 可使用 ItemTouchHelper.UP...// 拖动超过条目组件高度超过 0.9 倍, 即可触发拖动操作 return 0.9f; } } 上面案例中设置的拖动幅度是 0.9f , 在 getMovementFlags...方法中设置的拖动方向是上下拖动 , 因此在该案例中 , 上下拖动的幅度必须要在 0.9 倍高度 , 拖动排序功能才能生效 ; 下面的操作中 , 拖动的幅度没有达到 条目组件 高度的 0.9 倍 , 拖动排序功能没有触发...@NonNull RecyclerView.ViewHolder target) { // 拖动后交换数据, 该方法中交换 Adapter 中的数据, 并刷新界面 Log.i

    2.5K10

    Android RecyclerView使用简述

    ③ Item左右滑动 ④ Item上下拖动 十、源码 前言   RecyclerView是Android中非常受欢迎的控件,RecyclerView是官方在Android5.0之后新添加的控件,推出用来替代传统的...点击Finish完成项目创建,然后等待项目构建完成,在之前的Android中RecyclerView是需要引入依赖库的,会有v4,v7版本的库,而现在都迁移到androidx下了,目前在项目构建的时候也会自动添加这个...在滚动的回调,在onScrolled()方法中,我们通过linearLayoutManager可以得到最后一个可见Item的下标,然后回到onScrollStateChanged()回调方法中,这个方法表示滑动状态改变...六、RecyclerView多布局使用   在前面的使用中我们在操作写适配器的代码时,都是一个item布局,而有时候数据不同需要显示的布局也不同,就存在多布局的情况,这种情况应该怎么处理呢?...九、RecyclerView左右滑动和上下拖动   在操作RecyclerView的时候,我们还会有例如Item侧滑删除这样的操作,或者上下拖动更改Item的位置。

    2.8K21

    【Android 事件分发】ItemTouchHelper 实现侧滑删除

    ---- 1、设置移动标志 ( 拖动/滑动 ) 重写 ItemTouchHelper.Callback 的 getMovementFlags 方法 , 在该方法中设置滑动/拖动标志位 ; 滑动 / 拖动...viewHolder) { return 0.5f; } } 上面案例中设置的滑动幅度是 0.5f , 在 getMovementFlags 方法中设置的滑动方向是左右滑动 ,...因此在该案例中 , 滑动幅度在水平方向上超过 0.5 倍的条目组件宽度 , 侧滑删除才能生效 ; 下面的操作中 , 滑动在水平方向上没有超过组件宽度的 0.5 倍 , 滑动删除不生效 ; 下面的操作中...() { return true; } /** * 拖动幅度设置 * 组件在宽度 / 高度 上移动超过该比例 , 就认为拖动触发, 执行拖动相关操作...@NonNull RecyclerView.ViewHolder target) { // 拖动后交换数据, 该方法中交换 Adapter 中的数据, 并刷新界面 Log.i

    89020

    曝光埋点方案:recyclerView中的item曝光逻辑实现

    至于是否是有效曝光,就是公共埋点SDK(中台提供)去计算了。 所以本文重点就是,滑动recyclerView时 item变为可见、变为不可见,什么时候、怎么样 上报。...三、曝光逻辑代码说明 预备知识,view可见性的判断,https://www.jianshu.com/p/30b0ae304518 1、对recyclerView的滚动监听 滚动监听的目的:滑动中item...是可能多次曝光的,在列表 静止、手指拖动、快速滑动时都要 监听item的可见性,然后把可见或不可见回调,然后根据position具体上报item信息。...: 用户慢慢拖动 // 关注:SCROLL_STATE_SETTLING:惯性滚动 if (newState == RecyclerView.SCROLL_STATE_IDLE...: 用户慢慢拖动 // 关注:SCROLL_STATE_SETTLING:惯性滚动 if (newState == RecyclerView.SCROLL_STATE_IDLE

    6.1K10

    【Android应用开发】RecycleView API 翻译 (文档翻译)

    该类定义了条目发生改变时 适配器 的动画效果. class RecyclerView.ItemDecoration 项目装饰, 在适配器数据集中指定的项目显示组件上, 添加一个特别的图画 和 布局....class RecyclerView.LayoutManager 布局管理器 (LayoutManager) 主要负责在 RecycleView 中测量和放置项目 View 组件, 同时决定当项目 View...或者 在 RecycleView 级别上被 当做滚动事件 前, 拦截这些事件. void addOnScrollListener( RecyclerView.OnScrollListener...在垂直范围内, 计算垂直滚动条翻越的范围. int computeVerticalScrollOffset() 在垂直方向范围中, 计算垂直方向上的 垂直滚动条...(int dx, int dy, int[] consumed, int[] offsetInWindow) 在 View 执行 滚动动作前, 分发一个嵌套滚动的步骤

    1.7K40

    RecyclerView 梳理:点击&长按事件、分割线、拖曳排序、滑动删除

    RecyclerView 添加 divider 的标准姿势 当你想给条目间添加 divider 时,你可能自然而然的去尝试这种方式: android.support.v7.widget.RecyclerView...ItemTouchHelper 会在拖拽的时候回调 Callback 中相应的方法,我们只需在 Callback 中实现自己的逻辑。...recyclerView, ViewHolder viewHolder); //当长按并进入拖曳状态时,拖曳的过程中不断的回调此方法 public abstract...,目标 item 就是当拖曳过程中,不断和拖动的 item 做位置交换的条目。...比如我们在新闻 App 中常见当我们进行新闻分类时,“热门”新闻这个分类总是第一个且不能被拖曳修改,类似下面的效果: ? 那么怎么才能达到上面的效果呢?

    3.7K30

    嵌套滑动通用解决方案--NestedScrollingParent2

    京东首页 可见,在向上滑动页面时,当tabLayout滑动到顶部时,外层RecyclerView停止滑动,此时tabLayout即为吸顶状态,接着会 滑动ViewPager中的内层RecyclerView...那么是否可以在tabLayout吸顶时,外层不要拦截事件,从而内层RecyclerView获取事件进而滑动呢?...NestedScrolling(嵌套滑动)机制,简单说来就是:产生嵌套滑动的子view,在滑动前,先询问 嵌套滑动对应的父view 是否优先处理 事件、以及消费多少事件,然后把消费后剩余的部分 继续给到...NestedScrollView嵌套RecyclerView 参考这篇实名反对《阿里巴巴Android开发手册》中NestedScrollView嵌套RecyclerView的用法。...作者最后建议使用RecyclerView多布局。 但其实在真实应用中,可能 头部 和 列表 的数据来自不同的接口,当列表的数据请求失败时要展示缺省图,但头部还是会展示。

    4.1K31
    领券