Android Chart框架 MPAndroidChart學習筆記11_圖表的設(shè)置和樣式
源碼demo看這里
1.刷新圖表
invalidate()
:用來刷新圖表notifyDataSetChanged()
:圖表底層數(shù)據(jù)變化之后調(diào)用此方法進行刷新
2.Logging
調(diào)用setLogEnabled(boolean enabled)
方法傳入True可以設(shè)置圖標logcat輸出渡紫,但是考慮到性能我們一般不設(shè)置
3.一般圖標設(shè)置
-
setBackgroundColor(int color)
設(shè)置圖標背景顏色到推,當然也可以在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)的說明文本,以及說明文本的基本設(shè)置惕澎。
//初始化一個Description對象
Description desc=new Description();
//設(shè)置文本內(nèi)容
desc.setText(getString(R.string.desc));
//設(shè)置文本大小
desc.setTextSize(20f);
//設(shè)置文本顏色
desc.setTextColor(Color.WHITE);
//設(shè)置文本位置莉测,文本右上角相對于(0,0)的坐標位置
desc.setPosition(400f,400f);
//引入說明文本
chart.setDescription(desc);
設(shè)置說明文本
-
setNoDataText(String text)
設(shè)置沒有數(shù)據(jù)時候顯示的文本://設(shè)置圖表數(shù)據(jù)為空時候的文本 chart.setNoDataText(getString(R.string.Nodata));
設(shè)置圖表數(shù)據(jù)為空時候的文本
- 設(shè)置網(wǎng)格背景:
//是否繪制圖表背景的網(wǎng)格(開關(guān)唧喉,如果設(shè)置為false那么網(wǎng)格設(shè)置都失效)
chart.setDrawGridBackground(true);
//設(shè)置網(wǎng)格背景顏色
chart.setGridBackgroundColor(Color.YELLOW);
- 設(shè)置邊框
//設(shè)置邊框開關(guān)
chart.setDrawBorders(true);
//設(shè)置邊框顏色
chart.setBorderColor(Color.CYAN);
//設(shè)置邊框?qū)挾?chart.setBorderWidth(20f);
- 設(shè)置圖表上最大可見繪制值標簽的數(shù)目
//設(shè)置圖表上最大可見繪制值標簽的數(shù)目捣卤。這只需要影響setdrawvalues()時啟用。
chart.setMaxVisibleValueCount(30);
4.特殊圖標樣式設(shè)置
Line-, Bar-, Scatter-, Candle- & BubbleChart
-
setAutoScaleMinMaxEnabled(boolean enabled)
如果設(shè)置為true八孝,自動去匹配chart數(shù)據(jù)的最小值與最大值董朝,默認為false -
setKeepPositionOnRotation(boolean enabled)
設(shè)置為true那么圖標在放大之后無法進行拖拽,默認為false
//用來描述Y軸的顯示干跛,如果設(shè)置為true子姜,那么Y軸會顯示X變化范圍內(nèi)Y值最大的變化范圍
chart.setAutoScaleMinMaxEnabled(false);
//設(shè)置為true那么圖標在放大之后無法進行拖拽,默認為false楼入。
chart.setKeepPositionOnRotation(false);
BarChart
-
setDrawValueAboveBar(boolean enabled)
如果設(shè)置為true闲询,那么所有的值都會顯示在bar的上方,而不是在頂部浅辙。
-setDrawBarShadow(boolean enabled)
是否顯示bar后方的一個陰影,以降低40%的性能阎姥?
//默認在bar的頂部记舆,設(shè)置為true之后就會顯示在bar上方
chart.setDrawValueAboveBar(true);
//是否顯示bar后方的一個陰影,以降低40%的性能?
chart.setDrawBarShadow(false);
setDrawValueAboveBar
PieChart
//設(shè)置餅快的標簽
mChart.setDrawSliceText(true);
//設(shè)置為true,那么餅塊的內(nèi)容會按照相應(yīng)數(shù)據(jù)的百分比顯示袱饭,否則顯示實際值
mChart.setUsePercentValues(false);
//設(shè)置中心文字
mChart.setCenterText(getString(R.string.centerText));
//可以理解為設(shè)置中心文字的區(qū)域?qū)挾认崞瘢绻淖殖^寬度會進行換行
// 實際計算為內(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è)置餅圖的最大角度:默認為360°
mChart.setMaxAngle(90f);
當然你如果想要也可以這樣:
//設(shè)置餅快的標簽
mChart.setDrawSliceText(true);
//設(shè)置為true,那么餅塊的內(nèi)容會按照相應(yīng)數(shù)據(jù)的百分比顯示栋盹,否則顯示實際值
mChart.setUsePercentValues(false);
//設(shè)置中心文字
//mChart.setCenterText(getString(R.string.centerText));
//可以理解為設(shè)置中心文字的區(qū)域?qū)挾龋绻淖殖^寬度會進行換行
// 實際計算為內(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è)置餅圖的最大角度:默認為360°
mChart.setMaxAngle(120f);