【问题标题】:Android: Easiest way to make a WebView display a Bitmap?Android:让 WebView 显示位图的最简单方法?
【发布时间】:2011-02-25 19:52:34
【问题描述】:

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

或者有没有更好的方法来实现我的主要目标,即将位图数据显示为可缩放和可平移的图像?

【问题讨论】:

    标签: android bitmap zooming pan


    【解决方案1】:

    您可以使用 webview 直接远程查看您的图像。您不再需要将图像保存在文件中。 这是一个示例代码sn-p。

    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即可。

    【讨论】:

    • 我之所以要传递已经加载的位图数据,是因为这样我的应用程序可以缓存图像(在我的情况下是在数据库中),因此只需加载一次。
    • 据我所知,webview已经有了缓存功能。您可以通过指定其缓存模式来覆盖其行为。 myWebView.getSettings().setCacheMode(mode);你可以参考这个链接。 developer.android.com/intl/de/reference/android/webkit/… 您可以使用 'LOAD_CACHE_ELSE_NETWORK' 作为模式,如果内容在那里,它使用缓存,即使过期,从网络加载。另一种方法是自己手动处理缩放、平移和缓存,而不使用 webview。可以看android源码的camera包下的代码ViewImage.java。
    【解决方案2】:

    毕竟我对 WebView 并不满意,所以我最终创建了自己的图像查看 Activity。可以在in this post on google groups找到更多关于我是如何做到的描述。

    【讨论】:

      猜你喜欢
      • 2011-05-20
      • 2011-01-17
      • 1970-01-01
      • 2012-09-26
      • 1970-01-01
      • 1970-01-01
      • 2012-06-06
      • 1970-01-01
      • 2018-05-06
      相关资源
      最近更新 更多