1. 思路:向四个方向移动一个像素绘制一个重叠效果,在绘制正常文本,底部的文本就相当于以阴影效果;

  2. 代码如下:

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 ,如需转载请自行联系原作者