title: RecyclerView实现探探卡片滑动功能
date: 2018-10-07 10:35:56
tags: RecyclerView
代码实现
博客地址:https://blog.csdn.net/qq_39085422/article/details/78612132
我只掌握了RecyclerView基础用法,所以参考别人博客的代码实现。
我使用CardView代替RoundImageView实现圆角效果。
遇到的问题
1.CardView阴影显示不完全
Card_View.jpg
在文末会贴出我的布局代码。
2.左右滑,滑出时卡顿(未解决)
原因:adapter.notifyDataSetChanged();
卡片滑出后需要删除对应的数据,对数据源进行remove()操作,之后通知adapter,这个时候会发生卡顿
3.向上下滑动时,动画衔接的不好
原因:临界值计算公式不合理,只计算了在X轴的偏移量
解决:CardItemTouchHelperCallback类中的onChildDraw()里,
解决前代码:
float ratio = dX / getThreshold(recyclerView, viewHolder);
解决后代码:
float distance = (float)Math.sqrt(dX*dX+dY*dY);
float ratio = distance / getThreshold(recyclerView, viewHolder);
变化:增加了distance变量,计算位移两点间的直线距离。
4.用Gilde加载网络图片时,会闪烁,使用本地图片时不会
图片闪烁.jpg
原因:Gilde进行加载网络图片时,会保留缓存,使用时加载完整图片,所以分辨率不同,会闪烁。
解决:
思路是类似于做一层缓存,先把图片加载好放在一个List里面,使用时直接从数组里取出来,这样子就模拟了本地图片加载。
具体实现如下:
在adaputer中声明两个数组
//图片的URL
private List imgUrlList = new ArrayList<>();
//缓存数组
private List glideDrawableList = new ArrayList<>();
//glideDrawableList的访问方法,imgUrlList通过构造函数传入,不需要get,set
public List getGlideDrawableList() {
<