animateChange(): 在显式调用notifyItemChanged()或notifyDataSetChanged()时被调用。...runPendingAnimations(): RecyclerView动画的执行方式并不是立即执行,而是每帧执行一次,比如两帧之间添加了多个Item,则会将这些将要执行的动画Pending住,保存在成员变量中...这个问题的描述是:当Item视图中有图片和文字,当更新文字并调用notifyItemChanged()时,文字改变的同时图片会闪一下。...拖拽、侧滑删除 Android提供了ItemTouchHelper类,使得RecyclerView能够轻易地实现滑动和拖拽,此处我们要实现上下拖拽和侧滑删除。...然后通过以下代码为RecyclerView设置该滑动、拖拽功能: ItemTouchHelper helper = new ItemTouchHelper(new SimpleItemTouchCallback
基本概念 RecyclerView是Android 5.0提出的新UI控件,位于support-v7包中,可以通过在build.gradle中添加compile 'com.android.support...runPendingAnimations(): RecyclerView动画的执行方式并不是立即执行,而是每帧执行一次,比如两帧之间添加了多个Item,则会将这些将要执行的动画Pending住,保存在成员变量中...具体实现如下: 拖拽、侧滑删除 Android提供了ItemTouchHelper类,使得RecyclerView能够轻易地实现滑动和拖拽,此处我们要实现上下拖拽和侧滑删除。...首先创建一个继承自ItemTouchHelper.Callback的类,并重写以下方法: getMovementFlags(): 设置支持的拖拽和滑动的方向,此处我们支持的拖拽方向为上下,滑动方向为从左到右和从右到左...---- 作者简介:damonxia(夏正冬),天天P图Android工程师
事件传递机制 七 ) 【Android 事件分发】ItemTouchHelper 简介 ( 拖动/滑动事件 | ItemTouchHelper.Callback 回调 ) 【Android 事件分发...】ItemTouchHelper 实现侧滑删除 ( 设置滑动方向 | 启用滑动操作 | 滑动距离判定 | 滑动速度判定 | 设置动画时间 | 设置侧滑触发操作 ) 【Android 事件分发】ItemTouchHelper...实现拖动排序 ( 设置滑动方向 | 启启用长按拖动功能 | 拖动距离判定 | 设置拖动触发操作 ) ---- 文章目录 Android 事件分发 系列文章目录 一、ItemTouchHelper.Callback...public float getMoveThreshold(@NonNull RecyclerView.ViewHolder viewHolder) { // 该案例中, 拖动操作只能上下进行...public float getMoveThreshold(@NonNull RecyclerView.ViewHolder viewHolder) { // 该案例中, 拖动操作只能上下进行
基本概念 RecyclerView是Android 5.0提出的新UI控件,位于support-v7包中,可以通过在build.gradle中添加compile 'com.android.support...runPendingAnimations(): RecyclerView动画的执行方式并不是立即执行,而是每帧执行一次,比如两帧之间添加了多个Item,则会将这些将要执行的动画Pending住,保存在成员变量中...拖拽、侧滑删除 Android提供了ItemTouchHelper类,使得RecyclerView能够轻易地实现滑动和拖拽,此处我们要实现上下拖拽和侧滑删除。...首先创建一个继承自ItemTouchHelper.Callback的类,并重写以下方法: getMovementFlags(): 设置支持的拖拽和滑动的方向,此处我们支持的拖拽方向为上下,滑动方向为从左到右和从右到左...作者简介:damonxia(夏正冬),天天P图Android工程师
Android 事件分发 系列文章目录 【Android 事件分发】事件分发源码分析 ( 驱动层通过中断传递事件 | WindowManagerService 向 View 层传递事件 ) 【Android...事件传递机制 七 ) 【Android 事件分发】ItemTouchHelper 简介 ( 拖动/滑动事件 | ItemTouchHelper.Callback 回调 ) 【Android 事件分发...】ItemTouchHelper 实现侧滑删除 ( 设置滑动方向 | 启用滑动操作 | 滑动距离判定 | 滑动速度判定 | 设置动画时间 | 设置侧滑触发操作 ) 【Android 事件分发】ItemTouchHelper...) ---- 文章目录 Android 事件分发 系列文章目录 一、ItemTouchHelper 事件分发源码分析入口 二、ItemTouchHelper 绑定 RecyclerView 源码分析...} } 在上述 drawVertical 和 drawHorizontal 方法中 , 利用 Canvas 进行绘图 ; 在 RecyclerView.ItemDecoration 中 , 不仅仅只能绘制分割线
Android 事件分发 系列文章目录 【Android 事件分发】事件分发源码分析 ( 驱动层通过中断传递事件 | WindowManagerService 向 View 层传递事件 ) 【Android...事件传递机制 七 ) 【Android 事件分发】ItemTouchHelper 简介 ( 拖动/滑动事件 | ItemTouchHelper.Callback 回调 ) 【Android 事件分发...】ItemTouchHelper 实现侧滑删除 ( 设置滑动方向 | 启用滑动操作 | 滑动距离判定 | 滑动速度判定 | 设置动画时间 | 设置侧滑触发操作 ) 【Android 事件分发】ItemTouchHelper...进行处理 ; 如 : 侧滑删除 功能 , 条目位置拖动交换 功能 , 就可以使用 ItemTouchHandler 实现 ; 如果 RecyclerView 没有添加 ItemTouchHandler , 只能上下滚动...; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup
Android 事件分发 系列文章目录 【Android 事件分发】事件分发源码分析 ( 驱动层通过中断传递事件 | WindowManagerService 向 View 层传递事件 ) 【Android...事件传递机制 七 ) 【Android 事件分发】ItemTouchHelper 简介 ( 拖动/滑动事件 | ItemTouchHelper.Callback 回调 ) 【Android 事件分发...】ItemTouchHelper 实现侧滑删除 ( 设置滑动方向 | 启用滑动操作 | 滑动距离判定 | 滑动速度判定 | 设置动画时间 | 设置侧滑触发操作 ) 【Android 事件分发】ItemTouchHelper...实现拖动排序 ( 设置滑动方向 | 启启用长按拖动功能 | 拖动距离判定 | 设置拖动触发操作 ) ---- 文章目录 Android 事件分发 系列文章目录 一、ItemTouchHelper.Callback...public float getMoveThreshold(@NonNull RecyclerView.ViewHolder viewHolder) { // 该案例中, 拖动操作只能上下进行
效果图如下:(gif图有点顿卡,其实运行是很流畅的) demo下载地址: DragRecyclerView 如何实现 那么是如何实现的呢?...我们只需要实例化一个ItemTouchHelper,然后关联到RecyclerView就OK了: itemTouchHelper = new ItemTouchHelper(new ItemTouchHelper.Callback...()); itemTouchHelper.attachToRecyclerView(recyclerView); 构造方法中需要一个ItemTouchHelper.Callback,ItemTouchHelper...详见demo 开始拖拽时震动 支付宝的拖拽网格在长按后开始拖拽时会有一次短时间的震动提示用户开始拖拽了,很友好的交互,我们也加一个: 添加权限: android:name...="android.permission.VIBRATE" /> 在开始拖拽时添加下面代码: //获取系统震动服务 Vibrator vib = (Vibrator) activity.getSystemService
binding.rvText.setLayoutManager(new LinearLayoutManager(this)); } } 那么后面添加视图的点击事件和子控件的处理,我这里就一步到位了,一次性写好...五、RecyclerView下拉刷新和上拉加载 在日常使用中,RecyclerView的数据并不是一次性都加载出来的,会有分页,重新加载等操作,而手机上操作就是下拉刷新和上拉加载。...② ItemTouchHelper 在initView()添加如下代码: ItemTouchHelper helper = new ItemTouchHelper(new ItemTouchHelper.Callback...int swipeFlags = ItemTouchHelper.START | ItemTouchHelper.END; 这里的swipeFlags的值是可以组合的,你是单独设置ItemTouchHelper.START...| ItemTouchHelper.DOWN | ItemTouchHelper.START | ItemTouchHelper.END; //控制快速滑动的方向 int swipeFlags
class ItemTouchHelperGestureListener extends GestureDetector.SimpleOnGestureListener{ //一次单独的轻触抬起手指操作...android:divider="#ffff0000" android:dividerHeight="10dp" android:layout_width="match_parent...该方法的参数为 RecyclerView.ItemDecoration,该类为抽象类,且官方目前并没有提供默认的实现类,我们只能自己来实现。...当然,今天我们不涉及其他地方的使用) 实现的代码并关联到 RecyclerView 非常简单,代码如下: ItemTouchHelper itemTouchHelper = new ItemTouchHelper...需要我们关注的是创建 ItemTouchHelper 时传入的参数 ItemTouchHelper.Callback() 。
事件传递机制 七 ) 【Android 事件分发】ItemTouchHelper 简介 ( 拖动/滑动事件 | ItemTouchHelper.Callback 回调 ) 【Android 事件分发...】ItemTouchHelper 实现侧滑删除 ( 设置滑动方向 | 启用滑动操作 | 滑动距离判定 | 滑动速度判定 | 设置动画时间 | 设置侧滑触发操作 ) 【Android 事件分发】ItemTouchHelper...实现拖动排序 ( 设置滑动方向 | 启启用长按拖动功能 | 拖动距离判定 | 设置拖动触发操作 ) 【Android 事件分发】ItemTouchHelper 事件分发源码分析 ( 绑定 RecyclerView...) 【Android 事件分发】ItemTouchHelper 源码分析 ( OnItemTouchListener 事件监听器源码分析 ) ---- 文章目录 Android 事件分发 系列文章目录...涉及到的本博客相关源码 四、博客资源 一、OnItemTouchListener 事件监听器引入 ---- 在上一篇博客 【Android 事件分发】ItemTouchHelper 事件分发源码分析
,最低兼容到android 3.0版本.之前listview难以实现或者不能实现的效果,它都可以实现或者轻松实现. 1.那么它有哪些优势呢?...default : return super.onTouchEvent(event); } }); 不陌生吧,但是这个监听只能应对一些简单的操作...: ItemTouchHelper itemTouchHelper = new ItemTouchHelper(new ItemTouchHelper.Callback()); itemTouchHelper.attachToRecyclerView...image.png 然后就实现拖拽功能了 ItemTouchHelper itemTouchHelper = new ItemTouchHelper(new RecyclerItemTouchHelperCallBack...boolean isRunning():返回当前是否有动画正在运行。 boolean animateAdd():添加元素时调用,通常返回true。
目录介绍 01.拖拽需要实现功能 02.几个重要的方法说明 03.简单实现思路 04.拖拽效果上优化 05.完整代码展示 好消息 博客笔记大汇总【16年3月到至今】,包括Java基础及深入知识点,Android...| ItemTouchHelper.RIGHT | ItemTouchHelper.UP | ItemTouchHelper.DOWN;...(viewHolder.itemView.getContext() .getResources().getColor(android.R.color.darker_gray...viewHolder.itemView.setBackgroundColor(viewHolder.itemView.getContext().getResources() .getColor(android.R.color.white...itemTouchHelper = new ItemTouchHelper(callback); try{ //关联recyclerView,一个helper对象只能对应一个recyclerView
事件传递机制 七 ) 【Android 事件分发】ItemTouchHelper 简介 ( 拖动/滑动事件 | ItemTouchHelper.Callback 回调 ) 【Android 事件分发...】ItemTouchHelper 实现侧滑删除 ( 设置滑动方向 | 启用滑动操作 | 滑动距离判定 | 滑动速度判定 | 设置动画时间 | 设置侧滑触发操作 ) 【Android 事件分发】ItemTouchHelper...实现拖动排序 ( 设置滑动方向 | 启启用长按拖动功能 | 拖动距离判定 | 设置拖动触发操作 ) 【Android 事件分发】ItemTouchHelper 事件分发源码分析 ( 绑定 RecyclerView...) 【Android 事件分发】ItemTouchHelper 源码分析 ( OnItemTouchListener 事件监听器源码分析 ) 【Android 事件分发】ItemTouchHelper...方法 2、moveIfNecessary 方法 二、ItemTouchHelper 涉及到的本博客相关源码 三、博客资源 一、onTouchEvent 事件消费源码分析 ---- 在上一篇博客 【Android
= null) newList.addAll(list); if (newList.size() 只能4张 return...| ItemTouchHelper.DOWN | ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT; swipeFlags = 0;...闲置状态 * ItemTouchHelper.ACTION_STATE_SWIPE 滑动中状态 * ItemTouchHelper#ACTION_STATE_DRAG 拖拽中状态 */ @Override...方法 ItemTouchHelper.Callback callback = new RecycleItemTouchHelper(mPhotoAdapter); ItemTouchHelper itemTouchHelper...= new ItemTouchHelper(callback); itemTouchHelper.attachToRecyclerView(mRvPhoto); 这样既可实现item的拖拽效果啦 6
为了提高咱们程序员发言的积极性,增添技术部的沟通氛围,决定之前的分享形式不变,但是改为月末一次,技术部的分享每周一次。主题可以是当前部门的相关技术,当然最好是能够让大众听懂。...我分三部分准备: APP准备 文档准备 Keynote准备 一、APP准备 项目已经上传到GitHub上:AndroidMD 运行效果 ? 花了两个多小时做了这个APP,功能简单,主题明确。...三、总结 这应该是本人第一次技术分享,除了内容准备的还算充分,分享的过程不是很满意。...创建实现ItemTouchHelper.Callback的类 internal inner class ItemTouchHelperCallback : ItemTouchHelper.Callback...or ItemTouchHelper.DOWN val swipeFlags = ItemTouchHelper.START or ItemTouchHelper.END
、修改单条数据 二、批量修改数据 三、完整代码示例 四、RecyclerView 相关资料 一、修改单条数据 ---- 修改单条数据 : 调用 RecyclerView.Adapter 的 void notifyItemChanged...(0); RecyclerView.Adapter.notifyItemChanged(int position) 函数原型 : 该函数定义在 RecyclerView 的内部类 Adapter 中 ;...(int position) { mObservable.notifyItemRangeChanged(position, 1); } } } 运行效果 : 动画效果是系统自带的...itemCount) { mObservable.notifyItemRangeChanged(positionStart, itemCount); } } } 运行效果...; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup
的布局里面有控件,将这些控件封装起来放在一个类中,使用的时候相当于对成员变量的使用 避免用一次找一次。...就像你通过身份证(id)去找人,不用ViewHolder的话,你每次用他都要去找一次 使用ViewHolder相当于把他放旁边放着,使用的时候直接拿,就不需要用id再去找他了 /** * ViewHolder...RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) { //上下左右拖动 int dragFlags = ItemTouchHelper.UP...| ItemTouchHelper.DOWN | ItemTouchHelper.RIGHT | ItemTouchHelper.LEFT; //可向左滑动...---删除 int swipeFlags = ItemTouchHelper.LEFT; return makeMovementFlags(dragFlags, swipeFlags
前言 上一篇《Android使用DragAndDrop拖拽效果实现宫格位置变换》中主要介绍DragAndDrop拖拽组件,并做了一个使用的Demo,在Jetpack中将DragAndDrop再做了一次简化...(nowpos) notifyItemChanged(oldpos) return@configureView ContentInfoCompat.Builder...DrugsAdapterNew完整代码 package pers.vaccae.draganddropdemo.adapter import android.app.Activity import android.content.ClipData...import android.content.ClipDescription import android.content.Intent import android.view.DragEvent import...(nowpos) notifyItemChanged(oldpos) return@configureView ContentInfoCompat.Builder
or ItemTouchHelper.UP or ItemTouchHelper.RIGHT or ItemTouchHelper.DOWN return makeMovementFlags...or ItemTouchHelper.DOWN swipeFlags = ItemTouchHelper.START or ItemTouchHelper.END...我们再来梳理一下:两种不同的布局都有分割线分割线只需设置一次我想到另外一个办法,不对RecyclerView做处理了,既然两种布局都有分割线,是不是可以把分割线合二为一了,然后根据LayoutManager...} super.clearView(recyclerView, viewHolder) }复制代码4.5、固定位置在实际需求中,交互可能要求我们第一个菜单不可以变更顺序,只能固定...复制代码这段代码其实有点意思的,解读一下:1.第一个if判断,避免重复操作,直接return2.第二个if判断,调用了destroyCallbacks,在destroyCallbacks里面做了一些移除和回收操作,说明只能绑定到一个