Android TextView 显示HTML带图片的优化处理与异步加载
152 浏览量
更新于2024-09-06
收藏 62KB PDF 举报
在Android开发中,实现TextView显示HTML内容并插入图片是一项常见的需求,尤其是在产品详情、论坛评论或者消息展示等场景。本文将详细介绍如何在Android应用中,尤其是针对不同版本(如Android 2.3和4.0及以上)处理TextView控件显示HTML加图片的问题。
首先,对于Android 2.3及以前的系统,由于主线程的限制,如果直接在UI线程中加载网络图片,可能会导致应用卡顿,因为主线程会被阻塞,直到图片加载完成。为了解决这个问题,通常的做法是使用AsyncTask或者其他线程(非主线程)来异步加载图片,避免阻塞用户界面。例如,创建一个自定义的HtmlImageGetter类,该类在加载图片时会返回一个占位图(如默认Drawable),并在图片加载完成后更新TextView的内容。
以下是关键代码片段:
```java
// 获取TextView控件
TextView textViewContent = (TextView) getActivity().findViewById(R.id.textview_prodcut_detail_more_zp_content);
// HTML文本,包含图片源URL
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);
// 使用Html.fromHtml()方法,传递自定义的HtmlImageGetter和默认图片
Spanned sp = Html.fromHtml(zp_content, new HtmlImageGetter(textViewContent, "/esun_msg", defaultDrawable), null);
textViewContent.setText(sp);
// HtmlImageGetter类实现
class CustomHtmlImageGetter implements Html.ImageGetter {
// ... 实现图片加载逻辑,如使用AsyncTask异步下载图片
@Override
public Drawable getDrawable(String source) {
// 在这里处理图片下载,返回加载完成的Drawable或默认Drawable
}
}
```
然而,在Android 4.0及以上版本中,为了提高用户体验和遵循UI线程规则,系统禁止在主线程执行网络请求。因此,上述代码中的`Html.fromHtml()`调用会抛出`Android.os.NetworkOnMainThreadException`异常。为解决这个问题,你需要确保图片加载操作在子线程中执行,通常通过Handler或者FutureTask来实现。
Android实现TextView显示HTML加图片需要关注以下几点:
1. 对于旧版本,使用AsyncTask或类似机制异步加载网络图片,避免阻塞UI线程。
2. 对于新版本,确保网络请求在子线程中进行,以符合Android 4.0及以后版本的线程约束。
3. 提供一个合理的占位图,当图片加载未完成时显示,提供良好的用户体验。
通过这些策略,你可以有效地在Android应用中展示HTML文本并包含动态加载的图片,同时兼顾不同版本间的兼容性和性能优化。
2018-04-20 上传
2018-06-12 上传
2015-07-24 上传
2023-05-03 上传
2023-06-28 上传
2024-09-12 上传
2023-07-22 上传
2023-05-17 上传
2023-05-30 上传
weixin_38658086
- 粉丝: 3
- 资源: 924
最新资源
- C++标准程序库:权威指南
- Java解惑:奇数判断误区与改进方法
- C++编程必读:20种设计模式详解与实战
- LM3S8962微控制器数据手册
- 51单片机C语言实战教程:从入门到精通
- Spring3.0权威指南:JavaEE6实战
- Win32多线程程序设计详解
- Lucene2.9.1开发全攻略:从环境配置到索引创建
- 内存虚拟硬盘技术:提升电脑速度的秘密武器
- Java操作数据库:保存与显示图片到数据库及页面
- ISO14001:2004环境管理体系要求详解
- ShopExV4.8二次开发详解
- 企业形象与产品推广一站式网站建设技术方案揭秘
- Shopex二次开发:触发器与控制器重定向技术详解
- FPGA开发实战指南:创新设计与进阶技巧
- ShopExV4.8二次开发入门:解决升级问题与功能扩展