PhoneGap Android获取实际屏幕尺寸

7

我知道有很多类似于我的标题的问题,但我找不到我想要的答案。

在我的应用中,我使用 window.innerWidthwindow.innerHeight 来获取屏幕大小,但这两个值返回的大小不同。例如,当我在Note 3上运行我的应用程序时,我得到的是360x615,而实际上应该是1080x1920。

以下Java代码给出了我想要的结果:

    Display display = getWindowManager().getDefaultDisplay();
    Point size = new Point();
    display.getSize(size);
    int width = size.x;
    int height = size.y;

有没有一种在Phonegap中获得与Java相同的屏幕大小值的方法?
更新:当我在装有Jelly Beans的Note 2上测试相同的代码时,我得到了正确的尺寸值720x1230。

你的 index.html 文件中是否设置了 viewport meta 标签? - Dawson Loudon
是的,即使我将其删除,结果仍然相同。 - HaiderSahib
如果你的不同,请尝试这个<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">。我在所有的应用程序中都使用它,大小没有问题。 - Dawson Loudon
我的代码中有一个 target-densitydpi=device-dpi 的设置。我复制了你的代码,但结果仍然相同。我现在正在模拟器上使用 Nexus 7 的界面(1200x1920),但是我得到的分辨率是 600x887。 - HaiderSahib
2个回答

11

我在使用这段代码,希望它能帮到你。

var physicalScreenWidth = window.screen.width * window.devicePixelRatio;
var physicalScreenHeight = window.screen.height * window.devicePixelRatio;

这对我非常有效 - 我遇到了一个略微不同的问题,即在我的应用程序加载阶段尝试确定window.innerHeight时,有时会返回零。我认为屏幕布局的某些部分仍在异步进行。 - Chris Rae

4
我假设您想要了解实际设备像素而不是更常见的CSS像素?您可以在此处阅读相关信息:here
基本上,如果您想知道实际设备像素,可以使用screen.widthscreen.height。如果您想知道CSS像素,则可以使用window.innerWidthwindow.innerHeight
某些Android设备可能会忽略meta viewport标签,这是我使用三星Galaxy Tab设备时的经验。

我不确定screen.width和screen.height是否实际返回像素值 - 在Galaxy S6上,screen.height返回640。它需要通过window.devicePixelRatio进行缩放,就像Sadegh在他的答案中提到的那样。 - Chris Rae

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