我正在使用这个库:https://github.com/domitry/elegans在html / js文件中绘制一些图形。然后我将它集成到我的Android应用程序中。它没有在模拟器上工作(可能因为它没有webgl),但是它在我的手机和我的计算机浏览器上工作。然后我尝试使用平板电脑并且它不能正常工作(图表在不同角度重新绘制)。它很奇怪,因为它是相同的UserAgent。
我使用:mWebView.getSettings()。getUserAgentString()来检查。 我也试过平板电脑的Chrome应用程序,我没有问题(webview和chrome都共享相同的渲染引擎)。
知道问题是什么吗?
我的javascript代码:
function start (val){
var data = {};
// if (typeof Android !== 'undefined') {
// var calib = JSON.parse(Android.getJsonFichierCalib());
//
// Android.showToast(calib.axeY.toString());
// var axeX = calib.axeX;
// var axeY = calib.axeY;
// var axeZ = calib.valeur_decimale;
// //var axeZ = new Array(calib.axeZ.length);
// //for (var i = 0; i < 10; i++) {
// // axeZ[i] = [0*i, 1*i, 2*i, 3*i, 4*i, 5*i, 6*i, 7*i, 8*i, 9*i];
// //}
// }
// else{
var axeX = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
var axeY = [11, 12, 13, 14, 15, 16, 17, 18, 19, 20];
var axeZ = new Array(10);
for (var i = 0; i < 10; i++) {
axeZ[i] = [0*i, 1*i, 2*i, 3*i, 4*i, 5*i, 6*i, 7*i, 8*i, 9*i];
}
// }
console.log(axeX);
console.log(axeY);
for (var i = 0; i < axeZ.length; i++) {
console.log(axeZ[i]);
}
var BIGIN=axeX[0], END=axeX[axeX.length-1], INTERVAL = 1;
width = height = (END - BIGIN)/INTERVAL + 1;
data.x = [], data.y = [], data.z = [];
for(var i=0;i< height;i++)data.x.push([]);
for(var j=0;j< height;j++){
var x = BIGIN + INTERVAL*j;
for(var i=0;i< width;i++){
data.x[i][j] = axeX[j];
//console.log(data.x[i][j]);
}
}
// for (i=0; i < data.x.length; i++) {
// for (j = 0; j < data.x[i].length; j++) { console.log(data.x[j][i]); }
// }
for(var i=0;i< width;i++){
data.y.push([]);
var y = BIGIN + INTERVAL*i;
for(var j=0;j< height;j++){
data.y[i][j] = axeY[i];
//console.log(data.x[i][j]);
}
}
for(var i=0;i< width;i++){
data.z.push([]);
for(var j=0;j< height;j++){
var x=data.x[i][j], y=data.y[i][j];
data.z[i][j] = axeZ[i][j];
}
}
d3.select('#vis').datum(data).call(Elegans.SurfacePlot);
};
window.addEventListener("load", start);
我的WebView设置:
mWebView = (WebView) findViewById(R.id.webview);
mWebView.setWebViewClient(new WebViewClient());
mWebView.addJavascriptInterface(webAppInterface, "Android");
WebSettings webSettings = mWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
Log.i("WebViewActivity", "UA: " + mWebView.getSettings().getUserAgentString());
平板电脑是Android 6.0上的Nvidia Shield Tablet K1,WebView是最新的。