android 自己绘画圆形文字bitmap

项目前段时间做的一个小任务,就是要给每个用户自己定义一个头像,(仿钉钉的用户头像那样子)。废话不多说,直接上代码。

public class DrawUtils {

	/**
	 * 
	 * @param bitmapColor   圆的颜色
	 * @param backColor        图片背景颜色
	 * @param txtColor           文字的颜色
	 * @param text                  文字
	 * @param circleWidth     图片宽度
	 * @param circleHeight    图片高度
	 * @return
	 */
	public Bitmap drawImg(int bitmapColor,int backColor,int txtColor,String text,int circleWidth,int circleHeight){
		if(circleHeight <= 0){ //做判断,如果传入的高度为0,则默认为60
			circleHeight = 60;
		}
		if(circleWidth <= 0){ //做判断,如果传入的宽度为0,则默认为60
			circleWidth = 60;
		}
		if(text == null){ //如果传入的文字为空,则设置为空格
			text = " ";
		}
		Bitmap bitmap = Bitmap.createBitmap(circleWidth, circleHeight, Config.ARGB_8888);//设置生成的bitmap为高清
		Canvas canvas = new Canvas(bitmap);
		canvas.drawColor(bitmapColor);
		Paint paint = new Paint();
		paint.setAntiAlias(true);
		paint.setColor(backColor);
		int raduis = Math.min(bitmap.getWidth()/2, bitmap.getHeight()/2);
		canvas.drawCircle(bitmap.getWidth()/2, bitmap.getHeight()/2, raduis, paint); 
		Paint txtPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
		txtPaint.setTextSize(bitmap.getHeight()/3);
		txtPaint.setColor(txtColor);
		txtPaint.setStrokeWidth(10);
		txtPaint.setTextSize(bitmap.getHeight()/3);
		float txtWid = txtPaint.measureText(text);
		if(text.length() == 1){
			canvas.drawText(text,(bitmap.getWidth()-txtWid)/2, bitmap.getHeight()/2+bitmap.getHeight()/3/2, txtPaint);
		}else{
			canvas.drawText(text,(bitmap.getWidth()-txtWid)/text.length(), bitmap.getHeight()/2+bitmap.getHeight()/3/2, txtPaint);
		}
		canvas.save(Canvas.ALL_SAVE_FLAG);
		canvas.restore();
		return bitmap;
	}
}
这样子就可以实现自己绘画出的

你可能感兴趣的:(android)