如何让WVGA Android浏览器停止缩放我的图像?

22

我正在设计一个用于在Android浏览器中显示的HTML页面。考虑这个简单的示例页面:

<html>
<head><title>Simple!</title>
</head>
<body>
<p><img src="http://sstatic.net/so/img/logo.png"></p>
</body>
</html>

在标准 HVGA 手机(320x480)上看起来很好,但在 HDPI WVGA 尺寸(480x800 或 480x854)上,内置浏览器会自动放大图像;看起来很丑陋。

我已经了解到可以使用这个标签来强制浏览器停止缩放我的页面:

<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; minimum-scale=1.0; user-scalable=0;" />

但所有它做的就是禁用用户缩放(缩放按钮会消失);它并不能真正防止浏览器缩放我的图像。调整比例因子(将它们全部设置为2.0或0.5)根本没有任何效果。

我该如何强制WVGA浏览器停止缩放我的图像?


我注意到将浏览器设置中的“默认缩放”选项配置为“远”会禁用图像缩放,但我不能期望所有用户都这样做。 - Dan Fabulich
1
在Android 2.1 / API级别7中添加了一个设置“默认缩放”的API。webview.getSettings().setDefaultZoom() - Morgan Christiansson
为了回答这个问题,我正在构建一个网站,而不是使用WebView的Android应用程序,因此我无法使用Android API。 - Dan Fabulich
2个回答

32
啊,通过搜索Android源代码找到了它。在"viewport" meta标签中,有一个新的针对Android的"target-densityDpi"设置可用;据我所知,除了提交注释外,它完全没有记录。

为WebView添加dpi支持。

在"viewport" meta标签中,您可以指定"target-densityDpi"。 如果未指定,则使用默认值,即今天的160dpi。 然后,在viewport标签中指定的1.0缩放因子在G1上表示100%,在Sholes上表示150%。 如果将"target-densityDpi"设置为"device-dpi",那么1.0缩放因子在G1和Sholes上都表示100%。

实现了Safari的window.devicePixelRatio和css media查询 device-pixel-ratio。

因此,如果您使用"device-dpi"并根据window.devicePixelRatio修改字体大小和图像src,您可以在Sholes / Passion上获得更好的页面。

这是“target-densityDpi”的选项列表。

device-dpi:使用设备的本机dpi作为目标dpi。 low-dpi:120dpi medium-dpi:今天的默认值160dpi high-dpi:240dpi :我们将70到400之间的任何数字视为有效的目标dpi。


支持target-densityDpi在2009年9月21日加入了Android源代码,并且似乎至少没有包含在Android 1.6中。 它是在此提交中添加的:https://android.git.kernel.org/?p=platform/external/webkit.git;a=commit;h=f10585d69aaccf4c1b021df143ee0f08e338cf31 - Morgan Christiansson
@morganchristiansson 这是真的,但是在野外很少有Android 1.6 HDPI设备。LG有几款符合这个配置文件的手机...那些人可能会有不好的体验。 - Dan Fabulich
我正在针对LDPI / 小型设备进行开发,例如HTC Tattoo和SE X10 Mini,但遗憾的是它们都是Android 1.6。 - Morgan Christiansson
2
不确定是否有区别,但文档中没有将其大写 - 它是target-densitydpi而不是target-densityDpi,如<meta name="viewport" content="target-densitydpi=device-dpi" />所示。http://developer.android.com/reference/android/webkit/WebView.html - DyeA

5

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