Android TextView 显示网络图片,点击放大
最近在做一个 android app 的应用,一个很简单的应用。
要在 TextView 中显示从网络上获取的内容,内容是HTML格式,在网上查了资料,发现用“Html.fromHtml()”方法可以生成一个支持HTML的文本对象,在这个方法中可以实现“ImageGetter”接口来处理图片,在 TextView 中显示网络图片,网上有很多讲解,但我想要让 TextView 中的图片可以点击放大,再查询网络,发现“TagHandler”接口可以处理HTML标签,通过重写这个方法,可以实现对自订标签的支持和点击事件。
但不知道如何获取标签中的内容,后来通过不断的查询资料,得知从 Editable 中获取一个 Span 对象数组,然后可以通过相应的 Span 来获取相应的资料。有了思路,马上写代码测试,完全可行。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
@Override public void handleTag(boolean opening, String tag, Editable output, XMLReader xmlReader) { // 当 tag 为 img 时进行相应处理 if (tag.toLowerCase().equals("img")) { int len = output.length(); // 获取图片资源地址 ImageSpan[] images = output.getSpans(len-1, len, ImageSpan.class); String imgUrl = images[0].getSource(); /** 更多相关处理代码省略 */ } } |
TextView 中监听图片点击事件,实现图片点击放大,我在网上找过很多资料,有很多地方说不可以实现,我就通过反编译QQ的APP来查看,发现也是通过 TextView 来实现的,因此才继续找相关的代码示例。最终在一个示例中处理URL的事件看到一个“UrlSpan”,我才会去想是不是也有一个“ImageSpan”呢,在 Eclipse 中输入“ImageSpan”,果然有这个类,最终才解决这个问题。
在这里贴出示例代码(点击下载:TextView-TEST),希望可以帮到也同样遇到此问题的朋友。