Я пытаюсь использовать векторные чертежи в своем приложении для Android. Из http://developer.android.com/training/material/drawables.html (выделение мое):
В Android 5.0 (API Level 21) и выше вы можете определить векторные чертежи, , которые масштабируются без потери определения.
Используя эту возможность:
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
android:width="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path android:fillColor="@color/colorPrimary" android:pathData="M14,20A2,2 0 0,1 12,22A2,2 0 0,1 10,20H14M12,2A1,1 0 0,1 13,3V4.08C15.84,4.56 18,7.03 18,10V16L21,19H3L6,16V10C6,7.03 8.16,4.56 11,4.08V3A1,1 0 0,1 12,2Z" />
и этот ImageView:
<ImageView
android:layout_width="400dp"
android:layout_height="400dp"
android:src="@drawable/icon_bell"/>
создает это размытое изображение при попытке отобразить значок на 400dp (на довольно большом мобильном устройстве с низким разрешением около 2015 года, использующем леденец):
Изменение ширины и высоты в определении вектора, пригодного для 200dp, значительно улучшает ситуацию при размере 400dp. Однако установка этого параметра как элемента для текста (например, слева от текста) теперь создает огромный значок.
Мои вопросы:
1) Почему спецификация ширины/высоты в векторе доступна? Я думал, что все дело в том, что они масштабируются вверх и вниз без потерь, делая ширину и высоту бессмысленными в своем определении?
2) Можно ли использовать один векторный чертеж, который работает как 24dp, вытягиваемый в TextView, но хорошо масштабируется, чтобы использовать также большие изображения? Например. как мне избежать создания нескольких векторных чертежей разного размера и вместо этого использовать тот, который масштабируется до моих визуализированных требований?
3) Как эффективно использовать атрибуты width/height и в чем разница с viewportWidth/Height?
Дополнительная информация:
- Устройство работает с API 22
- Использование Android Studio v1.5.1 с Gradle версией 1.5.0
- Манифест - это компиляция и целевой уровень 23, минимальный уровень 15. Я также пробовал перемещать минимальный уровень до 21, но это не имело значения.
- Декомпиляция APK (с минимальным уровнем, установленным в 21) показывает один XML-ресурс в папке с возможностью переноса. Растеризованные изображения не создаются.