图片加载很是重要,我也对比过别的库,觉得还是Glide好用,我只是简单的分享下我开发用到的相关知识,整理下项目相关的库,废话不多说,直接开始吧

Glide的配置

配置很简单,只要在Module的Gradle添加依赖即可

compile 'com.github.bumptech.glide:glide:3.7.0'
compile 'com.android.support:support-v4:25.3.0'

当然,如果涉及到网络加载图片,记得添加网络权限

<uses-permission android:name="android.permission.INTERNET" />

Glide的使用

1、初始化

Glide支持Activity和Fragment的绑定

Glide.with(Context context);
Glide.with(Activity activity);
Glide.with(FragmentActivity activity);
Glide.with(Fragment fragment);

将Activity/Fragment作为with()参数的好处是:图片加载会和Activity/Fragment的生命周期保持一致

2、加载资源

Glide支持网络资源、assets资源、Resources资源、File资源、Uri资源、字节数组

Glide.with(this).load("http://pic9/258/a2.jpg").into(iv);
Glide.with(this).load("file:///xxx.jpg").into(iv);
Glide.with(this).load(R.mipmap.ic_launcher).into(iv);
Glide.with(this).load(file).into(iv);
Glide.with(this).load(uri).into(iv);
Glide.with(this).load(byte[]).into(iv); 

3、加载gif图片

  • 加载静态gif图片(静态就是gif相当于一张图片)
Glide.with(this).load(imageUrl).asBitmap().into(iv);
  • 加载动态gif图片(gif是动的)
Glide.with(this).load(imageUrl).asGif().into(iv);
  • 显示本地视频
    Glide 还能显示视频!只要他们是存储在手机上的。假设你通过让用户选择一个视频后得到了一个文件路径:
String filePath = "/storage/emulated/0/Pictures/example_video.mp4";
Glide.with(context).load(Uri.fromFile(new File( filePath))).into(iv);

这里需要注意的是,这仅仅对本地视频起作用。如果没有存储在该设备上的视频(如一个网络 URL 的视频),它是不工作的!

4、设置加载中和加载失败的图片

  • 设置加载中图片
.placeholder(R.drawable.placeholder)
  • 设置加载失败图片
.error(R.drawable.error)
  • 设置缩略图支持
//先加载缩略图 然后在加载全图
Glide.with(this).load(imageUrl).thumbnail(0.1f).into(iv);

5、设置加载动画

  • 默认是淡入淡出动画
Glide.with(this)
.load("http://nm/photo/1f/1f7a.jpg")
.crossFade(int duration)//去减慢(或加快)动画
.into(iv);
  • 使用 crossFade()
Glide.with(this)
.load("http://nm/photo/1f/1f7a.jpg")
.crossFade()//动画默认的持续时间是 300毫秒
.into(iv);
  • 添加自定义动画
Glide.with(this)
.load("http://nm/photo/1f/1f7a.jpg")
.animate(R.anim.fade_in)
.into(iv);
  • 去除动画
Glide.with(this)
.load("http://nm/photo/1f/1f7a.jpg")
.dontAnimate()
.into(iv);

6、 缩放图像

  • CenterCrop 即缩放图像至填充到 ImageView内,裁剪额外的部分。ImageView会完全填充,但图像可能不会显示不全。
Glide.with(this).load(url).centerCrop().into(iv);
  • fitCenter() 图片会按照imageview长宽中最小的边界作为依据,按比例缩放图像。该图像将会完全显示,但可能不会填满整个 ImageView。
Glide.with(this).load(url).fitCenter().into(iv);

7、设置监听回调

Glide.with(this).load(imageUrl).listener(RequestListener listener).into(iv);

8、设置加载尺寸

  • 指定尺寸(图片大小在xml中不能写死,是wrap_content才可以指定尺寸)
Glide.with(this)
.load("http://nm/photo/1f/1f7a.jpg")
.override(600,600)
.into(iv);

9、设置缓存策略

  • 设置跳过内存缓存
Glide.with(this)
.load("http://nm/photo/1f/1f7a.jpg")
.skipMemoryCache(true)
.into(iv);
  • 设置缓存策略
Glide.with(this)
.load("http://nm/photo/1f/1f7a.jpg")
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(iv);
DiskCacheStrategy.ALL //缓存源资源和转换后的资源
DiskCacheStrategy.NONE//不做任何磁盘缓存
DiskCacheStrategy.RESULT //缓存转换后的资源
DiskCacheStrategy.SOURCE缓存源资源
  • 清理磁盘缓存
Glide.get(this).clearDiskCache();//在子线程中进行
  • 清理内存缓存
Glide.get(this).clearMemory();//可以在主线程
  • 设置磁盘缓存目录和图片效果(默认Bitmap格式是RGB_565)
    1,在AndroidManifest中application节点下:
<!--glide缓存目录设置--><meta-data
     android:name="包名.widget.GlideModuleConfig"android:value="GlideModule" />

2 , 创建类GlideModuleConfig

public class GlideModuleConfig implements GlideModule {@Overridepublic void applyOptions(Context context, GlideBuilder builder) {
//内部存储/Android/data/包名/cache/glide-images
builder.setDiskCache(new ExternalCacheDiskCacheFactory(context, "glide-images", 2 * 1024 * 1024));
//将默认的RGB_565效果转换到ARGB_8888builder.setDecodeFormat(DecodeFormat.PREFER_ARGB_8888);}@Overridepublic void registerComponents(Context context, Glide glide) {//不做处理}
}

10、BitmapTransformation

Glide在Github上还有一个库,可以处理图片效果,比如裁剪、圆角、高斯模糊等等

