Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Android应用程序(嵌入式WebView)在强制横向时崩溃_Javascript_Android_Android Layout_Html5 Canvas_Android Webview - Fatal编程技术网

Javascript Android应用程序(嵌入式WebView)在强制横向时崩溃

Javascript Android应用程序(嵌入式WebView)在强制横向时崩溃,javascript,android,android-layout,html5-canvas,android-webview,Javascript,Android,Android Layout,Html5 Canvas,Android Webview,我有一个HTML5应用程序,几乎所有这些都发生在画布上。在JS中,我为画布的高度和宽度设置了精确的尺寸。我还使用了很多绝对定位和神奇的数字,使布局完美。注意:所有东西都是围绕横向设计的,纵向不是一个选项 在Chrome的现代版本中运行此功能,一切都很好-当页面加载时,Chrome似乎可以正确缩放画布(无论视口大小),并且绝对定位的画布绘图/HTML元素的位置也会相应地缩放 但现在我正试图用Android应用程序完成同样的事情——非常简单的应用程序,只加载一个网络视图,而不包含任何内容。画布比手机

我有一个HTML5应用程序,几乎所有这些都发生在画布上。在JS中,我为画布的高度和宽度设置了精确的尺寸。我还使用了很多绝对定位和神奇的数字,使布局完美。注意:所有东西都是围绕横向设计的,纵向不是一个选项

在Chrome的现代版本中运行此功能,一切都很好-当页面加载时,Chrome似乎可以正确缩放画布(无论视口大小),并且绝对定位的画布绘图/HTML元素的位置也会相应地缩放

但现在我正试图用Android应用程序完成同样的事情——非常简单的应用程序,只加载一个网络视图,而不包含任何内容。画布比手机的分辨率小得多,所以我想这应该可以用

我的具体问题是,在清单文件中设置android:screenOrientation=“横向”总是会使应用程序立即崩溃。我的猜测是,它与我的主布局文件交互不好,但我不知道如何进行。我正在三星Galaxy S6上进行测试,并将应用程序构建到SDK版本21

我想要的是像在桌面Chrome浏览器中一样的行为,但我似乎找不到一种方法,要么无法显示整个HTML5画布,要么立即使应用程序崩溃

这里是我用来定位画布的JS,它(在桌面Chrome中)可以工作-注意canvas#board是canvas元素

<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);

//省略了一些不相关的代码。。。
var XRES=640;
var YRES=280;
var X_OFF=(window.innerWidth-XRES)/2;
变量Y_OFF=(window.innerHeight-YRES)/2;
//省略了一些不相关的代码。。。
$('#board').css('left',X#OFF);
$('#board').css('top',Y#OFF);
$('submitDialog').css('left',X#u OFF+222);
$('submitDialog').css('top',Y#u OFF+41);
这将使画布在两个维度上居中,而不考虑整个视口大小,并使submitDialog(最终用于提交高分的div)居中


我想要的是一种改变HTML/JS或Android项目配置的方法,以实现同样的效果。理想的情况是,我可以使WebView自动缩放到屏幕大小的90%。有什么想法吗?先谢谢你

我找到了答案。我从未能够通过Manifestorientation=scape属性使其工作,但在onCreate()中使用setRequestedOrientation()非常有效。我还必须将WebView维度设置为JS设置画布元素的确切大小

<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);
在缩放和偏移方面存在一些问题,通过调整WebView的缩放和边距属性(同样使用幻数,但我确信任何设备的正确值都可以在onCreate()中计算和设置)很容易解决