这次我要讲解TimerFragment部分,因为此部分在DeskClock模块也算一个重要部分。
TimerFragment即是计时器。它包括两部分:一个是CreateTimerView视图——设置时间部分;一个是TimersView视图——定时运行部分。CreateTimerView部分主要是给用户设定时间并显示出来;TimersView部分主要用圆圈和数字动态显示时间流逝过程。
本文主要从三个方面讲解:自定义控件、数据模型、代码流程。
1. 自定义控件
不管是CreateTimerView,还是TimersView视图,主要包含了自定义控件。所以需要了解其自定义控件是怎么样实现的。
(1)CreateTimerView(TimerSetupView )
CreateTimerView部分实际布局为TimerSetupView,而TimerSetupView是自定义视图类,里面包含显示时间的自定义控件和显示0-9的按键。从TimerSetupViewextends LinearLayout implements Button.OnClickListener,Button.OnLongClickListener看,OnClickListener是针对0-9按键和删除按键,而OnLongClickListener只针对删除按键。
TimerSetupView 的布局由time_setup_view控制,time_setup_view里面有自定义控件com.android.deskclock.timer.TimerView和0-9的buttion,我们着重讲下com.android.deskclock.timer.TimerView。
如上图所示:TimerView里面布局包含了八个TextView和一个ImageView,八个TextView分别用来存放小时的十位、个位值,分钟的十位和个位值,秒,以及汉字“小时、分钟、秒”;一个ImageView是放置“删除”图片。写到这里,大家应该就明白:其实在CreateTimerView界面设置时间时,是用一个一个TextView显示时间的值,那么整个时间设定界面就是如此:当用户点击0-9个按钮时,我们把对应的值用这八个buttion显示出来,同时计算出来等于多少微妙,将其值传给Timer。
那点击的button值,是如何传入TextView呢?
for (int i = 0; i < mNumbers.length; i++) {
mNumbers[i].setOnClickListener(this);
mNumbers[i].set