XCL-Charts基于Android原生Canvas來繪制各種圖表,使用簡(jiǎn)便,定制靈活。它可以實(shí)現(xiàn)各種復(fù)雜的折線圖表,但是網(wǎng)上的大多文章不夠詳細(xì),像折線圖上的字體是可以根據(jù)不同手機(jī)分辨率進(jìn)行動(dòng)態(tài)配置的,可以用如下的代碼實(shí)現(xiàn)的:
int size = (25* ScreenUtils.getScreenHeight(mContext)) /1080;
chart.getCategoryAxis().getTickLabelPaint().setTextSize(size);
chart.getDataAxis().getTickLabelPaint().setTextSize(size);
這在畫圖時(shí)我走了不少的彎路。
現(xiàn)在我用不平均點(diǎn)圖表(不平均點(diǎn)就是例如一天24個(gè)小時(shí),但是數(shù)據(jù)是6點(diǎn),8點(diǎn)有,其它點(diǎn)沒有,這兩個(gè)點(diǎn)需要直接連接,但橫軸上其它點(diǎn)是沒有數(shù)據(jù)的,橫軸上沒有數(shù)據(jù)的點(diǎn)依然標(biāo)出來,不像平均點(diǎn)繪圖,平均點(diǎn)繪圖橫軸上只顯示有數(shù)據(jù)的點(diǎn))舉個(gè)例子
本例子按照在布局文件中自定義view的方式講解:
1.剛開始沒有數(shù)據(jù),創(chuàng)建完后需要這樣傳入dataSeriesTemp=newSplineData("",null,
Color.parseColor("#81c784"));這樣做的好處是右邊的標(biāo)簽可以自己在布局文件上繪出。
2.等到有數(shù)據(jù)時(shí)可以使用dataSeriesTemp.setLineDataSet(linePoint);
this.invalidate();這個(gè)進(jìn)行刷新。
本例采用mvp結(jié)構(gòu),ITemperatureData,ITemperatureDataImpl是實(shí)現(xiàn)數(shù)據(jù)接口的地方。ITemperatureView是view層傳遞參數(shù)的地方,mainactivity里面有個(gè)TemperatureDataPresenter來溝通view層和數(shù)據(jù)層的數(shù)據(jù)連接。詳細(xì)可以看代碼demo
效果如圖:

代碼下載地址:https://github.com/xtfgq/XclNofixedDemo.git