視頻課:https://edu.csdn.net/course/play/7621
android
本章內c++
第1節 AnalogClock和DigitalClock
第2節 CalendarView
第3節 DatePicker和TimerPicker
第4節 Chronometer
第5節 Timer類
git
本章目標app
掌握圖形時鐘和數字時鐘的用法。
掌握日曆視圖的用法。
熟練掌握日期和時間選擇器的用法。
熟練掌握Chronometer的用法。
熟練掌握Timer類的用法。
ide
AnalogClock是一個模擬時鐘視圖,使用AnalogClock標籤進行佈局,除了長寬外基本須要其餘屬性,對應的Java類是android.widget.AnalogClock,佈局示例以下:
佈局
<AnalogClockandroid:layout_width="wrap_content"android:layout_height="wrap_content" />
DigitalClock是一個數字時鐘視圖,使用DigitalClock標籤進行佈局,除了長寬外基本須要其餘屬性,對應的Java類是android.widget.DigitalClock,佈局示例以下:
this
<DigitalClockandroid:layout_width="wrap_content"android:layout_height="wrap_content" />
日曆視圖CalendarView,可用於顯示和選擇日期
spa
<CalendarView android:layout_width="match_parent" android:layout_height="match_parent" android:firstDayOfWeek="3" android:shownWeekCount="4" android:selectedWeekBackgroundColor="#aff" android:focusedMonthDateColor="#f00" android:weekSeparatorLineColor="#ff0" android:unfocusedMonthDateColor="#f9f" android:id="@+id/calendarView" />
事件,選項改變事件
.net
public void onSelectedDayChange(CalendarView view, int year, int month, int dayOfMonth) {// 使用Toast顯示用戶選擇的日期 Toast.makeText(CalendarViewTest.this,"你生日是" + year + "年" + month + "月" + dayOfMonth + "日" , Toast.LENGTH_SHORT).show(); }});
DatePicker是一個用於日期選擇的控件,使用DatePicker進行佈局,經常使用屬性以下:
android:calendarViewShown 表示是否顯示完整日曆
android:endYear 表示能夠選擇的最大年份
android:maxDate 表示日曆顯示的最大日期
android:spinnerShown 表示是否顯示調節箭頭按鈕
線程
DatePicker是一個用於日期選擇的控件,對應的類是android.widget.DatePicker,經常使用方法以下:
init() 用於初始化顯示日期和註冊日期選擇變化的監聽器
getYear() 用於提取選中的年份
getMonth() 用於提取選中的月份
getDayOfMonth() 用於提取選中的日
佈局示例以下:
<DatePicker android:id="@+id/datepick"android:layout_width="wrap_content"android:layout_height="wrap_content"android:calendarViewShown="true"/>
TimePicker是一個用於時間選擇的控件,使用TimePicker進行佈局,除了長寬外基本不用設置其餘屬性
對應的類是android.widget.TimePicker,經常使用方法以下:
getCurrentHour() 獲取當前小時
getCurrentMinute() 獲取當前分鐘
android.widget.TimePicker.OnTimeChangedListener爲事件監聽接口
計時器Chronometer,該組件與DigitalClock都繼承自TextView,所以它們都會顯示一段文本。但Chronometer並不顯示當前時間,它顯示的是從某個起始時間開始,一共過去了多長時間。
Chronometer支持以下經常使用方法。
setBase(long base):設置計時器的起始時間。
setFormat(String format):設置顯示時間的格式。
start():開始計時。
stop():中止計時。
setOnChronometerTickListener(Chronometer.OnChronometerTickListener listener):爲計時器綁定事件監聽器,當計時器改變時觸發該監聽器。
使用Chronometer控件實現計器的操做,開始
// 設置開始計時時間
chronometer.setBase(SystemClock.elapsedRealtime());
// 開始記時
chronometer.start();
chronometer.stop(); //中止
計時器定時觸發的事件
chronometer.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {public void onChronometerTick(Chronometer chronometer) {// 若是開始計時到如今超過了startime秒 if (SystemClock.elapsedRealtime()- chronometer.getBase() > startTime * 1000) {chronometer.stop();// 給用戶提示 showDialog();}}});
基於Chronometer製做幻燈片
Timer類
Timer類的功能與Chronometer組件相似,能夠每隔特定時間執行程序代碼,且功能比Chronometer組件強大
語法
Timer對象是以schedule方法執行
Timer對象名稱.schedule(TimerTask對象,延遲時間,間隔時間);
TimerTask對象:是Timer對象定時執行的程序代碼所在,開發者必須本身編寫要執行的程序代碼。延遲時間:設置多長時間後纔開始執行Timer對象,單位是毫秒。間隔時間:設置間隔多長時間執行TimerTask對象一次,單位是毫秒。
TimerTask類
TimerTask對象是Timer對象的主體,也就是用來定義Timer對象定時要執行的工做內容。在TimerTask對象中run方法裏的程序代碼就是重複執行的代碼塊,語法爲
private TimerTask變量名稱=new TimerTask() {public void run(){ 執行程序代碼…});
Handler對象是應用程序中不一樣線程之間的消息中介,在TimerTask對象中使用Message對象送出消息。
public void run (){Message message=new Message () ;message.what=送出消息;handler.sendMessage (message) ;}
Handler對象接收消息的語法爲:
private Handler變量名稱=new Handler(){public void handleMessage(Message msg { super.handleMessage (msg); switch (msg.what){ case接收消息: 程序代碼 break;) }};
計時秒錶初始化計時器
Timer timer=new Timer();//建立Timer對象timer.schedule(new TimerTask() {//建立TimerTask對象public void run() { if(flag){ tSec++; Message msg=new Message();//建立消息對象 msg.what=1;//設定類型 handler.sendMessage(msg);//傳送消息給Handler }}}, 0,1000);//馬上開始執行,時間間隔爲1000毫秒
計時秒錶,接受消息
public void handleMessage(Message msg){//接受消息super.handleMessage(msg);switch(msg.what){//判斷消息類型 case 1: cSec=tSec%60;//獲取秒數 cMin=tSec/60;//獲取分鐘數 String str=String.format("%02d:%02d", cMin,cSec);//以00:00的格式顯示數據 txtClock.setText(str); break;}}