android 项目开发

Activity及其功能

LogActivity

  • 账号密码登录
  • 记住密码
    在这里插入图片描述

MenuActivity

  • 显示了便于跳转到各个功能的图标‘
    在这里插入图片描述

SetUpActivity

  • 设置预算
  • 修改用户名和密码
    在这里插入图片描述

CategoryActivity

  • 对消费分类进行 CRUD 操作
  • 显示消费次数

在这里插入图片描述

NoteActivity

  • 记录花费金额,消费类型,备注
  • 记录日期
    在这里插入图片描述
    在这里插入图片描述

ReportActivity

  • 显示本月每天的消费总量
    在这里插入图片描述

数据库表单设计

  • 表单类型
  1. 记录表单
属性基本类型描述
idintprimary key AUTP_INCREMENT
spendfloat一笔消费金额
commentString用户的备注信息
dateint用户记录的日期
categoryCategory该次消费所属类别
cidintforeign key REFERENCES category (id)
  1. 分类表单
属性基本类型描述
idintprimary key AUTP_INCREMENT
nameString分类名字
recordsArrayList<Record>保存许多消费记录的列表
recordLenint当前消费列表中的长度
  1. 配置信息表单
属性基本类型描述
idintprimary key AUTP_INCREMENT
passwordstring密码
usernamestring用户名
preMoneystring用户预算
  • 表间关系
    在这里插入图片描述

开发依赖第三方库

MPAndroidChart

  • 简介
    由澳大利亚工程师开源,是一个强大的 android 图表库,通过简单的命令和逻辑,即可绘制精美而优秀的图表,例如折线图,饼状图,柱状图,并且支持缩放、动画和拖拽增强用户体验。
  • 个人使用情况
    在进行 reportActivity 开发的时候,例如如下代码,可以看见,作者想要绘制折线图,通过使用简单的几行命令,便成功实现了支持触控手势,设置缩放,设置推动等图表的功能。
    在这里插入图片描述
    使用该库让我不再过于关心图表的样式,而更加的关心图表中数据的组织,这里横坐标显示每天日期,纵坐标显示每日消费总量。数据组织具体是这样的,在我的数据库记录中,含有 record 表单,取出 record 表单中与横坐标相同的日期,再把相同的日期对应的 record 表单中的 spend 进行累加,即可得到每天消费情况。

LitePal

  1. 简介
    LitePal 由我国郭霖工程师开源,是一个强大的 SqLite 数据库操作工具,避免了原生 SqLite 语句的操作,适合对 SqLite 不熟悉的或者更加喜欢用 oop 的思维方式来操作数据的开发者。
  2. 个人使用情况
    由于个人比较习惯使用 SQL 语句操作 Mysql 数据库,但是在使用相同方式来操作 SqLite 数据库的时候,却由于二者数据库的差异,导致有些地方出现了未知的 bug,为了避免这种情况的发生,使用了 LitePal 提供的 SqLite 数据库操作接口,大大加快了开发速度的同时,还提高了程序的稳定性。在开发 CategoryActivity 中的 CRUD 较多,便以该 activity 作为例子,展示 LitePal 的使用。
    首先是 Category 表单,如下代码,可以看见 Category 表单就是一个类,这个类的特点是必须有私有属性,以及它们的 getter 和setter 方法,
    在这里插入图片描述
    通过 LitePal 接口即可将 Category 类转变成 SqLite 表单。下面以添加为例,来具体看一下怎么转变和操作表单的。如下代码,首先要在 xml 文件中引入新建的类 Category的映射,表示要将该类转变成 LitePal 表单。
    在这里插入图片描述
    其次,如下代码,重点关注 52 行到 56 行,52 行这里通过 Connector.getDatabase() 方法,连接 SqLite 数据库,并创建数据库 Store;然后 54 行 新建了一个 Category 对象,并设置了它的名字,由于在 LitePal 中无法直接在数据库中设置 primary key,这也是这个接口的弊端,但是想要有一个 primary key 怎么办?其实这时候没有 primary,那么可以任意选定一个属性,认为的认为它是 primary key。当然这时候要清楚,其实数据库中还是有一个自增 id 作为 primary key 的,这里是一个坑,使用的时候应该多加体会。最后 56 行一定要调用 save() 方法,这里就是表示了要在数据库中新建一个Category 表单了,没有的话,就会建立失败。
    在这里插入图片描述

部分核心功能开发详解

本项目是由多个模块组成,各个模块之间是相互依赖的,有的模块不完成,其他模块就无法工作。比如要"记一笔" 就必须要先有"消费分类数据"要"消费一览” 就必须先在设置里预先设置预算所以需要按照依赖的关系先开发一些模块,然后再是其他的。

在这里插入图片描述

  • + onCreateOptionsMenu( menu: Menu): boolean,该方法动态的实现载入 view
    + onOptionItemSelected(item: MenuItem): Boolean,该方法要实现在每个 activity 都可以进入设置和返回主菜单的功能
    在这里插入图片描述
  • + onDraw(): void,该方法实现绘画 listView 的 Item。在 onResume 状态的时候要调用这个方法。因为每次要进行 CRUD 的时候,ClassifyActivity 都要进入 onStop状态,所以每次退出 AlertDialog 设置完了 ListView 的 Item 中需要更新的值的时候,进入了 ClassifyAcitivity 的 onResume 状态的时候,自动调用 onDraw 方法,就将 ListViw 更新,实现了异步更新的效果。
    在这里插入图片描述
  • + show_date_dialog( dateButton: Button): void,该方法实现点击按钮时,会动态弹出 DatePicterDialog ,也就是日历控件,当选择了一个日期后,会调用日期的回调响应事件,返回一个日期数值到 按钮的 text 。
    在这里插入图片描述
  • - setCurPercent(percent: int): void,该方法实现了调用线程来进行异步刷新操作,并且可以控制刷新的时间
    在这里插入图片描述

结尾演示

视频略

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值