Android | 圖表MPAndroidChart使用介紹

項目中遇到的ui需要做周赚瘦、月粟誓、季度、年度的線性圖表起意,之前沒有接觸過圖表開發(fā)鹰服,百度一搜基本都是MPAndroidChart,而且文章內(nèi)容,實現(xiàn)的結(jié)果都很相近悲酷,基于此自己摸索中前行套菜,實現(xiàn)了需求,先上幾張目標(biāo)圖设易。


Week.png

Month.png

3-Year.png

項目中已經(jīng)實現(xiàn)逗柴,閑下來將這部分功能提取出來,進(jìn)行知識點鞏固和文章記錄顿肺。

1.添加依賴

項目Module gradle->dependencies中添加

 implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'

Project gradle->allprojects->repositories中添加

maven { url 'https://jitpack.io' }

如圖:


gradle.png

2.繪制線性圖表

 //是否顯示描述的字
lineChart.getDescription().setEnabled(false);
//設(shè)置背景顏色(這里設(shè)置了透明戏溺,紫色是activity的背景)
lineChart.setBackgroundColor(Color.alpha(0));
//是否與圖表交互
lineChart.setTouchEnabled(false);
//是否有縮放功能(true - 沒有縮放功能,false - x軸和y軸都可以放大)
lineChart.setPinchZoom(true);
//是否有網(wǎng)格的橫線
lineChart.getAxisRight().setEnabled(false);
//是否有左下角折線顏色對應(yīng)的信息描述
lineChart.getLegend().setEnabled(false);
//是否繪制圖表邊框的線
lineChart.setDrawBorders(false);

3.設(shè)置x軸屬性及標(biāo)簽

XAxis xAxis = lineChart.getXAxis();
//設(shè)置軸啟用或禁用 如果禁用以下的設(shè)置全部不生效
xAxis.setEnabled(true);
//設(shè)置x軸位置
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
 //設(shè)置x軸文字顏色
xAxis.setTextColor(getResources().getColor(R.color.white));
//是否顯示網(wǎng)格線
xAxis.setDrawGridLines(true);
//設(shè)置網(wǎng)格線樣式  豎著的虛線  
// (lineLength: 整個虛線中一個單位的長度)
// (spaceLength: 整個虛線中兩個單位的間隔)
// (phase: 虛線起始位置)
xAxis.enableGridDashedLine(10f, 30f, 0f);
//設(shè)置標(biāo)簽居中
xAxis.setCenterAxisLabels(true);
//是否繪制軸線
xAxis.setDrawAxisLine(false);
//是否顯示標(biāo)簽文字
xAxis.setDrawLabels(true);
//x軸標(biāo)簽間隔
xAxis.setGranularity(1f);
//設(shè)置x軸標(biāo)簽
xAxis.setValueFormatter(new WeekAxisValueFormatter(lineChart,mWeek));
//設(shè)置x軸最大值
xAxis.setAxisMaximum((float)mWeek.length);

4.設(shè)置y軸屬性

YAxis leftAxis = lineChart.getAxisLeft();
leftAxis.setEnabled(false);

因為這個ui來說y軸是不需要任何東西的屠尊,所以直接設(shè)置false就好了旷祸。

5.填充數(shù)據(jù)

 //填充數(shù)據(jù),在這里換成自己的數(shù)據(jù)源
List<Entry> valsComp1 = new ArrayList<>();
List<Entry> valsComp2 = new ArrayList<>();
valsComp1.add(new Entry(0, 10));
valsComp1.add(new Entry(1, 30));
valsComp1.add(new Entry(2, 55));
valsComp1.add(new Entry(3, 40));
valsComp1.add(new Entry(4, 70));
valsComp1.add(new Entry(5, 65));
valsComp1.add(new Entry(6, 50));
valsComp1.add(new Entry(7, 40));

valsComp2.add(new Entry(0, 30));
valsComp2.add(new Entry(1, 60));
valsComp2.add(new Entry(2, 20));
valsComp2.add(new Entry(3, 40));
valsComp2.add(new Entry(4, 80));
valsComp2.add(new Entry(5, 90));
valsComp2.add(new Entry(6, 70));
valsComp2.add(new Entry(7, 80));

