【问题标题】:WebView autoscales local imagesWebView 自动缩放本地图像
【发布时间】:2011-03-03 20:22:40
【问题描述】:

我的问题与this one 类似,但不同之处足以让我发布一个新问题。

我正在编写一个图像查看器,它从远程服务器下载 PNG,将其保存到存储中,然后在 WebView 中打开它,这样我就可以免费获得多点触控缩放。这些图像通常是文档,因此用户希望能够放大很远。我正在发送足够分辨率的图像以启用此功能,但WebView 似乎通过将我的图像缩放到屏幕尺寸开始“帮助”我。这意味着我的图像分辨率太低而无法正确放大。

我已经搜索过这个,我发现其他一些人遇到了similarproblem,但我找到的唯一可能的解决方案是将图像切割成图块并在加载之前使用 HTML 重新组合它们风景。这似乎是一个杂乱无章的问题,我正在询问 StackOverflow 主脑是否有人有办法关闭这种缩放,或者有另一种方法来获得我需要的东西。

初始化WebView的代码:

viewer = (WebView)findViewById(R.id.activity_imageviewer_webview);
viewer.setBackgroundColor(0);
WebSettings settings = viewer.getSettings();
settings.setJavaScriptEnabled(false);
settings.setBuiltInZoomControls(true);
settings.setUseWideViewPort(true);
settings.setLoadWithOverviewMode(true);

将图片加载到WebView的代码:

viewer.loadUrl(Uri.fromFile(imageFile).toString());

【问题讨论】:

    标签: android android-webview android-image android-browser


    【解决方案1】:

    更改视口属性可能会有所帮助,请查看

    <meta name="viewport" ...>

    html 标头中的元标记

    【讨论】:

    • 感谢您的提示,但在尝试了<meta name="viewport" content="target-densitydpi=device-dpi" /> 和许多其他视口属性之后,没有任何改变。我的图像仍然按比例缩放,看起来很糟糕。
    • 杰克,这有点远。如果我遇到什么事情,我会告诉你的。
    • 听起来你做了很多工作来避免一些不那么困难的事情。几行 Java 代码即可完成多点触控缩放/绘制图像。
    【解决方案2】:

    我们最终通过使用平铺方法以艰难的方式解决了这个问题。我们在服务器上将图像分割成垂直切片,然后将它们发送下来,在客户端使用 HTML 重新组合,然后将其放入WebView

    实际上,它似乎工作得相当好。图形质量肯定更高,人们可以轻松阅读其中的文字。我们看到的唯一问题是平移和缩放性能会受到影响,但出于我未知的原因(目前),这仅在 Nexus S 上非常糟糕。

    在其他情况发生变化之前,我认为这可能是不编写自定义视图控件的唯一解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-13
      • 1970-01-01
      • 2015-07-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多