RELATEED CONSULTING
相关咨询
选择下列产品马上在线沟通
服务时间:8:30-17:00
你可能遇到了下面的问题
关闭右侧工具栏

新闻中心

这里有您想知道的互联网营销解决方案
android图表,android图表内部渐变

android中数据的折线图怎么实现

推荐你几个相关开源项目,可以根据需要自己选择,自己画还是比较麻烦的:MPAndroidChart强大的图表绘制工具,支持折线图、面积图、散点图、时间图、柱状图、条图、饼图、气泡图、圆环图、范围(高至低)条形图、网状图及各种图的结合;支持图的拖拽缩放;支持Android2.2以上,支持横纵轴缩放,多指缩放,展现动画、高亮、保存到sdcard、从文件读取图表achartengine强大的图表绘制工具,支持折线图、面积图、散点图、时间图、柱状图、条图、饼图、气泡图、圆环图、范围(高至低)条形图、拨号图/表、立方线图及各种图的结合GraphView绘制图表和曲线图的View,可用于Android上的曲形图、柱状图、波浪图展示HoloGraphLibrary绘制线状图、柱状图、饼状图XCL-ChartsXCL-Charts基于原生的Canvas来绘制各种图表,在设计时,尽量在保证开发效率的同时,给使用者提供足够多的定制化能力。因此使用简便,同时具有相当灵活的定制能力。目前支持3D/非3D柱形图(BarChart)、3D/非3D饼图(PieChart)、堆积图(StackedBarChart)、面积图(AreaChart)、折线图(LineChart)、曲线图(SplineChart)、环形图(DountChart)、南丁格尔玫瑰图(RoseChart)、仪表盘(DialChart)、刻度盘(GaugeChart)、雷达图(RadarChart)、圆形图(CircleChart)等图表。其它特性还包括支持图表缩放、手势移动、动画显示效果、高密度柱形显示、图表分界定制线、多图表的混合显示及同数据源不同类型图表切换等。EazeGraphAndroid图表库,支持柱状图、分层柱状图、饼状图、线性图WilliamChart绘制图表的库,支持LineChartView、BarChartView和StackBarChartView三中图表类型,并且支持Android2.2及以上的系统。HelloChartsforAndroid支持折线图、柱状图、饼图、气泡图、组合图;支持预览、放大缩小,滚动,部分图表支持动画;支持Android2.2以上这些项目都可以在GitHub搜索到。

创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都网站设计、成都做网站、外贸网站建设、伊通网络推广、成都小程序开发、伊通网络营销、伊通企业策划、伊通品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联为所有大学生创业者提供伊通建站搭建服务,24小时服务热线:18982081108,官方网址:www.cdcxhl.com

一个轻量级的Android图表库AndroidLightCharts

android 中已经有非常优秀的图表库如MPAndroidChart,hellocharts。这些图表库功能强大,支持图表类型多。最近笔者公司只有一个很简单的图表需求,只需要做一个折线图,用这些库的话,完全可以实现但是导入,实现麻烦,而且会增大包体积。如是就想到了写一个轻量级的图表框架AndroidLightCharts,只包含几个最基本,最常用的charts。

demo 及源码地址:

折线图:

饼状图:

目前只包含上面三种chart,使用起来非常简单。其中LineView表示折线图,PieView 表示饼状图,BarView表示柱状图。

每种类型的chart可配置的项如下:

Webview+echarts实现Android图表

WebView是android中一个非常实用的组件,它和safai、chrome一样都是基于webkit网页渲染引擎,可以通过加载html数据的方式便捷地展现软件界面,WebView主要负责解析、渲染。webview的常见工具类和用法如下:

先在js中定义要被调用方法:

```javascript

function initChartView() {}

```

在安卓中的类EChartWebView注册js方法:

```java

fun initChartView(){

Log.i("initChartView():",""+loadUrl("javascript:initChartView()"))

}

```

javascriptInterface、webViewClient.shouldOverrideUrlLoading()、webChromeClient.onconsoleMessage()、webChromeClient.onJspompt()

具体使用在后面叙述

(参考: isea533的ECharts-Java使用Java快速开发ECharts图表  和  _frendy的轻松实现 Android 图表 • ECharts)