  • 引入依赖库
compile 'jp.wasabeef:glide-transformations:2.0.1'
  • 实现高斯模糊
//radius取值1-25,值越大图片越模糊
Glide.with(context).load(url).bitmapTransform(new BlurTransformation(context, radius)).into(iv);  
  • 原图基础上变换设置圆形图
Glide.with(context).load(url).bitmapTransform(new CropCircleTransformation(this)).into(iv);  
  • 原图基础上变换成圆图 +毛玻璃(高斯模糊)
Glide.with(this).load(url).bitmapTransform(new BlurTransformation(this, 25), new CropCircleTransformation(this)).into(iv);
  • 原图处理成圆角
//如果是四周已经是圆角则RoundedCornersTransformation.CornerType.ALL
Glide.with(this).load(url).bitmapTransform(new RoundedCornersTransformation(this, 30, 0, RoundedCornersTransformation.CornerType.BOTTOM)).into(iv);

Android-Glide使用相关推荐

  1. Android Glide加载图片成圆形

    今天,简单讲解android使用glide加载图片成圆形. 这个很简单,因为之前需要在RecyclerView里加载圆形图片,所以在网上查找了资料,很简单就解决了. 1.导入依赖 implementa ...

  2. android Glide简单使用

    今天,简单讲讲Android里Glide的简单使用. Android框架系列: 一.android EventBus的简单使用 二.android Glide简单使用 对于Glide这个加载图片的框架 ...

  3. Android Glide图片加载框架(四)回调与监听

    文章目录 Android Glide图片加载框架系列文章 Android Glide图片加载框架(一)基本用法 Android Glide图片加载框架(二)源码解析之with() Android Gl ...

  4. Android Glide图片加载框架(三)缓存机制

    文章目录 一.缓存简介 二.缓存用法 内存缓存方式 磁盘缓存方式 三.缓存KEY 四.内存缓存 内存缓存流程 五.磁盘缓存 磁盘缓存流程 Android Glide图片加载框架系列文章 Android ...

  5. Android Glide图片加载框架(二)源码解析之into()

    文章目录 一.前言 二.源码解析 1.into(ImageView) 2.GlideContext.buildImageViewTarget() 3.RequestBuilder.into(Targe ...

  6. Android Glide图片加载框架(二)源码解析之load()

    文章目录 一.前言 二.源码分析 1.load() Android Glide图片加载框架系列文章 Android Glide图片加载框架(一)基本用法 Android Glide图片加载框架(二)源 ...

  7. Android Glide图片加载框架(二)源码解析之with()

    文章目录 一.前言 二.如何阅读源码 三.源码解析 1.with() Android Glide图片加载框架系列文章 Android Glide图片加载框架(一)基本用法 Android Glide图 ...

  8. Android Glide图片加载框架(一)基本用法

    文章目录 一.前言 二.简介 三.基本用法 第一步:调用 Glide.with() 方法创建加载图片的实例 第二步:调用 load() 方法指定待加载的图片资源 第三步:调用 into() 方法绑定显 ...

  9. Android Glide数据更新及内存缓存、硬盘缓存清理

    [转] 原文                                         Android Glide数据更新及内存缓存.硬盘缓存清理 Android的Glide在加载图片时候内部默 ...

  10. android glide圆形图片,Android Glide加载图片成圆形

    释放双眼,带上耳机,听听看~! 今天,简单讲解android使用glide加载图片成圆形. 这个很简单,因为之前需要在RecyclerView里加载圆形图片,所以在网上查找了资料,很简单就解决了. 1 ...

最新文章

  1. 大数据处理——Hadoop解析(一)
  2. [linux] Linux日志设置(转自抚琴煮酒)
  3. IOS 学习资料汇总(^_^)
  4. python路径拼接问题
  5. ibatis学习笔记(三)java实体跟表映射.xml文件详解
  6. 设计师电脑推荐笔记本_笔记本电脑选购推荐全攻略
  7. JavaFX UI控件教程(二十四)之Password Field
  8. 史上最简单的SpringCloud教程 | 第四篇:断路器(Hystrix)--有BUG,注意看我的备注
  9. 每天一个linux命令(40):wc命令
  10. oracle分区区别,oracle范围分区表和INTERVAL分区表对于SPLIT分区的区别
  11. NHibernate Inheritance Mapping 继承映射
  12. 解决Tomcat version 7.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 and 6 Web modules
  13. java 数据结构与算法_数据结构与算法—常用数据结构及其Java实现
  14. 大学英语 unit 2 第五题
  15. Multisim10.0.1汉化时没有stringfiles问题
  16. Spring AOP术语:连接点和切点的区别。
  17. 反应式框架Reactor中的Mono和Flux
  18. Python利用PyQt5制作一个获取网络实时数据NBA数据播报GUI
  19. MySQL插入数据时,如果记录不存在则insert,如果存在则update
  20. Vue - 音频播放器插件(vue-aplayer)

热门文章

  1. sh shell实现自动杀死cpu占用最高的pid,同时当cpu超过95%自动重启apache
  2. Authentication和Authrization(下)
  3. 二叉树-满二叉树、完全二叉树
  4. Spring :singleton和protype区别
  5. 打印机的4种色彩输出方式
  6. linux入门怎么学
  7. 反转字符串(Java实现)
  8. springboot设置session超时和session监听
  9. python中如何将数字转换成中文数字_Python把数字变成中文的方法
  10. Thinkpad E575重装系统,无法找到系统盘,无法开机