LRUCache BitmapDrawable - PullRequest
       33

LRUCache BitmapDrawable

0 голосов
/ 04 июня 2018

Я использую LruCache для кэширования большого количества маленьких BitmapDrawables, используемых в моем приложении.Проблема в том, что размеры для разных мест, где я использую изображения, различаются.

Я устанавливаю границы при извлечении отрисовки из кэша, прежде чем установить ее в ImageView, чтобы иметь правильный размер.

Когда я устанавливаю границы, размеры рисования изменяются и в других местах.

Как обойти эту проблему, не используя drawable.getConstantState().newDrawable()?Создание нового объекта рисования из кэшированного объекта очень медленно при прокрутке списка.

Те же изображения используются в DynamicDrawableSpans, где я не могу установить границы для самого диапазона, только для самого объекта.

Будет ли целесообразно кэшировать одно и то же рисованное изображение для разных контекстов в отдельных кэшах?

1 Ответ

0 голосов
/ 04 июня 2018

Я получил его для правильной работы.

Я изменил тип LruCache с BitmapDrawable на Bitmap.Таким образом, кэш хранит только растровое изображение, а не границы для рисования.

Когда я хочу установить растровое изображение, я преобразую его в BitmapDrawable

Drawable d = new BitmapDrawable(getResources(), bitmap);

Затем я устанавливаюграницы для вновь созданного рисованного экземпляра

d.setBounds(0, 0, sizex, sizey);

Таким образом, каждый экземпляр растрового изображения является отдельным Drawable со своими собственными границами.

...