(有图)仿QQ侧滑菜单:RecyclerView侧滑菜单,长按拖拽,滑动删除
RecyclerView的出现不可否认是开发者们的福利,它自带的ItemTouchHelper能非常轻松的完成侧滑删除、长按拖拽,但是难免有的开发者不会使。再加上实际的开发中侧滑删除往往会用侧滑菜单来实现,这就难为了有些开发者了。SwipeRecyclerView的出现就完美的解决了这些问题,侧滑删除、长按拖拽Item仅需要一句话…
- 需要说明的是,本库没有对RecyclerView做大的修改,只是ItemView的封装。看起来是对RecyclerView的修改,其实仅仅是为RecyclerView添加了使用的方法API而已。
- 应开发者们的要求,本库已经更新了三个版本了,会一直维护下去,根据小伙伴的要求,以后也会添加一些其它功能。
因为SwipeRecyclerView发布已经一个月了,现在有了几个不小的更新,都是刚需,所以再次分享出来给大家,希望大家能多多支持。
SwipeRecyclerView将完美解决这些问题:
- 以下功能全部支持:竖向ListView、横向ListView、Grid、StaggeredGrid四种形式。
- RecyclerView 左右两侧 侧滑菜单。
- 菜单可以自适应Item不同高度。
- 某一个Item显示的不同的菜单(类似QQ)。
- 菜单横向排布、菜单竖向排布(看下图)。
- RecyclerView长按拖拽Item。
- RecyclerView侧滑删除item。
- 指定RecyclerView的某一个Item不能滑动删除或长按拖拽。
- 用SwipeMenuLayout在任何地方都可以实现你自己的侧滑菜单。
- 使用SwipeRecyclerView下拉刷新、自动加载更多。
- 可以和ViewPager嵌套使用(兼容滑动冲突)。
SwipeRecyclerView的源码托管在Github:github.com/yanzhenjie/…,欢迎Star。
如果你是手机看本文,记不住项目地址不要紧,记住我的个人主页就好,我的所有项目在我网站都有。
我的域名是:yanzhenjie.com,也就是我名字严振杰.com,我相信你肯定记住了,没记住的再看一眼啦。
要是还没记住,更简单的是百度/Google搜索我名字:严振杰,排名第一的就是我。
效果图
gif有一些失真,且网页加载速度慢,可以[下载demo的apk][3]看效果。
侧滑菜单
- 左右两侧都有菜单,主动调出第几个菜单或者手指滑动出现。
- 根据ViewType某一个Item显示的不同的菜单(类似QQ)
和ViewPager嵌套 下拉刷新、自动加载更多
- 和ViewPager嵌套使用,兼容了滑动冲突。
- 可以和任何下拉刷新的框架结合,滑动到底部自动加载更多。
长按拖拽 侧滑菜单结合使用
- 一直按住Item进行拖拽排序,支持List、Grid形式。
- 长按拖拽并且和侧滑菜单结合使用。
直接滑动删除 长按拖拽Item排序
- 侧滑直接删除,也可以长按拖拽排序。
- 可以指定某个Item不能被侧滑删除、不能被长按拖拽。
竖型菜单 用自定义布局实现自己的菜单
- 给菜单设置排列方向,支持横向、竖向。
- 开发者用库中的
SwipeMenuLayout
开发自己的侧滑菜单。
引用方法
- Eclipse 请自行下载源码。
- AndroidStudio使用Gradle构建添加依赖(推荐)
compile 'com.yanzhenjie:recyclerview-swipe:1.0.2'复制代码
Or Maven:
<dependency><groupId>com.yanzhenjie</groupId><artifactId>recyclerview-swipe</artifactId><version>1.0.2</version><type>pom</type>
</dependency>复制代码
使用介绍
这里列出关键实现,具体请参考demo,或者加最上面的交流群一起讨论。 更多教程请进入我的博客查看。
启用SwipeReyclerView的长按Item拖拽功能和侧滑删除功能
recyclerView.setLongPressDragEnabled(true);// 开启长按拖拽
recyclerView.setItemViewSwipeEnabled(true);// 开启滑动删除。
recyclerView.setOnItemMoveListener(onItemMoveListener);// 监听拖拽和侧滑删除,更新UI和数据。复制代码
添加Item侧滑菜单
侧滑菜单支持自动打开某个Item的菜单,并可以指定是左边还是右边的:
// 打开第一个Item的左侧菜单。
recyclerView.openLeftMenu(0);// 打开第一个Item的右侧菜单。
recyclerView.openRightMenu(0);复制代码
第一步,引用自定义View:SwipeMenuReyclerView:
<com.yanzhenjie.recyclerview.swipe.SwipeMenuRecyclerViewandroid:id="@+id/recycler_view"android:layout_width="match_parent"android:layout_height="wrap_content"app:layout_behavior="@string/appbar_scrolling_view_behavior" />复制代码
第二步,设置菜单创建器、菜单点击监听:
SwipeMenuRecyclerView swipeMenuRecyclerView = findViewById(R.id.recycler_view); // 设置菜单创建器。 swipeMenuRecyclerView.setSwipeMenuCreator(swipeMenuCreator); // 设置菜单Item点击监听。 swipeMenuRecyclerView.setSwipeMenuItemClickListener(menuItemClickListener);复制代码
第三步,菜单创建器创建菜单:
/** * 菜单创建器。在Item要创建菜单的时候调用。 */ private SwipeMenuCreator swipeMenuCreator = new SwipeMenuCreator() {@Overridepublic void onCreateMenu(SwipeMenu swipeLeftMenu, SwipeMenu swipeRightMenu, int viewType) {SwipeMenuItem addItem = new SwipeMenuItem(mContext).setBackgroundDrawable(R.drawable.selector_green)// 点击的背景。.setImage(R.mipmap.ic_action_add) // 图标。.setWidth(size) // 宽度。.setHeight(size); // 高度。swipeLeftMenu.addMenuItem(addItem); // 添加一个按钮到左侧菜单。SwipeMenuItem deleteItem = new SwipeMenuItem(mContext).setBackgroundDrawable(R.drawable.selector_red).setImage(R.mipmap.ic_action_delete) // 图标。.setText("删除") // 文字。.setTextColor(Color.WHITE) // 文字颜色。.setTextSize(16) // 文字大小。.setWidth(size).setHeight(size);swipeRightMenu.addMenuItem(deleteItem);// 添加一个按钮到右侧侧菜单。.// 上面的菜单哪边不要菜单就不要添加。} };复制代码
更多使用方法请参考Demo,或者加最上方的QQ群来交流。
第四步,继承SwipeMenuAdapter,和正常的Adapter一样使用:
public class MenuAdapter extends SwipeMenuAdapter<MenuAdapter.DefaultViewHolder> {@Overridepublic int getItemCount() {return 0;}@Overridepublic View onCreateContentView(ViewGroup parent, int viewType) {return null;}@Overridepublic ViewHolder onCompatCreateViewHolder(View realContentView, int viewType) {return null;}@Overridepublic void onBindViewHolder(MenuAdapter.DefaultViewHolder holder, int position) {} }复制代码
就到这里,更多的细节,请参考Github上的demo和源码,源码demo下载传送门。
(有图)仿QQ侧滑菜单:RecyclerView侧滑菜单,长按拖拽,滑动删除相关推荐
- Android开发之RecyclerView的交互动画(实现拖拽和删除)
做RecyclerView做相关的动画效果的时候,用的最多的是v7包下的ItemTouchHelper类,这个类很强大,如有兴趣的童鞋可以自行翻看源码,接下来我带领大家实现RecyclerView相关 ...
- android.support.v7 fragme,打造最强RecyclerView侧滑菜单,长按拖拽Item,滑动删除Item
前几天写了一片关于RecyclerView滑动删除Item,RecyclerView长按拖拽Item的博客,本来很简单一个使用,阅读量还挺高的,原博客传送门. 今天介绍一个RecyclerView I ...
- Android实现RecyclerView侧滑删除和长按拖拽-ItemTouchHelper
RecyclerView这个被誉为ListView和GirdView的替代品,它的用法在之前的一篇博文中就已经讲过了,今天我们就来实现RecyclerView的侧滑删除和长按拖拽功能,实现这两个功能我 ...
- 仿QQ多级折叠、展开菜单,三级下拉导航
仿QQ多级折叠.展开菜单,三级下拉导航 仿QQ面板风格的多级折叠.展开菜单,三级下拉导航,JavaScript+CSS共同结晶的结果,推荐给大家,点击"运行"可查看效果. http ...
- 安卓开发仿微信图片拖拽_仿微信朋友圈发表图片拖拽和删除功能
原标题:仿微信朋友圈发表图片拖拽和删除功能 中国联通在香港公布了上市公司2017年中期业绩.2017年上半年,公司主要业绩指标持续向好,收入稳步回升,服务收入达到人民币1,241.1亿元,同比增长3. ...
- 安卓开发仿微信图片拖拽_Android 仿微信朋友圈发表图片拖拽和删除功能
朋友圈实现原理 我们使用 Android Device Monitor 来分析朋友圈发布图片的界面实现原理.如果需要分析其他应用的界面实现也是采用这种方法哦. 打开 Android Device Mo ...
- Android 仿微信朋友圈发表图片拖拽和删除功能
朋友圈实现原理 我们使用 Android Device Monitor 来分析朋友圈发布图片的界面实现原理.如果需要分析其他应用的界面实现也是采用这种方法哦. 打开 Android Device Mo ...
- RecyclerView长按拖拽排序 ,缩短长按响应时间,长按0.1秒就可以开始拖动
RecyclerView长按拖拽排序 ,缩短长按响应时间,长按0.1秒就可以开始拖动 度娘搜索RecyclerView长按拖拽排序,很多文章讲解,没找到缩短长按响应时间的,所以自己研究了一下 先看效果 ...
- iOS开发——仿微信图片浏览交互的实现(向下拖拽图片退出图片浏览器)
点击上方"iOS开发",选择"置顶公众号" 关键时刻,第一时间送达! DEMO的github地址:https://github.com/YYProgrammer ...
- Android 可长按拖拽的RecyclerView
近期项目遇到需要拖拽的RecyclerView来实现需求,首先考虑了ItemTouchHelper 这个类,但是后续使用发现无法把item视图拖出RecyclerView的视图范围,于是打算自定义Re ...
最新文章
- php学习,一个简单的Calendar(2) 一个简单的活动页面
- 做一个略调皮的个人主页--相册与随笔篇
- 中国水产饲料市场发展深度调研及十四五前景预测报告2022年版
- yunyang tensorflow-yolov3 启动evaluate.py报错:Could not create cudnn handle: CUDNN_STATUS_ALLOC_FAILED原因
- android 动态移动xy,android – 如何使用AChartEngine动态线图和X轴自动平移(滚动)?...
- Premature Optimization
- 手机开启开发模式 hbuilder无法搜索到_MIUI 12这个惊艳功能,其他手机也能一键开启...
- 在WEB程序中隐藏后门
- 买书动态规划java_《编程之美》买书问题——动态规划
- 探索webpack热更新对代码打包结果的影响(二)
- LeetCode算法题-House Robber(Java实现)
- 中移动IM+MM 抢滩移动互联网
- 数学建模MATLAB难不难,如何才能在数学建模竞赛中取得好成绩
- 知道君推荐给大家一些写论文、搞科研、读大学必备的30款软件。
- Python基础重点复习(5)
- 笑话理解之Mature
- 给元素设置鼠标移入后变为手型的属性
- 实验三:基于A*算法的迷宫
- 苹果cmsV10仿优酷模板,最新自适应苹果cms模板
- 如何寻找适合的投稿SCI期刊