Android ImageView實現圓形頭像

2021-09-30 16:30:07 字數 1778 閱讀 2857

一、原理解析

先在canvas上面畫乙個圓形,參照圓形的起點座標、半徑,再畫乙個邊長為圓的直徑的bitmap(這個bitmap就是你想畫的圓形頭像),此時圓和bitmap重疊在一起,圓在下面,bitmap在上面,bitmap覆蓋著圓。

這時,圓形和bitmap相交的部分正是圓大小的面積,如果能將bitmap與圓相交之外的部分去掉,那麼我們看到的就是bitmap的圓形部分了。

二、**實現

public bitmap toroundbitmap(bitmap bitmap)  else   

//構建乙個bitmap

bitmap backgroundbmp = bitmap.createbitmap(width,

height, config.argb_8888);

//new乙個canvas,在backgroundbmp上畫圖

canvas canvas = new canvas(backgroundbmp);

paint paint = new paint();

//設定邊緣光滑,去掉鋸齒

paint.setantialias(true);

//寬高相等,即正方形

rectf rect = new rectf(0, 0, r, r);

//通過制定的rect畫乙個圓角矩形,當圓角x軸方向的半徑等於y軸方向的半徑時,

//且都等於r/2時,畫出來的圓角矩形就是圓形

canvas.drawroundrect(rect, r/2, r/2, paint);

//設定當兩個圖形相交時的模式,src_in為取src圖形相交的部分,多餘的將被去掉

paint.setxfermode(new porterduffxfermode(mode.src_in));

//canvas將bitmap畫在backgroundbmp上

canvas.drawbitmap(bitmap, null, rect, paint);

//返回已經繪畫好的backgroundbmp

return backgroundbmp;

}

三、使用詳解

1 . 從res目錄下的drawable資料夾獲取資源進行轉換

// 以資料流的方式讀取bitmap資源

resources r = this.getresources();

inputstream is = r.openrawresource(r.drawable.iv_head);

bitmapdrawable bmpdraw = new bitmapdrawable(is);

bitmap bmp = bmpdraw.getbitmap();

// 將轉換成圓形

bitmap bm = toroundbitmap(bmp);

//傳給ima**iew進行顯示

imageview.setimagebitmap(bm);

2 . 從sdcard中獲取資源進行轉換

注意:需新增sdcard讀取資料的許可權

bitmap bmp = bitmapfactory.decodefile(path) (path 是的路徑,根目錄是/sdcard)

// 將轉換成圓形

bitmap bm = toroundbitmap(bmp);

//傳給ima**iew進行顯示

imageview.setimagebitmap(bm);

CircleImageView控制項(圓形頭像)

關於圓形頭像的專案需求還是佔相當多的比重的,今天講一講關於android studio的圓形頭像的控制項circleimageview。在布局檔案中新增如下 hdodenhof circleimageview circleimageview android id id profile image a...

變形 圓形 碳鋼橢圓形封頭便宜廠家白朗

碳鋼橢圓形封頭便宜廠家白朗 壓力罐封頭和鍋爐封頭介紹 小口徑熱壓封頭 油罐封頭尺寸 拉薩 油罐封頭尺寸 有小口徑熱壓封頭賣。油罐封頭尺寸 小口徑熱壓封頭,油罐封頭尺寸封頭生產製造廠家油罐封頭尺寸小口徑熱壓封頭 拉薩油罐封頭尺寸 商 油罐封頭尺寸封頭廠家,河北封頭管板,拉薩 沖孔封頭拼接焊縫位置要點介...

iOS 圓形頭像如何實現

思路 view有乙個屬性layer,通過設定cornerradius來設定圓角的半徑,view是正方形的才能保證通過調整圓角半徑來形成圓形頭像 view layer setcornerradius cgrectgetheight view bounds 2 view.layer.maskstobou...