记录一下最近开发中晕倒的一些小功能
MPAndroidChart 可以实现圆柱图、线性图、饼状图、散列图等等
下面看看具体的实现:
1.在Android studio中添加依赖
dependencies { compile 'com.github.PhilJay:MPAndroidChart:v2.1.6' }2.在layout中添加布局
android:layout_marginBottom="@dimen/max_margin_20"
android:layout_marginLeft="40dp"
android:layout_marginRight="40dp"
android:layout_marginTop="10dp"
android:layout_width="match_parent"
android:layout_height="360dp"
android:id="@+id/barchart">
4.代码中实现圆柱功能
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_inventory_analysis); mBarChart = (BarChart) findViewById(R.id.barchart);
mBarData = getBarData(); showBarChart(mBarChart, mBarData);}
private void showBarChart(BarChart barChart, BarData barData) { barChart.setDrawBorders(false); 是否在折线图上添加边框 barChart.setDescription("");// 数据描述 // 如果没有数据的时候,会显示这个,类似ListView的EmptyView barChart.setNoDataTextDescription("You need to provide data for the chart."); barChart.setDrawGridBackground(false); // 是否显示表格颜色 barChart.setTouchEnabled(true); // 设置是否可以触摸 barChart.setDragEnabled(true);// 是否可以拖拽 barChart.setScaleEnabled(true);// 是否可以缩放 barChart.setPinchZoom(false);// barChart.setDrawBarShadow(false); barChart.setData(barData); // 设置数据 Legend mLegend = barChart.getLegend(); // 设置比例图标示 mLegend.setForm(Legend.LegendForm.CIRCLE);// 样式 mLegend.setFormSize(20f);// 字体 mLegend.setTextColor(Color.BLACK);// 颜色 // X轴设定 XAxis xAxis = barChart.getXAxis(); xAxis.setPosition(XAxis.XAxisPosition.BOTTOM); //是否设置表格线 xAxis.setDrawGridLines(false); barChart.animateX(1000); // 立即执行的动画,x轴 } //x轴数据 private BarData getBarData() { ArrayListxValues = new ArrayList (); xValues.add("周日"); xValues.add("周一"); xValues.add("周二"); xValues.add("周三"); xValues.add("周四"); xValues.add("周五"); xValues.add("周六"); //y轴数据 ArrayList yValues1 = new ArrayList (); yValues1.add(new BarEntry(Float.parseFloat(listbean.get(0).getDay6()), 0)); yValues1.add(new BarEntry(23, 1)); yValues1.add(new BarEntry(Float.parseFloat(listbean.get(0).getDay1()), 2)); yValues1.add(new BarEntry(Float.parseFloat(listbean.get(0).getDay2()), 3)); yValues1.add(new BarEntry(Float.parseFloat(listbean.get(0).getDay3()), 4)); yValues1.add(new BarEntry(Float.parseFloat(listbean.get(0).getDay4()), 5)); yValues1.add(new BarEntry(Float.parseFloat(listbean.get(0).getDay5()), 6)); // y轴的数据集合 BarDataSet barDataSet1 = new BarDataSet(yValues1, listbean.get(0).getCategory()); barDataSet1.setColor(Color.RED); ArrayList yValues2 = new ArrayList (); yValues2.add(new BarEntry(Float.parseFloat(listbean.get(1).getDay6()), 0)); yValues2.add(new BarEntry(45, 1)); yValues2.add(new BarEntry(Float.parseFloat(listbean.get(1).getDay1()), 2)); yValues2.add(new BarEntry(Float.parseFloat(listbean.get(1).getDay2()), 3)); yValues2.add(new BarEntry(Float.parseFloat(listbean.get(1).getDay3()), 4)); yValues2.add(new BarEntry(Float.parseFloat(listbean.get(1).getDay4()), 5)); yValues2.add(new BarEntry(Float.parseFloat(listbean.get(1).getDay5()), 6)); BarDataSet barDataSet2 = new BarDataSet(yValues2, listbean.get(1).getCategory()); barDataSet2.setColor(Color.BLUE); ArrayList yValues3 = new ArrayList (); yValues3.add(new BarEntry(Float.parseFloat(listbean.get(2).getDay6()), 0)); yValues3.add(new BarEntry(12, 1)); yValues3.add(new BarEntry(Float.parseFloat(listbean.get(2).getDay1()), 2)); yValues3.add(new BarEntry(Float.parseFloat(listbean.get(2).getDay2()), 3)); yValues3.add(new BarEntry(Float.parseFloat(listbean.get(2).getDay3()), 4)); yValues3.add(new BarEntry(Float.parseFloat(listbean.get(2).getDay4()), 5)); yValues3.add(new BarEntry(Float.parseFloat(listbean.get(2).getDay5()), 6)); BarDataSet barDataSet3 = new BarDataSet(yValues3, listbean.get(2).getCategory()); barDataSet3.setColor(Color.YELLOW); ArrayList yValues4 = new ArrayList (); yValues4.add(new BarEntry(2, 0)); yValues4.add(new BarEntry(63, 1)); yValues4.add(new BarEntry(34, 2)); yValues4.add(new BarEntry(75, 3)); yValues4.add(new BarEntry(8, 4)); yValues4.add(new BarEntry(31, 5)); yValues4.add(new BarEntry(15, 6)); BarDataSet barDataSet4 = new BarDataSet(yValues4, "男士凉鞋"); barDataSet4.setColor(Color.GRAY); barDataSet1.setBarSpacePercent(20f); barDataSet2.setBarSpacePercent(20f); barDataSet3.setBarSpacePercent(20f); barDataSet4.setBarSpacePercent(20f); ArrayList barDataSets = new ArrayList (); barDataSets.add(barDataSet1); // add the datasets barDataSets.add(barDataSet2); // add the datasets barDataSets.add(barDataSet3); // add the datasets barDataSets.add(barDataSet4); // add the datasets BarData barData = new BarData(xValues, barDataSets); return barData; }
5.最后实现的是这样的一种情况
6.开发的时候种类比较多在一张图上显示的密密麻麻,并且种类是动态的,不固定,所以后面用了listview加上MPAndroidChart最后的效果是这样的