как создать android drawable xml состояния с фоном и значком <vector>(svg) - PullRequest
1 голос
/ 04 марта 2020

Добрый день всем. Подскажите, пожалуйста, как сделать и организовать реализацию иконок с фонами в Android в разных состояниях (зависание, блокировка, нормальное состояние). Я видел, что приложение часто имеет много схожих компонентов в поведении (цвет, округление, эффект щелчка и т. Д. c.). Я посмотрел на множество примеров и попытался разработать и внедрить их в своей стране. Я потерпел неудачу, и я понимаю, что мне придется дублировать все в каждой кнопке с иконкой. Можно ли наследовать формы и цвета на значках в векторе в разных штатах? PS: я прошу прощения за мой Engli sh! Вот что я пытался сделать:

@drawable/ico_setting.xml (это иконка для кнопок)

<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:viewportWidth="96"
    android:viewportHeight="96"
    android:width="96dp"
    android:height="96dp">
    <path
        android:pathData="M37.99 4.95c-0.76 0.01 -1.08 0.64 -1.25 1.08l-1.09 8.48c-4.02 1.44 -7.72 3.56 -10.93 6.22l-8.03 -3.34c-0.56 -0.23 -1.27 0.02 -1.56 0.54L5.14 34.97c-0.28 0.51 -0.12 1.22 0.35 1.57l6.91 5.15c-0.36 2.03 -0.63 4.13 -0.63 6.25 0 2.12 0.27 4.19 0.63 6.22L5.49 59.31C5 59.66 4.84 60.39 5.14 60.92l9.99 17.04c0.31 0.5 1.01 0.73 1.56 0.5l8.03 -3.34c3.22 2.66 6.9 4.77 10.93 6.22l1.09 8.52c0.08 0.59 0.64 1.08 1.25 1.07l19.97 0c0.61 0 1.17 -0.48 1.25 -1.07l1.09 -8.52c4.03 -1.45 7.71 -3.56 10.93 -6.22l8.03 3.34c0.55 0.23 1.26 0 1.56 -0.5l9.99 -17.04c0.31 -0.53 0.15 -1.26 -0.35 -1.61l-6.91 -5.15c0.37 -2.03 0.63 -4.1 0.63 -6.22 0 -2.12 -0.26 -4.22 -0.63 -6.25l6.91 -5.15c0.48 -0.35 0.63 -1.06 0.35 -1.57L80.82 17.93c-0.29 -0.52 -1 -0.77 -1.56 -0.54l-8.03 3.34C68.02 18.07 64.32 15.95 60.3 14.51L59.21 6.03C59.13 5.44 58.57 4.95 57.96 4.95l-19.97 0zm0.52 2.46l17.69 0 1.01 8.1c0.06 0.45 0.41 0.86 0.85 1 4.26 1.42 8.14 3.68 11.44 6.56 0.35 0.29 0.87 0.37 1.28 0.19l7.6 -3.18 8.85 15.2 -6.52 4.87c-0.37 0.28 -0.56 0.78 -0.46 1.23 0.42 2.11 0.62 4.32 0.62 6.56 0 2.25 -0.2 4.42 -0.62 6.53 -0.1 0.45 0.09 0.95 0.46 1.23l6.52 4.91 -8.85 15.16 -7.6 -3.18c-0.43 -0.17 -0.94 -0.08 -1.28 0.23 -3.3 2.87 -7.18 5.1 -11.44 6.52 -0.45 0.15 -0.8 0.57 -0.85 1.04l-1.01 8.1 -17.69 0 -1.01 -8.1C37.45 79.91 37.1 79.49 36.65 79.34 32.39 77.92 28.51 75.69 25.2 72.82 24.87 72.51 24.35 72.42 23.92 72.59l-7.6 3.18 -8.84 -15.16 6.51 -4.91c0.38 -0.28 0.57 -0.78 0.47 -1.23 -0.43 -2.11 -0.62 -4.28 -0.62 -6.53 0 -2.24 0.19 -4.45 0.62 -6.56 0.09 -0.45 -0.09 -0.95 -0.47 -1.23l-6.51 -4.87 8.84 -15.2 7.6 3.18c0.42 0.18 0.94 0.1 1.28 -0.19 3.31 -2.88 7.19 -5.14 11.45 -6.56 0.44 -0.14 0.79 -0.55 0.85 -1l1.01 -8.1zm8.84 19.65c-11.68 0 -21.18 9.36 -21.18 20.88 0 11.52 9.5 20.88 21.18 20.88 11.69 0 21.19 -9.36 21.19 -20.88 0 -11.52 -9.5 -20.88 -21.19 -20.88zm0 2.46c10.34 0 18.69 8.23 18.69 18.42 0 10.19 -8.35 18.43 -18.69 18.43 -10.34 0 -18.69 -8.24 -18.69 -18.43 0 -10.19 8.35 -18.42 18.69 -18.42z"
        android:fillColor="#e16a4d" />
    <path
        android:pathData="M37.99 4.95c-0.76 0.01 -1.08 0.64 -1.25 1.08l-1.09 8.48c-4.02 1.44 -7.72 3.56 -10.93 6.22l-8.03 -3.34c-0.56 -0.23 -1.27 0.02 -1.56 0.54L5.14 34.97c-0.28 0.51 -0.12 1.22 0.35 1.57l6.91 5.15c-0.36 2.03 -0.63 4.13 -0.63 6.25 0 2.12 0.27 4.19 0.63 6.22L5.49 59.31C5 59.66 4.84 60.39 5.14 60.92l9.99 17.04c0.31 0.5 1.01 0.73 1.56 0.5l8.03 -3.34c3.22 2.66 6.9 4.77 10.93 6.22l1.09 8.52c0.08 0.59 0.64 1.08 1.25 1.07l19.97 0c0.61 0 1.17 -0.48 1.25 -1.07l1.09 -8.52c4.03 -1.45 7.71 -3.56 10.93 -6.22l8.03 3.34c0.55 0.23 1.26 0 1.56 -0.5l9.99 -17.04c0.31 -0.53 0.15 -1.26 -0.35 -1.61l-6.91 -5.15c0.37 -2.03 0.63 -4.1 0.63 -6.22 0 -2.12 -0.26 -4.22 -0.63 -6.25l6.91 -5.15c0.48 -0.35 0.63 -1.06 0.35 -1.57L80.82 17.93c-0.29 -0.52 -1 -0.77 -1.56 -0.54l-8.03 3.34C68.02 18.07 64.32 15.95 60.3 14.51L59.21 6.03C59.13 5.44 58.57 4.95 57.96 4.95l-19.97 0zm0.52 2.46l17.69 0 1.01 8.1c0.06 0.45 0.41 0.86 0.85 1 4.26 1.42 8.14 3.68 11.44 6.56 0.35 0.29 0.87 0.37 1.28 0.19l7.6 -3.18 8.85 15.2 -6.52 4.87c-0.37 0.28 -0.56 0.78 -0.46 1.23 0.42 2.11 0.62 4.32 0.62 6.56 0 2.25 -0.2 4.42 -0.62 6.53 -0.1 0.45 0.09 0.95 0.46 1.23l6.52 4.91 -8.85 15.16 -7.6 -3.18c-0.43 -0.17 -0.94 -0.08 -1.28 0.23 -3.3 2.87 -7.18 5.1 -11.44 6.52 -0.45 0.15 -0.8 0.57 -0.85 1.04l-1.01 8.1 -17.69 0 -1.01 -8.1C37.45 79.91 37.1 79.49 36.65 79.34 32.39 77.92 28.51 75.69 25.2 72.82 24.87 72.51 24.35 72.42 23.92 72.59l-7.6 3.18 -8.84 -15.16 6.51 -4.91c0.38 -0.28 0.57 -0.78 0.47 -1.23 -0.43 -2.11 -0.62 -4.28 -0.62 -6.53 0 -2.24 0.19 -4.45 0.62 -6.56 0.09 -0.45 -0.09 -0.95 -0.47 -1.23l-6.51 -4.87 8.84 -15.2 7.6 3.18c0.42 0.18 0.94 0.1 1.28 -0.19 3.31 -2.88 7.19 -5.14 11.45 -6.56 0.44 -0.14 0.79 -0.55 0.85 -1l1.01 -8.1zm8.84 19.65c-11.68 0 -21.18 9.36 -21.18 20.88 0 11.52 9.5 20.88 21.18 20.88 11.69 0 21.19 -9.36 21.19 -20.88 0 -11.52 -9.5 -20.88 -21.19 -20.88zm0 2.46c10.34 0 18.69 8.23 18.69 18.42 0 10.19 -8.35 18.43 -18.69 18.43 -10.34 0 -18.69 -8.24 -18.69 -18.43 0 -10.19 8.35 -18.42 18.69 -18.42z"
        android:fillColor="#e16a4d" />
    <path
        android:pathData="M35.77 4.07C36.28 3.51 36.99 3.1 37.98 3.09L57.96 3.08c0.76 0.01 1.49 0.3 2.04 0.77 0.56 0.48 0.96 1.17 1.06 1.94l0.95 7.36c1.7 0.67 3.36 1.47 4.95 2.37 1.61 0.92 3.14 1.94 4.57 3.06l7.02 -2.91c0.71 -0.3 1.5 -0.29 2.19 -0.06 0.7 0.24 1.32 0.73 1.71 1.4l10 17.07c0.36 0.66 0.45 1.43 0.29 2.14 -0.16 0.71 -0.57 1.38 -1.18 1.83l-5.98 4.45c0.11 0.68 0.2 1.37 0.28 2.09 0.12 1.12 0.19 2.25 0.19 3.35 0 1.11 -0.07 2.22 -0.19 3.34 -0.08 0.71 -0.17 1.39 -0.28 2.07l5.95 4.43c0.65 0.45 1.07 1.14 1.23 1.87 0.15 0.73 0.06 1.53 -0.34 2.2L82.41 78.94c-0.4 0.64 -1.02 1.1 -1.71 1.32 -0.69 0.22 -1.46 0.21 -2.15 -0.08l-7.02 -2.91c-1.43 1.11 -2.96 2.13 -4.56 3.05 -1.58 0.9 -3.24 1.69 -4.96 2.37l-0.95 7.4c-0.1 0.78 -0.5 1.46 -1.06 1.94 -0.55 0.47 -1.28 0.77 -2.04 0.77l-19.97 0C37.23 92.8 36.5 92.5 35.96 92.04 35.4 91.55 35 90.87 34.89 90.11l-0.94 -7.42c-1.73 -0.68 -3.39 -1.47 -4.96 -2.37 -1.61 -0.91 -3.14 -1.94 -4.57 -3.05l-7.01 2.91c-0.7 0.29 -1.47 0.3 -2.16 0.08 -0.69 -0.22 -1.32 -0.69 -1.71 -1.33L3.54 61.86C3.14 61.18 3.04 60.38 3.2 59.65 3.35 58.92 3.78 58.23 4.42 57.78l5.95 -4.43C10.26 52.67 10.17 51.99 10.09 51.28 9.98 50.17 9.9 49.05 9.9 47.94c0 -1.1 0.08 -2.23 0.19 -3.35 0.08 -0.72 0.17 -1.41 0.28 -2.09L4.39 38.05C3.78 37.6 3.37 36.93 3.21 36.23 3.06 35.51 3.14 34.74 3.51 34.08l10 -17.07c0.38 -0.67 1.01 -1.16 1.7 -1.4 0.68 -0.23 1.47 -0.24 2.19 0.06l7.02 2.91c1.43 -1.12 2.96 -2.14 4.57 -3.06 1.59 -0.9 3.25 -1.7 4.96 -2.37L34.92 5.56 35 5.37c0.14 -0.39 0.37 -0.87 0.77 -1.3zm18.78 5.21l-14.39 0 -0.81 6.48c-0.08 0.59 -0.34 1.14 -0.72 1.58 -0.37 0.43 -0.87 0.77 -1.44 0.95 -1.97 0.66 -3.86 1.51 -5.64 2.53 -1.84 1.07 -3.56 2.29 -5.12 3.65l-0.04 0.05c-0.44 0.35 -0.98 0.58 -1.52 0.66 -0.55 0.09 -1.13 0.03 -1.66 -0.19l-6.1 -2.56 -7.19 12.35 5.18 3.88c0.48 0.35 0.84 0.84 1.05 1.38 0.2 0.53 0.25 1.13 0.14 1.71 -0.2 0.96 -0.34 1.96 -0.44 2.98 -0.09 1.01 -0.14 2.09 -0.14 3.21 0 1.12 0.04 2.17 0.14 3.15 0.09 1.01 0.24 2.01 0.43 2.99 0.13 0.59 0.07 1.19 -0.13 1.73 -0.21 0.53 -0.56 1.02 -1.03 1.37l-5.19 3.92 7.18 12.32 6.15 -2.58c0.53 -0.2 1.11 -0.25 1.67 -0.15 0.54 0.1 1.07 0.35 1.5 0.72 1.56 1.36 3.26 2.57 5.07 3.6 1.8 1.03 3.71 1.88 5.7 2.55 0.58 0.18 1.09 0.54 1.46 0.99 0.38 0.45 0.62 1.01 0.69 1.6l0.81 6.46 14.39 0 0.8 -6.46c0.07 -0.59 0.32 -1.15 0.69 -1.6 0.38 -0.45 0.89 -0.81 1.46 -0.99 1.99 -0.66 3.9 -1.52 5.7 -2.54 1.82 -1.04 3.52 -2.25 5.07 -3.61 0.44 -0.37 0.96 -0.62 1.51 -0.72 0.55 -0.1 1.14 -0.05 1.67 0.15l6.15 2.58 7.18 -12.32 -5.19 -3.91c-0.47 -0.36 -0.83 -0.85 -1.03 -1.38 -0.2 -0.53 -0.26 -1.13 -0.14 -1.71 0.2 -0.98 0.34 -1.98 0.44 -3.01 0.09 -0.98 0.14 -2.03 0.14 -3.15 0 -1.12 -0.05 -2.2 -0.14 -3.21 -0.1 -1.02 -0.24 -2.01 -0.43 -2.96 -0.13 -0.58 -0.08 -1.19 0.13 -1.73 0.2 -0.54 0.56 -1.03 1.04 -1.38l5.18 -3.88 -7.18 -12.35 -6.1 2.56c-0.53 0.21 -1.11 0.28 -1.66 0.2C69.3 25.1 68.76 24.87 68.31 24.5L68.27 24.47C66.71 23.11 65 21.89 63.16 20.83 61.36 19.8 59.46 18.94 57.51 18.28 56.96 18.12 56.46 17.77 56.08 17.34 55.7 16.9 55.44 16.36 55.36 15.79L54.55 9.28ZM31.07 31.85c4.17 -4.11 9.94 -6.66 16.28 -6.66 6.35 0 12.11 2.55 16.28 6.66 4.18 4.13 6.78 9.82 6.78 16.09 0 6.28 -2.59 11.97 -6.78 16.09 -4.17 4.11 -9.93 6.66 -16.28 6.66 -6.34 0 -12.1 -2.55 -16.28 -6.66 -4.18 -4.12 -6.77 -9.81 -6.77 -16.09 0 -6.27 2.59 -11.96 6.77 -16.09zm28.2 4.39c-3.04 -3 -7.25 -4.85 -11.92 -4.85 -4.66 0 -8.87 1.85 -11.91 4.85 -3.03 2.99 -4.91 7.13 -4.91 11.7 0 4.58 1.88 8.72 4.91 11.71 3.04 3 7.25 4.85 11.91 4.85 4.66 0 8.88 -1.85 11.92 -4.85 3.03 -2.99 4.91 -7.13 4.91 -11.71 0 -4.57 -1.88 -8.71 -4.91 -11.7z"
        android:fillColor="#e16a4d" />
