private void drawString(String text) {
Bitmap canvasBitmap = Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.ARGB_8888);
mCacheCanvas = new Canvas(canvasBitmap);
mCacheCanvas.setDrawFilter(new PaintFlagsDrawFilter(0, Paint.ANTI_ALIAS_FLAG|Paint.FILTER_BITMAP_FLAG));
if (mCacheCanvas != null) {
// 取得当前画笔下一个汉字的宽度
Paint curPaint = new Paint();
curPaint.setARGB(255, 255, 255, 255);
curPaint.setStyle(Paint.Style.STROKE); // 设置画笔模式为描边
curPaint.setAntiAlias(true);
curPaint.setFilterBitmap(true);
curPaint.setStrokeCap(Paint.Cap.ROUND);
curPaint.setStrokeJoin(Paint.Join.ROUND);
curPaint.setTextSize(80);
curPaint.setTypeface(Typeface.defaultFromStyle(Typeface.NORMAL));
curPaint.setStrokeWidth(4);
int iTextX = (int) ((getWidth()/2) - (curPaint.measureText(text) / 2));
// 获取字体度量标准
Paint.FontMetrics fontMetrics = curPaint.getFontMetrics();
int iTextY = (int) ((getHeight()/2) + (((fontMetrics.bottom - fontMetrics.top) / 2) - fontMetrics.bottom));
mCacheCanvas.drawText(text, iTextX, iTextY, curPaint);
}
}
参考资料: