Glide基本使用

glide使用:
第一步:
添加依赖:

dependencies {
    compile 'com.github.bumptech.glide:glide:3.7.0'
}

第二步:添加代码混淆(可加可不加)

-keep public class * implements com.bumptech.glide.module.GlideModule
-keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** {
  **[] $VALUES;
  public *;
}
 
# for DexGuard only
-keepresourcexmlelements manifest/application/meta-data@value=GlideModule

第三步:
添加权限

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

第四步:
Glide的常用方式:

String url = "";//图片地址
Glide.with(this)
.load(url)
.asBitmap()
//.asGif()//和asBitmap()方法不能同时使用
.placeholder(R.drawable.loading)
.error(R.drawable.error)
.skipMemoryCache(false)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.override(100,100)
.into(iv);

下面具体讲解传入的参数的作用:

  • with方法的this,可以传入Activity,或者fragment,或者Application
    如果传入的是Activity,如果在Activity销毁的时候,如果图片还未加载出来,则会自动取消
    如果传入的是Fragment,则如果Fragment销毁时,如果图片还未加载完成,则会自动取消
    如果传入Application,则图片即使在Activity或者Fragment中,当Activity或者Fragment销毁时,图片如果未加载完成,则不会取消。
    Glide错误IllegalArgumentException You cannot start a load for a destroyed activity
    http://appblog.cn/2018/11/04/Glide%E9%94%99%E8%AF%AFIllegalArgumentException%20You%20cannot%20start%20a%20load%20for%20a%20destroyed%20activity/
    参考
    https://github.com/bumptech/glide/issues/803
    Glide加载图片时,报You cannot start a load for a destroyed activity的解决方案:
    @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1)
    public boolean isValidContextForGlide(final Context context) {
        if (context == null) {
            return false;
        }
        if (context instanceof Activity) {
            final Activity activity = (Activity) context;
            if (activity.isDestroyed() || activity.isFinishing()) {
                return false;
            }
        }
        return true;
    }
  • load方法的url:图片的地址

  • asGif()方法表示指定加载的图是动图(和asBitmap方法不能同时使用)
    如果图片url地址指向的是静图,则加载失败。

  • asBitmap()方法表示指定加载的图是静图(和asGif方法不能同时使用)
    如果图片url地址指向的是动图,则加载动图的第一帧。

  • placeholder()方法传入的图片的id或者drawable,表示的是占位图

  • error()方法传入图片的id,或者drawable,表示图片加载失败后显示的图片

  • skipMemoryCache()方法表示是否禁用内存缓存

  • diskCacheStrategy()方法,可以传入四个常量:
    DiskCacheStrategy.ALL 表示既缓存原图也缓存缩放图
    DiskCacheStrategy.NONE 表示不缓存
    DiskCacheStrategy.SOURCE 表示仅仅缓存原图
    DiskCacheStrategy.RESULT 表示仅仅缓存缩放图(默认选项)

  • override(100,100)方法传入指定图片的大小, 也就是说,Glide现在只会将图片加载成100*100像素的尺寸,
    而不会管你的ImageView的大小是多少了

  • into()方法中传入要显示的图片的控件

以上就是Glide一般使用到的方法。其中,如果skipMemoryCache(false)和diskCacheStrategy(DiskCacheStrategy.RESULT)这两个方法不进行显示调用,则默认是进行内存缓存和磁盘缓存的,并且磁盘缓存的是缩放图。

当然还有其他方法:

  • priority(Priority.NORMAL) 这个方法,可以指定加载的线程优先级
    优先级,Priority.IMMEDIATE,Priority.HIGH,Priority.NORMAL(default),Priority.LOW

  • crossFade()/crossFade(int duration) 加载时淡入淡出动画时间,也可以不传,version 3.6.1后默认开启300毫秒

  • dontAnimate():移除所有的动画

  • animate(): 指定加载动画

  • thumbnail(): 缩略图

//原图和缩略图都是同一个,但是缩略图显示的是原始的十分之一
//注意仔细观察左上角,有个很小的缩略图闪现出来后,就立刻显示转换后的尺寸
//传入0.1f,表示缩略图显示的是原图的十分之一
String url6 = "https://up.sc.enterdesk.com/edpic/cf/3e/84/cf3e8415383e065b0fe8938f73bedf70.jpg";
Glide.with(this)
       .load(url6)
       .error(R.drawable.msg_status_send_error)
       .skipMemoryCache(true)
       .diskCacheStrategy(DiskCacheStrategy.NONE)
       .thumbnail(0.1f)
       .into(iv);

//或者单独指定一个缩略图
String thumbnailUrl = "https://up.sc.enterdesk.com/edpic/c1/2a/ef/c12aef2b3ce6fbccc770a3524e8fe87f.jpg";
DrawableRequestBuilder requestBuilder = Glide.with(this).load(thumbnailUrl);
String url7 = "https://up.sc.enterdesk.com/edpic/cf/3e/84/cf3e8415383e065b0fe8938f73bedf70.jpg";
Glide.with(this)
       .load(url7)
       .error(R.drawable.msg_status_send_error)
       .skipMemoryCache(true)
       .diskCacheStrategy(DiskCacheStrategy.NONE)
       .thumbnail(requestBuilder)
       .into(iv);
  • fallback(Drawable drawable):设置model为空时显示的Drawable

  • using() :为单个的请求指定一个 model

  • Glide.get(this).clearDiskCache() 清理磁盘缓存,需要在子线程中执行

  • Glide.get(this).clearMemory() 清理内存缓存,可以直接在主线程执行

还有其他高级用法,后面在介绍。

参考:

Android图片加载框架最全解析(一),Glide的基本用法

【图片加载】Glide的使用以及遇到的一些坑

图片加载之Glide使用总结

android Glide简单使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值