自定义圆形View的两种方式

方法一:BitmapShader+Matrix

(1)继承自ImageView,不用处理wrap_content和padding问题。
(2)重写onMesure()方法,得到测量宽高,然后取最小值,作为半径。然后设置宽高为它们之间的最小值。
(3)得到图片对应的Drawable,转化为相应的Bitmap。(转化的方法)
(4)根据得到的Bitmap创建BitmapShader;根据Bitmap和View得到缩放比;
给BitmapShader设置Matrix;
(5)onDraw绘制
(6)onSavaInstantState()和onRestoreInstantState()存储半径。

方法二:Xfermode

(1)继承自ImageView,不用处理wrap_content和padding问题。
(2)重写onMesure()方法,得到测量宽高,然后取最小值,作为半径。然后设置宽高为它们之间的最小值。
(3)得到图片对应的Drawable,转化为相应的Bitmap。(转化的方法)
(4)创建View对应的的Bitmap。绘制圆形。
(5)采用的是DST_IN模式。先绘制图片,在绘制View(形状)

你可能感兴趣的:(自定义圆形View的两种方式)