Android MPAndroidChart开源库图表之折线图的实例代码

本文讲述了Android MPAndroidChart开源库图表之折线图的实例代码。分享给大家供大家参考,具体如下:

承接上一篇文章,请参考Android HelloChart开源库图表之折线图的实例代码

1. 将mpandroidchartlibrary-2-0-8.jar包copy到项目的libs中;

2. 定义xml文件。

3.  主要Java逻辑代码如下,注释已经都添加上了。

package com.example.mpandroidlinechart;
import java.util.ArrayList;
import com.github.mikephil.charting.charts.LineChart;
import com.github.mikephil.charting.components.Legend;
import com.github.mikephil.charting.components.Legend.LegendForm;
import com.github.mikephil.charting.data.Entry;
import com.github.mikephil.charting.data.LineData;
import com.github.mikephil.charting.data.LineDataSet;
import android.support.v7.app.ActionBarActivity;
import android.graphics.Color;
import android.os.Bundle;
public class MainActivity extends ActionBarActivity {
 private LineChart mLineChart;
// private Typeface mTf;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 mLineChart = (LineChart) findViewById(R.id.spread_line_chart);
// mTf = Typeface.createFromAsset(getAssets(), "OpenSans-Bold.ttf");
 LineData mLineData = getLineData(36, 100);
 showChart(mLineChart, mLineData, Color.rgb(114, 188, 223));
 }
 // 设置显示的样式
 private void showChart(LineChart lineChart, LineData lineData, int color) {
 lineChart.setDrawBorders(false); //是否在折线图上添加边框
 // no description text
 lineChart.setDescription("");// 数据描述
 // 如果没有数据的时候,会显示这个,类似listview的emtpyview
 lineChart.setNoDataTextDescription("You need to provide data for the chart.");
 // enable / disable grid background
 lineChart.setDrawGridBackground(false); // 是否显示表格颜色
 lineChart.setGridBackgroundColor(Color.WHITE & 0x70FFFFFF); // 表格的的颜色,在这里是是给颜色设置一个透明度
 // enable touch gestures
 lineChart.setTouchEnabled(true); // 设置是否可以触摸
 // enable scaling and dragging
 lineChart.setDragEnabled(true);// 是否可以拖拽
 lineChart.setScaleEnabled(true);// 是否可以缩放
 // if disabled, scaling can be done on x- and y-axis separately
 lineChart.setPinchZoom(false);//
 lineChart.setBackgroundColor(color);// 设置背景
 // add data
 lineChart.setData(lineData); // 设置数据
 // get the legend (only possible after setting data)
 Legend mLegend = lineChart.getLegend(); // 设置比例图标示,就是那个一组y的value的
 // modify the legend ...
 // mLegend.setPosition(LegendPosition.LEFT_OF_CHART);
 mLegend.setForm(LegendForm.CIRCLE);// 样式
 mLegend.setFormSize(6f);// 字体
 mLegend.setTextColor(Color.WHITE);// 颜色
// mLegend.setTypeface(mTf);// 字体
 lineChart.animateX(2500); // 立即执行的动画,x轴
 }
 /**
 * 生成一个数据
 * @param count 表示图表中有多少个坐标点
 * @param range 用来生成range以内的随机数
 * @return
 */
 private LineData getLineData(int count, float range) {
 ArrayList<String> xValues = new ArrayList<String>();
 for (int i = 0; i < count; i++) {
 // x轴显示的数据,这里默认使用数字下标显示
 xValues.add("" + i);
 }
 // y轴的数据
 ArrayList<Entry> yValues = new ArrayList<Entry>();
 for (int i = 0; i < count; i++) {
 float value = (float) (Math.random() * range) + 3;
 yValues.add(new Entry(value, i));
 }
 // create a dataset and give it a type
 // y轴的数据集合
 LineDataSet lineDataSet = new LineDataSet(yValues, "测试折线图" /*显示在比例图上*/);
 // mLineDataSet.setFillAlpha(110);
 // mLineDataSet.setFillColor(Color.RED);
 //用y轴的集合来设置参数
 lineDataSet.setLineWidth(1.75f); // 线宽
 lineDataSet.setCircleSize(3f);// 显示的圆形大小
 lineDataSet.setColor(Color.WHITE);// 显示颜色
 lineDataSet.setCircleColor(Color.WHITE);// 圆形的颜色
 lineDataSet.setHighLightColor(Color.WHITE); // 高亮的线的颜色
 ArrayList<LineDataSet> lineDataSets = new ArrayList<LineDataSet>();
 lineDataSets.add(lineDataSet); // add the datasets
 // create a data object with the datasets
 LineData lineData = new LineData(xValues, lineDataSets);
 return lineData;
 }
}

效果图如下:

折线图还有另外一种表现形式,就是折线平滑,然后折线与X轴之间可以任意填充自己想要的颜色,其实就是一些属性设置的问题,代码如下:

在上面的getLineData()函数中添加自己的设置:

效果图如下:

关于MPAndroidChart填充式的折线图网上的帖子很少,基本没有。这个是自己在网上搜索其他开源图表库,如JFreeChart...加上自己看源码才总结出来的,不知道对不对,但是看效果,基本上没问题。如果大家发现有问题,欢迎大家指正!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 详解Android图表 MPAndroidChart折线图

    1.介绍 MPAndroidChart GitHub地址 MPAndroidChart的强大之处就不在多说了,目前最新的版本是3.0.1,在新版本中很多方法都被弃用了,这个要注意一下,在网上查到的大多数资料都是关于旧版本的,今天来实现一下折线图,把过程记录下来,分享给大家. 效果图: 2.引入开源库 在项目根目录的build.gradle文件中加入如下代码 allprojects { repositories { maven { url "https://jitpack.io" } }

  • Android自定义View实现折线图效果

    下面就是结果图(每种状态用一个表情图片表示): 一.主页面的布局文件如下: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height=&quo

  • Android自定义可左右滑动和点击的折线图

    前言 前几天有小盆友让我写一个折线图,可以点击,可以左右滑动.对于折线肯定有很多项目都使用过,所以网上肯定也有很多demo,像AndroidChart.HelloChart之类的,功能相当丰富,效果也很赞,但是太重了,其他的小demo又不符合要求,当然了,我写的自定义折线图的思想也有来自这些小demo,对他们表示感谢. 效果图 废话不多说,先上效果图: 效果是不是很赞,如果上图满足你的需求,那就继续往下看. 自定义折线图的步骤: 1.自定义view所需要的属性 确定所需要的自定义view的属性,

  • Android自定义控件实现折线图

    本文实例实现一个如下图所示的Android折线图,供大家参考,具体内容如下 首先是控件绘图区域的划分,控件左边取一小部分(控件总宽度的八分之一)绘制表头,右边剩余的部分绘制表格 确定表格的行列数,首先绘制一个三行八列的网格,设置好行列的坐标后开始绘制 /*绘制三条横线*/ for(int i=0;i<3;i++){ canvas.drawLine(textWide, mLineYs[i], totalWidth, mLineYs[i], mPaintLine); } /*绘制八条竖线*/ for

  • Android实现折线走势图

    本文实例为大家分享了Android折线走势图的具体代码,供大家参考,具体内容如下 先来看看效果图 可以根据球的数量动态的改变自己的球半径,以及线宽 代码实现也是超级简单 //获取自定义属性 private void obtainStyledAttrs(AttributeSet attrs) { TypedArray typedArray = getContext().obtainStyledAttributes(attrs,R.styleable.High_LowChartView); mTex

  • Android开发之天气趋势折线图

    先来看下效果: 控件内容比较简单,就是一个普通的折线图,上下分别带有数字,点击的时候显示当天温度的差值. 创建一个类继承自View,并添加两个构造方法: public class TrendGraph extends View { public TrendGraph(Context context) { // 在java代码中创建调用 super(context); } public TrendGraph(Context context, AttributeSet attrs) { // 在xm

  • MPAndroidChart开源图表库的使用介绍之饼状图、折线图和柱状图

    MPAndroidChart开源图表库之饼状图 为大家介绍一款图标开源库MPAndroidChart,它不仅可以在Android设备上绘制各种统计图表,而且可以对图表进行拖动和缩放操作,用起来非常灵活.MPAndroidChart同样拥有常用的图表类型:线型图.饼图.柱状图和散点图. mpandroidchartlibrary.jar包下载地址: https://github.com/PhilJay/MPAndroidChart/releases 下面主要实现以下饼状图: 1.从上面的地址中下载

  • Android开发实现绘制淘宝收益图折线效果示例

    本文实例讲述了Android开发实现绘制淘宝收益图折线效果.分享给大家供大家参考,具体如下: 实现的效果我一会贴上,我先说下原理,我们知道要实现在canvas上画线,不就是要搞一个paint嘛,然后首先肯定要设置下paint的属性,那么画文字呢,不就是Textpaint吗,对,就是这么简单,接下来怎么画,折线图主要分为X轴和y轴,x轴表示日期,y表示收益,好,说道这里,大家应该知道怎么去做了,下面直接贴代码 这个方法是,画x,y坐标系的,以及上面的日期和收益了 private void draw

  • Android自定义View简易折线图控件(二)

    继续练习自定义View,这次带来的是简易折线图,支持坐标点点击监听,效果如下: 画坐标轴.画刻度.画点.连线..x.y轴的数据范围是写死的 1 <= x <= 7 ,1 <= y <= 70 ..写活的话涉及到坐标轴刻度的动态计算.坐标点的坐标修改,想想就头大,这里只练习自定义View. 1.在res/values文件夹下新建attrs.xml文件,编写自定义属性: <?xml version="1.0" encoding="utf-8"

  • Android绘制动态折线图

    所谓动态折线图,就是折线图能随着手指的滑动进行动态绘制,这里很定会产生动画效果.基于这个效果,这里使用SurfaceView进行制图. 实现步奏如下: (1): 这里新建一个绘图ChartView,继承SurfaceView并实现SurfaceHolder.Callback , Runnable接口,主要绘图工作在子线程中完成. (2):现实 SurfaceHolder.Callback接口的三个方法,并在 surfaceCreated中开启子线程进行绘图. (3):重写onTouchEvent

  • Android HelloChart开源库图表之折线图的实例代码

    前面我们介绍了开源图表库MPAndroidChart,请参考: Android MPAndroidChart开源库图表之折线图的实例代码 我们今天介绍的将是一个更为优秀的图表库,比MPAndroidChart性能更好,功能更完善,UI风格更美观,坐标轴更精细. 支持缩放.滑动以及平移.Zoom(pinch to zoom, double tap zoom), scroll and fling 支持自定义坐标轴(比如坐标轴位置:上下左右内部),支持自动生成坐标轴.Custom and auto-g

随机推荐