博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MPandroidchart图表demo
阅读量:4147 次
发布时间:2019-05-25

本文共 4878 字,大约阅读时间需要 16 分钟。

1. GitHub 下载

2. UI

TemperaturChartUI1

TemperaturChartUI2

3. 基本方法

3.1 初始化表格

private void initLineChart() {        // 显示边界        mLineChart.setDrawBorders(true);        // 背景颜色        mLineChart.setBackgroundColor(0x80000000);        // 网格背景        mLineChart.setGridBackgroundColor(0x80000000);        // 启用/禁用与图表的所有可能的触摸交互。        mLineChart.setTouchEnabled(false);        // 设定x轴最大可见区域范围的大小        mLineChart.setVisibleXRangeMaximum(Visible_XRange_Maximum);        // 设定y轴最大可见区域范围的大小        mLineChart.setVisibleYRangeMaximum(100f, YAxis.AxisDependency.LEFT);        mLineChart.setVisibleXRangeMinimum(0f);        // 设置标签内容        mLineChart.setDescription("");        // 设置标签颜色        mLineChart.setDescriptionColor(Color.WHITE);        // 为chart添加空数据        mLineChart.setData(getDefaultData());    }

3.2 初始化X轴

private void initXAxis() {        // 得到X轴        XAxis xAxis = mLineChart.getXAxis();        // 得到X轴的位置        xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);        // 设置X轴间隔        xAxis.setSpaceBetweenLabels(10);        // 绘制网格线        xAxis.setDrawGridLines(true);        // 设置标签文本        xAxis.setTextColor(Color.WHITE);        // 设置文本显示        xAxis.setValueFormatter(new XAxisValueFormatter() {            @Override            public String getXValue(String original, int index, ViewPortHandler viewPortHandler) {                // Log.d("sufadi", "original = " + original + ", index = " +                // index);                return String.format("%d s", index);            }        });    }

3.3 初始化Y轴右侧

private void initYAxisRight() {        // 得到Y轴右侧并不显示        YAxis rightYAxis = mLineChart.getAxisRight();        rightYAxis.setEnabled(false);    }

3.4 初始化Y轴左侧

private void initYAxisLeft() {        // 得到Y轴左侧        YAxis leftYAxis = mLineChart.getAxisLeft();        // 设置标签文本        leftYAxis.setTextColor(Color.WHITE);        leftYAxis.setAxisMaxValue(100f);        leftYAxis.setAxisMinValue(0f);        // 说明文字绘图外侧显示        leftYAxis.setPosition(YAxis.YAxisLabelPosition.OUTSIDE_CHART);        leftYAxis.setValueFormatter(new YAxisValueFormatter() {            @Override            public String getFormattedValue(float value, YAxis yAxis) {                return String.format("%d ℃", (int) value);            }        });        // Y轴总会高出X轴一点,并没有从0点开始,因此需要对Y轴进行设置        leftYAxis.setAxisMinValue(0f);    }

3.5 初始化限制线

/**     * 限制线     */    private void initLeftYAxisLimitLine() {        // Y轴添加限制线        LimitLine limitLine = new LimitLine(40, "");        limitLine.setTextColor(Color.RED); // 颜色        limitLine.setLineColor(Color.RED);        mLineChart.getAxisLeft().addLimitLine(limitLine);    }

3.6 折线图的线条设置

/**     * 折线图的线条设置     */    private LineDataSet createLineDataSet(int Type) {        LineDataSet mLineDataSet = new LineDataSet(null, "实际温度");        switch (Type) {        case TYPE_PREDICT:            mLineDataSet.setLabel("预测温度");            mLineDataSet.setColor(Color.GREEN);            break;        case TYPE_REAL:            mLineDataSet.setLabel("实际温度");            mLineDataSet.setColor(Color.YELLOW);            break;        default:            break;        }        // 以左边坐标轴为准        mLineDataSet.setAxisDependency(YAxis.AxisDependency.LEFT);        // 设置文本大小        mLineDataSet.setValueTextSize(12f);        // 设置曲线值的圆点是实心还是空心        mLineDataSet.setDrawCircleHole(false);        // 设置曲线值的圆点大小        mLineDataSet.setCircleSize(0);        // 线模式为圆滑曲线(默认折线)        mLineDataSet.setDrawCubic(true);        // 折线是否显示数值        mLineDataSet.setDrawValues(false);        // 折线颜色        return mLineDataSet;    }

3.7 新增一条曲线

private void addEntry(int Type) {        LineData lineData = mLineChart.getData();        if (null == lineData) {            return;        }        LineDataSet dataSet = null;        switch (Type) {        case TYPE_PREDICT:            dataSet = lineData.getDataSetByLabel("预测温度", true);            break;        case TYPE_REAL:            dataSet = lineData.getDataSetByLabel("实际温度", true);            break;        default:            break;        }        if (dataSet == null) {            dataSet = createLineDataSet(Type);            lineData.addDataSet(dataSet);        }        // 这里要注意,x轴的index是从零开始的        // 假设index=2,那么getEntryCount()就等于3了        int count = dataSet.getEntryCount();        // add a new x-value first 这行代码不能少        lineData.addXValue(count + "");        float yValues = (float) (Math.random() * 60 + 10);        lineData.addEntry(new Entry(yValues, count), lineData.getIndexOfDataSet(dataSet));        mLineChart.notifyDataSetChanged();        mLineChart.setVisibleXRangeMaximum(Visible_XRange_Maximum);        mLineChart.moveViewToX(dataSet.getEntryCount());        mLineChart.moveViewTo(dataSet.getEntryCount() - Visible_XRange_Maximum, 55f, AxisDependency.LEFT);        Log.d(TAG, "set.getEntryCount()=" + dataSet.getEntryCount() + ", lineData.getXValCount() = " + lineData.getXValCount());    }
你可能感兴趣的文章
Hibernate和IBatis对比
查看>>
Spring MVC 教程,快速入门,深入分析
查看>>
Android 的source (需安装 git repo)
查看>>
Commit our mod to our own repo server
查看>>
LOCAL_PRELINK_MODULE和prelink-linux-arm.map
查看>>
Simple Guide to use the gdb tool in Android environment
查看>>
Netconsole to capture the log
查看>>
Build GingerBread on 32 bit machine.
查看>>
How to make SD Card world wide writable
查看>>
Detecting Memory Leaks in Kernel
查看>>
Linux initial RAM disk (initrd) overview
查看>>
Timestamping Linux kernel printk output in dmesg for fun and profit
查看>>
There's Much More than Intel/AMD Inside
查看>>
CentOS7 安装MySQL 5.6.43
查看>>
使用Java 导入/导出 Excel ----Jakarta POI
查看>>
本地tomcat 服务器内存不足
查看>>
IntelliJ IDAE 2018.2 汉化
查看>>
基于S5PV210的uboot移植中遇到的若干问题记录(一)DM9000网卡移植
查看>>
Openwrt源码下载与编译
查看>>
我和ip_conntrack不得不说的一些事
查看>>