В библиотеке поддержки Android 23.2 векторные рисунки размыты

В последней версии библиотеки поддержки Android (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 или динамически изменял размер другим способом.

Необходимо заранее определить размеры ваших векторных изображенийпочти в первую очередь полностью исключает преимущество использования векторов.

У кого-нибудь есть настоящая работа вокруг?

Ответы на вопрос(2)

Ваш ответ на вопрос