Android支持html 的两个接口
1 Spanned android.text.Html.fromHtml(String source)
输入的参数为(html格式的文本)
目前android不支持全部的html的标签,目前只支持与文本显示和段落等标签,对于图片和其他的多媒体,还有一些自定义标签不能识别
2 Spanned android.text.Html.fromHtml(String source, ImageGetter imageGetter, TagHandler tagHandler)
Source: 需处理的html文本
imageGetter :对图片处理(处理html中的图片标签)
tagHandler :对标签进行处理(相当于自定义的标签处理,在这里面可以处理自定义的标签)
在第二个接口中,在实际应用中,需要处理html中的img为网络图片,同时也需要处理一些自定义的标签 如【视频】,下面我就说明这两块的概要实现
【1】 实现ImageGetter获取网络图片
ImageGetter imgGetter = new Html.ImageGetter() { @Override
public Drawable getDrawable(String source) {
Drawable d=null;
try
{
URL aryURI = new URL(source);
/* 打开连接 */
URLConnection conn = aryURI.openConnection(); conn.connect();
/* 转变为 InputStream */
InputStream is = conn.getInputStream();
/* 将InputStream转变为Bitmap */
//Bitmap bm = BitmapFactory.decodeStream(is);
/* 关闭InputStream */
/*添加图片*/
d=Drawable.createFromStream(is, "111");
is.close();
} catch (IOException e)
{
e.printStackTrace();
}
d.setBounds(1, 1, 45, 45);
return d;
}
以上代码已经实际检验过,请放心copy
注:public Drawable getDrawable(String source)
中Source 代表 <img> 标签中的图片路径
【2】 实现 自定义的TagHandler
实现的概要说明:
Step one 继承 TagHandler接口
Step Two 实现
public void handleTag(boolean opening, String tag, Editable output,
XMLReader xmlReader)
接口被调用的过程:
系统在解析html文本
发现tag时调用一次 如<html>
接口传递的参数为 handleTag(true,”html”,output , xmlReader )
发现tag的闭合时,调用接口
接口传递的参数为 handleTag(false,”html”,output , xmlReader )
下面是一个实际执行的例子 给< strike> 标签 中的文字加上横线
public class MyHtmlTagHandler implements TagHandler {
public void handleTag(boolean opening, String tag, Editable output,XMLReader xmlReader) {
if(tag.equalsIgnoreCase("strike") || tag.equals("s")) {
processStrike(opening, output);
}
}
private void processStrike(boolean opening, Editable output) {
int len = output.length();
if(opening) {
output.setSpan(new StrikethroughSpan(), len, len, Spannable.SPAN_MARK_MARK);
} else {
Object obj = getLast(output, StrikethroughSpan.class);
int where = output.getSpanStart(obj); output.removeSpan(obj);
if (where != len) {
output.setSpan(new StrikethroughSpan(), where, len, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
}
}
private Object getLast(Editable text, Class kind) { Object[] objs = text.getSpans(0, text.length(), kind); if (objs.length == 0) {
return null;
} else {
for(int i = objs.length;i>0;i--) {
if(text.getSpanFlags(objs[i-1]) == Spannable.SPAN_MARK_MARK) {
return objs[i-1];
}
}
return null;
}
}
}
分享到:
相关推荐
(android实战总结)android第三方组件实现总结.pdf
android开发总结,实战经验,新手入门
Android Studio实战快速高效地构建ANDROID应用 Android Studio实战快速高效地构建ANDROID应用 Android Studio实战快速高效地构建ANDROID应用 Android Studio实战快速高效地构建ANDROID应用 Android Studio实战...
Android经典项目开发实战 PDF+源码,找了大半天,终于凑齐了
C#开发Android应用实战.pdf ,百度云下载链接,上次传失败了,这次补上,本书是 C#开发Android应用实战 整本扫描版
《android网络开发与应用实战详解》一书源代码
Android开发实战经典(PDF)
资源名称:Android开发实战体验内容简介:《移动开发技术丛书:Android开发实战体验》是DevDiv移动开发社区版主、资深会员在该平台实际开发经验的总结,通过大量原创示例全面介绍了Android应用开发的方法和技巧。...
android底层开发技术实战详解内核移植和驱动-Linux原理,传感器,
《Android经典项目开发实战》这本书的源代码
Android项目实战视频加源码,超过20的项目,各种项目任意选择下载
一个android HTTP接口测试小软件,可以GET和POST,参数可以动态添加删除,结果自动格式化json,里面也有GET图片的代码,但功能还没加上去。
名师讲坛 Android开发实战经典 PDF 李兴华,希望对你有帮助。
8.4.1 Android中对数据库操作 8.4.2 完整地操作数据库——日记本实例 8.5 我的数据你来用——ContentProvider介绍 8.5.1 初识ContentProvider 8.5.2 使用ContentProvider读取系统数据 8.5.3 使用ContentProvider操作...
《C#开发Android应用实战——使用Mono for Android和.NET/C# 全面透彻地讲解Android应用编程知识,分析如何结合使用C#和Mono来编写在Android设备系列上运行的应用程序。在这本由多位专家联袂撰写的必备精品书籍的...
匿名APP,Android项目。来自于极客网匿名Android开发项目。包含Server和Client代码及开发文档。适合于有了一定android基础学员。可以学习到1.UI控件的用法2.网络与通信相关知识与异步任务
《Android Studio实战 快速、高效地构建Android应用 全面涵盖关于Android Studio及其庞大工具生态系统的内容,包括Git和Gradle:除了介绍Android Studio与Git(用于源代码管理)和Gradle(一款构建及测试工具)的无缝...
Android项目实战--手机卫士完整源码part1