`

(Android学习笔记二)AChartEngine的使用以及在sqlite中存取DATETIME!

 
阅读更多

也是说最近买了个电子称,想写个小程序来记录下减肥的成果。输入体重,程序就自动记录并把体重随时间变化的曲线图画出来。
        

 

       首先是界面设计。如上图所示,就一个界面,内含三个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,在需要绘制图片的地方加上:

 

  1. myChart= new ProjectStatusChart();  
  2. LinearLayout layout =(LinearLayout) findViewById(R.id.linearLayout2);  
  3. GraphicalView chartView=myChart.execute(this);  
  4. if(chartView!=null)  
  5.    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
TINYINT
SMALLINT
MEDIUMINT
BIGINT
UNSIGNED BIG INT
INT2
INT8

INTEGER

1

CHARACTER(20)
VARCHAR(255)
VARYING CHARACTER(255)
NCHAR(55)
NATIVE CHARACTER(70)
NVARCHAR(100)
TEXT
CLOB

TEXT

2

BLOB
no datatype specified

NONE

3

REAL
DOUBLE
DOUBLE PRECISION
FLOAT

REAL

4

NUMERIC
DECIMAL(10,5)
BOOLEAN
DATE
DATETIME

NUMERIC

5

      下面详细介绍在android的sqlite中存取DATETIME类型的方法。

      创建表时:

 

  1. 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所做的工作。

 

     读取时的方法:

 

  1. Cursor cursor = db.rawQuery("selectweight,datetime(timestamp,'localtime') from tb3",null);  
  2. String myDate =cursor.getString(cursor.getColumnIndex("datetime(timestamp,'localtime')"));  
  3. SimpleDateFormat format = newSimpleDateFormat("yyyy-MM-dd HH:mm");  
  4. 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能自动生成,只需插入体重数据:

 

  1. ContentValues values=newContentValues();   
  2. double nowWeight = Double.parseDouble(weightStr);  
  3. values.put("weight", nowWeight);   
  4. db = sqlHelper.getWritableDatabase();  
  5. db.insert("tb3"null,values);   
  6. db.close();  
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    Android学习之AChartEngine折线图

    在Android开发中,数据可视化是十分重要的,AChartEngine是一个流行的开源库,它为开发者提供了在Android应用中绘制各种图表的能力,包括折线图、饼图、柱状图等。这篇博客“Android学习之AChartEngine折线图”将...

    Android中使用AChartEngine 来绘图demo

    Android中使用AChartEngine 来绘图的demo,比google code上的demo简单易懂。相关文章请看: http://blog.csdn.net/suiyuansanren/article/details/19819437

    android折线图(AChartEngine和ichartjs)

    通过查看源代码,你可以学习如何配置数据、设置图表属性以及在Activity中显示图表。这个示例是一个很好的起点,帮助你理解和实践Android中的图表绘制。 总的来说,无论选择AChartEngine还是iChartJS,理解数据结构...

    android 图表引擎AChartEngine

    在本文中,我们将深入探讨AChartEngine的核心特性和使用方法。 ### 1. AChartEngine概述 AChartEngine最初由Mihai Parparita开发,后来成为了RoboVM项目的一部分。这个库是用Java编写的,与Android兼容,适用于...

    Android例子源码使用AChartEngine的仪表盘

    在Android开发中,AChartEngine是一个非常实用的图表库,它允许开发者轻松地在应用程序中创建各种图表,如线图、柱状图、饼图以及本文提到的仪表盘。这个"Android例子源码使用AChartEngine的仪表盘"示例项目,旨在...

    Android报表库aChartEngine 横轴为时间曲线图表

    aChartEngine是一个轻量级的图表库,它提供了丰富的API,使得开发者能够轻松地在Android应用中集成各种图表。该库支持多种图表类型,包括线性图(Line Chart)、散点图(Scatter Chart)、条形图(Bar Chart)等,...

    android图表绘制工具achartengine-1.1.0

    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的使用方法,包括基本概念、配置、图表类型以及如何在项目中集成和自定义图表。 首先,让我们了解如何在项目中添加AChartEngine依赖。在Android Studio中,可以通过在`build.gradle`...

    android图表绘制类库 achartengine

    在Android应用开发中,数据可视化是一项重要的任务,它能够帮助用户直观地理解复杂的数据信息。`achartengine`是一个强大的开源类库,专门用于在Android平台上绘制各种图表,包括折线图、趋势图和饼图等。这个库以其...

    Android使用AChartEngine制作动态心电图效果

    Android使用AChartEngine制作动态心电图效果

    android图表achartengine-1.1.0 Demo

    AChartEngine是一款在Android平台上用于创建各种图表的强大框架,其1.1.0版本提供了丰富的图表类型和高度自定义的功能。这个框架使得开发者能够轻松地在Android应用中集成数据可视化,使得用户可以直观地理解和分析...

    Achartengine0.6-Demo

    通过这个Demo项目,开发者可以学习到如何在Android应用中导入和使用AChartEngine库,理解数据模型的构建,以及如何动态地更新和交互图表。此外,还可以学习如何自定义图表样式,如改变颜色、添加网格线、设置轴标签...

    基于achartengine双Y轴动态图表Android源码

    总的来说,"基于achartengine双Y轴动态图表Android源码"是一个很好的学习资源,可以帮助开发者快速掌握如何在Android应用中创建动态、实时的双轴图表。通过研究这个源码,开发者不仅可以了解到`achartengine`库的...

    android图形报表demo源码(AChartEngine)

    本文将深入探讨`AChartEngine`在Android图形报表中的应用,并通过提供的`AChartEngineTest`源码来解析其工作原理和使用方法。 首先,`AChartEngine`库提供了一个简洁的API,允许开发者快速构建动态和交互式的图表。...

    Android画图之AChartEngine折线图

    本篇文章将深入探讨如何使用`AChartEngine`在Android应用中实现折线图的功能,并强调动态加载数据的实现。 首先,我们需要了解`AChartEngine`的基本用法。这个库提供了多种图表类型,如折线图、柱状图、饼图等。在`...

    Achartengine

    在Android应用开发中,它提供了丰富的功能,帮助开发者可视化数据,使得应用程序更加直观和交互。本教程将深入探讨Achartengine的使用,帮助初学者掌握其主要结构和方法。 首先,让我们了解Achartengine的基本概念...

    android报表 achartengine

    在Android应用开发中,报表...总之,`achartengine`是一个功能强大且易于使用的Android图表库,它简化了在移动应用中创建和展示图表的过程。结合API文档,开发者可以快速上手,为自己的应用增添生动的数据可视化元素。

    android 绘图引擎 achartengine

    本文将深入探讨`ACHARTENGINE`在Android绘图引擎中的应用及其核心特性。 `ACHARTENGINE`是一个用Java编写的库,专为Android平台设计,支持多种类型的图表,包括折线图(LineChart)、饼图(PieChart)、柱状图(Bar...

    Android例子源码基于achartengine引擎的中文注释图表

    本项目是一个有大量中文注释版的AChartEngine图标引擎源码,AChartEngine 是一个安卓系统上制作图表的框架,目前它支持如下的图表类型:range (high-low) bar chart (范围条形图)、dial chart / gauge (拨号盘/压力表...

Global site tag (gtag.js) - Google Analytics