【问题标题】:UI freezing while showing image into ImageView将图像显示到 ImageView 时 UI 冻结
【发布时间】:2017-05-24 17:54:28
【问题描述】:

在我的RecyclerView 行内,我有一个ImageView,我想在同一个活动中预览这个ImageView 的图像(全屏预览)

为此我正在这样做:

public void showImageZoomable(String imageURL) {

imageViewZoomable.setVisibility(View.VISIBLE);

DisplayImageOptions options = new DisplayImageOptions.Builder().cacheOnDisk(true).build();

imageLoader.loadImage(imageURL , options, new ImageLoadingListener() {
    @Override
    public void onLoadingStarted(String imageUri, View view) {

    }

    @Override
    public void onLoadingFailed(String imageUri, View view, FailReason failReason) {

    }

    @Override
    public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {

        imageViewZoomable.setImage(ImageSource.bitmap(loadedImage));
    }

    @Override
    public void onLoadingCancelled(String imageUri, View view) {

    }
});
toolBar.setVisibility(View.GONE);
getActivity().findViewById(R.id.tabs).setVisibility(View.GONE);

}

当用户点击ImageView(位于Recyclerview 的行)时触发上述函数并获取该图像的url(图像已缓存) 并使用imageLoader库将其分配给imageViewZoomable

它工作正常,但整个过程有点慢和滞后

知道如何改进它吗?或者我这样做的方式效率不高,那么请给我一个更好的选择

【问题讨论】:

  • 1.您应该只声​​明一次 ImageLoader 和 DisplayImageOptions 实例。 2.使用loadImage并在Recyclerview的行(viewHolder适配器)上声明DisplayImageOptions使RecyclerView运行缓慢。如果你不能使用imageLoader的displayImage,你可以试试PicassoGlide等其他库

标签: android android-recyclerview android-imageview universal-image-loader


【解决方案1】:

如果您的自定义类返回 imageView 对象,例如 imageViewZoomable.getImage() 作为 imageView,您可以使用下面的代码,这样您就可以像下面这样传递它。

imageLoader.displayImage(imageURL, imageViewZoomable.getImage());

【讨论】:

    【解决方案2】:

    当用户点击recyclerview item中的图片时,你可以使用全屏对话框(扩展DialogFragment)来显示全屏图片

    【讨论】:

    • 图像在 recyclerView 的项目上,我想在父母的布局上显示它,我们可以这样做吗?怎么样?
    • 在父布局文件中创建图像视图并在显示图像时使其可见并在您想要关闭图像时设置可见性消失。但这不是一个好方法。如果您使用全屏对话框,它会覆盖在 recyclerview 上方,当用户单击返回时,它会关闭。
    【解决方案3】:

    尝试使用

      imageLoader.displayImage(imageURL, imageViewZoomable);
    

    而不是

      imageLoader.loadImage(...);
    

    【讨论】:

    • 感谢回复,我不能使用displayImage ,因为imageViewZoomable 不是imageView(扩展的imageView 类),displayImage 需要一个imageView 作为参数
    猜你喜欢
    • 2018-11-23
    • 1970-01-01
    • 2012-01-22
    • 1970-01-01
    • 1970-01-01
    • 2015-09-22
    • 2013-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多