首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ItemTouchHelper 实现交互动画

技术博客,Python学习笔记等等,还包括平时开发中遇到的bug汇总,当然也在工作之余收集了大量的面试题,长期更新维护并且修正,持续完善……开源的文件是markdown格式的!...在onMove方法中处理拖拽的回调逻辑,那么什么时候被调用?当Item被拖拽排序移动到另一个Item的位置的时候被调用。在onSwiped方法当Item被滑动删除到不见中处理被删除后的逻辑。...上下拖动时与其他item进行位置交换 ItemTouchHelper.Callback本身不具备将两个item互换位置的功能,但RecyclerView可以,我们可以在item拖动的时候把当前item与另一个...让item执行了两种属性动画而已,在ItemTouchHelper.Callback中有一个方法可以拿到item被拖拽或滑动时的位移变化,那就是onChildDraw()方法,在该方法中设置item渐变和缩放属性动画...并不是多出了两条空白数据,它们是正常的数据,只是看不到了,这是因为RecyclerView条目(itemView)覆用导致的,前面在onChildDraw()方法中对itemView设置了透明和缩小,而一个列表中固定只有几个

3.9K20

Android笔记: 使用RecyclerView打造可拖拽的GridView

主要就要使用到ItemTouchHelper ,ItemTouchHelper 是support-v7包中加入的一个帮助开发人员处理拖拽和滑动的实现类,它能够让你非常容易实现侧滑删除、拖拽的功能。...会在拖拽或剔除的时候回调Callback中相应的方法,我们只需在Callback中实现自己的逻辑就可以了。..., RecyclerView.ViewHolder viewHolder) { } 我们在开始拖拽的时候给item添加一个背景色,然后在拖拽完成的时候还原: @Override...原来如此,我们可以在item的长按事件中得到当前item的ViewHolder ,然后调用ItemTouchHelper.startDrag(ViewHolder vh)就可以实现拖拽了,那就这么办:...详见demo 开始拖拽时震动 支付宝的拖拽网格在长按后开始拖拽时会有一次短时间的震动提示用户开始拖拽了,很友好的交互,我们也加一个: 添加权限: <uses-permission android:name

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

    AndroidApp和车机开发:RecyclerView实现触摸和拖放的功能

    引言 在现代应用程序中,用户交互性是提供丰富用户体验的关键因素。RecyclerView作为Android中处理列表和网格布局的强大组件,支持多种交互,包括拖放排序。...本文指导您如何在RecyclerView中实现拖放功能,使用户能够通过长按和拖动来重新排序列表项,用Kotlin实现 长按和拖放操作 为了为RecyclerView添加长按拖放功能,我们将通过自定义ItemTouchHelper.Callback...函数 在适配器中实现 moveItem 函数,用于交换数据集中的元素位置,通知 RecyclerView 更新: 比较源位置和目标位置。...使用Collections.swap交换元素在列表中的位置。 调用notifyItemMoved通知RecyclerView元素已移动。...考在拖动操作期间提供视觉反馈,以增强交互性。 结语 通过上述步骤,可以轻松地在Android应用中的RecyclerView实现拖放排序功能。

    28920

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

    自从 RecyclerView 发布以来,由于其高度的可交互性被广泛使用。相信大家肯定对它的使用方法已经非常熟练了,今天主要是为大家总结一下较正常用法更加优雅的方式。...(ItemTouchHelper 的使用并不仅仅局限于 RecyclerView 的滑动删除,你同意可以用在其他需要拖曳滑动的地方。...ItemTouchHelper 会在拖拽的时候回调 Callback 中相应的方法,我们只需在 Callback 中实现自己的逻辑。...//这里我们设置的颜色尽量和你 item 在 xml 中设置的颜色保持一致 viewHolder.itemView.setBackgroundColor(Color.WHITE); } 这样就能完全达到上面图片的效果了...比如我们在新闻 App 中常见当我们进行新闻分类时,“热门”新闻这个分类总是第一个且不能被拖曳修改,类似下面的效果: ? 那么怎么才能达到上面的效果呢?

    3.3K30

    【Android 事件分发】ItemTouchHelper 简介 ( 拖动滑动事件 | ItemTouchHelper.Callback 回调 )

    事件分发】事件分发源码分析 ( 驱动层通过中断传递事件 | WindowManagerService 向 View 层传递事件 ) 【Android 事件分发】事件分发源码分析 ( Activity 中各层级的事件传递...ItemTouchHandler 是 Google 提供的一个工具类 , 主要针对 RecyclerView 的上下左右拖动事件 进行处理 ; 如 : 侧滑删除 功能 , 条目位置拖动交换 功能 ,...就可以使用 ItemTouchHandler 实现 ; 如果 RecyclerView 没有添加 ItemTouchHandler , 只能上下滚动 , 左右拉动 , 没有效果 , 也无法进行拖动交换条目操作...添加拖动事件 ; 添加后 , 该 RecyclerView 自动可以进行上下左右拖动操作 , 用户可以自行添加相关的回调 ItemTouchHelper.Callback , 响应这些事件 ; 初始化..., 长按后激活拖动操作 , 可用于拖动交换位置操作 ; 拖动 / 滑动 标志位可以使用 ItemTouchHelper.UP | ItemTouchHelper.DOWN , 或运算得到想要的标志位

    1.8K10

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

    /滑动 ) 重写 ItemTouchHelper.Callback 的 getMovementFlags 方法 , 在该方法中设置滑动/拖动标志位 ; 滑动 / 拖动 标志 , 可使用 ItemTouchHelper.UP...getSwipeThreshold(@NonNull RecyclerView.ViewHolder viewHolder) { return 0.5f; } } 上面案例中设置的滑动幅度是...0.5f , 在 getMovementFlags 方法中设置的滑动方向是左右滑动 , 因此在该案例中 , 滑动幅度在水平方向上超过 0.5 倍的条目组件宽度 , 侧滑删除才能生效 ; 下面的操作中..., 滑动在水平方向上没有超过组件宽度的 0.5 倍 , 滑动删除不生效 ; 下面的操作中 , 水平方向的滑动幅度超过了 0.5 倍 , 侧滑删除生效 ; 侧滑判定 : 这里有两种侧滑判定条件 , 满足任意一个即可触发侧滑删除...public float getMoveThreshold(@NonNull RecyclerView.ViewHolder viewHolder) { // 该案例中, 拖动操作只能上下进行

    66120

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

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

    2.3K10

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

    方法 首先要获取操作的条目组件 , ViewHolder viewHolder = mSelected; 其中 mSelected 是在第一次按下时进行的赋值 , 有了 mSelected 值后 ,..., 一般是拖动条目组件进行重新排序 ; 先获取开发者自定义的 Callback 中的 public float getMoveThreshold(@NonNull RecyclerView.ViewHolder...viewHolder)方法返回值 , 如果开发者没有设置 , 就使用默认值 ; 该值的作用是 设置 拖动幅度 , 组件在宽度 / 高度 上移动超过该比例 , 就认为拖动触发, 执行拖动相关操作 ;..., 说明没有触发拖动操作 , 直接返回 ; // 在该判断中 , 使用了 threshold 系数 乘以 水平 / 垂直 方向上的条目组件宽度 ; // 如果拖动比例超过在...和 抬起 操作 // 在 ItemTouchHelper 的业务逻辑中 , 不需要处理移动事件 if (action == MotionEvent.ACTION_DOWN

    1.2K20

    3-VII-RecyclerView的item操作

    点击添加、左滑删除、长按移动交换 RecyclerView的item.gif 1、Item 操作的接口 /** * 作者:张风捷特烈 * 时间:2018/9/17 0017:14:18...recyclerView, RecyclerView.ViewHolder viewHolder) { //可向上下拖动 int dragFlags = ItemTouchHelper.UP...recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) { //移动时:...(adapter)); //调用ItemTouchHelper的attachToRecyclerView方法建立联系 touchHelper.attachToRecyclerView(mRecyclerView...widget.CardView> 后记、 1.声明: [1]本文由张风捷特烈原创,转载请注明 [2]欢迎广大编程爱好者共同交流 [3]个人能力有限,如有不正之处欢迎大家批评指证,必定虚心改正 [4]你的喜欢与支持将是我最大的动力

    72970

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

    ) 方法 , 将 ItemTouchHelper 与 RecyclerView 进行关联 , 并在 attachToRecyclerView 方法的最后 , 调用了 setupCallbacks 方法...条目中的装饰 , 可以在条目组件 底部 上层 绘制 Canvas 图形 // ItemTouchHelper 继承 RecyclerView.ItemDecoration...mOnItemTouchListener , 这是 RecyclerView 的 ItemTouchHelper 的核心 ; OnItemTouchListener 是 RecyclerView 中定义的作用与条目组件的触摸监听器...onInterceptTouchEvent ---- 1、onInterceptTouchEvent 方法简介 在 ItemTouchHelper 中定义的成员变量 private final...动作不拦截 , 取消操作很少遇到 , 因此 , 拦截机制中 , 只负责拦截手指按下 和 抬起 操作 , 在 ItemTouchHelper 的业务逻辑中 , 不需要处理移动事件 ; 2、处理按下事件 当检测到

    1.8K20
    领券