Android:如何最简单地使WebView显示位图?

8
我有一些从远程源加载到的图像存储在Bitmap变量中,我想要显示它们。除了在这些图像之间切换外,用户还应该能够缩放和平移它们。我的第一个想法是通过意图将它们以某种方式传递给内置的画廊应用程序,但似乎不可能实现这一点。 在多个地方建议使用WebView解决方案,因为它已经支持缩放和平移。 我的问题是,我的Bitmap数据如何进入WebView?我是否必须首先将其写入文件,然后再将其删除,或者是否有更简单的方法?
或者,是否有更好的方法来实现我的主要目标,即将Bitmap数据显示为可缩放和可平移的图像?
2个回答

4
您可以使用Webview直接远程查看您的图片。您不再需要将图像保存在文件中。 以下是示例代码片段。
myWebView.getSettings().setBuiltInZoomControls(true); //to get zoom functionalities

String url = "http://....."; //url of your image

String x= "<html><head><meta name=\"viewport\" content=\"width=device-width, minimum-scale=1.0\"/><style type=\"text/css\">html, body {margin: 0;padding: 0;} img {border: none;}</style><head><body style=\"background: black;\"><table><tr><td align=\"center\"><img src=\"" + url + "\" /></td></tr></table></body></html>";

myWebView.loadData(x, "text/html", "UTF-8");

关于切换图片,您只需要更改url的值并再次调用webview的loadData即可。


我想传递已经加载的位图数据的原因是这样我的应用程序可以缓存图像(在我的情况下是在数据库中),因此它只需要被加载一次。 - Steven Meliopoulos
据我所知,webview已经具备缓存功能。您可以通过指定其缓存模式来覆盖其行为。myWebView.getSettings().setCacheMode(mode); 您可以参考此链接。 http://developer.android.com/intl/de/reference/android/webkit/WebSettings.html您可以使用“LOAD_CACHE_ELSE_NETWORK”作为模式,在其中如果内容存在,则使用缓存,即使过期,否则从网络加载。另一种方法是手动处理缩放、平移和缓存,而不使用webview。您可以查看Android源代码中相机包下的ViewImage.java代码。 - capecrawler

0

我最终对WebView不满意,因此我最终创建了自己的图像查看活动。有关我如何实现它的进一步描述可以在此Google群组帖子中找到。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接