如何在 Glide 4 上使用 GlideModule?
how to use GlideModule on Glide 4?
我最近更新了我的应用程序以使用 Glide 4,准确地说是 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'
}
在清单中:
<meta-data
android:name="com.xxx.MyGlideModule"
android:value="GlideModule"/>
GlideModule class:
@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);
}
}
我如何在适配器中使用 glide:
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);
使用这些代码,当我 运行 它时出现错误:
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]
如何使用 MyGlideModule?
Glide 4.0 不用在AndroidManifest.xml声明了"GlideModule"。您只需执行以下步骤:
- YourGlideModule extends AppGlideModule,你可以重写 YourGlideModule[=24= 中的函数
applyOptions
] class.
- 您应该在 "android studio -> build -> make project" 中创建项目,它将生成
GlideApp
class。
- 使用
GlideApp.with(this).load(imgUrl).into(glide_test_iv1)
等GlideApp
如果无法生成 GlideApp
那么 -
确保你有 build.gradle
依赖 annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'
确保您的 UnsafeOkHttpGlideModule
扩展 AppGlideModule
并且在 meta-data
中 android:value=""
应该是 android:value="AppGlideModule"
加入@kevin 和@brady lee 的回答。
对于 Kotlin 用户
implementation ('com.github.bumptech.glide:okhttp3-integration:4.4.0'){
exclude group: 'glide-parent'
}
kapt 'com.github.bumptech.glide:compiler:4.10.0'
我最近更新了我的应用程序以使用 Glide 4,准确地说是 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'
}
在清单中:
<meta-data
android:name="com.xxx.MyGlideModule"
android:value="GlideModule"/>
GlideModule class:
@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);
}
}
我如何在适配器中使用 glide:
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);
使用这些代码,当我 运行 它时出现错误:
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]
如何使用 MyGlideModule?
Glide 4.0 不用在AndroidManifest.xml声明了"GlideModule"。您只需执行以下步骤:
- YourGlideModule extends AppGlideModule,你可以重写 YourGlideModule[=24= 中的函数
applyOptions
] class. - 您应该在 "android studio -> build -> make project" 中创建项目,它将生成
GlideApp
class。 - 使用
GlideApp.with(this).load(imgUrl).into(glide_test_iv1)
等GlideApp
如果无法生成 GlideApp
那么 -
确保你有 build.gradle
依赖 annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'
确保您的 UnsafeOkHttpGlideModule
扩展 AppGlideModule
并且在 meta-data
中 android:value=""
应该是 android:value="AppGlideModule"
加入@kevin 和@brady lee 的回答。 对于 Kotlin 用户
implementation ('com.github.bumptech.glide:okhttp3-integration:4.4.0'){
exclude group: 'glide-parent'
}
kapt 'com.github.bumptech.glide:compiler:4.10.0'