Я хочу создать градиент в android динамически с помощью кода java. Основная проблема заключается в том, что в качестве ввода я хочу указать интервал и их цвета, то есть 0% -5%: зеленый, 5% -20%: синий, 20% -100%: красный, как показано в этом макете -> макет градиента . Я использовал Linear Gradient , но он позволяет мне указывать позицию, а не интервалы. Как я могу указать интервалы в качестве входных данных? как это необходимо для приложения.
public class CustomGradient extends Drawable {
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
private int[] colors;
private float[] positions;
public CustomGradient(int[] colors, float[] positions) {
paint.setStyle(Paint.Style.FILL);
this.colors = colors;
this.positions = positions;
}
@Override
public void setBounds(int left, int top, int right, int bottom) {
super.setBounds(left, top, right, bottom);
LinearGradient linearGradient = new LinearGradient(left, top,right, bottom, colors, positions, Shader.TileMode.CLAMP);
paint.setShader(linearGradient);
}
@Override
public void draw(@NonNull Canvas canvas) {
canvas.drawRect(getBounds(), paint);
}
@Override
public void setAlpha(int alpha) {
paint.setAlpha(alpha);
}
@Override
public void setColorFilter(@Nullable ColorFilter colorFilter) {
paint.setColorFilter(colorFilter);
}
@Override
public int getOpacity() {
return PixelFormat.TRANSPARENT;
}
}