该辅助工具类是自己在项目中进行的一些封装,虽然又大多数的参数是写死了的,但是也适用于一般的情况,减少代码量。下面就给出代码,有用的可以参考一下:
public class LineChartUtils {
/**
* 设置图表数据的方法
* @param lineChart 要设置数据的图表
* @param formData 表格的Y轴数据
* @param mode 线条形状
* @param fadeDrawableId 阴影区渐变色的Drawable文件id
* @param color 线条的颜色设置
*/
public static void setLineData(Context context, LineChart lineChart, List<Float> formData, LineDataSet.Mode mode, int fadeDrawableId,int color) {
//根据Y轴数据产生表格数据
ArrayList<Entry> values = new ArrayList<>();
for (int i = 0; i < formData.size(); i++) {
values.add(new Entry(i,formData.get(i)));
}
LineDataSet set1;
if (lineChart.getData() != null &&
lineChart.getData().getDataSetCount() > 0) {
set1 = (LineDataSet) lineChart.getData().getDataSetByIndex(0);
set1.setValues(values);
lineChart.getData().notifyDataChanged();
lineChart.notifyDataSetChanged();
} else {
set1 = new LineDataSet(values, "悠唐数据报表");
set1.setDrawValues(false); //不显示数值
set1.setDrawCircles(false); //数值不以原点显示
set1.setMode(mode); //设置线条的形状
set1.setColor(color); //设置线条颜色
set1.setDrawHorizontalHighlightIndicator(false);
set1.setHighLightColor(color);
//set1.enableDashedLine(10f, 5f, 0f); //设置折线为虚线
//set1.enableDashedHighlightLine(10f, 5f, 0f);
//set1.setCircleColor(Color.BLUE); //设置圆圈颜色
set1.setLineWidth(2f); //设置线条宽度
//set1.setCircleRadius(3f); //设置眼圈直径
//set1.setDrawCircleHole(true); //设置圆圈空心
set1.setValueTextSize(9f);
set1.setDrawFilled(true); //设置绘制阴影区域
set1.setFormLineWidth(1f);
set1.setFormLineDashEffect(new DashPathEffect(new float[]{10f, 5f}, 0f));
set1.setFormSize(15f);
//设置阴影区域的颜色值
if (Build.VERSION.SDK_INT >= 18) {
Drawable drawable = ContextCompat.getDrawable(context, fadeDrawableId);
set1.setFillDrawable(drawable);
} else {
set1.setFillColor(Color.BLUE);
}
ArrayList<ILineDataSet> dataSets = new ArrayList<>();
dataSets.add(set1);
LineData data = new LineData(dataSets);
lineChart.setData(data);
}
}
/**
* 初始化表格
* @param lineChart 表格
* @param maxRange Y轴最大显示数值
* @param minRange Y轴最小显示数值
* @param b 是否绘制Y轴Label
* @param drawValue 是否绘制Y轴value
*/
public static void initLineChart(Context context,LineChart lineChart, float maxRange, int minRange, boolean b,boolean drawValue) {
lineChart.setDrawGridBackground(false); //是否绘制表格背景
lineChart.setTouchEnabled(true); //设置触摸
lineChart.setDragEnabled(false); //设置课拖动
lineChart.setScaleEnabled(false); //设置可缩放
lineChart.setPinchZoom(false); //设置中心缩放
lineChart.getDescription().setEnabled(false); //数据描述
lineChart.setNoDataText("没有数据");
/*lineChart.setNoDataTextColor(Color.RED);*/
//设置一个MarkView,该View继承于MarkView
CustomMarkerView mv = new CustomMarkerView(context, R.layout.layout_custom_marker_view);
mv.setChartView(lineChart);
lineChart.setMarker(mv);
//设置Y轴相关数据
lineChart.getAxisRight().setEnabled(false); //隐藏Y轴右边的轴线
YAxis leftAxis = lineChart.getAxisLeft();
leftAxis.removeAllLimitLines();
leftAxis.setAxisMaximum(maxRange); //设置最大数值范围
leftAxis.setAxisMinimum(minRange); //设置最小数值范围
leftAxis.setDrawAxisLine(false); //不绘制轴线
leftAxis.setDrawLabels(b);
leftAxis.setValueFormatter(new CustomYValueFormatter(drawValue));
leftAxis.setPosition(YAxis.YAxisLabelPosition.OUTSIDE_CHART); //设置Y轴Label的位置
leftAxis.setDrawGridLines(false);
//设置X轴相关数据
XAxis xAxis = lineChart.getXAxis();
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
//xAxis.setGridColor(android.R.color.transparent); //设置X轴线为透明
xAxis.setDrawGridLines(false); //不绘制X轴
xAxis.setTextSize(9);
lineChart.animateXY(1500, 1500); //设置图表动画
lineChart.getLegend().setEnabled(false); //不显示表名
}
/**
* 初始化表格
* @param lineChart 表格
* @param maxRange Y轴最大显示数值
* @param minRange Y轴最小显示数值
* @param b 是否绘制Y轴Label
*/
public static void initLineChart(Context context,LineChart lineChart, int maxRange, int minRange, boolean b) {
lineChart.setDrawGridBackground(false); //是否绘制表格背景
lineChart.setTouchEnabled(true); //设置触摸
lineChart.setDragEnabled(false); //设置课拖动
lineChart.setScaleEnabled(false); //设置可缩放
lineChart.setPinchZoom(false); //设置中心缩放
lineChart.getDescription().setEnabled(false); //数据描述
lineChart.setNoDataText("没有数据");
/*lineChart.setNoDataTextColor(Color.RED);*/
//设置一个MarkView,该View继承于MarkView
CustomMarkerView mv = new CustomMarkerView(context, R.layout.layout_custom_marker_view);
mv.setChartView(lineChart);
lineChart.setMarker(mv);
//设置Y轴相关数据
lineChart.getAxisRight().setEnabled(false); //隐藏Y轴右边的轴线
YAxis leftAxis = lineChart.getAxisLeft();
leftAxis.removeAllLimitLines();
leftAxis.setAxisMaximum(maxRange); //设置最大数值范围
leftAxis.setAxisMinimum(minRange); //设置最小数值范围
leftAxis.setDrawAxisLine(false); //不绘制轴线
leftAxis.setDrawLabels(b);
leftAxis.setValueFormatter(new CustomYValueFormatter(b));
leftAxis.setPosition(YAxis.YAxisLabelPosition.OUTSIDE_CHART); //设置Y轴Label的位置
leftAxis.setDrawGridLines(false);
//设置X轴相关数据
XAxis xAxis = lineChart.getXAxis();
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
//xAxis.setGridColor(android.R.color.transparent); //设置X轴线为透明
xAxis.setDrawGridLines(false); //不绘制X轴
xAxis.setTextSize(9);
lineChart.animateXY(1500, 1500); //设置图表动画
lineChart.getLegend().setEnabled(false); //不显示表名
}
/**
* 设置图表数据的方法 多个数据组
* @param lineChart 要设置数据的图表
* @param formData1 表格的Y轴数据1
* @param formData2 表格的Y轴数据2
* @param mode 线条形状
* @param fadeDrawableId 阴影区渐变色的Drawable文件id
*/
public static void setLineData(Context context,LineChart lineChart, List<Float> formData1,List<Float> formData2,LineDataSet.Mode mode,int fadeDrawableId) {
//根据Y轴数据产生表格数据
ArrayList<Entry> values1 = new ArrayList<>();
for (int i = 0; i < formData1.size(); i++) {
values1.add(new Entry(i,formData1.get(i)));
}
ArrayList<Entry> values2 = new ArrayList<>();
for (int i = 0; i < formData2.size(); i++) {
values2.add(new Entry(i,formData2.get(i)));
}
LineDataSet set1,set2;
if (lineChart.getData() != null &&
lineChart.getData().getDataSetCount() > 0) {
set1 = (LineDataSet) lineChart.getData().getDataSetByIndex(0);
set2 = (LineDataSet) lineChart.getData().getDataSetByIndex(1);
set1.setValues(values1);
set2.setValues(values2);
lineChart.getData().notifyDataChanged();
lineChart.notifyDataSetChanged();
} else {
set1 = new LineDataSet(values1, "悠唐数据报表");
set1.setDrawValues(false); //不显示数值
set1.setDrawCircles(true); //数值不以原点显示
set1.setMode(mode); //设置线条的形状
//set1.enableDashedLine(10f, 5f, 0f); //设置折线为虚线
//set1.enableDashedHighlightLine(10f, 5f, 0f);
set1.setCircleColor(Color.parseColor("#6666ff")); //设置圆圈颜色
set1.setColor(Color.parseColor("#6666ff"));
set1.setLineWidth(2f); //设置线条宽度
set1.setCircleRadius(3f); //设置眼圈直径
set1.setDrawCircleHole(false); //设置圆圈空心
set1.setValueTextSize(9f);
set1.setDrawFilled(true); //设置绘制阴影区域
set1.setFormLineWidth(1f);
set1.setFormLineDashEffect(new DashPathEffect(new float[]{10f, 5f}, 0f));
set1.setFormSize(15.f);
set2 = new LineDataSet(values2, "悠唐数据报表");
set2.setCircleColor(Color.parseColor("#ff7d00"));
set2.setDrawCircleHole(false);
set2.setCircleRadius(3f);
set2.setColor(Color.parseColor("#ff7d00"));
set2.setDrawValues(false); //不显示数值
set2.setDrawCircles(true); //数值不以原点显示
set2.setMode(mode); //设置线条的形状
set2.setLineWidth(2f); //设置线条宽度
set2.setValueTextSize(9f);
set2.setDrawFilled(true); //设置绘制阴影区域
set2.setFormLineWidth(1f);
set2.setFormLineDashEffect(new DashPathEffect(new float[]{10f, 5f}, 0f));
set2.setFormSize(15.f);
//设置阴影区域的颜色值
if (Build.VERSION.SDK_INT >= 18) {
Drawable drawable = ContextCompat.getDrawable(context, fadeDrawableId);
set1.setFillDrawable(drawable);
set2.setFillDrawable(drawable);
} else {
set1.setFillColor(Color.BLUE);
set2.setFillColor(Color.BLUE);
}
LineData data = new LineData(set1,set2);
lineChart.setData(data);
}
}
}