Android MPAndroidChart超漂亮图表框架

Android MPAndroidChart超漂亮图表框架

    • 简介
    • 配置
    • 示例
    • 总结

Blog如有不对,敬请斧正
喜欢Android的可以关注我,日常更新Android干货

简介

MPAndroidChart是GitHub中大名鼎鼎的一个开源框架,可以快速制作开发中需要的图表,如:折线图、柱形图、饼图、雷达图。

Github项目地址:https://github.com/PhilJay/MPAndroidChart

API开发文档:https://javadoc.jitpack.io/com/github/PhilJay/MPAndroidChart/v3.1.0/javadoc/

简单列举一些,大家感受一下它的强大

BarChart条形图
Bubble Chart气泡图
CandleStick Chart烛台图
CombinedChart组合图
HorizontalBarChart水平条形图
LineChart折线图
PieChart饼图

在这里插入图片描述
在这里插入图片描述

配置

只需2步
1、
在这里插入图片描述

 implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'repositories {maven { url 'https://jitpack.io' }
}

2、
在这里插入图片描述

 maven { url "https://jitpack.io" }

记得点击 Sync Now
记得点击 Sync Now
记得点击 Sync Now

示例

我这里用折线图、条形图、雷达图,来给大家演示一下。

1、 activity_main.xml

要点:

在Layout中通常使用

com.github.mikephil.charting.charts.xxxx

引入组件。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"android:orientation="vertical"><com.github.mikephil.charting.charts.LineChartandroid:layout_marginTop="10dp"android:id="@+id/lc_1"android:layout_width="match_parent"android:layout_height="200dp" /><com.github.mikephil.charting.charts.BarChartandroid:layout_marginTop="10dp"android:id="@+id/bc_1"android:layout_width="match_parent"android:layout_height="200dp" /><com.github.mikephil.charting.charts.RadarChartandroid:layout_marginTop="10dp"android:id="@+id/rc_1"android:layout_width="match_parent"android:layout_height="250dp" />
</LinearLayout>

2、 MainActivity
要点:

1、利用 ArrayList< Entry >()添加数据 ,Entry()是MPAndroidChart定义好的类,通过 Entry(x,y),增加X轴和Y轴的数据,Entry可能会改变,如条形图的就是对应的是BarEntry

2、利用ArrayList()创建
new xxxDataSet(list,"radar"),拿折线图来说,第二个参数是这条折线的’名称’,一个xxxDataSet 就代表一条折线。

3、xxxData data= new xxxData() 的addDataSet(set) 方法将上面的数据添加,添加两个xxxDataSet就有两条折线了。

4、利用创建组件的 setData(data)添加数据,显示数据

 ArrayList< Entry >()---->new xxxDataSet(list,"radar")---->xxxData data= new xxxData()---->
组件.setData()

MainActivity

package com.example.xianyu;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import com.github.mikephil.charting.data.BarData;
import com.github.mikephil.charting.data.BarDataSet;
import com.github.mikephil.charting.data.BarEntry;
import com.github.mikephil.charting.data.Entry;
import com.github.mikephil.charting.data.LineData;
import com.github.mikephil.charting.data.LineDataSet;
import com.github.mikephil.charting.data.RadarData;
import com.github.mikephil.charting.data.RadarDataSet;
import com.github.mikephil.charting.data.RadarEntry;
import java.util.ArrayList;
import java.util.List;public class MainActivity extends AppCompatActivity {com.github.mikephil.charting.charts.LineChart mylineChart;com.github.mikephil.charting.charts.BarChart mybarchart;com.github.mikephil.charting.charts.RadarChart myradarchart;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initLineChart();initBarChart();initRadarChart();}private void initRadarChart() {myradarchart = findViewById(R.id.rc_1);List<RadarEntry> list = new ArrayList<RadarEntry>();RadarEntry da1 = new RadarEntry(0);RadarEntry da2 = new RadarEntry(5);RadarEntry da3 = new RadarEntry(10);RadarEntry da4 = new RadarEntry(15);RadarEntry da5 = new RadarEntry(20);list.add(da1);list.add(da2);list.add(da3);list.add(da4);list.add(da5);RadarData radarData = new RadarData();RadarDataSet radarDataSet = new RadarDataSet(list,"radar");radarData.addDataSet(radarDataSet);myradarchart.setData(radarData);}public void initLineChart(){mylineChart = findViewById(R.id.lc_1);List<Entry> entry = new ArrayList<Entry>();Entry c1e1 = new Entry(10, 0);Entry c1e2 = new Entry(20, 5);Entry c1e3 = new Entry(30, 10);Entry c1e4 = new Entry(40, 15);entry.add(c1e1);entry.add(c1e2);entry.add(c1e3);entry.add(c1e4);LineDataSet  data = new  LineDataSet(entry,"linechart");LineData lineData = new LineData(data);mylineChart.setData(lineData);}public void initBarChart(){mybarchart = findViewById(R.id.bc_1);List<BarEntry> list = new ArrayList<BarEntry>();BarEntry da1 = new BarEntry(0,5);BarEntry da2 = new BarEntry(5,6);BarEntry da3 = new BarEntry(10,10);BarEntry da4 = new BarEntry(15,12);BarEntry da5 = new BarEntry(20,15);list.add(da1);list.add(da2);list.add(da3);list.add(da4);list.add(da5);    BarData data= new BarData();BarDataSet set = new BarDataSet(list,"barchar");data.addDataSet(set);data.addDataSet(set);mybarchart.setData(data);}}

