- package com.zyh.cricleimageview;
- import android.content.Context;
- import android.graphics.Bitmap;
- import android.graphics.Canvas;
- import android.graphics.Color;
- import android.graphics.Matrix;
- import android.graphics.Paint;
- import android.graphics.Path;
- import android.util.AttributeSet;
- import android.widget.ImageView;
- /**
- * 圆角图片
- * @author zyh
- */
- public class CircleImageView extends ImageView {
- public CircleImageView(Context context) {
- super(context);
- }
- public CircleImageView(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
- public CircleImageView(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
- }
- private int bWidth = 10;// 边框宽度
- private int bColor = Color.WHITE;// 边框颜色
- /**
- * 设置圆形图片的边框颜色
- * @param color
- */
- public void setBorderColor(int color) {
- bColor = color;
- }
- /**
- * 设置圆形图片的边框宽度
- * @param
- */
- public void setBorderWidth(int width) {
- bWidth = width;
- }
- /**
- * 设置圆形图片的边框宽度和颜色
- * @param
- */
- public void setBorderWidth(int width, int color) {
- bWidth = width;
- bColor = color;
- }
- @Override
- public void setImageBitmap(Bitmap bm) {
- int d = Math.min(bm.getWidth(), bm.getHeight());// 或得圆直径
- Bitmap dest = Bitmap.createBitmap(d, d, bm.getConfig());// 创建一个副本
- // 画边框
- Canvas c = new Canvas(dest);
- Paint paint = new Paint();
- paint.setColor(bColor); // 边框颜色
- paint.setAntiAlias(true);// 设置抗锯齿
- c.drawCircle(d / 2, d / 2, d / 2, paint);
- // 画圆
- Path path = new Path();
- path.addCircle(d / 2, d / 2, d / 2 - bWidth, Path.Direction.CW);
- c.clipPath(path); // 裁剪区域
- Matrix matrix = new Matrix();// 不缩放
- c.drawBitmap(bm, matrix, paint);// 把图画上去
- super.setImageBitmap(dest);
- }
- }
使用
- public class MainActivity extends Activity {
- private CircleImageView iv;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- iv = (CircleImageView) findViewById(R.id.iv);
- iv.setBorderWidth(15, Color.BLUE);// 设置边框
- iv.setImageBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.photo)); // 设置图片
- }
- }