2017-10-09 3 views
2

私は最近、正確には、Glide 4.2.0を使用するように私のアプリを更新します。 のGradle:マニフェストでGlide4で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のような "(glide_test_iv1).into GlideApp.with(この).LOAD(imgUrl)は"
+0

おかげで、あなたの方法を動作します。彼らは彼らの文書にこれを加えるべきです。 readmeまたはmigratingセクションを参照してください。 – Dika

+0

作品。ありがとうございました。 – comm1x

関連する問題