经常要用到统计数据这个功能,要直观的显示出来,最好还是用图表。自己弄也麻烦,所以用了Github上的一个非常著名的开源图标库:MpChart。

使用前去网上找它俩的jar包,然后导入就行。资源比较好找,分别是mpchartlib.jar和nineoldandroids-xxx.jar。

效果图:

布局文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:background="@drawable/data_back"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" tools:context=".MainActivity"> <com.github.mikephil.charting.charts.BarChart android:id="@+id/spread_bar_chart"
android:layout_width="match_parent"
android:layout_height="320dp" android:layout_centerVertical="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" /> </RelativeLayout>

主要是在布局里面,加入BarChart这个控件,其它的属性与基本控件一样设置。

MainActivity:

public class MainActivity extends AppCompatActivity {

    //图表的实例
private BarChart mBarChart;
//图表的数据实例
private BarData mBarData; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); //获得该控件
mBarChart = (BarChart) findViewById(R.id.spread_bar_chart); //设置数据
mBarData = getBarData(7, 4000.0f); //显示控件
showBarChart(mBarChart, mBarData); } private void showBarChart(BarChart barChart, BarData barData) {
barChart.setDrawBorders(false); ////是否在折线图上添加边框 barChart.setDescription("");// 数据描述 // 如果没有数据的时候,会显示这个,类似ListView的EmptyView
barChart.setNoDataTextDescription("You need to provide data for the chart."); barChart.setDrawGridBackground(false); // 是否显示表格颜色
barChart.setGridBackgroundColor(Color.WHITE & 0x00000000); // 表格的的颜色,在这里是是给颜色设置一个透明度 barChart.setTouchEnabled(true); // 设置是否可以触摸 barChart.setDragEnabled(true);// 是否可以拖拽
barChart.setScaleEnabled(true);// 是否可以缩放 barChart.setPinchZoom(false);// //barChart.setBackgroundColor(Color.BLUE);// 设置整个背景 barChart.setDrawBarShadow(false);//把条形的颜色去掉
barChart.getAxisRight().setEnabled(false);//右边Y轴不显示
barChart.getAxisLeft().setTextColor(Color.WHITE);//左边Y轴白字
barChart.getAxisLeft().setDrawGridLines(false);//阴影去掉
barChart.getAxisRight().setDrawGridLines(false);//阴影去掉
barChart.getXAxis().setDrawGridLines(false); //barChart.setDrawBarShadow(true); barChart.setData(barData); // 设置数据 Legend mLegend = barChart.getLegend(); // 设置比例图标示 mLegend.setForm(Legend.LegendForm.CIRCLE);// 样式
mLegend.setFormSize(6f);// 字体
mLegend.setTextColor(Color.WHITE);// 颜色 // X轴设定
XAxis xAxis = barChart.getXAxis();
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);//把x轴放到底部
xAxis.setTextColor(Color.WHITE); barChart.animateX(2500); // 立即执行的动画,x轴
} private BarData getBarData(int count, float range) {
ArrayList<String> xValues = new ArrayList<String>(); /*
for (int i = 0; i < count; i++) {
xValues.add("第" + (i + 1) + "季度");//x轴 String的数组
}
*/ //x轴的数据
xValues.add("周一");
xValues.add("周二");
xValues.add("周三");
xValues.add("周四");
xValues.add("周五");
xValues.add("周六");
xValues.add("周日"); ArrayList<BarEntry> yValues = new ArrayList<BarEntry>(); //Y轴的数据
for (int i = 0; i < 7; i++) {
float value = (float) (Math.random() * range/*100以内的随机数*/) + 3;
yValues.add(new BarEntry(value, i)); } // y轴的数据集合
BarDataSet barDataSet = new BarDataSet(yValues, "卡路里"); //barDataSet.setColor(Color.rgb(114, 188, 223)); barDataSet.setColor(Color.rgb(255, 255, 255));
//barDataSet.setBarShadowColor(Color.RED);
//barDataSet.setBarSpacePercent(800);
barDataSet.setValueTextColor(Color.WHITE); ArrayList<BarDataSet> barDataSets = new ArrayList<BarDataSet>();
barDataSets.add(barDataSet); // add the datasets BarData barData = new BarData(xValues, barDataSets); return barData;
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
} @Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId(); //noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
} return super.onOptionsItemSelected(item);
}
}

虽然我的示例图效果一般,但是可以自己设计,也可以用折线图,圆盘等等的图表,这里只介绍最基本的用法,请大家自行探索。

