Android: Указание цветов градиента через положение интервала? - PullRequest
0 голосов
/ 03 августа 2020

Я хочу создать градиент в 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;
    }
}
...