繁体   English   中英

如何以编程方式设置随机GradientDrawable颜色-Android

[英]How to set Random GradientDrawable Color programmatically - 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(){

Random random = new Random();

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)); }

 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]);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM