下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】Android仿探探卡片式滑动效果实现
前言第一次进入探探软件界面,就被这种通过卡片式滑动来选择“喜欢/不喜欢”的设计所吸引了。当时就非常想通过自己来实现这种仿探探式的效果,然而却没什么思路。不过毋庸置疑的是,这种效果的原理肯定和ListView/RecyclerView类似,涉及到ItemView的回收和重用,否则早就因为大量的ItemView而OOM了。
再到后来,看到许多大神也推出了同样仿探探效果的博客,从头到尾阅读下来,写得通俗易懂,基本上没什么问题。于是,实现仿探探效果的想法再次出现在脑海中。那么,还犹豫什么,趁热来一发吧!就这么愉快地决定了。
首先面临的问题就是关于实现View上的考虑。毫无疑问。
RecyclerView是最佳选择!
RecyclerView是最佳选择!
RecyclerView是最佳选择!
重要的话讲三遍!!!
究其原因,第一,RecyclerView是自带ItemView回收和重用功能的,就不需要我们考虑这个问题了;第二,RecyclerView的布局方式是通过设置LayoutManager来实现的,这样就充分地把布局和RecyclerView“解耦”开来了。而LayoutManager是可以通过自定义的方式来实现的。这恰恰是我们想要的!!!再说一点,这也正是不选用ListView的原因之一。
下面,我们就开始动手了。带你见证奇迹的时刻。
CardLayoutManager
创建CardLayoutManager并继承自RecyclerView.LayoutManager。需要我们自己实现generateDefaultLayoutParams()方法:
一般情况下,像上面这样写即可。
下面这个方法就是我们的重点了。onLayoutChildren(finalRecyclerView.Recyclerrecycler,RecyclerView.Statestate)方法就是用来实现ItemView布局的:
总体来说,CardLayoutManager主要就是为ItemView布局,然后根据position做相对应的偏差。我们一起来看下完成的效果图:
可以看出,大致的效果已经有了。缺少的就是处理触摸滑动事件了。
OnSwipeListener
在看滑动事件的代码之前,我们先定义一个监听器。主要用于监听卡片滑动事件,代码就如下所示,注释也给出来了。应该都看得懂吧:
CardItemTouchHelperCallback
现在,我们可以回过头来看看卡片滑动了。对于ItemTouchHelper来处理ItemView的触摸滑动事件相必都不陌生吧!
我们暂且命名为CardItemTouchHelperCallback。对于ItemTouchHelper.Callback而言,需要在getMovementFlags(RecyclerViewrecyclerView,RecyclerView.ViewHolderviewHolder)方法中配置swipeFlags和dragFlags。
具体的方法如下,对于swipeFlags只关心左右两个方向:
还有一点需要注意,前面说过,为了防止第二层和第三层卡片也能滑动,因此我们需要设置isItemViewSwipeEnabled()返回false。
接下来,就是去重写onMove(RecyclerViewrecyclerView,RecyclerView.ViewHolderviewHolder,RecyclerView.ViewHoldertarget)和onSwiped(RecyclerView.ViewHolderviewHolder,intdirection)方法。但是因为在上面我们对于dragFlags配置的是0,所以在onMove(RecyclerViewrecyclerView,RecyclerView.ViewHolderviewHolder,RecyclerView.ViewHoldertarget)中直接返回false即可。
这样,我们就把目光投向onSwiped(RecyclerView.ViewHolderviewHolder,intdirection)方法:
写好后,我们先来看看滑动效果:
发现还是差了点什么,没错!是缺少了动画。在滑动的过程中我们可以重写onChildDraw(Canvasc,RecyclerViewrecyclerView,RecyclerView.ViewHolderviewHolder,floatdX,floatdY,intactionState,booleanisCurrentlyActive)方法来添加动画:
现在我们加上动画后,来看看效果:
发现还是有问题,第一层的卡片滑出去之后第二层的就莫名其妙地偏了。这正是因为ItemView重用机制“捣鬼”。所以我们应该在clearView(Recycle
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 废水治理项目可行性研究报告
- 社区服务体系建设项目可行性研究报告
- 沙漠生态农林综合开发建设可研报告
- 《腾讯的SWOT分析》课件
- 高考满分作文(10篇)
- 班主任带班育人方略5000字7篇
- 通信设备招投标评审制度
- 临时创意产业园租赁协议
- 环保项目降水井施工合同
- 劳务服务行业质量管理案例分析
- 话题26 科技发展与信息技术创新科学精神信息安全 2025年高考英语专项复习
- 三级安全教育培训计划及制度
- 啤酒酿造与文化学习通超星期末考试答案章节答案2024年
- 华为集团员工手机管理制度
- 2024届湖南省常德市高三上学期一模历史试题 含解析
- 2024年大学试题(法学)-证据学考试近5年真题集锦(频考类试题)带答案
- GB/T 44625-2024动态响应同步调相机技术要求
- 专题27西亚、北非与撒哈拉以南的非洲(高频非选择题50题)(原卷版)
- 2025届高考地理一轮复习课件 土壤
- 《抖音运营》课件-1.短视频与抖音认知基础
- 第二单元《线与角》(单元测试)-2024-2025学年四年级上册数学北师大版
评论
0/150
提交评论