Android使用图表库简单教程的更多相关文章

  1. 我的Android进阶之旅------>【强力推荐】Android开源图表库XCL-Charts版本发布及展示页

    因为要做图表相关的应用,后来百度发现了一个很好的Android开源图表库(XCL-Charts is a free charting library for Android platform.) 下面 ...

  2. Android开源图表库介绍

    XCL-Charts XCL-Charts V1.8     Android开源图表库(XCL-Charts is a free charting library for Android platfo ...

  3. Android开源图表库XCL-Charts版本号公布及展示页

    XCL-Charts V2.1 Android开源图表库(XCL-Charts is a free charting library for Android platform.) XCL-Charts ...

  4. XCL-Charts图表库简要教程及常见问题

    这个Andriod图表库项目从开始至现在,热情消耗几近殆尽.还好已基本实现我想做的那些东西.趁还剩下点兴趣,把一些点非常简单的归纳一下. 所支持的图表类型: 基类                   ...

  5. android 开源图表库MPChart最简单使用方法示例教程Demo--折线图 柱状图

    转载请注明本文出处:http://blog.csdn.net/wingichoy/article/details/50428246 MPChart是android上一款强大的图表开源库,他可以轻松的绘 ...

  6. android 优秀图表库之MPAndroidChart

    MPAndroidChart 1.在项目当中很多时候要对数据进行分析就要用到图表,在gitHub上有很多优秀的图表开源库,这里就简单介绍一下MPAndroidChart. 他可以实现图表的拖动,3D, ...

  7. android开源图表库MPAndroidChart(曲线图、直方图、饼状图)

    github地址:https://github.com/PhilJay/MPAndroidChart 添加依赖: Add the following to your project level bui ...

  8. android 第三方 图表

    1.XCL-Charts 直接利用Canvas api画出图形,各有好处. XCL-Chart尽量把图的绘制逻辑封装在类中,而把绘制相关的各 个元素开放出来,目的是在保证开发效率的同时,给程序员足够多 ...

  9. Android进阶笔记02:Android 网络请求库的比较及实战(二)

    一.Volley        既然在android2.2之后不建议使用HttpClient,那么有没有一个库是android2.2及以下版本使用HttpClient,而android2.3及以上版本 ...

随机推荐

  1. SpringCloud教程 | 第十二篇: 断路器监控(Hystrix Dashboard)

    版权声明:本文为博主原创文章,欢迎转载,转载请注明作者.原文超链接 ,博主地址:http://blog.csdn.net/forezp. http://blog.csdn.net/forezp/art ...

  2. 阿里maven镜像服务器配置

    把下面的配置复制到 .m2/settings.xml配置文件中. <?xml version="1.0" encoding="UTF-8"?> &l ...

  3. Python中实现装饰模式的三种方式

    功能目标 编写一个可以打印被装饰函数名称.执行时间.内存地址得装饰器 前置依赖包 import time import functools from decorator import decorato ...

  4. Android 进阶13:几种进程通信方式的对比总结

    不花时间打基础,你将会花更多时间解决那些不必要的问题. 读完本文你将了解: RPC 是什么 IDL 是什么 IPC 是什么 Android 几种进程通信方式 如何选择这几种通信方式 Thanks RP ...

  5. 使用Oracle 11g新特性 Active Database Duplication 搭建Dataguard环境

    Duplication Database 介绍 Duplicate database可以按照用途分为2种: duplicate database(复制出一个数据库) duplicate standby ...

  6. 51nod 2006 飞行员配对

    第二次世界大战时期,英国皇家空军从沦陷国征募了大量外籍飞行员.由皇家空军派出的每一架飞机都需要配备在航行技能和语言上能互相配合的2名飞行员,其中1名是英国飞行员,另1名是外籍飞行员.在众多的飞行员中, ...

  7. homebrew的安装与使用

    homebrew的安装:http://jingyan.baidu.com/article/fec7a1e5ec30341190b4e7e5.html 引用segfaultment上面的回答 没这个说法 ...

  8. Object.prototype.hasOwnProperty()

    hasOwnProperty() 方法会返回一个布尔值,指示对象是否具有指定的属性作为自身(不继承)属性. 语法 obj.hasOwnProperty(prop) 参数 prop 要检测的属性  字符 ...

  9. MDK中STM32使用Printf函数详细解析【转载】

    在用MDK调试STM32板子串口时,为了方便串口调试,调用了printf()函数,用Keil仿真是,串口不能正确的输出,软件仿真时,总是卡在那 里.有点纳闷,然后调用USART_SendData()函 ...

  10. bzoj 3230 相似子串——后缀数组

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3230 作出后缀数组,从 LCP 看每个位置对于本质不同子串的贡献,而且他们已经按前面部分排好 ...