Recyclerview+glide的问题
来源:互联网 发布:中铁秦皇半岛 知乎 编辑:程序博客网 时间:2024/06/05 22:08
首先:现象:recyclerview+glide+瀑布流
问题: 快速滑动出现,item错乱,图片闪烁,
查了各种资料,找了各中原因,太难找了,关键问题就是,你从服务器获取图片的时候,当前的viewholder,不知道,你图片有多大,造成,复用的时候,错乱,
- 解决方案: 给你的item布局中固定宽高,让你的布局
<ImageView android:id="@+id/item_beagirs_ig" android:layout_width="48dp" android:layout_height="100dp" android:adjustViewBounds="true" android:background="#ff3c3c3c" android:scaleType="centerCrop" />
当然如果这样的话,你用瀑布流就没什么意义了,也展现不出来,真正的效果,要想展现瀑布流效果,首先获取图片的比例,其次,再根据比例,设置宽高,这样我试过了,就显示不出来图片了,也不知道是不是我的方法不对,于是我采用了简单的方式,如下,其中imagHeightMap是一个hashMap类型的集合,记录每次的宽高,用于下次,复用时候的直接提取,
if (!imageHeightMap.containsKey(postion)) { View view = holder.getView(R.id.item_beagirs_ig); ViewGroup.LayoutParams params = view.getLayoutParams(); //设置图片的相对于屏幕的宽高比 params.width = (int) (TDevice.getScreenWidth() / 2); params.height = (int) (TDevice.getScreenHeight() / 2 + Math.random() * 100); view.setLayoutParams(params); imageHeightMap.put(postion, params.height); } else { Integer integer = imageHeightMap.get(postion); View view = holder.getView(R.id.item_beagirs_ig); ViewGroup.LayoutParams params = view.getLayoutParams(); params.width = (int) (TDevice.getScreenWidth() / 2); params.height = integer; view.setLayoutParams(params); }
这样错乱问题,基本解决,要是你再写上glide的占位图,估计更不会乱了,方正我是写了,很规整,除此之外,如果你的瀑布流,要是最顶端会留空白的话,你就用对使用如下,
@Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { ((StaggeredGridLayoutManager) layoutManager).invalidateSpanAssignments();//让头部重新布局,刷新 super.onScrollStateChanged(recyclerView, newState); }
哈哈,就这样就解决了,大毛:走了,别啊,还有闪烁问题没解决呢,闪烁,还有什么闪烁问题,开个玩笑,
- 闪烁问题的解决:
每次向上滑动,当加载图片的时候,总是,闪烁一下,很明显,你刷新的太多了,当你下拉加载更多的时候,得到数据,不要用 adapter.notifyDataSetChanged();而是用notifyItemChanged(mdatas.size());//里面的数根据你的,去设置。
到此就基本解决,问题所在。
1 0
- Recyclerview+glide的问题
- Retrofit2.1.0 + Glide + ToolBar + RecyclerView 的使用
- 用Glide加载图片到Recyclerview中有时候只显示占位图的问题
- RecyclerView+Glide+PhotoView
- RecyclerView+Glide+PhotoView
- Glide RecyclerView插件
- OkHttp解析数据,RecyclerView和Glide的加载图片
- RecyclerView缓存的问题
- recyclerview出现的问题
- RecyclerView遇到的问题
- Glide在RecyclerView自适应图片尺寸
- retrofit+koliten+lambda+glide+recyclerview
- glide展示图片的拉伸问题
- Glide加载图片尺寸不对的问题
- Glide加载图片的变形问题
- Glide与圆形图片CircleImageView的问题
- Glide使用中遇到的问题
- RecyclerView的divider的问题
- Chrome学习笔记(三):UI组件,皮肤引擎
- Android Activity 的启动模式
- 架设github代码库
- libusb_bulk_transfer函数说明
- java 生成 树形结构数据(tree)
- Recyclerview+glide的问题
- Mac OS X打开下载文件提示的禁止方法
- linux性能监控——CPU、Memory、IO、Network
- Python3.x中,使用print时出错(SyntaxError: Missing parentheses in call to 'print')解决办法
- mysql sum Count AVG
- Hibernate中不能输入中文乱码问题的解决
- 10进制转36进制,固定6位 方法
- 管道日了狗-while read line大坑
- 第十一次实验 类与对象