项目中往往需要显示一段文本,如果对文本需要特定的效果,就要写自定义的span,这样的工作量会变得很大,目前android支持html格式的文本,下面就是我对android支持html的程度和使用方式的总结。
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; } } }
相关推荐
例如,它可能增加了对HTML5新特性的支持,提高了渲染速度,优化了内存管理和电池消耗,甚至添加了分享、书签等功能。 **总结** Android HTMLViewer 是Android平台上一款专用于查看HTML内容的应用,它利用WebView...
总结,Android与H5的交互是移动开发中的常见需求,通过合理的数据传递机制,我们可以实现两者之间的深度融合,为用户提供更丰富的功能和体验。在实践过程中,注意安全性和性能优化,确保应用的稳定性和用户数据的...
总结来说,Android与HTML JavaScript的互调主要依赖`WebView`的`addJavascriptInterface`和`loadUrl`方法。Java端创建一个对象并暴露给JavaScript,JavaScript端通过`window对象`调用这些方法。同时,Android也可以...
总结来说,要在Android中获取HTML表单数据,你需要: 1. 创建并加载WebView。 2. 启用JavaScript执行。 3. 在HTML中编写获取表单数据的JavaScript函数,并调用Android的JavaScript接口。 4. 在Android端创建一个...
在Android端定义一个接口,然后在HTML中通过JavaScript调用这个接口来控制视频的播放: ```java webView.addJavascriptInterface(new JavaScriptInterface(this), "Android"); ``` ```javascript // 在HTML中的...
总结起来,Android与HTML5的结合为移动应用开发提供了灵活且强大的工具。通过理解并熟练运用数据库操作、UI交互、localStorage和定位功能,开发者可以构建出功能丰富、用户体验优秀的混合应用。同时,DroidGapDemo...
总结,针对Android TextView实现HTML图片显示,可以选择WebView方式,它适用于复杂的HTML渲染,而如果只是简单展示图片,使用`Html.fromHtml()`配合自定义`ImageGetter`会更轻量级。两种方法都能实现图片点击的交互...
总结一下,Android的TextView可以通过`Html.fromHtml()`和自定义的`ImageGetter`来显示HTML内容中的图片。对于本地资源,需要使用`ImageGetter`来加载和绑定图片;而对于网络资源,`Html.fromHtml()`可以直接处理。...
#### 配置Android应用以支持HTML5交互 1. **Manifest文件配置**:首先,在`AndroidManifest.xml`文件中添加Internet权限,这是实现HTML5交互的基础。 ```xml <uses-permission android:name="android.permission....
在Android开发中,为了提供...总结,通过HTML5在Android应用中实现ListView和下拉刷新功能,可以结合Web技术的优势,提高开发效率和用户体验。不过,需要注意性能优化和跨平台兼容性问题,确保应用的稳定性和流畅性。
总结来说,HTML5开发Android应用是一种高效且灵活的方式,尤其适用于需要跨平台运行的应用。通过熟练掌握HTML5的相关特性,开发者可以创建出功能丰富、用户体验良好的Android应用,同时利用Hybrid框架可以轻松实现与...
在Android中,你可以通过以下步骤来扩展Html的解析功能,以支持自定义标签: 1. **创建一个TagHandler**:实现`Html.TagHandler`接口,重写`handleTag()`方法。在这个方法里,你可以根据标签名进行特定的处理,比如...
然而,原生的`fromHtml()`方法不支持网络图片的加载,因此我们需要自定义一个`ImageGetter`接口的实现来处理图片。 `new URLImageParser(tv)` 就是自定义的`ImageGetter`实现,这里的`URLImageParser`类会解析HTML...
如果HTML需要与Android原生代码交互,可以使用`addJavascriptInterface()`方法添加JavaScript接口,然后在JavaScript中通过`window对象`调用这些接口。 总结,Android WebView是构建混合式应用的重要工具,结合...
总结来说,"Android+HTML5"开发模式结合了Android的系统级控制与HTML5的Web开发便捷性,为开发者提供了一种快速构建应用的新途径。通过熟练掌握WebView的使用、HTML5的特性以及混合开发的最佳实践,开发者可以创造出...
Android知识总结: Android是基于Linux内核的开源移动操作系统,主要用于智能手机和平板电脑。学习Android开发,你需要掌握以下几个核心概念: 1. Android SDK:包含了开发Android应用所需的工具和库。 2. Activity...
1. 添加依赖:在`build.gradle`文件中,确保添加了对`WebView`的支持,通常不需要特别添加,因为这是Android SDK的一部分。 2. 布局文件:在XML布局文件中,添加`WebView`控件,例如: ```xml android:id="@+id/...
总结,Android 2.1 API英文HTML文档是开发者探索Android 2.1系统的核心资料,它提供了全面的API参考,有助于开发者创建高效、稳定的应用。通过深入研究和实践,开发者可以充分利用这些资源,提升自己的开发技能。
例如,当需要从HTML5页面获取用户信息或执行特定操作时,JavaScript可以调用暴露的Java接口,这样就可以在Android端处理数据或触发特定行为。同时,Android也可以通过WebView的loadUrl方法调用JavaScript函数,向...