6.設(shè)置數(shù)據(jù)折線的相關(guān)屬性

//一個LineDataSet讼昆,相當(dāng)于重新畫一組折線
LineDataSet setComp1 = new LineDataSet(valsComp1,"");
setComp1.setDrawValues(false);
//設(shè)置折線粗細(xì)
setComp1.setLineWidth(3);
//設(shè)置是否填充(效果圖中顏色漸變效果)
setComp1.setDrawFilled(true);
//設(shè)置折線顏色
setComp1.setColor(getResources().getColor(R.color.orange));
//設(shè)置填充的drawable(這里的drawable是一個從上到下漸變透明的shape)
setComp1.setFillDrawable(getResources().getDrawable(R.drawable.shape_linechart_orange_bg));
//是否繪制折線的點
setComp1.setDrawCircles(false);
//設(shè)置模式
setComp1.setMode(LineDataSet.Mode.HORIZONTAL_BEZIER);

LineDataSet setComp2 = new LineDataSet(valsComp2, "");
setComp2.setDrawValues(false);
setComp2.setLineWidth(3);
setComp2.setDrawFilled(true);
setComp2.setColor(getResources().getColor(R.color.linechart_green));
setComp2.setFillDrawable(getResources().getDrawable(R.drawable.shape_linechart_green_bg));
setComp2.setDrawCircles(false);
setComp2.setMode(LineDataSet.Mode.HORIZONTAL_BEZIER);

List<ILineDataSet> dataSets = new ArrayList<>();
dataSets.add(setComp1);
dataSets.add(setComp2);

LineData lineData = new LineData(dataSets);

//給圖表設(shè)置數(shù)據(jù)源
lineChart.setData(lineData);
//刷新圖表
lineChart.invalidate();

setMode(LineDataSet.Mode mode):設(shè)置模式有四種
1.CUBIC_BEZIER 立方曲線
2.LINEAR 直線
3.STEPPED 階梯
4.HORIZONTAL_BEZIER 水平曲線

至此實現(xiàn)的效果是這樣的


chart.png

詳情后續(xù)繼續(xù)更新托享,今天先到這里~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市控淡,隨后出現(xiàn)的幾起案子嫌吠,更是在濱河造成了極大的恐慌,老刑警劉巖掺炭,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件辫诅,死亡現(xiàn)場離奇詭異,居然都是意外死亡涧狮,警方通過查閱死者的電腦和手機(jī)炕矮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來者冤,“玉大人肤视,你說我怎么就攤上這事∩娣悖” “怎么了邢滑?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長愿汰。 經(jīng)常有香客問我困后,道長,這世上最難降的妖魔是什么衬廷? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任摇予,我火速辦了婚禮,結(jié)果婚禮上吗跋,老公的妹妹穿的比我還像新娘侧戴。我一直安慰自己宁昭,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布酗宋。 她就那樣靜靜地躺著积仗,像睡著了一般。 火紅的嫁衣襯著肌膚如雪本缠。 梳的紋絲不亂的頭發(fā)上斥扛,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天,我揣著相機(jī)與錄音丹锹,去河邊找鬼。 笑死芬失,一個胖子當(dāng)著我的面吹牛楣黍,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播棱烂,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼租漂,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了颊糜?” 一聲冷哼從身側(cè)響起哩治,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎衬鱼,沒想到半個月后业筏,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鸟赫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年蒜胖,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片抛蚤。...
    茶點故事閱讀 39,992評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡台谢,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出岁经,到底是詐尸還是另有隱情朋沮,我是刑警寧澤,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布缀壤,位于F島的核電站樊拓,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏诉位。R本人自食惡果不足惜骑脱,卻給世界環(huán)境...
    茶點故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望苍糠。 院中可真熱鬧叁丧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至稚瘾,卻和暖如春牡昆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背摊欠。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工丢烘, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人些椒。 一個月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓播瞳,卻偏偏與公主長得像,于是被迫代替她去往敵國和親免糕。 傳聞我的和親對象是個殘疾皇子赢乓,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,947評論 2 355

推薦閱讀更多精彩內(nèi)容