#android #android-layout
#Android #android-макет
Вопрос:
Я уже пару раз читал, что следует избегать масштабирования изображений во время рисования, потому что это требует большой производительности.
Теперь это означает, что когда у меня есть представление изображения, и я устанавливаю для него фиксированный размер (любой, кроме wrap_content) и устанавливаю тип масштаба на что-то вроде «scaleXY», изображение масштабируется во время его рисования, или это нормально с точки зрения производительности?
Спасибо!
Ответ №1:
Если вы используете программный рендеринг (вызывайте рендеринг на основе Canvas до версии 3.0; случаи, когда аппаратный рендеринг не используется с версии 3.0, потому что вы его не запрашивали или устройство его не поддерживает), то масштабирование растрового изображения во время рисования будет значительно медленнее, возможно, на порядок. По сути, вместо выполнения memcpy() коду рисования необходимо извлекать каждый пиксель и помещать его в пункт назначения.
Если вам действительно нужно масштабировать растровое изображение, вам следует рассмотреть возможность его масштабирования перед рисованием, а затем нарисовать предварительно масштабированную версию.
Комментарии:
1. Хорошо, но мне было интересно, как Android обрабатывает изображение после того, как вы сжимаете его в виде изображения (которое отличается от оригинала в соотношении 1: 1), будет ли оно масштабироваться в каждом кадре (когда я просматриваю галерею) или оно создаст масштабированный copz один раз и повторно его использует?
2. Если вы указываете ImageView нарисовать растровое изображение в масштабе, то да, оно будет масштабироваться в каждом кадре. Если вы хотите, чтобы оно масштабировалось один раз, вам нужно создать новое растровое изображение, которое применяет нужный вам масштаб.