glide

关于RecyclerView使用Glide加载图片导致错位问题总结

旧街凉风 提交于 2019-12-06 10:17:54
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/u013183608/article/details/89296915 前言 使用recyclerView时遇到了图片错位的问题,这个问题网上已经讨论的很成熟,谨以此文章做个总结。 问题产生原因 根本原因: 因为有ViewHolder的重用机制,每一个item在移出屏幕后都会被重新使用以节省资源,避免滑动卡顿。 场景A: 1.第一次进入页面,RecyclerView载入,不做任何触摸操作 2.Adapter经过onCreateViewHolder()创建当前显示给用户的N个ViewHolder对象,并且在onBind时启动了N条线程加载图片 3.N张图片全部加载完毕,并且显示到对应的ImageView上 4.控制屏幕向下滑动,前K个item离开屏幕可视区域,后K个item进入屏幕可视区域 5.前K个item被回收,重用到后K个item。后K个item显示的图片是前K个item的图片 6.开启了K条线程,加载后K张图片。等待几秒,后K个item显示的图片突然变成了正确的图片 经过细化分析可以看出:如果当前网络速度很快,第6个步骤的加载速度在1秒甚至0.5秒内,就会造成人眼看到的图片闪烁问题

RecyclerView -- 给你一个不卡的滑动列表

耗尽温柔 提交于 2019-12-06 06:17:47
https://www.jianshu.com/p/519bb23987ca 看完此文章 你就会学到什么... RecyclerView添加头部,尾部,或list列表中某位置添加view RecyclerView+SwipeRefreshLayout 实现上下拉刷新效果 分页加载数据 列表优化方案 利用Glide加载图片,滑动的时候按back键,App会crash蹦掉处理。 添加依赖 //recyclerview compile 'com.android.support:recyclerview-v7:25.1.1' //glide compile 'com.github.bumptech.glide:glide:3.7.0' //butterknife 注意需要在三个第三添加代码 //1 module gradle里面底部添加 compile 'com.jakewharton:butterknife:8.5.1' annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1' //2 module gradle 里面顶部添加 apply plugin: 'com.jakewharton.butterknife' //3 在project gradle里面添加 dependencies { classpath

Android RecyclerView利用Glide加载大量图片into(Target)导致OOM异常

前提是你 提交于 2019-12-06 06:13:29
学过android的人应该都知道Glide是一个无比强大的图片加载库,它内部已经提供了很好的缓存机制供我们选择,我们只需一个参数调用即可(DiskCacheStrategy()),而不必像Universal-Image-Loader类一样自己实现。正是因为它太好用了,导致我们很容易忽略一些重要的细节。Android的bitmap对象是最容易导致OOM的元凶之一,如果我们加载大量的bitmap对象,我们就不得不预防OOM。   我的原意是想将图片加载进RecyclerView里以StaggeredGridLayoutManager模式2列显示,实现瀑布流效果 mRecyclerView.setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL)); 但是因为图片都是网络中获取到的,不知道其具体大小,因此一开始采用target来实现,具体如下: Glide.with(itemView.getContext()) .load(url) .asBitmap() .placeholder(R.drawable.error_pic) .diskCacheStrategy(DiskCacheStrategy.ALL) .into(new SimpleTarget<Bitmap>

Android图片缓存之初识Glide

元气小坏坏 提交于 2019-12-04 20:21:47
前言: 前面总结学习了图片的使用以及Lru算法,今天来学习一下比较优秀的图片缓存开源框架。技术本身就要不断的更迭,从最初的自己使用SoftReference实现自己的图片缓存,到后来做电商项目自己的实现方案不能满足项目的需求改用Afinal,由于Afinal不再维护而选择了师出同门的Xutils,中间也接触过别的开源框架比如Picasso,对Picasso的第一次印象就不太好,初次接触是拿到了公司刚从外包公司接手过来的图片社交类app,对内存占用太大,直接感受就是导致ListView滑动有那么一点卡顿,老牌的图片缓存框架universalImageLoader听说过一直没有真正使用过,之前项目都很小,差不多几百万级别的app,一直使用的都是Xutils,最近觉得项目大起来了,万一Xutils不维护了或者说要求支持的图片格式多起来的时候,可能Xutils就不是最佳选择了,这也是来学习Gilde的根本动机吧。其实本来想着去学习Facebook的Fresco图片框架,但是简单的看了一下,需要连同自定义控件一起使用,功能虽然强大,但是对于已经在维护的项目修改成本那可不是一般的高,以后有兴趣在学习吧! 图片缓存相关博客地址: Android图片缓存之Bitmap详解 Android图片缓存之初识Glide Android图片缓存之Glide进阶 Android图片缓存之Lru算法

Android开发中使用Glide添加依赖库build.gradle出现问题

99封情书 提交于 2019-12-04 19:55:26
添加implementation 'com.github.bumptech.glide:glide:4.9.0'后一直报错 修改方式: implementation ("com.github.bumptech.glide:glide:4.9.0") { exclude group: "com.android.support"}原因:因为glide 内部也引入了com.android.support:appcompat-v7。版本对应为COMPILE_SDK_VERSION=27TARGET_SDK_VERSION=27 ANDROID_SUPPORT_VERSION=27.1.0 参考http://bumptech.github.io/glide/doc/download-setup.html#android-sdk-requirementshttps://segmentfault.com/q/1010000013361461?utm_source=tag-newest 来源: https://www.cnblogs.com/kinoyo/p/11880317.html

关于RecyclerView使用Glide加载图片导致错位问题总结

旧时模样 提交于 2019-12-04 17:49:56
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/u013183608/article/details/89296915 前言 使用recyclerView时遇到了图片错位的问题,这个问题网上已经讨论的很成熟,谨以此文章做个总结。 问题产生原因 根本原因: 因为有ViewHolder的重用机制,每一个item在移出屏幕后都会被重新使用以节省资源,避免滑动卡顿。 场景A: 1.第一次进入页面,RecyclerView载入,不做任何触摸操作 2.Adapter经过onCreateViewHolder()创建当前显示给用户的N个ViewHolder对象,并且在onBind时启动了N条线程加载图片 3.N张图片全部加载完毕,并且显示到对应的ImageView上 4.控制屏幕向下滑动,前K个item离开屏幕可视区域,后K个item进入屏幕可视区域 5.前K个item被回收,重用到后K个item。后K个item显示的图片是前K个item的图片 6.开启了K条线程,加载后K张图片。等待几秒,后K个item显示的图片突然变成了正确的图片 经过细化分析可以看出:如果当前网络速度很快,第6个步骤的加载速度在1秒甚至0.5秒内,就会造成人眼看到的图片闪烁问题