天天记账

记账易主要完成的功能列表为:

注册登录 记录每一笔数据,类似电子消费 奖学金收入,将每一笔花费都记录下来,按照年月,进行统计分类,条理清晰的完成日常记账管理。同时有图表和线条方式,展示我们的收入支出情况,更直观的来看到我们的日常开销情况。支持锁屏模式,让用户可以设置密码,如此设定值之后,我们在进入应用的时候,就需要先输入密码,否则不会进入主界面,保护用户的信息。我们为了更方便的记账,支持语音记账,让不想动手书写的人群,有个更方便的方式,来完成记账。语音依据逗号,进行拆分,拆分的格式是产品名,和花费或者收入的钱数,我们会进行管理,统计。同时,有时方便用户想去电脑查看记账信息,我们提供导出我们的数据,可以在电脑上用对应工具打开,查阅。

记账易主要完成的功能列表为:

注册登录 记录每一笔数据,类似电子消费 奖学金收入,将每一笔花费都记录下来,按照年月,进行统计分类,条理清晰的完成日常记账管理。同时有图表和线条方式,展示我们的收入支出情况,更直观的来看到我们的日常开销情况。支持锁屏模式,让用户可以设置密码,如此设定值之后,我们在进入应用的时候,就需要先输入密码,否则不会进入主界面,保护用户的信息。我们为了更方便的记账,支持语音记账,让不想动手书写的人群,有个更方便的方式,来完成记账。语音依据逗号,进行拆分,拆分的格式是产品名,和花费或者收入的钱数,我们会进行管理,统计。同时,有时方便用户想去电脑查看记账信息,我们提供导出我们的数据,可以在电脑上用对应工具打开,查阅。
这里写图片描述
具体的内容如下:

我们配置了一个 myApplication ,这个主要是需要完成系统级别的信息初始化,这里完成了使用LiteOrmDBUtil.createDb 创建了一个数据库 创建一个用户信息 ,然后获取下是否启动了锁屏模式

具体代码:

public class myApplication extends Application {
public boolean isLocked = false;
private UserInfoHelp useInfo;

@Override
public void onCreate() {
super.onCreate();
LiteOrmDBUtil.createDb(this, “account”);

useInfo = new UserInfoHelp(this); 
isLocked = useInfo.getLock(); 

}

public boolean getLock() {
return isLocked;
}

public void setLock(boolean islock) {
isLocked = islock;
}
}

AnimationActivity 第一个界面,用于实现我们的展示一个logo界面,使用渐变过程,显示一个过场。

在动画完成后,依据当前环境状态,进行启动不同界面。
如果没有注册过,会进入注册界面。
如果注册过了,如果有锁屏模式启动,则进入锁屏模式界面,输入密码后进入主界面
如果是其他,则直接进入主界面了。
代码如下:
private void startMainActivity() {
//如果没有登陆过,则先进入登陆界面
if (getUserInfo().getIsLogout().equals(“0”)) {
Intent intent = new Intent(this, LoginActivity.class);
startActivity(intent);
// 结束当前界面
AnimationActivity.this.finish();
}
// 如果当前是有锁屏设置密码了,启动锁屏界面
else if (getUserInfo().getLock()) {
Intent intent = new Intent(this, LockActivity.class);
startActivity(intent);
// 结束当前界面
AnimationActivity.this.finish();
// 否则,启动主界面
} else {
Intent startMainActivity = new Intent(AnimationActivity.this,
MainActivity.class);
startMainActivity.setAction(Intent.ACTION_VIEW);
AnimationActivity.this.startActivity(startMainActivity);
// 结束当前界面
AnimationActivity.this.finish();
}
}

我们来看下LoginActivity 注册界面,界面上显示两个输入框,一个注册,一个登陆框。
主要完成用户输入用户名 和密码,进入注册,将用户信息存在数据库内,以备后面查询使用。

如果用户名 密码注册成功,也会进入主界面了。

