[英]Glide sometimes show half image
我在应用程序中使用滑行来显示图像。 图像来自Amazon s3,并在图像视图中加载。 但有时滑行只是加载图像的一部分。 我正在使用其缓存策略。 当我将缓存设置为false时,每次都会加载图像。 这将使用户花费大量数据。 所以我认为那不是一个好的选择。 下面是我的代码和问题图像。
滑行代码:
Glide.with(context).load(posts.get(position).getFile()).placeholder(R.drawable.qurbani_background_6).error(R.drawable.error_image)
.fitCenter().listener(new RequestListener<File, GlideDrawable>() {
@Override
public boolean onException(Exception e, File model, Target<GlideDrawable> target, boolean isFirstResource) {
holder.progressBar.setVisibility(View.GONE);
//Toast.makeText(context , e.toString() , Toast.LENGTH_LONG).show();
//HomeActivity h = new HomeActivity();
//h.galleryTask();
return false;
}
@Override
public boolean onResourceReady(GlideDrawable resource, File model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
holder.progressBar.setVisibility(View.GONE);
return false;
}
}).into(holder.postImage);
以及亚马逊s3下载监听器代码:
public void transferObserverListener(final TransferObserver transferObserver)
{
transferObserver.setTransferListener(new TransferListener(){
@Override
public void onStateChanged(int id, TransferState state)
{
Log.e("statechange", state+"");
if(state.toString() == "COMPLETED")
{
adapter.notifyDataSetChanged();
}
}
@Override
public void onProgressChanged(int id, long bytesCurrent, long bytesTotal)
{
int percentage = 0;
if(bytesTotal != 0)
{
percentage = (int) (bytesCurrent / bytesTotal * 100);
}
Log.e("percentage",percentage +"");
}
@Override
public void onError(int id, Exception ex)
{
p.dismiss();
Log.e("error",ex.toString());
}
});
}
我正在使用回收站视图。 图片应以全视角加载。请告诉我我做错了什么。
我使用了com.github.bumptech.glide:glide:4.3.1
try {
RequestOptions requestOption =
new RequestOptions().placeholder(R.drawable.box).
error(R.drawable.box)
.diskCacheStrategy(DiskCacheStrategy.ALL);
Glide.with(context).load(assetComponentModel.getUrl())
.apply(requestOption)
.transition(DrawableTransitionOptions.withCrossFade())
.into(new SimpleTarget<Drawable>() {
@Override
public void onResourceReady(Drawable resource, Transition<? super Drawable> transition) {
mHolder.assets_image.setImageDrawable(resource);
}
@Override
public void onLoadCleared(@Nullable Drawable placeholder) {
mHolder.assets_image.setImageDrawable(placeholder);
}
@Override
public void onLoadFailed(@Nullable Drawable errorDrawable) {
mHolder.assets_image.setImageDrawable(errorDrawable);
}
@Override
public void onLoadStarted(@Nullable Drawable placeholder) {
mHolder.assets_image.setImageDrawable(placeholder);
}
});
}
} catch (Exception e) {
e.printStackTrace();
}
并使用了rclOfferListView.setItemViewCacheSize(list.size());
在片段中使用销毁代码
@Override
public void onDestroy() {
try {
if (rclOfferListView != null)
rclOfferListView.getRecycledViewPool().clear();
} catch (Exception e) {
e.getMessage();
}
super.onDestroy();
}
结果:图像仅显示一次。 没有任何一半的图像。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.