无法使用 Glide 加载图像
Unable to load image using Glide
我在我的 android 项目中使用 Glide v4
。这是我使用 listener
实现的。但这并没有给我任何回调:
Glide.with(HomeScreenActivity.this).load(url).listener(new RequestListener<Drawable>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
e.printStackTrace();
videoCard_view.setVisibility(View.GONE);
video_linearlayout.setVisibility(View.GONE);
fetchSpecificQuoteContentType1(HomeScreenActivity.this, treatmentclient, "motivationalQuotes", strGender, motivations, quote_TextView, quote_ImageView, quotes_cardView);
return false;
}
@Override
public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
Log.e(TAG,"Video Image loaded");
videoCard_view.setVisibility(View.VISIBLE);
video_linearlayout.setVisibility(View.VISIBLE);
fetchSpecificQuoteContentType1(HomeScreenActivity.this, treatmentclient, "motivationalQuotes", strGender, motivations, quote_TextView, quote_ImageView, quotes_cardView);
return true;
}
}).apply(options.centerCrop()).into(video_ImageView);
但是当我使用下面的样式时,它工作得很好。为什么会这样?:
Glide.with(HomeScreenActivity.this).load(url).apply(options.centerCrop()).into(new SimpleTarget<Drawable>() {
@Override
public void onResourceReady(@NonNull Drawable resource, @Nullable Transition<? super Drawable> transition) {
Log.e(TAG,"video image loaded");
video_ImageView.setImageDrawable(resource);
}
});
Return false
来自 onResourceReady
方法:
Glide.with(HomeScreenActivity.this).load(url).listener(new RequestListener<Drawable>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
e.printStackTrace();
videoCard_view.setVisibility(View.GONE);
video_linearlayout.setVisibility(View.GONE);
fetchSpecificQuoteContentType1(HomeScreenActivity.this, treatmentclient, "motivationalQuotes", strGender, motivations, quote_TextView, quote_ImageView, quotes_cardView);
return false;
}
@Override
public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
Log.e(TAG,"Video Image loaded");
videoCard_view.setVisibility(View.VISIBLE);
video_linearlayout.setVisibility(View.VISIBLE);
fetchSpecificQuoteContentType1(HomeScreenActivity.this, treatmentclient, "motivationalQuotes", strGender, motivations, quote_TextView, quote_ImageView, quotes_cardView);
return false;
}
}).apply(options.centerCrop()).into(video_ImageView);
如果video_ImageView
或其父级是Invisible
或Gone
,onLoadFailed
和onResourceReady
回调将不会被调用,因为Glide
在加载图像之前需要一个尺寸,不可见视图没有有效尺寸。或者,您可以使用 SimpleTarget
而不是 ImageView
:
Glide.with(HomeScreenActivity.this).load(url).listener(new RequestListener<Drawable>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
e.printStackTrace();
videoCard_view.setVisibility(View.GONE);
video_linearlayout.setVisibility(View.GONE);
fetchSpecificQuoteContentType1(HomeScreenActivity.this, treatmentclient, "motivationalQuotes", strGender, motivations, quote_TextView, quote_ImageView, quotes_cardView);
return false;
}
@Override
public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
Log.e(TAG,"Video Image loaded");
videoCard_view.setVisibility(View.VISIBLE);
video_linearlayout.setVisibility(View.VISIBLE);
fetchSpecificQuoteContentType1(HomeScreenActivity.this, treatmentclient, "motivationalQuotes", strGender, motivations, quote_TextView, quote_ImageView, quotes_cardView);
return false;
}
}).apply(options.centerCrop())
.into(new SimpleTarget<Drawable>() {
@Override
public void onResourceReady(@NonNull Drawable resource,
@Nullable Transition<? super Drawable> transition) {
video_ImageView.setImageDrawable(resource);
}
});
我在我的 android 项目中使用 Glide v4
。这是我使用 listener
实现的。但这并没有给我任何回调:
Glide.with(HomeScreenActivity.this).load(url).listener(new RequestListener<Drawable>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
e.printStackTrace();
videoCard_view.setVisibility(View.GONE);
video_linearlayout.setVisibility(View.GONE);
fetchSpecificQuoteContentType1(HomeScreenActivity.this, treatmentclient, "motivationalQuotes", strGender, motivations, quote_TextView, quote_ImageView, quotes_cardView);
return false;
}
@Override
public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
Log.e(TAG,"Video Image loaded");
videoCard_view.setVisibility(View.VISIBLE);
video_linearlayout.setVisibility(View.VISIBLE);
fetchSpecificQuoteContentType1(HomeScreenActivity.this, treatmentclient, "motivationalQuotes", strGender, motivations, quote_TextView, quote_ImageView, quotes_cardView);
return true;
}
}).apply(options.centerCrop()).into(video_ImageView);
但是当我使用下面的样式时,它工作得很好。为什么会这样?:
Glide.with(HomeScreenActivity.this).load(url).apply(options.centerCrop()).into(new SimpleTarget<Drawable>() {
@Override
public void onResourceReady(@NonNull Drawable resource, @Nullable Transition<? super Drawable> transition) {
Log.e(TAG,"video image loaded");
video_ImageView.setImageDrawable(resource);
}
});
Return false
来自 onResourceReady
方法:
Glide.with(HomeScreenActivity.this).load(url).listener(new RequestListener<Drawable>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
e.printStackTrace();
videoCard_view.setVisibility(View.GONE);
video_linearlayout.setVisibility(View.GONE);
fetchSpecificQuoteContentType1(HomeScreenActivity.this, treatmentclient, "motivationalQuotes", strGender, motivations, quote_TextView, quote_ImageView, quotes_cardView);
return false;
}
@Override
public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
Log.e(TAG,"Video Image loaded");
videoCard_view.setVisibility(View.VISIBLE);
video_linearlayout.setVisibility(View.VISIBLE);
fetchSpecificQuoteContentType1(HomeScreenActivity.this, treatmentclient, "motivationalQuotes", strGender, motivations, quote_TextView, quote_ImageView, quotes_cardView);
return false;
}
}).apply(options.centerCrop()).into(video_ImageView);
如果video_ImageView
或其父级是Invisible
或Gone
,onLoadFailed
和onResourceReady
回调将不会被调用,因为Glide
在加载图像之前需要一个尺寸,不可见视图没有有效尺寸。或者,您可以使用 SimpleTarget
而不是 ImageView
:
Glide.with(HomeScreenActivity.this).load(url).listener(new RequestListener<Drawable>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
e.printStackTrace();
videoCard_view.setVisibility(View.GONE);
video_linearlayout.setVisibility(View.GONE);
fetchSpecificQuoteContentType1(HomeScreenActivity.this, treatmentclient, "motivationalQuotes", strGender, motivations, quote_TextView, quote_ImageView, quotes_cardView);
return false;
}
@Override
public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
Log.e(TAG,"Video Image loaded");
videoCard_view.setVisibility(View.VISIBLE);
video_linearlayout.setVisibility(View.VISIBLE);
fetchSpecificQuoteContentType1(HomeScreenActivity.this, treatmentclient, "motivationalQuotes", strGender, motivations, quote_TextView, quote_ImageView, quotes_cardView);
return false;
}
}).apply(options.centerCrop())
.into(new SimpleTarget<Drawable>() {
@Override
public void onResourceReady(@NonNull Drawable resource,
@Nullable Transition<? super Drawable> transition) {
video_ImageView.setImageDrawable(resource);
}
});