第一肯定是Fresco地址啦:https://github.com/facebook/fresco

gradle配置:

implementation 'com.facebook.fresco:fresco:1.13.0'

1.在Application 初始化

Fresco.initialize(this);

2.在xml中使用SimpleDraweeView

xmlns:app="http://schemas.android.com/apk/res-auto"
<com.facebook.drawee.view.SimpleDraweeViewandroid:id="@+id/avatar"android:layout_width="60dp"android:layout_height="60dp"android:layout_margin="10dp"android:scaleType="fitXY"app:actualImageScaleType="fitCenter" // 实际图缩放类型app:placeholderImage="@mipmap/ic_launcher" // 占位图app:placeholderImageScaleType="centerInside" // 占位图缩放类型app:progressBarImage="@mipmap/common_loading" // 加载图app:progressBarImageScaleType="centerInside" // 加载图缩放类型app:progressBarAutoRotateInterval="1000" // 加载时间app:failureImage="@mipmap/ic_launcher" // 失败图app:failureImageScaleType="centerInside" // 失败图缩放类型app:retryImage="@mipmap/ic_launcher" // 重试图app:retryImageScaleType="centerInside" // 重试图缩放类型app:roundAsCircle="true" // 是否为圆角app:roundedCornerRadius="30dp" // 圆角的大小/>

3,加载图片

int width = SystemUtil.dp2px(context, 50);
int height = SystemUtil.dp2px(context, 50);
ImageUtil.load((GenericDraweeView)helper.getView(R.id.avatar), "图片url", width, height);
public static void load(GenericDraweeView draweeView, String url, int width, int height) {Uri uri = Uri.parse(url);ImageRequest request = ImageRequestBuilder.newBuilderWithSource(uri).setResizeOptions(new ResizeOptions(width, height)).build();DraweeController controller = Fresco.newDraweeControllerBuilder().setImageRequest(request).setOldController(draweeView.getController()).build();draweeView.setController(controller);
}

4.注意点,SimpleDraweeView必须设置大小

android:layout_width="60dp"
android:layout_height="60dp"

5.缩放类型—ScaleType

类型 描述
center 居中,无缩放
centerCrop 保持宽高比缩小或放大,使得两边都大于或等于显示边界。居中显示。
focusCrop 同centerCrop, 但居中点不是中点,而是指定的某个点
centerInside 使两边都在显示边界内,居中显示。如果图尺寸大于显示边界,则保持长宽比缩小图片。
fitCenter 保持宽高比,缩小或者放大,使得图片完全显示在显示边界内。居中显示
fitStart 同上。但不居中,和显示边界左上对齐
fitEnd 同fitCenter, 但不居中,和显示边界右下对齐
fitXY 不保存宽高比,填充满显示边界
none 如要使用tile mode显示, 需要设置为none

推荐使用:focusCrop 类型                Fresco中文说明对这一点也有详情的说明

6.总结

总结:

XML属性 意义
fadeDuration 淡入淡出动画持续时间(单位:毫秒ms)
actualImageScaleType 实际图像的缩放类型
placeholderImage 占位图
placeholderImageScaleType 占位图的缩放类型
progressBarImage 进度图
progressBarImageScaleType 进度图的缩放类型
progressBarAutoRotateInterval 进度图自动旋转间隔时间(单位:毫秒ms)
failureImage 失败图
failureImageScaleType 失败图的缩放类型
retryImage 重试图
retryImageScaleType 重试图的缩放类型
backgroundImage 背景图
overlayImage 叠加图
pressedStateOverlayImage 按压状态下所显示的叠加图
roundAsCircle 设置为圆形图
roundedCornerRadius 圆角半径
roundTopLeft 左上角是否为圆角
roundTopRight 右上角是否为圆角
roundBottomLeft 左下角是否为圆角
roundBottomRight 右下角是否为圆角
roundingBorderWidth 圆形或者圆角图边框的宽度
roundingBorderColor 圆形或者圆角图边框的颜色
roundWithOverlayColor 圆形或者圆角图底下的叠加颜色(只能设置颜色)
viewAspectRatio 控件纵横比

Fresco缓存也是一大亮点, 三级缓存,分别是 Bitmap缓存,未解码图片缓存, 文件缓存。
这里提一点Bitmap缓存:在5.0以下系统,Bitmap缓存位于ashmem,这样Bitmap对象的创建和释放将不会引发GC,更少的GC会使你的APP运行得更加流畅。5.0及其以上系统,相比之下,内存管理有了很大改进,所以Bitmap缓存直接位于Java的heap上。
另外,磁盘缓存还可以通过代码来设置不同手机的缓存容量:

public void initFresco(Context context, String diskCacheUniqueName){DiskCacheConfig diskCacheConfig = DiskCacheConfig.newBuilder(context).setMaxCacheSize(DISK_CACHE_SIZE_HIGH).setMaxCacheSizeOnLowDiskSpace(DISK_CACHE_SIZE_LOW).setMaxCacheSizeOnVeryLowDiskSpace(DISK_CACHE_SIZE_VERY_LOW).build();ImagePipelineConfig config = ImagePipelineConfig.newBuilder(context).setMainDiskCacheConfig(diskCacheConfig).build();Fresco.initialize(context, config);
}

Glide缓存(比较,有兴趣的人也可以使用这个,个人认为对于目前手机内存来说Fresco更合适
Glide虽然只有内存和磁盘缓存,在性能上比不上Fresco;但他也有另外的优点, Fresco缓存的时候,只会缓存原始图像,而Glide则会根据ImageView控件尺寸获得对应的大小的bitmap来展示,从而缓存也可以针对不同的对象:原始图像(source),结果图像(result); 可以通过.diskCacheStrategy()方法设置

Fresco使用详情相关推荐

  1. 京东视图+跳转详情页面(Fresco+ButterKnife+eventBus)

    依赖 // Glide加载图片compile 'com.github.bumptech.glide:glide:3.7.0'// recyclerviewimplementation 'com.and ...

  2. 专为Android加载图片Fresco:详细图解SimpleDraweeView加载图片基础

    Fresco简单的使用-SimpleDraweeView 百学须先立志-学前须知: 在我们平时加载图片(不管是下载还是加载本地图片-..)的时候,我们经常会遇到这样一个需求,那就是当图片正在加载时应该 ...

  3. Android 简单实现订单模块类APP的物流详情页

    不废话,需求:做一个订单模块类APP的物流详情页,怎么办? 这个功能完全是看到别人写的好,自己学习一下,主要写一下自己对别人代码的理解.参考文章:https://blog.csdn.net/weixi ...

  4. 【转】Android图片加载神器之Fresco-加载图片基础[详细图解Fresco的使用]

    Fresco简单的使用-SimpleDraweeView 百学须先立志-学前须知: 在我们平时加载图片(不管是下载还是加载本地图片-..)的时候,我们经常会遇到这样一个需求,那就是当图片正在加载时应该 ...

  5. Fresco简单的使用—SimpleDraweeView

    本文出处:http://blog.csdn.net/u011164565/article/details/51330778 Fresco是一个第三方库,github官网地址:https://githu ...

  6. Android图片加载神器之Fresco-加载图片基础[详细图解Fresco的使用](秒杀imageloader)...

    Fresco简单的使用-SimpleDraweeView 百学须先立志-学前须知: 在我们平时加载图片(不管是下载还是加载本地图片-..)的时候,我们经常会遇到这样一个需求,那就是当图片正在加载时应该 ...

  7. Fresco使用详解

    Fresco简单的使用-SimpleDraweeView 百学须先立志-学前须知: 在我们平时加载图片(不管是下载还是加载本地图片-..)的时候,我们经常会遇到这样一个需求,那就是当图片正在加载时应该 ...

  8. 注册+登录+列表+详情+自定义加减+购物车

    首先导入依赖包 dependencies {implementation fileTree(dir: 'libs', include: ['*.jar'])implementation 'com.an ...

  9. Android图片加载神器之Fresco-加载图片基础[详细图解Fresco的使用]

    前半部分找不到原文链接了 后半部分原文链接:http://www.jianshu.com/p/5364957dcf49 著作权归作者所有,转载请联系作者获得授权,并标注"简书作者" ...

  10. 仿京东电商 分类+商品展示,详情

    先是布局 activity_main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLa ...

最新文章

  1. 实现无锁的栈与队列(1)
  2. sdwan支持的网络设备类型
  3. 数据结构源码笔记(C语言):冒泡排序
  4. Vue 的路由实现 Hash模式 和 History模式
  5. Matlab图形绘制
  6. java 批量上传图片插件_java多文件上传plupload控件实现多图片上传(一)
  7. 论文浅尝 | Iterative Cross-Lingual Entity Alignment Based on TransC
  8. 使用MQTT与函数计算做热力图的实践
  9. php document.getel,javascript 密码强弱度检测万能插件_javascript技巧
  10. 抛砖引玉,终于完成了自己的客户端校验提示Extender
  11. javascript的prototype继承问题
  12. 获取对象的key_玩转 SpringBoot2.x 之缓存对象
  13. vue cli 4 多环境_Vue 笔记整理19
  14. 第十一课 Solidity语言编辑器REMIX指导大全
  15. kali安装loic
  16. Unity3d随机数生成
  17. redhat7安装Oracle11g数据库全过程
  18. 手机微信桌面计算机不见了怎么办,微信桌面图标不见了怎么办
  19. 成都百知教育关于Shopee 平台政策规则解读!
  20. Java学习分享---【面向对象基础】抽象

热门文章

  1. 一些基本的灰度变换函数
  2. bzoj1052 覆盖问题 二分答案 dfs
  3. css定位(二)---css中粘性定位(sticky)---C3新增属性
  4. bcc语料库下载_BCC语料库使用指南
  5. pvs安装配置_配置警告下一代插件以与PVS-Studio集成
  6. 单片机两只老虎c语言,蜂鸣器 唱 两只老虎 单片机程序
  7. Linux printf Class.this git rebase Persistent Bugger
  8. 宁皓网ninghao.net这个人的教程不错
  9. python中spider的用法_Scrapy Spider类的用法
  10. 利用iframe覆盖windowed plugin