Я пытаюсь реализовать собственный ImageView в android, с помощью которого я могу перерабатывать Bitmap после его установки в поле зрения. Мы не можем переработать растровое изображение с помощью ImageView по умолчанию, предоставленного Android. У меня есть сценарий в моем приложении, который интенсивно использует память, и я пытаюсь максимально сэкономить память.
Может ли кто-нибудь подсказать мне, как реализовать собственный ImageView с указанной выше функцией?
@ GregorioPalamà Спасибо за предложение, но я не могу использовать какую-либо библиотеку из-за ограничения размера приложения. Мне нужно реализовать это в собственном коде.
тогда вам придется реализовать свой собственный кеш в памяти. Android SDK уже кое-что предоставляет: developer.android.com/topic/performance/graphics/cache-bitma p, это должно быть полезно для ваших нужд.
Вы действительно не сможете этого сделать. Итак, что происходит, когда ваше представление необходимо перерисовать по какой-либо причине? У него нет ссылки на Bitmap, поэтому, когда он пытается нарисовать, он либо вылетает, либо ничего не делает. Или нужно перезагрузить Bitmap в худшее время для производительности. Есть причина, по которой ImageView хранит ссылку.
@GabeSechan Я думаю об этом. Я буду спроектировать его таким образом, чтобы одно растровое изображение было разделено между несколькими ImageView. Итак, когда будет вызвана функция onDraw (), я гарантирую в своем коде, что она получит ссылку на растровое изображение.
Но если вы это делаете, вы можете просто использовать просмотр изображений и дать им всем один и тот же растровый объект.
зачем писать для этого собственный вид? Просто используйте Glide. Он использует кеш в памяти, прежде всего, другие механизмы кеширования. Проверьте эту ссылку: bumptech.github.io/glide/doc/caching.html