Android之Date & Time組件

本節(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();
            }
        });
    }
}

運行效果圖:

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末陷揪,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌悍缠,老刑警劉巖卦绣,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異飞蚓,居然都是意外死亡滤港,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進店門玷坠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蜗搔,“玉大人,你說我怎么就攤上這事八堡≌疗啵” “怎么了?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵兄渺,是天一觀的道長缝龄。 經(jīng)常有香客問我,道長挂谍,這世上最難降的妖魔是什么叔壤? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮口叙,結果婚禮上炼绘,老公的妹妹穿的比我還像新娘。我一直安慰自己妄田,他們只是感情好俺亮,可當我...
    茶點故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著疟呐,像睡著了一般脚曾。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上启具,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天本讥,我揣著相機與錄音,去河邊找鬼鲁冯。 笑死拷沸,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的薯演。 我是一名探鬼主播撞芍,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼涣仿!你這毒婦竟也來了勤庐?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤好港,失蹤者是張志新(化名)和其女友劉穎愉镰,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體钧汹,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡丈探,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了拔莱。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片碗降。...
    茶點故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖塘秦,靈堂內(nèi)的尸體忽然破棺而出讼渊,到底是詐尸還是另有隱情,我是刑警寧澤尊剔,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布爪幻,位于F島的核電站,受9級特大地震影響须误,放射性物質(zhì)發(fā)生泄漏挨稿。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一京痢、第九天 我趴在偏房一處隱蔽的房頂上張望奶甘。 院中可真熱鬧,春花似錦祭椰、人聲如沸臭家。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽侣监。三九已至,卻和暖如春臣淤,著一層夾襖步出監(jiān)牢的瞬間橄霉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工邑蒋, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留姓蜂,地道東北人。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓医吊,卻偏偏與公主長得像钱慢,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子卿堂,可洞房花燭夜當晚...
    茶點故事閱讀 43,440評論 2 348

推薦閱讀更多精彩內(nèi)容