標籤:android 應用開發 源碼 achartenginee瞭解
從上周把android ACHartEnginee的源碼check out出來後就一直在看這個東西是如何使用的,以及底層是如何?的,把最近一周對這個東西的瞭解先發上來,即是給自己做一個總結,也希望能幫到想學習這個開源工程的童鞋們。那下面我們就切入正題。
android AChartEnginee是個什麼東西呢,它是Apache的一個開源圖表工程,就是為了方便android應用程式去繪製那此高難度的圖表,比如:餅圖,曲線圖,柱狀圖等,與web端的high chart類似,掌握了這個工程以後,只要我們將我們的資料群組裝成achartenginee要求的格式,再調用對應的API設定好相應的參數,即可將你想繪製的圖表繪製出來,十分的強大。今天我們先把這個工程的整體架構就我瞭解的講解一下。
先看一下源工程的代碼結構,
這就是整個工程的結構,image包中只放了三張程式中用到的圖片(跳過),util包中主要放了一些演算法相關的工具類,看也看不太懂,tools中主要放了用來控制整個圖表放大縮小的工具類,也不進行講解了,主要分析一下chart, renderer,model這個包和ChartFactory,GraphicalView這兩個類。
一. 先分析一下renderer這個包的作用,首先這個單詞的意思是渲染的意思,從字面意思就大概可以知道,這個包下的類主要是用來對圖表的樣式進行渲染的,也就是說,主要是用來控製圖表的外觀。下面看一下renderer這個包中的類有那些:
可以看到,主要有幾個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這個工廠類了,這個工廠類的作用就是根據我們調用的不同的Factory 方法,並傳入對應的dataset和renderer,調用GraphicalView為我們產生一個具體的圖表View,來讓我們去做顯示。
以上就是我對這個開源工程宏觀上的一些理解,具體的實現步驟也不想深入的去看了,實在是挺難懂的,只要我們從整體上瞭解了這個工程不同的類的作用,能夠熟練的應用,就可以了。
總結:整個工程的結構十分的清晰,負責渲染的類,負責組裝資料的類,和真正負責利用渲染類中的設定和資料類中的資料去繪製的類。
android AChartEnginee講解之源碼架構解讀