Android Spanned实现TextView富文本效果(2)--表情

TextView + Spanned实现图文混排以及图片点击交互 最近要实现图文混排的需求,webview过大,所以想到了用SpannableStringBuilder来实现。 不过参考了大量国内文章,大多数是教你如何实现图文混排,并没有提及图片点击交互的。有翻阅了一些国外文章,说的也不是很详细,于是花费时间鼓捣了一下,最终实现了TextView图文混排,加点击交互的效果,在这里给大家分享下以免后来者在此处浪费过多时间。 主要用到的有Spanned Click 阅读详情

原文:http://www.cnblogs.com/lichenwei/p/4612079.html

今天学习富文本后续表情的处理

这种实现方式是通过Android官方给我们提供的Html类下面的fromHtml方法,这个方法可以对字符串进行HTML格式化,让TextView等一些控件”认识”HTML。

fromHtml有2个重载方法,下面我简单点来说:

1、当你需要转换的HTML代码是纯文字,比如超链接,换行符,邮件收发等,那么直接使用第一个方法即可,将你的文本信息直接传入方法。

2、当你需要转换的HTML代码是带图片的,比如<IMG/>,那么你就需要使用到重载的第二个方法了,这个方法里面有个ImageGetter对象,实现这个类会发现它回调了一个抽象getDrawable方法,在这个方法里,我们可以进行远程图片的下载获取,本地资源图片的获取等。第三个参数TagHandler是用来自定义一些不属于HTML代码的一些标签,一般我们不会去用到,直接置为null即可。

用法:

  1. 首先定义一个类似Html标签的String

    1. String html = "<img src='mode1_s'/>我是什么<p/><img src='mode1_b'/>反弹";
  2. 调用Html.fromHtml()方法设置图片

    Spanned spanned = Html.fromHtml(html, new Html.ImageGetter() {
        @Override
        public Drawable getDrawable(String source) {
            //根据资源变量名称获取R资源Id,再根据资源Id获取到Drawable对象
            Drawable drawable = getResources().getDrawable(getResourceId(source));
            drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
            return drawable;
        }
    }, null);
    

ImageGetter 为处理html中的处理器,生成Drawable对象并返回。

创建ImageGetter 主要实现下面的方法,source为标签中src属性的值。

  1. 反射方法获取图片资源

    public int getResourceId(String name) {
        try {
            //利用Java反射机制获取R资源Id
            Field field = R.drawable.class.getField(name);
            return Integer.parseInt(field.get(null).toString());  //静态字段 get(null)也可以得到值
        } catch (NoSuchFieldException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        }
        return 0;
    }
    
  2. 设置文本

mTextView.setText(spanned);

就可以看到效果了
效果图

Android富文本编辑与预览类库实践 除了使用标准的View组件之外,自定义View能够提供更灵活的图文混排能力。通过自定义View,开发者可以控制每一个像素如何绘制,从而实现复杂的布局效果。为了实现图文混排,可以利用Drawable对象作为背景来展示图像,并在自定义View中绘制文本。例如:// 在构造函数中设置自定义布局或绘制代码@Override// 绘制背景图像// 绘制文本// 设置文本样式// ...上述onDraw方法中,我们首先绘制了背景图像,然后绘制了文本内容。 阅读详情

相关推荐

部署Doris

本文详细介绍了Apache Doris三节点集群(3 FE + 3 BE)的部署流程。首先从硬件配置、系统参数调优等准备工作入手,然后分步说明FE和BE节点的配置方法,包括端口设置、存储路径规划等关键参数。部署完成后提供SQL测试用例和数据一致性验证方法,并总结常见问题解决方案,如节点加入失败、磁盘容量异常等。文档包含完整的命令和配置示例,强调高可用配置和监控建议,为生产环境部署提供实用指导。

神棍之路 1712

SpannableString与SpannableStringBuilder

一、简介1、SpannableString、SpannableStringBuilder与String的关系首先SpannableString、SpannableStringBuilder基本上与String差不多,也是用来存储字符串,但它们俩的特殊就在于有一个SetSpan()函数,能给这些存储的String添加各种格式或者称样式(Span),将原来的String以不同的样式显示出来,比如在原来S

AfinalStone的专栏 629

算法竞赛入门到进阶 --- 完整学习路线(含知识点讲解)

前言: 咳咳,接触算法竞赛也有一年了,却从来都没有进行过一次系统的学习,稀里糊涂的就这么搞了半年,如今,我决定认认真真的进行一次系统的复盘。嗯嗯,先把大体路线列出来,然后往后每天搞几篇,可能大三能完成,可能永远也不能写完这些,我只能慢慢来,一起共勉吧。冲了!(主要是太菜了,不系统学习下,怕是铜牌都拿不到呀!) 算法竞赛入门到进阶一、sort函数自定义排序二、c++容器的使用1.vector动态数组2.stack栈3.queue队列4.list链表5.set集合6.map映射三、二进制子集生成四、bfs.

qq_43514659的博客 2万+

安卓TextView中的Span常用方法总结

