MPAndroidChart之辅助工具类封装
2017-03-01 09:30
453 查看
该辅助工具类是自己在项目中进行的一些封装,虽然又大多数的参数是写死了的,但是也适用于一般的情况,减少代码量。下面就给出代码,有用的可以参考一下:
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); } } }
相关文章推荐
- MPAndroidChart的折线图的使用及封装
- MPAndroidChart的简单封装
- MPAndroidChart的折线图的使用及封装
- android AChartengine画图工具类动态加载数据(柱形图为例)
- Android常用工具类封装---SharedPreferencesUtil
- HTTP 工具类 封装 For android
- Android封装的http请求实用工具类
- Android 封装http请求的工具类
- MPAndroidChart绘制图形表
- android animation demo (2014-12-11 封装为工具类)
- Android 封装http请求的工具类
- 统计图表之MPAndroidChart曲线图解说
- 【Android】封装一个简单好用的打印Log的工具类
- Android 图片三级缓存机制工具类封装
- Android Activity整体管理和关闭工具类封装
- Android常用工具类封装---Fragment
- android的UI工具类封装
- Android 网络连接工具类封装,支持wifi以及3G网络
- 【Android】封装一个简单好用的打印Log的工具类
- android 优秀图表库之MPAndroidChart