中文字幕一区二区人妻电影,亚洲av无码一区二区乱子伦as ,亚洲精品无码永久在线观看,亚洲成aⅴ人片久青草影院按摩,亚洲黑人巨大videos

使用AChartEngine的Android上的輕松圖形

發(fā)布于:2021-02-01 11:12:20

0

109

0

android 圖表 圖形 開源 繪圖 教程

在Android發(fā)行后不久的2008年末,開發(fā)人員已經(jīng)在尋找圖表/圖形/繪圖庫。那時(shí)還沒有這樣的免費(fèi)或開源解決方案。

為了好玩,我開始評(píng)估Android,在開發(fā)了幾個(gè)需要一些繪圖的Android應(yīng)用程序之后,我決定可以用AChartEngine的名字來開源代碼。版本0.2.0于2009年3月發(fā)布,這是Android的第一個(gè)開源圖表庫。當(dāng)時(shí),androidsdk的版本是1.1。

幾乎四年過去了,所有類型的應(yīng)用程序都在使用AChartEngine進(jìn)行圖表繪制。那個(gè)appbrain.com網(wǎng)站androidmarket表示,其發(fā)布應(yīng)用程序總數(shù)的0.53%(超過60萬個(gè)),這意味著其中超過3000個(gè)應(yīng)用程序正在使用AChartEngine,其中包括Waze和Facebook的官方頁面管理器應(yīng)用程序。

使用AChartEngine向Android應(yīng)用程序添加圖表非常簡單,只需將AChartEngine-x.y.z.jar添加到應(yīng)用程序類路徑,然后開始根據(jù)其api進(jìn)行編碼。目前穩(wěn)定的版本是1.0.0,正在開發(fā)的版本是1.1.0。jar文件的大小只有110kb,這是一個(gè)相當(dāng)小的占用空間。然而,盡管這個(gè)小尺寸的AChartEngine提供了對(duì)許多圖表類型的支持。

兼容性說明:AChartEngine支持1.6和更高版本的所有Android SDK版本。1.6版僅提供基于平移和按鈕的縮放,而2.1版和更高版本增加了對(duì)捏縮放的支持,因?yàn)樵摴δ芤言贏ndroid SDK 2.x和更高版本中提供。不久前,當(dāng)AChartEngine放棄了對(duì)低于2.1的舊版Android SDK的支持時(shí),許多用戶在發(fā)布后幾天就要求它。當(dāng)時(shí),根據(jù)此處提供的官方Android平臺(tái)發(fā)行版,在全球范圍內(nèi),仍有大約5%的設(shè)備運(yùn)行的版本早于2.x。

產(chǎn)品特點(diǎn)

AChartEngine支持三種主要的圖表類型:

  • XY圖表–在2軸上顯示數(shù)據(jù)(線,立方線,面積,條形圖,散點(diǎn)圖,氣泡,范圍(高-低))

  • “圓形”圖表–餡餅,甜甜圈,刻度盤

  • 組合圖表–可以顯示XY圖表的組合

要快速瀏覽一些AChartEngine演示應(yīng)用程序屏幕截圖,請(qǐng)?jiān)L問官方網(wǎng)站和AChartEngine Google代碼頁。

整體課堂設(shè)計(jì)

  • AbstractChart類描述了所有圖表共享的行為,包括圖形背景,圖例,標(biāo)題等

  • XYChart類描述XY圖表類型共有的狀態(tài)和行為,例如軸,標(biāo)簽等的呈現(xiàn)

  • RoundChart與XYChart類似,但是對(duì)于具有圓形形狀的圖表類型。

設(shè)計(jì)組成

整個(gè)設(shè)計(jì)不僅限于視覺/視圖部分。還有更多組成部分有助于整體情況。

  • 模型–數(shù)據(jù)集/一系列數(shù)據(jù)。

  • 視圖–如上所述。

  • 渲染器–幫助自定義圖表外觀(顏色,字體,軸,標(biāo)簽,格式等)。

  • ChartFactory –獲取數(shù)據(jù)集的實(shí)例和渲染器的實(shí)例,并返回嵌入到Intent(對(duì)于圖表填充Activity的情況)或View(當(dāng)圖表是Activity的一部分時(shí))的所需圖表,以及其他小部件)。

  • 工具–用于平移和縮放的交互工具。

代碼示例

為了針對(duì)AChartEngine API進(jìn)行編碼,您可以下載以下二進(jìn)制文件之一,將其包含在類路徑中并開始編碼:

  • 穩(wěn)定的版本,目前可以在這里下載1.0.0 

  • 中間版本,候選發(fā)布版本可在此處下載

  • 每晚版本可以在 這里下載

通過將以下內(nèi)容添加到他們的pom.xml文件中,Maven用戶可以在其應(yīng)用程序中包括AChartEngine:

<repository>
   <id>achartengine</id>
   <name>Public AChartEngine repository</name>
   <url>https://repository-achartengine.forge.cloudbees.com/snapshot/</url>
</repository>

<dependency>
   <groupId>org.achartengine</groupId>
   <artifactId>achartengine</artifactId>
   <version>1.1.0</version>
</dependency>

下面引用的代碼顯示了在應(yīng)用程序中使用AChartEngine的示例。該程序允許創(chuàng)建新的數(shù)據(jù)系列,并輸入X和Y值,然后將其添加到當(dāng)前系列中。每次添加數(shù)據(jù)后都會(huì)更新圖表。下面的屏幕快照中顯示了使用該應(yīng)用程序創(chuàng)建一系列10個(gè)數(shù)據(jù)點(diǎn)的示例。完整的源代碼 在這里。它包括用于解釋最重要部分的注釋。

mChartView = ChartFactory.getLineChartView(this, mDataset, mRenderer);

mChartView = ChartFactory.getBarChartView(this, mDataset, mRenderer, Type.DEFAULT);

mChartView = ChartFactory.getScatterChartView(this, mDataset, mRenderer);

為了使上面的示例工作,必須定義一個(gè)簡單的布局文件,并且該文件必須包含帶有android:id =” @ + id / chart”的LinearLayout。此示例的布局文件 在此處可用。僅需少量更改,我們就可以重用上面的代碼來構(gòu)建用于創(chuàng)建餅圖的用戶界面。我們只需要一個(gè)單一的輸入文本字段即可一次輸入一個(gè)單一值,而不是我們在XY圖表中輸入的X和Y值。然后,我們將需要實(shí)例化另一種類型的渲染器,如下面的代碼所示。我們還需要定義一些顏色值以用于我們創(chuàng)建的切片。

/** Colors to be used for the pie slices. */
private static int[] COLORS = new int[] { Color.GREEN, Color.BLUE, Color.MAGENTA, Color.CYAN };
/** The main series that will include all the data. */
private CategorySeries mSeries = new CategorySeries("");
/** The main renderer for the main dataset. */
private DefaultRenderer mRenderer = new DefaultRenderer();

// set the start angle for the first slice in the pie chart
mRenderer.setStartAngle(180);
// display values on the pie slices
mRenderer.setDisplayValues(true);

mSeries.add("Series " + (mSeries.getItemCount() + 1), value);
SimpleSeriesRenderer renderer = new SimpleSeriesRenderer();
renderer.setColor(COLORS[(mSeries.getItemCount() - 1) % COLORS.length]);
mRenderer.addSeriesRenderer(renderer);
mChartView.repaint();

mChartView = ChartFactory.getPieChartView(this, mSeries, mRenderer);

for (int i = 0; i < mSeries.getItemCount(); i++) {
     mRenderer.getSeriesRendererAt(i).setHighlighted(i == seriesSelection.getPointIndex());
   }
mChartView.repaint();

生成的圖表應(yīng)如下所示:

這個(gè)代碼示例包含在官方的演示應(yīng)用程序中,可以在這里下載。您可以找到所有AChartEngine支持的圖表類型的示例。