Что я хочу сделать, это загрузить изображение в TouchImageView (https://github.com/MikeOrtiz/TouchImageView) с глиссадой, используя размер по умолчанию (размер вида), а затем при увеличении я хотел бы заменить растровое изображение с более высоким разрешением.
Мой подход:
lang-java
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
imageView.setOnTouchImageViewListener {
if (!zoomedIn && imageView.currentZoom == MAX_ZOOM) {
zoomedIn = true
loadImage(uri, Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL)
}
}
loadImage(uri)
}
private fun loadImage(uri: Uri, width: Int = 0, height: Int = 0) {
Glide.with(context)
.asBitmap()
.load(uri)
.let {
if (width == 0 && height == 0) {
it
} else {
it.override(width, height)
}
}
.centerInside()
.into(imageView)
}
Реализация заставляет ImageView отображать черный фон при загрузке изображения с высоким разрешением. Я предполагаю, что это потому, что Glide высвобождает ресурсы при каждой загрузке (я уверен, что нашелэто в документации).
Есть ли способ предотвратить это в этом конкретном сценарии?
Я не хочу использовать функцию миниатюр для вышеуказанной цели, поскольку она будет каждый раз загружать изображение с высоким разрешениемдля каждого изображения (я бы предпочел сделать это только в увеличенном масштабе, чтобы пользователь действительно извлек выгоду из дополнительных деталей изображения).
Может быть, есть совершенно другой подход, которого я не вижу?