杭州cms模板建站,网站建设图片编辑,外贸网站 wordpress,网站推广应该坚持( )策略。一、前言#xff1a;再优秀的开源库都有坑要填手上的项目使用的图片加载框架是#xff1a;Universal-Image-Loader业务需要定制化的一些代码。Universal-Image-Loader 这个框架是一个非常经典好用的框架#xff0c;唯一的问题是是作者很久之前就不再更新了。所以综合考虑下再优秀的开源库都有坑要填手上的项目使用的图片加载框架是Universal-Image-Loader业务需要定制化的一些代码。Universal-Image-Loader 这个框架是一个非常经典好用的框架唯一的问题是是作者很久之前就不再更新了。所以综合考虑下确定使用Glide封装代替当前的图片加载框架。二、困惑在没有真正使用 Glide 之前我所看到的文章基本都是赞美这个库的功能强大加载流畅。然而当我用上了以后才发现并不完美。遇到了不少的坑需要自己填。2.1 Glide 配合 OKHttp 使用的坑需要在Gradle中引入compile com.github.bumptech.glide:glide:3.7.0compile com.github.bumptech.glide:okhttp3-integration:1.4.0aar这里就有一个坑如果你用到自定义的 GlideModule这里的可能会失效被com.github.bumptech.glide:okhttp3-integration:1.4.0aar默认的替换解决方法是升级版本号compile com.github.bumptech.glide:okhttp3-integration:1.4.0aar -》 compile com.github.bumptech.glide:okhttp3-integration:1.5.0注意没有arr 还有1.5.0默认选择是3.8.0的glide 所以改一下3.7.0的引入compile com.github.bumptech.glide:glide:3.7.0-》compile com.github.bumptech.glide:glide:3.8.02.2 OKHttpClient 超时设置导致图片无法加载坑因为Glide本身只负责图片加载网络请求图片数据由网络框架决定。网络请求一般会有超时的问题坑的是OKHttp默认的超时时间太短了如果不修改网络状态比较差就很容易请求超时图片自然就加载不出来。我设置的参数是60,60,30这个可以自己根据实际情况确定。//这个是源码里面的默认超时时间都是10s10000msconnectTimeout 10_000;readTimeout 10_000;writeTimeout 10_000;//手动设置超时时间OkHttpClient clientnew OkHttpClient.Builder().connectTimeout(HTTP_CONNECT_TIMEOUT, TimeUnit.SECONDS).readTimeout(HTTP_READ_TIMEOUT, TimeUnit.SECONDS).writeTimeout(HTTP_WRITE_TIMEOUT, TimeUnit.SECONDS).build;2.3 Glide 查看 log 的坑如果你使用 Glide 经常出现图片加载不出来或者加载有问题你需要查看 Glide 本身的 log不过这个必须通过 adb 命令开启详情百度需要注意如果是请求图片问题关注请求的 log图片加载||转换的问题关注图片加载||转换的log。2.4 Glide 加载的图片内存占用巨多的坑在使用 Glide 的第一个版本OOM 问题一下子爆炸了查看内存占用使用 Universal-Image-Loader 的旧版本App 占用50m~80m内存而使用 Glide 加载列表大图的时候突然猛增到120M低端机器自然很容易就 OOM 了。Glide 有一个优点被很多人称赞就是它会根据图片控件的大小对 Bitmap 进程缩放处理适应控件的大小。但是如果是一个控件在高分屏下它的控件大小往往比实际图片尺寸大很多举例一个控件:长宽1080400图片原始尺寸540200如果不做任何设置Glide 会把 bitmap 放大到控件大小那么占用的内存就变成了原始大小四倍。。。这个是 Glide 的特性暂时没有找到的方法修改。临时方案为了避免Glide自动把bitmap放大使用在加载图片的时候使用 .override(width, height) 限制图片的宽高2.5 Glide 使用过渡动画造成图片变形的 bugGlide 默认会加载图片的时候会有一个过渡效果其原理是采用TransitionDrawable实现的。但是这个和 placeHolder,一起使用尤其是你的playHolder的尺寸比你加载的图片要大这个时候就会出现你加载出来的图片变形的问题。很多人推荐使用 .dontAnimate() 解决问题即去掉过渡动画。但是如果产品一定需要加入过渡动画官方其实没有提供完美的解决方案Glide的作者之一在stackoverflow有回答并且给出了 github 的代码。http://stackoverflow.com/questions/32235413/glide-load-drawable-but-dont-scale-placeholderhttps://github.com/TWiStErRob/glide-support/tree/master/src/glide4/java/com/bumptech/glide/supportapp注意我在使用的过程中发现如果你的ImageView的type是center_crop 的话那么必须确保你的place_holder默认图片长宽小于你加载的图片不然即使使用的了作者的代码任然会有变形的问题。