1.简介

  • (1)使用简单
  • (2)可配置度高,自适应程度高
  • (3)支持常见图片格式 Jpg png gif webp
  • (4)支持多种数据源  网络、本地、资源、Assets 等
  • (5)高效缓存策略    支持Memory和Disk图片缓存 默认Bitmap格式采用RGB_565内存使用至少减少一半
  • (6)生命周期集成   根据Activity/Fragment生命周期自动管理请求
  • (7)高效处理Bitmap  使用Bitmap Pool使Bitmap复用,主动调用recycle回收需要回收的Bitmap,减小系统回收压力
  • (8)官方github地址:https://github.com/bumptech/glide

2.使用

2.1简单的使用:

Glide.with(this).load("http://inthecheesefactory.com/uploads/source/nestedfragment/fragments.png").into(imageView);

2.2 with()方法的使用:

(1)with(Context context). 使用Application上下文,Glide请求将不受Activity/Fragment生命周期控制。
(2)with(Activity activity).使用Activity作为上下文,Glide的请求会受到Activity生命周期控制。
(3)with(FragmentActivity activity).Glide的请求会受到FragmentActivity生命周期控制。
(4)with(android.app.Fragment fragment).Glide的请求会受到Fragment 生命周期控制。
(5)with(android.support.v4.app.Fragment fragment).Glide的请求会受到Fragment生命周期控制。

2.3 load()方法的使用

        //SD卡资源:load("file://"+ Environment.getExternalStorageDirectory().getPath()+"/test.jpg")//assets资源:load("file:///android_asset/f003.gif")//raw资源:load("Android.resource://com.frank.glide/raw/raw_1")或load("android.resource://com.frank.glide/raw/"+R.raw.raw_1)//drawable资源:load("android.resource://com.frank.glide/drawable/news")或load("android.resource://com.frank.glide/drawable/"+R.drawable.news)//ContentProvider资源:load("content://media/external/images/media/139469")//http资源:load("http://img.my.csdn.NET/uploads/201508/05/1438760757_3588.jpg")//https资源:load("https://img.alicdn.com/tps/TB1uyhoMpXXXXcLXVXXXXXXXXXX-476-538.jpg_240x5000q50.jpg_.webp")
//        注意:
//        load不限于String类型
//        还可以是:load(Uri uri),load(File file),load(Integer resourceId),load(URL url),load(byte[] model),load(T model),loadFromMediaStore(Uri uri)。

2.4 基本设置

(1)禁止内存缓存:
.skipMemoryCache(true)
(2)清除内存缓存:
// 必须在UI线程中调用
    Glide.get(context).clearMemory();
(3)禁止磁盘缓存:
.diskCacheStrategy(DiskCacheStrategy.NONE)
(4)清除磁盘缓存:
// 必须在后台线程中调用,建议同时clearMemory()
   Glide.get(applicationContext).clearDiskCache();
(5)获取缓存大小:
new GetDiskCacheSizeTask(textView).execute(new File(getCacheDir(), DiskCache.Factory.DEFAULT_DISK_CACHE_DIR));
class GetDiskCacheSizeTask extends AsyncTask<File, Long, Long> {
private final TextView resultView;public GetDiskCacheSizeTask(TextView resultView) {this.resultView = resultView;
}@Override
protected void onPreExecute() {resultView.setText("Calculating...");
}@Override
protected void onProgressUpdate(Long... values) { /* onPostExecute(values[values.length - 1]); */ }@Override
protected Long doInBackground(File... dirs) {try {long totalSize = 0;for (File dir : dirs) {publishProgress(totalSize);totalSize += calculateSize(dir);}return totalSize;} catch (RuntimeException ex) {final String message = String.format("Cannot get size of %s: %s", Arrays.toString(dirs), ex);new Handler(Looper.getMainLooper()).post(new Runnable() {@Overridepublic void run() {resultView.setText("error");Toast.makeText(resultView.getContext(), message, Toast.LENGTH_LONG).show();}});}return 0L;
}

(6)指定资源的优先加载顺序:

//优先加载Glide.with(context).load(heroImageUrl).priority(Priority.HIGH).into(imageViewHero);//后加载Glide.with(context).load(itemImageUrl).priority(Priority.LOW).into(imageViewItem);
(7)先显示缩略图,再显示原图:
//用原图的1/10作为缩略图Glide.with(this).load("http://inthecheesefactory.com/uploads/source/nestedfragment/fragments.png").thumbnail(0.1f).into(iv_0);//用其它图片作为缩略图DrawableRequestBuilder<Integer> thumbnailRequest = Glide.with(this).load(R.drawable.news);Glide.with(this).load("http://inthecheesefactory.com/uploads/source/nestedfragment/fragments.png").thumbnail(thumbnailRequest).into(iv_0);

(8)对图片进行裁剪、模糊、滤镜等处理:

