MPandroidchart图表demo

2024-02-09 20:38
文章标签 图表 demo mpandroidchart

本文主要是介绍MPandroidchart图表demo,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. GitHub 下载

https://github.com/sufadi/TemperaturChartUI

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() {@Overridepublic 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() {@Overridepublic 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());}

这篇关于MPandroidchart图表demo的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/695233

相关文章

linux 内核提权总结(demo+exp分析) -- 任意读写(四)

hijack_modprobe_path篇 本文转自网络文章,内容均为非盈利,版权归原作者所有。 转载此文章仅为个人收藏,分享知识,如有侵权,马上删除。 原文作者:jmpcall 专栏地址:https://zhuanlan.kanxue.com/user-815036.htm     原理同hijack_prctl, 当用户执行错误格式的elf文件时内核调用call_usermod

linux 内核提权总结(demo+exp分析) -- 任意读写(三)

hijack_prctl篇 本文转自网络文章,内容均为非盈利,版权归原作者所有。 转载此文章仅为个人收藏,分享知识,如有侵权,马上删除。 原文作者:jmpcall 专栏地址:https://zhuanlan.kanxue.com/user-815036.htm   prctl函数: 用户态函数,可用于定制进程参数,非常适合和内核进行交互 用户态执行prctl函数后触发prctl系统

linux 内核提权总结(demo+exp分析) -- 任意读写(二)

hijack_vdso篇 本文转自网络文章,内容均为非盈利,版权归原作者所有。 转载此文章仅为个人收藏,分享知识,如有侵权,马上删除。 原文作者:jmpcall 专栏地址:https://zhuanlan.kanxue.com/user-815036.htm     vdso: 内核实现的一个动态库,存在于内核,然后映射到用户态空间,可由用户态直接调用 内核中的vdso如果被修改

linux 内核提权总结(demo+exp分析) -- 任意读写(一)

cred篇 本文转自网络文章,内容均为非盈利,版权归原作者所有。 转载此文章仅为个人收藏,分享知识,如有侵权,马上删除。 原文作者:jmpcall 专栏地址:https://zhuanlan.kanxue.com/user-815036.htm   每个线程在内核中都对应一个线程结构块thread_infothread_info中存在task_struct类型结构体 struct t

linux 内核提权总结(demo+exp分析) -- ROP(二)

ret2usr CR4篇 本文转自网络文章,内容均为非盈利,版权归原作者所有。 转载此文章仅为个人收藏,分享知识,如有侵权,马上删除。 原文作者:jmpcall 专栏地址:https://zhuanlan.kanxue.com/user-815036.htm   smep: smep是内核的一种保护措施, 使得内核不可执行用户态代码 内核通过CR4寄存器的第20位来控制smep,

linux 内核提权总结(demo+exp分析) -- ROP(一)

基础ROP篇(linux 5.0.21) 本文转自网络文章,内容均为非盈利,版权归原作者所有。 转载此文章仅为个人收藏,分享知识,如有侵权,马上删除。 原文作者:jmpcall 专栏地址:https://zhuanlan.kanxue.com/user-815036.htm   内核提权与用户态攻击的区别 攻击流程 用户态攻击: 执行 system("/bin/sh") 获得shel

实例demo理解面向接口思想

浅显的理解面向接口编程 Android开发的语言是java,至少目前是,所以理解面向接口的思想是有必要的。下面通过一个简单的例子来理解。具体的概括我也不知道怎么说。 例子: 现在我们要开发一个应用,模拟移动存储设备的读写,即计算机与U盘、MP3、移动硬盘等设备进行数据交换。已知要实现U盘、MP3播放器、移动硬盘三种移动存储设备,要求计算机能同这三种设备进行数据交换,并且以后可能会有新的第三方的

【全网最全】2024年数学建模国赛A题30页完整建模文档+17页成品论文+保奖matla代码+可视化图表等(后续会更新)

您的点赞收藏是我继续更新的最大动力! 一定要点击如下的卡片,那是获取资料的入口! 【全网最全】2024年数学建模国赛A题30页完整建模文档+17页成品论文+保奖matla代码+可视化图表等(后续会更新)「首先来看看目前已有的资料,还会不断更新哦~一次购买,后续不会再被收费哦,保证是全网最全资源,随着后续内容更新,价格会上涨,越早购买,价格越低,让大家再也不需要到处买断片资料啦~💰💸👋」�

类codepen的实现可拖拽窗口demo

首先说下思想 flex或者其他布局方式,实现左右分割布局,主盒子宽度100%,左右布局中包含一个分割条(可在布局容器中,也可以单独定义)为分隔条绑定鼠标点击事件,为document绑定鼠标移动事件和鼠标放开事件,通过监听鼠标移动事件和上一个状态保存下来的鼠标位置作对比,判断当前鼠标移动方向(往左还是往右)然后计算当前鼠标位置和鼠标点击位置的距离,来计算左右容器的变化,然后通过dom的方式设置宽度

llama.cpp demo

git clone https://github.com/ggerganov/llama.cppcd llama.cpp 修改Makefile使能mfma参数     MK_CFLAGS   += -mfma -mf16c -mavx     MK_CXXFLAGS += -mfma -mf16c -mavx 安装python3依赖 cat ./requirements/requirem