【Android应用开发实例】简约记账软件 |
您所在的位置:网站首页 › 安卓记账本app总结 › 【Android应用开发实例】简约记账软件 |
简约记账软件
姓名代码量实现功能实现过程界面绘制activity_mainitem_mainlvactivity_recordfragment_outcome
Java代码MainActivityRecordActivityfrag_recordBaseRecordFragmentOutcomeFragmentIncomeFragment
适配器RecordPagerAdapterTypeBaseAdapterAccountAdapter
数据库AccountBeanDBOpenHelperDBManager
UniteApp工具SelectTimeDialogBeiZhuDialogKeyBoardUtils
应用截图
姓名
计2105 202121147153 张永星 代码量约800行 实现功能主界面 显示记录数据 收入/支出界面 进行收入/支出的添加 备注对话框 进行备注添加 时间日期对话框 进行时间日期设置 实现过程 界面绘制 activity_main今日收支明细界面绘制 设计图![]() 使用LinearLayout,orientation设置为vertical;头布局使用相对布局,靠左显示应用名称,靠右显示搜索图片;ListView去除边框,去除滑动轴;添加功能按钮放置在右下角,背景图片绘制为一个绿色矩形。 item_mainlv收支页面每一项的绘制
记录页面的布局绘制
onCreate() :初始化控件todayLv、mDatas,设置适配器adapter,加载每一条数据源到todayLv当中。其中放置initTime()方法,用于初始化时间。 initTime():初始化年月日,传入DBManager.getAccountListOneDayFromAccounttb(year, month, day),用于确定查找哪一天的记录。 onResume():其中放置loadDBData()方法,用于将数据库Accounttb中的数据加载至mData中。 loadDBData():将数据库Accounttb中的数据加载至accountListOneDayFromAccounttb中,再将accountListOneDayFromAccounttb全部传入mDatas。 onClick():用于监听点击事件:添一笔、更多功能、搜索。本项目只完成了添一笔功能。 RecordActivityonCreate():查找TabLayout、ViewPager页面,TabLayout完成页面滑动,ViewPager展示页面;调用initPager()方法,设置ViewPager加载页面。 initPager():初始化ViewPager页面的集合,创建收入和支出页面,放置在Fragment当中,创建一个RecordPagerAdapter,这是一个自定义的适配器用于将Fragment与ViewPager相关联。使用setupWithViewPager,将TabLayout和viewPager关联。 onClick():设置监听事件:返回,用于从记录页面返回主页面。 frag_record BaseRecordFragment创建控件keyboardView、moneyEt、typeIv、typeTv、beizhuTv、timeTv、typeGv、typeList、adapter、accountBean。 其中typeList会在子类中进行数据输入。 onCreate():创建一个记录类对象,初始化对象,类型为其他。 onCreateView():创建fragment视图;调用方法,initView(view)、setInitTime()、loadDataToGv()、setGVListener(); initView():用于初始化页面; setInitTime():用于获取时间; loadDataToGV():使得GridView能够展示类型信息 setGVListener():设置GridView的点击事件initView():初始化控件,keyboardView、moneyEt、typeIv、typeTv、typeGv 、beizhuTv、timeTv;为beizhuTv、timeTv设置监听点击事件;使用showKeyboard()方法,让软键盘显示出来;为键盘设置接口,监听键盘是否被点击。 setInitTime():获取系统当前时间,时间赋给timeTv,并将时间传入accountBean;获取年月日,传入accountBean。 loadDataToGV():为typeList开辟控件,设置适配器,将typeGv和数据相关联。 setGVListener():点击item,提示绘制发生变化;获取被点击的item信息,对typeTv、typeIv进行更新,将信息存入accountBean。 saveAccountToDB():抽象类,用于将accountBean传入数据库。 onClick():为备注、日期事件设置监听事件。其中调用showTimeDialog()、showBZDialog()。 showTimeDialog():创建SelecTimeDialog对象,展示日期时间对话框,设立确定按钮被点击了的监听器,更新timeTv,将time、year、month、day传入accountBean。 showBZDialog():创建BeiZhuDialog对象,展示备注对话框;调用setDialogSize函数,调整对话框和屏幕尺寸一致;更新beizhuTv,将备注信息传入accountBean。 OutcomeFragment继承BaseRecordFragment loadDataToGv():重写该方法,将支出类型数据传入typelist;更新typeTv、typeIv。 saveAccountToDB():设置kind类型为0;调用DBManager.insertItemToAccounttb(accountBean),将记录的accountBean传入accounttb。 IncomeFragment与OutcomeFragment逻辑一致。 适配器 RecordPagerAdapterRecordPagerAdapter类用于管理支出和收入两个Fragment。 通过getPageTitle方法获取Fragment的标题。 TypeBaseAdapter构造器:传入上下文context,传入List< TypeBean > mDatas。 getView():加载布局;查看布局当中的控件iv、tv;获取指定位置的数据源,更新iv、tv。还需判断当前图片是否被选中。 AccountAdapter创建mDatas、year、month、day。 AccountAdapter(Context context, List< AccountBean > mDatas):传入上下文、记录数据。初始化年月日。 class ViewHolder:定义ViewHolder类。初始化typeIv、typeTv、timeTv、beizhuTv、moneyTv。 getView():getView()方法用于设置每个item的显示效果;通过getItem(int position)方法获取到对应位置的对象实例bean,并将其数据显示在界面上;将View返回给ListView进行显示;ViewHolder主要用于保存已经创建过的View的控件,可以避免findViewById()方法的重复调用,提高了性能。 数据库 AccountBean该类描述记录一条记录的相关内容 int id; String typename; //类型 int sImageId; //选中图片的类型 String beizhu; //备注 float money; //价格 String time; //保存时间字符串 int year; int month; int day; int kind; DBOpenHelperonCreate():创建两个表:typetb、accounttb。typetb用于存放类别信息,accounttb用于存放记录信息。 insertType():向表typetb中存入类别信息。支出15类,收入9类。 DBManager用于管理数据库信息。 initDB():初始化数据库。 ListgetTypeList(int kind)():读取数据库当中的内容,写入内存集合中。 用于: List outlist = DBManager.getTypeList(0);insertItemToAccounttb():向记账表中插入一条元素。 List< AccountBean >getAccountListOneDayFromAccounttb(int year,int month,int day):获取记账表中某一天的支出或收入记录 List< AccountBean >getAccountListOneDayFromAccounttb():获取记账表中某一天的支出或收入记录 UniteApp表示全局应用的类;初始化数据库,使得创建项目时就创建数据库。 工具 SelectTimeDialog用于将日期时间信息传送出去。 创建控件hourEt、minuteEt、datePicker、ensureBtn、cancelBtn。 onCreate():初始化控件hourEt、minuteEt、datePicker、ensureBtn、cancelBtn;为ensureBtn、cancelBtn设置监听事件;隐藏日历头部。 onClick():为取消、确定设置监听事件。 取消:调用cancel()方法。 确定:获取年月日,调用接口函数,参数设置为timeFormat,year,month,dayOfMonth。 hideDatePickerHeader():隐藏日历头部 BeiZhuDialog创建控件:et、cancelBtn、ensureBtn。 onCreate():初始化et、cancelBtn、ensureBtn;为cancelBtn、ensureBtn设置监听事件。 onClick():为cancelBtn、ensureBtn设置监听事件。 取消:调用cancel函数。 确定:调用接口函数。 getEditText():返回备注信息,便于直接为beizhuTv更新备注信息。 setDialogSize():设置Dialog的尺寸和屏幕尺寸一致;调用sendEmptyMessageDelayed()方法,自动弹出软键盘。 KeyBoardUtilsKeyBoardUtils():在构造方法中,需要传入KeyboardView和EditText两个参数;首先设置EditText的输入类型为InputType.TYPE_NULL,这样可以取消系统键盘的弹出;创建一个自定义的键盘对象k1,xml文件地址为R.xml.key;将创建好的键盘对象k1设置到KeyboardView中,并且启用这个KeyboardView(setEnabled(true));设置键盘被点击了的监听(setOnKeyboardActionListener(listener)),通过监听用户的点击操作,从而实现自定义键盘的输入效果。 onKey():为每个键设置监听事件。 showKeyboard(): 显示键盘 hideKeyboard():隐藏键盘 应用截图初始: 记一笔: 选择餐饮 添加备注:cookie 设置时间 默认 输入金额:12 注意:因为设置了查看某一天记录的功能,所以主页面只能查看今日的账单;添加记录时,如果改动日期,就不会在主页面显示。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |