两文本一图片android,Android富文本编辑器(二):图文混排以及图片上传处理

对于一个富文本编辑器来说,图文混排是最基本的功能。而从上一篇文章中我们知道图文混排需要使用ImageSpan。下面这段代码摘自我的RichEditText源码:

/**

* 添加图片

* @param filePath 图片文件路径

*/

public void addImage(String filePath) {

SpannableString spannable = new SpannableString("\n%5C%22%22");

Bitmap bitmap = BitmapUtils.decodeScaleImage(filePath, IMAGE_MAX_WIDTH, IMAGE_MAX_HEIGHT);

if (bitmap == null) {

return;

}

ImageSpan span = new ImageSpan(mContext, bitmap, filePath);

spannable.setSpan(span, 1, spannable.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

getText().insert(getSelectionStart(), spannable);

}

参数是图片文件路径,BitmapUtils源码请查看项目工程。这个span的最前面加了一个换行,是因为当时项目要求插入图片之前必须换行。

而这个ImageSpan是我继承了系统的ImageSpan写的一个子类,主要是在图片之外还保存了该image对应的路径和url信息:

public class ImageSpan extends android.text.style.ImageSpan implements Span {

private String mFilePath;

private String mUrl;

public ImageSpan(Context context, Bitmap bitmap, String filePath) {

super(context, bitmap);

mFilePath = filePath;

}

public ImageSpan(Drawable drawable) {

super(drawable);

}

public String getFilePath() {

return mFilePath;

}

public String getUrl() {

return mUrl;

}

public void setUrl(String url) {

mUrl = url;

}

@Override

public String getValue() {

return mUrl;

}

}

对于一般的项目需求来说,不仅仅要展示富文本,还需要保存、传输。而一般来说,在保存、传输时,需要转化成html风格的标记语言,这是富文本编辑器的最大坑之一。具体细节后面专门介绍,继续ImageSpan的介绍。上述代码中我构造的ImageSpan子类,可以在后续传输给服务器时,先上传图片,获取到图片的url后,再构造标记文本时使用。

我们项目使用的标记文本基本参照了HTML格式规范,因此转化代码如下:

if (characterStyle instanceof ImageSpan) {

ImageSpan span = (ImageSpan) characterStyle;

return String.format("%5C%22%s%5C%22", TextUtils.isEmpty(span.getUrl()) ?

span.getFilePath() : span.getUrl());

}

可以看到,如果span中被设置了url(在上传图片后设置),那么会将src属性设置为url,反之则还是用filePath(这里是因为草稿功能的需要,后续详细介绍)。

具体富文本转化,请看后续讲解。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/560930.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

震惊! Rightmost Digit 快速幂解决

题目 Given a positive integer N, you should output the most right digit of N^N. Input The input contains several test cases. The first line of the input is a single integer T which is the number of test cases. T test cases follow. Each test case conta…

android handler同步,android解决:使用多线程和Handler同步更新UI

如果运行时,可以看到滚动条由条慢慢变短,则说明程序成功了。截图如下,建议选择大点的文件做测试。main.xmlxmlns:android"http://schemas.android.com/apk/res/android"android:layout_height"wrap_content" android:id&…

html玫瑰花效果代码,html5渲染3D玫瑰花情人节礼物js特效代码

情人节马上就要到来了,这里给程序员前端设计师们献上一个,html5渲染而成的3D玫瑰花js效果,可以作为虚拟的情人节礼物送给自己的爱人。支持html5的浏览器查看。查看演示下载资源:16次 下载资源下载积分:20积分情人节玫瑰…

html 页面怎么加载富文本,UILabel加载html富文本

本文主要解决html标签之外文本属性设置当APP里面有搜索的需求的时候,产品可能会要求关键字显示特殊颜色或者字体。其中一种可能性是服务器返回的数据是带有html标签的字符串,那么该怎么解决?当标签之外的其他字体也需要设置不同格式&#xff…

python 打印皮卡丘_用python打印你的宠物小精灵吧

我们来通过一个有趣的例子开始编写我们的第一个python代码。本文涉及的python基础语法为:print输出函数,赋值,字符串print()print()是python的一个内置函数,用于打印输出,是最常见的一个函数之一。有些朋友可能对于打印…

360浏览器查看html文件在哪里,360浏览器8菜单栏怎么弄出来?如何查看网站源代码...

今天想查看一个页面的源代码,没想到这个页面竟然禁止了鼠标右键功能,所以无法通过鼠标右键选择“查看源代码”来查看。然后就想通过 360 浏览器的“查看源代码”按钮进行查看,没想到找了半天都找不到这个按钮,最后只能通过查看源代…

判断html()中有长度,VBS 字符串长度判断的问题

对于给你一个字符串你应该怎样判断他的字符串长度,试举一些典型的例子C语言——字符串长度的计算方法提示:(1)计算字符串长度时关键是要注意辨认转义字符;(2)一个转义字符总是以反斜杠开始,再加一个其他字符组成。所以&#xff0c…

计算机专业后悔么,王言匀

《中华独特疗法大成》分方法和治疗两篇。方法篇依据用药与否,分为药物疗法和非药物疗法两章,药物疗法按照给药途径分为内服法和外用法两节;非药物疗法根据施术手段分为针灸、推拿、气功及其他4节。这些章节介绍了273种治疗方法的基本内容、适…

应用计算机散热的原理是什么,水冷散热器是什么原理?水冷可以带给机箱多大的散热作用?...

用户若是CPU安装了水冷散热器,就可以利用水快速导热和散热的特性加强主机硬件的散热效果,和普通风扇的散热效果相比,水冷可以更加有效的降低硬件温度和热量散发速度。阅读下文了解水冷散热器的原理和作用。CPU水冷散热器是指使用液体在泵的带…

计算机办公应用软件初级,电脑办公软件有哪些?桌面便签办公软件基础教程

原标题:电脑办公软件有哪些?桌面便签办公软件基础教程Windows电脑上的办公软件有很多,很多网友都觉得电脑上用的桌面便签小工具不算办公软件,其实只要是对工作有帮助的电脑程序,在某种程度上来说都可以说是办公小工具软…

电脑开机启动修复无法自动修复此计算机,Win7系统开机无法自动修复此计算机如何解决...

在使用win7系统的时候,总是会遇到一些问题,比如就有用户反映说开机提示自动修复,导致无法正常进入操作系统,经过分析部分系统修复报错文件为:X:Windowssystem32driversspoon.sys,那么要怎么解决这样的问题呢…

计算机控制系统视频关守平,国家级精品课《计算机控制系统》课程建设研讨会顺利召开...

10月27日,国家级精品课《计算机控制系统》课程建设研讨会于科技楼4002会议室召开。我校校长刘建昌,东北大学教授关守平等6人,燕山大学教授孙孝峰等4人,分校控制工程学院院长王凤文、副院长段洪军,各省级精品课负责人、…

武汉理工大学计算机学院2018复试,武汉理工大学2018年自主招生复试揭秘

原标题:武汉理工大学2018年自主招生复试揭秘2018年武汉理工大学考试方式学马教育徐老师介绍,考核以笔试和学科专项测试或特殊专长考评的方式进行,具体要求如下:笔试科目为能力测试(满分300分,内容为数学与逻辑、中文阅…

nokia 计算机手机,NOKIA手机与电脑的数据线连接

将手机用数据线与电脑连接。系统显示找到新的硬件.下面是学习啦小编收集整理的NOKIA手机与电脑的数据线连接,希望对大家有帮助~~NOKIA手机与电脑的数据线连接方法/步骤将手机用数据线与电脑连接。系统显示找到新的硬件。安装相应的驱动程序。选择“从列表或指定位置…

七年级计算机教学质量分析,七年级数学期末教学质量分析报告

七年级数学期末教学质量分析报告提高教育教学质量是学校工作的重中之重,扎实进行课堂教学改革是提高质量的有力保证,是前提条件。下面是小编为大家整理的七年级数学期末教学质量分析报告,欢迎阅读。七年级数学期末教学质量分析报告一一、试卷的主要特点该试卷既注重…

做计算机工作的要专用手机吗,怎么在手机上完成工作?原来没有电脑手机还可以这样用...

用手机工作,放在功能机时代或者早期的智能手机时代,这个可能性很小。但是放在这个智能手机黑科技一年比一年厉害的时代来说,用手机来工作完全可能,至少一些简单的工作是可以在手机上实现的。因为手机可以借助一些自身的设计或者配…

与服务器传文件格式,客户端如何向服务器传文件格式

客户端如何向服务器传文件格式 内容精选换一换已获取该弹性云服务器的密钥文件,如未获取,请参见获取弹性云服务器的密钥文件。弹性云服务器已经绑定弹性IP地址。已配置安全组入方向的访问规则。如果您是在Windows操作系统上登录Linux,可以按照…

服务器搭建维护,服务器搭建维护方法

服务器搭建维护方法 内容精选换一换登录Windows操作系统的弹性云服务器时,需使用密码方式登录。因此,用户需先根据创建弹性云服务器时使用的密钥文件,获取该弹性云服务器初始安装时系统生成的管理员密码(Administrator帐户或Cloudbase-init设…

魔兽怀旧服服务器怎么修改,《魔兽世界怀旧服》转服功能怎么用 转服功能使用方法教程...

导读魔兽世界怀旧服不少玩家都处在高负载服务器中,这不仅对于服务器压力太大,而且对于玩家的游戏体验也不好,近期魔兽世界怀旧服免费角色转移功能开放,缓解玩家的压力和带来更好的游戏体验,下面小编就给大家带来魔兽..…

mac os touch命令_Mac系统忘记开机密码怎么办?

Hi~我是系统派~使用Windows系统的小伙伴都知道忘记开机密码可以通过PE工具解除实在不行还可以重装系统如果你手上的是Mac电脑同样也是不记得登录密码了有没有相似的解决方案呢?本教程教你两种Mac系统重置开机密码的方法万一哪天真的不记得密码了可以尝试解除千万别干…