Android Chart框架 MPAndroidChart學(xué)習(xí)筆記11_圖表的設(shè)置和樣式
源碼demo看這里
1.刷新圖表
invalidate():用來(lái)刷新圖表notifyDataSetChanged():圖表底層數(shù)據(jù)變化之后調(diào)用此方法進(jìn)行刷新
2.Logging
調(diào)用setLogEnabled(boolean enabled)方法傳入True可以設(shè)置圖標(biāo)logcat輸出,但是考慮到性能我們一般不設(shè)置
3.一般圖標(biāo)設(shè)置
-
setBackgroundColor(int color)設(shè)置圖標(biāo)背景顏色,當(dāng)然也可以在xml文件中設(shè)置。
/* @描述 圖表的基本設(shè)置 */
private void setGeneralStyling(BarChart chart) {
//設(shè)置背景
chart.setBackgroundColor(getResources().getColor(R.color.colorPrimary));
}
設(shè)置背景
-
setDescription(Description desc)設(shè)置chart描述:
//設(shè)置圖表右下角出現(xiàn)的說(shuō)明文本,以及說(shuō)明文本的基本設(shè)置。
//初始化一個(gè)Description對(duì)象
Description desc=new Description();
//設(shè)置文本內(nèi)容
desc.setText(getString(R.string.desc));
//設(shè)置文本大小
desc.setTextSize(20f);
//設(shè)置文本顏色
desc.setTextColor(Color.WHITE);
//設(shè)置文本位置,文本右上角相對(duì)于(0,0)的坐標(biāo)位置
desc.setPosition(400f,400f);
//引入說(shuō)明文本
chart.setDescription(desc);
設(shè)置說(shuō)明文本
-
setNoDataText(String text)設(shè)置沒(méi)有數(shù)據(jù)時(shí)候顯示的文本://設(shè)置圖表數(shù)據(jù)為空時(shí)候的文本 chart.setNoDataText(getString(R.string.Nodata));
設(shè)置圖表數(shù)據(jù)為空時(shí)候的文本
- 設(shè)置網(wǎng)格背景:
//是否繪制圖表背景的網(wǎng)格(開(kāi)關(guān),如果設(shè)置為false那么網(wǎng)格設(shè)置都失效)
chart.setDrawGridBackground(true);
//設(shè)置網(wǎng)格背景顏色
chart.setGridBackgroundColor(Color.YELLOW);
- 設(shè)置邊框
//設(shè)置邊框開(kāi)關(guān)
chart.setDrawBorders(true);
//設(shè)置邊框顏色
chart.setBorderColor(Color.CYAN);
//設(shè)置邊框?qū)挾?chart.setBorderWidth(20f);
- 設(shè)置圖表上最大可見(jiàn)繪制值標(biāo)簽的數(shù)目
//設(shè)置圖表上最大可見(jiàn)繪制值標(biāo)簽的數(shù)目。這只需要影響setdrawvalues()時(shí)啟用。
chart.setMaxVisibleValueCount(30);
4.特殊圖標(biāo)樣式設(shè)置
Line-, Bar-, Scatter-, Candle- & BubbleChart
-
setAutoScaleMinMaxEnabled(boolean enabled)如果設(shè)置為true,自動(dòng)去匹配chart數(shù)據(jù)的最小值與最大值,默認(rèn)為false -
setKeepPositionOnRotation(boolean enabled)設(shè)置為true那么圖標(biāo)在放大之后無(wú)法進(jìn)行拖拽,默認(rèn)為false
//用來(lái)描述Y軸的顯示,如果設(shè)置為true,那么Y軸會(huì)顯示X變化范圍內(nèi)Y值最大的變化范圍
chart.setAutoScaleMinMaxEnabled(false);
//設(shè)置為true那么圖標(biāo)在放大之后無(wú)法進(jìn)行拖拽,默認(rèn)為false。
chart.setKeepPositionOnRotation(false);
BarChart
-
setDrawValueAboveBar(boolean enabled)如果設(shè)置為true,那么所有的值都會(huì)顯示在bar的上方,而不是在頂部。
-setDrawBarShadow(boolean enabled)是否顯示bar后方的一個(gè)陰影,以降低40%的性能?
//默認(rèn)在bar的頂部,設(shè)置為true之后就會(huì)顯示在bar上方
chart.setDrawValueAboveBar(true);
//是否顯示bar后方的一個(gè)陰影,以降低40%的性能?
chart.setDrawBarShadow(false);
setDrawValueAboveBar
PieChart
//設(shè)置餅快的標(biāo)簽
mChart.setDrawSliceText(true);
//設(shè)置為true,那么餅塊的內(nèi)容會(huì)按照相應(yīng)數(shù)據(jù)的百分比顯示,否則顯示實(shí)際值
mChart.setUsePercentValues(false);
//設(shè)置中心文字
mChart.setCenterText(getString(R.string.centerText));
//可以理解為設(shè)置中心文字的區(qū)域?qū)挾龋绻淖殖^(guò)寬度會(huì)進(jìn)行換行
// 實(shí)際計(jì)算為內(nèi)徑的按照百分比縮小后作為中心文字區(qū)域的寬度
mChart.setCenterTextRadiusPercent(20f);
//可以理解為設(shè)置內(nèi)徑
mChart.setHoleRadius(40f);
//設(shè)置半透明圈的半徑
mChart.setTransparentCircleRadius(50f);
//設(shè)置半透明圈的顏色
mChart.setTransparentCircleColor(getResources().getColor(R.color.colorPrimary));
//設(shè)置半透明圈的透明度[0~255]
mChart.setTransparentCircleAlpha(99);
//設(shè)置餅圖的最大角度:默認(rèn)為360°
mChart.setMaxAngle(90f);
當(dāng)然你如果想要也可以這樣:
//設(shè)置餅快的標(biāo)簽
mChart.setDrawSliceText(true);
//設(shè)置為true,那么餅塊的內(nèi)容會(huì)按照相應(yīng)數(shù)據(jù)的百分比顯示,否則顯示實(shí)際值
mChart.setUsePercentValues(false);
//設(shè)置中心文字
//mChart.setCenterText(getString(R.string.centerText));
//可以理解為設(shè)置中心文字的區(qū)域?qū)挾?,如果文字超過(guò)寬度會(huì)進(jìn)行換行
// 實(shí)際計(jì)算為內(nèi)徑的按照百分比縮小后作為中心文字區(qū)域的寬度
mChart.setCenterTextRadiusPercent(50f);
//可以理解為設(shè)置內(nèi)徑
mChart.setHoleRadius(10f);
//設(shè)置半透明圈的半徑
mChart.setTransparentCircleRadius(10f);
//設(shè)置半透明圈的顏色
mChart.setTransparentCircleColor(getResources().getColor(R.color.colorPrimary));
//設(shè)置半透明圈的透明度[0~255]
mChart.setTransparentCircleAlpha(99);
//設(shè)置餅圖的最大角度:默認(rèn)為360°
mChart.setMaxAngle(120f);