Android图片加载之Glide使用
来源:互联网 发布:男女合唱网络流行歌曲 编辑:程序博客网 时间:2024/05/08 14:10
Android图片加载之Glide使用
图片加载库常用的有UIL,Picasso,Volley ImageLoader,Fresco以及Glide
Glide具有获取、解码和展示视频剧照、图片、动画等功能,应用在几乎任何网络协议栈中,创建Glide的主要目的有两个,一个是实现平滑的图片列表滚动效果,另一个是支持远程图片的获取、大小调整和展示。
一、先回顾一下java实现:
URL url = new URL(String类型的字符串); //将String类型的字符串转换为URL格式 holder.UserImage.setImageBitmap(BitmapFactory.decodeStream(url.openStream()));
二、 Glide使用:
1 添加依赖:
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 简单的加载图片
//设置绑定生命周期为this的,地址为imageUrl,加载到imageView这个控件中 (不是XML的,而是java连接的XML的组件)Glide.with(this).load(imageUrl).into(imageView);
4 设置加载中图片
Glide.with(this).load(imageUrl).placeholder(R.mipmap.ic_launcher).into(imageView);
5 设置加载失败图片
Glide.with(this).load(imageUrl).error(R.mipmap.ic_launcher).into(imageView);
6 设置跳过内存缓存
Glide.with(this).load(imageUrl).skipMemoryCache(true).into(imageView);
7.1 设置缓存策略
Glide.with(this).load(imageUrl).diskCacheStrategy(DiskCacheStrategy.ALL).into(imageView);
策略解说:
all:缓存源资源和转换后的资源
none:不作任何磁盘缓存
source:缓存源资源
result:缓存转换后的资源
7.2缓存的动态清理
Glide.get(this).clearDiskCache();//清理磁盘缓存 需要在子线程中执行 Glide.get(this).clearMemory();//清理内存缓存 可以在UI主线程中进行
8 设置下载优先级
Glide.with(this).load(imageUrl).priority(Priority.NORMAL).into(imageView);
9设置加载动画
测试:该动画效果是啥
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>
10 设置加载尺寸
测试:是将图片放大缩小还是只加载图片的一部分 放大了的话他的失真情况
Glide.with(this).load(imageUrl).override(800, 800).into(imageView);
11 先加载缩略图 然后在加载全图
测试: 0.1 f 是啥
Glide.with(this).load(imageUrl).thumbnail(0.1f).into(imageView);
12 设置动态转换
Glide.with(this).load(imageUrl).centerCrop().into(imageView);
CenterCrop()是一个裁剪技术,即缩放图像让它填充到 ImageView 界限内并且裁剪额外的部分。ImageView 会被完全填充,但图像可能不会完整显示
也可以通过自定义Transformation去设置自定义的
13 设置动态GIF加载方式
Glide.with(this).load(imageUrl).asBitmap().into(imageView);//显示gif静态图片Glide.with(this).load(imageUrl).asGif().into(imageView);//显示gif动态图片
14 设置要加载的内容
先下载图片然后再做一些合成的功能,比如项目中出现的图文混排,该如何实现目标下
测试:效果是啥
Glide.with(this).load(imageUrl).centerCrop().into(new SimpleTarget<GlideDrawable>() { @Override public void onResourceReady(GlideDrawable resource, GlideAnimation<? super GlideDrawable> glideAnimation) { imageView.setImageDrawable(resource); } });
15 设置监听请求接口
设置监听的用处 可以用于监控请求发生错误来源,以及图片来源 是内存还是磁盘
Glide.with(this).load(imageUrl).listener(new RequestListener<String, GlideDrawable>() { @Override public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) { return false; } @Override public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) { //imageView.setImageDrawable(resource); return false; } }).into(imageView);
RecyclerView中使用:
原本是:
new Thread(new Runnable() { @Override public void run() { try { URL url = new URL(String类型的url); Log.i("url", String.valueOf(url)); holder.UserImage.setImageBitmap(BitmapFactory.decodeStream(url.openStream())); } catch (Exception e) { e.printStackTrace(); } } }).start();
现在是将上方的holder.UserImage…改成:
Glide.with(mContext).load(url).into(holder.UserImage);
Databinding+ImageView+Glide中使用:
Databinding+ImageView参考博客:
http://blog.csdn.net/weixin_37577039/article/details/78514643
的第15点
加上glide使用:
在 setImageUrl(ImageView imageView, URL url) 中
将URL url 改成 String url 因为load()的url参数为String类型的
Glide.with(imageView.getContext()).load(url).placeholder(placeHolder).into(imageView);
这个值的获取是XML中使用app:imageUrl的组件去调用这个setImageUrl方法 传入这个组件 再传入get到的url 作为参数,Glide再通过这个参数获取值,所以不需要findID 也实现了url的加载 达到了Databinding的思想实现
- Android图片加载之Glide使用
- Android之Glide加载图片
- 图片加载之Glide使用
- Android 图片加载 Glide使用
- Android图片加载框架之Glide使用详解
- Android 流行的网络图片加载库 之 使用 Glide 加载图片 (Google推荐的图片加载库Glide)
- Android学习之图片加载库Glide
- 【Android 进阶】图片加载框架之Glide
- 【Android 进阶】图片加载框架之Glide
- Android开发之图片加载框架Glide
- Android开发之图片加载~初识Glide
- 初识Android图片加载之Glide
- 图片加载之Glide使用总结
- 图片加载之Glide使用总结
- 图片加载之Glide使用总结
- android glide 图片加载框架使用
- Android图片加载Glide框架使用详解
- Android图片加载Glide框架使用详解
- Audio Codec的必要性
- Redis之key操作
- java中的lambda表达式
- 几张图看懂列式存储&&join 方式
- 全排列
- Android图片加载之Glide使用
- 本地主机与虚拟机连接配置
- Ubuntu 16.04安装有道词典(完全版)
- PAT
- 160个练手CrackMe-033
- Spring MVC 教程,快速入门,深入分析
- c#单链表基础操作
- LCD Mipi 调试方法及问题汇总
- 网---一个小画面