一、原理解析
先在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...