5、
【ImageView】自定义ImageView系列(一)——简单圆形图片
/**
* 自定义的圆形ImageView,可以直接当组件在布局中使用。
* @author caizhiming
*
*/
public class CircleImageView extends ImageView{
private Paint paint ;
publicCircleImageView(Context context) {
this(context,null);
}
publicCircleImageView(Context context, AttributeSet attrs) {
this(context,attrs,0);
}
publicCircleImageView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs,defStyle);
paint = new Paint();
}
/**
* 绘制圆形图片
* @author caizhiming
*/
@Override
protected voidonDraw(Canvas canvas) {
Drawable drawable =getDrawable();
if (null != drawable){
Bitmap bitmap =((BitmapDrawable) drawable).getBitmap();
Bitmap b =getCircleBitmap(bitmap,14);
final Rect rectSrc= new Rect(0, 0, b.getWidth(), b.getHeight());
final RectrectDest = new Rect(0,0,getWidth(),getHeight());
paint.reset();
canvas.drawBitmap(b, rectSrc, rectDest, paint);
} else {
super.onDraw(canvas);
}
}
/**
* 获取圆形图片方法
* @param bitmap
* @param pixels
* @return Bitmap
* @author caizhiming
*/
private BitmapgetCircleBitmap(Bitmap bitmap, int pixels) {
Bitmap output =Bitmap.createBitmap(bitmap.getWidth(),
bitmap.getHeight(), Config.ARGB_8888);
Canvas canvas = newCanvas(output);
final int color =0xff424242;
final Rect rect = newRect(0, 0, bitmap.getWidth(), bitmap.getHeight());
paint.setAntiAlias(true);
canvas.drawARGB(0, 0,0, 0);
paint.setColor(color);
int x =bitmap.getWidth();
canvas.drawCircle(x /2, x / 2, x / 2, paint);
paint.setXfermode(newPorterDuffXfermode(Mode.SRC_IN));
canvas.drawBitmap(bitmap, rect, rect, paint);
return output;
}
}
(2)定义一个imageView;
<com.yztc.CircleImageUtils.CircleImageView
android:id="@+id/img_Anli_facePic"
android:layout_width="80dp"
android:layout_height="80dp"
android:src="@mipmap/person1"
android:layout_marginBottom="35dp"
android:layout_marginRight="30dp"
android:layout_gravity="right|bottom" />
6、
本文介绍了一种自定义的圆形ImageView实现方法,通过继承ImageView并覆盖onDraw方法来绘制圆形图片。该组件支持直接在布局文件中使用,并提供了关键代码示例。
820

被折叠的 条评论
为什么被折叠?



