編輯:關於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,來讓我們去做顯示。
以上就是我對這個開源工程宏觀上的一些理解,具體的實現步驟也不想深入的去看了,實在是挺難懂的,只要我們從整體上了解了這個工程不同的類的作用,能夠熟練的應用,就可以了。
總結:整個工程的結構十分的清晰,負責渲染的類,負責組裝數據的類,和真正負責利用渲染類中的設置和數據類中的數據去繪制的類。
本文實例分析了Android實現Gesture手勢識別用法。分享給大家供大家參考。具體如下:很高興能在Android1.6的sdk看到手勢識別這一功能,之前一直在想,如何
我們先用AndroidStudio新建一個項目,選擇空白模板,然後像其中拖入兩個Button,將他們的id分別命名為btDate(顯示日期),btTime(顯示時間),他
本文實例講述了Android開發之ViewSwitcher用法。分享給大家供大家參考,具體如下:android.widget.ViewSwitcher是ViewAnima
其實可以理解Handler為主線程和另外的線程之間進行數據更新的東東,並且Handler在主線程中,並在Handler直接調用線程的run方法package com.Ha