[Android]MPAndroidChart的实战使用讲解

在android应用技术中,图表是一个重要的环节,例如折线图、饼状图、柱状图等,MPAndroidChart作为一项开源工程(Apache License, Version 2.0 ),是一个开发中避免造轮子的工具。

github地址 :https://github.com/PhilJay/MPAndroidChart

文章结束是MPAndroidChart的demo例子

 

MPAndroidChart强大之处在于其多接口开源渲染。以下进行介绍,LineChartRenderer可以理解为折线图的渲染器,drawHighlightLines方法可以视为绘制highlightline(点击某个点出现的横线和竖线),在这个方法里面可以重写对于的绘制逻辑。同时需注意,在由于源码的限制,highlightLine无法充满布局的顶部和顶部,左边和右边,这个时候需要在drawHighlightLines函数加入以下代码即可

c.save();
c.clipRect(mViewPortHandler.contentLeft(),0,mViewPortHandler.contentRight(),mViewPortHandler.contentBottom(), Region.Op.REPLACE);

MarkerView为点击图的时候,出现的标示区域布局,

public void refreshContent(Entry entry, Highlight highlight)
refreshContent用于点击不同数据点的时候,刷新标示区域的数据。


XAxisRenderer函数为X轴的渲染,这里可以控制X轴的显示

protected void drawLabels(Canvas c, float pos, PointF anchor) {
drawLabels方法用于绘制坐标文字的方法,

public void renderGridLines(Canvas c) {
renderGridLines用于绘制x轴的对应格子线。重写这里的方法可以控制绘制的策略。


YAxisValueFormatter类为Y轴数据格式化类,在这里可以根据需求通过getFormattedValue方法更改显示的Y轴文案,非必要情况下,别在YAxisRenderer类中格式化Y轴显示的数据。

YAxisRenderer类与XAxisRenderer类的功能类似,通过drawYLabels方法控制绘制Y轴文案的操作,通过renderGridLines来绘制y轴格子线的操作。

OnChartGestureListener监听器用于图表手势的监听器,

public interface OnChartGestureListener {
    void onChartGestureStart(MotionEvent var1, ChartGesture var2);

    void onChartGestureEnd(MotionEvent var1, ChartGesture var2);

    void onChartLongPressed(MotionEvent var1);

    void onChartDoubleTapped(MotionEvent var1);

    void onChartSingleTapped(MotionEvent var1);

    void onChartFling(MotionEvent var1, MotionEvent var2, float var3, float var4);

    void onChartScale(MotionEvent var1, float var2, float var3);

    void onChartTranslate(MotionEvent var1, float var2, float var3);
}

这里可以监听许多手势的操作。

BarLineChartTouchListener类就是Touch的监听器,用于获取Touch事件的操作,这里也调用OnChartGestureListener的方法用于传递当前的操作。


以下是LineChart常用的方法

setDescription 描述的文案

setDescriptionColor 描述文案的颜色

setDescriptionPosition 描述文案的位置


setTouchEnabled是否开启触摸操作

setDragEnabled是否开启拖拽操作

setScaleEnabled 是否开启放大缩小操作

highlightValue 高亮某个点 其中highlightValue(-1, -1)不高亮任何点

setRenderer 设置渲染器

setOnTouchListener、setOnChartGestureListener设置监听事件等


同时许多数据也是可以设置属性的,例如XAxis可以设置x轴的数据

例如 XAxis xAxis = mChart.getXAxis();
        xAxis.setTextSize设置文字大小
        xAxis.setTextColor 设置文字颜色

xAxis.setDrawAxisLine(); 是否画X轴线
        xAxis.setDrawLabels();是否画x轴文字等等等

LineDataSet作为一个数据集合,可以设置点对应的属性例如

LineDataSet dataSet1 = new LineDataSet(mCharNodeData1, null);
        dataSet1.setColor(Color.parseColor("#eeeeee"));// 画线的颜色
        dataSet1.setLineWidth(1f); 线的宽度
        dataSet1.setDrawFilled(true);// 画阴影部分
        dataSet1.setFillColor(Color.parseColor("#eeeeee"));是否画下面的阴影
        dataSet1.setAxisDependency(YAxis.AxisDependency.LEFT);相对于哪个y轴

      dataSet1.setDrawCircles(false); 是否画圆
        dataSet1.setDrawCircleHole(true); 是否画圆的中间
        dataSet1.setCircleColorHole(Color.WHITE); 中间的颜色
        dataSet1.setCircleSize(5f); 圆的大小
        dataSet1.setHighlightEnabled(true); 是否画高亮线
        dataSet1.setDrawHorizontalHighlightIndicator(false);//画高亮线的横线
        dataSet1.setDrawVerticalHighlightIndicator(true);/;//画高亮线的竖线


以下是图表工具的demo效果



  • LineChart (with legend, simple design) alt tag
  • LineChart (with legend, simple design) alt tag

  • LineChart (cubic lines) alt tag

  • LineChart (gradient fill) alt tag

  • Combined-Chart (bar- and linechart in this case) alt tag

  • BarChart (with legend, simple design)

alt tag

  • BarChart (grouped DataSets)

alt tag

  • Horizontal-BarChart

alt tag

  • PieChart (with selection, ...)

alt tag

  • ScatterChart (with squares, triangles, circles, ... and more)

alt tag

  • CandleStickChart (for financial data)

alt tag

  • BubbleChart (area covered by bubbles indicates the yValue)

alt tag

  • RadarChart (spider web chart)

alt tag



  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值