  //圆形裁剪Glide.with(this).load("http://inthecheesefactory.com/uploads/source/nestedfragment/fragments.png").bitmapTransform(new CropCircleTransformation(this)).into(iv_0);//圆角处理Glide.with(this).load("http://inthecheesefactory.com/uploads/source/nestedfragment/fragments.png").bitmapTransform(new RoundedCornersTransformation(this,30,0, RoundedCornersTransformation.CornerType.ALL)).into(iv_0);//灰度处理Glide.with(this).load("http://inthecheesefactory.com/uploads/source/nestedfragment/fragments.png").bitmapTransform(new GrayscaleTransformation(this)).into(iv_0);//其它变换...

(9)对请求状态进行监听:
(10)对资源的下载进度进行监听:

3.API说明:

(1)thumbnail(float sizeMultiplier). 
请求给定系数的缩略图。如果缩略图比全尺寸图先加载完,就显示缩略图,否则就不显示。系数sizeMultiplier必须在(0,1)之间,可以递归调用该方法。
(2)sizeMultiplier(float sizeMultiplier). 
在加载资源之前给Target大小设置系数。
(3)diskCacheStrategy(DiskCacheStrategy strategy).
设置缓存策略。DiskCacheStrategy.SOURCE:缓存原始数据,DiskCacheStrategy.RESULT:缓存变换(如缩放、裁剪等)后的资源数据,DiskCacheStrategy.NONE:什么都不缓存,DiskCacheStrategy.ALL:缓存SOURC和RESULT。默认采用DiskCacheStrategy.RESULT策略,对于download only操作要使用DiskCacheStrategy.SOURCE。
(4)priority(Priority priority). 
指定加载的优先级,优先级越高越优先加载,但不保证所有图片都按序加载。枚举Priority.IMMEDIATE,Priority.HIGH,Priority.NORMAL,Priority.LOW。默认为Priority.NORMAL。
(5)dontAnimate(). 
移除所有的动画。
(6)animate(int animationId). 
在异步加载资源完成时会执行该动画。
(7)animate(ViewPropertyAnimation.Animator animator). 
在异步加载资源完成时会执行该动画。
(8)placeholder(int resourceId). 
设置资源加载过程中的占位Drawable。
(9)placeholder(Drawable drawable). 
设置资源加载过程中的占位Drawable。
(10)fallback(int resourceId). 
设置model为空时要显示的Drawable。如果没设置fallback,model为空时将显示error的Drawable,如果error的Drawable也没设置,就显示placeholder的Drawable。
(11)fallback(Drawable drawable).
设置model为空时显示的Drawable。
(12)error(int resourceId).
设置load失败时显示的Drawable。
(13)error(Drawable drawable).
设置load失败时显示的Drawable。
(14)listener(RequestListener<? super ModelType, TranscodeType> requestListener). 
监听资源加载的请求状态,可以使用两个回调:onResourceReady(R resource, T model, Target<R> target, boolean isFromMemoryCache, boolean isFirstResource)和onException(Exception e, T model, Target&lt;R&gt; target, boolean isFirstResource),但不要每次请求都使用新的监听器,要避免不必要的内存申请,可以使用单例进行统一的异常监听和处理。
(15)skipMemoryCache(boolean skip). 
设置是否跳过内存缓存,但不保证一定不被缓存(比如请求已经在加载资源且没设置跳过内存缓存,这个资源就会被缓存在内存中)。
(16)override(int width, int height). 
重新设置Target的宽高值(单位为pixel)。
(17)into(Y target).
设置资源将被加载到的Target。
(18)into(ImageView view). 
设置资源将被加载到的ImageView。取消该ImageView之前所有的加载并释放资源。
(19)into(int width, int height). 
后台线程加载时要加载资源的宽高值(单位为pixel)。
(20)preload(int width, int height). 
预加载resource到缓存中(单位为pixel)。
(21)asBitmap(). 
无论资源是不是gif动画,都作为Bitmap对待。如果是gif动画会停在第一帧。
(22)asGif().
把资源作为GifDrawable对待。如果资源不是gif动画将会失败,会回调.error()。

4.使用步骤:

1)在build.gradle中添加依赖:
compile 'com.github.bumptech.glide:glide:3.7.0'
2)如果你的项目没有support-v4库,还需要添加support-v4依赖:
compile 'com.android.support:support-v4:23.3.0'
3)如果使用变换,可以添加一个自定义的变换库
github网址:
https://github.com/wasabeef/glide-transformations
添加依赖:
compile 'jp.wasabeef:glide-transformations:2.0.1'
   // If you want to use the GPU Filters
