@Override
protected void onDraw(Canvas canvas) {
Drawable drawable = getDrawable();
if (drawable == null) {
return;
}
try {
int layer = canvas.saveLayer(0, 0, getWidth(), getHeight(), null, Canvas.ALL_SAVE_FLAG);
drawable.setBounds(0, 0, getWidth(), getHeight());
drawable.draw(canvas);
//切割
if (shape == null || shape.isRecycled()) {
shape = getShape(getWidth(), getHeight());
}
canvas.drawBitmap(shape, 0, 0, slipPaint);
//画圆环
Paint ringPaint = new Paint();
ringPaint.setAntiAlias(true);
ringPaint.setStyle(Paint.Style.STROKE);
ringPaint.setColor(borderColor);
ringPaint.setStrokeWidth(borderWidth);
canvas.drawCircle(getWidth() / 2, getHeight() / 2, (getWidth() - borderWidth) / 2, ringPaint);
//画透明格子
if (isNewMask) {
mask = getMask(getWidth(), getHeight());
isNewMask = false;
}
canvas.drawBitmap(mask, 0, 0, maskPaint);
//画文字
String text = progress + "%";
Rect textRect = new Rect();
textPaint.getTextBounds(text, 0, text.length(), textRect);
canvas.drawText(text, (getWidth() - textRect.width()) / 2, (getHeight() + textRect.height()) / 2, textPaint);
canvas.restoreToCount(layer);
} catch (Exception e) {
e.printStackTrace();
}
}这个是在一个Imageview的自定义View中,onDraw方法中
Drawable drawable = getDrawable();
if (drawable == null) {
return;
}首先获得这个imageview的drawble对象,这个对象,相当于图片try {
int layer = canvas.saveLayer(0, 0, getWidth(), getHeight(), null, Canvas.ALL_SAVE_FLAG);canvas.restoreToCount(layer);这个是创建一个层,这个层,在最后面也会使用,恢复,如果把这两行代码去掉,就会有黑色的底框
canvas.restoreToCount(layer);
drawable.setBounds(0, 0, getWidth(), getHeight()); drawable.draw(canvas);
在这个drawBle上面铺一层画布,在这上面画。
接下来:
if (shape == null || shape.isRecycled()) {
shape = getShape(getWidth(), getHeight());
}
canvas.drawBitmap(shape, 0, 0, slipPaint);画布上面,是可以画东西是,是根据bitmap的内容和画笔
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