1

我正在尝试围绕修改后的 VNC 查看器小程序(VNC = 远程显示协议)实现一个包装器,以提供增强的用户体验(使用 javascript),但在处理旋转时遇到了问题。

小程序的宽度/高度是固定的 (1) - 所以当用户旋转设备时,小程序会覆盖屏幕或调整大小:

+------------+   +-------+         +-------+
|............|   |.......|...      |.......|
|.         X.|   |.      | X. or   |.    x.|
|.          .| > |.      |  .      |.......|
|............|   |.......|...      |       |
+------------+   |       |         |       |
                 |       |         |       |
                 +-------+  :(     +-------+ :(

但我想要....

+------------+   +-------+
|............|   |.......|
|.         X.|   |.     .|
|.          .| > |.     .|
|............|   |.     .|
+------------+   |.    X.|
                 |.......|
                 +-------+  :)

虽然我可以从javascript中屏幕尺寸的变化中检测到自动旋转,并且,如果它是用 Java 编写的,我可以抑制自动旋转,但这些都没有达到我想要的结果:具体来说,

  • 旋转设备时显示器的方向不会改变
  • 我的 javascript 会检测到该设备已被旋转并重新定位小程序的内容(通过发送 OOB 消息以在 vncserver 上运行 xrandr)。

我并不完全反对将旋转检测实现为暴露给javascript的单独小程序/通过webview实现页面,但不希望这样做。

是否可以在 html 应用程序清单文件中锁定方向?

锁定方向时是否可以使用javascript检测旋转?

还有其他方法可以解决这个问题吗?

1 - 这是底层协议的限制,我已经在对 Java 小程序进行更改,我也不想重写服务器!

更新

我知道大多数版本的 VNC(包括 noVNC)都存在 xrandr 问题。

如果有人能告诉我如何抑制浏览器页面的自动重新定向(不使用带有 web 视图的小程序),这至少给了我部分答案。

4

2 回答 2

1

我不完全确定我是否可能在这里遗漏了您的观点,但是您可以通过在清单中添加以下行来防止设备在旋转时重新布局或键盘滑出:

android:configChanges="keyboardHidden|orientation"

然后,如果我理解正确,您可以让您的 javascript 在更改发生后简单地旋转小程序中的文本。

这将提供将窗口保持在您上面指示的方向和大小的所需效果,由您自己来纠正文本方向。

于 2012-07-02T16:36:16.847 回答
0

看看这个,好像已经有人解决了这个问题:https ://stackoverflow.com/a/2307936/375929

UPD Afaik,您无法从 javascript 中强制执行方向,但您可以检测旋转并在您的 web 应用程序中对互补旋转做出反应——因此您的 web 应用程序的方向对用户来说保持不变。

于 2012-07-02T13:30:52.273 回答