compile 'jp.co.cyberagent.android.gpuimage:gpuimage-library:1.3.0'   

Android 开发 之 glide加载图片相关推荐

  1. android开发之Glide加载图片之url转bitmap的方法

    直接看代码: /*** 自己写的加载网络图片的方法* img_url 图片的网址*/public void initNetWorkImage(final String imgUrl, final Ac ...

  2. Android Glide加载图片、网络监听、设置资源监听

    Glide加载图片.加载进度监听 前言 正文 一.项目配置 二.显示网络图片 三.添加设置资源监听 四.添加设置资源监听 五.添加加载进度条 六.封装工具类 七.源码 总结 前言   在日常开发中使用 ...

  3. Android Glide加载图片时转换为圆形、圆角、毛玻璃等图片效果

     Android Glide加载图片时转换为圆形.圆角.毛玻璃等图片效果 附录1简单介绍了Android开源的图片加载框架.在实际的开发中,虽然Glide解决了快速加载图片的问题,但还有一个问题悬 ...

  4. android 图片变量,Android开发实现ImageView加载摄像头拍摄的大图功能

    本文实例讲述了Android开发实现ImageView加载摄像头拍摄的大图功能.分享给大家供大家参考,具体如下: 这个方法是从官方demo中摘录的,在此记录学习. 权限 android:name=&q ...

  5. Android Glide加载图片成圆形

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

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

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

  7. Android框架之路——Glide加载图片(结合RecyclerView、CardView)

    Android框架之路--Glide加载图片 一.简介: 在泰国举行的谷歌开发者论坛上,谷歌为我们介绍了一个名叫 Glide 的图片加载库,作者是bumptech.这个库被广泛的运用在google的开 ...

  8. Android --- Glide加载图片时候调用asBitmap()方法的时候总是报错,点不出来?

    今天写Glide加载图片的时候,网上给的例子全都是这样写的 很明显.asBitmap()在load后面,放到我的代码里就会报错,如下: 最后查了半天度娘才发现要在with()之后添加asBitmap( ...

  9. android设置背景图片不填充整个_使用Glide加载图片并填充满ImageView

    作为谷歌推荐的图片加载库,Glide使用起来非常的简单. 1.在项目中添加依赖: dependencies { compile 'com.github.bumptech.glide:glide:3.7 ...

最新文章

  1. cent卸载mysql_centos 7.x 安装/卸载MySQL
  2. POJ1816:Wild Words——题解
  3. 红帽集群套件RHCS四部曲(维护篇)
  4. Java设计模式(十六):生成器设计模式
  5. 使用清华开源镜像安装tensorflow
  6. Java集合—ArrayList底层原理
  7. 【HDU - 1266 】Reverse Number(模拟,数字分位数处理)
  8. Vmware Ubuntu 开机蓝屏
  9. 面对疫情等群体性危机,程序员如何在家高效办公?
  10. javaweb开发后段学习路线_WEB前端开发职业学习路线初级完整版
  11. 德保罗大学计算机专业,2020年德保罗大学排名TFE Times美国最佳计算机科学硕士专业排名第75...
  12. 怎样才能够修改PDF文件中的文字大小
  13. 报错Found existing installation: tensorflow 1.2.1
  14. 处理txt文件下载下来以后,排版格式不对的问题
  15. QTableWidgetQTableView表格美化
  16. ArcGIS 10 Desktop完全破解方法
  17. sonic云真机通过linux系统接入苹果手机
  18. android网络的评分机制、连接国内ap wifi不回连问题
  19. 微软 AutoML 框架之 FLAML | 环境配置、安装、分类/回归测试
  20. 在任务栏上显示/隐藏窗口

热门文章

  1. 你这气质,一看就是项目经理
  2. 网页自适应电脑屏幕大小
  3. python数据清洗---实战案例(清洗csv文件)
  4. 【论文笔记】GCA-Net : Utilizing Gated Context Attention for Improving Image Forgery Localization and Detec
  5. 常见.Net 英文专业词汇
  6. 【Educoder作业】※ 字符信息——凯撒加密
  7. Oracle处理CLOB超过4000入库问题 (2)
  8. 整数因子分解问题(多种方法)
  9. 手表频率测试软件,细数智能手表中的16个传感器
  10. 浏览器本地存储的四种方式