简介

MPAndroidChart是PhilJay大神给Android开发者带来的福利。MPAndroidChart是一个功能强大并且使用灵活的图表开源库,支持Android和IOS两种,这里我们暂时只关注Android版本。

Wiki

https://github.com/PhilJay/MPAndroidChart/wiki

Javadoc

https://jitpack.io/com/github/PhilJay/MPAndroidChart/v3.0.0-beta1/javadoc/

今日之图~LineChart

先看图,压压惊

布局文件

<?xml version="1.0" encoding="utf-8"?>
<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="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="mapdemo.example.com.mpandroidchartdemo.MainActivity">
<!-- 主布局中添加BarChart-->
<com.github.mikephil.charting.charts.BarChart
android:id="@+id/barchart"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="Hello World!" />
</RelativeLayout>

对于Chart,可以采用布局文件添加方式,也可以采用代码添加方式。

代码

public class MainActivity extends AppCompatActivity {

    @Bind(R.id.barchart)
BarChart barchart; private Random random;//用于产生随机数字 @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
random = new Random();
initBarChart();
} private void initBarChart() {
ArrayList<BarEntry> yVals = new ArrayList<>();//Y轴方向第一组数组
ArrayList<BarEntry> yVals2 = new ArrayList<>();//Y轴方向第二组数组
ArrayList<BarEntry> yVals3 = new ArrayList<>();//Y轴方向第三组数组
ArrayList<String> xVals = new ArrayList<>();//X轴数据 for (int i = 0; i < 12; i++) {//添加数据源
xVals.add((i + 1) + "月");
yVals.add(new BarEntry(random.nextInt(10000), i));
yVals2.add(new BarEntry(random.nextInt(10000), i));
yVals3.add(new BarEntry(random.nextInt(10000), i)); } BarDataSet barDataSet = new BarDataSet(yVals, "小明每月支出");
barDataSet.setColor(Color.RED);//设置第一组数据颜色 BarDataSet barDataSet2 = new BarDataSet(yVals2, "小花每月支出");
barDataSet2.setColor(Color.GREEN);//设置第二组数据颜色 BarDataSet barDataSet3 = new BarDataSet(yVals3, "小蔡每月支出");
barDataSet3.setColor(Color.YELLOW);//设置第三组数据颜色 ArrayList<IBarDataSet> threebardata = new ArrayList<>();//IBarDataSet 接口很关键,是添加多组数据的关键结构,LineChart也是可以采用对应的接口类,也可以添加多组数据
threebardata.add(barDataSet);
threebardata.add(barDataSet2);
threebardata.add(barDataSet3); BarData bardata = new BarData(xVals, threebardata);
barchart.setData(bardata);
barchart.getLegend().setPosition(Legend.LegendPosition.ABOVE_CHART_LEFT);//设置注解的位置在左上方
barchart.getLegend().setForm(Legend.LegendForm.CIRCLE);//这是左边显示小图标的形状 barchart.getXAxis().setPosition(XAxis.XAxisPosition.BOTTOM);//设置X轴的位置
barchart.getXAxis().setDrawGridLines(false);//不显示网格 barchart.getAxisRight().setEnabled(false);//右侧不显示Y轴
barchart.getAxisLeft().setAxisMinValue(0.0f);//设置Y轴显示最小值,不然0下面会有空隙
barchart.getAxisLeft().setDrawGridLines(false);//不设置Y轴网格 barchart.setDescription("No Deal");//设置描述
barchart.setDescriptionTextSize(20.f);//设置描述字体
barchart.animateXY(1000, 2000);//设置动画
}
}

这里,一些使用方式可以具体去看看对应的类机构,比如BarChart

通过查看它对应的源码,可以更好的使用功能,AS会自动的帮我们反编译一些内容,能借助AS很好的学习一些开源Jar包。

在上面这个例子中,如何让现实的数值为“xxx元”呢?

MPAndroidChart中存在ValueFormatter这个东西,通过这个还做一个转换,如实现“xxx元”的效果

bardata.setValueFormatter(new ValueFormatter() {
@Override
public String getFormattedValue(float v, Entry entry, int i, ViewPortHandler viewPortHandler) {
return entry.getVal() + "元";//只用拿到对应Entry的值然后加个“元”即可,传入的这几个参数,v就是Y轴的value, entry为数据入口,i就是X轴方向的位置,viewPortHandler应该就是对应View的操作手,控制视图的移动缩放什么的
}
});

