安卓记账APP的开发思路详解

     最近刚完成了一个安卓的记账软件,有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很深,不光是对线程的操作,还有对数据的操作,我也仅仅是入门而已,就不在这误人子弟了,网上有很多大神写的文章讲的很好,看个两三遍就能懂了。同样,例:

@Override
    public 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>>() {
                    @Override
                    protected void onSuccees(List<TotalBill> bBills) throws Exception {
                        listener.onSuccess(BillUtils.packageDetailList(bBills));
                    }

                    @Override
                    protected 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上的加星啊啊啊啊啊!!!!

  • 32
    点赞
  • 98
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值