成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

android圖表,android圖庫

Webview+echarts實現(xiàn)Android圖表

WebView是android中一個非常實用的組件,它和safai、chrome一樣都是基于webkit網(wǎng)頁渲染引擎,可以通過加載html數(shù)據(jù)的方式便捷地展現(xiàn)軟件界面,WebView主要負(fù)責(zé)解析、渲染。webview的常見工具類和用法如下:

成都創(chuàng)新互聯(lián)公司成立以來不斷整合自身及行業(yè)資源、不斷突破觀念以使企業(yè)策略得到完善和成熟,建立了一套“以技術(shù)為基點,以客戶需求中心、市場為導(dǎo)向”的快速反應(yīng)體系。對公司的主營項目,如中高端企業(yè)網(wǎng)站企劃 / 設(shè)計、行業(yè) / 企業(yè)門戶設(shè)計推廣、行業(yè)門戶平臺運(yùn)營、成都App定制開發(fā)、成都手機(jī)網(wǎng)站制作、微信網(wǎng)站制作、軟件開發(fā)、綿陽服務(wù)器托管等實行標(biāo)準(zhǔn)化操作,讓客戶可以直觀的預(yù)知到從成都創(chuàng)新互聯(lián)公司可以獲得的服務(wù)效果。

先在js中定義要被調(diào)用方法:

```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快速開發(fā)ECharts圖表? 和? _frendy的輕松實現(xiàn) Android 圖表 ? ECharts)

由于eacharts 里各種圖表的屬性和數(shù)據(jù)等都是由 option ,使用 WebView 加載H5網(wǎng)頁有兩種思路:

1)由 Android 獲取數(shù)據(jù)并生成 option,而 H5 則負(fù)責(zé)解析 option 并調(diào)用 ECharts 進(jìn)行繪制。

2)H5 負(fù)責(zé)所有流程,獲取數(shù)據(jù)、生成 option并調(diào)用 ECharts 進(jìn)行繪制。

在此使用第 1)種方法,具體實現(xiàn)如下:

```java

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

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

```

--- loadUrl(URL):加載http網(wǎng)頁的方法

--- webSettings :與webview相關(guān)的配置

--- addJavascriptInterface :提供js調(diào)用java的相關(guān)方法

--- setDataSource : 對java構(gòu)建完成的option進(jìn)行返回

在com.github.abel533.echarts.Option中已提供了與Echarts實現(xiàn)的各種配置,我們只需調(diào)用即可

tooltip():與標(biāo)簽有關(guān)

grid():刻度線

CategoryAxis():建立橫向類目軸

ValueAxis():縱軸

MarkPoint():點數(shù)據(jù)

MarkLine():標(biāo)線

圖表數(shù)據(jù)填充:

數(shù)據(jù)填充Echarts的XY軸的兩種方法

(1)for in 循環(huán)方式

```java

for (item? in? ArraylistE) {

categoryAxis.data(item.x)

line.data(item.y)

}

```

(2)Kotlin的變長參數(shù)

```java

categoryAxis.data(*dataArrayX)

line.data(*dataArrayY)

```

注:此處的dataArrayX和dataArrayY是任意類型的數(shù)組

*建立完成后選擇展示的圖表類型(線型圖表)*:

```java

option.exportToHtml("line.html")

```

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

安卓端的數(shù)據(jù)就是option,option是構(gòu)建的json字符串

在安卓端獲取數(shù)據(jù)并構(gòu)建被js調(diào)用的方法:

```java

addJavascriptInterface(EChartInterface(context), "Android")

```

定義一個接口供數(shù)據(jù)回調(diào):

```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頁面調(diào)用安卓的方法

```java

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

JSON.parse是將json字符串其轉(zhuǎn)化為json對象

```

其中Android.getChartOptions()就是js調(diào)用安卓的方法

初始化Echarts圖標(biāo)并設(shè)置option ,實現(xiàn)如下:

```java

chart = echarts.init(chartDoc);

chart.setOption(option);

```

介紹:formatter用于規(guī)定echarts數(shù)據(jù)顯示的內(nèi)容和格式。

使用:

餅圖模板變量:

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

(2):數(shù)據(jù)名,series.data.name。

(3){c}:數(shù)據(jù)值,series.data.value。

(4)lqne2jb:百分比。

(5){@xxx}:數(shù)據(jù)中名為'xxx'的維度的值,如{@product}表示名為'product'` 的維度的值。

(6){@[n]}:數(shù)據(jù)中維度n的值,如{@[3]}` 表示維度 3 的值,從 0 開始計數(shù)。

示例:

formatter:":{c}(reghcbi%)"

折線、柱狀圖模板變量:

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

(2):數(shù)據(jù)名,xAxis.data。

(3){c}:數(shù)據(jù)值,yAxis.data。

(5){@xxx}:數(shù)據(jù)中名為'xxx'的維度的值,如{@product}表示名為'product'` 的維度的值。

(6){@[n]}:數(shù)據(jù)中維度n的值,如{@[3]}` 表示維度 3 的值,從 0 開始計數(shù)。

示例:

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

此方法需要自行拼接要顯示的標(biāo)簽內(nèi)容,可以靈活配置比如有些圖表option的配置在類庫 abel533:ECharts:2.2.7 中是沒有的,自定義formatter內(nèi)容需要知道參數(shù)具體表示的內(nèi)容,這里可以通過js的打印打印出函數(shù)傳入的參數(shù)值,使用函數(shù)返回params對象,params是點數(shù)據(jù)的對象集合,打印出它的內(nèi)容即可知道每個參數(shù)具體代表什么。

示例:

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上將現(xiàn)有的數(shù)據(jù),以圖表的形式展現(xiàn)在手機(jī)上。

主要思路是:

1. 把數(shù)據(jù)庫分解成幾個asset文件。

2. 當(dāng)需要打開數(shù)據(jù)庫時,如果數(shù)據(jù)庫不存在,就把那幾個asset文件重新合并成一個數(shù)據(jù)庫文件。

3. 如果數(shù)據(jù)庫的版本改變了,就在onUpgrade()方法中把數(shù)據(jù)庫文件刪除掉。

下面是代碼:

//數(shù)據(jù)庫的缺省路徑

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

*保存?zhèn)鬟M(jìn)來的context參數(shù)以用來訪問應(yīng)用的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;

}

/**

*創(chuàng)建一個空數(shù)據(jù)庫,用來存儲你已有的數(shù)據(jù)庫。

*/

public voidcreateDataBase() throws IOException{

boolean dbExist =checkDataBase();

if (dbExist) {

/*

**如果你的數(shù)據(jù)庫的版本改變了,調(diào)用這個方法確保在onUpgrade()被調(diào)用時

**傳進(jìn)去的是可寫的數(shù)據(jù)庫。

Android開發(fā)原生圖表,用什么好

推薦MPChartLib

也可以自定義view,自己畫一個,第三方的有時太受限制

一個輕量級的Android圖表庫AndroidLightCharts

android 中已經(jīng)有非常優(yōu)秀的圖表庫如MPAndroidChart,hellocharts。這些圖表庫功能強(qiáng)大,支持圖表類型多。最近筆者公司只有一個很簡單的圖表需求,只需要做一個折線圖,用這些庫的話,完全可以實現(xiàn)但是導(dǎo)入,實現(xiàn)麻煩,而且會增大包體積。如是就想到了寫一個輕量級的圖表框架AndroidLightCharts,只包含幾個最基本,最常用的charts。

demo 及源碼地址:

折線圖:

餅狀圖:

目前只包含上面三種chart,使用起來非常簡單。其中LineView表示折線圖,PieView 表示餅狀圖,BarView表示柱狀圖。

每種類型的chart可配置的項如下:

如何在android畫分析圖(例如 柱狀圖、趨勢圖、餅圖)

目前android上圖標(biāo)引擎并不少見,像aChartEngine就能很好的完成繪圖:

aChartEngine支持:1、line?chart?(折線圖)?2、area?chart?(面積圖;分區(qū)圖,對比圖)?3、scatter?chart?(?散點圖)?4、time?chart?(時間圖;進(jìn)度表)?5、bar?chart?(條形圖;柱狀圖)?6、pie?chart?(?餅圖)?7、bubble?chart?(氣泡圖)?8、doughnut?chart?(圓環(huán)圖)?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?(立方折線圖)

上述所有支持的圖表類型,都可以包含多個系列,都支持水平(默認(rèn))或垂直方式展示圖表,并且支持許多其他的自定義功能。所有圖表都可以建立為一個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塊,每塊代表的數(shù)值

int[] colors = new int[] { Color.BLUE, Color.GREEN, Color.MAGENTA, Color.YELLOW, Color.CYAN };//每塊餅圖的顏色

DefaultRenderer renderer = buildCategoryRenderer(colors);

renderer.setZoomButtonsVisible(true);//設(shè)置顯示放大縮小按鈕

renderer.setZoomEnabled(true);//設(shè)置允許放大縮小.

renderer.setChartTitleTextSize(20);//設(shè)置圖表標(biāo)題的文字大小

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

? renderer, "Budget");//構(gòu)建Intent, buildCategoryDataset是調(diào)用AbstraDemoChart的構(gòu)建方法.

}

}

android中數(shù)據(jù)的折線圖怎么實現(xiàn)

推薦你幾個相關(guān)開源項目,可以根據(jù)需要自己選擇,自己畫還是比較麻煩的:MPAndroidChart強(qiáng)大的圖表繪制工具,支持折線圖、面積圖、散點圖、時間圖、柱狀圖、條圖、餅圖、氣泡圖、圓環(huán)圖、范圍(高至低)條形圖、網(wǎng)狀圖及各種圖的結(jié)合;支持圖的拖拽縮放;支持Android2.2以上,支持橫縱軸縮放,多指縮放,展現(xiàn)動畫、高亮、保存到sdcard、從文件讀取圖表achartengine強(qiáng)大的圖表繪制工具,支持折線圖、面積圖、散點圖、時間圖、柱狀圖、條圖、餅圖、氣泡圖、圓環(huán)圖、范圍(高至低)條形圖、撥號圖/表、立方線圖及各種圖的結(jié)合GraphView繪制圖表和曲線圖的View,可用于Android上的曲形圖、柱狀圖、波浪圖展示HoloGraphLibrary繪制線狀圖、柱狀圖、餅狀圖XCL-ChartsXCL-Charts基于原生的Canvas來繪制各種圖表,在設(shè)計時,盡量在保證開發(fā)效率的同時,給使用者提供足夠多的定制化能力。因此使用簡便,同時具有相當(dāng)靈活的定制能力。目前支持3D/非3D柱形圖(BarChart)、3D/非3D餅圖(PieChart)、堆積圖(StackedBarChart)、面積圖(AreaChart)、折線圖(LineChart)、曲線圖(SplineChart)、環(huán)形圖(DountChart)、南丁格爾玫瑰圖(RoseChart)、儀表盤(DialChart)、刻度盤(GaugeChart)、雷達(dá)圖(RadarChart)、圓形圖(CircleChart)等圖表。其它特性還包括支持圖表縮放、手勢移動、動畫顯示效果、高密度柱形顯示、圖表分界定制線、多圖表的混合顯示及同數(shù)據(jù)源不同類型圖表切換等。EazeGraphAndroid圖表庫,支持柱狀圖、分層柱狀圖、餅狀圖、線性圖WilliamChart繪制圖表的庫,支持LineChartView、BarChartView和StackBarChartView三中圖表類型,并且支持Android2.2及以上的系統(tǒng)。HelloChartsforAndroid支持折線圖、柱狀圖、餅圖、氣泡圖、組合圖;支持預(yù)覽、放大縮小,滾動,部分圖表支持動畫;支持Android2.2以上這些項目都可以在GitHub搜索到。

文章題目:android圖表,android圖庫
轉(zhuǎn)載來于:http://jinyejixie.com/article38/dsedesp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、標(biāo)簽優(yōu)化、品牌網(wǎng)站建設(shè)、、網(wǎng)站設(shè)計公司、App設(shè)計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計公司
轮台县| 平乡县| 金山区| 姚安县| 武夷山市| 大化| 舞阳县| 康乐县| 温宿县| 嘉义县| 安塞县| 武山县| 博野县| 安塞县| 灵宝市| 同德县| 德州市| 盐池县| 休宁县| 古浪县| 呼伦贝尔市| 淅川县| 琼海市| 沁水县| 富锦市| 荣昌县| 象州县| 伽师县| 巴林左旗| 福鼎市| 宣威市| 越西县| 余庆县| 武汉市| 枣强县| 秦皇岛市| 浦北县| 从化市| 浦城县| 肇东市| 台中县|