要实现圆角颜色渐变的自定义Drawable,你可以创建一个继承自Drawable的类,并重写它的draw方法来绘制圆角矩形。

下面是一个实现圆角颜色渐变的自定义Drawable的示例代码:

import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.LinearGradient;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.Shader;
import android.graphics.drawable.Drawable;

public class RoundedGradientDrawable extends Drawable {
    private int startColor;
    private int endColor;
    private float cornerRadius;

    public RoundedGradientDrawable(int startColor, int endColor, float cornerRadius) {
        this.startColor = startColor;
        this.endColor = endColor;
        this.cornerRadius = cornerRadius;
    }

    @Override
    public void draw(Canvas canvas) {
        Rect bounds = getBounds();
        int width = bounds.width();
        int height = bounds.height();

        Paint paint = new Paint();
        paint.setAntiAlias(true);

        // 创建线性渐变
        Shader shader = new LinearGradient(0, 0, width, height, startColor, endColor, Shader.TileMode.CLAMP);
        paint.setShader(shader);

        // 绘制圆角矩形
        canvas.drawRoundRect(0, 0, width, height, cornerRadius, cornerRadius, paint);
    }

    @Override
    public void setAlpha(int alpha) {
        // 忽略透明度设置
    }

    @Override
    public void setColorFilter(ColorFilter colorFilter) {
        // 忽略颜色过滤器设置
    }

    @Override
    public int getOpacity() {
        return PixelFormat.TRANSPARENT;
    }
}

在使用这个自定义Drawable时,你可以调用setBounds方法设置它的绘制区域,并将它设置为View的背景。

RoundedGradientDrawable drawable = new RoundedGradientDrawable(Color.RED, Color.BLUE, 20);
drawable.setBounds(0, 0, view.getWidth(), view.getHeight());
view.setBackground(drawable);

这样就可以在View的背景上实现一个圆角颜色渐变的效果了

android 自定义drawable 实现圆角颜色渐变

原文地址: https://www.cveoy.top/t/topic/iRFB 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录