Android项目中使用echarts

之前都是在web网页端使用echarts,现在在android项目中使用echarts,实现柱状图、折线图、雷达图等,以柱状图为例。

1、首先去echarts官方下载echarts下载js文件,最好下载完整版的,也可以根据自己的需要自定义构建。

图1

下载下来的js文件如图所示


图2

2.将下载下来的js文件放到android工程的assets文件夹下


图3

3.用WebView加载html,首先创建html文件,如果有现成的html文件直接复制进来进行,但如果想要自定义html时,就要进行创建。

选中assets文件夹下的echart文件夹,右键new,因为没有html选项,所以选择other


图4

在web文件夹下选中HTML File,新建html文件。


图5

注意:一开始我的eclipse新建里边没有web这个文件夹,即没法创建html文件,这时呢,通过help-->Install New SoftWare,

work with根据你的eclipse版本名选择

"http://download.eclipse.org/releases/kepler"(如果你是 Eclipse Kepler版本)

OR "http://download.eclipse.org/releases/juno"(如果你是 Eclipse Juno版本)

OR "http://download.eclipse.org/releases/indigo"(如果你是 EclipseIndigo版本)

OR "http://download.eclipse.org/releases/helios"(如果你是 Eclipse Helios版本)

图6

选择图中圈出来的选项

图7

选择图中两项,然后点击next一步一步的安装,然后再新建时就会有html选项

图8

4.(1)在echart文件夹下,新建myechart.html文件

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<style>
html,body {
    height: 100%;
    width: 100%;
    margin: 0;
    padding: 0;
    align: left;
    valign: left;
}
</style>
<!-- 引入 ECharts 文件 -->
<script src="./js/echarts.min.js"></script>
</head>
<body>
    <div id="main"
        style="height: 100%; width: 100%; border: 0px; text-align: left; align: left; valign: left;"></div>

    <script type="text/javascript">
        var xName = [ '一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月',
                '十月', '十一月', '十二月' ]; //x轴数据显示数据
        var yname = [ 100.5, 123, 86.5, 58.9, 90, 92.4, 88.7, 69.2, 98, 75,
                97.8, 109 ]; // 已关控
        var wname = [ 50, 48, 55, 99, 100, 98.9, 87.3, 55, 83, 59, 68, 88 ]; //未管控
        var lengend = [ '话费', '流量' ];
        var sum = [ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80 ];
        var barwidth = 60;
        function createBarLineChart() {
            var myChart = echarts.init(document.getElementById('main'));
            var option = {

                legend : { // 图例的样式
                    show : true,
                    orient : 'horizontal',
                    itemGap : 50, // 图例之间的距离
                    itemHeight : 10, // 图例的高度
                    data : [ {
                        name : lengend[0],
                        icon : "rectangle"
                    }, {
                        name : lengend[1],
                        icon : "rectangle"
                    } ],
                    textStyle : {
                        color : 'black',
                        fontSize : 16,
                    },
                },
                grid : { //设置图标在div中的位置
                    left : '2%',
                    right : '2%',
                    bottom : '3%',
                    show : false,
                    containLabel : true
                // 是否包含标题
                },
                tooltip : {
                    show : true,
                },
                xAxis : [ {
                    type : 'category',
                    data : xName,
                    boundaryGap : true, // 值是在中间还在在原点
                    axisLine : {
                        lineStyle : {
                            color : 'black'
                        },
                        show : true
                    }, //x轴 的颜色
                    axisTick : {
                        show : false
                    }, // 是否加上x轴的小柱柱
                    axisLabel : {
                        interval : 0,
                        rotate : 0, //字体倾斜
                        textStyle : {
                            color : 'black', // x轴的颜色
                            fontSize : '14'
                        }
                    }
                } ],
                yAxis : [ {
                    type : 'value'
                } ],
                series : [ {
                    name : lengend[0],
                    type : 'bar', // line表示线图  bar表示柱图
                    stack : '管控',
                    barWidth : barwidth,
                    data : yname,
                    label : { // 设置数据是否显示
                        normal : {
                            show : true,
                            position : 'inside',
                            textStyle : {
                                color : "white"
                            }
                        }
                    }
                }, {
                    name : lengend[1],
                    type : 'bar',
                    stack : '管控',
                    barWidth : barwidth,
                    data : wname,
                    label : {
                        normal : {
                            show : true,
                            position : 'top',
                            textStyle : {
                                color : "black"
                            }
                        }
                    },
                }, ],
            };
            myChart.setOption(option);

        }
    </script>
</body>
</html>

(2)用webView加载html
布局文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.ztext.MainActivity" >
   <LinearLayout 
        android:id="@+id/bt_ly"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        >
     
        <Button
            android:id="@+id/barchart_bt"
            style="?android:attr/buttonStyleSmall"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="柱状图" />
        
    </LinearLayout>
    <WebView 
        android:id="@+id/chartshow_wb"
        android:layout_below="@id/bt_ly"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />   

</RelativeLayout>

(3)MainActivity
注意路径要正确!

package com.example.ztext;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.webkit.WebView;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener{

    private Button barchart_bt;
    private WebView chartshow_wb;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
    }
    /**
     * 初始化页面元素
     */
    private void initView(){
        barchart_bt=(Button)findViewById(R.id.barchart_bt);
        barchart_bt.setOnClickListener(this);
        chartshow_wb=(WebView)findViewById(R.id.chartshow_wb);
        //进行webwiev的一堆设置
        //开启本地文件读取(默认为true,不设置也可以)
        chartshow_wb.getSettings().setAllowFileAccess(true);
        //开启脚本支持
        chartshow_wb.getSettings().setJavaScriptEnabled(true);
        chartshow_wb.loadUrl("file:///android_asset/echart/myechart.html");
    }
    
    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.barchart_bt:
            chartshow_wb.loadUrl("javascript:createBarLineChart();"); 
            break;
        }
    }
        
}

5.运行结果如图所示


图9
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,761评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,953评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,998评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,248评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,130评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,145评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,550评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,236评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,510评论 1 291
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,601评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,376评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,247评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,613评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,911评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,191评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,532评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,739评论 2 335

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,497评论 18 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,079评论 25 707
  • 前言: 这篇本来应该昨天写的,但是我在创建第一个Web项目遇到了很多问题。 问题如下: 1.右击“File----...
    Manecho阅读 1,573评论 4 8
  • 鼓浪屿之歌 浪花白蕊碎波痕。遇黄昏,赏黄昏。海上双眸,恍顾醉人文。醉意不消风又到,街巷暖,一巡巡、正忘魂。 忘魂,...
    冰熙舍人阅读 2,174评论 6 27
  • 假期回家,正逢一场秋雨。 雨夜里,我躺在临窗的床上,听着雨打红瓦,屋檐落水的声音,忽然觉得这种场景已经好些年没有经...
    草庐煮咖啡阅读 864评论 4 6