Поддержка Android-поддержки 23.2 векторных чертежей размыты
В последней версии Android Support Library (23.2) добавлена поддержка векторных чертежей. Похоже, что это происходит путем растрирования векторов "на лету" на платформах, которые не поддерживают векторные чертежи.
Однако изображение с растеризацией кажется фиксированным, что зависит от использования. Вот пример.
вектор
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="#FF000000"
android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zm0,3c1.66,0 3,1.34 3,3s-1.34,3 -3,3 -3,-1.34 -3,-3 1.34,-3 3,-3zm0,14.2c-2.5,0 -4.71,-1.28 -6,-3.22 0.03,-1.99 4,-3.08 6,-3.08 1.99,0 5.97,1.09 6,3.08 -1.29,1.94 -3.5,3.22 -6,3.22z"/>
</vector>
Разметка
<ImageView
android:layout_width="128dp"
android:layout_height="128dp"
android:id="@+id/imageView"
app:srcCompat="@drawable/vector1"/>
Вектор 24dp x 24dp. Он используется в ImageView, 128dp x 128dp. На платформах, которые не поддерживают векторные чертежи, результирующее изображение размыто, потому что вектор растеризуется при 16dp и изменяется до 128dp.
Единственное решение, которое я нашел, - создать отдельный вектор, пригодный для каждого размера. Это довольно раздражает, чтобы создать кучу повторяющихся векторов с изменениями высоты и ширины. И это не решает проблему, если вы хотите, чтобы drawable для fill_parent или был динамически определен каким-то другим способом.
Чтобы определить размеры ваших векторных изображений в продвинутых, почти полностью поражает преимущество использования векторов в первую очередь.
Есть ли у кого-то истинная работа?
Ответы
Ответ 1
вектор растеризуется при 16dp и изменяется до 128dp
до 23.1
, Android создавал растровые изображения, начиная с предоставленного VectorDrawable
. Это изменилось в v23.2
библиотеки поддержки. Это происходит, если вы правильно настроили свой build.gradle
.
Если вы используете Gradle Plugin 2.0+
, добавьте
android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}
если вы используете 1.5.0
android {
defaultConfig {
generatedDensities = []
}
// This is handled for you by the 2.0+ Gradle Plugin
aaptOptions {
additionalParameters "--no-version-vectors"
}
}
после синхронизации, очистки рабочего пространства и сборки снова. Вы можете прочитать об этом здесь и здесь
Ответ 2
увеличить Android: ширина, высота в вашем XML.
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
После того, как я увеличил размеры, сгенерированный размер png также увеличился, и изображения перестали выглядеть размытыми.