Подтвердить что ты не робот

Android Vector Assets: делают ли измерения dp только для "обертывания содержимого"?

Когда я создаю векторный чертеж, я могу установить его размер в dp. По умолчанию 24dp x 24dp.

  • Являются ли эти измерения важными с точки зрения производительности, если я использую вектор в другом размере, чем 24dp x 24dp в моем приложении? Также в отношении API до 21 (я использую app:srcCompat для отображения изображений).

  • Когда используется более низкий API, и система масштабирует его, имеет ли размер вектора?

  • Являются ли эти измерения важными для моего использования вообще, кроме того, что они просто являются размером по умолчанию, когда я применяю wrap_content?

4b9b3361

Ответ 1

Вероятно, я не могу ответить на все ваши вопросы, но размер DP имеет значение, если вы не используете векторные образы через библиотеку поддержки в версиях до Lollipop.

Чтобы включить векторные векторные элементы поддержки, вы должны добавить в свои приложения следующие файлы gradle build:

android {  
    defaultConfig {  
        vectorDrawables.useSupportLibrary = true  
    }  
}

См. https://android-developers.googleblog.com/2016/02/android-support-library-232.html

Если это не часть вашего файла сборки приложения, Android Studio будет генерировать PNG для всех версий до Lollipop, которые будут иметь определенный размер DP. Поэтому, если ваш вектор определяет 24dp, и вы используете его как 128dp-графику, он, скорее всего, не будет выглядеть очень хорошо в версиях до Lollipop, поскольку будет использоваться PNG 24dp.

Сгенерированные PNG можно найти здесь:

app\build\generated\res\pngs\...

В противном случае, если ваш вектор равен 128dp, и вы используете его как изображение 24dp, уменьшенный рисунок PNG также может выглядеть не так прекрасно, как ожидалось, из-за масштабирования, и вы, вероятно, тратите некоторый размер файла из-за слишком больших PNG.

Я никогда не смотрел, что это значит для производительности...

Ответ 2

  • Когда вы используете wrap_content, тогда устройство будет отображать вектор в желаемом размере (24dp). Установка большего размера приведет к увеличению размера растрового изображения, что скажется на вашем пользовательском интерфейсе и производительности. Если ваш контент не используется, и вы используете библиотеку поддержки для векторов, то размер вектора не должен иметь значения.
  • Если вы установите vectorDrawables.useSupportLibrary = false, ваш apk будет содержать также сгенерированные растровые изображения векторов, используемых для устройств ниже API 21. Большие растровые изображения требуют больше времени для открытия, использования большего объема памяти, а также увеличения размера вашего apk. Если вы используете больший размер, чем это необходимо для вашего пользовательского интерфейса (система уменьшит его), это также повлияет на производительность и, возможно, может снизить качество изображения.
  • Ответ # 1, когда вы не используете wrap_content, размер не имеет значения, если вы используете vectorDrawables.useSupportLibrary = true