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页面 ...
随机推荐
- Kafka深度解析(如何在producer中指定partition)(转)
原文链接:Kafka深度解析 背景介绍 Kafka简介 Kafka是一种分布式的,基于发布/订阅的消息系统.主要设计目标如下: 以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能 ...
- 数据库实例: STOREBOOK > 用户 > 编辑 用户: SYS
ylbtech-Oracle:数据库实例: 数据库实例: STOREBOOK > 用户 > 编辑 用户: SYS 编辑 用户: SYS 1. 一般信息返回顶部 1.1, 1.2, ...
- Andriod源码搜集
1.一个左侧抽屉式导航NavigationDraw 教程:http://developer.android.com/training/implementing-navigation/nav-drawe ...
- LeetCode 总结
LeetCode 方法详解
- [转载]设置Chrome忽略网站证书错误
某些用户可能经常会遇到Chrome浏览器提示网站证书错误的情况,尤其是在Google升级证书检查力度之后,访问Google时已经不能在浏览器界面中忽略证书错误访问. 比如说公司的IT修改过证书就会遇到 ...
- Android基于RecyclerView实现高亮搜索列表
这篇应该是RecycleView的第四篇了,RecycleView真是新生代的宠儿能做这么多的事情. 转载请注明作者AndroidMsky及原文链接 http://blog.csdn.net/Andr ...
- JavaScript 移动和触摸框架
jQuery Mobile : 是 jQuery 在手机上和平板设备上的版本号. jQuery Mobile 不仅会给主流移动平台带来jQuery核心库.而且会公布一个完整统一的jQuery移动UI ...
- 使用 Edit + MASM 5.0 编译器 + Linker 连接器
其实这种方式是很简单的,只是很麻烦,因为简单而且麻烦, 所以我采用尽可能的将截图传上来,然后稍加注解的方式进行介绍, 软件准备: 需要 MASM 5.0 或者以上的汇编编译器 首先,是要编辑汇编源代码 ...
- 我的四轴专用PID参数整定方法及原理---超长文慎入(转)
给四轴调了好久的PID,总算是调好了,现分享PID参数整定的心得给大家,还请大家喷的时候手下留情. 首先说明一下,这篇文章的主旨并不是直接教你怎么调,而是告诉你这么调有什么道理,还要告诉大家为什么'只 ...
- (转)AssetBundle系列——共享资源打包/依赖资源打包
有人在之前的博客中问我有关共享资源打包的代码,其实这一块很简单,就两个函数: BuildPipeline.PushAssetDependencies():依赖资源压栈: BuildPipeline.P ...