Скользить изображения загружая изображения намного больше, чем нужно - PullRequest
0 голосов
/ 01 февраля 2019

При использовании версии 4.8.0 я столкнулся с одной из самых странных ошибок, которые я когда-либо видел.

Я использую OnePlus 3 с шириной 1080 пикселей, высотой 1940 пикселей, хотя это происходитв каждом телефоне.

Вызов:

    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_PARENT и height = WRAP_CONTENT.Я не указываю высоту, потому что она переменная.

Это приводит к проблемам с памятью.

Почему изображение загружается (из удаленного источника, из кэша) больше, чем его первоначальный размер?

...