Android TextView 显示HTML与图片的4.0以上系统解决方案
150 浏览量
更新于2024-08-29
收藏 64KB PDF 举报
在Android开发中,实现TextView显示HTML内容并包含图片是一项常见的需求。本文重点介绍了如何在Android不同版本(特别是从Android 2.3到4.0及以上)中处理这种情况,特别是在处理网络图片加载时避免主线程阻塞的问题。
首先,对于Android 2.3及更低版本,开发者可能在TextView中直接使用主线程获取网络图片,这会导致应用程序在图片加载大图时出现卡顿现象。这是因为主线程在UI渲染时处理网络请求,会暂停UI更新,使得应用响应变慢。为了优化用户体验,应在Android 2.3以上版本中避免这种做法。
针对Android 4.0及以上系统,由于对主线程访问网络的限制,开发者必须使用异步加载机制。《Android.os.NetworkOnMainThreadException》异常表明了这一点,即在主线程中进行网络操作是被禁止的,因为这可能导致应用冻结,违反了Android设计原则。
解决方案是将图片加载过程放在单独的后台线程或者使用`AsyncTask`来异步执行。具体来说,作者建议创建一个`HtmlImageGetter`类,它实现了`InputStream`接口,用于在指定路径下获取图片,并将其转换为`BitmapDrawable`。当TextView需要显示图片时,通过`Html.fromHtml()`方法解析HTML字符串,并传递自定义的`HtmlImageGetter`实例,以及一个默认图片资源,以便在图片加载失败或未完成时显示。
以下是一个示例代码片段:
```java
// 获取TextView控件
TextView textViewContent = (TextView) getActivity().findViewById(R.id.textview_prodcut_detail_more_zp_content);
// HTML文本,包含图片地址
String zp_content = "测试图片信息:<br><img src=\"http://b2c.zeeeda.com/upload/2013/05/10/136814766742544.jpg\"/>";
// 默认图片资源
Drawable defaultDrawable = MainActivity.ma.getResources().getDrawable(R.drawable.stub);
// 使用HtmlImageGetter异步加载图片
Spanned sp = Html.fromHtml(zp_content, new HtmlImageGetter(textViewContent, "/esun_msg", defaultDrawable), null);
textViewContent.setText(sp);
```
在这个示例中,`HtmlImageGetter`类在接收到网络请求后,会在后台线程中下载图片,确保UI线程的流畅性。这样,即使在Android 4.0及更高版本中,也能有效地显示HTML加图片内容,同时保持良好的用户体验。
总结来说,Android开发中处理HTML和图片显示的关键在于理解主线程和子线程的职责划分,尤其是在Android 4.0及更高版本中的网络请求限制。通过使用异步加载、`Html.fromHtml()`方法和自定义`HtmlImageGetter`,开发者能够确保在不同版本的Android设备上实现稳定且高效的HTML文本显示。
2018-05-02 上传
2018-04-27 上传
2021-01-04 上传
2015-07-24 上传
2020-09-05 上传
2015-09-09 上传
2012-11-11 上传
2013-03-25 上传
weixin_38699830
- 粉丝: 6
- 资源: 973
最新资源
- 新代数控API接口实现CNC数据采集技术解析
- Java版Window任务管理器的设计与实现
- 响应式网页模板及前端源码合集:HTML、CSS、JS与H5
- 可爱贪吃蛇动画特效的Canvas实现教程
- 微信小程序婚礼邀请函教程
- SOCR UCLA WebGis修改:整合世界银行数据
- BUPT计网课程设计:实现具有中继转发功能的DNS服务器
- C# Winform记事本工具开发教程与功能介绍
- 移动端自适应H5网页模板与前端源码包
- Logadm日志管理工具:创建与删除日志条目的详细指南
- 双日记微信小程序开源项目-百度地图集成
- ThreeJS天空盒素材集锦 35+ 优质效果
- 百度地图Java源码深度解析:GoogleDapper中文翻译与应用
- Linux系统调查工具:BashScripts脚本集合
- Kubernetes v1.20 完整二进制安装指南与脚本
- 百度地图开发java源码-KSYMediaPlayerKit_Android库更新与使用说明