0

我有一个HTML5应用程序,几乎所有这些都发生在Canvas中。在JS中,我已经为画布的高度和宽度设置了精确的尺寸。我也用了很多绝对定位和神奇数字来使布局完美。注意:一切都是围绕横向设计的,肖像不是一种选择。当强制横向时,Android应用程序(嵌入式WebView)崩溃

在现代版本的Chrome中运行这一切,一切都很好 - Chrome浏览器似乎在页面加载时(无论视口大小)正确缩放画布,并且绝对定位的画布图形/ HTML元素的位置相应地缩放。

但现在我试图用Android应用程序完成同样的事情 - 非常简单的应用程序,只需加载WebView,没有任何内容。画布比手机的分辨率小得多,所以我想这应该可以工作。

我的具体问题是在Manifest文件中设置android:screenOrientation =“landscape”会使应用程序立即崩溃。我的猜测是它与我的主布局文件交互不良,但我无法弄清楚。我正在测试三星Galaxy S6,并将应用程序构建到SDK版本21.

我想要的是像我在台式机Chrome浏览器中获得的行为,但我似乎无法找到一种方法,无论是无法显示整个HTML5画布,或立即崩溃应用程序。

这里是我用来定位画布,其中(在桌面Chrome)的作品 - 请注意,画布#板是画布元素。

<meta name='viewport' content='width=device-width, initial-scale=1'> 

// some irrelevant code omitted... 

var XRES = 640; 
var YRES = 280; 
var X_OFF = (window.innerWidth - XRES)/2; 
var Y_OFF = (window.innerHeight - YRES)/2; 

// some irrelevant code omitted... 

$('#board').css('left', X_OFF); 
$('#board').css('top', Y_OFF); 
$('#submitDialog').css('left', X_OFF + 222); 
$('#submitDialog').css('top', Y_OFF + 41); 

这中心的两个维度画布无论是全视口大小的,和中心的submitDialog(一DIV是最终用来提交高分)。

我想要的是一种方法来改变HTML/JS或Android项目配置来实现相同的目的。理想的是,我可以让WebView自动缩放到屏幕尺寸的90%。有什么想法吗?我提前感谢!

回答

0

我找到了答案。我从来没有能够通过清单orientation = landscape property,但使用setRequestedOrientation() in onCreate()完美工作。我还必须将尺寸设置为JS设置画布元素的确切尺寸。

有带刻度的一些问题和偏移,容易因与幻数再次调整的WebView(规模和利润特性解决了,但我相信任何设备的正确值可以计算和设定onCreate()