简介 ( 拖动/滑动事件 | ItemTouchHelper.Callback 回调 ) 【Android 事件分发】ItemTouchHelper 实现侧滑删除 ( 设置滑动方向 | 启用滑动操作...| 滑动距离判定 | 滑动速度判定 | 设置动画时间 | 设置侧滑触发操作 ) 【Android 事件分发】ItemTouchHelper 实现拖动排序 ( 设置滑动方向 | 启启用长按拖动功能 |...自定义实现 ---- 其中的 ItemTouchHelper.Callback 一般都需要开发者自定义子类实现 ; 1、设置移动标志 ( 拖动/滑动 ) 重写 ItemTouchHelper.Callback..., 长按后激活拖动操作 , 可用于拖动交换位置操作 ; 拖动 / 滑动 标志位可以使用 ItemTouchHelper.UP | ItemTouchHelper.DOWN , 或运算得到想要的标志位...= ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT; // 应用 拖动 和 滑动 设置 return makeMovementFlags
文章目录 一、ItemTouchHelper 简介 二、RecyclerView 相关资料 一、ItemTouchHelper 简介 ---- 官方文档 : https://developer.android.google.cn.../reference/kotlin/androidx/recyclerview/widget/ItemTouchHelper ItemTouchHelper 可以为 RecyclerView 添加 滑动删除效果...和 拖动效果 ; ItemTouchHelper 需要与 RecyclerView 和 ItemTouchHelper.Callback 结合起来使用 ; 根据想要开发的功能 , 重写不同的方法 ;...RecyclerView recyclerView, @NonNull ViewHolder viewHolder, @NonNull ViewHolder target); 如果想要开发滑动相关效果..., int direction); ItemTouchHelper 需要与 LayoutManager 布局管理器结合使用 ; 通过 继承 ItemTouchHelper.Callback 抽象类 ,
简介 ( 拖动/滑动事件 | ItemTouchHelper.Callback 回调 ) 【Android 事件分发】ItemTouchHelper 实现侧滑删除 ( 设置滑动方向 | 启用滑动操作...| 滑动距离判定 | 滑动速度判定 | 设置动画时间 | 设置侧滑触发操作 ) 【Android 事件分发】ItemTouchHelper 实现拖动排序 ( 设置滑动方向 | 启启用长按拖动功能 |.../滑动 ) 重写 ItemTouchHelper.Callback 的 getMovementFlags 方法 , 在该方法中设置滑动/拖动标志位 ; 滑动 / 拖动 标志 , 可使用 ItemTouchHelper.UP...int swipeFlags = ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT; 再将 拖动标志 和 滑动标志 传入 makeMovementFlags...| ItemTouchHelper.DOWN; // 设置滑动方向, 此处设置左右侧滑事件 int swipeFlags = ItemTouchHelper.LEFT
ItemTouchHelper是谷歌提供的用于实现Recyclerview 拖拽效果的帮助类,今天我们来学习下它的基本用法 首先ItemTouchHelper需要实现它的一个内部抽象类CallBack...iMoveAndSwipeCallback) { this.iMoveAndSwipeCallback = iMoveAndSwipeCallback; } /** * 设置拖拽和item滑动的可支持方向...| ItemTouchHelper.DOWN; //item支持左滑 final int swipeFlags = ItemTouchHelper.LEFT;...itemTouchHelper = new ItemTouchHelper(itemTouchHelperCallback); itemTouchHelper.attachToRecyclerView...ItemTouchHelper.gif 项目地址:https://gitee.com/aruba/RecyclerViewApplication.git
ItemTouchHelper的基本使用上次已经介绍了,今天来分析下ItemTouchHelper的源码,我们从attachToRecyclerView方法入手 /** * Attaches...the ItemTouchHelper to the provided RecyclerView....继承ItemDecoration干了什么,发现ItemTouchHelper改写了onDraw和onDrawOver方法 /** * 该方法在recyclerView的draw方法中调用...= ItemTouchHelper.ACTION_STATE_DRAG) { draw(c, recyclerView, view, dX, dY);...= null;而ACTION_UP,则会通过select方法将mSelected置空,并且判断是否需要执行侧滑动画,并最终根据判断是否要调用Callback的onSwiped方法,所以ItemTouchHelper
简介 ( 拖动/滑动事件 | ItemTouchHelper.Callback 回调 ) 【Android 事件分发】ItemTouchHelper 实现侧滑删除 ( 设置滑动方向 | 启用滑动操作...| 滑动距离判定 | 滑动速度判定 | 设置动画时间 | 设置侧滑触发操作 ) 【Android 事件分发】ItemTouchHelper 实现拖动排序 ( 设置滑动方向 | 启启用长按拖动功能 |...回调类 3、执行效果 三、博客资源 一、ItemTouchHelper.Callback 配置侧滑删除 ---- 1、设置移动标志 ( 拖动/滑动 ) 重写 ItemTouchHelper.Callback...的 getMovementFlags 方法 , 在该方法中设置滑动/拖动标志位 ; 滑动 / 拖动 标志 , 可使用 ItemTouchHelper.UP , ItemTouchHelper.DOWN...= ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT; 再将 拖动标志 和 滑动标志 传入 makeMovementFlags 方法 , 得到一个移动标志位 ,
让item执行了两种属性动画而已,在ItemTouchHelper.Callback中有一个方法可以拿到item被拖拽或滑动时的位移变化,那就是onChildDraw()方法,在该方法中设置item渐变和缩放属性动画...| ItemTouchHelper.RIGHT | ItemTouchHelper.UP | ItemTouchHelper.DOWN;...| ItemTouchHelper.DOWN; dragFlag = ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT;...| ItemTouchHelper.DOWN; swipeFlag = ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT;...04.ViewPager嵌套水平RecyclerView横向滑动到底后不滑动ViewPager 05.RecyclerView嵌套RecyclerView的滑动冲突问题 06.RecyclerView
主要就要使用到ItemTouchHelper ,ItemTouchHelper 是support-v7包中加入的一个帮助开发人员处理拖拽和滑动的实现类,它能够让你非常容易实现侧滑删除、拖拽的功能。...我们只需要实例化一个ItemTouchHelper,然后关联到RecyclerView就OK了: itemTouchHelper = new ItemTouchHelper(new ItemTouchHelper.Callback...void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) { } getMovementFlags用于设置是否处理拖拽事件和滑动事件...,以及拖拽和滑动操作的方向,比如如果是列表类型的RecyclerView,拖拽只有UP、DOWN两个方向,而如果是网格类型的则有UP、DOWN、LEFT、RIGHT四个方向: @Override...,我们把swipeFlags 都设置为0,表示不处理滑动操作。
简介 ( 拖动/滑动事件 | ItemTouchHelper.Callback 回调 ) 【Android 事件分发】ItemTouchHelper 实现侧滑删除 ( 设置滑动方向 | 启用滑动操作...| 滑动距离判定 | 滑动速度判定 | 设置动画时间 | 设置侧滑触发操作 ) 【Android 事件分发】ItemTouchHelper 实现拖动排序 ( 设置滑动方向 | 启启用长按拖动功能 |...系列文章目录 一、ItemTouchHelper 事件分发源码分析入口 二、ItemTouchHelper 绑定 RecyclerView 源码分析 1、ItemTouchHelper.attachToRecyclerView...添加拖动/滑动事件 Callback callback = new Callback(adapter); mItemTouchHelper = new ItemTouchHelper...中实现 , 要研究其中的事件分发原理 , 主要分析 ItemTouchHelper 中的源码即可 ; 二、ItemTouchHelper 绑定 RecyclerView 源码分析 ---- 1、ItemTouchHelper.attachToRecyclerView
在平时开发应用的时候,经常会遇到列表排序、滑动删除的需求。...接口后有三个方法需要重写: getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) :设置滑动类型的标记...需要设置两种类型的 flag ,即 dragFlags 和 swipeFlags ,分别代表着拖拽标记和滑动标记。...onSwiped(RecyclerView.ViewHolder viewHolder, int direction) :当用户滑动列表某个 item 时会回调。...| ItemTouchHelper.UP | ItemTouchHelper.RIGHT | ItemTouchHelper.LEFT; swipeFlag
1、效果2、简介本文主角是ItemTouchHelper。它是RecyclerView对于item交互处理的一个「辅助类」,主要用于拖拽以及滑动处理。...,通过makeMovementFlags把结果返回回去,makeMovementFlags接收两个参数,dragFlags和swipeFlags,即上面拖拽和滑动组合的标志位。...or ItemTouchHelper.UP or ItemTouchHelper.RIGHT or ItemTouchHelper.DOWN return makeMovementFlags...or ItemTouchHelper.DOWN swipeFlags = ItemTouchHelper.START or ItemTouchHelper.END...可以,ItemTouchHelper.Callback中有两个方法:isLongPressDragEnabled 是否可以长按拖拽isItemViewSwipeEnabled 是否可以滑动这俩方法默认都是
简介 ( 拖动/滑动事件 | ItemTouchHelper.Callback 回调 ) 【Android 事件分发】ItemTouchHelper 实现侧滑删除 ( 设置滑动方向 | 启用滑动操作...| 滑动距离判定 | 滑动速度判定 | 设置动画时间 | 设置侧滑触发操作 ) 【Android 事件分发】ItemTouchHelper 实现拖动排序 ( 设置滑动方向 | 启启用长按拖动功能 |...拖动距离判定 | 设置拖动触发操作 ) 【Android 事件分发】ItemTouchHelper 事件分发源码分析 ( 绑定 RecyclerView ) 【Android 事件分发】ItemTouchHelper...select(null, ACTION_STATE_IDLE); } 6、动作完成 ACTIVE_POINTER_ID_NONE 表示是否完成了滑动 , 如果滑动完成 , 触发了侧滑事件...// 如果滑动完成 , 触发了侧滑事件 , 才会进入该分支 // 如果滑动没有完成 , 滑到半路 , 松开手 , 条目组件缩回去了 , 则不会进入该分支
1、效果 2、简介 本文主角是ItemTouchHelper。 它是RecyclerView对于item交互处理的一个「辅助类」,主要用于拖拽以及滑动处理。...END) 最后,通过makeMovementFlags把结果返回回去,makeMovementFlags接收两个参数,dragFlags和swipeFlags,即上面拖拽和滑动组合的标志位。...or ItemTouchHelper.UP or ItemTouchHelper.RIGHT or ItemTouchHelper.DOWN return makeMovementFlags...or ItemTouchHelper.DOWN swipeFlags = ItemTouchHelper.START or ItemTouchHelper.END...可以,ItemTouchHelper.Callback中有两个方法: isLongPressDragEnabled 是否可以长按拖拽 isItemViewSwipeEnabled 是否可以滑动 这俩方法默认都是
实现方式 主要就要使用到 ItemTouchHelper,ItemTouchHelper 一个帮助开发人员处理拖拽和滑动删除的实现类,它能够让你非常容易实现侧滑删除、拖拽的功能。...(ItemTouchHelper 的使用并不仅仅局限于 RecyclerView 的滑动删除,你同意可以用在其他需要拖曳滑动的地方。...自定义一个类继承实现 ItemTouchHelper.Callback 接口,需要实现以下方法: //通过返回值来设置是否处理某次拖曳或者滑动事件 public abstract int getMovementFlags...); } } dragFlags 是拖拽标志, swipeFlags 是滑动标志, swipeFlags 都设置为0,暂时不考虑滑动相关操作。...滑动删除 如何实现滑动删除呢?我们只需要实现第三个方法 onSwipe() 就行了。
仿qq的侧滑,跟随滑动… 简单的侧滑点击删除,覆盖滑动… 二 知识准备 ItemTouchHelper是Android系统提供的一个帮助类,可以很轻松的用它实现长按拖拽和侧滑删除功能(这里的是侧滑之后直接删除整条...ItemTouchHelper.Callback 官方的解释是这样的,这个类是ItemTouchHelper和您的应用程序之间的契约。...); 复制代码 下面是我目前发现的系统的ItemTouchHelper的一些弊端和好处: 弊端: 当处于滑动状态的时候不下发点击事件....滑动的距离为RecyclerView的宽度,往往就是屏幕的宽度. 限制滑动距离之后,无法正常恢复侧滑(让滑动的View复位)....xml布局里面设置一个tag=”slide_flag”,用来标识该布局为侧滑滑动的布局.用例: //这个标识的布局就是我们能滑动的布局.
image.png 3.RecyclerView之实现滑动删除拖拽排序(首个可以固定) 3.1实现RecyclerView的滑动删除拖拽排序 滑动删除和拖拽必须用到ItemTouchHelper ,我们看它如何使用...: ItemTouchHelper itemTouchHelper = new ItemTouchHelper(new ItemTouchHelper.Callback()); itemTouchHelper.attachToRecyclerView...image.png 然后就实现拖拽功能了 ItemTouchHelper itemTouchHelper = new ItemTouchHelper(new RecyclerItemTouchHelperCallBack...(mRecyclerViewAdapter)); itemTouchHelper.attachToRecyclerView(mRecyclerView); 再然后我们使用第三个方法来实现滑动删除...image.png 这样我们就实现了滑动删除和拖拽移动功能,但别高兴太早,这代码仍然存在问题,你正常来讲网格布局应该不具备滑动删除才对,这怎么解决呢?
简介 ( 拖动/滑动事件 | ItemTouchHelper.Callback 回调 ) 【Android 事件分发】ItemTouchHelper 实现侧滑删除 ( 设置滑动方向 | 启用滑动操作...| 滑动距离判定 | 滑动速度判定 | 设置动画时间 | 设置侧滑触发操作 ) 【Android 事件分发】ItemTouchHelper 实现拖动排序 ( 设置滑动方向 | 启启用长按拖动功能 |...拖动距离判定 | 设置拖动触发操作 ) 【Android 事件分发】ItemTouchHelper 事件分发源码分析 ( 绑定 RecyclerView ) 【Android 事件分发】ItemTouchHelper...= ACTIVE_POINTER_ID_NONE) { // 该分支表示滑动操作完成的分支 // ACTIVE_POINTER_ID_NONE 表示是否完成了滑动...// 如果滑动完成 , 触发了侧滑事件 , 才会进入该分支 // 如果滑动没有完成 , 滑到半路 , 松开手 , 条目组件缩回去了 , 则不会进入该分支
br/> * 邮箱:1981462002@qq.com * 说明:RecyclerView条目回调 */ public class ItemTouchCallback extends ItemTouchHelper.Callback...| ItemTouchHelper.DOWN; //可向左滑动 int swipeFlags = ItemTouchHelper.LEFT; return...@Override public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) { //滑动时...layoutManager = new LinearLayoutManager(this); MyAdapter adapter = new MyAdapter(mData, this); //实例化ItemTouchHelper...ItemTouchHelper touchHelper = new ItemTouchHelper(new ItemTouchCallback(adapter)); //调用ItemTouchHelper
FlexibleAdapter是一个为RecyclerView提供更加灵活的适配器,它支持动态的多类型视图、拖拽、滑动删除等功能。...recyclerView.setLayoutManager(new LinearLayoutManager(this)); 启用其他功能 FlexibleAdapter支持很多附加功能,比如拖动排序、滑动删除...(ItemTouchHelper.UP | ItemTouchHelper.DOWN, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) { @...itemTouchHelper = new ItemTouchHelper(callback);itemTouchHelper.attachToRecyclerView(recyclerView);...这样就启用了拖动排序和滑动删除功能。
缺少的就是处理触摸滑动事件了。 OnSwipeListener 在看滑动事件的代码之前,我们先定义一个监听器。主要用于监听卡片滑动事件,代码就如下所示,注释也给出来了。...该滑动卡片的viewHolder * @param ratio 滑动进度的比例 * @param direction 卡片滑动的方向,CardConfig.SWIPING_LEFT...对于 ItemTouchHelper 来处理 Item View 的触摸滑动事件相必都不陌生吧,如果对这方面不太了解的同学可以看一下我之前的博客:《RecyclerView实现拖拽排序和侧滑删除》。...= null) { mListener.onSwiped(viewHolder, remove, direction == ItemTouchHelper.LEFT ?...总结一下,在这整个代码流程中我们主要是运用了自定义 LayoutManager 以及 ItemTouchHelper.Callback 。总体来说还是比较简单的,相信你已经会啦。