Используйте больший вектор для рисования, не переопределяя его дважды - PullRequest
0 голосов
/ 30 октября 2018

У меня есть значок 24dp, определенный как векторное изображение:

<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:viewportWidth="100"
    android:viewportHeight="100"
    android:width="24dp"
    android:height="24dp">
    <group
        android:rotation="45"
        android:translateX="51.52484"
        android:translateY="-19.96257">
        <path
            android:pathData="M19.199993 36l19.600014 0C38.910803 36 39 36.089197 39 36.199993l0 6.75947c0 0.110796 -0.0892 0.199993 -0.199993 0.199993l-19.600014 0C19.089197 43.159456 19 43.070259 19 42.959463l0 -6.75947C19 36.089197 19.089197 36 19.199993 36Z"
            android:fillColor="#000000" />
        <path
            android:pathData="M41.2 29l16.6 0c0.1108 0 0.2 0.0892 0.2 0.2l0 18.6C58 47.9108 57.9108 48 57.8 48L41.2 48C41.0892 48 41 47.9108 41 47.8L41 29.2C41 29.0892 41.0892 29 41.2 29Z"
            android:fillColor="#000000" />
        <path
            android:pathData="M60.199993 36l19.600014 0C79.910803 36 80 36.089197 80 36.199993l0 6.75947c0 0.110796 -0.0892 0.199993 -0.199993 0.199993l-19.600014 0C60.089197 43.159456 60 43.070259 60 42.959463l0 -6.75947C60 36.089197 60.089197 36 60.199993 36Z"
            android:fillColor="#000000" />
        <path
            android:pathData="M50 50C36.859076 50 25.683178 58.456704 21.625 70.21875 28.83571 73.156161 39.090953 75 50.5 75 61.427942 75 71.317525 73.285885 78.46875 70.5625 74.508388 58.626443 63.265188 50 50 50Z"
            android:fillColor="#000000"
            android:fillAlpha="0.1568628" />
        <path
            android:pathData="M50 50c-13.140924 0 -24.316821 8.456704 -28.375 20.21875 1.462352 0.595715 3.051404 1.125957 4.75 1.625C29.757128 62.04261 39.049633 55 50 55c11.054729 0 20.418772 7.177719 23.71875 17.125 1.683691 -0.46586 3.282402 -1.003598 4.75 -1.5625C74.508387 58.626443 63.265188 50 50 50Z"
            android:fillColor="#000000" />
        <group
            android:scaleX="1.4"
            android:scaleY="1.40625"
            android:translateX="-16.5"
            android:translateY="-45.53125">
            <path
                android:pathData="M50 82.5A2.5 2.5 0 0 1 47.5 85 2.5 2.5 0 0 1 45 82.5 2.5 2.5 0 0 1 47.5 80 2.5 2.5 0 0 1 50 82.5Z"
                android:fillColor="#000000" />
        </group>
    </group>
</vector>

И мне нужно использовать его в другом месте другого размера (т.е. 36dp)

Как я могу сделать это, не определяя его дважды?

Я пытался использовать ScaleDrawable, как это:

<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
       android:drawable="@drawable/icon_24dp"
       android:scaleGravity="fill"
       android:scaleHeight="150%"
       android:scaleWidth="150%" />

но это не работает.

Пожалуйста, не отвечайте, чтобы установить размер в ImageView, это не то, что я ищу.

Спасибо

Ответы [ 2 ]

0 голосов
/ 10 ноября 2018

Если вы не хотите переопределять векторную графику для каждого размера, который хотите использовать, вам нужно включить поддержку совместимости для векторных рисунков.

Пожалуйста, прочитайте мой ответ здесь , чтобы найти подробную информацию об изменениях, которые необходимо внести после включения поддержки.

** Обновление **

Похоже, что вы хотите поместить свои рисунки в «Предпочтения», я думаю, что если вы хотите контролировать размер рисунка, сохраняя при этом 1 файл, вам придется попытаться масштабировать его программно или создать свой собственный вид предпочтений.

0 голосов
/ 30 октября 2018

Этот созданный вами векторный объект для рисования содержит всю информацию, необходимую для рисования в любых измерениях.
Вам не нужен другой чертеж с другим размером.
Вы можете попробовать это в 2 ImageViews как:

<ImageView
    android:layout_width="200dp"
    android:layout_height="200dp"
    app:srcCompat="@drawable/what"/>

<ImageView
    android:layout_width="100dp"
    android:layout_height="100dp"
    app:srcCompat="@drawable/what"/>

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

...