繁体   English   中英

滑行有时会显示一半的图像

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM