90 votes

Glide-4.0.0 Espace réservé manquant, erreur, GlideApp et ne résout pas son espace réservé de méthode, erreur

Je veux utiliser le Glisser Android bibliothèque de télécharger une image et l'afficher en ImageView.

Dans la version précédente, nous avons utilisé:

Glide.with(mContext).load(imgUrl)
                .thumbnail(0.5f)
                .placeholder(R.drawable.PLACEHOLDER_IMAGE_NAME)
                .error(R.drawable.ERROR_IMAGE_NAME)
                .crossFade()
                .diskCacheStrategy(DiskCacheStrategy.ALL)
                .into(imageView);

Mais je l'ai vu Glisser la documentation:

il dit d'utiliser GlideApp.with() plutôt Glide.with()

Mon problème est un manque d'espace réservé, erreur, GlideApp, et d'autres options.

Je suis à l'aide de

 compile 'com.github.bumptech.glide:glide:4.0.0'

Où suis-je fais de mal? Avec référence à ici.

Comment en est - GlideApp.with() a été utilisé?

L'API est généré dans le même package que l' AppGlideModule et est nommé d' GlideApp par défaut. Les Applications peuvent utiliser l'API en commençant par toutes les charges avec GlideApp.with() au lieu de Glide.with():

GlideApp.with(fragment)
   .load(myUrl)
   .placeholder(placeholder)
   .fitCenter()
   .into(imageView);

231voto

Nilesh Rathod Points 34836

Essayez d'utiliser RequestOptions:

RequestOptions requestOptions = new RequestOptions();
requestOptions.placeholder(R.drawable.ic_placeholder);
requestOptions.error(R.drawable.ic_error);

Glide.with(context)
     .setDefaultRequestOptions(requestOptions)
     .load(url).into(holder.imageView);

MODIFIER

Si .setDefaultRequestOptions(requestOptions) ne fonctionne pas, utilisez .apply(requestOptions):

Glide.with(MainActivity.this)
            .load(url)
            .apply(requestOptions)
            .into(imageview);
 // or this
 Glide.with(MainActivity.this)
            .load(url)
            .apply(new RequestOptions().placeholder(R.drawable.booked_circle).error(R.drawable.booked_circle))
            .into(imageview);

 // or this
 Glide.with(MainActivity.this)
            .load(url)
            .apply(RequestOptions.placeholderOf(R.drawable.booked_circle).error(R.drawable.))
            .into(imageview);

EDIT 2 Bonus

Voici quelques autres changements Glide-4

34voto

ND1010_ Points 2041

Si vous utilisez Glide dépendances des paquets, compile 'com.github.bumptech.glide:glide:3.7.0', puis utiliser devrait être d'utiliser le code ci-dessous:

GlideApp
    .with(your context)
    .load(url)
    .centerCrop()
    .placeholder(R.drawable.loading_image)
    .error(R.drawable.error_image)
    .into(myImageView);

Remarque: Comme dans la documentation,

Tour Photos: CircleImageView/CircularImageView/RoundedImageView sont connu pour avoir des problèmes avec TransitionDrawable (.fondu enchaîné() avec .vignette() ou .espace réservé()) et GIFs animés, utiliser un BitmapTransformation (.circleCrop() sera disponible en v4) ou .dontAnimate() pour résoudre le problème.

La dernière version mise à jour compile com.github.bumptech.glide:glide:4.1.1 puis utiliser devrait être d'utiliser le code ci-dessous:

RequestOptions options = new RequestOptions()
                    .centerCrop()
                    .placeholder(R.drawable.default_avatar)
                    .error(R.drawable.default_avatar)
                    .diskCacheStrategy(DiskCacheStrategy.ALL)
                    .priority(Priority.HIGH)
                    .dontAnimate()
                    .dontTransform();

Glide.with(this)
     .load(url)
     .apply(options)
     .into(imageView);

Voir la dernière version de glisse, de corrections de bugs et des fonctionnalités.

11voto

Vlad Pylyp Points 154

Si vous souhaitez utiliser GlideApp vous devez ajouter à l' dependencies processeur d'annotation comme sur la capture d'écran:

How to add GlideApp to your project

Ensuite, inclure une AppGlideModule mise en œuvre dans votre application:

@GlideModule
public final class MyAppGlideModule extends AppGlideModule {}

Ne pas oublier l' @GlideModuled'annotation. Ensuite, vous devez créer un projet. Et GlideApp sera automatiquement généré.

6voto

zhen She Points 86

Dépendances:

compile 'com.github.bumptech.glide:glide:4.1.1'
annotationProcessor 'com.github.bumptech.glide:compiler:4.1.1'

Ajouter une manière appropriée annoté AppGlideModule mise en œuvre:

import com.bumptech.glide.annotation.GlideModule;
import com.bumptech.glide.module.AppGlideModule;

@GlideModule
public final class MyAppGlideModule extends AppGlideModule{}

En outre, si vous avez utilisé la prise d'option, afin d'éviter les mêmes erreurs, vous devez utiliser la version d'Android Studio 3.0.0 aperçu.

Erreur:échec de l'Exécution de la tâche:app:transformJackWithJackForDebug'. com.android.jack.ir.JNodeInternalError: java.lang.Exception: java.lang.AssertionError: Pas encore mis en œuvre

6voto

Shubham Sejpal Points 1338

Nous n'avons pas besoin d'utiliser RequestOptions aussi.

L'API générée ajoute un GlideApp classe, qui donne accès à RequestBuilder et RequestOptions sous-classes. Le RequestOptions sous-classe contient toutes les méthodes dans RequestOptions et toutes les méthodes définies dans GlideExtensions. Le RequestBuilder sous-classe donne accès à toutes les méthodes dans le générés RequestOptions sous-classe sans avoir à utiliser s'appliquent:

À L'Aide De La Glisse :-

Une demande sans de l'API générée pourrait ressembler à ceci:

Glide.with(fragment)
    .load(url)
    .apply(centerCropTransform()
        .placeholder(R.drawable.placeholder)
        .error(R.drawable.error)
        .priority(Priority.HIGH))
    .into(imageView);

À L'Aide De GlideApp :-

Avec l'API générée, l' RequestOptions des appels peut être incorporé:

GlideApp.with(fragment)
    .load(url)
    .centerCrop()
    .placeholder(R.drawable.placeholder)
    .error(R.drawable.error)
    .priority(Priority.HIGH)
    .into(imageView);

Vous pouvez toujours utiliser l'généré RequestOptions sous-classe d'appliquer le même ensemble d'options pour de multiples charges, mais a généré RequestBuilder sous-classe peut être plus pratique dans la plupart des cas.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X