也是说最近买了个电子称,想写个小程序来记录下减肥的成果。输入体重,程序就自动记录并把体重随时间变化的曲线图画出来。
首先是界面设计。如上图所示,就一个界面,内含三个Tab。这个我是照着http://www.eoeandroid.com/thread-1035-1-1.html做的。他把三个Tab的布局都写在同一个XML文件(最外层必须是FrameLayout)里,然后调用inflate方法将XML文件载入,载入之后才能使用Activity.findViewById()来获取其中的界面元素。
第二步是找一个画曲线的工具。这里我选择了AChartEngine。上网去下载jar包和例子,看有没有横坐标是时间的timeChart。果然在demo中找到了ProjectStatusChart.java,看到它横坐标的类型是Date类型,仅仅是日期吗?还能更精确点么?运行下查看这个类型的值,发现一串挺大的数字,是从1900年最初那一刻到现在经过的纳秒,显然够精确了。
接下来怎么把chartview加到我自己的view——第二个tab中去呢?
从AChartEngine的demo代码中看,在列表中选中一个chart,就执行该chart对应的execute函数获得一个intent 并返回,然后通过startActivity(intent)跳转到新的页面。我想要获得新的view加到当前view中,不是跳到另一个intent去啊!仔细看execute函数,它把要画的数据填充后,返回的是return ChartFactory.getTimeChartIntent(…),幸好ChartFactory还有一个参数一样的方法getTimeChartView,返回类型是GraphicalView。这样就可以将GraphicalView绘制在想要的地方了:
修改execute的返回类型为GraphicalView,在需要绘制图片的地方加上:
- myChart= new ProjectStatusChart();
- LinearLayout layout =(LinearLayout) findViewById(R.id.linearLayout2);
- GraphicalView chartView=myChart.execute(this);
- if(chartView!=null)
- layout.addView((View)chartView, newLayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
myChart= new ProjectStatusChart(); LinearLayout layout =(LinearLayout) findViewById(R.id.linearLayout2); GraphicalView chartView=myChart.execute(this); if(chartView!=null) layout.addView((View)chartView, newLayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
画图的问题解决了,但例子中的数据都是静态的,怎样在android sqlite3数据库中存取时间、体重数据呢?经过艰苦卓绝的研究,发现SQLite采用的是弱类型的字段,任何列能存储任意类型的数据,虽说看上去只支持NULL、INTEGER、REAL、TXT还有BLOB这五种类型,实际上常见SQL类型都支持。
来自create table语句或者强转语句的范例类型名 |
产生的近似 |
用于决定近似的规则 |
INT |
INTEGER |
1 |
CHARACTER(20) |
TEXT |
2 |
BLOB |
NONE |
3 |
REAL |
REAL |
4 |
NUMERIC |
NUMERIC |
5 |
下面详细介绍在android的sqlite中存取DATETIME类型的方法。
创建表时:
- String sql="create table tb3(idINTEGER PRIMARY KEY,timestamp DATETIME DEFAULT CURRENT_TIMESTAMP, weight DOUBLE)";
String sql="create table tb3(idINTEGER PRIMARY KEY,timestamp DATETIME DEFAULT CURRENT_TIMESTAMP, weight DOUBLE)";
timestamp字段缺省值是当前时间(基于GMT而不是local time)。这问题导致了记录的时间跟本地实际时间有几个小时的差距,费了我好大工夫才找到解决方法: 存的时候不变,取的时候根据自己所在时区调整时间。这是sqlite中的一个函数datetime所做的工作。
读取时的方法:
- Cursor cursor = db.rawQuery("selectweight,datetime(timestamp,'localtime') from tb3",null);
- String myDate =cursor.getString(cursor.getColumnIndex("datetime(timestamp,'localtime')"));
- SimpleDateFormat format = newSimpleDateFormat("yyyy-MM-dd HH:mm");
- Date date = format.parse(myDate);
Cursor cursor = db.rawQuery("selectweight,datetime(timestamp,'localtime') from tb3",null); String myDate =cursor.getString(cursor.getColumnIndex("datetime(timestamp,'localtime')")); SimpleDateFormat format = newSimpleDateFormat("yyyy-MM-dd HH:mm"); Date date = format.parse(myDate);
插入数据时,由于timestamp和id能自动生成,只需插入体重数据:
- ContentValues values=newContentValues();
- double nowWeight = Double.parseDouble(weightStr);
- values.put("weight", nowWeight);
- db = sqlHelper.getWritableDatabase();
- db.insert("tb3", null,values);
- db.close();
相关推荐
在Android开发中,数据可视化是十分重要的,AChartEngine是一个流行的开源库,它为开发者提供了在Android应用中绘制各种图表的能力,包括折线图、饼图、柱状图等。这篇博客“Android学习之AChartEngine折线图”将...
Android中使用AChartEngine 来绘图的demo,比google code上的demo简单易懂。相关文章请看: http://blog.csdn.net/suiyuansanren/article/details/19819437
通过查看源代码,你可以学习如何配置数据、设置图表属性以及在Activity中显示图表。这个示例是一个很好的起点,帮助你理解和实践Android中的图表绘制。 总的来说,无论选择AChartEngine还是iChartJS,理解数据结构...
在本文中,我们将深入探讨AChartEngine的核心特性和使用方法。 ### 1. AChartEngine概述 AChartEngine最初由Mihai Parparita开发,后来成为了RoboVM项目的一部分。这个库是用Java编写的,与Android兼容,适用于...
在Android开发中,AChartEngine是一个非常实用的图表库,它允许开发者轻松地在应用程序中创建各种图表,如线图、柱状图、饼图以及本文提到的仪表盘。这个"Android例子源码使用AChartEngine的仪表盘"示例项目,旨在...
aChartEngine是一个轻量级的图表库,它提供了丰富的API,使得开发者能够轻松地在Android应用中集成各种图表。该库支持多种图表类型,包括线性图(Line Chart)、散点图(Scatter Chart)、条形图(Bar Chart)等,...
android图表绘制工具,功能非常强大,几乎涵盖了所有的图表种类。 这是目前最新的版本:1.1.0 包含了3个文件: achartengine-1.1.0.jar, achartengine-1.1.0-demo-source.zip, achartengine-1.1.0-javadocs.zip ...
本篇文章将深入探讨AChartEngine的使用方法,包括基本概念、配置、图表类型以及如何在项目中集成和自定义图表。 首先,让我们了解如何在项目中添加AChartEngine依赖。在Android Studio中,可以通过在`build.gradle`...
在Android应用开发中,数据可视化是一项重要的任务,它能够帮助用户直观地理解复杂的数据信息。`achartengine`是一个强大的开源类库,专门用于在Android平台上绘制各种图表,包括折线图、趋势图和饼图等。这个库以其...
Android使用AChartEngine制作动态心电图效果
AChartEngine是一款在Android平台上用于创建各种图表的强大框架,其1.1.0版本提供了丰富的图表类型和高度自定义的功能。这个框架使得开发者能够轻松地在Android应用中集成数据可视化,使得用户可以直观地理解和分析...
通过这个Demo项目,开发者可以学习到如何在Android应用中导入和使用AChartEngine库,理解数据模型的构建,以及如何动态地更新和交互图表。此外,还可以学习如何自定义图表样式,如改变颜色、添加网格线、设置轴标签...
总的来说,"基于achartengine双Y轴动态图表Android源码"是一个很好的学习资源,可以帮助开发者快速掌握如何在Android应用中创建动态、实时的双轴图表。通过研究这个源码,开发者不仅可以了解到`achartengine`库的...
本文将深入探讨`AChartEngine`在Android图形报表中的应用,并通过提供的`AChartEngineTest`源码来解析其工作原理和使用方法。 首先,`AChartEngine`库提供了一个简洁的API,允许开发者快速构建动态和交互式的图表。...
本篇文章将深入探讨如何使用`AChartEngine`在Android应用中实现折线图的功能,并强调动态加载数据的实现。 首先,我们需要了解`AChartEngine`的基本用法。这个库提供了多种图表类型,如折线图、柱状图、饼图等。在`...
在Android应用开发中,它提供了丰富的功能,帮助开发者可视化数据,使得应用程序更加直观和交互。本教程将深入探讨Achartengine的使用,帮助初学者掌握其主要结构和方法。 首先,让我们了解Achartengine的基本概念...
在Android应用开发中,报表...总之,`achartengine`是一个功能强大且易于使用的Android图表库,它简化了在移动应用中创建和展示图表的过程。结合API文档,开发者可以快速上手,为自己的应用增添生动的数据可视化元素。
本文将深入探讨`ACHARTENGINE`在Android绘图引擎中的应用及其核心特性。 `ACHARTENGINE`是一个用Java编写的库,专为Android平台设计,支持多种类型的图表,包括折线图(LineChart)、饼图(PieChart)、柱状图(Bar...
本项目是一个有大量中文注释版的AChartEngine图标引擎源码,AChartEngine 是一个安卓系统上制作图表的框架,目前它支持如下的图表类型:range (high-low) bar chart (范围条形图)、dial chart / gauge (拨号盘/压力表...