J'ai récemment mis à jour mon application pour utiliser Glide 4, pour être précis, Glide 4.2.0. gradle:
compile 'com.github.bumptech.glide:glide:4.2.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.2.0'
compile ('com.github.bumptech.glide:okhttp3-integration:4.2.0'){
exclude group: 'glide-parent'
}
en manifeste:
<meta-data
Android:name="com.xxx.MyGlideModule"
Android:value="GlideModule"/>
Classe GlideModule:
@GlideModule
public class MyGlideModule extends AppGlideModule {
@Override
public void registerComponents(Context context, Glide glide, Registry registry) {
OkHttpClient client = new OkHttpClient.Builder()
.readTimeout(30, TimeUnit.SECONDS)
.writeTimeout(30, TimeUnit.SECONDS)
.connectTimeout(30, TimeUnit.SECONDS)
.build();
OkHttpUrlLoader.Factory factory = new OkHttpUrlLoader.Factory(client);
glide.getRegistry().replace(GlideUrl.class, InputStream.class, factory);
}
}
comment j'utilise glisse à l'intérieur d'un adaptateur:
RequestOptions myOptions = new RequestOptions()
.placeholder(R.drawable.ic_placeholder)
.diskCacheStrategy(DiskCacheStrategy.NONE)
.dontAnimate()
.skipMemoryCache(true)
;
Glide.with(mContext)
.load(Imageid[position])
.apply(myOptions)
.into(imageView);
avec ces codes, quand je l'exécute, j'ai une erreur:
Java.lang.RuntimeException: Expected instanceof GlideModule, but found: [my app package].MyGlideModule@d1c2328
at com.bumptech.glide.module.ManifestParser.parseModule(ManifestParser.Java:81)
at com.bumptech.glide.module.ManifestParser.parse(ManifestParser.Java:43)
at com.bumptech.glide.Glide.initializeGlide(Glide.Java:193)
at com.bumptech.glide.Glide.checkAndInitializeGlide(Glide.Java:172)
at com.bumptech.glide.Glide.get(Glide.Java:156)
at com.bumptech.glide.Glide.getRetriever(Glide.Java:540)
at com.bumptech.glide.Glide.with(Glide.Java:566)
at [adapter line where I implement Glide]
comment utiliser MyGlideModule?
Glide 4.0 n'a pas besoin avoir déclaré "GlideModule" dans AndroidManifest.xml. Il vous suffit de suivre les étapes suivantes:
applyOptions
dans la classe YourGlideModule.GlideApp
.GlideApp.with(this).load(imgUrl).into(glide_test_iv1)
Si GlideApp
ne peut pas être généré alors -
Assurez-vous que vous avez build.gradle
dépendance de annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'
Assurez-vous que votre UnsafeOkHttpGlideModule
s'étend AppGlideModule
et également dans meta-data
les Android:value=""
devrait être Android:value="AppGlideModule"