如果你的应用不需要显示Gif,或者显示的Gif由内部员工添加(可把控)的,可以用Glide!
如果你的应用不需要显示Gif,或者显示的Gif由内部员工添加(可把控)的,可以用Glide!
如果你的应用不需要显示Gif,或者显示的Gif由内部员工添加(可把控)的,可以用Glide!
之前写过一篇文章,是关于Glide的一些坑,Glide加载gif及本地视频缩略图的坑 ,因为我们公司的应用是涉及到发帖子的功能,这里用户是可以上传gif的,而某些文件本身就有一些问题的gif,用Glide加载不出来,上面的文章末尾说过了,所以采用了Fresco,用了Fresco,才发现坑更大啊,一点一点说吧。
首先要用到他们自己的View那些我就不重复了,功能确实强大,后面讲一些可配置可不配置但是配置了会更爽的内容
1,设置缓存大小等,可以参考这个Fresco缓存设置 ,设置了之后,再不会出现已经加载过的图片,被自动清理了
2,列表加载图片,一定要setResizeOptions和setOldController,如下图
图中的width和height不一定要很准确,比如你是Grid,但是又有间隙,那width你设置成 screenWidth/spanCount的大小就好了,滑动起来跟Glide差不多了
3,photoView,fresco貌似不能直接用photoView,没关系,有这个PhotoDraweeView 使用起来跟photoView差不多
4,长图加载,我用的是BigImageViewer 里面包含了放大缩小的功能了
有人会问,怎么判断是不是长图呢,我现在是没有判断,而是根据是否动态图(gif结尾)来加载,动态图用photoView,静态图用BigImageViewer
最后,用Fresco,我加载相册还是照样卡,跟Glide完全不能比,设置了setAutoPlayAnimations(false),.setBitmapsConfig(Bitmap.Config.RGB_565)都还是很卡,用的FrescoImageLoader.java 的也是很卡,不知道有人解决了吗
网友评论
public MemoryCacheParams get() {
int MAX_HEAP_SIZE = (int) Runtime.getRuntime().maxMemory();
int MAX_MEMORY_CACHE_SIZE = MAX_HEAP_SIZE / 5;//取手机内存最大值的五分之一作为可用的最大内存数
MemoryCacheParams bitmapCacheParams = new MemoryCacheParams( //
// 可用最大内存数,以字节为单位
MAX_MEMORY_CACHE_SIZE,
// 内存中允许的最多图片数量
22,
// 内存中准备清理但是尚未删除的总图片所可用的最大内存数,以字节为单位
MAX_MEMORY_CACHE_SIZE,
// 内存中准备清除的图片最大数量
Integer.MAX_VALUE,
// 内存中单图片的最大大小
970*1280);
return bitmapCacheParams;
}
});这几个参数数值要设置多少啊