Android TextView 显示网络图片,点击放大

最近在做一个 android app 的应用,一个很简单的应用。

要在 TextView 中显示从网络上获取的内容,内容是HTML格式,在网上查了资料,发现用“Html.fromHtml()”方法可以生成一个支持HTML的文本对象,在这个方法中可以实现“ImageGetter”接口来处理图片,在 TextView 中显示网络图片,网上有很多讲解,但我想要让 TextView 中的图片可以点击放大,再查询网络,发现“TagHandler”接口可以处理HTML标签,通过重写这个方法,可以实现对自订标签的支持和点击事件。

但不知道如何获取标签中的内容,后来通过不断的查询资料,得知从 Editable 中获取一个 Span 对象数组,然后可以通过相应的 Span 来获取相应的资料。有了思路,马上写代码测试,完全可行。

TextView 中监听图片点击事件,实现图片点击放大,我在网上找过很多资料,有很多地方说不可以实现,我就通过反编译QQ的APP来查看,发现也是通过 TextView 来实现的,因此才继续找相关的代码示例。最终在一个示例中处理URL的事件看到一个“UrlSpan”,我才会去想是不是也有一个“ImageSpan”呢,在 Eclipse 中输入“ImageSpan”,果然有这个类,最终才解决这个问题。

在这里贴出示例代码(点击下载:TextView-TEST),希望可以帮到也同样遇到此问题的朋友。

图片未加载完前的显示。图片加载完成后显示。

使用JAVA请求需要Basic身份验证的网页

通过JAVA抓取页面时,有些页面会返回401(Unauthorized)响应状态码和www-authenticate响应头来要求客户端进行身份认证。这种认证有两种方式:BASIC和DIGEST,BASIC验证要求客户端对用户名和密码进行BASE64编码后传送给服务器。DIGEST的认证方式的细节比较复杂,会经过一系列的加密,所以很难被破译。

JAVA提供一个用于启用身份认证的类,可以支持HTTP协议中的多个认证方式,这个类是java.net.Authenticator,使用方法如下:

只需要创建一个继续自Authenticator的类,并且重写其中的getPasswordAuthentication()方法,将用户名和密码放入方法中,这样在需要使用身份认证的地方实现这个类就可以了。