android画一个圆形图片组件
imageview 显示圆形图片如下图。
圆形头像原理。
1、根据图片创建一个大小相同的画布。
2、在画布上画一个圆形。
3、画一个绘制交集,显示上层。
// 将圆形图片,返回Bitmap public static Bitmap getCircleBitmap(Bitmap bitmap) { int x = bitmap.getWidth(); Bitmap output = Bitmap.createBitmap(x, x, Config.ARGB_8888); Canvas canvas = new Canvas(output); final int color = 0xff424242; final Paint paint = new Paint(); // 根据原来图片大小画一个矩形 final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()); paint.setAntiAlias(true); paint.setColor(color); // 画出一个圆 canvas.drawCircle(x/2, x/2, x/2, paint); canvas.translate(-25, -6); // 取两层绘制交集,显示上层 paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); // 将图片画上去 canvas.drawBitmap(bitmap, rect, rect, paint); // 返回Bitmap对象 return output; }
使用。
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:gravity="center"> <org.open.CircleAvatarView android:layout_width="38dp" android:layout_height="37dp" android:scaleType="centerCrop" android:src="@drawable/default_user_icon" > </org.open.CircleAvatarView> </LinearLayout>