android 自定义drawable 实现圆角颜色渐变
要实现圆角颜色渐变的自定义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的背景上实现一个圆角颜色渐变的效果了
原文地址: https://www.cveoy.top/t/topic/iRFB 著作权归作者所有。请勿转载和采集!