/**
* TextView - 文本显示控件
*
* 演示如何通过 SpannableString 或 SpannableStringBuilder 来设置 TextView 中的文本的显示样式
* SpannableStringBuilder 对比 SpannableString 的区别就是,可以对 SpannableStringBuilder 中的文本做编辑(比如 append, insert 之类的)
*
* ForegroundColorSpan - 文本颜色
* BackgroundColorSpan - 背景颜色
* StrikethroughSpan - 删除线
* UnderlineSpan - 下划线
* SuperscriptSpan - 上标
* SubscriptSpan - 下标
* StyleSpan - 样式(粗体,斜体)
* TypefaceSpan - 字体
* AbsoluteSizeSpan - 文本绝对大小
* RelativeSizeSpan - 文本相对大小(当前文本应该显示的大小的缩放倍数)
* ScaleXSpan - X 轴方向的缩放倍数
* TextAppearanceSpan - 文本样式(通过指定 style 资源的方式)
* URLSpan - 超链接
* ClickableSpan - 可点击
* MaskFilterSpan - 修饰效果(模糊,浮雕)
* DynamicDrawableSpan - 将指定的文字替换为图片(抽象类)
* ImageSpan - 将指定的文字替换为图片(ImageSpan 继承自 DynamicDrawableSpan)
*/
package com.webabcd.androiddemo.view.text;
import android.graphics.BlurMaskFilter;
import android.graphics.Color;
import android.graphics.EmbossMaskFilter;
import android.graphics.MaskFilter;
import android.graphics.Typeface;
import android.graphics.drawable.Drawable;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.SpannableStringBuilder;
import android.text.Spanned;
import android.text.TextPaint;
import android.text.method.LinkMovementMethod;
import android.text.style.AbsoluteSizeSpan;
import android.text.style.BackgroundColorSpan;
import android.text.style.ClickableSpan;
import android.text.style.DynamicDrawableSpan;
import android.text.style.ForegroundColorSpan;
import android.text.style.ImageSpan;
import android.text.style.MaskFilterSpan;
import android.text.style.RelativeSizeSpan;
import android.text.style.ScaleXSpan;
import android.text.style.StrikethroughSpan;
import android.text.style.StyleSpan;
import android.text.style.SubscriptSpan;
import android.text.style.SuperscriptSpan;
import android.text.style.TextAppearanceSpan;
import android.text.style.TypefaceSpan;
import android.text.style.URLSpan;
import android.text.style.UnderlineSpan;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
import com.webabcd.androiddemo.R;
public class TextViewDemo5 extends AppCompatActivity {
private TextView _textView1;
private TextView _textView2;
private TextView _textView3;
private TextView _textView4;
private TextView _textView5;
private TextView _textView6;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view_text_textviewdemo5);
_textView1 = (TextView) findViewById(R.id.textView1);
_textView2 = (TextView) findViewById(R.id.textView2);
_textView3 = (TextView) findViewById(R.id.textView3);
_textView4 = (TextView) findViewById(R.id.textView4);
_textView5 = (TextView) findViewById(R.id.textView5);
_textView6 = (TextView) findViewById(R.id.textView6);
// 设置文本颜色,背景颜色,删除线,下划线,上标,下标
sample1();
// 设置文本样式(粗体,斜体),字体,大小
sample2();
// 设置文本样式(通过指定 style 资源的方式),超链接,可点击
sample3();
// 设置文本的修饰效果(模糊,浮雕)
sample4();
// 将指定的文字替换为图片
sample5();
// Spannable.SPAN_EXCLUSIVE_EXCLUSIVE, Spannable.SPAN_EXCLUSIVE_INCLUSIVE, Spannable.SPAN_INCLUSIVE_EXCLUSIVE, Spannable.SPAN_INCLUSIVE_INCLUSIVE 的区别
sample6();
}
private void sample1() {
String content = "hello: webabcdwanglei";
// 文本颜色
ForegroundColorSpan foregroundColorSpan = new ForegroundColorSpan(Color.parseColor("#FF0000"));
// 背景颜色
BackgroundColorSpan backgroundColorSpan = new BackgroundColorSpan(Color.parseColor("#00FF00"));
// 删除线
StrikethroughSpan strikethroughSpan = new StrikethroughSpan();
// 下划线
UnderlineSpan underlineSpan = new UnderlineSpan();
// 上标
SuperscriptSpan superscriptSpan = new SuperscriptSpan();
// 下标
SubscriptSpan subscriptSpan = new SubscriptSpan();
// 将需要显示的文字转换为 SpannableStringBuilder 对象
SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder(content);
// 设置 span(可以设置多个,但是同一个 span 对象只能使用一次)
// 第一个参数:需要设置的 span 对象
// 第二个参数:需要设置该 span 的文字的起始位置
// 第三个参数:需要设置该 span 的文字的结束位置
// 第四个参数:后面再说
spannableStringBuilder.setSpan(foregroundColorSpan, 0, 6, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
spannableStringBuilder.setSpan(backgroundColorSpan, 0, 6, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
spannableStringBuilder.setSpan(strikethroughSpan, 0, 6, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
spannableStringBuilder.setSpan(underlineSpan, 0, 6, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
spannableStringBuilder.setSpan(superscriptSpan, 7, 14, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
spannableStringBuilder.setSpan(subscriptSpan, 14, 21, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
// 删除指定的 span
// spannableStringBuilder.removeSpan(subscriptSpan);
// 显示指定的 SpannableStringBuilder 对象
_textView1.setText(spannableStringBuilder);
}
private void sample2() {
String content = "hello: webabcd wanglei android";
// 设置样式(Typeface.NORMAL, Typeface.BOLD, Typeface.ITALIC, Typeface.BOLD_ITALIC),具体的 style 的说明参见 TextViewDemo2 中的说明
StyleSpan styleSpan = new StyleSpan(Typeface.BOLD_ITALIC);
// 设置字体,具体的 typeface 的说明参见 TextViewDemo2 中的说明
TypefaceSpan typefaceSpan = new TypefaceSpan("monospace");
// 文本绝对大小
AbsoluteSizeSpan absoluteSizeSpan = new AbsoluteSizeSpan(24, true);
// 文本相对大小(当前文本应该显示的大小的缩放倍数)
RelativeSizeSpan relativeSizeSpan = new RelativeSizeSpan(1.5f);
// X 轴方向的缩放倍数
ScaleXSpan scaleXSpan = new ScaleXSpan(3.0f);
// 将需要显示的文字转换为 SpannableString 对象
SpannableString spanString = new SpannableString(content);
// 设置 span(可以设置多个,但是同一个 span 对象只能使用一次)
// 第一个参数:需要设置的 span 对象
// 第二个参数:需要设置该 span 的文字的起始位置
// 第三个参数:需要设置该 span 的文字的结束位置
// 第四个参数:后面再说
spanString.setSpan(styleSpan, 0, 6, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
spanString.setSpan(typefaceSpan, 0, 6, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
spanString.setSpan(absoluteSizeSpan, 7, 14, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
spanString.setSpan(relativeSizeSpan, 15, 22, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
spanString.setSpan(scaleXSpan, 23, 30, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
// 删除指定的 span
// spanString.removeSpan(scaleXSpan);
// 显示指定的 SpannableString 对象
_textView2.setText(spanString);
}
private void sample3() {
String content = "hello: clickme clickme";
// 文本的样式,此处指定的样式资源如下
没有合适的资源?快使用搜索试试~ 我知道了~
基于Java的AndroidDemo多语言开发设计源码
共718个文件
xml:379个
java:268个
kt:24个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 78 浏览量
2024-05-23
11:38:25
上传
评论
收藏 6.94MB ZIP 举报
温馨提示
AndroidDemo是一个基于Java开发的Android项目,包含718个文件,其中包括379个XML文件、268个Java源文件、24个Kotlin文件、12个PNG图片文件、6个JPG图片文件、4个SO文件、3个Gradle文件、3个HTML文件、2个Git忽略文件和2个文本文件。该项目为用户提供了一个全面、高效的Android开发解决方案,支持多平台浏览,具备良好的用户体验和实用性。
资源推荐
资源详情
资源评论
收起资源包目录
基于Java的AndroidDemo多语言开发设计源码 (718个子文件)
gradlew.bat 2KB
cHello.c 204B
.gitignore 208B
.gitignore 20B
build.gradle 2KB
build.gradle 661B
settings.gradle 47B
gradlew 5KB
cHello.h 311B
URLSchemeDemo1.html 1KB
WebViewDemo3.html 1KB
WebViewDemo2.html 996B
gradle-wrapper.jar 53KB
TextViewDemo5.java 14KB
Android11Demo2.java 13KB
StorageDemo2.java 13KB
ActivityDemo5.java 12KB
DownloadManagerDemo1.java 12KB
StorageDemo3.java 12KB
FragmentDemo2.java 10KB
WebViewDemo3.java 10KB
ThreadPoolDemo1.java 10KB
Android11Demo3.java 9KB
ListViewDemo6.java 9KB
AlertDialogDemo1.java 9KB
MatrixDemo1.java 9KB
WorkerManagerDemo1.java 9KB
HandlerDemo1.java 8KB
MultiAutoCompleteTextViewDemo1.java 8KB
ViewPagerDemo2.java 8KB
WebViewDemo1.java 8KB
ListViewDemo10.java 8KB
AnimationDemo2.java 8KB
CustomView1.java 8KB
AsyncTaskDemo1.java 8KB
ThreadDemo6.java 8KB
ThreadPoolDemo2.java 8KB
SqliteDemo1.java 8KB
ListViewDemo5.java 7KB
Demo1.java 7KB
Demo2.java 7KB
HandlerDemo2.java 7KB
AutoCompleteTextViewDemo1.java 7KB
StorageDemo1.java 7KB
TextViewDemo6.java 7KB
TouchDemo1.java 7KB
HandlerDemo3.java 7KB
ListViewDemo4.java 7KB
ThreadDemo4.java 7KB
AnimationDemo5.java 7KB
BroadcastDemo3.java 7KB
CustomView4.java 7KB
FutureTaskDemo1.java 7KB
CustomView2.java 6KB
ListViewDemo3.java 6KB
Helper.java 6KB
DensityDemo1.java 6KB
Demo1.java 6KB
SpinnerDemo5.java 6KB
ListViewDemo7.java 6KB
FutureTaskDemo2.java 6KB
ActivityDemo2.java 6KB
NotificationDemo1.java 6KB
AnimationDemo7.java 6KB
TabBarDemo1_MyTabBar.java 6KB
ImmersiveDemo2.java 6KB
ProgressDialogDemo1.java 6KB
ListViewDemo8.java 6KB
SharedPreferencesDemo1.java 6KB
LocalizationDemo1.java 6KB
PopupWindowDemo1.java 6KB
RecyclerViewDemo1.java 6KB
Service1.java 6KB
GridViewDemo1.java 6KB
PopupMenuDemo1.java 5KB
TimerDemo1.java 5KB
GridViewDemo2.java 5KB
GestureDemo3.java 5KB
MyRecyclerViewAdapter.java 5KB
ThreadDemo2.java 5KB
DrawerLayoutDemo1.java 5KB
NumberPickerDemo1.java 5KB
KeyboardHeightProvider.java 5KB
ToastDemo1.java 5KB
ContextMenuDemo1.java 5KB
Android11Demo1.java 5KB
LockDemo3.java 5KB
ViewDemo1.java 5KB
ToolBarDemo1.java 5KB
ViewPagerDemo1.java 4KB
AnimationDemo6.java 4KB
GestureDemo2.java 4KB
Fragment3_1.java 4KB
TouchDemo3.java 4KB
InflateDemo1.java 4KB
URLImageGetter.java 4KB
ThreadDemo1.java 4KB
MyLoading1.java 4KB
ActivityDemo3.java 4KB
RecyclerViewDemo4Adapter.java 4KB
共 718 条
- 1
- 2
- 3
- 4
- 5
- 6
- 8
资源评论
沐知全栈开发
- 粉丝: 5802
- 资源: 5226
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 技术资料分享STM32模拟EEPROM的使用和优化很好的技术资料.zip
- Servlet 客户端 HTTP 请求详解.pdf
- 技术资料分享Stm32寄存器与库函数概览(摘自固件库使用手册)很好的技术资料.zip
- 一款可在线播放多个免费听书站的Android应用程序.zip
- AssertionFailedError如何解决.md
- java.HttpClient与网络请求(解决方案).md
- 技术资料分享STM32固件库使用手册的中文翻译版很好的技术资料.zip
- 非常好的oracle性能优化技术内幕详解100%好用.7z
- 已停产 适用于 Android 平台的 Rrich 文本编辑器 Android富文本编辑器,暂停维护.zip
- 非常好的MySQL技术内幕详解100%好用.7z
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功