Android(安卓)TextView 字体描边
16lz
2022-01-21
package com.zg.mrcheney;import android.content.Context;import android.graphics.Canvas;import android.graphics.Paint;import android.graphics.Paint.FontMetrics;import android.util.AttributeSet;import android.widget.TextView;public class StrokeText extends TextView { private float mBigFontBottom; private float mBigFontHeight; private String text; private Paint mPaint; private int strokeSize = 1; public StrokeText(Context context) { super(context); init(); } public StrokeText(Context context, AttributeSet attrs) { super(context, attrs); init(); } public StrokeText(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); init(); } private void init() { mPaint = new Paint(); mPaint.setAntiAlias(true); mPaint.setTextSize(getTextSize()); mPaint.setColor(getResources().getColor(R.color.font_paint_color)); FontMetrics fm = mPaint.getFontMetrics(); mBigFontBottom = fm.bottom; mBigFontHeight = fm.bottom - fm.top; } @Override protected void onDraw(Canvas canvas) { if (strokeSize > 0 && strokeSize < 4) { float y = getPaddingTop() + mBigFontHeight - mBigFontBottom; canvas.drawText(text, 0, y - strokeSize, mPaint); canvas.drawText(text, 0, y + strokeSize, mPaint); canvas.drawText(text, 0 + strokeSize, y, mPaint); canvas.drawText(text, 0 + strokeSize, y + strokeSize, mPaint); canvas.drawText(text, 0 + strokeSize, y - strokeSize, mPaint); canvas.drawText(text, 0 - strokeSize, y, mPaint); canvas.drawText(text, 0 - strokeSize, y + strokeSize, mPaint); canvas.drawText(text, 0 - strokeSize, y - strokeSize, mPaint); } super.onDraw(canvas); } @Override public void setText(CharSequence text, BufferType type) { super.setText(text, type); this.text = text.toString(); invalidate(); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); if (strokeSize > 0 && strokeSize < 4) { setMeasuredDimension(getMeasuredWidth() + strokeSize, getMeasuredHeight()); } }}
更多相关文章
- 代码中设置drawableleft
- android 3.0 隐藏 系统标题栏
- Android开发中activity切换动画的实现
- Android(安卓)学习 笔记_05. 文件下载
- Android中直播视频技术探究之—摄像头Camera视频源数据采集解析
- 技术博客汇总
- android 2.3 wifi (一)
- AndRoid Notification的清空和修改
- Android中的Chronometer