由于eacharts 里各种图表的属性和数据等都是由 option ,使用 WebView 加载H5网页有两种思路:

1)由 Android 获取数据并生成 option,而 H5 则负责解析 option 并调用 ECharts 进行绘制。

2)H5 负责所有流程,获取数据、生成 option并调用 ECharts 进行绘制。

在此使用第 1)种方法,具体实现如下:

```java

implementation'com.github.frendyxzc:Charts:0.0.2'

implementation'com.github.abel533:ECharts:2.2.7'

```

--- loadUrl(URL):加载http网页的方法

--- webSettings :与webview相关的配置

--- addJavascriptInterface :提供js调用java的相关方法

--- setDataSource : 对java构建完成的option进行返回

在com.github.abel533.echarts.Option中已提供了与Echarts实现的各种配置,我们只需调用即可

tooltip():与标签有关

grid():刻度线

CategoryAxis():建立横向类目轴

ValueAxis():纵轴

MarkPoint():点数据

MarkLine():标线

图表数据填充:

数据填充Echarts的XY轴的两种方法

(1)for in 循环方式

```java

for (item  in  ArraylistE) {

categoryAxis.data(item.x)

line.data(item.y)

}

```

(2)Kotlin的变长参数

```java

categoryAxis.data(*dataArrayX)

line.data(*dataArrayY)

```

注:此处的dataArrayX和dataArrayY是任意类型的数组

*建立完成后选择展示的图表类型(线型图表)*:

```java

option.exportToHtml("line.html")

```

注:line.html和js等文件放置在安卓assets文件中

安卓端的数据就是option,option是构建的json字符串

在安卓端获取数据并构建被js调用的方法:

```java

addJavascriptInterface(EChartInterface(context), "Android")

```

定义一个接口供数据回调:

```java

private var dataSource: DataSource? = null

fun setDataSource(data: EChartWebView.DataSource, needReload: Boolean) {

dataSource = data

}

interface DataSource {

    fun markChartOptions(): GsonOption

}

```

接口里方法的定义:

```java

internal inner class EChartInterface(var context: Context) {

    val chartOptions: String?

        @JavascriptInterface

        get() {

            if (dataSource != null) {

                val option = dataSource!!.markChartOptions()

                Log.i("xq","echarts图表的option:$option")

                return option.toString()

            }

            return null

        }

}

```

在js页面调用安卓的方法

```java

option = JSON.parse(Android.getChartOptions());

JSON.parse是将json字符串其转化为json对象

```

其中Android.getChartOptions()就是js调用安卓的方法

初始化Echarts图标并设置option ,实现如下:

```java

chart = echarts.init(chartDoc);

chart.setOption(option);

```

介绍:formatter用于规定echarts数据显示的内容和格式。

使用:

饼图模板变量:

(1){a}:系列名,series.name。

(2){b}:数据名,series.data.name。

(3){c}:数据值,series.data.value。

(4){d}:百分比。

(5){@xxx}:数据中名为'xxx'的维度的值,如{@product}表示名为'product'` 的维度的值。

(6){@[n]}:数据中维度n的值,如{@[3]}` 表示维度 3 的值,从 0 开始计数。

示例:

formatter:"{b}:{c}({d}%)"

折线、柱状图模板变量:

(1){a}:系列名,series.name。

(2){b}:数据名,xAxis.data。

(3){c}:数据值,yAxis.data。

(5){@xxx}:数据中名为'xxx'的维度的值,如{@product}表示名为'product'` 的维度的值。

(6){@[n]}:数据中维度n的值,如{@[3]}` 表示维度 3 的值,从 0 开始计数。

示例:

formatter:"{a}br/{b}:{c}"

此方法需要自行拼接要显示的标签内容,可以灵活配置比如有些图表option的配置在类库 abel533:ECharts:2.2.7 中是没有的,自定义formatter内容需要知道参数具体表示的内容,这里可以通过js的打印打印出函数传入的参数值,使用函数返回params对象,params是点数据的对象集合,打印出它的内容即可知道每个参数具体代表什么。

示例:

formatter:function(params){

console.log(params)

var result = params[0].name

for(i=0;iparams.length;i++){

result = result+"br"+"span style=display:inline-block;margin-right:5px;border-radius:10px;width:8px;height:8px;background-color:"+params[i].color+"/span"+params[i].seriesName+": "+params[i].value

}

return result

}

