自定義圓形Imageview

2021-07-23 10:51:13 字數 2051 閱讀 6565

1:學習一定要善於總結,和敢於使用新的知識

2:一直使用的都是別人寫好的控制項,今天趁著國慶放假有時間,嘗試自己寫經常要用到的框架

3:知識總結:

一:用於建立canvas的bitmap不能是已經存在的bitmap

二:這個自定view中遇到乙個坑就是的大小和遮罩大小不匹配是,需要我們對bitmap做伸縮處理,這個用到bitmapshader渲染器,它的使用很簡單,只需要算出要畫的的寬高和整個view的寬高比,用矩陣設定bitmapshader後,再用bitmapshader設定paint,最後使用

rect destrect = new rect(0,0

,getwidth(),getheight());

rect srcrect = new rect(0,0

,bitmap.getwidth(),bitmap.getheight());

canvas.drawbitmap(bitmap,srcrect,destrect,paint);

將畫出來這裡的destrect代表畫的目標區域大小,srcrect指的是原顯示的位置

package com.xubaipei.viewlib;

import android.content.context;

import android.graphics.bitmap;

import android.graphics.bitmapshader;

import android.graphics.canvas;

import android.graphics.color;

import android.graphics.matrix;

import android.graphics.paint;

import android.graphics.porterduff;

import android.graphics.porterduffxfermode

;import android.graphics.rect;

import android.graphics.rectf;

import android.graphics.shader;

import android.graphics.drawable.bitmapdrawable;

import android.graphics.drawable.drawable;

import android.util.attributeset;

import android.widget.imageview;

/*** created by administrator on 2016/10/6.

*/public class circleimageview extends imageview

public circleimageview(context context, attributeset attrs)

public circleimageview(context context, attributeset attrs, int defstyleattr)

public void

initview()

@override

protected void

onmeasure(int widthmeasurespec, int heightmeasurespec)

if (heightspecmode == measurespec.at_most

) int min = math.min(width,height);

setmeasureddimension(min,min);

} @override

protected void

ondraw(canvas canvas)

public void

drawcircle(canvas canvas)

private void

setshader(bitmap bitmap,paint paint)

public bitmap getcirclebitmap( )

}

自定義圓形 ImageView

android預設的imageview是矩形的,為了達到圓形的目的,需要自定義控制項,繼承imageview,重寫ondraw函式。最終效果 具體步驟 1.先根據控制項的短的一邊為半徑繪製乙個圓形 bitmap bitmap bitmapdrawable drawable getbitmap int...

自定義圓形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 ...