Google图片加载库Glide的简单封装GlideUtils
来源:互联网 发布:淘宝买货被骗怎么办 编辑:程序博客网 时间:2024/04/26 08:23
Google图片加载库Glide的简单封装GlideUtils
因为项目里用的Glide的地方比较多,所有简单的封装了以下,其实也没什么,就是写了个工具类,但是还是要把基础说下
Glide的Github
- https://github.com/bumptech/glide
Glide简单配置
Glide有三种集成的方式
- 1.JAR
点击下载Glide.jar
- Gradle(推荐)
首先需要在你model的build.gradle里添加
repositories { // jcenter() works as well because it pulls from Maven Central mavenCentral() }
- 1
- 2
- 3
- 4
然后在我们的app的build.gradle里添加
compile 'com.github.bumptech.glide:glide:3.7.0' compile 'com.android.support:support-v4:24.2.1'
- 1
- 2
这里要注意的是Glide需要V4包的支持,V4包的版本根据你的开发环境来决定
- Maven
<dependency> <groupId>com.github.bumptech.glide</groupId> <artifactId>glide</artifactId> <version>3.7.0</version></dependency><dependency> <groupId>com.google.android</groupId> <artifactId>support-v4</artifactId> <version>r7</version></dependency>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Glide简单使用
Glide是在Picasso的基础上进行改良的,我们来看下他最基础的使用方法
ImageView imageView = (ImageView) findViewById(R.id.my_image_view); Glide.with(this).load("http://goo.gl/gEgYUd").into(imageView);
- 1
- 2
其实很简单,with里支持的比Picasso多很多
- Context
- Activity
- Fragment
- FragmentActivity
lode是需要加载的图片地址,into是赋予的控件,当然还有很多其他的方法,我们等下说
Glide的优点
- 使用简单
- 可配置度高,自适应程度高
- 支持常见图片格式 Jpg png gif webp
- 支持多种数据源 网络、本地、资源、Assets 等
- 高效缓存策略 支持Memory和Disk图片缓存 默认Bitmap格式采用RGB_565内存使用至少减少一半
- 生命周期集成 根据Activity/Fragment生命周期自动管理请求
- 高效处理Bitmap 使用Bitmap Pool使Bitmap复用,主动调用recycle回收需要回收的Bitmap,减小系统回收压力
- 这里默认支持Context,Glide支持Context,Activity,Fragment,FragmentActivity
Glide的封装
1.默认加载
public static void loadImageView(Context mContext, String path, ImageView mImageView) { Glide.with(mContext).load(path).into(mImageView); }
- 1
- 2
- 3
2.加载指定大小
public static void loadImageViewSize(Context mContext, String path, int width, int height, ImageView mImageView) { Glide.with(mContext).load(path).override(width, height).into(mImageView); }
- 1
- 2
- 3
3.设置加载中以及加载失败图片
public static void loadImageViewLoding(Context mContext, String path, ImageView mImageView, int lodingImage, int errorImageView) { Glide.with(mContext).load(path).placeholder(lodingImage).error(errorImageView).into(mImageView); }
- 1
- 2
- 3
4.设置加载中以及加载失败图片并且指定大小
public static void loadImageViewLodingSize(Context mContext, String path, int width, int height, ImageView mImageView, int lodingImage, int errorImageView) { Glide.with(mContext).load(path).override(width, height).placeholder(lodingImage).error(errorImageView).into(mImageView); }
- 1
- 2
- 3
5.设置跳过内存缓存
public static void loadImageViewCache(Context mContext, String path, ImageView mImageView) { Glide.with(mContext).load(path).skipMemoryCache(true).into(mImageView); }
- 1
- 2
- 3
6.设置下载优先级
public static void loadImageViewPriority(Context mContext, String path, ImageView mImageView) { Glide.with(mContext).load(path).priority(Priority.NORMAL).into(mImageView); }
- 1
- 2
- 3
7.设置缓存策略
策略分为:
- all:缓存源资源和转换后的资源
- none:不作任何磁盘缓存
- source:缓存源资源
- result:缓存转换后的资源
public static void loadImageViewDiskCache(Context mContext, String path, ImageView mImageView) { Glide.with(mContext).load(path).diskCacheStrategy(DiskCacheStrategy.ALL).into(mImageView); }
- 1
- 2
- 3
8.设置加载动画
api也提供了几个常用的动画:比如crossFade()
public static void loadImageViewAnim(Context mContext, String path, int anim, ImageView mImageView) { Glide.with(mContext).load(path).animate(anim).into(mImageView); }
- 1
- 2
- 3
9.设置缩略图支持
public static void loadImageViewThumbnail(Context mContext, String path, ImageView mImageView) { Glide.with(mContext).load(path).thumbnail(0.1f).into(mImageView); }
- 1
- 2
- 3
10.设置动态转换
api提供了比如:centerCrop()、fitCenter()等
public static void loadImageViewCrop(Context mContext, String path, ImageView mImageView) { Glide.with(mContext).load(path).centerCrop().into(mImageView); }
- 1
- 2
- 3
11.设置动态GIF加载方式
public static void loadImageViewDynamicGif(Context mContext, String path, ImageView mImageView) { Glide.with(mContext).load(path).asGif().into(mImageView); }
- 1
- 2
- 3
12.设置静态GIF加载方式
public static void loadImageViewStaticGif(Context mContext, String path, ImageView mImageView) { Glide.with(mContext).load(path).asBitmap().into(mImageView); }
- 1
- 2
- 3
13.设置监听请求接口
设置监听的用处 可以用于监控请求发生错误来源,以及图片来源 是内存还是磁盘
public static void loadImageViewListener(Context mContext, String path, ImageView mImageView, RequestListener<String, GlideDrawable> requstlistener) { Glide.with(mContext).load(path).listener(requstlistener).into(mImageView); }
- 1
- 2
- 3
14.设置要加载的内容
项目中有很多需要先下载图片然后再做一些合成的功能,比如项目中出现的图文混排
public static void loadImageViewContent(Context mContext, String path, SimpleTarget<GlideDrawable> simpleTarget) { Glide.with(mContext).load(path).centerCrop().into(simpleTarget); }
- 1
- 2
- 3
15.清理磁盘缓存
public static void GuideClearDiskCache(Context mContext) { //理磁盘缓存 需要在子线程中执行 Glide.get(mContext).clearDiskCache(); }
- 1
- 2
- 3
- 4
16.清理内存缓存
public static void GuideClearMemory(Context mContext) { //清理内存缓存 可以在UI主线程中进行 Glide.get(mContext).clearMemory(); }
- 1
- 2
- 3
- 4
当然,我们后续肯定会功能越来越多的,我把项目开源在Github上了,为了使用起来方便自己封装了下,同时也分享以下
GlideUtils源码
package com.liuguilin.gankclient.util;/* * 项目名: GankClient * 包名: com.liuguilin.gankclient.util * 文件名: GlideUtils * 创建者: LGL * 创建时间: 2016/10/20 16:45 * 描述: Glide封装 */import android.content.Context;import android.widget.ImageView;import com.bumptech.glide.Glide;import com.bumptech.glide.Priority;import com.bumptech.glide.load.engine.DiskCacheStrategy;import com.bumptech.glide.load.resource.drawable.GlideDrawable;import com.bumptech.glide.request.RequestListener;import com.bumptech.glide.request.target.SimpleTarget;public class GlideUtils { /** * Glide特点 * 使用简单 * 可配置度高,自适应程度高 * 支持常见图片格式 Jpg png gif webp * 支持多种数据源 网络、本地、资源、Assets 等 * 高效缓存策略 支持Memory和Disk图片缓存 默认Bitmap格式采用RGB_565内存使用至少减少一半 * 生命周期集成 根据Activity/Fragment生命周期自动管理请求 * 高效处理Bitmap 使用Bitmap Pool使Bitmap复用,主动调用recycle回收需要回收的Bitmap,减小系统回收压力 * 这里默认支持Context,Glide支持Context,Activity,Fragment,FragmentActivity */ //默认加载 public static void loadImageView(Context mContext, String path, ImageView mImageView) { Glide.with(mContext).load(path).into(mImageView); } //加载指定大小 public static void loadImageViewSize(Context mContext, String path, int width, int height, ImageView mImageView) { Glide.with(mContext).load(path).override(width, height).into(mImageView); } //设置加载中以及加载失败图片 public static void loadImageViewLoding(Context mContext, String path, ImageView mImageView, int lodingImage, int errorImageView) { Glide.with(mContext).load(path).placeholder(lodingImage).error(errorImageView).into(mImageView); } //设置加载中以及加载失败图片并且指定大小 public static void loadImageViewLodingSize(Context mContext, String path, int width, int height, ImageView mImageView, int lodingImage, int errorImageView) { Glide.with(mContext).load(path).override(width, height).placeholder(lodingImage).error(errorImageView).into(mImageView); } //设置跳过内存缓存 public static void loadImageViewCache(Context mContext, String path, ImageView mImageView) { Glide.with(mContext).load(path).skipMemoryCache(true).into(mImageView); } //设置下载优先级 public static void loadImageViewPriority(Context mContext, String path, ImageView mImageView) { Glide.with(mContext).load(path).priority(Priority.NORMAL).into(mImageView); } /** * 策略解说: * <p> * all:缓存源资源和转换后的资源 * <p> * none:不作任何磁盘缓存 * <p> * source:缓存源资源 * <p> * result:缓存转换后的资源 */ //设置缓存策略 public static void loadImageViewDiskCache(Context mContext, String path, ImageView mImageView) { Glide.with(mContext).load(path).diskCacheStrategy(DiskCacheStrategy.ALL).into(mImageView); } /** * api也提供了几个常用的动画:比如crossFade() */ //设置加载动画 public static void loadImageViewAnim(Context mContext, String path, int anim, ImageView mImageView) { Glide.with(mContext).load(path).animate(anim).into(mImageView); } /** * 会先加载缩略图 */ //设置缩略图支持 public static void loadImageViewThumbnail(Context mContext, String path, ImageView mImageView) { Glide.with(mContext).load(path).thumbnail(0.1f).into(mImageView); } /** * api提供了比如:centerCrop()、fitCenter()等 */ //设置动态转换 public static void loadImageViewCrop(Context mContext, String path, ImageView mImageView) { Glide.with(mContext).load(path).centerCrop().into(mImageView); } //设置动态GIF加载方式 public static void loadImageViewDynamicGif(Context mContext, String path, ImageView mImageView) { Glide.with(mContext).load(path).asGif().into(mImageView); } //设置静态GIF加载方式 public static void loadImageViewStaticGif(Context mContext, String path, ImageView mImageView) { Glide.with(mContext).load(path).asBitmap().into(mImageView); } //设置监听的用处 可以用于监控请求发生错误来源,以及图片来源 是内存还是磁盘 //设置监听请求接口 public static void loadImageViewListener(Context mContext, String path, ImageView mImageView, RequestListener<String, GlideDrawable> requstlistener) { Glide.with(mContext).load(path).listener(requstlistener).into(mImageView); } //项目中有很多需要先下载图片然后再做一些合成的功能,比如项目中出现的图文混排 //设置要加载的内容 public static void loadImageViewContent(Context mContext, String path, SimpleTarget<GlideDrawable> simpleTarget) { Glide.with(mContext).load(path).centerCrop().into(simpleTarget); } //清理磁盘缓存 public static void GuideClearDiskCache(Context mContext) { //理磁盘缓存 需要在子线程中执行 Glide.get(mContext).clearDiskCache(); } //清理内存缓存 public static void GuideClearMemory(Context mContext) { //清理内存缓存 可以在UI主线程中进行 Glide.get(mContext).clearMemory(); }}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
- 142
- 143
- 144
- 145
- 146
- 147
有兴趣的可以加入我的Android群:555974449,一起进步如何?
转自:http://blog.csdn.net/qq_26787115/article/details/52877997
阅读全文
0 0
- Google图片加载库Glide的简单封装GlideUtils
- Google图片加载库Glide的简单封装GlideUtils
- Glide的简单封装GlideUtils
- Glide的简单封装GlideUtils
- Google推荐的图片加载库Glide
- Glide,Google推荐的图片加载库
- [安卓开发] Glide图片加载库的简单封装使用
- Google推荐的图片加载库Glide介绍
- Google推荐的图片加载库Glide介绍
- Google推荐的图片加载库Glide介绍
- Google推荐的图片加载库Glide介绍
- Google推荐的图片加载库Glide介绍
- Google推荐的图片加载库Glide介绍
- Google推荐的图片加载库Glide介绍
- Google推荐的图片加载库Glide介绍
- Google推荐的图片加载库Glide介绍
- Google推荐的图片加载库Glide介绍
- Google推荐的图片加载库Glide介绍
- 第11章--流类库的输入和输出
- 20171211-学习日记
- python找不到ssl模块
- 使用两个栈实现队列
- G
- Google图片加载库Glide的简单封装GlideUtils
- 20171211
- 爆客系统源码
- 51Nod 1432 独木舟 贪心
- ionic 购物车的加减框
- TIOBE 12 月排行榜:古老的 C 和后起之秀 Kotlin,谁是年度编程语言之王?
- 图片上传预览
- 数据结构实验之查找七:线性之哈希表
- RabbitMQ入门-10-1(整合spring-发送同步消息)