前言:图片加载涉及到图片的缓存、图片的处理、图片的显示等。四种常用的图片加载框架,分别是Fresco、ImageLoader、 Picasso、 Glide。

Universal Image Loader:ImageLoader是比较老的框架,一个强大的图片加载库,包含各种各样的配置,最老牌,使用也最广泛。
ImageLoader开源库存哪些特征:
1.多线程下载图片,图片可以来源于网络,文件系统,项目文件夹assets中以及drawable中等
2.支持随意的配置ImageLoader,例如线程池,图片下载器,内存缓存策略,硬盘缓存策略,图片显示选项以及其他的一些配置
3.支持图片的内存缓存,文件系统缓存或者SD卡缓存
4.支持图片下载过程的监听
5.根据控件(ImageView)的大小对Bitmap进行裁剪,减少Bitmap占用过多的内存
6.较好的控制图片的加载过程,例如暂停图片加载,重新开始加载图片,一般使用在ListView,GridView中,滑动过程中暂停加加载图片,停止滑动的时候去加载图片
7.提供在较慢的网络下对图片进行加载
Glide:Google推荐的图片加载库,专注于流畅的滚动。
Glide开源库特征:
1.支持 Gif、WebP、缩略图。甚至是 Video,所以更该当做一个媒体缓存。
2.支持优先级处理。
3.内存友好,图片默认使用默认 RGB_565 而不是 ARGB_888,虽然清晰度差些,但图片更小,也可配置到 ARGB_888等...
Picasso:Picasso是Square公司出品的一款非常优秀的开源图片加载库,是目前Android开发中超级流行的图片加载库之一,和OkHttp搭配起来更配呦!
Fresco:Facebook出的,天生骄傲!不是一般的强大。
效果(具体见源码):
开发环境:AndroidStudio2.2.1+gradle-2.14.1
引入依赖:
//适配器 compile 'com.classic.adapter:commonadapter:1.2' //注解式开发 compile 'com.jakewharton:butterknife:7.0.1' compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.4' compile 'com.github.bumptech.glide:glide:3.6.1' compile 'com.squareup.picasso:picasso:2.5.2'
涉及知识:
1.注解式开发+(Commonadapter)万能适配器使用
2.图片加载库:ImageLoader、Glide、Picasso
3.WebView+SwipeRefreshLayout实现加载和刷新网页
部分代码(Gilde使用):
public class GildeActivity extends BaseActivity {
/**
* Glide的主要目的有两个:
* 1.一个是实现平滑的图片列表滚动效果,
* 2.另一个是支持远程图片的获取、大小调整和展示
* 3.支持Gif 动画和视频剧照解码、智能的暂停和重新开始请求、支持缩略图
* http://www.open-open.com/lib/view/open1440397324450.html
*/
@Bind(R.id.img)
ImageView img;
@Bind(R.id.listview)
ListView listView;
private String imgurl = "http://avatar.csdn.net/4/A/A/1_zhh_csdn_ard.jpg";
@Override
protected int setContentView() {
return R.layout.gilde_img_layout;
}
@Override
protected void initLayout() {
GlideAdapter adapter = new GlideAdapter(this, R.layout.listview_img_item, AppConfig.resultImgData());
listView.setAdapter(adapter);
}
@OnClick({R.id.btn0, R.id.btn1, R.id.btn2})
void onClick(View v) {
switch (v.getId()) {
case R.id.btn0:
test0();
break;
case R.id.btn1:
test1();
break;
case R.id.btn2:
// 必须在UI线程中调用
Glide.get(GildeActivity.this).clearMemory();
break;
}
}
//基础glide网络图片加载
// Glide的with方法不光接受Context,还接受Activity 和 Fragment,Context会自动的从他们获取
// 图片的缩放,centerCrop()和fitCenter():
//使用centerCrop是利用图片图填充ImageView设置的大小,如果ImageView的
private void test0() {
Glide.with(this)
.load(imgurl)//路径支持png,jpg,gif,mp4
.placeholder(R.mipmap.ic_launcher) // 预加载图片
.error(R.mipmap.ic_launcher)//加载图片失败
.crossFade()//淡入淡出动画效果
.centerCrop()
.into(img);
}
//gif显示
private void test1() {
Glide.with(this)
.load("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&
sec=1491037864865&di=cc8f78a7e5c1d359839cec3463123b47&imgtype=0&
src=http%3A%2F%2Fi.zeze.com%2Fattachment%2Fforum%2F201501%2F29%2F181236dyjtsu2qinms5qjz.jpg")
.asGif() //判断加载的url资源是否为gif格式的资源
.placeholder(R.mipmap.ic_launcher) // 预加载图片
.error(R.mipmap.ic_launcher)//加载图片失败
.into(img);
// .into(new GlideDrawableImageViewTarget(img, 1));//如果要控制Gif 显示次数,可以使用
}
// 显示本地视频
private void test2() {
String filePath = "/storage/emulated/0/Pictures/example_video.mp4";
Glide
.with(this)
.load(Uri.fromFile(new File(filePath)))
.into(img);
}
//缓存
private void test3() {
Glide
.with(this)
.load(imgurl)
.skipMemoryCache(true) //跳过内存缓存
.into(img);
}
//缓存
private void test4() {
Glide
.with(this)
.load(imgurl)
.diskCacheStrategy(DiskCacheStrategy.NONE) //跳过硬盘缓存
.into(img);
}
/**
* DiskCacheStrategy.NONE 什么都不缓存
* DiskCacheStrategy.SOURCE 仅仅只缓存原来的全分辨率的图像
* DiskCacheStrategy.RESULT 仅仅缓存最终的图像,即降低分辨率后的(或者是转换后的)
* DiskCacheStrategy.ALL 缓存所有版本的图像(默认行为)
*/
// 使用Glide 显示圆形图片
private void test5() {
Glide.with(this).load(imgurl).asBitmap().centerCrop().into(new BitmapImageViewTarget(img) {
@Override
protected void setResource(Bitmap resource) {
RoundedBitmapDrawable circularBitmapDrawable =
RoundedBitmapDrawableFactory.create(GildeActivity.this.getResources(), resource);
circularBitmapDrawable.setCircular(true);
img.setImageDrawable(circularBitmapDrawable);
}
});
}
}
源码下载...
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
# android
# 加载
# 图片
# Android Fresco图片加载优化的方案
# Android实现图片加载进度提示
# Android框架Volley使用:ImageRequest请求实现图片加载
# Android编程图片加载类ImageLoader定义与用法实例分析
# Android基于Glide v4.x的图片加载进度监听
# Android ListView实现ImageLoader图片加载的方法
# Android图片加载案例分享
# Android中RecyclerView 滑动时图片加载的优化
# Android图片加载框架Glide的基本用法介绍
# Android图片加载利器之Picasso基本用法
# Android 官推 kotlin-first 的图片加载库——Coil的使用入门
# 开源
# 文件系统
# 跳过
# 其他的
# 也可
# 较好
# 或者是
# 做一个
# 可以使用
# 涉及到
# 四种
# 什么都不
# 多线程
# 较慢
# 更小
# 源码下载
# 过程中
# 各种各样
# 而不是
相关文章:
建站之星伪静态规则如何设置?
昆明高端网站制作公司,昆明公租房申请网上登录入口?
湖南网站制作公司,湖南上善若水科技有限公司做什么的?
h5在线制作网站电脑版下载,h5网页制作软件?
建站OpenVZ教程与优化策略:配置指南与性能提升
建站之星如何取消后台验证码生成?
建站VPS选购需注意哪些关键参数?
广东专业制作网站有哪些,广东省能源集团有限公司官网?
阿里云网站制作公司,阿里云快速搭建网站好用吗?
小程序网站制作需要准备什么资料,如何制作小程序?
如何配置IIS站点权限与局域网访问?
建站三合一如何选?哪家性价比更高?
微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?
建站主机与服务器功能差异如何区分?
c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】
电视网站制作tvbox接口,云海电视怎样自定义添加电视源?
建站主机服务器选购指南:轻量应用与VPS配置解析
动图在线制作网站有哪些,滑动动图图集怎么做?
义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?
建站之星会员如何解锁更多建站功能?
学校免费自助建站系统:智能生成+拖拽设计+多端适配
在线制作视频网站免费,都有哪些好的动漫网站?
企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
如何在香港服务器上快速搭建免备案网站?
宝塔面板创建网站无法访问?如何快速排查修复?
长沙企业网站制作哪家好,长沙水业集团官方网站?
如何登录建站主机?访问步骤全解析
番禺网站制作公司哪家值得合作,番禺图书馆新馆开放了吗?
如何通过免费商城建站系统源码自定义网站主题与功能?
如何获取开源自助建站系统免费下载链接?
实例解析angularjs的filter过滤器
建站之星后台管理如何实现高效配置?
MySQL查询结果复制到新表的方法(更新、插入)
零服务器AI建站解决方案:快速部署与云端平台低成本实践
外贸公司网站制作哪家好,maersk船公司官网?
c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗
ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?
建站之星上传入口如何快速找到?
公司网站的制作公司,企业网站制作基本流程有哪些?
如何快速搭建响应式可视化网站?
个人网站制作流程图片大全,个人网站如何注销?
网站制作公司排行榜,抖音怎样做个人官方网站
文字头像制作网站推荐软件,醒图能自动配文字吗?
建站之星如何防范黑客攻击与数据泄露?
如何做网站制作流程,*游戏网站怎么搭建?
电商网站制作公司有哪些,1688网是什么意思?
建站之星与建站宝盒如何选择最佳方案?
如何将凡科建站内容保存为本地文件?
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
*请认真填写需求信息,我们会在24小时内与您取得联系。