Я создал собственный ImageView, и в его методе onDraw мне нужно нарисовать несколько растровых изображений на основе взаимодействия с пользователем, например касания. Все работает нормально, но медленно, когда я начинаю добавлять все больше и больше растровых изображений, приложение действительно замедляется.
Это то, что я делаю в своем onDraw пользовательского ImageView
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Log.e(TAG, "onDraw called");
for (int i=0; i < bitmapList.size(); i++){
drawBitmap(canvas, bitmapList.get(i));
}
}
Как вы можете видеть, я перерисовываю все растровые изображения в списке каждый раз, когда вызывается onDraw естественным образом, когда количество растровых изображений превышает, скажем, 4-5, операция становится очень дорогой и замедляет работу приложения.
Любое решение этой проблемы относительно того, как это можно оптимизировать?
Может ли вызов drawBitmap в другом потоке сделать операцию менее затратной?
Есть ли способ сохранить копию предыдущего холста, а затем просто восстановить его в onDraw, а не снова рисовать все растровые изображения?
По сути, вопрос заключается в обновлении представления с большим количеством динамических изображений и его оптимизации.