PhoneGap / Cordova Android在onDeviceReady之后获得屏幕尺寸

时间:2013-03-14 09:03:43

标签: android cordova

Android应用在onDeviceReady事件中返回无效大小(320x480),但几秒后大小变得正确。

我们如何在一开始就获得正确的尺寸?或者是否有任何我可以获得正确尺寸的事件?

我正在使用此功能来获取尺寸:

function getWindowSizes() {
  var windowHeight = 0, windowWidth = 0;
  if (typeof (window.innerWidth) == 'number') {
      windowHeight = window.innerHeight;
      windowWidth = window.innerWidth;
      
  } else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
      windowHeight = document.documentElement.clientHeight;
      windowWidth = document.documentElement.clientWidth;
      
  } else if (document.body && (document.body.clientWidth || document.body.clientHeight)) {
     windowHeight = document.body.clientHeight;
     windowWidth = document.body.clientWidth;
  }
  return [windowWidth, windowHeight];
}

视口:

<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height, target-densitydpi=device-dpi" />

使用Cordova 2.5.0。

UPD:
正如您在此屏幕截图中看到的,应用程序以较小的尺寸启动。即使是空的Cordova项目也是如此。我该如何解决这个问题?

enter image description here

谢谢!

3 个答案:

答案 0 :(得分:3)

删除元标题索引的高度,宽度和密度属性。

答案 1 :(得分:1)

尝试删除标题中的target-densitydpi。

设备dpi基于物理像素,而css像素是逻辑像素,它们彼此不同,如果你强制它们相同,你会看到屏幕被拉伸。

window.devicePixelRatio可以为您提供转换结果。(在webkit上)

更新

此链接提供了有关其工作原理的更多详细信息: https://petelepage.com/blog/2013/02/viewport-target-densitydpi-support-is-being-deprecated/

答案 2 :(得分:0)

尝试删除app类中的position:absolute属性(在index.css中)。这对我有用。