日程管理APP——TickTo

日程管理APP——TickTo

功能介绍

  1. 今天档期:显示今日档期。
  2. 往期事件:显示今天之前的事务。
  3. 记录点滴:记录当天的日记,同时可以看往期的日记。
  4. 学习模式:可以选择开启白噪音模式。
  5. 设置:可以设置每天写总结的时间,会在通知栏提醒。
  6. 退出:退出程序。
  7. Share:目前APP没有上架,所以只是简单弹出一句话。
  8. 关于我们:显示关于开发者的一些信息。

这里写图片描述
图1:功能列表

开发技术

  • 主要包括使用内置的Activity模板(方便快捷)
  • recycleview滑动删除技术(附带参考源码)

下面进行详细介绍
首先是程序的整体结构,如图2所示:

这里写图片描述
图2:程序整体结构

adapter是自定义容器,存储的内容是recycleview中的内容。该recycleview的作用是存储日程信息并显示出来。突出之处在于这个recycleview是可以滑动删除的。

这里写图片描述
图3:adapter包

Diary是日记的包,里面包括一个关于日志记录的类,一个显示日志的activity,一个写新日记的activity,一个点击日记缩略表之后会显示具体内容的activity。(可用于查看之前的日记)

这里写图片描述
图4:diary包

Entity是一个记录日程的包,包括存储日程记录的类,一个对数据库操作进行封装的类,使得加入删除等操作更为简便。

这里写图片描述
图5:entity包

Itemhandle包是对recycleview滑动删除功能的实现。还有点击功能,这部分代码参考自GitHub和相关的博客,最初来源一个外国程序员Yolanda的设计,所以在使用时保留原名。包中主要是item的点击事件,点击回调事件等。使得item可以被拖拽。

这里写图片描述
图6:itemhandle包

Leftmenu包里面包含对左边菜单的一些功能的实现,包括相关的类和activity。Aboutus是“关于我”功能的activity,addthing是“添加事务”功能的activity,audioservice是开启“白噪音”功能。SettingActivity是实现“设置”功能的activity。

这里写图片描述
图7:leftmenu包

Notifi包是对开启白噪音之后通知栏消息的实现。可以使用通知栏实现点击音乐开始、暂停的功能。由于音乐是直接放在apk中的,所以只加入了一首,避免apk太大,所以上一首、下一首的功能还有待实现。

这里写图片描述
图8:notifi包

Timingpush包主要是为了实现通知栏提醒功能,使得能提醒用户在每天设定的时间进行日记的记录。

这里写图片描述
图9:timingpush包

最后是两个活动,一个是MainActivity,一个是WelcomeActivity,后者的作用是点开之后的3秒的打开动画。可以对相关的功能和资源进行加载。

这里写图片描述
图10:MainActivity和WelcomeActivity

接下来将对每个功能如何实现做详细的介绍。
1. 今天档期:
显示今天的日程,使用的是LitePal数据库,对ThingInfo类进行操作。ThingInfo除了继承DataSupport用于数据库操作之外,还实现了Serializable接口,目的是为了方便在活动之间进行信息交流的时候,可以放入Intent中,所以必须实现Serializable。
在每次打开应用的时候,会记录打开的当前日期,然后从数据库中找符合当前日期的事务,接着加入到recycleview中,再显示在主界面中。

  1. 往期事件:
    该功能的实现和第一个功能类似,都是通过对数据库的查询,然后显示出来。只不过判断条件是非今天的事务。

  2. 记录点滴:
    记录点滴是为了用户记录日记。实现主要是EditText搭配TextView实现,总体实现不难。

  3. 学习模式:
    该功能的实现涉及多媒体的播放,Service的使用,还有通知栏的信息的提醒。难点在于需要通过通知栏的点击,进行事件的广播,同时通知的对象是一个service,所以实现难度最大。代码有部分参考网上博客的实现。目标是实现一个音乐播放器的通知栏。
    白噪音音乐的播放需要一个service来开启,然后通过广播功能来对其进行控制。
    对于通知栏的内容,如上一曲、开始、暂停、下一曲
    都是继承广播,然后控制service。
    需要注意的是,对于广播和service,均需要在Mainfest中注册,否则无效。

  4. 设置:
    设置功能相对简单,主要设置写日记的提醒时间。用到一个内置的类TimePickerDialog,可以很方便地对时间进行选择并显示。在提醒上,每次打开APP便会判断此时的时间是否超过设置的提醒时间,如果是,在10秒钟之后便会在消息栏显示提醒。消息栏通知有专门的类Notification来实现相应的功能。

  5. 退出:
    退出功能也相对简单,但是使用的是延迟退出,也就是只有连续两次点击,相差在两秒钟之内才会正式退出程序。

  6. Share:
    一开始打算使用的是二维码的形式,最后由于应用并没有上架,所以也就没办法生成二维码,最后决定将功能暂缓实现。

  7. 关于我们:
    该功能的实现很简单,就是在使用TextView显示相关的文本内容,只不过是居中显示了。

  8. 夜间模式:
    该APP还初步实现了日间模式和夜间模式的切换,入口是在右上角的设置按钮。调用getDelegate().setLocalNightMode(AppCompatDelegate.MODE_NIGHT_NO);来实现对不同模式的切换。但不足之处是只在MainActivity中有模式的变化,在其余activity中依旧只有白天模式,这是不足之处。

这里写图片描述
图11:功能和相应技术引用图

效果截图

  1. 开机动画:如图12所示,每次打开应用将会有3秒的启动动画。
    这里写图片描述
    图12:打开动画

2.今天档期的添加和显示:如图13、14所示。

这里写图片描述
图13 添加日程

这里写图片描述
图14:显示日程

可以对日程进行上下移动以及滑动删除,完成之后可以点击完成按钮。如图15所示:

这里写图片描述
图15:完成和交换日程

3.日记内容:如图16,17所示。可以对日记进行查看和记录。

这里写图片描述
图16:显示所有日记

这里写图片描述
图17:显示日记内容

  1. 学习模式,可以打开白噪音,如图18,19所示:

这里写图片描述
图18:打开白噪音

这里写图片描述
图19:通知栏信息

  1. 设置以及通知栏提醒,如图20

这里写图片描述
图20:设置时间

这里写图片描述
图21:消息栏提醒

  1. 主界面的夜间模式和白天模式,如图22-24所示:

这里写图片描述
图22:主界面的模式设置入口

这里写图片描述
图23:夜间模式

这里写图片描述
图24:白天模式

源码

该APP的源码可从GitHub中下载:https://github.com/Budding0828/TickTo