Android 图片框架
1、图片框架:Picasso、Glide、Fresco
2.介绍:
picasso:和Square的网络库能发挥最大作用,因为Picasso可以选择将网络请求的缓存部分交给了okhttp实现
Glide:模仿了Picasso的API,而且在他的基础上加了很多的扩展(比如git等支持)
Picasso能实现的功能,Glide都能实现,但Picasso体积比Glide小很多,如果项目中网络请求本身用的就是okhttp或者retrofit(本质还是okhttp),那么建议用Picasso,Glide的好处是大型的图片流,比如git、video等
Glide详解:
创建Glide的主要目的有两个,一个是实现平滑的图片列表滚动效果,另一个是支持远程图片的获取、大小调整和展示。
Glide特点:
- 使用简单
- 可配置度高,自适应程度高
- 支持常见图片格式jpg、png、gif、webp
- 支持多种资源 玩过、本地、资源、Assets等
- 高效缓存策略 支持Memory和Disk图片缓存,默认Bitmap格式采用RGB_565内存使用至少减少一半
- 生命周期集成 根据Activity/Fragment生命周期自动管理请求
- 高效处理Bitmap 使用Bitmap Pool使Bitmap复用,制动调用recycle回收需要回收的Bitmap,减小系统回收压力
Glide使用:
1、添加引用build.gradle中添加配置
compile 'com.github.bumptech.glide:glide:3.7.0'
2、设置绑定生命周期
Glide.with(Context context); //绑定Context Glide.with(Activity activity);//绑定Activity Glide.with(FragmentActivity activity);//绑定FragmentActivity Glide.with(Fragment fragment);//绑定Fragment
3、简单的加载图片实例
Glide.with(this).load(imgUrl).into(imageView);
4、设置加载中及加载失败图片
api里面对placeholder(),error()函数中有多态实现
Glide.with(this).load(imageUrl)
.placeholder(R.mipmap.ic_launcher)
.error(R.mipmap.ic_launcher)
.into(imageView);
5、设置跳过内存缓存
Glide.with(this).load(imageUrl).skipMemoryCache(true).into(imageView);
6、设置下载优先级
Glide.with(this).load(imageUrl).priority(Priority.NORMAL).into(imageView);
7、设置缓存策略
Glide.with(this).load(imageUrl)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(imageView);
策略解说:
all:缓存元资源和转换后的资源
none:不作任何磁盘缓存
source:缓存源资源
result:缓存转换后的资源
8、设置加载动画
api也提供了几个常用的动画:比如crossFade()
Glide.with(this).load(imageUrl).animate(R.anim.item_alpha_in).into(imageView);
R.anim.item_alpha_in:
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <alpha android:duration="500" android:fromAlpha="0.0" android:toAlpha="1.0"/> </set>
9、设置缩略图
这样会先加载缩略图,在加载全图
Glide.with(this).load(imageUrl).thumbnail(0.1f).into(imageView);
10、设置加载尺寸
Glide.with(this).load(imageUrl).overrde(800,800).into(imageView);
11设置动态转换
Glide.with(this).load(imageUrl).centerCrop().into(imageView);
12、设置动态GIF加载方式
Glide.with(this).load(imageUrl).asBitmap().into(imageView);//显示gif静态图片
Glide.with(this).load(imageUrl).asGif().into(imageView);//显示gif动态图片
13、缓存的动态清理
Glide.get(this).clearDiskCache();//清理磁盘缓存 需要在子线程中执行
Glide.get(this).clearMemory();//清理内存缓存 可以在UI主线程中进行
14、加载网络图片实现等比例缩放
Glide.with(mContext)
.load(url)
.asBitmap()//强制Glide返回一个Bitmap对象
.listener(new RequestListener<String, Bitmap>() {
@Override
public boolean onException(Exception e, String s, Target<Bitmap> target, boolean b) {
LogUtil.e(url+"加载失败"+e.toString());
Glide.with(mContext)
.load(R.mipmap.pic_default_vertical)
.diskCacheStrategy(cache)
.into(iv);
return false;
} @Override
public boolean onResourceReady(Bitmap bitmap, String s, Target<Bitmap> target, boolean b, boolean b1) {
return false;
}
})
.into(new SimpleTarget<Bitmap>() {
@Override
public void onResourceReady(Bitmap bitmap, GlideAnimation<? super Bitmap> glideAnimation) {
int width = bitmap.getWidth();
int height = bitmap.getHeight();
int S_width = DisplayUtil.getScreenWidth(mContext);
int S_height = DisplayUtil.getScreenHeight(mContext); float scale = ((float) height)/width;
iv.setImageBitmap(bitmap);
if(width>height){
float S_scale = S_height/(S_width*scale);
if(isRightToLeft){
iv.setScale(S_scale,S_height*S_scale,0,false);
}else{
iv.setScale(S_scale,0,0,false);
} }
}
});
Android 图片框架的更多相关文章
- Android图片框架---Glide
Glide *** 使用* 一.添加依赖* compile 'com.github.bumptech.glide:glide:3.7.0'* compile 'com.android.support: ...
- android 图片解码显示流程
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/jingxia2008/article/details/32327699 问题来源 android 能 ...
- Android 开源框架Universal-Image-Loader完全解析(二)--- 图片缓存策略详解
转载请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/26810303),请尊重他人的辛勤劳动成果,谢谢! 本篇文章 ...
- Android图片加载与缓存开源框架:Android Glide
<Android图片加载与缓存开源框架:Android Glide> Android Glide是一个开源的图片加载和缓存处理的第三方框架.和Android的Picasso库类似,个人感觉 ...
- 一起写一个Android图片加载框架
本文会从内部原理到具体实现来详细介绍如何开发一个简洁而实用的Android图片加载缓存框架,并在内存占用与加载图片所需时间这两个方面与主流图片加载框架之一Universal Image Loader做 ...
- Android 开源框架Universal-Image-Loader全然解析(二)--- 图片缓存策略具体解释
转载请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/26810303),请尊重他人的辛勤劳动成果,谢谢! 本篇文章 ...
- Android 图片加载框架Glide4.0源码完全解析(二)
写在之前 上一篇博文写的是Android 图片加载框架Glide4.0源码完全解析(一),主要分析了Glide4.0源码中的with方法和load方法,原本打算是一起发布的,但是由于into方法复杂性 ...
- Android图片缓存框架Glide
Android图片缓存框架Glide Glide是Google提供的一个组件.它具有获取.解码和展示视频剧照.图片.动画等功能.它提供了灵活的API,帮助开发者将Glide应用在几乎任何网络协议栈中. ...
- Android图片载入框架最全解析(一),Glide的基本使用方法
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/53759439 本文同步发表于我的微信公众号.扫一扫文章底部的二维码或在微信搜索 郭 ...
随机推荐
- 记一次线上环境 ES 主分片为分配故障
故障前提 ElasticSearch 版本:5.2 集群节点数:5 索引主分片数:5 索引分片副本数:1 线上环境ES存储的数据量很大,当天由于存储故障,导致一时间 5个节点的 ES 集群,同时有两个 ...
- Linux系统编程之进程概念
注:本文部分图片来源于网络,如有侵权,请告知删除 1. 什么是进程? 在了解进程概念之前,我们需要先知道程序的概念. 程序,是指编译好的二进制文件,这些文件在磁盘上,并不占用系统资源. 进程,指的是一 ...
- OpenXml SDK学习笔记(1):Word的基本结构
能写多少篇我就不确定了,可能就这一篇就太监了,也有可能会写不少. OpenXml SDK 相信很多人都不陌生,这个就是管Office一家的文档格式,Word, Excel, PowerPoint等都用 ...
- 1个月连载30个设计模式真实案例(附源码),挑战年薪60W不是梦
本文所有内容均节选自<设计模式就该这样学> 本文自2012年10月29日起持续连载,请大家持续关注.... 序言 Design Patterns: Elements of Reusable ...
- FZU ICPC 2020 寒假训练 3
P1308 统计单词数 题目描述 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数.现在,请你编程实现这一功能,具体要求是:给定一 ...
- Java 中控制执行流程
if-else 非常常用的流程控制非 if-else 莫属了,其中 else 是可选的,if 有两种使用方式 其一: if (Boolean-expression) { statement; } 其二 ...
- jenkins内置变量的使用
参考链接: https://www.cnblogs.com/puresoul/p/4828913.html 一.查看Jenkins有哪些环境变量 1.新建任意一个job 2.增加构建步骤:Execu ...
- [spojQTREE5]Query on a tree V
合理的正解大概是动态点分治,这里给出其实现 1 #include<bits/stdc++.h> 2 using namespace std; 3 #define N 100005 4 st ...
- [JS高程]JavaScript中的RegExp对象
目录 1. RegExp 1.1 表示格式: 1.2 匹配模式: 1.3 RegExp 实例属性 1.4 RegExp 实例方法 1.4.1 exec() 1.4.1.1 基本用法 1.4.1.2 e ...
- 解决ip和域名都能够ping通但是启动nginx无法访问网页的问题
解决思路 最近双11逛西部数码的官网看看有没有什么服务器优惠的时候,发现了可以申请一个一块钱用一整年的SSL证书,立马心动下单了,想想俺也可以用https装装X了哈哈 不过在部署完证书,并调整ngin ...