Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android AChartEnginee講解之源碼框架解讀

android AChartEnginee講解之源碼框架解讀

編輯:關於Android編程

從上周把android ACHartEnginee的源碼check out出來後就一直在看這個東西是如何使用的,以及底層是如何實現的,把最近一周對這個東西的了解先發上來,即是給自己做一個總結,也希望能幫到想學習這個開源工程的童鞋們。那下面我們就切入正題。

android AChartEnginee是個什麼東西呢,它是Apache的一個開源圖表工程,就是為了方便android應用程序去繪制那此高難度的圖表,比如:餅圖,曲線圖,柱狀圖等,與web端的high chart類似,掌握了這個工程以後,只要我們將我們的數據組裝成achartenginee要求的格式,再調用對應的API設置好相應的參數,即可將你想繪制的圖表繪制出來,十分的強大。今天我們先把這個工程的整體架構就我了解的講解一下。

先看一下源工程的代碼結構,如圖:

\

這就是整個工程的結構,image包中只放了三張程序中用到的圖片(跳過),util包中主要放了一些算法相關的工具類,看也看不太懂,tools中主要放了用來控制整個圖表放大縮小的工具類,也不進行講解了,主要分析一下chart, renderer,model這個包和ChartFactZ喎?/kf/ware/vc/" target="_blank" class="keylink">vcnmjrEdyYXBoaWNhbFZpZXfV4sG9uPbA4KGjPC9wPgo8cD4gICAg0rsuIM/It9bO9tK7z8JyZW5kZXJlctXiuPaw/LXE1/fTw6OsytfPyNXiuPa1pbTKtcTS4su8ysfk1si+tcTS4su8o6y009fWw+bS4su8vs2087jFv8nS1NaqtcCjrNXiuPaw/M/CtcTA4Nb30qrKx9PDwLS21M28se21xNH5yr29+NDQ5NbIvrXEo6zSsr7NysfLtaOs1vfSqsrH08PAtL/Y1sbNvLHttcTN4rnboaPPwsPmv7TSu8/CcmVuZGVyZXLV4rj2sPzW0LXEwODT0MTH0KmjujwvcD4KPHA+PGltZyBzcmM9"/uploadfile/Collfiles/20141114/2014111409062946.png" alt="\">

從圖中可以看到,主要有幾個XXXRenderer類,看了源碼可以知道,DefaultRenderer是DialRenderer,XYMultipleSeriesRenderer的父類,SimpleSeriesRenderer是XYSeriesRenderer的父類,所以我們分兩組來講解。

1)DeaultRenderer及其子類Renderer是針對整個圖表進行的渲染的,也就是說:他們是用來設置整個圖表的樣式的,DefaultRenderer定義了所有圖表都有的一些共通的屬性,例如:mChartTitle,mBackground等,具體詳細的屬性可以看源碼;DialRenderer是繼承於DefaultRenderer類的,除了有父類的那些共同的屬性外,他還有一些自己獨特的屬性,DialRenderer主要是用來渲染餅圖的渲染器,例如:不同類型的餅圖,柱柱圖等可以用這個Renderer去做渲染;XYMultipleSeriesRenderer也擁有父類的那些屬性,他自己也有許多獨特的屬性去設置,XYMultipleSeriesRenderer則主要用來對XY坐標軸圖表進行渲染。由此可見,我們再進行不同類型圖表的繪制時要使用對應的渲染器去進行渲染,以達到最好的效果。

2)SimpleSeriesRenderer是XYSeriesRenderer的父類,就我的理解,這兩個渲染器則是對具體的每個點去渲染不同的效果,SimpleSeriesRenderer主要是用來對餅圖一類的圖表中的點進行渲染,而 XYSeriesRenderer則主要是對坐標軸點進行渲染。

二.再分析一下model包的作用,model包中的類如圖所示:

\

這個包中,主要包含了一些圖表點的集合,不同類型的圖表,我們要使用對應的對象去裝載對不同類型的點集。其中: CategorySeries是用來裝載餅圖的點集,MultipleCategorySeries是用來裝載面包圈圖的點集,RangeCategorySeries是用來裝載柱狀圖的點集,TimeSeries,XYSeries,XYValueSeries主要是用來裝載坐標軸點集,XYMultipleSeriesDataset則是對以上三個點集的一個集合(因為我們的坐標軸中,可能有多個圖像)。

三.再分析一下chart包的作用,chart包中的類如圖所示:

這個包的中的所有類就是負責具體繪制圖表的類,他們中都對不同的圖表提供了不同的繪制方法,根據類的名字就可以知道他們分別是用來繪制那些圖表的。具體是如何繪制的,我也看不懂。

最後要說的就是ChartFactory這個工廠類了,這個工廠類的作用就是根據我們調用的不同的工廠方法,並傳入對應的dataset和renderer,調用GraphicalView為我們生成一個具體的圖表View,來讓我們去做顯示。

以上就是我對這個開源工程宏觀上的一些理解,具體的實現步驟也不想深入的去看了,實在是挺難懂的,只要我們從整體上了解了這個工程不同的類的作用,能夠熟練的應用,就可以了。

總結:整個工程的結構十分的清晰,負責渲染的類,負責組裝數據的類,和真正負責利用渲染類中的設置和數據類中的數據去繪制的類。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved