安卓开发项目——时间管理工具

整理一下之前结课设计做的一个app,参考了ios的设计和逻辑,虽然功能简单,但是还是用了很多知识,花了不少时间的。大佬请略过,轻喷。

功能说明

1. 登录界面

首先是简单的登录界面以及home界,登录界面可以选择记住用户密码,在登录/注册的时候,可以实时提醒用户注册用户是否合法、密码是否一直等信息,主界面作为页面导航,前往对应的模块,该App命名为“时间管家”时间有限,目前仅支持APP Statics和Remind Me模块。

android 时间曲线图 安卓时间规划局教程_安卓


2.App使用数据

此模块用于统计用户时间的使用,分为每周和每天两个层次。在该模块,使用recyclerView统计每日(每周)最经常使用的app包,使用第三方开源库AAChartViewModel对每天(周)前6(8)的app进行饼状图统计。在上方的按钮可以选择日期或时间,并且根据用户的选择,app可以在后台动态查询,并且即时更新recyclerView和图标的内容。不过需要注意的是,由于安卓内部库usageManager记录机制的原因,所谓的每天并不能精确的记录到具体的时间段,只是一个24小时周期概念的“一天”,实际起止时间由内部决定。并且由于app权限问题,安卓在新版(11)已经不允许使用该库的部分功能调取信息。

android 时间曲线图 安卓时间规划局教程_登录界面_02


3.RemindMe 模块

此功能模仿了IOS系统自带的Remind me(提醒事项),主要功能由用户可以添加提醒事项的列表,并对于每个列表添加事项,在添加事项时,可以选择事项的要执行的时间、也可以通过勾选Flagged按钮,将其设置为重要事项。当然也可以不选择,设置为普通的事项。对用户添加的事项分三大类,分别是Flagged重要事项;Scheduled标定过时间的,并且显示时,通过颜色区分时间有没有到。Today:时间设定在今天的事项。列表已经事项的显示通过recyclerView来实现,当用户完成事项时,点击checkbox并且选择对应的块,就可以实现删除。在下方的两个按钮可以分别添加新的list和新的matter,并在recyclerView中动态添加。App对横屏竖屏设置了不同的状态设计了不同的视图,可以任意动态跳转。

android 时间曲线图 安卓时间规划局教程_android 时间曲线图_03

4.横屏切换效果

android 时间曲线图 安卓时间规划局教程_安卓_04

实现方案

  1. App根据功能划分为三个模块ChartModule, HomePages, RemindModule,同时对应了ChartActivity,LoginActivity,RemindActivity三个activity。下面通过模块的划分来进行介绍
  2. ChartModule模块中,使用了第三方开源库AAChartModel:(https://github.com/AAChartModel/AAChartCore-Kotlin),该模块共有9个类,其中两个Fragment,被划分为三个包。通过activity连接,在格子Fragment对应的viewModel内完成通过usageManager的查询,并且通过viewmodel用组件和recyclerview加载出来。ChartActivity与他们的关系如下

    3.HomePages模块主要实现登录以及app主界面,该模块共有9个类,其中有三个Fragment。内有两个包,其中,LoginAndRegister包负责界面设计的UI设计,userDataBase负责数据库操作。如果选择了记住密码,进入app会先进行搜索。当用户注册的时候将相关信息存储进入数据库,登录的时候进行检索。对应的LoginActivity与他们的关系如下

    4.在RemindMeMudule模块内,共有12个类,其中有两个Fragment 被划分在三个包内,包DataBase负责处理数据库的操作,Fragment包存放Fragment以及他们对应的ViewModel类,ViewHolder包负责处理布局中RecyclerView。在RemindActivity中关联两个fragment,viewcardFragment负责显示list列表,当用户进入界面时、会在后台加载数据,并显示在recyclerView上。当用户点击每一个Item,app加载taskFragment,并在数据库查询对应的列表的matter内容。在taskfragment,当用户选中checkbox并选择对应的块,会触发数据变化,通过livaData对视图动态更新。mindActicity与他们的关系如下

代码

我的电脑github上传出现了问题。。。。还没上传成功