Векторный рисунок в круге

есть ли простой способ сгенерировать Vector Drawable, который представляет собой круг со значком внутри из существующего векторного Drawable?

Пример: Векторный рисунок в круге

Векторный рисунок в круге

использовать свойство фона

Dhruv Tyagi 20.03.2018 19:33

как вы хотите, чтобы вы использовали этот вектор для рисования? из файла макета xml? или во время выполнения из java-кода?

pskink 20.03.2018 20:41

Я хотел бы решить ее как можно проще, сгенерировав готовый к использованию VectorDrawable. Никакого кода или изменяемых модификаций.

qbait 21.03.2018 13:41

Просто скачайте Inkscape и изучите основы. И если вам не нужно программное решение, тогда это не по теме для Stack Overflow. :)

Markus Kauppinen 21.03.2018 20:52
13
4
13 320
3

Ответы 3

Я бы предложил примерно следующее:

<layer-list xmlns:android = "http://schemas.android.com/apk/res/android">
    <item
    android:gravity = "fill"
    android:drawable = "@drawable/ic_brightness_1_black_24dp"

    />
    <item
        android:gravity = "center"
        android:drawable = "@drawable/ic_call_black_24dp"
        android:top = "20dp"
        android:bottom = "20dp"
        android:left = "20dp"
        android:right = "20dp"
        />

</layer-list>

Ресурсы с идентификаторами ic_brightness_1_black_24dp и ic_call_black_24dp являются импортированными векторными чертежами.

ic_brightness_1_black_24dp:

<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 = "#303F9F"
        android:pathData = "M12,12m-10,0a10,10 0,1 1,20 0a10,10 0,1 1,-20 0"/>
</vector>

и ic_call_black_24dp:

<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 = "#FFFFFF"
        android:pathData = "M6.62,10.79c1.44,2.83 3.76,5.14 6.59,6.59l2.2,-2.2c0.27,-0.27 0.67,-0.36 1.02,-0.24 1.12,0.37 2.33,0.57 3.57,0.57 0.55,0 1,0.45 1,1V20c0,0.55 -0.45,1 -1,1 -9.39,0 -17,-7.61 -17,-17 0,-0.55 0.45,-1 1,-1h3.5c0.55,0 1,0.45 1,1 0,1.25 0.2,2.45 0.57,3.57 0.11,0.35 0.03,0.74 -0.25,1.02l-2.2,2.2z"/>
</vector>

Да, это идея, однако я хотел бы решить ее как можно проще, сгенерировав готовый к использованию VectorDrawable. Никаких модификаций кода или чертежей.

qbait 21.03.2018 13:42

На самом деле это довольно просто, вам просто нужно включить оба пути в один вектор, поэтому с вашими путями это будет выглядеть следующим образом:

<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 = "#303F9F"
        android:pathData = "M12,12m-10,0a10,10 0,1 1,20 0a10,10 0,1 1,-20 0"/>

    <path
        android:fillColor = "#FFFFFF"
        android:pathData = "M6.62,10.79c1.44,2.83 3.76,5.14 6.59,6.59l2.2,-2.2c0.27,-0.27 0.67,-0.36 1.02,-0.24 1.12,0.37 2.33,0.57 3.57,0.57 0.55,0 1,0.45 1,1V20c0,0.55 -0.45,1 -1,1 -9.39,0 -17,-7.61 -17,-17 0,-0.55 0.45,-1 1,-1h3.5c0.55,0 1,0.45 1,1 0,1.25 0.2,2.45 0.57,3.57 0.11,0.35 0.03,0.74 -0.25,1.02l-2.2,2.2z"/>

</vector>

Результат, очевидно, будет зависеть от размеров путей по отношению друг к другу, и, поскольку масштабирование их без графических инструментов является проблемой, Решение DimDim с layer-list проще реализовать.

Используйте этот способ,

Я пробовал на своем, и он работает нормально. Это выглядит так.

для button_round:

Другие вопросы по теме