目录 封装类 基本用法举例 封装类 自己去封装了一个,以后用起来方便一些 import android.text.SpannableStringBuilder; import android.text.Spanned; import android.text.style.AbsoluteSizeSpan; import android.text.style.BackgroundColorSpan; import android.text.style.BulletSpan; import a.

小Tian的博客 2852

告别卡顿!手把手教你用北鲲云超算平台图形化提交COMSOL仿真任务(附RDP连接技巧)

本文详细介绍了如何利用北鲲云超算平台图形化提交COMSOL仿真任务,解决本地计算资源不足导致的卡顿问题。通过云端高性能计算,用户可轻松配置多核CPU和大内存资源,实现高效仿真计算,并附有RDP连接优化技巧,提升远程操作体验。

weixin_42519781的博客 378

window系统 dlib库安装

1. 安装visual studio 1.1. 安装vs2017或以上版本 1.2. 我们需要安装使用C++的桌面开发,且必须选上用于Cmake的Visual C++工具 1.3. 安装完成后,将D:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin 添加到环境变量PATH中 2 下载cmake文件,并添加环境变量 2.1 在c

@bangbang的博客 815

Android-微博客户端在TextView中把富文本转换成表情图片

  在上一篇随笔中记录了在微博正文的TextView中高亮部分关键字(@人名、#话题#和http短链接)的方法,这次的笔记记录如何实现表情功能,并把TextView中的[表情]转换成图片表情   目前比较流行的有两种方法:   第一种是调用新浪提供的API:https://api.weibo.com/2/emotions.json 通过icon或者url字段把表情图片downloa...

diemojia6455的博客 400

zynq-7000学习笔记(八)——USB摄像头图像采集

PC平台:WINDOWS 10 64位 Xilinx设计开发套件:Xilinx_vivado_sdk_2015.4 开发板:Zed Board USB摄像头:罗技 C270(720P) linux源码:2016_R1 一、配置linux,支持UVC       如果是中星微的ZC3XX系列的芯片,则要进到GSPCA把ZC3XX的驱动选上

luotong86的专栏 1万+

Android终极富文本解决方案:spannable工具如何一站式实现图文混排与GIF动画

spannable是Android平台上功能强大的富文本工具,它提供了一站式解决方案,让开发者能够轻松实现正则匹配、图文混排、图标、GIF动画以及自定义表情包等丰富的富文本效果。无论是社交应用中的聊天界面,还是内容展示类应用中的文章排版,spannable都能满足你的需求,为用户带来更加生动有趣的视觉体验。 ## 为什么选择spannable? 在Android开发中,实现富文本效果往往需要处

gitblog_01061的博客 876

三菱PLC软件GX-Works2使用和循环左移指令实现流水灯程序

(2)方式2:双击打开全局软元件注释,软元件名称手动输入,如M辅助继电器输入M0、D寄存器输入D0,然后找到对应的寄存器输入自定义的功能名字即可。链接:https://pan.baidu.com/s/14ZaBIq4mBirIqfd9Ja3AiA。链接:https://pan.baidu.com/s/1nuQz1OgS8bmagPE8T-PBkQ。链接:https://pan.baidu.com/s/1oKGi_bdLN5HI4HYxSXEdlA。(1)方式1:将定义好变量功能的CSV文件导入即可。

panjinliang066333的博客 1万+

多维时空数据介绍(4)多维栅格数据构建

上图中包含了经度、纬度和时间三个维度,其变量为经度、纬度、时间以及降雨量,对应的变量单位为东经多少度、北纬多少度、阳历1895-1-1日开始多少天以及每年降雨多少毫升,其中经度数值4个、纬度数值3个、时间数值2个都是一维的数据,而降雨量是一个包含经度、纬度、时间的三维数组,数值有4*3*2=24个。在GeoScene 中NetCDF数据可以用做多种多维时空数据的数据源,进行创建、可视化和分析,它可以是多维栅格数据、时空立方体,还可以是体元图层,区别在于其所要表示的内容和目的。变量又分为坐标变量和属性变量。

你好,我是小张同学! 1286

轻松掌握Android富文本:Advanced Android TextView之FromHtml全解析

想要在Android应用中快速实现富文本显示效果吗?今天我们将深入解析Advanced Android TextView项目中的HTML.fromHtml()功能,这是Android开发者实现富文本显示的终极解决方案!无论你是Android开发新手还是想要提升TextView使用技巧的开发者,这篇完整指南将带你从零开始掌握如何在TextView中优雅地显示HTML内容、图片和链接。 ## 🎯

gitblog_00868的博客 888

下载猫 —— 会员体系安全分析与加固方案

下载猫的会员验证体系完全失效,破解不需要任何工具链、不需要写代码、不需要改文件。已验证的成功攻击路径:攻击者启动软件时加一个参数,然后用 3 行 JavaScript 即可将会员状态改为"有效期至 2099 年",全部功能闸门放行。等价于普通用户按F12打开控制台输入 3 行代码,全程不到 10 秒。项目结论破解难度⭐ 极低(会按 F12 即可,无需任何破解工具)是否修改文件否(重启软件自动恢复)是否需要服务器否是否影响其他用户单人即可完成,可复制分发修复所需工作量。

猫敷雪 41

TextView效果实例

1 TextView的Html效果 代码如下: @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); TextView textView = (TextView) findVi

