-
思路:向四个方向移动一个像素绘制一个重叠效果,在绘制正常文本,底部的文本就相当于以阴影效果;
-
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | 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); } } |
本文转自wauoen51CTO博客,原文链接:http://blog.51cto.com/7183397/1606997 ,如需转载请自行联系原作者