为了账号安全,请及时绑定邮箱和手机立即绑定

安卓——图片加载之Glide使用

标签:
Android

一、简介

在泰国举行的谷歌开发者论坛上,谷歌为我们介绍了一个名叫Glide的图片加载库,作者是bumptech。这个库被广泛的运用在Google的开源项目中,包括2014年Google I/O大会上发布的官方App。

Glide是一款由Bump Technologies开发的图片加载框架,使得我们可以在Android平台上以极度简单的方式加载和展示图片。Glide默认使用HttpUrlConnection进行网络请求,为了让App保持一致的网络请求形式,可以让Glide使用我们指定的网络请求形式请求网络资源。

优点有

使用简单

可配置度高,自适应程度高

支持常见图片格式,jpg、png、gif、webp

支持多种数据源,网络、资源、assets 、File、Uri等

高效缓存策略支持内存和硬盘缓存

生命周期集成根据Activity/Fragment生命周期自动管理请求

高效处理Bitmap

可能大家以前用过Picasso,Glide是Picasso的升级版,具体的差异,大家可以看看这篇文章

http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0327/2650.html

二、依赖

1.jar包

Github地址:https://github.com/bumptech/glide/releases

2.Gradle

dependencies {  
    compile 'com.github.bumptech.glide:glide:3.7.0'  
    compile 'com.android.support:support-v4:23.3.0'  
}

当然,现在Android studio 就不用导入compile 'com.android.support:support-v4:23.3.0'
因为Android studio已经为我们导入好了。

三、权限

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

四、混淆

-keep public class * implements com.bumptech.glide.module.GlideModule
-keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** {
    **[] $VALUES;
    public *;
}

五、使用

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

不管是在Activity还是Fragment中调用with()方法,都可以直接传this。将Activity/Fragment作为with()参数的好处是,图片加载会和Activity/Fragment的生命周期保持一致。

1、Glide支持网络资源、assets资源、Resources资源、File资源、Uri资源、字节数组
Glide.with(context).load("http://xxx.jpg").into(imageView); Glide.with(context).load("file:///xxx.png").into(imageView); Glide.with(context).load(R.mipmap.ic_launcher).into(imageView); File file = new File(getExternalCacheDir() + "/image.jpg"); Glide.with(context).load(file).into(imageView); Glide.with(context).load(uri).into(imageView); Glide.with(context).load(byte[]).into(imageView);

2、不管我们传入的是一张普通图片,还是一张GIF图片,Glide都会自动进行判断,并且可以正确地把它解析并展示出来。
如果加载静态gif图片,在界面上显示第一帧的图片:


Glide.with(this).load(imageUrl).asBitmap().into(imageView); 

3、加载动态gif图片

Glide.with(this).load(imageUrl).asGif().into(imageView);  

如果指定了只能加载动态图片,而传入的图片却是一张静图的话,那么就加载失败。

4、占位图,设置加载中图片

.placeholder(R.drawable.placeholder)  

设置加载失败图片

.error(R.drawable.error)  

5、先加载缩略图 然后在加载全图
Glide.with(this).load(imageUrl).thumbnail(0.1f).into(imageView);

6、动画

淡入淡出效果

Glide.with(this).load(imageUrl).crossFade().into(imageView);  

无动画

Glide.with(this).load(imageUrl).dontAnimate().into(imageView);  

自定义动画

Glide.with(this).load(imageUrl).animate(R.anim.alpha_in).into(imageView);  

7、设置监听回调

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

8、设置加载尺寸

//指定尺寸,加载成800*800像素的尺寸  
Glide.with(this).load(imageUrl).override(800, 800).into(imageView);  
//拉伸截取中间部分显示  
Glide.with(this).load(imageUrl).centerCrop().into(imageView);  
//等比拉伸填满ImageView  
Glide.with(this).load(imageUrl).fitCenter().into(imageView);  

9、设置缓存策略
设置跳过内存缓存

Glide.with(this).load(imageUrl).skipMemoryCache(true).into(imageView);  

设置缓存策略

Glide.with(this).load(imageUrl).diskCacheStrategy(DiskCacheStrategy.ALL).into(imageView);  

DiskCacheStrategy.ALL:缓存源资源和转换后的资源
DiskCacheStrategy.NONE:不作任何磁盘缓存,禁用掉Glide的缓存功能
DiskCacheStrategy.SOURCE:缓存源资源
DiskCacheStrategy.RESULT:缓存转换后的资源
清理缓存

//清理磁盘缓存 需要在子线程中执行  
Glide.get(this).clearDiskCache();  
//清理内存缓存  可以在UI主线程中进  
Glide.get(this).clearMemory();  

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

compile 'jp.wasabeef:glide-transformations:2.0.1' 

实现高斯模糊

//radius取值1-25,值越大图片越模糊  
Glide.with(context).load(url).bitmapTransform(new BlurTransformation(context, radius)).into(imageView);  

参考:

http://blog.csdn.net/jiangtea/article/details/66975618?locationNum=9&fps=1

glide讲解视频:

http://edu.csdn.net/course/detail/3355/56817?auto_start=1

点击查看更多内容
8人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消