前一段时间一直在做富文本展示和文本处理,主要用到了Html.fromHtml()实现加载网页,但实现整段文本的某些特殊如个别文字的点击,改背景色、前景色等效果,就用到了我们今天要用到的Span这个类。
关于加载网页或个别文字点击效果,可以阅读我之前写的一篇文章——用TextView实现富文本展示,点击断句和语音播报。
您也关注:
- https://github.com/shuaijia/SpanString
- https://github.com/shuaijia/RichTextView
- 我的微信公众号——安卓干货营
那接下来就先看下效果图
今天会简单介绍几个Span的基本用法,也会分享一些比较酷炫的使用方法:
- 设置字体颜色
- 改变字体背景色
- 给文本添加下划线
- 给文本加边框
- 彩虹色文字
- 彩虹色字体渐变动画
- 打字效果展示文本
1、设置字体颜色
/**
* 设置不同颜色文字
*/
private void setForegroundColor() {
SpannableString spannableString = new SpannableString(
"我爱北京天安门,天安门上太阳升 我爱北京天安门,天安门上太阳升");
spannableString.setSpan(new ForegroundColorSpan(Color.RED), 0, 16, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
tv_diff_color.setText(spannableString);
}
2、改变字体背景色
/**
* 设置背景色
*/
private void setBackgroundColor() {
SpannableString spannableString = new SpannableString(
"我爱北京天安门,天安门上太阳升 我爱北京天安门,天安门上太阳升");
spannableString.setSpan(new BackgroundColorSpan(Color.RED), 0, 16, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
tv_bg_color.setText(spannableString);
}
3、给文本添加下划线
/**
* 设置超链接
*/
private void setLink() {
SpannableString spannableString = new SpannableString(
"我爱北京天安门,天安门上太阳升 我爱北京天安门,天安门上太阳升");
//设置下划线
spannableString.setSpan(new UnderlineSpan(), 0, 16, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
tv_link.setText(spannableString);
}
4、给文本加边框
这种效果就不再是简单的直接使用系统提供的Span类就可以了,需要我们自定义:
public class FrameSpan extends ReplacementSpan {
private final Paint mPaint;