Android使用图表库简单教程
经常要用到统计数据这个功能,要直观的显示出来,最好还是用图表。自己弄也麻烦,所以用了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使用图表库简单教程的更多相关文章
- 我的Android进阶之旅------>【强力推荐】Android开源图表库XCL-Charts版本发布及展示页
因为要做图表相关的应用,后来百度发现了一个很好的Android开源图表库(XCL-Charts is a free charting library for Android platform.) 下面 ...
- Android开源图表库介绍
XCL-Charts XCL-Charts V1.8 Android开源图表库(XCL-Charts is a free charting library for Android platfo ...
- Android开源图表库XCL-Charts版本号公布及展示页
XCL-Charts V2.1 Android开源图表库(XCL-Charts is a free charting library for Android platform.) XCL-Charts ...
- XCL-Charts图表库简要教程及常见问题
这个Andriod图表库项目从开始至现在,热情消耗几近殆尽.还好已基本实现我想做的那些东西.趁还剩下点兴趣,把一些点非常简单的归纳一下. 所支持的图表类型: 基类 ...
- android 开源图表库MPChart最简单使用方法示例教程Demo--折线图 柱状图
转载请注明本文出处:http://blog.csdn.net/wingichoy/article/details/50428246 MPChart是android上一款强大的图表开源库,他可以轻松的绘 ...
- android 优秀图表库之MPAndroidChart
MPAndroidChart 1.在项目当中很多时候要对数据进行分析就要用到图表,在gitHub上有很多优秀的图表开源库,这里就简单介绍一下MPAndroidChart. 他可以实现图表的拖动,3D, ...
- android开源图表库MPAndroidChart(曲线图、直方图、饼状图)
github地址:https://github.com/PhilJay/MPAndroidChart 添加依赖: Add the following to your project level bui ...
- android 第三方 图表
1.XCL-Charts 直接利用Canvas api画出图形,各有好处. XCL-Chart尽量把图的绘制逻辑封装在类中,而把绘制相关的各 个元素开放出来,目的是在保证开发效率的同时,给程序员足够多 ...
- Android进阶笔记02:Android 网络请求库的比较及实战(二)
一.Volley 既然在android2.2之后不建议使用HttpClient,那么有没有一个库是android2.2及以下版本使用HttpClient,而android2.3及以上版本 ...
随机推荐
- Caffe初试
1.基本概念 Caffe是一个比较流行的神经网络框架,它支持C++.Python等语言,容易上手,但是代码貌似不怎么好读,等有空我...;) 2.Windows10下的部署 我把我Windows下的编 ...
- LeetCode OJ:Longest Common Prefix(最长公共前缀)
Write a function to find the longest common prefix string amongst an array of strings. 求很多string的公共前 ...
- 如何在win7下装ubuntu雙系統
如何在win7下装ubuntu(硬盘版安装) 1)首先还是分区,在计算机上右键--管理--磁盘管理 装Ubuntu分配的硬盘大小最好是(20G以上)不要太小,这里请注意,ubuntu和windows文 ...
- elasticsearch聚合案例--分组、求最大值再求最大值的均值
一.需求 A.B.C代表3个用户,第二列代表各自的得分,求A.B.C的最好成绩以及A.B.C最好成绩的均值 A 10 A 11 A 13 B 11 B 11 B 12 C 10 C 10 C 11 C ...
- will-change 提高页面滚动、动画等渲染性能
一.先来看一个例子 视差滚动现在不是挺流行的嘛,然后Chris Ruppel当其使用background-attachment: fixed实现背景图片不随滚动条滚动而滚动效果的时候,发现,页面的绘制 ...
- 同一局域网环境下的arp欺骗和中间人攻击(mac)
最近读了一篇有关arp欺骗和中间人攻击的文章,于是乎就想着自己实现一下,顺便验证下微信在回话劫持后的安全性. 1.本机环境 Macbook Air:OS X 10.11 El Captain 2.推荐 ...
- GlassFish的安装与使用(Windows)
前言 Glassfish是一款由Sun公司开发的(现由甲骨文公司赞助)开源的免费的应用服务器,它既是EJB容器也是WEB容器.Glassfish支持最新版的Java EE标准. Glassfish与T ...
- 配置linux下面python的开发环境
1.首先安装Python开发环境 http://blog.csdn.net/testcs_dn/article/details/51253365 2.安装django开发环境 http://blog. ...
- JAVA框架--hibernate、struts2、spring
JAVAEE——spring01:介绍.搭建.概念.配置详解.属性注入和应用到项目 JAVAEE——struts2_04:自定义拦截器.struts2标签.登陆功能和校验登陆拦截器的实现 JA ...
- aspupload ,在winows server 2008 下无法使用
aspupload ,在winows server 2008 下无法使用.求助解决办法 2014-01-12 13:31 goolean | 浏览 775 次 操作系统 aspupload64位,安装 ...