Android学习之TextView显示html图片的方法
2016-06-02 11:43
786 查看
今天在使用TextView显示html图片的时候,发现图片展示不出来,因为有很多html标记是不支持的,只支持一部分,效果如下:
文字效果有,但是图片出不来
要实现图片的显示需要使用Html.fromHtml的另外一个重构方法:
public static Spanned fromHtml (String source, Html.ImageGetter imageGetter, Html.TagHandler tagHandler)
其中Html.ImageGetter是一个接口,我们要实现此接口,在它的getDrawable(String source)方法中返回图片的Drawable对象才可以。
要点:添加网络权限
但是要直接这么用会出异常,因为主线程中不能做耗时操作,所以要开线程运行。
最终效果:
文字效果有,但是图片出不来
要实现图片的显示需要使用Html.fromHtml的另外一个重构方法:
public static Spanned fromHtml (String source, Html.ImageGetter imageGetter, Html.TagHandler tagHandler)
其中Html.ImageGetter是一个接口,我们要实现此接口,在它的getDrawable(String source)方法中返回图片的Drawable对象才可以。
Spanned sp = Html.fromHtml(html, new Html.ImageGetter() { @Override public Drawable getDrawable(String source) { InputStream is = null; try { is = (InputStream) new URL(source).getContent(); Drawable d = Drawable.createFromStream(is, "src"); d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight()); is.close(); return d; } catch (Exception e) { return null; } } }, null); textView.setText(sp);
要点:添加网络权限
<uses-permission android:name="android.permission.INTERNET" />
但是要直接这么用会出异常,因为主线程中不能做耗时操作,所以要开线程运行。
new Thread(new Runnable() { @Override public void run() { final Spanned sp = Html.fromHtml(html, new Html.ImageGetter() { @Override public Drawable getDrawable(String source) { InputStream is = null; try { is = (InputStream) new URL(source).getContent(); Drawable d = Drawable.createFromStream(is, "src"); d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight()); is.close(); return d; } catch (Exception e) { return null; } } }, null); //方式一 getActivity().runOnUiThread(new Runnable() { @Override public void run() { tv_test.setText(sp); } }); //方式二 /* tv_test.post(new Runnable() { @Override public void run() { tv_test.setText(sp); } });*/ } }).start();
最终效果:
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件