SpannableStringUtil实现丰富文字效果
前言
在android开发中,我们不免会用到 TextView 的各种显示效果,如字体样式,颜色,大小,背景等。今天要讲的就是这么一个工具类SpannableStringUtil,方便快捷的实现各种文字效果。
今天涉及的内容有:
- SpannableString"截取"基本介绍
- SpannableStringUtil的各种特效使用介绍
- SpannableStringUtil的综合使用
- 效果图和项目结构图
注:文字效果的使用封装到SpannableStringUtil类中,具体使用大家可以参考demo,下面做具体介绍。
一. SpannableString"截取"基本介绍
SpannableString设置样式的时候,涉及到下标"截取"样式的问题,其"截取"样式分以下四种:
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE: (start,end) --- 前后下标都不包括
Spanned.SPAN_EXCLUSIVE_INCLUSIVE: (start,end] --- 前面不包括,后面包括
Spanned.SPAN_INCLUSIVE_EXCLUSIVE: [start,end) --- 前面包括,后面不包括
Spanned.SPAN_INCLUSIVE_INCLUSIVE: [start,end] --- 前后都包括
二. SpannableStringUtil的各种特效使用介绍
2.01 设置字体大小
//设置字体大小
String textSizeStr="设置字体大小";
String textSizeChar="字体";
SpannableString textSizeSp=SpannableStringUtil.setTextSize(textSizeStr,textSizeChar,1.5f);
mTvTextSize.setText(textSizeSp);
2.02 设置文字前景色
//设置文字前景色
String textFrontColorStr="设置文字前景色";
String textFrontColorChar="前景色";
SpannableString textFrontColorSp=SpannableStringUtil.setTextFrontColor(textFrontColorStr,textFrontColorChar,R.color.red);
mTvTextFrontColor.setText(textFrontColorSp);
2.03 设置背景色
//设置背景色
String textBgColorStr="设置背景色";
String textBgColorChar="背景色";
SpannableString textBgColorSp=SpannableStringUtil.setTextBackgroundColor(textBgColorStr,textBgColorChar,R.color.blue);
mTvTextBgColor.setText(textBgColorSp);
2.04 设置字体样式
String textStyleStr="设置字体样式,普通,粗体,斜体,粗斜体,写完了";
String textStyleOneChar="普通";
String textStyleTwoChar="粗体";
String textStyleThreeChar="斜体";
String textStyleFourChar="粗斜体";
SpannableString oneSp=SpannableStringUtil.setTextStyle(textStyleStr,textStyleOneChar, Typeface.NORMAL);
SpannableString twoSp=SpannableStringUtil.setTextStyle(oneSp,textStyleTwoChar, Typeface.BOLD);
SpannableString threeSp=SpannableStringUtil.setTextStyle(twoSp,textStyleThreeChar, Typeface.ITALIC);
SpannableString fourSp=SpannableStringUtil.setTextStyle(threeSp,textStyleFourChar, Typeface.BOLD_ITALIC);
mTvTextStyle.setText(fourSp);
2.05 设置文字划线
String textLineStr="设置文字划线,下划线和中划线,写完了";
String textLineOneChar="下划线";
String textLineTwoChar="中划线";
SpannableString onefSp=SpannableStringUtil.setTextLine(textLineStr,textLineOneChar,false);
SpannableString twofSp=SpannableStringUtil.setTextLine(onefSp,textLineTwoChar,true);
mTvTextLine.setText(twofSp);
2.06 设置内容上角标,下角标
注意mTvTextMark要设置足够的paddingTop和paddingBottom,不然上下标会显示不全
//设置内容上角标,下角标
//注意mTvTextMark要设置足够的paddingTop和paddingBottom,不然上下标会显示不全
String textMarkStr="设置文字上角标和文字下角标";
String textMarkOneChar="上角标";
String textMarkTwoChar="下角标";
SpannableString oneMarkSp=SpannableStringUtil.setTextMark(textMarkStr,textMarkOneChar,true);
SpannableString twoMarkSp=SpannableStringUtil.setTextMark(oneMarkSp,textMarkTwoChar,false);
mTvTextMark.setText(twoMarkSp);
2.07 设置内容沿x方向拉伸
String textXStr="设置内容沿x方向拉伸";
String textXChar="x方向拉伸";
SpannableString xSp=SpannableStringUtil.setTextScaleX(textXStr,textXChar,2f);
mTvTextXscale.setText(xSp);
2.08 左侧右侧插入图片
String pictureStr="设置左侧和右侧插入图片";
String pictureOneChar="左";
String pictureTwoChar="右";
SpannableString pictureOneSp=SpannableStringUtil.setTextLeftImage(pictureStr,pictureOneChar,R.mipmap.ic_check);
SpannableString pictureTwoSp=SpannableStringUtil.setTextRightImage(pictureOneSp,pictureTwoChar,R.mipmap.ic_check);
mTvPicture.setText(pictureTwoSp);
2.09 将文字替换成图片
String replaceStr="将文字替换成图片";
String replaceChar="文字";
SpannableString replaceSp=SpannableStringUtil.replaceTextByImage(replaceStr,replaceChar,R.mipmap.ic_check);
mTvReplaceByImage.setText(replaceSp);
2.10 设置可点击
//设置可点击
String clickableStr="我是可以点击的";
String clickableChar="点击";
SpannableString clickableSp=SpannableStringUtil.setClickText(clickableStr, clickableChar, R.color.red, false, new View.OnClickListener() {
@Override
public void onClick(View v) {
showShort("我被点击了");
}
});
mTvTextClick.setText(clickableSp);
//必须设置才能响应点击事件
mTvTextClick.setMovementMethod(LinkMovementMethod.getInstance());
2.11 打电话
//打电话
String callStr="电话号码:13721057328";
String callChar="13721057328";
SpannableString callSp=SpannableStringUtil.callUp(callStr,callChar,callChar);
mTvTextCall.setText(callSp);
//必须设置才能响应点击事件
mTvTextCall.setMovementMethod(LinkMovementMethod.getInstance());
2.12 发邮件,短信,彩信
//发邮件,短信,彩信
String functionStr="发邮件,短信,彩信";
String emailChar="邮件";
String smsChar="短信";
String mmsChar="彩信";
String functionEmail="125489713@qq.com";
String functionPhone="13721057328";
SpannableString functionSp1=SpannableStringUtil.sendEmail(functionStr,functionEmail,emailChar);
SpannableString functionSp2=SpannableStringUtil.sendSMS(functionSp1,functionPhone,smsChar);
SpannableString functionSp3=SpannableStringUtil.sendMMS(functionSp2,functionPhone,mmsChar);
mTvTextFunction.setText(functionSp3);
//必须设置才能响应点击事件
mTvTextFunction.setMovementMethod(LinkMovementMethod.getInstance());
2.13 打开地图,网页和超链接
String geoStr="打开地图,网页和超链接";
String longitude="121.4";//经度
String latitude="121.4";//纬度
SpannableString geoSp=SpannableStringUtil.sendGEO(geoStr,longitude,latitude,"地图");
SpannableString webSp=SpannableStringUtil.openWeb(geoSp,"http://www.baidu.com","网页");
SpannableString urlSp=SpannableStringUtil.setTextURL(webSp,"http://www.baidu.com","超链接");
mTvTextGEO.setText(urlSp);
//必须设置才能响应点击事件
mTvTextGEO.setMovementMethod(LinkMovementMethod.getInstance());
2.14 设置项目符号
//设置项目符号
String itemStr="设置项目符号";
SpannableString itemSp=SpannableStringUtil.setTextItem(itemStr,10,R.color.black,itemStr);
mTvTextItem.setText(itemSp);
2.15 设置字体模糊ABCD和浮雕效果
注:设置浮雕效果需要在对应的mainfast的activity中添加android:hardwareAccelerated="false"
String effectStr="设置字体模糊ABCD和浮雕效果";
SpannableString defultEffectSp=SpannableStringUtil.setTextFuzzy(effectStr,10, BlurMaskFilter.Blur.NORMAL,"A");
SpannableString innerEffectSp=SpannableStringUtil.setTextFuzzy(defultEffectSp,10, BlurMaskFilter.Blur.INNER,"B");
SpannableString outerEffectSp=SpannableStringUtil.setTextFuzzy(innerEffectSp,10, BlurMaskFilter.Blur.OUTER,"C");
SpannableString solidEffectSp=SpannableStringUtil.setTextFuzzy(outerEffectSp,10, BlurMaskFilter.Blur.SOLID,"D");
//设置浮雕效果需要在对应的mainfast的activity中添加android:hardwareAccelerated="false"
SpannableString reliefEffectSp=SpannableStringUtil.setTextRelief(solidEffectSp,new float[]{10, 10, 10}, 0.5f, 1f, 1f,"浮雕");
mTvTextEffect.setText(reliefEffectSp);
在mainfast中加入配置代码如下:
<activity android:name=".MainActivity"
android:hardwareAccelerated="false">
//以下代码省略
//......
</activity>
三. SpannableStringUtil的综合使用
下面以实现有新消息展示有圆点为例:
实现代码如下:
//综合使用,展示新消息小圆点
String pointStr="新消息•";
String pointFrontColorChar="•";
SpannableString pointSizeSp=SpannableStringUtil.setTextSize(pointStr,pointFrontColorChar,2.2f);
SpannableString pointFrontColorSp=SpannableStringUtil.setTextFrontColor(pointSizeSp,pointFrontColorChar,R.color.red);
mTvTextPoint.setText(pointFrontColorSp);
四.效果图和项目结构图
实现小圆点的效果图

