Webview在平板电脑上无法很好地呈现

时间:2016-07-12 14:21:49

标签: android android-webview

我正在使用这个库: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是最新的。

0 个答案:

没有答案