Используйте больший вектор для рисования, не переопределяя его дважды
У меня есть значок 24dp, определенный как vector-drawable вот так:
<?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 ответа
Созданный вами вектор, который можно нарисовать, содержит всю информацию, необходимую для рисования в любых измерениях.
Вам не нужен другой чертеж с другим размером.
Вы можете попробовать это в 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"/>
Вы можете видеть, что размер рисования корректно соответствует двум разным размерам ImageView.
Для очень больших размеров вы можете увидеть растяжимые пиксели.
Если вы не хотите переопределять свой вектор для рисования для каждого размера, который хотите использовать, вам нужно включить поддержку совместимости для векторных рисунков.
Пожалуйста, прочитайте мой ответ здесь, чтобы найти подробную информацию об изменениях, которые необходимо внести после включения поддержки.
** Обновить **
Кажется, что вы хотите поместить свои рисованные объекты в "Предпочтения", я думаю, что если вы хотите контролировать размер вашего рисованного объекта, сохраняя при этом 1 файл, вам придется попытаться масштабировать его программно или создать свой собственный вид предпочтений.