前段時間沒Android端的需求,所以在學前端蜀变,所以也差不多有一個多月沒更新文章了级乐,前端我是新手也基本沒法寫什么文章魂迄,只能總結一些比較基礎的內容,然后現(xiàn)在暫時Android這邊又開始了新的版本開發(fā)乌助,所以近期應該會寫些新文章萌京。
然后這次講講MPAndroidChart的PieChart焰轻,我之前也沒想到會碰上要開發(fā)統(tǒng)計圖需求的情況数苫,然后找了一下發(fā)現(xiàn)這個MPAndroidChart是挺火的聪舒。
https://github.com/PhilJay/MPAndroidChart
這個框架可以用來開發(fā)統(tǒng)計圖,而且這個框架的功能挺龐大的虐急。那為什么這么多統(tǒng)計圖只講餅圖PieChart呢箱残,因為其它我都暫時用不上,只用到了PieChart止吁,會用這個之后被辑,其它的統(tǒng)計圖用法其實差不多。
這里我主要只拿一個例子來講敬惦,不總結pieChart的API
一.導入MPAndroidChart依賴并創(chuàng)建
這個按照gayhub上的來弄就行了
allprojects {
repositories {
maven { url "https://jitpack.io" }
}
}
dependencies {
implementation 'com.github.PhilJay:MPAndroidChart:v3.0.3'
}
官網這個implementation 什么鬼我不知道盼理,我這邊不識別,換成compile就行了俄删。
<com.github.mikephil.charting.charts.PieChart
android:layout_width="300dp"
android:layout_height="300dp"
android:id="@+id/pic_chart"
>
</com.github.mikephil.charting.charts.PieChart>
二.設置屬性宏怔,讓圖顯示
如果僅僅按照上面這樣弄,圖片是顯示不出的抗蠢,肯定要寫一些代碼嘛举哟,那要寫什么。
寫什么一般可以百度迅矛,但是不是我黑百度妨猩,百度找的文章,大多數時候都讓人心累秽褒,就算你找到合適的文章壶硅,寫的肯定也不完整,就像我的文章一樣销斟,肯定寫的內容是不完整的庐椒,所以最好是看官方的文檔,所以最好是看官方的文檔蚂踊,所以最好是看官方的文檔约谈,重要的事情說3遍。
但是并不是所有框架的文檔對新人都這么友好犁钟,我也是踩著坑過來的棱诱,所以為了幫助一些和我一樣的萌新,我多花時間講詳細點涝动。
在gayhub中可以找到這個
那就沒錯了迈勋,很多好的框架都這樣,把文檔寫在wiki中醋粟,為什么我也不知道靡菇,我沒經常在gayhub發(fā)文章重归。然后跳到wiki去看使用文檔。
一眼看去全英文厦凤,我也看不懂鼻吮,瀏覽器翻譯一下可以看看目錄怎么寫
那就有點明朗了,先看入門泳唠,然后按照官方demo去懟代碼狈网。發(fā)現(xiàn)只顯示一種顏色,可以看看設置數據和設置顏色
List<PieEntry> strings = new ArrayList<>();
strings.add(new PieEntry(30f,"aaa"));
strings.add(new PieEntry(70f,"bbb"));
PieDataSet dataSet = new PieDataSet(strings,"Label");
ArrayList<Integer> colors = new ArrayList<Integer>();
colors.add(getResources().getColor(R.color.login_red));
colors.add(getResources().getColor(R.color.blue));
dataSet.setColors(colors);
PieData pieData = new PieData(dataSet);
pieData.setDrawValues(true);
picChart.setData(pieData);
picChart.invalidate();
最終可以得到結果
發(fā)現(xiàn)其實就這么簡單笨腥,我覺得官方的文檔講得還是挺清晰的,如果還是看不懂勇垛,可以去參考官方的demo也行脖母。
其實這樣已經完成了預覽的效果,但是有幾點需要改的地方
(1)把中間空心變成實心
(2)把數字換成百分比
(3)右下角的Description Label去掉
首先去除右下角的label
發(fā)現(xiàn)在文檔的11.一般設置和樣式中能找到
但是發(fā)現(xiàn)我的setDescription方法傳的值要求是Description對象而不是String闲孤,說明文檔內容沒有更新谆级,這時可以瀏覽這個類的源碼,很快你就能發(fā)現(xiàn)改變這個Label的方法
Description description = new Description();
description.setText("");
picChart.setDescription(description);
把空心變成實心
找到文檔的第12.特定的設置和樣式條
先設成半徑為零
picChart.setHoleRadius(0f);
發(fā)現(xiàn)內圈還有個半透明的讼积,再設置半透明的半徑為0
picChart.setTransparentCircleRadius(0f);
把數字變成百分比
一聽就知道需要看9.格式化數據值(ValueFormatter)這個肥照,再配合之前的文檔,可以這樣寫
pieData.setDrawValues(true);
pieData.setValueFormatter(new PercentFormatter());
順便再把字體變大些
pieData.setValueTextSize(12f);
修改后可以得到結果
三.總結
我這主要說怎么去看文檔勤众,至于內容我覺得列舉出來不完的舆绎,而且新功能一出,能隨時更新的就是文檔们颜,所以最好還是看文檔吕朵。但是文檔是講全部的,如果你想比如只用餅圖窥突,想只找它相關的方法調用努溃,可以百度,但是如果你以后還要用的話還去百度阻问?不如花點時間看看文檔的結構梧税,以后用時能方便的找到相應的地方。
然后你做了餅圖這個功能之后你會發(fā)現(xiàn)主要是用到三個類
(1)展示的樣式的類PieChart
(2)設置數據的類xxxDataSet
(3)數據展示相關的類xxxData
然后肯定其它圖的用法差不多称近,所以會一個基本其它就很快了第队。
還有一點我想說的是,不要把配置這個view的代碼直接寫在頁面中煌茬,這樣耦合性高復用性低斥铺,可以寫的viewmodel也行,寫個manager也行坛善,寫個helper類也行晾蜘,寫個adapter也行......
最后貼下實心餅的效果邻眷,這篇就算是結束了
List<PieEntry> strings = new ArrayList<>();
strings.add(new PieEntry(30f,"aaa"));
strings.add(new PieEntry(70f,"bbb"));
PieDataSet dataSet = new PieDataSet(strings,"Label");
ArrayList<Integer> colors = new ArrayList<Integer>();
colors.add(getResources().getColor(R.color.login_red));
colors.add(getResources().getColor(R.color.blue));
dataSet.setColors(colors);
PieData pieData = new PieData(dataSet);
pieData.setDrawValues(true);
pieData.setValueFormatter(new PercentFormatter());
pieData.setValueTextSize(12f);
picChart.setData(pieData);
picChart.invalidate();
Description description = new Description();
description.setText("");
picChart.setDescription(description);
picChart.setHoleRadius(0f);
picChart.setTransparentCircleRadius(0f);