2017-08-03 139 views
19

我想使用Glide Android库下载图像并显示在ImageViewGlide-4.0.0缺少占位符,错误,GlideApp

在以前的版本中,我们使用:

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

但是我看到的滑翔文档:

it says use GlideApp.with() instead Glide.with()

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

我使用

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

我在哪里做错了吗? 与参考here

如何GlideApp.with()已被使用?

该API在与AppGlideModule相同的包中生成,默认情况下被命名为GlideApp。应用程序可以通过启动所有负载通过API使用GlideApp.with(),而不是Glide.with()

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

的可能的复制[在滑翔占位符/错误/后退V4](https://stackoverflow.com/questions/45187661/placeholder-error-fallback-in-glide-v4) –

+2

你有想法左右GlideApp?如何使用和何时使用?..如果不是请upvote –

+0

你缺少第2步检查此:http://bumptech.github.io/glide/doc/generatedapi.html –

回答

41

试试这个使用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); 

编辑

if.setDefaultRequestOptions(requestOptions)method is not work than use.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); 
+0

我可以知道投票的理由吗? –

+0

谁投下了......不知道..如何检查?顺便说一句,它再次0由我upvoting .. :) –

+0

,我也不知道@RiteshBhavsar它在我的设备中工作与新的Glide库,你可以检查它 –

5

如果你想使用GlideApp必须添加到dependencies注解处理器一样的截图

how to add GlideApp to your project

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

@GlideModule 
public final class MyAppGlideModule extends AppGlideModule {} 

不要忘了@GlideModule注解。 然后你需要建立项目。并且GlideApp会自动生成。 希望这仍然有帮助。

+0

同步gradle后它不工作。但我们需要重建才能使其工作。 –

+0

它的工作..谢谢。 –

11

如果使用脚垫包依赖性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); 

Note: As in doc

Round Pictures: CircleImageView/CircularImageView/RoundedImageView are known to have issues with TransitionDrawable (.crossFade() with .thumbnail() or .placeholder()) and animated GIFs, use a BitmapTransformation (.circleCrop() will be available in v4) or .dontAnimate() to fix the issue.

最新版本,compile com.github.bumptech.glide:glide:4.1.1不是使用下面的代码

Glide.with(this) 
    .load(url) 
    .apply(new RequestOptions() 
       .placeholder(R.mipmap.ic_loading_image) 
       .centerCrop() 
       .dontAnimate() 
       .dontTransform()) 
    .into(imageView); 

See Latest version of glide, Bug fixes, Features

1

依赖

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

添加适当注释AppGlideModule实施

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


@GlideModule 
public final class MyAppGlideModule extends AppGlideModule{} 

另外,如果你已经使用了千斤顶的选择,以避免以下类似的错误,你需要使用Android 3.0.0工作室预览。

Error:Execution failed for task ':app:transformJackWithJackForDebug'. com.android.jack.ir.JNodeInternalError: java.lang.Exception: java.lang.AssertionError: No yet implemented