日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android圆形头像 demo,Android图像处理之绘制圆形头像

發(fā)布時間:2024/7/19 Android 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android圆形头像 demo,Android图像处理之绘制圆形头像 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在Android中,繪制圓形和繪制圖片都是很容易的事情,但是繪制圓形圖片就有點難倒人了。以前為了偷懶就直接去github上找一個開源項目,后來才發(fā)現繪制圓形圖片其實也是很簡單的事。繪制圓形圖片也需要兩個步驟:繪制圓形和繪制圖片,只不過要讓它們取并集,得到的結果就是一張圓形圖片了。直接上代碼。

public class CircleImageView extends View {

private Paint mPaint;

private Paint mTargetPaint;

private Bitmap mSourceBitmap;

private Bitmap mTargetBitmap;

private Canvas mTargetCanvas;

private int mWidth;

private int mHeight;

public CircleImageView(Context context) {

this(context, null);

}

public CircleImageView(Context context, AttributeSet attrs) {

this(context, attrs, 0);

}

public CircleImageView(Context context, AttributeSet attrs, int defStyleAttr) {

super(context, attrs, defStyleAttr);

init();

}

private void init() {

mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);

mTargetPaint = new Paint(Paint.ANTI_ALIAS_FLAG);

mTargetPaint.setXfermode(new PorterDuffXfermode(SRC_IN));

mSourceBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.xiaojiangshi);

mTargetBitmap = Bitmap.createBitmap(mSourceBitmap.getWidth(), mSourceBitmap.getHeight(), Bitmap.Config.ARGB_8888);

mTargetCanvas = new Canvas(mTargetBitmap);

}

@Override

protected void onSizeChanged(int w, int h, int oldw, int oldh) {

super.onSizeChanged(w, h, oldw, oldh);

mWidth = w;

mHeight = h;

}

@Override

protected void onDraw(Canvas canvas) {

// 生成圓形Bitmap過程.

int radius = Math.min(mWidth, mHeight) / 2;

// 先繪制圓形

mTargetCanvas.drawCircle(mWidth / 2, mHeight / 2, radius, mPaint);

// 再繪制Bitmap

mTargetCanvas.drawBitmap(mSourceBitmap, 0, 0, mTargetPaint);

canvas.drawBitmap(mTargetBitmap, 0, 0, null);

}

}

效果如下:

代碼中最關鍵的就是這句:

mTargetPaint.setXfermode(new PorterDuffXfermode(SRC_IN));

SRC_IN這種模式可以讓兩個繪制的效果取交集后展現出來,需要注意的是,dst需要先繪制,再繪制src,拿上面例子來說,就是要先繪制圓形,在繪制Bitmap,如果順序顛倒了,你就只能看到一個圓形了。

除了SRC_IN這種模式外,還有其它15種模式。有興趣的可以自己試試看效果。在官方提供的APIDemo中可以找到相應的代碼。

知道這個原理之后,我們就能繪制各種形狀的圖片了,只需要繪制不同的形狀代替繪制圓形這一步驟就可以了。

三角形:

mPath.reset();

mPath.moveTo(mWidth / 2, 0);

mPath.lineTo(0, mHeight);

mPath.lineTo(mWidth, mHeight);

mPath.close();

mTargetCanvas.drawPath(mPath, mPaint);

扇形:

RectF rectF = new RectF(0, 0, mWidth, mHeight);

mTargetCanvas.drawArc(rectF, 210, 120, true, mPaint);

總結

以上是生活随笔為你收集整理的android圆形头像 demo,Android图像处理之绘制圆形头像的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。