Android-EasyChart第二波餅圖

apin發表於2018-08-06

前言

在忙過一點時間專案需求後,我胡漢三又回來了。首先謝謝大家對我之前做的儀表盤圖表的喜歡(手動乖巧),雖然我做的還是有很多不足,但是你們讓我有動力繼續去嘗試寫些其他圖表。

首先附上傳送門:

Github傳送門,內有詳細API

儀表盤控制元件仿芝麻信用

然後來看看這次帶了什麼東西:

Android-EasyChart第二波餅圖

如何使用

首先看下如何使用

首先在佈局新增你需要的圖表控制元件

<com.github.iron.chart.pie.PieView1
        android:id="@+id/pie1"
        android:layout_width="150dp"
        android:layout_height="150dp"
        android:layout_centerHorizontal="true"/>
複製程式碼

然後給他設定資料,設定資料方法如下

//設定資料 values:資料 name:名稱 colors:顏色 anim:是否開啟動畫 (不設定顏色的話,顏色會隨機)
setData(float[] values, boolean anim)
setData(float[] values, int[] colors, boolean anim)
setData(float[] values, String[] name, boolean anim)
setData(float[] values, String[] name, int[] color, boolean anim)
複製程式碼

如果有其他個性化的定製,可以檢視目前的API是否滿足需求或者自己去實現。

去實現吧

那如何實現一個屬於自己的餅圖,首先看一下在BasePieView中有什麼方法需要我們去實現的:


protected abstract void initView();

protected abstract void initPieRect(float radius);

protected abstract void drawPieArc(Canvas canvas, String value,String percent, String name, int color, float arcStartAngle, float sweepAngle);

protected abstract void drawTitle(Canvas canvas,String title,String totalValue);
    
複製程式碼

然後讓對一個個方法進行解析,首先initView()和字面意思一樣,就是進行資料和畫筆初始化操作。

initPieRect(float radius) 初始化餅圖的區域。

drawPieArc(Canvas canvas,String value, String percent, String name, int color, float arcStartAngle, float sweepAngle) 這個方法讓我們一個個引數的來看下,value也就是進行格式化後的數值,percent百分比,name名稱,color顏色。可以根據自己需求繪製想要顯示的資料。

drawTitle(Canvas canvas,String title,String totalValue) 繪製標題和總的數值,當然不想繪製的話可以忽略。

需要注意餅圖控制元件的中心座標為(0,0)

其實在BasePieView裡已經處理了很多邏輯,像我在Style1的餅圖中,除去初始化方面的程式碼,繪製相關程式碼就10句不到。

再扯下這個圖表資料控制元件

Android-EasyChart第二波餅圖

其實在做這一塊的時候,我在考慮是把他放在餅圖控制元件裡面還是單獨抽成一個控制元件好,到最後我還是抽成了單獨一個控制元件(雖然我現在也不確定這樣好不好),我的考慮是這樣可以更方便進行位置或者顯示相關配置。而這個控制元件我也提供了比如setColumnNumber(int number)來控制列數等。

相關文章