【问题标题】:Phonegap Cordova - Changing resolution of overall device (not the canvas)Phonegap Cordova - 改变整个设备的分辨率(不是画布)
【发布时间】:2017-01-14 14:34:53
【问题描述】:

我正在尝试更改应用的整体尺寸。它读取 360x640。我的画布 DPI 大 4 倍,因此使用 window.screen.width 给我 1440x2560。

有一种方法可以使用window.screen.width 来定义画布,但我正在尝试更改window.innerWidthwindow.innderHeight 的值。

我面临的主要问题是当我拖动一个元素时,我的 touchmove 每 4 个像素移动 1 个像素,因为应用程序本身的宽度是 360,而画布是 1440,因此我的 touchmove 每 4 个像素在设备上移动 1 个像素.虽然我实现了 60fps 的拖动,但如果你仔细观察,它会给拖动一种块移动的效果,而不是平滑。

我不确定,但我认为这是通过在 html 中由 target-densitydpi=device-dpi 定义 viewport 解决的,但这已被弃用。

我想我需要的是一种让window.innerWidth等于window.screen.width的方法,这可能吗?

window.innerWidth   == 360px //Can I change these values?
window.innerHeight  == 640px //Can I change these values?
window.screen.width == 1440px
window.scree.height == 2560px

P.S 如果问题不清楚,请不要犹豫!

【问题讨论】:

  • 您设备的物理宽度和高度当然是固定的。您设备的物理 DPI 当然是固定的。视口将使用虚拟缩放物理。如果你想让它们一样,就让它们一样吧!
  • 查看我对此的回答 [多个]:stackoverflow.com/questions/26828329/… 它可能会回答您的大部分问题
  • 您是否在 部分设置了视口?
  • 投反对票就像女巫。没有人看到他们,但存在....大声笑
  • 也许你可以解决在视口元标记上设置宽度和高度:<meta name="viewport" content="width=1440; height=2560">

标签: javascript html cordova canvas


【解决方案1】:

投票支持 Marcos Pérez Gude。

请同时发布您的 CSS。

当你在 head 中添加视口标签时

<meta name="viewport" content="width=device-width; height=device-width; initial-scale=1" /> 

如果您在 CSS 中没有固定高度和宽度,它将匹配您的 html 正文宽度和高度以适应屏幕。 如果您在 CSS 中设置,请删除高度和宽度。

视口肯定会工作。

【讨论】:

  • 您可能希望在回答中感谢 MarcosPérezGude。我敢打赌,您将很难真正举出人们可以看到的例子。大声笑
【解决方案2】:

好吧,这有点像 hack。老实说,Marcos Pérez Gude 提到的视口应该可以工作,您应该尝试更多地使用它,但移动设备可能会如此不一致...... 编辑:某些设备故意报告不正确的尺寸以强制执行统一缩放。

使用 javascript 计算window.screen.width / window.innerWidth 的比例,对高度做同样的事情...

取两者中的最小值(或最大值,由您选择)并为文档元素 :root { transform-origin: 0 0 0; transform: scale(&lt;value&gt;); } 应用 CSS 样式。也许html 而不是:root

这就是它的样子。

:root { transform-origin: 0 0 0; transform: scale(0.5); }
#example { width: 400px; border: 1px solid black; }
Hello guys. I'm moving between the CSS pixels!
<div id="example"> I AM 400 PIXELS WIDE! ... or 200 pixels wide? </div>

如下所示,还有一个普通的 ole zoom。应该是一样的效果。

:root { zoom: 0.5; }
#example { width: 400px; border: 1px solid black; }
Hello guys. I'm moving between the CSS pixels!
<div id="example"> I AM 400 PIXELS WIDE! ... or 200 pixels wide? </div>

下面是一个没有缩放或缩放的比较示例。

#example { width: 400px; border: 1px solid black; }
Hello guys. I'm moving between the CSS pixels!
<div id="example"> I AM 400 PIXELS WIDE! ... or 200 pixels wide? </div>

现在关于使innerWidthscreen.width 相同...属性是可变的,因此在计算和缩放之后,您可以立即执行window.innerWidth = window.screen.width ...和高度相同.也许备份原件,并在方向更改事件中进行更正。

【讨论】:

  • 刚刚记得,一些设备故意报告不正确的视口大小以保持文本缩放与用户界面一致,以及其他恶作剧...跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-06
  • 1970-01-01
  • 2015-10-21
  • 2014-08-31
相关资源
最近更新 更多