android預設的imageview是矩形的,為了達到圓形的目的,需要自定義控制項,繼承imageview,重寫ondraw函式。
最終效果:
具體步驟:
1. 先根據控制項的短的一邊為半徑繪製乙個圓形;
bitmap bitmap = ((bitmapdrawable) drawable).getbitmap();
int width = getwidth();
int height = getheight();
int diameter = width < height ? width : height;
final rect rectsrc = new rect(0, 0, bitmap.getwidth(), bitmap.getheight());
final rect rectdst = new rect(0, 0, width, height);
bitmap bitmaprounded = bitmap.createbitmap(getwidth(),
getheight(), config.argb_8888);
canvas canvasrounded = new canvas(bitmaprounded);
canvasrounded.drawcircle(width / 2, height / 2, diameter / 2, mpaint);
2. 將畫筆的porterduffxfermode 模式設定為src_in,為了讓隨後繪製的圖形出現在剛才繪製的圓形內;
mpaint.setxfermode(new porterduffxfermode(mode.src_in));
canvasrounded.drawbitmap(bitmap, rectsrc, rectdst, mpaint);
3. 得到圓形圖形後,我們還可以給它繪製乙個邊;
canvas.drawcircle(width / 2, height / 2, diameter / 2 - mbordersize / 2, mpaintofborder);
注意這裡的畫筆mpaintofborder 需要設定為stroke型別;
4. 這樣乙個圓形的就完成了,可以再增加一些介面設定圓形的顏色和寬度。
public void showborder(int color)
public void showborder(int color, float size)
詳細請見**:
csdn: 或者
github:
自定義圓形Imageview
1 學習一定要善於總結,和敢於使用新的知識 2 一直使用的都是別人寫好的控制項,今天趁著國慶放假有時間,嘗試自己寫經常要用到的框架 3 知識總結 一 用於建立canvas的bitmap不能是已經存在的bitmap 二 這個自定view中遇到乙個坑就是的大小和遮罩大小不匹配是,需要我們對bitmap做...
自定義圓形ImageView控制項
首先自定義roundimageview繼承imageview package com.bawei.view import android.annotation.suppresslint import android.content.context import android.content.res...
自定義圓形或圓角imageview
package com.yelong.medicalscience.widgets import android.annotation.suppresslint import android.content.context import android.graphics.bitmap import ...