@Override
protected void dispatchDraw(Canvas canvas) {
//初始化一个绘制背景的画笔
Paint shadowPaint = new Paint();
shadowPaint.setColor(Color.WHITE);
shadowPaint.setStyle(Paint.Style.FILL);
shadowPaint.setAntiAlias(true);
//计算阴影的偏移量 和 给画笔设置阴影
int radius = Math.min(getHeight() / 12, 40);
int shadowColor = Math.min(getHeight() / 16, 28);
shadowPaint.setShadowLayer(radius, 0, 0, getDarkerColor(Color.parseColor("#fd6589")));
//确定阴影的的整个大小
RectF rectF = new RectF(getX() + (getWidth() / 20), getY(), getX() + getWidth() - (getWidth() / 20), getY() + getHeight() - ((getHeight() / 40)));
canvas.drawRoundRect(rectF, 32, 32, shadowPaint);
canvas.save();
super.dispatchDraw(canvas);
}
public int getDarkerColor(int color) {
float[] hsv = new float[3];
Color.colorToHSV(color, hsv);
hsv[1] = hsv[1] + 0.1f;
hsv[2] = hsv[2] - 0.1f;
int darkerColor = Color.HSVToColor(hsv);
return darkerColor;
}
给控件设置阴影
最新推荐文章于 2022-04-03 08:06:44 发布