本節(jié)引言:
本節(jié)給大家?guī)淼氖茿ndroid給我們提供的顯示時間的幾個控件掂摔,他們分別是: TextClock亏娜,AnalogClock,Chronometer嫉戚,另外其實還有個過時的DigitalClock就不講解了! 好的澈圈,開始本節(jié)內(nèi)容彬檀!
1.TextClock(文本時鐘)
TextClock是在Android 4.2(API 17)后推出的用來替代DigitalClock的一個控件!
TextClock可以以字符串格式顯示當前的日期和時間瞬女,因此推薦在Android 4.2以后使用TextClock窍帝。
這個控件推薦在24進制的android系統(tǒng)中使用,TextClock提供了兩種不同的格式诽偷, 一種是在24進制中顯示時間和日期坤学,另一種是在12進制中顯示時間和日期疯坤。大部分人喜歡默認的設置。
可以通過調(diào)用:TextClock提供的is24HourModeEnabled()方法來查看深浮,系統(tǒng)是否在使用24進制時間顯示! 在24進制模式中:
如果沒獲取時間压怠,首先通過getFormat24Hour()返回值;
獲取失敗則通過getFormat12Hour()獲取返回值飞苇;
以上都獲取失敗則使用默認菌瘫;
另外他給我們提供了下面這些方法,對應的還有get方法:
Attribute Name | Related Method | Description |
---|---|---|
android:format12Hour | setFormat12Hour(CharSequence) | 設置12時制的格式 |
android:format24Hour | setFormat24Hour(CharSequence) | 設置24時制的格式 |
android:timeZone | setTimeZone(String) | 設置時區(qū) |
其實更多的時間我們是花在時間形式定義上布卡,就是里面這個CharSequence雨让! 這里提供下常用的寫法以及結果:
<TextClock
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:format12Hour="MM/dd/yy h:mmaa"/>
<TextClock
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:format12Hour="MMM dd, yyyy h:mmaa"/>
<TextClock
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:format12Hour="MMMM dd, yyyy h:mmaa"/>
<TextClock
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:format12Hour="E, MMMM dd, yyyy h:mmaa"/>
<TextClock
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:format12Hour="EEEE, MMMM dd, yyyy h:mmaa"/>
<TextClock
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:format12Hour="Noteworthy day: 'M/d/yy"/>
運行結果:
PS:另外minsdk 要大于或者等于17哦!
2.AnalogClock(模擬時鐘)
就是下圖這種:
官網(wǎng)中我們可以看到這樣三個屬性:
依次是:表背景忿等,表時針栖忠,分時針的圖片,我們可以自行定制:
3.Chronometer(計時器)
如題贸街,就是一個簡單的計時器庵寞,我們直接上使用示例吧:
xml
<Chronometer
android:id="@+id/chronometer"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:textColor="#ff0000"
android:textSize="60dip" />
java
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.btnStart:
chronometer.start();// 開始計時
break;
case R.id.btnStop:
chronometer.stop();// 停止計時
break;
case R.id.btnReset:
chronometer.setBase(SystemClock.elapsedRealtime());// 復位
break;
case R.id.btn_format:
chronometer.setFormat("Time:%s");// 更改時間顯示格式
break;
}
}
4.DatePicker(日期選擇器)
可供我們使用的屬性如下:
android:calendarTextColor : 日歷列表的文本的顏色
android:calendarViewShown:是否顯示日歷視圖
android:datePickerMode:組件外觀,可選值:spinner匾浪,calendar 前者效果如下皇帮,默認效果是后者
android:dayOfWeekBackground:頂部星期幾的背景顏色
android:dayOfWeekTextAppearance:頂部星期幾的文字顏色
android:endYear:去年(內(nèi)容)比如2010
android:firstDayOfWeek:設置日歷列表以星期幾開頭
android:headerBackground:整個頭部的背景顏色
android:headerDayOfMonthTextAppearance:頭部日期字體的顏色
android:headerMonthTextAppearance:頭部月份的字體顏色
android:headerYearTextAppearance:頭部年的字體顏色
android:maxDate:最大日期顯示在這個日歷視圖mm / dd / yyyy格式
android:minDate:最小日期顯示在這個日歷視圖mm / dd / yyyy格式
android:spinnersShown:是否顯示spinner
android:startYear:設置第一年(內(nèi)容),比如19940年
android:yearListItemTextAppearance:列表的文本出現(xiàn)在列表中蛋辈。
android:yearListSelectorColor:年列表選擇的顏色
屬性就是上面這些属拾,你想怎么玩就怎么玩,接下來我們說下他的DatePicker的事件: DatePicker.OnDateChangedListener 另外冷溶,奇怪的是渐白,如果是上面這種mode為calendar的設置了事件并沒有響應,看來上面這種 只能選擇完后獲取對應的值了逞频,如果你的mode未spinner的話纯衍,使用下述代碼就可以完成事件監(jiān)聽:
實現(xiàn)代碼如下:
public class MainActivity extends AppCompatActivity implements DatePicker.OnDateChangedListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
DatePicker dp_test = (DatePicker) findViewById(R.id.dp_test);
Calendar calendar = Calendar.getInstance();
int year=calendar.get(Calendar.YEAR);
int monthOfYear=calendar.get(Calendar.MONTH);
int dayOfMonth=calendar.get(Calendar.DAY_OF_MONTH);
dp_test.init(year,monthOfYear,dayOfMonth,this);
}
@Override
public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
Toast.makeText(MainActivity.this,"您選擇的日期是:"+year+"年"+(monthOfYear+1)+"月"+dayOfMonth+"日!",Toast.LENGTH_SHORT).show();
}
}
運行效果圖:
5.TimePicker(時間選擇器)
先來看看5.0的TimePicker長什么樣:
樣子還是蠻標致的哈,我們發(fā)現(xiàn)官方給我們提供的屬性只有一個: android:timePickerMode:組件外觀苗胀,同樣可選值為:spinner和clock(默認) 前者是舊版本的TimePicker~ 而他對應的監(jiān)聽事件是:TimePicker.OnTimeChangedListener
下面來個代碼示例:
public class MainActivity extends AppCompatActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TimePicker tp_test = (TimePicker) findViewById(R.id.tp_test);
tp_test.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {
@Override
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
Toast.makeText(MainActivity.this,"您選擇的時間是:"+hourOfDay+"時"+minute+"分!",Toast.LENGTH_SHORT).show();
}
});
}
}
運行效果圖: 可惜的是襟诸,同樣需要舊版本的TimePicker才會觸發(fā)這個事件!
6.CalendarView(日歷視圖)
好的基协,一樣是看看樣子先:
嗯歌亲,好像變化不大,接下來我們簡單的看下文檔中給我們提供的屬性:
android:firstDayOfWeek:設置一個星期的第一天
android:maxDate :最大的日期顯示在這個日歷視圖mm / dd / yyyy格式
android:minDate:最小的日期顯示在這個日歷視圖mm / dd / yyyy格式
android:weekDayTextAppearance:工作日的文本出現(xiàn)在日歷標題縮寫
處理上面的還有其他澜驮,但是都是被棄用的... 對應的日期改變事件是:CalendarView.OnDateChangeListener
示例代碼:
public class MainActivity extends AppCompatActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
CalendarView cv_test = (CalendarView) findViewById(R.id.cv_test);
cv_test.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
@Override
public void onSelectedDayChange(CalendarView view, int year, int month, int dayOfMonth) {
Toast.makeText(MainActivity.this,"您選擇的時間是:"+ year + "年" + month + "月" + dayOfMonth + "日",Toast.LENGTH_SHORT).show();
}
});
}
}
運行效果圖: