發(fā)布于:2021-02-01 11:12:20
0
109
0
在Android發(fā)行后不久的2008年末,開發(fā)人員已經(jīng)在尋找圖表/圖形/繪圖庫。那時還沒有這樣的免費或開源解決方案。
為了好玩,我開始評估Android,在開發(fā)了幾個需要一些繪圖的Android應(yīng)用程序之后,我決定可以用AChartEngine的名字來開源代碼。版本0.2.0于2009年3月發(fā)布,這是Android的第一個開源圖表庫。當(dāng)時,androidsdk的版本是1.1。
幾乎四年過去了,所有類型的應(yīng)用程序都在使用AChartEngine進行圖表繪制。那個appbrain.com網(wǎng)站androidmarket表示,其發(fā)布應(yīng)用程序總數(shù)的0.53%(超過60萬個),這意味著其中超過3000個應(yīng)用程序正在使用AChartEngine,其中包括Waze和Facebook的官方頁面管理器應(yīng)用程序。
使用AChartEngine向Android應(yīng)用程序添加圖表非常簡單,只需將AChartEngine-x.y.z.jar添加到應(yīng)用程序類路徑,然后開始根據(jù)其api進行編碼。目前穩(wěn)定的版本是1.0.0,正在開發(fā)的版本是1.1.0。jar文件的大小只有110kb,這是一個相當(dāng)小的占用空間。然而,盡管這個小尺寸的AChartEngine提供了對許多圖表類型的支持。
兼容性說明:AChartEngine支持1.6和更高版本的所有Android SDK版本。1.6版僅提供基于平移和按鈕的縮放,而2.1版和更高版本增加了對捏縮放的支持,因為該功能已在Android SDK 2.x和更高版本中提供。不久前,當(dāng)AChartEngine放棄了對低于2.1的舊版Android SDK的支持時,許多用戶在發(fā)布后幾天就要求它。當(dāng)時,根據(jù)此處提供的官方Android平臺發(fā)行版,在全球范圍內(nèi),仍有大約5%的設(shè)備運行的版本早于2.x。
產(chǎn)品特點
AChartEngine支持三種主要的圖表類型:
XY圖表–在2軸上顯示數(shù)據(jù)(線,立方線,面積,條形圖,散點圖,氣泡,范圍(高-低))
“圓形”圖表–餡餅,甜甜圈,刻度盤
組合圖表–可以顯示XY圖表的組合
要快速瀏覽一些AChartEngine演示應(yīng)用程序屏幕截圖,請訪問官方網(wǎng)站和AChartEngine Google代碼頁。
整體課堂設(shè)計
AbstractChart類描述了所有圖表共享的行為,包括圖形背景,圖例,標題等
XYChart類描述XY圖表類型共有的狀態(tài)和行為,例如軸,標簽等的呈現(xiàn)
RoundChart與XYChart類似,但是對于具有圓形形狀的圖表類型。
設(shè)計組成
整個設(shè)計不僅限于視覺/視圖部分。還有更多組成部分有助于整體情況。
模型–數(shù)據(jù)集/一系列數(shù)據(jù)。
視圖–如上所述。
渲染器–幫助自定義圖表外觀(顏色,字體,軸,標簽,格式等)。
ChartFactory –獲取數(shù)據(jù)集的實例和渲染器的實例,并返回嵌入到Intent(對于圖表填充Activity的情況)或View(當(dāng)圖表是Activity的一部分時)的所需圖表,以及其他小部件)。
工具–用于平移和縮放的交互工具。
代碼示例
為了針對AChartEngine API進行編碼,您可以下載以下二進制文件之一,將其包含在類路徑中并開始編碼:
穩(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ù)后都會更新圖表。下面的屏幕快照中顯示了使用該應(yīng)用程序創(chuàng)建一系列10個數(shù)據(jù)點的示例。完整的源代碼 在這里。它包括用于解釋最重要部分的注釋。
mChartView = ChartFactory.getLineChartView(this, mDataset, mRenderer);
mChartView = ChartFactory.getBarChartView(this, mDataset, mRenderer, Type.DEFAULT);
mChartView = ChartFactory.getScatterChartView(this, mDataset, mRenderer);
為了使上面的示例工作,必須定義一個簡單的布局文件,并且該文件必須包含帶有android:id =” @ + id / chart”的LinearLayout。此示例的布局文件 在此處可用。僅需少量更改,我們就可以重用上面的代碼來構(gòu)建用于創(chuàng)建餅圖的用戶界面。我們只需要一個單一的輸入文本字段即可一次輸入一個單一值,而不是我們在XY圖表中輸入的X和Y值。然后,我們將需要實例化另一種類型的渲染器,如下面的代碼所示。我們還需要定義一些顏色值以用于我們創(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)如下所示:
這個代碼示例包含在官方的演示應(yīng)用程序中,可以在這里下載。您可以找到所有AChartEngine支持的圖表類型的示例。