思路:向四个方向移动一个像素绘制一个重叠效果,在绘制正常文本,底部的文本就相当于以阴影效果;
代码如下:
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);
}
}
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。