I would like to set the color programmatically to the progress indicator primaryProgress, secondaryProgress, since the color will change according to the background color on the screen.
code:
LayerDrawable progressDrawable = (LayerDrawable) ProgressBar1.getProgressDrawable(); Drawable backgroundColor = progressDrawable.getDrawable(0); Drawable secondaryColor = progressDrawable.getDrawable(1); Drawable primaryColor = progressDrawable.getDrawable(2); final float[] roundedCorners = new float[] { 5, 5, 5, 5, 5, 5, 5, 5 }; primaryColor = new ShapeDrawable(new RoundRectShape(roundedCorners, null, null)); secondaryColor = new ShapeDrawable(new RoundRectShape(roundedCorners, null, null)); primaryColor.setColor((Color.rgb(color_normal[0], color_normal[1], color_normal[2])), null); secondaryColor.setColor((Color.rgb(color_normal[0], color_normal[1], color_normal[2])), null); progressDrawable.setDrawableByLayerId(progressDrawable.getId(2), new ClipDrawable(primaryColor, Gravity.LEFT, ClipDrawable.HORIZONTAL)); ...
Edit:
** The color code here is for testing purposes only. Then the color code will refer to another part for updates, respectively.
secondaryColor.setColorFilter((Color.rgb(255, 0, 0)), PorterDuff.Mode.SRC_OVER); primaryColor.setColorFilter((Color.rgb(0, 255, 213)), PorterDuff.Mode.SRC_OVER); progressDrawable.setDrawableByLayerId(progressDrawable.getId(2), new ClipDrawable(primaryColor, Gravity.LEFT, ClipDrawable.HORIZONTAL)); progressDrawable.setDrawableByLayerId(progressDrawable.getId(1), new ClipDrawable(secondaryColor, Gravity.LEFT, ClipDrawable.HORIZONTAL)); ProgressBar1.setProgressDrawable(progressDrawable); ProgressBar1.setProgress(progress); ProgressBar1.setSecondaryProgress(secondaryProgress);
Question:
It underlines in red for primanyColor.setColor and reports that The method setColor(int, null) is undefined for the type Drawable .
How do I change the codes above to make them work? Thanks!