Fresco使用详情
第一肯定是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使用详情相关推荐
- 京东视图+跳转详情页面(Fresco+ButterKnife+eventBus)
依赖 // Glide加载图片compile 'com.github.bumptech.glide:glide:3.7.0'// recyclerviewimplementation 'com.and ...
- 专为Android加载图片Fresco:详细图解SimpleDraweeView加载图片基础
Fresco简单的使用-SimpleDraweeView 百学须先立志-学前须知: 在我们平时加载图片(不管是下载还是加载本地图片-..)的时候,我们经常会遇到这样一个需求,那就是当图片正在加载时应该 ...
- Android 简单实现订单模块类APP的物流详情页
不废话,需求:做一个订单模块类APP的物流详情页,怎么办? 这个功能完全是看到别人写的好,自己学习一下,主要写一下自己对别人代码的理解.参考文章:https://blog.csdn.net/weixi ...
- 【转】Android图片加载神器之Fresco-加载图片基础[详细图解Fresco的使用]
Fresco简单的使用-SimpleDraweeView 百学须先立志-学前须知: 在我们平时加载图片(不管是下载还是加载本地图片-..)的时候,我们经常会遇到这样一个需求,那就是当图片正在加载时应该 ...
- Fresco简单的使用—SimpleDraweeView
本文出处:http://blog.csdn.net/u011164565/article/details/51330778 Fresco是一个第三方库,github官网地址:https://githu ...
- Android图片加载神器之Fresco-加载图片基础[详细图解Fresco的使用](秒杀imageloader)...
Fresco简单的使用-SimpleDraweeView 百学须先立志-学前须知: 在我们平时加载图片(不管是下载还是加载本地图片-..)的时候,我们经常会遇到这样一个需求,那就是当图片正在加载时应该 ...
- Fresco使用详解
Fresco简单的使用-SimpleDraweeView 百学须先立志-学前须知: 在我们平时加载图片(不管是下载还是加载本地图片-..)的时候,我们经常会遇到这样一个需求,那就是当图片正在加载时应该 ...
- 注册+登录+列表+详情+自定义加减+购物车
首先导入依赖包 dependencies {implementation fileTree(dir: 'libs', include: ['*.jar'])implementation 'com.an ...
- Android图片加载神器之Fresco-加载图片基础[详细图解Fresco的使用]
前半部分找不到原文链接了 后半部分原文链接:http://www.jianshu.com/p/5364957dcf49 著作权归作者所有,转载请联系作者获得授权,并标注"简书作者" ...
- 仿京东电商 分类+商品展示,详情
先是布局 activity_main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLa ...
最新文章
- 实现无锁的栈与队列(1)
- sdwan支持的网络设备类型
- 数据结构源码笔记(C语言):冒泡排序
- Vue 的路由实现 Hash模式 和 History模式
- Matlab图形绘制
- java 批量上传图片插件_java多文件上传plupload控件实现多图片上传(一)
- 论文浅尝 | Iterative Cross-Lingual Entity Alignment Based on TransC
- 使用MQTT与函数计算做热力图的实践
- php document.getel,javascript 密码强弱度检测万能插件_javascript技巧
- 抛砖引玉,终于完成了自己的客户端校验提示Extender
- javascript的prototype继承问题
- 获取对象的key_玩转 SpringBoot2.x 之缓存对象
- vue cli 4 多环境_Vue 笔记整理19
- 第十一课 Solidity语言编辑器REMIX指导大全
- kali安装loic
- Unity3d随机数生成
- redhat7安装Oracle11g数据库全过程
- 手机微信桌面计算机不见了怎么办,微信桌面图标不见了怎么办
- 成都百知教育关于Shopee 平台政策规则解读!
- Java学习分享---【面向对象基础】抽象
热门文章
- 一些基本的灰度变换函数
- bzoj1052 覆盖问题 二分答案 dfs
- css定位(二)---css中粘性定位(sticky)---C3新增属性
- bcc语料库下载_BCC语料库使用指南
- pvs安装配置_配置警告下一代插件以与PVS-Studio集成
- 单片机两只老虎c语言,蜂鸣器 唱 两只老虎 单片机程序
- Linux printf Class.this git rebase Persistent Bugger
- 宁皓网ninghao.net这个人的教程不错
- python中spider的用法_Scrapy Spider类的用法
- 利用iframe覆盖windowed plugin