去年有个医疗APP项目

当时用的是自定义做的折线图..一个LISTVIEW..然后噼里啪啦一通代码写进去...最近因为看到有---MPAndroidChart ,然后顺便看了下使用他的折线图..写了个DEMO,

demo里面有折线图代码,饼状图代码.后续文章的代码.都回加入在这个demo里面

先看效果图

Android HelloCharts实现折线图 折线图app安卓_折线图


然后直奔主题吧MPAndroidChart是一款基于Android的开源图表库,MPAndroidChart不仅可以在Android设备上绘制各种统计图表,而且可以对图表进行拖动和缩放操作,应用起来非常灵活。MPAndroidChart同样拥有常用的图表类型:线型图、饼图、柱状图和散点图。GitHub地址:
https://github.com/PhilJay/MPAndroidChart下面主要实现以下折线图:


1.有2种方法可以导库包


1.1 第一种是 

compile 'com.github.PhilJay:MPAndroidChart:v2.2.5'


1.2 第二种是 直接导入JAR包



2.定义XML


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:orientation="vertical"
              android:background="#ffffff">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:text="杨彬的温度"
        android:textSize="20dp"/>

    <com.github.mikephil.charting.charts.LineChart
        android:id="@+id/wendu"
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:layout_marginBottom="10dp"/>
</LinearLayout>



LineActivity


/**
 * Created by yangbin on 12/16/2016.
 */

public class LineChartActivity extends Activity {
    private LineChart mLineChart;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_line);
        // 温度
        mLineChart = (LineChart) findViewById(R.id.wendu);
        LineData mLineData  = getLineData(7, 40);
        showChart(mLineChart, mLineData , Color.rgb(114, 188, 223));
    }


    /**
     * 生成一个数据
     *
     * @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);
        }

        ArrayList<LineDataSet> lineDataSets = new ArrayList<LineDataSet>();
        // 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));
        }
        // y轴的数据集合
        LineDataSet lineDataSet = new LineDataSet(yValues, "" /*测试折线图*/);
        //用y轴的集合来设置参数
        // 线宽
        lineDataSet.setLineWidth(1.0f);
        // 显示的圆形大小
        lineDataSet.setCircleSize(2.5f);
        // 显示颜色
        lineDataSet.setColor(Color.GREEN);
        // 圆形的颜色
        lineDataSet.setCircleColor(Color.GREEN);
        // 高亮的线的颜色
        lineDataSet.setHighLightColor(Color.GREEN);
        // 设置圆点的颜色
        lineDataSet.setFillColor(Color.GREEN);
        lineDataSet.setDrawCircleHole(false);
        //lineDataSet.setValueTextSize(9f);
        lineDataSet.setFillAlpha(65);

        lineDataSets.add(lineDataSet);
        LineData lineData = new LineData(xValues, lineDataSets);
        return lineData;
    }

    /**
     * 显示数据
     *
     * @param lineChart
     * @param lineData
     * @param color
     */
    private void showChart(LineChart lineChart, LineData lineData, int color) {
        //是否在折线图上添加边框
        lineChart.setDrawBorders(false);  //是否在折线图上添加边框

        // 数据描述
        lineChart.setDescription("2");
        // 如果没有数据的时候,会显示这个,类似listview的emtpyview
        lineChart.setNoDataTextDescription("暂无数据");

        // 是否显示表格颜色
        lineChart.setDrawGridBackground(false);
        // 表格的的颜色,在这里是是给颜色设置一个透明度
        //lineChart.setGridBackgroundColor(Color.WHITE & 0x70FFFFFF);

        // 设置是否可以触摸
        lineChart.setTouchEnabled(true);
        // 是否可以拖拽
        lineChart.setDragEnabled(true);
        // 是否可以缩放
        lineChart.setScaleEnabled(true);

        // if disabled, scaling can be done on x- and y-axis separately
        lineChart.setPinchZoom(false);

        //lineChart.setBackgroundColor(Color.rgb(Integer.parseInt("7e", 16), Integer.parseInt("ce", 16), Integer.parseInt("f4", 16)));// 设置背景
        // 设置数据
        lineChart.setData(lineData);

        // 设置比例图标示,就是那个一组y的value的
        Legend mLegend = lineChart.getLegend();
        //mLegend.setPosition(LegendPosition.BELOW_CHART_CENTER);
        // 样式
        mLegend.setForm(Legend.LegendForm.CIRCLE);
        // 字体
        mLegend.setFormSize(0f);
        // 颜色
        mLegend.setTextColor(Color.RED);
        // 字体
        //mLegend.setTypeface(mTf);

        // 设置Y轴右边不显示数字
        lineChart.getAxisRight().setEnabled(false);

        XAxis xAxis = lineChart.getXAxis();
        // 设置X轴的数据显示在报表的下方
        xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
        //xAxis.setDrawAxisLine(false);
        // 设置不从X轴发出纵向直线
        xAxis.setDrawGridLines(false);
        // 立即执行的动画,x轴
        lineChart.animateX(2500);
    }
}