Glide-4.0.0缺少占位符,错误,GlideApp并且无法解析其方法占位符,错误

Rit*_*sar 78 android android-layout android-glide

我想用ImageViewAndroid库下载图片并显示GlideApp.with().

在以前的版本我们使用:

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);
Run Code Online (Sandbox Code Playgroud)

但我看过Glide文档:

它说用Glide.with()而不是GlideApp.with()

我担心的是缺少占位符,错误,GlideApp和其他选项.

我在用

 compile 'com.github.bumptech.glide:glide:4.0.0'
Run Code Online (Sandbox Code Playgroud)

我哪里做错了?这里参考

怎么AppGlideModule用过?

API GlideAppGlideApp.with()默认情况下命名的包在同一个包中生成.应用程序可以通过启动所有加载来使用API​​,Glide.with()而不是ImageView:

GlideApp.with(fragment)
   .load(myUrl)
   .placeholder(placeholder)
   .fitCenter()
   .into(imageView);
Run Code Online (Sandbox Code Playgroud)

Nil*_*hod 198

尝试使用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);
Run Code Online (Sandbox Code Playgroud)

编辑

如果.setDefaultRequestOptions(requestOptions)不起作用,请使用.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);
Run Code Online (Sandbox Code Playgroud)

编辑2奖金

以下是Glide-4的其他一些变化

  • 谁放弃了投票......不知道..怎么检查?顺便说一下它的0再次由我提升.. :) (2认同)

ND1*_*10_ 28

如果你使用Glide包依赖 compile 'com.github.bumptech.glide:glide:3.7.0',那么应该使用下面的代码

GlideApp
    .with(your context)
    .load(url)
    .centerCrop()
    .placeholder(R.drawable.loading_image)
    .error(R.drawable.error_image)
    .into(myImageView);
Run Code Online (Sandbox Code Playgroud)

注意:如在doc中

圆形图片:已知CircleImageView/CircularImageView/RoundedImageView与TransitionDrawable(.crossFade()与.thumbnail()或.placeholder())和动画GIF有关,使用BitmapTransformation(.circleCrop()将在v4中提供)或.dontAnimate()来解决问题.

使用的最新更新版本compile com.github.bumptech.glide:glide:4.1.1应使用以下代码

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);
Run Code Online (Sandbox Code Playgroud)

查看最新版本的滑翔,错误修复,功能


小智 10

如果您想使用GlideApp,您必须添加到dependencies屏幕截图中的注释处理器

如何将GlideApp添加到您的项目中

然后在您的应用程序中包含AppGlideModule实现:

@GlideModule
public final class MyAppGlideModule extends AppGlideModule {}
Run Code Online (Sandbox Code Playgroud)

不要忘记@GlideModule注释.然后你需要Build项目.并且GlideApp会自动生成.希望这仍然有用.


小智 6

依赖

compile 'com.github.bumptech.glide:glide:4.1.1'
annotationProcessor 'com.github.bumptech.glide:compiler:4.1.1'
Run Code Online (Sandbox Code Playgroud)

添加适当注释的AppGlideModule实现

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

@GlideModule
public final class MyAppGlideModule extends AppGlideModule{}
Run Code Online (Sandbox Code Playgroud)

此外,如果您使用过jack选项,为了避免以下类似错误,您需要使用Android Studio 3.0.0预览.

错误:任务':app:transformJackWithJackForDebug'的执行失败.com.android.jack.ir.JNodeInternalError:java.lang.Exception:java.lang.AssertionError:尚未实现


Shu*_*pal 5

我们也不需要使用RequestOptions。

生成的API添加了一个GlideApp类,该类提供对RequestBuilder和RequestOptions子类的访问。RequestOptions子类包含RequestOptions中的所有方法以及GlideExtensions中定义的任何方法。RequestBuilder子类提供对生成的RequestOptions子类中所有方法的访问,而不必使用apply:

使用Glide:-

没有生成的API的请求可能如下所示:

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

使用GlideApp:-

使用生成的API,RequestOptions可以内联调用:

GlideApp.with(fragment)
    .load(url)
    .centerCrop()
    .placeholder(R.drawable.placeholder)
    .error(R.drawable.error)
    .priority(Priority.HIGH)
    .into(imageView);
Run Code Online (Sandbox Code Playgroud)

您仍然可以使用生成的RequestOptions子类将相同的选项集应用于多个负载,但是生成的RequestBuilder子类在大多数情况下可能更方便。