zhangzty111的博客 286

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Android TextView Html 支持全部标签

Android TextView 支持 HTML 标签 在 Android 开发中,我们经常需要在 TextView 中展示富文本,比如加粗、斜体、下划线等。幸运的是,Android 的 TextView 支持通过 HTML 标签来实现这些效果。本文将详细介绍如何在 Android 中使用 TextView 来显示 HTM...

weixin_35554226的博客 615

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Android TextView显示表情、标签、超链接

Android TextView显示表情图片、标签、超链接因为项目需求,要在用户发布动态的时候可以打上标签,超链接,还有图片标签,本来不打算写这篇博客,在查阅资料的时候我发现网上的博客都是类似的,大家你抄我,我抄你,抄来抄去,这就是所谓的拿来主义吧,盗版在国内太过泛滥,不多说,切入正题,先来看下我们今天研究的效果图 我研究了下微博和QQ的动态,发现他们的内容描述都有一个共同点——用html写的

diy_coder 5187

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Android Spanned实现TextView富文本效果(1)--文字

1.首先实例化一个Spannable对象SpannableString spannableString = new SpannableString("字体测试字体大小一半两倍前景色背景色正常粗体斜体粗斜体下划线删除线x1x2电话邮件网站短信彩信地图X轴综合/bot"); 我们需要创建一个SpannableString或SpannableStringBuilder,它们的区别在于 SpannableS

missingcall 3911

android 给 textview 加上效果和事件响应,Android 给 TextView 加上效果和事件响应

研读 ApiDemo 源码至 com.example.Android.apis.text.Link 类。首先,看一下其运行效果:要给 TextView 加上效果,方式主要有几种:第一种,自动应用效果,使用 android:autolink 属性,如:android:id="@+id/text1"android:layout_width="match_parent"android:layout_he...

weixin_36439285的博客 347

TextView

TextView还派生了一个CheckedTextView,CheckedTextView增加了一个checked状态,可通过setChecked(boolean)和isChecked()方法来改变、访问该组件的checked状态。//必须设置图片大小,否则不显示。(2)、使用Html.ImageGetter提供网页中要显示的图片。(3)、在TextView内部四周可以各设置一张图片。

6163

【Android】Span富文本简介

android.text包下span体系类,主要指Spanned、Spannable、ParagraphStyle、CharacterStyle实现类。Android通过Span体系,搭建了富文本API,其中Spanned、Spannable实现了CharSequence接口,旨在映射段落start~end之间Span装饰对象。

qq_40900926的博客 956

Android富文本的学习一

1TextView的富文本介绍: 什么是富文本,大家都知道TextView可以显示文字,设置文字样式,利用富文本可以给TextView添加更多的样式,更加的类似h5网页,例如在一个TextView通常显示的文本样式是统一的,如果想对显示的同一段文本不同部分的文字设置不同的样式,颜色,大小等就需要用到富文本,富文本还可以利用TextView显示图片,设置点击事件等。 TextView想要实现富文本...

lidongxiu0714 3197

Android——TextView 富文本之 ClickableSpan

前言 ClickableSpan可以让我们在点击TextView相应文字时响应点击事件,比如常用的URLSpan,会在点击时打开相应的链接。而为了让TextView能够响应ClickableSpan的点击,我们需要为它设置LinkMovementMethod,但是这个LinkMovementMethod又有着很大的坑,接下来就总结下这些坑和我的解决办法。 LinkMovementMethod的坑 ...

小欣儿的专栏 2370

Android中TextView富文本

android中textview利用富文本标签,类似于html标签,如,,等,可以实现富文本效果.先展示效果图: 代码:package com.eg.lyx.shiqu; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.text.Html; import androi

RELY_ON_YOURSELF的博客 1088

Android TextView之Html.fromHtml学习

我们的APP经常会有大量的文字信息要展示,一般就是用TextView来展示各种文字信息。TextView的基本用法比较简单,一般设置是通过textView.setText方法来给TextView来设置文字,咱们最常用的就是 public final void setText (CharSequence text) 这个方法,该方法接收一个CharSequence类型的参数,CharSeq

SUN.Eudemon的专栏 5205

android写入textview,【Android】关于TextView

【在textview中实现超链接的方式:】1、在xml文件中,加入android:autoLink="all"2、在activity中,用html标签来实现String s = "百度";Spanned s1 = Html.fromHtml(s);tv.setText(s1);tv.setMovementMethod(LinkMovementMethod.getInstance());【在text...

weixin_30952479的博客 410

Android TextView关于Spanned的一些应用

一、概述 ** 1、SpannableString、SpannableStringBuilder与String的关系 ** 首先SpannableString、SpannableStringBuilder基本上与String差不多,也是用来存储字符串,但它们俩的特殊就在于有一个SetSpan()函数,能给这些存储的String添加各种格式或者称样式(Span),将原来的String以不同的样式显示...

weixin_43942430的博客 794
上一篇: Android Spanned实现TextView富文本效果(1)--文字
下一篇: android反编译
missingcall
博客等级 码龄10年 8粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值