图片加载之Glide使用

Glide是一个广泛应用于Android的图片加载框架,由谷歌在泰国开发者论坛上介绍。它提供简单的图片加载和展示方式,支持网络、本地、资源等多种图片来源。本文涵盖了Glide的依赖、使用、方法、缓存策略、生命周期管理、自定义配置等方面,详细讲解了如何在Android中使用Glide加载和处理图片。
摘要由CSDN通过智能技术生成

一、简介

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

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

带你全面了解Glide 4的用法

二、依赖

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'  
}

三、权限

<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最新版本:http://search.maven.org/#search%7Cga%7C1%7Ca%3A%22glide%22

Glide.with(this).load(url).into(view);

Glide.with()方法用于创建一个加载图片的实例。with()方法可以接收ContextActivityFragment或者FragmentActivity类型的参数,因此可供我们选择的范围非常广。在ActivityFragment或者FragmentActivity中调用with()方法时都可以直接传this,不在这些类中时可获取当前应用程序的ApplicationContext传入with()方法中。特别需要注意的是with()方法中传入的实例会决定Glide加载图片的生命周期,如果传入的是ActivityFragment或者FragmentActivity的实例,那么当其被销毁时图片加载也会停止,如果传入的是ApplicationContext时只有当应用程序被杀掉的时候图片加载才会停止。

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

load()方法用于指定待加载的图片资源。Glide支持加载各种各样的图片资源,包括网络图片、本地图片、应用资源、二进制流、Uri对象等。

into()方法用于图片显示的对应ImageView

Glide支持加载gif图片,其内部会自动判断图片格式,并且可以正确的将它解析并显示出来。

使用Glide加载图片不用担心内存浪费,甚至是内存溢出的问题。因为Glide不会直接将图片的完整尺寸全部加载到内存中,而是用多少加载多少。Glide会自动判断ImageView的大小,然后只将这么大的图片像素加载到内存当中,帮助我们节省内存开支。

六、方法

1.指定图片格式

如果调用了.asBitmap()方法,则.load()中的参数指向的可以是一个静态图片也可以是GIF图片,如果是一张GIF图片,则加载之后只会展示GIF图片的第一帧。

如果调用的.asGif()方法,则.load()方法中的参数指向的必须是一个GIF图片,如果是一张静态图片,则图片加载完成之后展示的只是图片占位符(如果没有设置图片占位符,则什么也不展示)。

//显示静态图片(若加载的是gif图那么就会显示第一帧的图片)
.asBitmap()
//显示动态图片(若加载的是静态图会加载失败)
.asGif()

2.指定占位图显示

//加载时显示的图片
.placeholder(R.drawable.image_load)
//加载失败时显示的图片
.error(R.drawable.image_error)

3.设置缓存

//禁止内存缓存
.skipMemoryCache(true)
//禁止磁盘缓存(Glide默认缓存策略是:DiskCacheStrategy.RESULT)
.diskCacheStrategy(DiskCacheStrategy.NONE)
//缓存参数
//ALL:缓存源资源和转换后的资源(即缓存所有版本图像,默认行为)
//NONE:不作任何磁盘缓存,然而默认的它将仍然使用内存缓存
//SOURCE:仅缓存源资源(原来的全分辨率的图像)
//RESULT:缓存转换后的资源(最终的图像,即降低分辨率后的或者是转换后的)

4.设置加载尺寸

以下方法可以设置图片加载之后展示的宽度值和高度值,前提是目标ImageView的宽度和高度都设置为wrap_content

//加载图片为100*100像素的尺寸
.override(100, 100)

5.设置图片缩放

如果调用了.centerCrop()方法,则显示图片的时候短的一边填充容器,长的一边跟随缩放;如果调用了.fitCenter()方法,则显示图片的时候长的一边填充容器,短的一边跟随缩放;这两个方法可以都调用,如果都调用,则最终显示的效果是后调用的方法展示的效果。

//它是一个裁剪技术,即缩放图像让它填充到ImageView界限内并且裁剪额外的部分,ImageView可能会完全填充,但图像可能不会完整显示
.centerCrop()
//它是一个裁剪技术,即缩放图像让图像都测量出来等于或小于ImageView的边界范围,该图像将会完全显示,但可能不会填满整个ImageView
.fitCenter()

6.设置资源加载优先级

.priority(Priority.HIGH)

7.设置圆角或圆形图片

//圆角图片
.transform(new GlideRoundTransform(this))
//圆形图片
.transform(new GlideCircleTransform(this))

8.设置缩略图

设置以下方法后会先加载这张图片的sizeMultiplier倍的缩略图到目标ImageView中,然后再慢慢加载完整的图片,sizeMultiplier值的范围是0~1

//方法一:系数需在(0,1)之间,0.5f为原图的1/2,这样会先加载缩略图然后在加载全图
.thumbnail(0.5f)

//方法二:自定义资源图片为缩略图
DrawableRequestBuilder<Integer> thumbnailRequest = Glide
        .with(context)
        .load(R.drawable.image_example);
Glide.with(context)
        .load(url)
        .thumbnail(thumbnailRequest)
        .into(view);

9.设置动画

加载图片时所展示的动画,可以是Animator类型的属性动画,也可以是int类型的动画资源。这个动画只在第一次加载的时候会展示,以后都会从缓存中获取图片,因此也就不会展示动画了。

//设置加载动画
.animate(R.anim.alpha_in)
//淡入淡出动画,也是默认动画,动画默认的持续时间是300毫秒
.crossFade()
//移除所有动画
.dontAnimate()

10.加载本地视频(相当于一张缩略图)

//只能加载本地视频(显示的只是视频的第一帧图像,相当于一张缩略图,不能播放视频),网络视频无法加载
String files = Environment.getExternalStorageDirectory().getAbsolutePath() + "/glide.avi";
Glide.with(this).load(files).into(view);

11.设置加载内容

//示例一
Glide.with(context).load(url).into(new SimpleTarget<GlideDrawable>() {
    @Override
    public void onResourceReady(GlideDrawable resource, GlideAnimation<? super GlideDrawable> glideAnimation) {
        //图片加载完成
        view.setImageDrawable(resour
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值