关于MPAndroidChart(开源地址)就不多说了,是一个开源的android图表库,包含折线图、柱状图、散点图、雷达图等等。最近项目需要使用雷达图、折线图,为了可以清晰的表达出每个维度的数据偏好,非常直观,决定采用MPAndroidChart这个开源库实现。
现将MPAndroidChart的简单实用总结如下:
1、如何接入:
在工程的build.gradle文件中引用
allprojects{ repositories { maven { url'https://jitpack.io'} }}
在App的build.gradle
dependencies{ implementation'com.github.PhilJay:MPAndroidChart:v3.0.3'}
然后进行同步,Android Studio会自动完成依赖
2、使用:
雷达图是RadarChart这个控件,我们需要先在layout中使用这个自定义控件,如下:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<com.github.mikephil.charting.charts.RadarChart
android:id="@+id/chart"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
在Activity代码中获取资源id
RadarChart chart = findViewById(R.id.chart);
private void chartBanding() {
chart.getDescription().setEnabled(false);
chart.setWebLineWidth(1f);
chart.setWebColor(Color.LTGRAY);
chart.setWebLineWidthInner(1f);
chart.setWebColorInner(Color.LTGRAY);
chart.setWebAlpha(100);
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT);
chart.setLayoutParams(layoutParams);
chart.setRotationEnabled(false);
setData();
chart.animateXY(//设置绘制动画
1400, 1400,
Easing.EasingOption.EaseInOutQuad,
Easing.EasingOption.EaseInOutQuad);
XAxis xAxis = chart.getXAxis();
xAxis.setTextSize(12f);
xAxis.setYOffset(0f);
xAxis.setXOffset(0f);
xAxis.setAxisMinValue(1f);
xAxis.setValueFormatter(new IAxisValueFormatter() {
private String[] mActivities = new String[]{"一血", "双杀", "三杀", "四杀", "五杀"};//设置雷达图普
@Override
public String getFormattedValue(float value, AxisBase axis) {
return mActivities[(int) value % mActivities.length];
}
});
xAxis.setTextColor(UIUtils.getColor(R.color.c2a2e3d));
YAxis yAxis = chart.getYAxis();
yAxis.setLabelCount(1, false);
yAxis.setTextSize(12f);
yAxis.setAxisMinimum(0f);
yAxis.setAxisMaximum(80f);
yAxis.setDrawLabels(false);
Legend l = chart.getLegend();//得到图例
l.setEnabled(false);//隐藏图例
}
private void setData() {//设置数据
float mult = 100;
float min = 20;
//项目数
int cnt = 5;
ArrayList<RadarEntry> entries1 = new ArrayList<RadarEntry>();
ArrayList<RadarEntry> entries2 = new ArrayList<RadarEntry>();
// NOTE: The order of the entries when being added to the entries array determines their position around the center of
// the chart.
for (int i = 0; i < cnt; i++) {
float val1 = (float) (Math.random() * mult) + min;
entries1.add(new RadarEntry(val1));
float val2 = (float) (Math.random() * mult) + min;
entries2.add(new RadarEntry(val2));
}
//set1为一级图层、set2为二级图层
RadarDataSet set1 = new RadarDataSet(entries1, "");
set1.setColor(UIUtils.getColor(R.color.c91BBF8));
set1.setFillColor(UIUtils.getColor(R.color.c91BBF8));//一级图层填充色
set1.setDrawFilled(true);
set1.setFillAlpha(180);
set1.setLineWidth(2f);
set1.setDrawHighlightCircleEnabled(true);
set1.setDrawHighlightIndicators(false);
RadarDataSet set2 = new RadarDataSet(entries2, "");
set2.setColor(UIUtils.getColor(R.color.ceaba39));
set2.setFillColor(UIUtils.getColor(R.color.ceaba39));//二级图层填充色
set2.setDrawFilled(true);
set2.setFillAlpha(180);
set2.setLineWidth(2f);
set2.setDrawHighlightCircleEnabled(true);
set2.setDrawHighlightIndicators(false);
ArrayList<IRadarDataSet> sets = new ArrayList<IRadarDataSet>();
sets.add(set2);
sets.add(set1);
RadarData data = new RadarData(sets);
// data.setValueTypeface(mTfLight);
data.setValueTextSize(8f);
data.setDrawValues(false);
data.setValueTextColor(Color.WHITE);
chart.setData(data);
chart.invalidate();
}
以上就为雷达图实现的代码,写的不是很完整,还请各位大神多多指教!!!!