如何在Android上将现有的数据,以图表的形式展现在手机上。

主要思路是:

1. 把数据库分解成几个asset文件。

2. 当需要打开数据库时,如果数据库不存在,就把那几个asset文件重新合并成一个数据库文件。

3. 如果数据库的版本改变了,就在onUpgrade()方法中把数据库文件删除掉。

下面是代码:

//数据库的缺省路径

private static finalString DB_PATH = "/data/data/com.mypackage.myapp/databases/";

private static finalString DB_NAME = "mydb.db";

private static finalint DB_VERSION = 2;

private static finalString DB_SPLIT_NAME = "mydb.db.00";

private static finalint DB_SPLIT_COUNT = 3;

private SQLiteDatabasem_database;

private final Contextm_context;

/**

* Constructor

*保存传进来的context参数以用来访问应用的asset和资源文件。

* @param context

*/

public MyDB(Contextcontext) {

super(context, DB_NAME, null, DB_VERSION);

this.m_context = context;

}

public static MyDBopenDatabaseReadOnly(Context context) {

MyDB db = new MyDB(context);

try {

db.createDataBase();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

db.openDataBase(SQLiteDatabase.OPEN_READONLY);

return db;

}

public static MyDBopenDatabaseReadWrite(Context context) {

MyDB db = new MyDB(context);

try {

db.createDataBase();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

db.openDataBase(SQLiteDatabase.OPEN_READWRITE);

return db;

}

/**

*创建一个空数据库,用来存储你已有的数据库。

*/

public voidcreateDataBase() throws IOException{

boolean dbExist =checkDataBase();

if (dbExist) {

/*

**如果你的数据库的版本改变了,调用这个方法确保在onUpgrade()被调用时

**传进去的是可写的数据库。

如何在android画分析图(例如 柱状图、趋势图、饼图)

目前android上图标引擎并不少见,像aChartEngine就能很好的完成绘图:

aChartEngine支持:1、line chart (折线图) 2、area chart (面积图;分区图,对比图) 3、scatter chart ( 散点图) 4、time chart (时间图;进度表) 5、bar chart (条形图;柱状图) 6、pie chart ( 饼图) 7、bubble chart (气泡图) 8、doughnut chart (圆环图) 9、range (high-low) bar chart (范围条形图)  10、dial chart / gauge (拨号盘/压力表) 11、combined (any combination of line, cubic line, scatter, bar, range bar, bubble) chart(组合图) 12、cubic line chart (立方折线图)

上述所有支持的图表类型,都可以包含多个系列,都支持水平(默认)或垂直方式展示图表,并且支持许多其他的自定义功能。所有图表都可以建立为一个view,也可以建立为一个用于启动activity的intent.

下面是一个饼状图的源码事例:

package org.achartengine.chartdemo.demo.chart;

import org.achartengine.ChartFactory;

import org.achartengine.renderer.DefaultRenderer;

import android.content.Context;

import android.content.Intent;

import android.graphics.Color;

public class BudgetPieChart extends AbstractDemoChart {

public String getName() {

return "Budget chart";

}

public String getDesc() {

return "The budget per project for this year (pie chart)";

}

public Intent execute(Context context) {

double[] values = new double[] { 12, 14, 11, 10, 19 };//饼图分层5块,每块代表的数值

int[] colors = new int[] { Color.BLUE, Color.GREEN, Color.MAGENTA, Color.YELLOW, Color.CYAN };//每块饼图的颜色

DefaultRenderer renderer = buildCategoryRenderer(colors);

renderer.setZoomButtonsVisible(true);//设置显示放大缩小按钮

renderer.setZoomEnabled(true);//设置允许放大缩小.

renderer.setChartTitleTextSize(20);//设置图表标题的文字大小

return ChartFactory.getPieChartIntent(context, buildCategoryDataset("Project budget", values),

  renderer, "Budget");//构建Intent, buildCategoryDataset是调用AbstraDemoChart的构建方法.

}

}


标题名称:android图表,android图表内部渐变
分享URL:http://scpingwu.com/article/dsgepdc.html