【圆角头像的实现】

圆角头像的实现

  public class ImageHelper {

  /**

  * 转换图片成圆形

  * @param bitmap 传入Bitmap对象

  * @return

  */

  public static Bitmap toRoundBitmap(Bitmap bitmap) {

  int width = bitmap.getWidth();

  int height = bitmap.getHeight();

  float roundPx;

  float left,top,right,bottom,dst_left,dst_top,dst_right,dst_bottom;

  if (width <= height) {

  roundPx = width / 2;

  top = 0;

  bottom = width;

  left = 0;

  right = width;

  height = width;

  dst_left = 0;

  dst_top = 0;

  dst_right = width;

  dst_bottom = width;

  } else {

  roundPx = height / 2;

  float clip = (width - height) / 2;

  left = clip;

  right = width - clip;

  top = 0;

  bottom = height;

  width = height;

  dst_left = 0;

  dst_top = 0;

  dst_right = height;

  dst_bottom = height;

  }

  Bitmap output = Bitmap. createBitmap(width,

  height, Config. ARGB_8888 );

  Canvas canvas = new Canvas(output);

  final int color = 0xff424242;

  final Paint paint = new Paint();

  final Rect src = new Rect(( int)left, ( int )top, ( int)right, (int )bottom);

  final Rect dst = new Rect(( int)dst_left, ( int )dst_top, (int )dst_right, ( int)dst_bottom);

  final RectF rectF = new RectF(dst);

  paint.setAntiAlias( true );

  canvas.drawARGB(0, 0, 0, 0);

  paint.setColor(color);

  canvas.drawRoundRect(rectF, roundPx, roundPx, paint);

  paint.setXfermode( new PorterDuffXfermode(Mode. SRC_IN));

  canvas.drawBitmap(bitmap, src, dst, paint);

  return output;

  }

  }

  /* 将头像转为圆形 */

  Resources res = getResources();

  Bitmap bmp = BitmapFactory.decodeResource(res, R.drawable.head);

  head.setImageBitmap(ImageHelper.toRoundBitmap(bmp));

posted on 2013-08-22 14:31  潇洒kman  阅读(211)  评论(0编辑  收藏  举报