而時間的取得就可以透過TimePicker來即時取的當下的時間。
當然這時間可以再另做設定,只是透過這樣的方法,使用者在輸入資料的時候。
可以避免資料的輸入手誤或錯誤等等。
範例:
使用 Timepicker 顯示的時間,當我們更改時間即會觸發 setOnTimeChangedListener。
產生出來的數值是 int,所以我們另用 TimeFix 將時間更改為 String。
當然若數字小於 10 ,在數字前面我們就多加個 0。
將取得字串在設定到 TextView1。
另外,透過Button取得 TimePicker 送出來的資料,顯示在另一個 TextView 上。
圖示:一個是在 Android 2.3的樣式,一個是 4.1 的樣式。
main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Time" >
<TimePicker
android:id="@+id/timePicker"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true" />
<Button
android:id="@+id/BtnGetTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/textTime1"
android:layout_marginTop="31dp"
android:text="Button" />
<TextView
android:id="@+id/textTime1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/timePicker"
android:text="Large Text"
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="@+id/textTime2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/BtnGetTime"
android:layout_toRightOf="@+id/BtnGetTime"
android:text="Large Text"
android:textAppearance="?android:attr/textAppearanceLarge" />
</RelativeLayout>
time.java
package com.example.time;
import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.TimePicker;
import android.widget.TimePicker.OnTimeChangedListener;
public class Time extends Activity {
private TimePicker timePicker;
private TextView textTime1,textTime2;
private Button BtnGetTime;
String H;
String M;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_layout);
textTime1 = (TextView)findViewById(R.id.textTime1); //自動取得時間
textTime2 = (TextView)findViewById(R.id.textTime2); //透過按鈕取得時間
BtnGetTime = (Button)findViewById(R.id.BtnGetTime);
BtnGetTime.setOnClickListener(GTimeListener);
timePicker = (TimePicker)findViewById(R.id.timePicker);
//timepicker時間更改時,執行下面的動作。
timePicker.setOnTimeChangedListener(new OnTimeChangedListener(){
@Override
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
// TODO Auto-generated method stub
//取得 hour的值,透過TimeFix方法。轉換成String.並初始H。
H = TimeFix(hourOfDay);
//取得 minute的值,透過TimeFix方法。轉換成String.並初始M。
M = TimeFix(minute);
//將取得的資料設定到 textTime1
textTime1.setText(H + ":" +M);
}
});
}
private Button.OnClickListener GTimeListener =
new Button.OnClickListener(){
//按下按鈕後將先前Timepicker取得的值 H和M,
//設定到 textTime2
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId())
{
case R.id.BtnGetTime:
{
textTime2.setText(H + ":" +M);
break;
}
}
}
};
//Timepicker取得的資料為int,但時間數字小於10,是不會有像06這樣的情況。
//所以透過TimeFix這個方法將送過來的數字轉換成String,在判斷是否需要加0。
private static String TimeFix(int c){
if (c >= 10)
return String.valueOf(c);
else
return "0" + String.valueOf(c);
}
}