Glide4.7.1图片加载库使用姿势

前言

Glide,一个被google所推荐的图片加载库,作者是bumptech。这个库被广泛运用在google的开源项目中。经过多年的迭代,Glide已经成为了安卓开发者最喜爱的图片加载库之一。新版本的使用方式和以前的3.x.x在使用存在区别,以下是演示最新版本的Glide的使用,Glide新的版本也做了较多的优化和更多功能的实现。
官方地址 :https://github.com/bumptech/glide

开始使用

gradle配置
repositories {
  mavenCentral()
  google()
}

dependencies {
  implementation 'com.github.bumptech.glide:glide:4.7.1'
  annotationProcessor 'com.github.bumptech.glide:compiler:4.7.1'
}

下载Jar包方式

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

Glide默认会导入Android的support-v4包。4.71版本默认导入的是v4包的27版本。如果你的项目中有v4包的别的版本,就会引起冲突发生错误如:java.lang.NoSuchMethodError,可这样处理:

    implementation ('com.github.bumptech.glide:glide:4.7.1'){
        exclude group: "com.android.support"
    }
添加混肴
-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 *;
}

# for DexGuard only
-keepresourcexmlelements manifest/application/meta-data@value=GlideModule
添加权限
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
开始使用
  • 通过 RequestOptions 类和 apply() 方法配置引入
 RequestOptions options = new RequestOptions()
                .placeholder(R.mipmap.ic_launcher)  //加载成功之前占位图
                .error(R.mipmap.ic_launcher)    //加载错误之后的错误图
                .override(400,400)  //指定图片的尺寸
                //指定图片的缩放类型为fitCenter (等比例缩放图片,宽或者是高等于ImageView的宽或者是高。)
                .fitCenter()
                //指定图片的缩放类型为centerCrop (等比例缩放图片,直到图片的狂高都大于等于ImageView的宽度,然后截取中间的显示。)
                .centerCrop()
                .circleCrop()//指定图片的缩放类型为centerCrop (圆形)
                .skipMemoryCache(true)  //跳过内存缓存
                .diskCacheStrategy(DiskCacheStrategy.ALL)   //缓存所有版本的图像
                .diskCacheStrategy(DiskCacheStrategy.NONE)  //跳过磁盘缓存
                .diskCacheStrategy(DiskCacheStrategy.DATA)  //只缓存原来分辨率的图片
                .diskCacheStrategy(DiskCacheStrategy.RESOURCE)  //只缓存最终的图片
                ;
        Glide.with(this)
                .load(url)
                .apply(options)
                .into(imageView);
  • 为了实现自己的模型加载程序,通过HTTP或HTTPS下载图像,可以扩展BaseGlideUrlLoader:
public interface MyDataModel {
    public String buildUrl(int width, int height);
} 

public class MyUrlLoader extends BaseGlideUrlLoader<MyDataModel> {
    @Override
    protected String getUrl(MyDataModel model, int width, int height) {
        // Construct the url for the correct size here.
        return model.buildUrl(width, height);
    }
}

然后,可以使用自定义模型加载程序加载图像,其他一切都自动工作:

Glide.with(yourFragment)
    .using(new MyUrlLoader())
    .load(yourModel)
    .into(yourView);

如果你想避免调用。每次使用(new MyurLoad()),你也可以实现一个定制的ModelLoader.Factory,并在GaleStudioLoad中注册它。

public class MyGlideModule implements GlideModule {
    ...
    @Override
    public void registerComponents(Context context, Glide glide) {
        glide.register(MyDataModel.class, InputStream.class, 
            new MyUrlLoader.Factory());
    }
}

注册ModelLoaderFactory之后,您可以跳过.using()调用,只需调用:

Glide.with(yourFragment)
    .load(yourModel)
    .into(yourView);
阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页