##由于Google提供的AChartEngine的功能强大但使用起来较为复杂,MPAndroidChart同样能够实现一些效果较好的直方图,折线图,饼图等绘制,使用也较为简单轻便;

介绍MPAndroidChart

主要的Api方法:

  • setDescription(String desc) : 设置表格的描述
  • setDescriptionTypeface(Typeface t) :自定义表格中显示的字体
  • setDrawYValues(boolean enabled) : 设置是否显示y轴的值的数据
  • setValuePaintColor(int color) :设置表格中y轴的值的颜色,但是必须设置setDrawYValues(true)
  • setValueTypeface(Typeface t):设置字体
  • setValueFormatter(DecimalFormat format) : 设置显示的格式
  • setPaint(Paint p, int which) : 自定义笔刷
  • public ChartData getDataCurrent() :返回ChartData对象当前显示的图表。它包含了所有信息的显示值最小和最大值等
  • public float getYChartMin() : 返回当前最小值
  • public float getYChartMax() : 返回当前最大值
  • public float getAverage() : 返回所有值的平均值。
  • public float getAverage(int type) : 返回平均值
  • public PointF getCenter() : 返回中间点
  • public Paint getPaint(int which) : 得到笔刷
  • setTouchEnabled(boolean enabled) : 设置是否可以触摸,如为false,则不能拖动,缩放等
  • setDragScaleEnabled(boolean enabled) : 设置是否可以拖拽,缩放
  • setOnChartValueSelectedListener(OnChartValueSelectedListener l) : 设置表格上的点,被点击的时候,的回调函数
  • setHighlightEnabled(boolean enabled) : 设置点击value的时候,是否高亮显示
  • public void highlightValues(Highlight[] highs) : 设置高亮显示
  • saveToGallery(String title) : 保存图表到图库中
  • saveToPath(String title, String pathOnSD) : 保存.
  • setScaleMinima(float x, float y) : 设置最小的缩放
  • centerViewPort(int xIndex, float val) : 设置视口
  • fitScreen() : 适应屏幕

下面是一个在自己项目上使用的小Demo

  • xml文件中
<com.github.mikephil.charting.charts.PieChart        android:layout_marginTop="20dp"        android:id="@+id/spread_pie_chat"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:background="@color/Null"        android:layout_weight="1"        android:layout_gravity="center_horizontal"        android:layout_alignParentTop="true"        android:layout_centerHorizontal="true">    </com.github.mikephil.charting.charts.PieChart>
  • java文件中
/**    -    Function:    drawPie()    -    Description:    绘制饼状图    **/   public void drawPie(){       //名字       ArrayList<String> names=new ArrayList<String>();       names.add("缺勤");       names.add("出勤");       //大小       ArrayList<Entry> sizes=new ArrayList<Entry>();       sizes.add(new Entry(10,0));       sizes.add(new Entry(44,1));       //颜色       ArrayList<Integer> colors=new ArrayList<Integer>();       colors.add(Color.parseColor("#FE4365"));       colors.add(Color.parseColor("#00FF7F"));       PieDataSet pieDataSet=new PieDataSet(sizes,"");//参数:颜色栏显示颜色目录       pieDataSet.setValueTextSize(10f);       //pieDataSet.setDrawValues(true);//是否在块上面显示值以及百分百       //pieDataSet.setSliceSpace(0f);//块间距       pieDataSet.setColors(colors);       //DisplayMetrics metrics=this.getResources().getDisplayMetrics();       PieData pieData=new PieData(names,pieDataSet);       pieChart.setHoleRadius(120f);  //半径       pieChart.setTransparentCircleRadius(50f); // 半透明圈       //pieChart.setTransparentCircleRadius(0f);//设置大圆里面透明小圆半径,和洞不是一个圆       pieChart.setDrawHoleEnabled(true);       pieChart.setHoleColorTransparent(true);//设置中心洞是否透明:true为黑,false为白       pieChart.setHoleRadius(50f);//设置大圆里面的无色圆的半径(洞...)       pieChart.setCenterText("本次课堂");  //饼状图中间的文字       pieChart.setDescription("");//参数:右下角显示图形描述       //pieChart.setDrawCenterText(false);//不显示图中心文字       //pieChart.setCenterText("traffic graph");//图中心文字       pieChart.setRotationEnabled(true);//手动旋转       //pieChart.setDrawMarkerViews(false);       //pieChart.setDrawSliceText(false);//块的文本是否显示       pieChart.setData(pieData);       Legend legend=pieChart.getLegend();       legend.setEnabled(true);//是否显示图形说明,必须要放在setData后,否则出错       legend.setTextSize(15f);       //两个参数有不同的意思:       //durationMillisX:每个块运行到固定初始位置的时间       //durationMillisY: 每个块到绘制结束时间       pieChart.animateXY(1000, 1000);//设置动画(参数为时间)   }   /**    -   Function:    drawHistogram()    -   Description:    绘制柱状图    **/   public void drawHistogram(){       //名称       ArrayList<String> mMonths=new ArrayList<String>();       mMonths.add("3月3日");       mMonths.add("3月6日");       mMonths.add("3月10日");       mMonths.add("3月13日");       mMonths.add("3月17日");       mMonths.add("3月20日");       mMonths.add("3月24日");       //大小(高低)       ArrayList<BarEntry> sizes=new ArrayList<BarEntry>();       sizes.add(new BarEntry(50,0));       sizes.add(new BarEntry(51,1));       sizes.add(new BarEntry(52,2));       sizes.add(new BarEntry(49,3));       sizes.add(new BarEntry(54,4));       sizes.add(new BarEntry(54,5));       sizes.add(new BarEntry(45,6));       //颜色       BarDataSet barDataSet=new BarDataSet(sizes,"");       barDataSet.setValueTextSize(10f);       ArrayList<Integer> colors = new ArrayList<Integer>();       for(int i = 0;i < 7 ;i++){           colors.add(Color.parseColor(color[i]));       }//颜色设置       barDataSet.setColors(colors);       BarData barData=new BarData(mMonths,barDataSet);       barChart.setDescription("历史出勤统计图");//数据描述       barChart.setDescriptionTextSize(12f);       barChart.setNoDataTextDescription("No data for the chart");// 如果没有数据的时候,会显示这个,类似ListView的EmptyView       barChart.setPinchZoom(false);// 集双指缩放       barChart.setScaleEnabled(false);//手动缩放效果       barChart.setPinchZoom(false);//xy轴同时缩放,和setScaleEnabled一起使用       barChart.setDrawGridBackground(false);       //barChart.setDrawBorders(false);//画布边       //barChart.setVisibleXRange(7);       //barChart.setMaxVisibleValueCount(6);       barChart.setDrawBarShadow(false);//设置矩形阴影不显示       //barChart.setBackgroundColor(Color.parseColor("#FFFFFF"));//设置背景颜色       //barChart.setMinOffset(0);//=padding       barChart.setDrawValueAboveBar(true);       barChart.setData(barData);       barChart.animateXY(1000, 1000);//设置动画       Legend legend=barChart.getLegend();//取消图形说明       legend.setEnabled(false);       //获取X轴坐标       XAxis xAxis=barChart.getXAxis();       xAxis.setPosition(XAxisPosition.BOTTOM);//X坐标位于图标底部       xAxis.setDrawGridLines(false);       xAxis.setSpaceBetweenLabels(2);//设置名字names之间的间距       //xAxis.       //获取Y轴右坐标       YAxis yAxisR=barChart.getAxisRight();       yAxisR.setEnabled(true);       yAxisR.setDrawGridLines(true);       //获取Y轴左坐标       YAxis yAxisL=barChart.getAxisLeft();       yAxisL.setEnabled(true);       yAxisL.setDrawGridLines(true);   }

效果图

对于简单图表需求MPAndroidChart都可以很好的解决,大家可以试试

更多相关文章

  1. 代码方法android全屏显示
  2. Android:布局实例之模仿微信Tab
  3. Android系统实现navigationbar订制
  4. android 实现按住说话功能
  5. 开发小技巧--google推荐的底部导航栏的使用BottomNavigationBar
  6. Android(安卓)Developers:拖动和缩放
  7. Android(安卓)有些机型hint不显示
  8. Android(安卓)适配18:9全面屏
  9. 始终悬浮在Android屏幕的弹窗

随机推荐

  1. maven 学习笔记(二)创建一个简单的 eclipse
  2. Intent总结06 category属性
  3. 一句话_理解Activity四种启动模式
  4. android动态加载外部资源文件
  5. Android(安卓)Gradle权威指南
  6. android开发教程之listview使用方法
  7. Android沉浸式
  8. android获取应用信息,判断应用来源,监听应
  9. 轻松使用xmlpull解析xml
  10. centos编译安装ffmpeg支持AMR