最近刚完成了一个安卓的记账软件,有JAVA的基础,第一次接触安卓,边学习安卓边做项目,大概花了两个月的时间(别怕,其实只要1个月左右就可以了,前期老去浪),将项目实现了,纵观整个过程,发现安卓的插件是真好用,AS真好用(eclipse是什么??真香!!),下面介绍一下做一个完整的APP应该有的步骤。

APP的下载链接在文末哦。

一.基本功能

   按我个人的习惯(当然每个人习惯不同,从自己的角度来思考会让思路更清晰)首先考虑的是APP的基本功能,记账软件嘛,当然是记账与遍历,其实就是增删改查,那么基础功能就有了,就是账单的增删改查,再加上注册登陆功能,一个APP应有的模型就有了。

二.业务流程图

接下来是对项目的设计了,你希望你的APP是个什么样子?因为从一开始就打算账单有同步的功能,即不同手机上写的账单都可以同步到一块儿,所以在设计业务的时候,登陆是必须要优先进行的,换个说法,不登陆就不能进入APP,就不能使用

登陆成功过后应该主界面应该是怎样的?按照市面上的记账软件界面,常用的是有三个fragment,第一个fragment也就是第一个界面,显示的是账单的遍历以及对账单的操作功能,第二个fragment一般是账单的图表,折线图啊饼状图啊之类的,第三个fragment就多了,为了用户着想(其实是怕麻烦),第三个fragment上是用户界面,参考一下微信的“”界面。

好了,这样基本的流程就有了,接下来就是写框架了~

三.MVP框架

学习安卓的过程中,发现mvp框架应用范围十分广,于是就学习了MVP框架,这里就不详细介绍了,网上有很多关于MVP的框架,挑俩好的看个三四遍就能懂了,写几个功能就能上手,其实还是很简单的,MVP框架的好处十分多,很推荐使用。

四.插件

既然写框架了,就要知道写框架的意义你说是不,类似于MVP的框架按我认为只有一个作用,那就是数据传导,将你想要的数据从数据库或者是网上打包好,然后传递到View的实现类中,这就是框架的意义。

既然需要数据,那就需要基类,定义好pojo类,这里就是数据库表的设计了,从记账软件的角度来看,需要在数据库存的表不多,因为主要是对数据的整合

  • Person类,储存了用户的所有个人信息。
  • TotalBill类,每个账单的数据保存,一个账单就是 一条数据。
  • ShareBill类,这个不用说,就是保存在服务器上的账单。
  • BillSort类,保存账单肯定有账单的类型,支出是买了皮肤还是买了球鞋亦或是买了佛冷(赞啊)这是不一样的,收入是发的工资还是生活费这也是不一样的,所以这个类的作用就是保存账单的分类,顺便提一句,账单的分类肯定要有相关的图片显示,图片的加载会导致APP变卡,所以需要进行优化。

以上,是需要保存在数据库中的类,还有别的类也是需要定义用来保存特定的数据的,这个在源码中已经写了。说了这么多,请你抬头看看这节的标题,对,插件,这我就要给你推荐一个十分好用数据库的插件了:greendao。

greendao会根据你的基类(pojo类)生成操作方法,也是十分好用。例:

    public Observable<List<TotalBill>> getTotalBillByUserIdWithYM2(String id, String year, String month) {String startStr = year + "-" + month + "-01 00:00:00";Log.e("Local", "getTotalBillByUserIdWithYM2: "+startStr );Date date = DateUtils.str2Date(startStr);Date endDate = DateUtils.addMonth(date, 1);QueryBuilder<TotalBill> queryBuilder = mSession.getTotalBillDao().queryBuilder().where(TotalBillDao.Properties.Userid.eq(id)).where(TotalBillDao.Properties.Crdate.between(DateUtils.getMillis(date), DateUtils.getMillis(endDate))).where(TotalBillDao.Properties.Version.ge(0)).orderDesc(TotalBillDao.Properties.Crdate);return queryListToRx(queryBuilder);}

目前数据库完成了,接下来要干啥来着,好象是没有头绪了,缕一缕,emmmmm....刚从数据库取出来数据了,emmmm...要把数据放到页面上显示出来,好像没啥事了啊,但细细一想,,这好像不是我想要的数据啊。

没错了,接下来的一步就是算法了,关于数据的整合,想一想,如果有1000个账单,那么在对账单数据进行整合的时候所花费的时间需要多久(特么我怎么知道),所以呢,应该进行异步咯,好,在看一看标题,没错,还是插件!推荐一个十分好用的异步插件:rxjava。

rxjava很深,不光是对线程的操作,还有对数据的操作,我也仅仅是入门而已,就不在这误人子弟了,网上有很多大神写的文章讲的很好,看个两三遍就能懂了。同样,例:

@Overridepublic void getMonthDetailBills(String id, String year, String month) {LocalRepository.getInstance().getTotalBillByUserIdWithYM2(id, year, month).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new BaseObserver<List<TotalBill>>() {@Overrideprotected void onSuccees(List<TotalBill> bBills) throws Exception {listener.onSuccess(BillUtils.packageDetailList(bBills));}@Overrideprotected void onFailure(Throwable e, boolean isNetWorkError) throws Exception {listener.onFailure(e);}});}

