您的位置:首页 > 移动开发 > Android开发

android 自己绘画圆形文字bitmap

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

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;
}
}
这样子就可以实现自己绘画出的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: