Android Echarts单折线图和多折线图的使用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档



提示:以下是本篇文章正文内容,下面案例可供参考

一、单折线图形式

参考链接:https://www.jianshu.com/p/c2b589170379

1.代码示例:

  1. 引入依赖
dependencies {
    compile 'com.github.abel533:ECharts:3.0.0.2'
    implementation 'com.google.code.gson:gson:2.8.1'
}
  1. echarts.html文件
<!DOCTYPE html>
<html style="height: 100%">
<head>
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <meta charset="utf-8">
</head>
<body style="height: 100%; margin: 0">
<div id="container" style="height: 100%"></div>
<script type="text/javascript" src="./echarts.min.js"></script>
<script type="text/javascript">
            var app ={};
            function loadEcharts(echartJson){
            var dom =document.getElementById("container");
            var myChart =echarts.init(dom);
                var option = JSON.parse(echartJson);
                if (option &&typeof option ==="object") {
                    myChart.setOption(option,true);
                }
            }
        </script>
</body>
</html>
  1. EchartsOptionUtil
public class EchartOptionUtil {

    public static GsonOption getLineChartOptions(Object[] xAxis, Object[] yAxis) {
        GsonOption option = new GsonOption();
        //option.title().setText("");
        //图例
        option.legend("销量");
        //trigger为'item'时只会显示该点的数据,为'axis'时显示该列下所有坐标轴所对应的数据
        option.tooltip().trigger(Trigger.axis);
        //设置y轴数据
        ValueAxis valueAxis = new ValueAxis();
        option.yAxis(valueAxis);
        CategoryAxis categorxAxis = new CategoryAxis();
        categorxAxis.axisLine().onZero(false);
        categorxAxis.boundaryGap(true);
        //设置x轴数据
        categorxAxis.data(xAxis);
        option.xAxis(categorxAxis);

        Line line = new Line();
        //注意!!name要和上面的图例名称一样,不然图例会不显示!!
        line.smooth(false).name("销量").data(yAxis).itemStyle().normal().lineStyle().shadowColor("rgba(0,0,0,0.4)");
        option.series(line);
        return option;
    }
}
  1. EchartsView
public class EchartView extends WebView {
    private static final String TAG = EchartView.class.getSimpleName();

    public EchartView(Context context) {
        this(context, null);
    }

    public EchartView(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
    }

    public EchartView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init();
    }

    private void init() {
        WebSettings webSettings = getSettings();
        webSettings.setJavaScriptEnabled(true);
        webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
        webSettings.setSupportZoom(false);
        webSettings.setDisplayZoomControls(false);
        loadUrl("file:///android_asset/echarts.html");
    }

    /**刷新图表
     * java调用js的loadEcharts方法刷新echart
     * 不能在第一时间就用此方法来显示图表,因为第一时间html的标签还未加载完成,不能获取到标签值
     * @param option
     */
    public void refreshEchartsWithOption(GsonOption option) {
        if (option == null) {
            return;
        }
        String optionString = option.toString();
        String call = "javascript:loadEcharts('" + optionString + "')";
        loadUrl(call);
    }
}
  1. Activity内的使用
public class MainActivity extends AppCompatActivity {
    private EchartView lineChart;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        lineChart = findViewById(R.id.lineChart);
        lineChart.setWebViewClient(new WebViewClient(){
            @Override
            public void onPageFinished(WebView view, String url) {
                super.onPageFinished(view, url);
                //最好在h5页面加载完毕后再加载数据,防止html的标签还未加载完成,不能正常显示
                refreshLineChart();
            }
        });
    }

    private void refreshLineChart(){
        Object[] x = new Object[]{
                "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"
        };
        Object[] y = new Object[]{
                820, 932, 901, 934, 1290, 1330, 1320
        };
        lineChart.refreshEchartsWithOption(EchartOptionUtil.getLineChartOptions(x, y));
    }

}

结果转自上链接
结果转自上链接

二、多折线图形式

参考链接:https://blog.csdn.net/grh_168/article/details/86481462

1.代码示例

代码如下(示例):

  1. 引入依赖
  2. echarts.html
  3. EchartsOptionUtil (有改动!)
import com.github.abel533.echarts.axis.CategoryAxis;
import com.github.abel533.echarts.axis.ValueAxis;
import com.github.abel533.echarts.code.Trigger;
import com.github.abel533.echarts.code.X;
import com.github.abel533.echarts.json.GsonOption;
import com.github.abel533.echarts.series.Line;

import java.util.ArrayList;
import java.util.List;

public class EchartOptionUtil {
     //y轴数据传入为List形式
    public static GsonOption getLineChartOptions(Object[] xAxis, List<Object[]> yAxis) {
    
        GsonOption option = new GsonOption();
        option.title().setText("1111");
        List<String> m=new ArrayList<>();
        m.clear();
        //注意!!一定要和下面的name一样,不然不显示(翻车现场TAT)
        m.add("质量:kg");
        m.add("新");
        String[] types = {"质量","新"};
        option.legend().data(m).x(X.center);
        //option.legend("质量:kg");
       
        //trigger为'item'时只会显示该点的数据,为'axis'时显示该列下所有坐标轴所对应的数据
        option.tooltip().trigger(Trigger.axis);
        //设置y轴数据
        ValueAxis valueAxis = new ValueAxis();
        option.yAxis(valueAxis);
        CategoryAxis categorxAxis = new CategoryAxis();
        categorxAxis.axisLine().onZero(false);
        categorxAxis.boundaryGap(true);
        //设置x轴数据
        categorxAxis.data(xAxis);
        option.xAxis(categorxAxis);
        //两条线
        Line line = new Line();
        Line line1=new Line();
        line.smooth(false).name("质量:kg").data(yAxis.get(0)).itemStyle().normal().lineStyle().shadowColor("rgba(0,0,0,0.4)");
        line1.smooth(false).name("新").data(yAxis.get(1)).itemStyle().normal().lineStyle().shadowColor("rgba(0,0,0,0.4)");
        //装入数据表
        option.series(line);
        option.series(line1);
        return option;
    }
}

4.EchatsView无改动
5.Activity内使用

String[] x={"1","2","3","4","5","6","7"};
        Random random = new Random();
        //测试数据,随机产生
        Object[] y=new Object[7];
        for(int i=0;i<7;i++)
        {
            int ran=(int)(random.nextDouble()*100+day*10);
            y[i]=ran;
        }
        Object[] z=new Object[30];
        for(int i=0;i<30;i++)
        {
            int ran=(int)(random.nextDouble()*100+month*10);
            z[i]=ran;
        }
        m.clear();
        m.add(y);
        m.add(z);
        echartView.refreshEchartsWithOption(EchartOptionUtil.getLineChartOptions(x, m));
  1. 结果图:
    在这里插入图片描述
    在这里插入图片描述
    点击图例可显示/隐藏

总结

嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿牛!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
要在 Android使用 ECharts 绘制折线图,您需要按照以下步骤进行操作: 1. 在您的 Android 项目中创建一个 assets 目录,并将 ECharts JavaScript 库文件放到该目录中。 2. 创建一个 HTML 文件,将 ECharts 初始化代码嵌入其中,并将该文件放到 assets 目录中。 3. 在 WebView 控件中加载该 HTML 文件,以显示您的 ECharts 图表。 4. 在 ECharts 初始化代码中使用 ECharts API 配置您的图表,包括数据和样式。 下面是一个示例代码片段,演示如何使用 ECharts 绘制折线图: ```java WebView webView = findViewById(R.id.webView); WebSettings webSettings = webView.getSettings(); webSettings.setJavaScriptEnabled(true); webView.setWebViewClient(new WebViewClient() { public void onPageFinished(WebView view, String url) { // 加载完成后调用 JavaScript 函数初始化 ECharts 图表 view.loadUrl("javascript:echartsInit()"); } }); // 加载 ECharts JavaScript 库文件 webView.loadUrl("file:///android_asset/echarts.min.js"); // 加载包含 ECharts 初始化代码的 HTML 文件 webView.loadUrl("file:///android_asset/echarts.html"); ``` 请注意,在上面的代码示例中,我们将 ECharts 初始化代码嵌入到名为 echarts.html 的 HTML 文件中,并在 WebView 控件中加载该文件。这个 HTML 文件应该类似于以下内容: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>ECharts Demo</title> <script src="echarts.min.js"></script> </head> <body> <div id="chart" style="width: 100%; height: 100%;"></div> <script type="text/javascript"> function echartsInit() { // 创建 ECharts 实例 var myChart = echarts.init(document.getElementById('chart')); // 在这里配置 ECharts 图表 myChart.setOption({ title: { text: '折线图示例' }, tooltip: {}, xAxis: { data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日'] }, yAxis: {}, series: [{ name: '销量', type: 'line', data: [5, 20, 36, 10, 10, 20, 5] }] }); } </script> </body> </html> ``` 请注意,上面的 HTML 文件中包含一个名为 echarts.min.js 的 JavaScript 文件,这是我们在 Android 项目的 assets 目录中放置的 ECharts JavaScript 库文件。在 echartsInit() 函数中,我们使用 ECharts API 配置了一个折线图,包括标题、数据、轴和系列。通过更改数据和样式选项,您可以自定义您自己的 ECharts 折线图
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值