<Android 应用 之路> MPAndroidChart~BarChart的更多相关文章

  1. <Android 应用 之路> MPAndroidChart~ScatterChart

    简介 MPAndroidChart是PhilJay大神给Android开发者带来的福利.MPAndroidChart是一个功能强大并且使用灵活的图表开源库,支持Android和IOS两种,这里我们暂时 ...

  2. <Android 应用 之路> MPAndroidChart~BubbleChart(气泡图) and RadarChart(雷达图)

    简介 MPAndroidChart是PhilJay大神给Android开发者带来的福利.MPAndroidChart是一个功能强大并且使用灵活的图表开源库,支持Android和iOS两种,这里我们暂时 ...

  3. <Android 应用 之路> MPAndroidChart~PieChart

    简介 MPAndroidChart是PhilJay大神给Android开发者带来的福利.MPAndroidChart是一个功能强大并且使用灵活的图表开源库,支持Android和IOS两种,这里我们暂时 ...

  4. <Android 应用 之路> MPAndroidChart~LineChart

    简介 MPAndroidChart是PhilJay大神给Android开发者带来的福利.MPAndroidChart是一个功能强大并且使用灵活的图表开源库,支持Android和IOS两种,这里我们暂时 ...

  5. Android高薪之路-Android程序员面试宝典

    Android高薪之路-Android程序员面试宝典

  6. Android学习之路——简易版微信为例(一)

    这是“Android学习之路”系列文章的开篇,可能会让大家有些失望——这篇文章中我们不介绍简易版微信的实现(不过不是标题党哦,我会在后续博文中一步步实现这个应用程序的).这里主要是和广大园友们聊聊一个 ...

  7. 小猪的Android入门之路 Day 3 - part 3

    小猪的Android入门之路 Day 3 - part 3 各种UI组件的学习 Part 3 本节引言: 在前面两个部分中我们对Android中一些比較经常使用的基本组件进行了一个了解, part 1 ...

  8. 小猪的Android入门之路 Day 7 part 2

    小猪的Android入门之路 Day 7 part 2 Android的数据存储与訪问之--SharedPreferences(保存偏好參数) ---转载请注明出处:coder-pig 本节引言: 在 ...

  9. 小猪的Android入门之路 day 1

    小猪的Android入门之路 Day 1 Android相关背景与开发环境的搭建 ------转载请注明出处:coder-pig 本节引言: 随着社会经济的发展,移动互联网的越来越热,手机APP开发显 ...

随机推荐

  1. Maven环境下面多项目之间的引用

    如图: https://github.com/sdl/odata-example  sdl OData例子包含了4个项目,下载到本地后编译.发现只有model项目是可以编译过去了.其他几个暂时编译不过 ...

  2. NavigatorIOS

    使用 NavigatorIOS,我们需要给他指定一个路由,这样它才能知道显示哪个页面 实例化 Navigator 需要2个必要的属性 —— initialRoute 和 renderSence,它们的 ...

  3. Sklearn,TensorFlow,keras模型保存与读取

    一.sklearn模型保存与读取 1.保存 from sklearn.externals import joblib from sklearn import svm X = [[0, 0], [1, ...

  4. Opencv ValueError: not enough values to unpack (expected 3, got 2)解决办法

    问题背景 有些人在用我去年的毕设运行时(感谢QAQ),报错 Opencv ValueError: not enough values to unpack (expected 3, got 2) 当时就 ...

  5. 使用docker部署STF服务(CentOS环境)

    一.安装docker环境 更新软件 sudo yum update 执行安装 sudo yum install docker 查看docker镜像 sudo docker images 二.拉取相关镜 ...

  6. Mac上实现对Python的版本切换

    最近朋友邀请我帮忙写个比特币自动化交易程序,要求的平台是Okex,用Python写,之前到是自己学过一点自动化交易,不过是MT5的.看了一下Okex提供的API接口,和MT5不一样,它并没有现成的ID ...

  7. oracle--等待事件

    1. Buffer busy waits 从本质上讲,这个等待事件的产生仅说明了一个会话在等待一个Buffer(数据块),但是导致这个现象的原因却有很多种,常见的两种是:当一个会话试图修改一个数据块, ...

  8. Rabbitmq的五种模式和案例

    消息生产者p将消息放入队列 消费者监听队列,如果队列中有消息,就消费掉,消息被拿走后,自动从队列删除 (缺点:消息可能没有被消费者正确处理,已经消失了,无法恢复) 应用场景:聊天室 1.引入依赖 &l ...

  9. 3dsmax2020卸载/安装失败/如何彻底卸载清除干净3dsmax2020注册表和文件的方法

    3dsmax2020提示安装未完成,某些产品无法安装该怎样解决呢?一些朋友在win7或者win10系统下安装3dsmax2020失败提示3dsmax2020安装未完成,某些产品无法安装,也有时候想重新 ...

  10. 解决centos被minerd挖矿程序入侵方法

    记录一次服务器被入侵的解决方法 一:问题说明 1.我的服务器是使用的阿里云的CentOS,收到的阿里云发来的提示邮件如下 然后我查看了运行的进程情况(top 命令),看到一个名为minerd的进程占用 ...