![](https://csdnimg.cn/release/download_crawler_static/86352603/bg3.jpg)
第1章 我要记账 APP 开发
1.1 软件需求及功能分析
Gitee 网址:https://gitee.com/xu_linyi/MyPocketBook
“我要记账”app 是为了满足记账需求而设计实现的,需要实现新增、编辑、删除账目数据的基
本功能,并对收入和支出有汇总显示功能。App 的主题颜色是蓝色和白色,整体是极简风格。
一条账目数据包括:账目所属的类型(支出/收入)、具体的账目用途或者进账来源、账目发生
的具体日期、账目金额,以及所属分类及其对应图标。对应地,在添加和编辑数据时,这些选项都
要可选以及可进行编辑修改,对应修改之后要能正确反馈到首页显示的账目列表中。所有的数据都
要能够保存在 Android 手机内存中,下次启动 app 要显示出原有的账目信息。
主界面中要包含基本的统计数据,包括收入和支出汇总、账目明细列表。在账目列表中每一项
显示的格式依次为分类图标、用途和账目日期,右侧为具体的金额开支情况,单位为元。长按每一
项数据,可以弹出上下文菜单,选择对该项的操作,可选操作要有添加、编辑、删除。其中,“添加”
操作是在对应项数据上面增加新数据,“编辑”操作为修改该账目的某些具体数据,“删除”操作为
删除该项数据。其中删除操作需要先询问用户,得到确认之后再进行操作。在账目列表的上方是对
所有已录入的账目数据的统计,分为“支出”和“收入”,当某个账目数据进行编辑修改或者添加后,
对应的汇总信息需要更新显示。
输入的界面输入项分别为日期、用途、账目金额和分类。其中日期默认为当天日期,可以自行
修改,通过输入特定格式文本来进行日期设定,文本输入部位需要有相应的文本提示。常用的账目
输入项要有初始值,方便用户创建账目。
刚进入界面时没有数据项,需要有增加账目数据的选项,在右下角显示一个浮动按钮,点击之
后可以添加一条数据。在主界面点击编辑或者新增数据后,需要跳转到新的界面进行编写数据,并
将编辑好的数据返回到 MainActivity 更新页面。当页面上已经有数据的时候,再点击浮动按钮添加
数据时,应将新增的数据放置在账目列表最上方。
1.2 Activity 设计
程序一共实现了两个 Activity,也就是有两个界面,一个为启动界面 MainActivity,用于查看显
示编辑好的账目数据以及收入支出的情况,另一个是普通界面 AccountInputAcitivity,用于输入账目
各项数据,并反馈到 MainActivity 是页面更新。
MainAcitivity 整体是垂直线性布局,嵌套了一个水平线性布局和一个约束布局。水平线性布局
放置的是收入和支出的显示 TextView,两个 TextView 分别占页面宽度的一半,字体相对大一些,
标明收入和支出的总金额。约束布局放的是 RecyclerView 和 FloatingActionButton,将浮动按钮通过
约束布局约束在 RecyclerView 的右下角。布局文件中的 View 和 Button 都设置对应的 id,以便在代
码中将指定内容显示在上面。
对于 RecyclerView 的 ViewHolder,采用水平线性布局。最左边放置分类图标,接着放置两个
TextView,上方显示账目描述,也就是“用途/来源”,最右边是账目的实际金额显示 TextView,需
根据“收入/支出”的账目类型以及“金额”得到数值,正值表示收入,负值表示支出。
AccountInputActivity 整体也是一个垂直线性布局,嵌套了若干个线性布局。包含多个输入项和
TextView 和 EditText,还有对应各个分类的 ImageView 图标和 TextView 文本提示。布局的下方有
“确定”和“取消”按钮,对应编辑账目完成和退出编辑。