美文网首页
Highcharts HTML5交互性图标使用记录

Highcharts HTML5交互性图标使用记录

作者: smallestt | 来源:发表于2018-03-30 16:01 被阅读0次

    官网:https://www.hcharts.cn/demo/highcharts/bar-basic
    效果图:

    QQ20180330-153701.png
    实现步骤:
    1、在官网https://www.hcharts.cn/download下载中心下载软件包,里面包含各种图标的js及html文件,根据具体情况将下载下来的js及html、css文件放入assets文件夹下,本例只实现了横向柱状图:项目目录如下
    QQ20180330-154522.png

    2、显示图表,只需在html里引入highcharts.js即可

    <!DOCTYPE HTML>
    <html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>Highcharts Example</title>
    
        <style type="text/css">
    
        </style>
    </head>
    <body>
    <script src="../../code/highcharts.js"></script>
    <script src="../../code/data.js"></script>
    
    <div id="container" style="min-width: 310px; max-width: 800px; height: 600px; margin: 0 auto"></div>
    
    
    <script type="text/javascript">
    
    <!--// 图表配置-->
    var options = {
        chart: {
            type: 'bar'          //指定图表的类型,默认是折线图(line)
        },
        title: {
            text: ''                 // 标题
        },
        xAxis: {
            title:{
                text:'日期/日'
            },
            categories: ['1', '2', '3','4','5','6','7']   // x 轴分类
        },
        yAxis: {
            title: {
                text: '数量/捆'                // y 轴标题
            }
        },
        series: [{                              // 数据列
            name: '数量',                        // 数据列名
            data: [1, 2, 4,5,8,9]                     // 数据
        }]
    };
    // 图表初始化函数
    var chart = Highcharts.chart('container', options);
    </script>
    </body>
    </html>
    

    Activity中加载:

           String path = "file:///android_asset/examples/bar-basic/index.htm";
          // 启用支持javascript
            WebSettings settings = mWebView.getSettings();
            settings.setJavaScriptEnabled(true);
            settings.setCacheMode(WebSettings.LOAD_DEFAULT);
            settings.setDomStorageEnabled(true);
            settings.setAppCacheMaxSize(8 * 1024 * 1024);
            settings.setAllowFileAccess(true);
            settings.setAppCacheEnabled(true);
    
            mWebView.setVerticalScrollBarEnabled(false);
            mWebView.setHorizontalScrollBarEnabled(false);
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
                mWebView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
            }
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
                settings.setLoadsImagesAutomatically(true);
            } else {
                settings.setLoadsImagesAutomatically(false);
            }
            mWebView.loadUrl(path);
    

    3、刷新数据
    创建data.js,编写刷新方法,用于接收APP端传过来的数据进行重新配置
    data.js如下:

    function refresh(jsonStr){
        if(jsonStr==null){
            return;
        }
        var json = JSON.parse(jsonStr);
        // 图表配置
        var options = {
            chart: {
                type: 'bar'                          //指定图表的类型,默认是折线图(line)
            },
            title: {
                text: '' // 标题
            },
            xAxis: {
                title:{
                    text:'日期/日'
                },
                categories: json.categories   // x 轴分类
            },
            yAxis: {
                title: {
                    text: '数量/捆'                // y 轴标题
                }
            },
            series: [{                              // 数据列
                name: '数量',                        // 数据列名
                data:  json.datas                    // 数据
    
    
            }]
        };
        // 图表初始化函数
        var chart = Highcharts.chart('container', options);
    };
    

    在index.html里引入新创建的js文件
    <script src="../../code/data.js"></script>

    在WebView网页加载完后调用refresh方法,将输入传入js实现刷新功能

     //覆盖WebView默认使用第三方或系统默认浏览器打开网页的行为,使网页用WebView打开
            mWebView.setWebViewClient(new WebViewClient() {
                @Override
                public boolean shouldOverrideUrlLoading(WebView view, String url) {
                    // 返回值是true的时候控制去WebView打开,为false调用系统浏览器或第三方浏览器
                    view.loadUrl(url);
                    return true;
                }
    
                @Override
                public void onPageFinished(WebView view, String url) {
                    if (!mWebView.getSettings().getLoadsImagesAutomatically()) {
                        mWebView.getSettings().setLoadsImagesAutomatically(true);
                    }
                    loadUrl("javascript:refresh('" + getJsData() + "')");//通知js刷新数据
                }
            });
    
    //需要更新的数据
      String getJsData() {
            JsData data = new JsData();
            data.datas = new int[31];
            for (int i = 0; i < 31; i++) {
                data.datas[i] = i + 5;
            }
            data.categories = new String[]{"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31"};
            String json = FastJsonTools.toJson(data);
            return json;
        }
    

    此时的index.html

    <!DOCTYPE HTML>
    <html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>Highcharts Example</title>
        <style type="text/css">
    
        </style>
    </head>
    <body>
    <script src="../../code/highcharts.js"></script>
    <script src="../../code/data.js"></script>
    <div id="container" style="min-width: 310px; max-width: 800px; height: 600px; margin: 0 auto"></div>
    
    
    <script type="text/javascript">
    //通过data.js来配置数据
    
    </script>
    </body>
    </html>
    

    实现过程中遇到的问题:ScrollView与WebView嵌套使用的时候,图表会出现显示不全的情况,这时可以通过修改
    <div id="container" style="min-width: 310px; max-width: 800px; height: 600px; margin: 0 auto"></div>的height来解决(调低)。

    相关文章

      网友评论

          本文标题:Highcharts HTML5交互性图标使用记录

          本文链接:https://www.haomeiwen.com/subject/vosicftx.html