</vector>

@ drawable / ico_setting_active. xml

@drawable/ico_setting_disabled.xml ... (изменен цвет заливки в путь)


@ drawable /bg_circle_default.xml (фон для кнопки)

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
    <corners android:radius="36dp" />
    <stroke android:width="1dip" android:color="#EEE" />
    <solid android:color="#FFF" />
    <size android:height="36dp" android:width="36dp" />
</shape>

@drawable/bg_circle_active.xml <solid android:color="#999" />

@ drawable / bg_circle_disabled. xml <solid android:color="#CCC" />


Что я пытаюсь с этим сделать:

@drawable/btn_multimedia_setting.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:state_enabled="false" android:drawable="@drawable/bg_btn_circle_disabled">
        <bitmap android:src="@drawable/ic_setting_disabled" />
    </item>
    <item android:state_pressed="true" android:drawable="@drawable/bg_btn_circle_active">
        <bitmap android:src="@drawable/ico_setting_active" />
    </item>
    <item android:state_focused="true" android:drawable="@drawable/bg_btn_circle_active">
        <bitmap android:src="@drawable/ico_setting_active" />
    </item>
    <item android:drawable="@drawable/bg_btn_circle_default">
        <bitmap android:src="@drawable/ico_setting" />
    </item>
</selector>

Что я пытаюсь с этим поделать. Я вижу только фон, но не вижу значок (я понимаю, что значок виден под фоном). Я не знаю, как это исправить.

Благодарю всех за помощь

...