LockActivity.java 锁屏界面,此界面更简单,直接有一个输入框,输入密码和真正的存储的锁屏密码一致,则会进入主界面,否则让用户重新输入密码。
主要代码如下:
// 拿到数据
String str1 = param.toString();
// 拿到密码值
String str3 = LockActivity.this.userInfo.getKey(“lockPwd”, “”);
// 比较长度,如果小于密码长度,我们不需要匹配。
if (str3.length() <= str1.length()) {
// 如果相等了
if (str3.equals(str1)) {
try {
// 睡眠一会,让用户等一下
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 进入主界面
((myApplication) getApplication()).setLock(false);
Intent startMainActivity = new Intent(
LockActivity.this, MainActivity.class);
startMainActivity.setAction(Intent.ACTION_VIEW);
LockActivity.this.startActivity(startMainActivity);
LockActivity.this.finish();
} else {
// 不相等,清除后重新输入
localEditText.setText(“”);
LockActivity.this.showMsg(getResources().getString(
R.string.mimacuoruqingchongxin));
}
}

我们现在来看下主界面MainActivity.java,完成展示我们需要记账的主要界面,比如电子,彩妆花费这些,还有奖学金 生活费等收入,记录下来。
同时完成主界面的整理,统计出来今天记账几笔,记账天数,记账的收入,支出总额。同时还有当月和当年的也一并获取出来。
// 查当天的收入支出信息
new TodayQueryTask().execute();
// 查当月的收入支出信息
new MonthQueryTask().execute();
// 查当年的收入支出信息
new YearQueryTask().execute();
查询方式很简单:
比如当天的查询为:
// 在后台执行 ,查询当前日期的记账信息 QueryBuilder

    QueryBuilder qb = new QueryBuilder(Income.class).whereEquals( 
            "time", DBUtil.getOldTime(DBUtil.ONEDAYOLD)); 
    //查询出来time = DBUtil.getOldTime(DBUtil.ONEDAYOLD) 当天的在收入里面的所有数据 
    mTodayIncomlist = LiteOrmDBUtil.getLiteOrm().<Income> query(qb); 

    QueryBuilder qb1 = new QueryBuilder(Expend.class).whereEquals( 
            "time", DBUtil.getOldTime(DBUtil.ONEDAYOLD)); 
//查询出来time = DBUtil.getOldTime(DBUtil.ONEDAYOLD) 当天的在花费里面的所有数据 
    mTodayExpendlist = LiteOrmDBUtil.getLiteOrm().<Expend> query(qb1); 
    // 对查询结果进行排序 
    Collections.sort(mTodayIncomlist, new IncomeComparator()); 
    Collections.sort(mTodayExpendlist, new ExpendComparator()); 

其中排序为:
// 对收入的内容进行排序,依据时间,这里学习,百度参考Comparator
class IncomeComparator implements Comparator {
@Override
public int compare(Object o1, Object o2) {
Income sdto1 = (Income) o1;
Income sdto2 = (Income) o2;
// 如果时间,大于,则排在前面,否则放在后面
return sdto1.getTime() > sdto2.getTime() ? -1 : 1;

} 

}

// 对支出的内容进行排序,依据时间,这里学习,百度参考Comparator
class ExpendComparator implements Comparator {
@Override
public int compare(Object o1, Object o2) {
Expend sdto1 = (Expend) o1;
Expend sdto2 = (Expend) o2;
return sdto1.getTime() > sdto2.getTime() ? -1 : 1;

} 

}
我们对于电子花费这些,使用了mNavBannerBodyLayout这个是个容器,将每一页的内容加入进来 GridView这个是每一页展示的view mNavBannerBodyIndicitor指示当前是第几页。

我们看下点击电子消费的响应:
通过 // 设置点击每个Item的回调,会进入到支出界面的
bannerBodyView.setOnItemClickListener(navBannerBodyListener);
注册响应,响应的代码是:

public OnItemClickListener navBannerBodyListener = new OnItemClickListener() {

public void onItemClick(AdapterView<?> parent, View view, int position, 
        long id) { 
    // 这个是主界面的第一个,支出主界面点击进入支出 就是 电子 购物 彩妆这个 
    Intent ExpendIntent = new Intent(MainActivity.this, 
            ExpendActivity.class); 
    //标题显示的,使用当前列表的当前item的名字显示 
    ExpendIntent.putExtra("title_text", 
            getResources().getString(list.get(position).name)); 
    // 产品显示的,使用当前列表的当前item的名字显示 
    ExpendIntent.putExtra("product_name", 
            getResources().getString(list.get(position).name));  
    //加入一个id,用于统计时候,进行分类使用 0-11  

    ExpendIntent.putExtra("user_id", position); 
    //是否需要语音记,此时不需要 
    ExpendIntent.putExtra("Voice", false); 
    //启动支出界面,进行编辑一项支出。 
    startActivity(ExpendIntent); 

} 

};
说完这个,我们再说下主界面的统计出来的今天,当月当年的花费,如何来完成的。我们以当年的来说

private ArrayList mYearIncomlist;// 今年的收入列表
private ArrayList mYearExpendlist;// 今年的支出列表
private float mYearIncome = 0,// 今年的收入钱数
mYearExpend = 0;// 今天的支出钱数

// 查询今年的收入,支出信息 ,这里知识点AsyncTask
private class YearQueryTask extends AsyncTask

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员入门进阶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值