亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

關于蒙版效果的解析

標簽:
Android
@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的内容和画笔

原文链接:http://www.apkbus.com/blog-865677-63499.html

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消