Как установить Random GradientDrawable Color программно - Android
У меня проблема с ProgressBar. Когда я нажимаю кнопку "Пуск", функция "Случайный выбор" выбирает один цвет из массива, но только первый цвет задается как "фон", когда я нажимаю еще раз, новый цвет выбирается, но не устанавливается в качестве фона. Когда я выхожу из приложения и запускаю его снова, выбирается новый цвет, но теперь только один. Я хотел бы иметь разные цвета фона, когда я нажимаю кнопку.
activity_main.xml
<ProgressBar
android:id="@+id/circularProgressbar"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:indeterminate="false"
android:max="100"
android:progress="100"
android:progressDrawable="@drawable/circular"
android:secondaryProgress="100" />
circular.xml
<?xml version="1.0" encoding="utf-8"?>
<item android:id="@+id/SecondaryProgress">
<shape
android:innerRadiusRatio="5.2"
android:shape="ring"
android:useLevel="true"
android:thicknessRatio="9.5">
</shape>
</item>
MainActivity.java
public void Start () {
Случайный случайный = новый Случайный ();
String [] hex_colors = {"F8ED31", "000000", "F7931D", "ED1C24", "7A1777", "ED135A", "71BF43"};
int random_hex = random.nextInt(hex_colors.length); String color="#"+hex_colors[random_hex]; layers = (LayerDrawable) ContextCompat.getDrawable(this,R.drawable.circular); shape = ( GradientDrawable) layers.findDrawableByLayerId(R.id.SecondaryProgress); shape.setColor(Color.parseColor(color)); }
1 ответ
private int[] colors = {Color.RED, Color.YELLOW, Color.BLUE, Color.CYAN, Color.GREEN};
Random ranndom = new Random();
int ranndomColor = ranndom.nextInt(5);
shape.setColor(colors[ranndomColor]);