代码地址如下:
http://www.demodashi.com/demo/15007.html

前言

在android开发中,我们不免会用到 TextView 的各种显示效果,如字体样式,颜色,大小,背景等。今天要讲的就是这么一个工具类SpannableStringUtil,方便快捷的实现各种文字效果。

今天涉及的内容有:

  1. SpannableString"截取"基本介绍
  2. SpannableStringUtil的各种特效使用介绍
  3. SpannableStringUtil的综合使用
  4. 效果图和项目结构图

注:文字效果的使用封装到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实现丰富文字效果

代码地址如下:
http://www.demodashi.com/demo/15007.html

注:本文著作权归作者,由demo大师代发,拒绝转载,转载需要作者授权

SpannableStringUtil实现丰富文字效果的更多相关文章

  1. Qt qml 模拟iphone slide to unlock 的聚光动画文字效果

    模拟iphone slide to unlock 的聚光动画文字效果    /底层放淡文字    /前景放高亮文字+半透明遮罩    /动画移动遮罩 Author: surfsky.cnblogs.c ...

  2. as3.0:文字 效果

    //文字描边效果var tf1 = _root.createTextField("tf1", _root.getNextHighestDepth(), 10, 10, 0, 0); ...

  3. CSS Gradient文字效果

    你想创建的标题没有渲染和Photoshop每个标题吗?这里是一个简单的CSS技巧向您展示如何创建渐变文字效果,PNG图像(纯CSS,没有Javascript或Flash).你所需要的是一个空的< ...

  4. 如何通过PS制作图片文字效果

    如图这是最终效果,下面我为大家介绍如何制作这种图片文字效果 准备一张图: 方法,步骤: 首先我们打开PHOTOSHOP,插入一张图片. 之后按键盘上面的"T"键快捷键启用文字工具, ...

  5. JAVA 跑马灯文字效果

    JAVA跑马灯文字效果的实现: 1. 首先创建一个继承JFrame类的HorseRaceLightTextFrame窗体类,代码如下: package com.example.horseracelig ...

  6. 移动端 iphone锁屏文字效果

    简易的仿照iphone 效果 笔记备份 <!DOCTYPE HTML> <html> <head> <meta http-equiv="Conten ...

  7. 精通CSS+DIV网页样式与布局--CSS文字效果

    上篇文章,小编简单的介绍了一下CSS的一些基本语法,学习内容不是很复杂,都是CSS的一些入门知识,但是万丈高楼平地起,搭好地基,高楼大厦不在话下,学习任何课程,都必须从基础开始,一步一个脚印,踏实坚定 ...

  8. CSS3动画:流彩文字效果+图片模糊效果+边框伸展效果实现

    前言 首先第一步,先布局html代码如下: <div class="wrap"> <img src="images/1.jpg" class= ...

  9. CSS3下的渐变文字效果实现

    如下,第一种方法已实践 一.方法一:借助mask-image属性 可以狠狠地点击这里:CSS3下的渐变文字效果方法一demo 如果您手头上的浏览器是Chrome或是Safari,则您可以在demo页面 ...

随机推荐

  1. 我的Visual Studio 2013常用快捷键

    声明及广告 所有功能针对C#开发配置而写,部分功能可能由插件提供,我会尽可能标注出相应的插件名称.为行文方便,所有快捷键以大写形式表示.太常用的快捷键,如Ctrl + C, Ctrl + Z, Ctr ...

  2. FreePascal - Typhon在Windows10 X64下的使用问题!

    Typhon是CodeTyphon中的开发FreePascal的IDE工具. 在Windows10 X64中安装完CodeTyphon后,我们会发现有两套Typhon,分别对应32位和64位,32位可 ...

  3. iOS开发--知识点总结

    1 .全局变量,变量名前加下划线.和系统一致. 2 . nil指针为空   @“”字符串为空 (内容为空)       ==  判断内存地址   基本变量    对于一些基本类型 可以使用==来判断, ...

  4. LeetCode295-Find Median from Data Stream && 480. 滑动窗口中位数

    中位数是有序列表中间的数.如果列表长度是偶数,中位数则是中间两个数的平均值. 例如, [2,3,4] 的中位数是 3 [2,3] 的中位数是 (2 + 3) / 2 = 2.5 设计一个支持以下两种操 ...

  5. Binary Tree Level Order Traversal II leetcode java

    题目: Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from ...

  6. 热修复 AndFix 阿里 apkpatch MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  7. Anciroid的IPC机制-Binder原理

    Binder驱动的原理和实现 通过上一节的介绍,大家应该对Binder有了基本的认识了.任何上层应用程序接口和用户操作都需要底层硬件设备驱动的支持,并为其提供各种操作接口.本节首先从Binder的驱动 ...

  8. 【Scala】Scala-Option-Null的蹊跷

    Scala-Option-Null的蹊跷 scala Some(null)_百度搜索 scala - Why Some(null) isn't considered None? - Stack Ove ...

  9. SciPy 安装不上?

    参考:链接:https://www.zhihu.com/question/30188492/answer/150928275来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处 ...

  10. VS2013开发一个简单的asmx接口程序

    一.开发和调试 1:创建一个ASP.NET web应用程序 2:选择空的模板 3:系统生成项目目录 4:右键项目-添加项-新建项 5:选择Web  服务(ASMX) 6:选择之后项目中会有一个Test ...