Как мне изменить во время выполнения цвета пользовательского индикатора выполнения (с градиентом)? - PullRequest
0 голосов
/ 08 января 2019

Я создал свои собственные индикаторы выполнения (с формами и градиентами внутри), и теперь я хочу, чтобы они меняли цвет в соответствии со значениями. Например, добивайтесь прогресса на зеленом и желтом фоне, когда цель достигнута. Моя проблема в том, что я не знаю, как получить доступ к отдельным цветам элементов в моем Java-коде (учитывая, что у меня много экземпляров progressBars, и я хочу обрабатывать их по отдельности).

Например, я хотел бы изменить во время выполнения значения этого:

Android: ENDCOLOR = "@ цвет / progressBar03GradientEnd" android: startColor = "@ color / progressBar03GradientStart"

Вы можете увидеть здесь Drawables, которые я создал:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@android:id/background"
        android:gravity="center_vertical|fill_horizontal">
        <shape android:shape="rectangle"
            android:tint="?attr/colorControlNormal">
            <corners android:radius="8dp"/>
            <size android:height="16dp" />
            <solid android:color="#90caf9" />
        </shape>
    </item>
    <item android:id="@android:id/secondaryProgress"
        android:gravity="center_vertical|fill_horizontal">
        <scale android:scaleWidth="100%">
            <shape android:shape="rectangle"
                android:tint="?attr/colorControlHighlight">
                <corners android:radius="8dp"/>
                <size android:height="16dp" />
                <solid android:color="#90caf9" />
            </shape>
        </scale>
    </item>
    <item android:id="@android:id/progress"
        android:gravity="center_vertical|fill_horizontal">
        <scale android:scaleWidth="100%">
            <shape android:shape="rectangle">
                <!-- Please check these down are the right colors -->
                <gradient
                    android:endColor="@color/progressBar03GradientEnd"
                    android:startColor="@color/progressBar03GradientStart" />
                <corners android:radius="8dp"/>
                <size android:height="16dp" />

            </shape>
        </scale>
    </item>
</layer-list>
...