实现图:
在这里插入图片描述
现在做出来的效果使用的是默认的图表样式,如需开发自定义,更灵活,还需要学习api文档中components 包,它包含了X轴、Y轴、基线等类的get和set方法,方便快速设置X、Y轴样式。

总结

非常好用,快学起来叭!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/59545.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【安卓基础】03 实现简单聊天界面

编写一个简单的聊天界面&#xff0c;例子来自《第一行代码》。 1. 编写主界面 聊天界面使用 RecyclerView&#xff0c;简单来说是谷歌新增的控件&#xff0c;与 ListView 类似&#xff0c;但是功能更加强大。比如 ListView 只能纵向华东&#xff0c;但是 RecyclerView 可以设…

安卓 类微信界面实现

目录 1.引言 2.实现 1.写出顶部和底部的layout 2.主页面 3.写四个fragment用于显示不同的内容 4.写MainActivity中的代码 3.总结 1.引言 这是我第一次接触安卓的开发&#xff0c;因为之前学过c#和java&#xff0c;感觉使用AS开发就像使用java在写winform&#xff0c;同样…

安卓开发之设计微信界面

一、功能需求 完成一个类似微信页面的布局&#xff0c;要求&#xff1a; 页面最上方是标题居中页面中间界面显示内容&#xff0c;内容随下方栏的选择而切换页面最下方有四个按钮点击按钮后&#xff0c;按钮图标会变换颜色&#xff0c;且显示框变换内容 项目大致框架如下&…

干货!几招教你降低论文重复率!!

相信大家已经开始为毕业论文奋战了&#xff0c;甚至有的学校已经答辩结束了。今天&#xff0c;小编就说说史上最奇葩智能系统——知网论文检测系统&#xff0c;并且告诉大家躲避查重的几个大招。 各个学校对所谓论文原创度的标准要求不同&#xff0c;碰到要求重复率在30%或20%以…

最简单的 6 种防止数据重复提交的方法!(干货)

有位朋友&#xff0c;某天突然问磊哥&#xff1a;在 Java 中&#xff0c;防止重复提交最简单的方案是什么&#xff1f; 这句话中包含了两个关键信息&#xff0c;第一&#xff1a;防止重复提交&#xff1b;第二&#xff1a;最简单。 于是磊哥问他&#xff0c;是单机环境还是分布…

如何降重计算机SCI论文的重复率? - 易智编译EaseEditing

介绍几种降重方法&#xff1a; 1“中英中”互换法 用翻译软件先翻译成英文&#xff0c; 再翻译回中文&#xff0c;之后手工修改润色一下&#xff0c; 这样换了一种表达句式&#xff0c;但愿文意思没有改变。 值得一提的是&#xff0c;现在中英文互译软件已经非常强大了&…

对文本文件中出现的词进行次数统计

主要涉及读取文本文件、统计词出现的数目、排序、隐藏函数lambda。 随便从网页复制一篇文章保存成“train.txt”&#xff0c;采用以下代码读取txt文件&#xff1a; def load_stop_words(file "stopwords.txt"):with open(file,"r",encoding"utf-8&…

最简单的6种防止数据重复提交的方法!(干货)

有位朋友&#xff0c;某天突然问磊哥&#xff1a;在 Java 中&#xff0c;防止重复提交最简单的方案是什么&#xff1f; 这句话中包含了两个关键信息&#xff0c;第一&#xff1a;防止重复提交&#xff1b;第二&#xff1a;最简单。 于是磊哥问他&#xff0c;是单机环境还是分布…

马斯克成立人工智能公司X.AI:对抗ChatGPT 已买1万个GPU

雷递网 雷建平 4月15日 根据内华达州的一份文件&#xff0c;特斯拉CEO埃隆马斯克 (Elon Musk) 已经成立了一家名为X.AI Corp的新人工智能公司。马斯克为X.AI Corp的唯一董事&#xff0c;而贾里德伯查尔&#xff0c;马斯克家族办公室的董事则是其秘书。 X.AI已允许出售这家私人持…

