Android中实现文字描边的方式有几种,大概有:
1、TextView叠加 这种方式灵活性较差
2、在TextView的onDraw之前绘制一次相同的文字
3、完全自定义,调用两次drawText
第二种和第三种方式本质是一样的,都是调用两次drawText方法。代码:
if (mTextPaint == null) {
mTextPaint = new TextPaint();
mTextPaint.setTextSize(textSize);
mTextPaint.setAntiAlias(true);
mTextPaint.setColor(textColor);
mTextPaint.setDither(true);
mTextPaint.setTextAlign(Paint.Align.CENTER);
mTextStrokePaint = new TextPaint();
mTextStrokePaint.setTextSize(textSize);
mTextStrokePaint.setAntiAlias(true);
mTextStrokePaint.setColor(textStrokeColor);
mTextStrokePaint.setStyle(Style.STROKE);
mTextStrokePaint.setStrokeWidth(textStrokeWidth);
mTextStrokePaint.setDither(true);
mTextStrokePaint.setTextAlign(Paint.Align.CENTER);
}
canvas.drawText(text, 0, baseline, mStrokePaint);
canvas.drawText(text, 0, baseline, mPaint);
其实就是底部绘制一个Stroke类型的文字,在上面绘制一个正常的文字,二者叠加就显示描边效果
效果如下: