滑翔图像加载图像比它应该更大

时间:2019-02-01 12:22:55

标签: imageview out-of-memory android-glide

使用版本4.8.0,我遇到了我见过的最奇怪的错误之一。

我正在使用宽度为1080像素,高度为1940像素的OnePlus 3,尽管这在每部手机中都会发生。

通话:

    RequestManager glide = Glide.with(ContextHelper.Companion.castActivityFromContext(getContext()));
    glide
            .load(imageUrl)
            .error(glide.load(element.getFullImageUrl()))
            .listener(new RequestListener<Drawable>() {
                @Override
                public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
                    return false;
                }

                @Override
                public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
                    return false;
                }
            })
            .into(new CustomNotFlickeringViewCustomTarget(imageBanner));

(监听器用于调试)

CustomNotFlickeringViewCustomTarget在哪里:

open class CustomNotFlickeringViewCustomTarget(private val imageView: ImageView) : CustomViewTarget<ImageView, Drawable>(imageView) {
    override fun onLoadFailed(errorDrawable: Drawable?) {}

    override fun onResourceCleared(placeholder: Drawable?) {
        imageView.setImageDrawable(placeholder)
    }

    override fun onResourceReady(resource: Drawable, transition: Transition<in Drawable>?) {
        imageView.setImageDrawable(resource)
    }
}

当我尝试加载 1440w x 2160h 的图像时,它将返回以下resource

enter image description here

这是可以理解的。 1196的宽度略大于1080,但加载平稳。

现在,当我尝试加载 1440w x 298h 时,这就是我得到的资源。具体一个8669宽度

enter image description here

很明显,我的图片有width = MATCH_PARENTheight = WRAP_CONTENT。我不指定高度,因为它的变量。

这是导致到内存中的问题。

为什么从远程(从远程,从缓存)加载的图像比原始大小大?

0 个答案:

没有答案