安卓Webview- JavaScript屏幕尺寸与实际屏幕尺寸的区别

3

我有一个非常简单的Activity,它具有以下布局...

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
    <WebView
        android:id="@+id/webview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >
    </WebView>
</LinearLayout>

Activity本身被设置为全屏(无标题栏和安卓通知栏)并强制横屏。

因此...在我的HTC Desire上,WebView理论上占用了800x480(宽x高)像素。到目前为止一切顺利,它确实完全填充了屏幕。

我感到困惑的是,WebView加载了一个从服务器获取屏幕宽度和高度的javascript函数...

<script type="text/javascript">
<!--
    function getDims() {
        var screenW = screen.width;
        var screenH = screen.height;
        return "size=" + screenW + "x" + screenH;
    };
-->
</script>

问题在于screenW为527,而screenH为320,我不明白为什么。

看到高度为320,它恰好是480的三分之二,所以我又看了一下800的三分之二是多少(约为533)。因此,似乎javascript中的screen.widthscreen.height都报告了实际可用像素的三分之二。

有人能解释一下这是为什么吗?

1个回答

4
您可以在网站中使用元标记来控制Android屏幕大小。"screen"尺寸有三个设置,分别是低dpi、中等dpi和高dpi。
因此,设备会自动缩放您的网站(如果您没有设置,默认为中等dpi)。
在JavaScript中,您无法获得设备的确切像素大小,而只能大致了解设备处于某个区域...
这里有一个很好的解释:http://developer.android.com/guide/webapps/targeting.html

谢谢 - 我是一个 JavaScript 和 Web 应用程序的新手。我还没有找到那个 Web 应用程序指南,它看起来非常有用。谢谢。 - Squonk
是的,那份文件解释得非常清楚。再次感谢。 - Squonk

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