跟我學Android之九 日期時間組件

視頻課: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;}}




相關文章
相關標籤/搜索