2017-10-09 180 views
2

我最近更新我的应用程序使用Glide 4,准确地说,Glide 4.2.0。 gradle这个:如何在Glide 4上使用GlideModule?

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类:

@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); 
    } 
} 

我如何使用滑行适配器内:

 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][email protected] 
    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?

回答

5

Glide 4.0不需要在AndroidMinifest.xml中声明“GlideModule”。您只需要执行以下步骤:

  1. YourGlideModule扩展了AppGlideModule,您可以在YourGlideModule类中覆盖函数applyOptions。
  2. 您应该在“android studio - > build - > make project”中制作项目,它会生成GlideApp类。
  3. 使用GlideApp如 “GlideApp.with(本).load(imgUrl的).into(glide_test_iv1)”
+0

谢谢,您的方法效果。他们应该将其添加到他们的文档。在自述或迁移部分。 – Dika

+0

作品。谢谢。 – comm1x