Android Glide v4使用(基础篇)

Glide是一款快速高效的Android图像加载库。Glide支持提取,解码和显示视频静止图像,图像和动画GIF。Glide包含一个灵活的api,允许开发人员插入几乎任何网络堆栈。默认情况下,Glide的使用基于HttpUrlConnection,但也可以使用Google的Volley项目或Square的OkHttp库。

Glide主要关注的是尽可能平滑和快速地滚动任何类型的图像列表,但Glide对于几乎任何需要获取,调整大小和显示远程图像的情况也很有效。

Glide v4 requires Android Ice Cream Sandwich (API level 14) or higher.

 需要权限
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
//从DCIM或图片等本地文件夹加载图像
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
//用于ExternalPreferredCacheDiskCacheFactory在公共SD卡上存储Glide的缓存
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
混淆
-keep public class * implements com.bumptech.glide.module.GlideModule
-keep public class * extends com.bumptech.glide.module.AppGlideModule
-keep public enum com.bumptech.glide.load.ImageHeaderParser$** {
  **[] $VALUES;
  public *;
}

#if you're targeting any API level less than Android API 27, also include:
```pro
-dontwarn com.bumptech.glide.load.resource.bitmap.VideoDecoder

# for DexGuard only
-keepresourcexmlelements manifest/application/meta-data@value=GlideModule
    //gradle导入
    implementation 'com.github.bumptech.glide:glide:4.8.0'
    annotationProcessor 'com.github.bumptech.glide:compiler:4.8.0'

按上面的步骤集成,就可以使用Glide了。

/**
* Glide v4最基本使用
* placeholder()、error()和fallback()在Glide归类为Placeholders(占位符)
*/
RequestOptions ro1 = new RequestOptions()
        .placeholder(Drawable或resourceId)//请求正在进行时显示的Drawable
        .error(Drawable或resourceId)//请求出错时显示的Drawable
        .fallback(Drawable或resourceId);//请求的URL/模型为null时显示的Drawable(默认情况下,Glide会将null网址/模型视为错误)
Glide.with(this).load(url).apply(ro1).into(ImageView);

常问问题

占位符是否异步加载?

不是。占位符是从主线程上的Android资源加载的。我们通常希望占位符小,并且可以通过系统资源缓存轻松缓存。

转换是否适用于占位符?

不适用。转换仅应用于请求的资源,而不应用于任何占位符。

在应用程序中包含必须在运行时转换的资源是低效的。你几乎总是更好,包括一个与你需要的大小和形状完全相同的资源版本。例如,如果您正在加载循环图像,则可能需要在应用程序中包含循环占位符资源。或者,您也可以考虑使用自定义视图以与转换相同的方式剪切占位符。

在多个视图中使用相同的Drawable作为占位符是否可以?

通常,但并非总是如此。任何非有状态Drawable(如BitmapDrawable)通常都可以一次显示在多个视图中。但是,Stateful Drawable通常不能安全地同时在多个视图中显示,因为多个视图会立即改变状态。对于有状态Drawable,传入资源ID,或者用于newDrawable()将新副本传递给每个请求。

官方教程:http://bumptech.github.io/glide/doc/placeholders.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值