再推荐几个会用到的插件:

  • eventBus :组件之间的通信非非非非非常好用,好用到你合不拢腿
  • williamChart:绘图软件,但是网上的讲解极少,可以参考我的源码去用
  • butterKnife:让你从此脱离findViewById的苦海,注解,然后定义,就这么简单
  • splash:APP启动动画,在动画播放的过程中可以做一万件事
  • bmob服务器:免费的,操作简单的服务器
  • 最后,前台界面方面推荐使用viewPager和fragment结合使用哦。

github地址:https://github.com/mengXTXTXT666/bill

伸手党们记得给点赞和github上的加星啊啊啊啊啊!!!!

安卓记账APP的开发思路详解相关推荐

  1. 摄影师教你开发小程序,「龟斯的风光摄影助手」的设计与开发思路详解

    作者|陆尧 作为一名风光摄影师,会拍摄一场壮丽的日出日落是基本功.精力充沛一点的,在日落之后便会继续守候,期待能有漫天繁星.在这看似简单的拍摄计划背后,实践起来,一定会遇到几个问题: 应该去哪里拍摄? ...

  2. android禁止下拉刷新,Android开发之无痕过渡下拉刷新控件的实现思路详解

    相信大家已经对下拉刷新熟悉得不能再熟悉了,市面上的下拉刷新琳琅满目,然而有很多在我看来略有缺陷,接下来我将说明一下存在的缺陷问题,然后提供一种思路来解决这一缺陷,废话不多说!往下看嘞! 1.市面一些下 ...

  3. 小区物业app开发功能详解!

    小区物业app开发功能详解!小区物业app开发通常整合了物业服务.物业维修.物业管理和物业缴费等功能,物业管理通过app开发去收集业主的信息,再通过app去告诉业主每个月最常见的水电费.管理费等信息, ...

  4. Pinterest 3.0 for iOS设计过程——升级iOS7设计思路详解

    Pinterest 3.0 for iOS设计过程--升级iOS7设计思路详解 时间2013-12-11 11:39:31  苹果开发中文站 原文  http://www.cocoachina.com ...

  5. Flutter完整开发实战详解(二、 快速开发实战篇) | 掘金技术征文

     作为系列文章的第二篇,继<Flutter完整开发实战详解(一.Dart语言和Flutter基础)>之后,本篇将为你着重展示:如何搭建一个通用的Flutter App 常用功能脚手架,快速 ...

  6. mysql 点赞数据库设计_基于redis实现的点赞功能设计思路详解

    点赞其实是一个很有意思的功能.基本的设计思路有大致两种, 一种自然是用mysql等 数据库直接落地存储, 另外一种就是利用点赞的业务特征来扔到redis(或memcache)中, 然后离线刷回mysq ...

  7. 《Unity 4 3D开发实战详解》一6.7 物理引擎综合案例

    本节书摘来异步社区<Unity 4 3D开发实战详解>一书中的第6章,第6.7节,作者: 吴亚峰 , 杜化美 , 张月霞 , 索依娜 责编: 张涛,更多章节内容可以访问云栖社区" ...

  8. solidworks api二次开发实例详解_Solidworks开发语言对比及分析

    很多初学Solidworks二次开发的同学,也许都会纠结使用何种语言进行二次开发.对于Solidworks二次开发的语言,官方有VBA,VB.NET,C#以及C++,四种语言. 用户通常会有如下疑问, ...

  9. Java编程配置思路详解

    Java编程配置思路详解 SpringBoot虽然提供了很多优秀的starter帮助我们快速开发,可实际生产环境的特殊性,我们依然需要对默认整合配置做自定义操作,提高程序的可控性,虽然你配的不一定比官 ...

最新文章

  1. Java开发字符串JSON处理
  2. 支持html5浏览器速查
  3. 马宁的Windows Phone 7开发教程(3)——XNA下使用MessageBox和软键盘
  4. 詹金斯搭建_詹金斯的Maven报告
  5. 8号团队-团队任务三:每日立会(2018-11-27)
  6. 面试题 03.04. 化栈为队/面试题09. 用两个栈实现队列/232. 用栈实现队列
  7. 教你如何从0到1实现组件化架构
  8. 关于网站购物车的实现的思考
  9. python爬虫:bs4搜索文档树
  10. 负载均衡常见问题之会话保持-粘滞会话(Sticky Sessions)
  11. 华罗庚数学竞赛如何报名?
  12. java的serialization_Java序列化(Serialization) 机制
  13. 自我调整【管理学之十三】
  14. RabbitMQ安装+配置远程访问+集群(windows)
  15. 51单片机中哪些SFR可以位寻址?
  16. 计算机专业测试题选择题,计算机专业测试试习题及答案.docx
  17. MATLAB函数downsample的用法详解
  18. 学了python不知干啥?爬爬虫! (1)保存网络图片
  19. android+6.0+通讯录,Android6.0的通讯录获取
  20. 问题 B: 沈老师的岛

热门文章

  1. [AirFlow]AirFlow使用指南一 安装与启动
  2. Moonbeam社区论坛:一个致力于社区讨论、提案、和反馈的空间
  3. 【带你装逼带你飞】吐血总结了这五大常用算法技巧,让你在同事/面试官面前惊艳全场!
  4. [Pandas 学习笔记] - No.1 pandas学习笔记
  5. Python ❀ 求固定位置自然数最大最小值
  6. BZOJ.2246.[SDOI2011]迷宫探险(DP 记忆化搜索 概率)
  7. 图像识别应用:识别出做过标记的单元格
  8. 移动机器人的常见底盘形状
  9. python鸢尾花分类_基于python的鸢尾花二分类
  10. 模拟大乐透与双色球开奖