Android中MPAndroidChart使用Demo
来源:互联网 发布:适合游戏编程的电脑 编辑:程序博客网 时间:2024/04/29 22:58
由于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都可以很好的解决,大家可以试试
作者:林铭坦
链接:Android中MPAndroidChart使用Demo
阅读全文
0 0
- Android中MPAndroidChart使用Demo
- Android中MPAndroidChart使用Demo
- android中MpandroidChart柱状图
- Android-MPAndroidChart使用总结
- 【Android】MPAndroidChart 使用记录
- Android使用MPAndroidChart绘制图表
- android使用mpandroidchart绘制图表
- Android 图表 MPAndroidChart 的简单使用
- Android的图表世界?如何使用MPAndroidChart
- android MPAndroidChart第三方库使用总结
- [Android]MPAndroidChart的实战使用讲解
- Android MpAndroidchart使用流程和坑--柱状图
- Android MpAndroidchart使用流程和坑--饼状图
- Android数学图像MPAndroidChart的使用
- MPAndroidChart如何在Fragment中使用
- MpAndroidChart使用
- android开源图表库MPAndroidChart文档翻译(中)
- Android的图表世界–如何使用MPAndroidChart
- SimpleAdapter
- 不相交集(DisjointSet)
- Excel单元格出现####错误怎么办?
- 172. Factorial Trailing Zeroes
- Android中Fragment生命周期
- Android中MPAndroidChart使用Demo
- 【补充】 嵌入式中的 *(volatile unsigned int *)理解
- Android中常用的动作
- C++迭代器的用法
- JSP中九大内置对象
- 今天的心情还是不错的 找到了一些好的方法
- Python2.7 + selenium3.0配置
- 嵌入式安装telnet
- react native 实现ListView的局部更新