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()); } } }
相关推荐
本篇文章主要介绍了Android为TextView添加字体库和设置描边的方法,具有一定的参考价值,有兴趣的可以了解一下
通过有描边的文本和没描边的文本重叠的形式,并且两个文本为不同颜色则可达到想要的描边效果
android实现TextView文字部分渐变色;LinearGradientFontSpan SpannableString
如果我们的应用需要显示时间,可能首先想到大街上LED显示的绿色的发光字体, 想到 使用时钟控件显示时间,这种效果,我们用 TextView 就可以实现。具体看博客说明:编辑文章 - 博客频道 - CSDN.NET ...
android TextView android TextView
Android TextView 去掉自适应默认的fontpadding的实现方法 最近在项目中使用textview时发现在使用Android:layout_height=”wrap_content”这个属性设置后,textview会有默认的padding,也就是fontpadding。这样就会...
android TextView 支持CSS样式
本文实例讲述了Android TextView实现垂直滚动效果的方法。分享给大家供大家参考,具体如下: 在TextView中,如果文本很长,可能需要实现垂直滚动显示文本的效果。这里需要在XML布局文件中为TextView设置如下几个属性...
MTextView,解决Android TextView提前换行的问题
Android textview 文字中间加上图片
Android SpannableString实现TextView不同大小文字居中显示。
自定义textview字体闪烁效果,代码简单易懂
android textview图文混排支持GIF图 原生方式实现 glide支持
Android TextView 个别文字字体颜色格式
Android TextView 换行不对齐的问题
android textview 文字排版 换行
Android TextView显示html的demo ,演示如何在TextView上显示html效果,包括图片,
Android 一个TextView中设置不同字体大小和颜色