- 思路:向四个方向移动一个像素绘制一个重叠效果,在绘制正常文本,底部的文本就相当于以阴影效果;
- 代码如下:
import android.content.Context; import android.graphics.Canvas; import android.graphics.Paint; import android.util.AttributeSet; import android.widget.TextView; public class ShadowTextView extends TextView{ public ShadowTextView(Context context, AttributeSet attrs) { super(context, attrs); } protected void onDraw(Canvas canvas) { //先绘制一个边框在调用父类的onDraw()方法,绘制正常文本 drawText(canvas); super.onDraw(canvas); } private void drawText(Canvas canvas) { //1.获取画笔对象,这里如果不用父类自己new的话要注意设置字体的大小,不然会使用默认大小会,字会很小 Paint paint = getPaint(); //2.获取文本 String text = String.valueOf(getText()); //3.定位字体位置 //第一行左边距 float startX = getLayout().getLineLeft(0); //第一行文字的底部边距 float startY = getBaseline(); //分别向左,向上,向下,向右一个像素绘制文本形成重叠效果 paint.setColor(getResources().getColor(R.color.textShadowColor)); canvas.drawText(text, startX + 1, startY, paint); canvas.drawText(text, startX, startY - 1, paint); canvas.drawText(text, startX , startY + 1, paint); canvas.drawText(text, startX - 1, startY, paint); } }
时间: 2024-10-03 02:38:17