十大网络安全上市公司分析,让我们重点聊聊F5

网络安全上市厂商业务广泛分布于网络安全硬件、软件&#xff0c;网络安全服务等板块&#xff0c;总体来看&#xff0c;十大网络安全上市公司的竞争可谓是如火如荼。今天让我们把目光集中在F5&#xff0c;这个能为我们所有人创造更安全的数字世界的企业&#xff0c;在应用及API交…

基于blinker的 microPython 小爱同学

官方没有基于esp8266 esp32的microPython 的SDK 翻了 c源码 照葫芦画瓢画出了 这个 100行左右 里面有个设置设备类型的链接 需要手动设置一次 然后就可以进米家绑定其他设备同步到小爱同学啦 比官方的几百K缩小了很多 不过在官方源码翻协议倒是翻了一晚上。 https://download…

集美大学及集美大学诚毅学院的课表导入小爱同学

引言 由于学校教务系统在使用上存在一定的不便&#xff0c;无法在手机上简单地查看课程表&#xff0c;往往都需要通过截图的形式在手机上保存以供上课过程中查阅。本教程将介绍一种将集美大学及集美大学诚毅学院的课程表导入到小爱同学中的方法。 选择小爱课程表的理由是觉得市…

基于微信小程序的网上订餐系统 报告+任务书+开题报告+文献综述+中期PPT+外文翻译及原文+PPT+项目源码及数据库文件

摘要 随着微信小程序的飞速发展&#xff0c;很多系统随之兴起&#xff0c;微信已经是我们生活中的一部分&#xff0c;可不单单是人们用于沟通聊天的工具。还有很多公告平台、小程序也随之发展。大部分公众平台都只起到了一个信息消息的推送或者浏览的作用&#xff0c;而小程序的…

蚌埠学院教务系统自动导入课程表到小米/Redmi手机小爱同学课程表使用说明

文章目录 蚌埠学院教务系统自动导入课程表到小米/Redmi手机小爱同学课程表详细教学视频演示一、自我介绍二、使用说明1.使用条件2.读入数据 总结and已知问题 蚌埠学院教务系统自动导入课程表到小米/Redmi手机小爱同学课程表 蚌埠学院教务系统自动导入课程表到小米/Redmi手机小…

基于Javamail的邮件收发系统(系统+论文+开题报告+任务书+外文翻译+文献综述+答辩PPT)

毕业设计&#xff08;论文&#xff09; &#xff08; 20 届&#xff09; 论文&#xff08;设计&#xff09;题目 基于Javamail的邮件收发系统 作 者 二级学院、专业 班 级 指导教师&#xff08;职称&#xff09; 论 文 字 数 论文完成时间 20年月日 基于JavaMail的邮件…

电脑打不开网页,能ping通,能上QQ,解决办法。

方法一 修改网络配置 因为网络配置不正确无法访问外网的情况。 解决办法&#xff1a; WINR —>在运行里面输入cmd 输入 ipconfig 查看网络配置是否正确 如果不正确&#xff0c;右击网络–>属性–>更改适配器设置–>右击你现在连接的外网的–>属性–>双击…

计算机微信接收excel打不开怎么回事,电脑端微信打不开怎么解决

电脑端微信大家相信大家都用过了&#xff0c;但是有时候出现打不开情况怎么解决呢。下面由学习啦小编为你整理了电脑端微信网页版打不开怎么办的相关方法&#xff0c;希望对你有帮助! 电脑端微信网页版打不开解决方法如下 打开浏览器&#xff0c;点“工具”→“管理加载项”那里…

微信粤语语音转文字 讯飞输入法更懂粤语直出文字

微信语音转文字功能在一定程度上缓解了语音消息的压力。但是&#xff0c;如果对方讲的是方言怎么办&#xff1f;日前&#xff0c;腾讯微信团队发微博称&#xff0c;广东地区用户支持粤语语音转文字功能。然而广东以外的广东人怎么办&#xff1f;网友们表示&#xff1a;用讯飞输…

仿微信语音输入页面(讯飞语音)

boss最近提出新的需求&#xff0c;说是项目中的语音输入&#xff08;讯飞语音&#xff09;界面不够友好&#xff0c;要求按照微信语音输入界面进行修改&#xff0c;于是乎有了本篇文章。 项目中用到的语音输入采用的是讯飞的SDK。集成讯飞语音输入&#xff0c;请参考官方文档。…

【效率神器】电脑上实现语音输入文字

标签&#xff1a;【效率神器】PC端语音输入文字&#xff0c;电脑端语音输入文字&#xff0c;如何轻松在电脑上实现语音输入 有时候电脑端打文字还是比较麻烦的&#xff0c;用语音转成文字输入还是比较简单的&#xff0c;而且速度快。那么电脑端怎么通过语音输入了&#xff1f;…