整体效果图

项目结构图
SpannableStringUtil实现丰富文字效果
注:本文著作权归作者,由demo大师代发,拒绝转载,转载需要作者授权
SpannableStringUtil实现丰富文字效果的更多相关文章
- Qt qml 模拟iphone slide to unlock 的聚光动画文字效果
模拟iphone slide to unlock 的聚光动画文字效果 /底层放淡文字 /前景放高亮文字+半透明遮罩 /动画移动遮罩 Author: surfsky.cnblogs.c ...
- as3.0:文字 效果
//文字描边效果var tf1 = _root.createTextField("tf1", _root.getNextHighestDepth(), 10, 10, 0, 0); ...
- CSS Gradient文字效果
你想创建的标题没有渲染和Photoshop每个标题吗?这里是一个简单的CSS技巧向您展示如何创建渐变文字效果,PNG图像(纯CSS,没有Javascript或Flash).你所需要的是一个空的< ...
- 如何通过PS制作图片文字效果
如图这是最终效果,下面我为大家介绍如何制作这种图片文字效果 准备一张图: 方法,步骤: 首先我们打开PHOTOSHOP,插入一张图片. 之后按键盘上面的"T"键快捷键启用文字工具, ...
- JAVA 跑马灯文字效果
JAVA跑马灯文字效果的实现: 1. 首先创建一个继承JFrame类的HorseRaceLightTextFrame窗体类,代码如下: package com.example.horseracelig ...
- 移动端 iphone锁屏文字效果
简易的仿照iphone 效果 笔记备份 <!DOCTYPE HTML> <html> <head> <meta http-equiv="Conten ...
- 精通CSS+DIV网页样式与布局--CSS文字效果
上篇文章,小编简单的介绍了一下CSS的一些基本语法,学习内容不是很复杂,都是CSS的一些入门知识,但是万丈高楼平地起,搭好地基,高楼大厦不在话下,学习任何课程,都必须从基础开始,一步一个脚印,踏实坚定 ...
- CSS3动画:流彩文字效果+图片模糊效果+边框伸展效果实现
前言 首先第一步,先布局html代码如下: <div class="wrap"> <img src="images/1.jpg" class= ...
- CSS3下的渐变文字效果实现
如下,第一种方法已实践 一.方法一:借助mask-image属性 可以狠狠地点击这里:CSS3下的渐变文字效果方法一demo 如果您手头上的浏览器是Chrome或是Safari,则您可以在demo页面 ...
随机推荐
- Html 列表 li ul使用
html中偶尔会使用到列表,记录一下. <!DOCTYPE html> <html> <head> <meta charset="UTF-8&quo ...
- go语言之进阶篇方法的继承
1.方法的继承 示例: package main import "fmt" type Person struct { name string //名字 sex byte //性别, ...
- zookeeper基础知识整理
http://blog.csdn.net/pelick/article/details/7269670 http://zookeeper.apache.org/doc/trunk/javaExampl ...
- Spark参数设置的方式
可以通过以下几种方式设置: 1)bin/spark-submit 可以直接读取conf/spark-defaults.conf文件 每一行为一个key和valuespark.master ...
- IDEA注册码和license服务器附使用方法
以下两种方式均可激活intellij Idea 15和16版本 最上方点击,Help->Registet 1.注册码 43B4A73YYJ-eyJsaWNlbnNlSWQiOiI0M0I0QTc ...
- DISQLite3在XE4中的安装
时隔这么久,因为工作中需要将一些图片序列文件进行分析,然后将结果进行分组统计,而分组统计用SQL语法很容易实现,但是要求程序运行的环境中安装有庞大的数据库系统,经过网上的寻找,终于发现了SQLite. ...
- ThinkPHP3.2多域名 Virtual .htaccess 匹配 RewriteCond %{HTTP_HOST}
<Files *> Options -Indexes </Files> <IfModule mod_headers.c> <FilesMatch " ...
- .Net 泛型约束
本文内容 使用泛型约束的原因 未绑定的类型参数 作为约束的类型参数 参考资料 当"设计模式"出现时,人们提"用接口编程":后来,有了泛型,人们提"用泛 ...
- Android Toast 使用总结
本文内容 环境 演示 Toast 使用 环境 Windows 2008 R2 64 位 Eclipse ADT V22.6.2,Android 4.4.3 三星 SM-G3508,Android OS ...
- centos下mysql自动备份
#!/bin/bashdb_user="root"db_passwd="123456"db_name="test_db"#进入备份目录将之前 ...