android:id="@+id/roundimage"
android:layout_width="400dp"
android:layout_height="400dp"
/>
///
View v = View.inflate(getActivity(), R.layout.activity_main,null);
image = (ImageView)v.findViewById(R.id.roundimage);
Bitmap bitmap = BitmapFactory.decodeResource(getResources(),
R.drawable.ic_launcher);
Bitmap bm = Tp.getRoundBitmap(bitmap);
image.setImageBitmap(bm);
/
attrs.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="RotateTextView">
<attr name="degree" format="dimension" />
</declare-styleable>
<declare-styleable name="CircleImageView">
<attr name="border_width" format="dimension" />
<attr name="border_color" format="color" />
</declare-styleable>
<declare-styleable name="CropImageView">
<attr name="guidelines">
<enum name="on" value="2"/>
<enum name="onTouch" value="1"/>
<enum name="off" value="0"/>
</attr>
<attr name="fixAspectRatio" format="boolean"/>
<attr name="aspectRatioX" format="integer"/>
<attr name="aspectRatioY" format= "integer"/>
<attr name="imageResource" format="reference"/>
</declare-styleable>
</resources>
//
public class Tp {
public static Bitmap getRoundBitmap(Bitmap bitmap) {
// 获取传入进来的Bitmap宽度和高度
int width = bitmap.getWidth();
int height = bitmap.getHeight();
int r = 0;// 园的半径
if (width < height) {
r = width;
} else {
r = height;
}
// 新建一个bitmap,相当于传入进来的bitmap的copy
Bitmap backgroundBitmap = Bitmap.createBitmap(width, height,
Config.ARGB_8888);
// 建立画布
Canvas canvas = new Canvas(backgroundBitmap);
// 建立画笔
Paint paint = new Paint();
// 无锯齿
paint.setAntiAlias(true);
// 矩形
RectF rect = new RectF(0, 0, r, r);
// 画圆角矩形,当它的宽和高一样时,就是一个圆了
canvas.drawRoundRect(rect, r / 2, r / 2, paint);
// 取画布和bitmap相交的部分,即展示的圆
paint.setXfermode(new PorterDuffXfermode(android.graphics.PorterDuff.Mode.SRC_IN));
// 画出圆形头像
canvas.drawBitmap(bitmap, null, rect, paint);
return backgroundBitmap;
}