recyclerview探探_RecyclerView Item滑动特效 仿探探
ReSwipeCard
本项目是在 CardSwipeLayout的基础上进行的修改,感谢原作者。
项目功能: - 解决滑动与点击事件冲突 - 增加硬件加速支持 - 滑动方向控制 - 滑出方向控制 - 滑出时间控制 - 滑出阈值 - 循环卡片 - 卡片堆叠方式 - 卡片数量 - 增加手动滑动
效果图如下所示,也可以直接下载跟根目录下的app-debug.apk查看:
使用方式
//项目中未使用RecyclerView
dependencies {
compile ('lin.jerrylin0322.reswipecard:reswipecard:1.0.0')
}
//如果项目中使用了RecyclerView:
dependencies {
compile ('lin.jerrylin0322.reswipecard:reswipecard:1.0.0') {
exclude module:'recyclerview-v7' }
}
maven:
lin.jerrylin0322.reswipecard
reswipecard
1.0.0
pom
代码中:
CardSetting setting=new CardSetting();
setting.setSwipeListener(new OnSwipeCardListener() {
@Override
public void onSwiping(RecyclerView.ViewHolder viewHolder, float dx, float dy, int direction) {
switch (direction) {
case ReItemTouchHelper.DOWN:
Log.e("aaa", "swiping direction=down");
break;
case ReItemTouchHelper.UP:
Log.e("aaa", "swiping direction=up");
break;
case ReItemTouchHelper.LEFT:
Log.e("aaa", "swiping direction=left");
break;
case ReItemTouchHelper.RIGHT:
Log.e("aaa", "swiping direction=right");
break;
}
}
@Override
public void onSwipedOut(RecyclerView.ViewHolder viewHolder, CardBean o, int direction) {
switch (direction) {
case ReItemTouchHelper.DOWN:
Toast.makeText(NormalActivity.this, "swipe down out", Toast.LENGTH_SHORT).show();
break;
case ReItemTouchHelper.UP:
Toast.makeText(NormalActivity.this, "swipe up out ", Toast.LENGTH_SHORT).show();
break;
case ReItemTouchHelper.LEFT:
Toast.makeText(NormalActivity.this, "swipe left out", Toast.LENGTH_SHORT).show();
break;
case ReItemTouchHelper.RIGHT:
Toast.makeText(NormalActivity.this, "swipe right out", Toast.LENGTH_SHORT).show();
break;
}
}
@Override
public void onSwipedClear() {
Toast.makeText(NormalActivity.this, "cards are consumed", Toast.LENGTH_SHORT).show();
}
});
CardTouchHelperCallback helperCallback = new CardTouchHelperCallback(mRecyclerView, list,setting);
mReItemTouchHelper = new ReItemTouchHelper(helperCallback);
CardLayoutManager layoutManager = new CardLayoutManager(mReItemTouchHelper, setting);
mRecyclerView.setLayoutManager(layoutManager);
CardAdapter cardAdapter = new CardAdapter(list);
mRecyclerView.setAdapter(cardAdapter);
在Adapter的item的xml中使用SwipeTouchLayout当做根布局:
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="30dp">
...
CardSetting
所有的参数变量都在CardSetting当中实现。
上下左右滑动控制,默认四个方向都可以滑动:
public int getSwipeDirection() {
return ReItemTouchHelper.LEFT | ReItemTouchHelper.RIGHT
| ReItemTouchHelper.UP |ReItemTouchHelper.DOWN;
}
去掉左边滑动的效果图如图所示:
上下左右滑出控制,默认四个方向都可以滑出:
public int couldSwipeOutDirection() {
return ReItemTouchHelper.LEFT | ReItemTouchHelper.RIGHT
| ReItemTouchHelper.UP |ReItemTouchHelper.DOWN;
}
去掉垂直方向的滑出效果图如图所示:
修改卡片堆叠方式,默认为从下往上:
CardConfig.java
public int getStackDirection() {
return ReItemTouchHelper.DOWN;
}
效果图:
是否循环,默认为循环:
public boolean isLoopCard() {
return true;
}
去掉循环的效果如下图所示:
自动滑动效果:
//direction=ReItemTouchHelper.LEFT or ReItemTouchHelper.RIGHT .etc
mReItemTouchHelper.swipeManually(direction);
卡片缩放递减的值,默认为0.1f:
public float getCardScale() {
return DEFAULT_SCALE;
}
卡片展示数量:
public int getShowCount() {
return DEFAULT_SHOW_ITEM;
}
移动过程中最大卡片旋转值:
public float getCardRotateDegree() {
return DEFAULT_ROTATE_DEGREE;
}
布局时卡片偏移量,第一张不偏移,随后递增,默认偏移量为14:
public int getCardTranslateDistance() {
return DEFAULT_TRANSLATE_Y;
}
是否开启硬件加速:
public boolean enableHardWare() {
return true;
}
控制滑出时间:
public int getSwipeOutAnimDuration() {
return 400;
}
控制滑动可以滑出的阈值,默认是RecyclerView的宽度*0.3f:
public float getSwipeThreshold() {
return 0.3f;
}
如果有任何的问题,可以在 Issues当中告诉我~
recyclerview探探_RecyclerView Item滑动特效 仿探探相关推荐
- 万科java_[Java教程]仿万科底部的新闻滑动特效
[Java教程]仿万科底部的新闻滑动特效 0 2017-09-03 10:00:07 仿万科底部的新闻滑动特效: 仿万科的底部的新闻滑动特效 1 2 3 4 本文网址:http://www.shaoq ...
- Android中实现类似探探中图片左右滑动切换效果
偶然之间发现探探的左右滑动的图片挺好玩,试着去做了下,再到后来,看到许多大神也推出了同样仿探探效果的博客,从头到尾阅读下来,写得通俗易懂,基本上没什么问题.于是,实现仿探探效果的想法再次出现在脑海中. ...
- html5做探探,基于Nuxt.js+Vue聊天实例|nuxt仿微信/探探聊天界面
1.项目简介 Nuxt.js是目前比较热门的服务端渲染SSR框架.凭借其更好的SEO.更快的内容到达时间(*首屏渲染速度快*) 加之基于Vue.js技术开发,更易于上手,获得了很多技术开发者的青睐. ...
- nuxt-chat聊天室|vue仿微信/探探界面nuxt+vue+vuex|朋友圈
Nuxt-Chatroom 基于Nuxt.js+Vue.js仿微信|探探App界面聊天社交 运用nuxt.js+vue.js+vuex+vpopup+vant+webpack等技术架构开发的社交聊天室 ...
- 仿万科底部的新闻滑动特效
仿万科底部的新闻滑动特效: <!DOCTYPE html> <html lang="en"> <head><meta charset=&q ...
- 百度超级链数字藏品 仿鲸探数字藏品平台开发
2022年1月,百度搜索非常链公布发布第一个数据藏品服务平台,特惠派发历史博物馆系列产品千手观音菩萨.纪念版北京天坛神兽.及特聘艺术家韩美林写作的风雪异彩.壬寅康祥等系列产品数据藏品.据统计,百度搜索 ...
- RecyclerView拖拽排序和滑动删除实现
效果图 如何实现 那么是如何实现的呢?主要就要使用到ItemTouchHelper ,ItemTouchHelper 一个帮助开发人员处理拖拽和滑动删除的实现类,它能够让你非常容易实现侧滑删除.拖拽的 ...
- 深入理解 RecyclerView 的绘制流程和滑动原理,直面春招
归纳分发布局的三个步骤: dispatchLayoutStep1(): 表示进行预布局,适配器更新.动画运行.保存当前视图的信息等工作: dispatchLayoutStep2(): 表示对最终状 ...
- Android 用HorizontalScrollView实现ListView的Item滑动删除 ,滑动错乱 冲突
用HorizontalScrollView实现类似微信的滑动删除 测试于:Android2.2+ 对于Android来说按键操作已经在减少,越来越多的手势操作层出不穷,今天介绍一款LIstView的I ...
最新文章
- c语言表达式用法,C语言开发之运算符、表达式用法
- Java jvisualvm简要说明
- 009-mac下记事本工具 sublime text3
- linux开机和登陆欢迎信息
- C#遍历指定文件夹中的所有文件
- 外存中的对换区和文件区
- java编写八数码_java实现八数码
- 【C/C++】基本数据类型的隐式类型转换
- 交换排序图解_10大经典排序算法,20+张图就搞定
- mysql的数据类型5---enum与set类型
- 拓端tecdat|Prophet在R语言中进行时间序列数据预测
- vc++6.0常用插件和界面库
- Skype协议分析[0]_安装Skype
- 汉字区位码转换为“汉字ASCII码“
- Livereload介绍
- 班长投票小程序的java代码
- OOK调制解调的FPGA实现,求Verilog代码
- 漫漫Java学习路,第十四天
- 爬虫之js加密破解抓取网易云音乐评论生成词云
- 【不支持全功能typec的电脑如何一线直连便携屏】