@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 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