自定義圓形 ImageView

2021-08-09 05:15:34 字數 1417 閱讀 5379

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 ...