Android開發(fā)—使用系統(tǒng)控件獲取當(dāng)前時(shí)間

  • 前言

最近項(xiàng)目要添加一個(gè)新功能桐智,加個(gè)Widget插件凌外,顯示天氣辩尊,時(shí)間,位置等信息康辑,類似于HTC-Sense的樣式

盜一張圖

這里最麻煩在時(shí)間每隔一分鐘就要刷新对省,這里可以通過Service里蝗拿,定時(shí)刷新,但是存在內(nèi)存不足或者第三方清理的情況下會(huì)出現(xiàn)時(shí)間停止的現(xiàn)象蒿涎,這肯定不滿足需求哀托,最后發(fā)現(xiàn)可以使用TextClock時(shí)鐘控件。

TextClock是在Android 4.2(API 17)后推出的用來替代DigitalClock的一個(gè)控件劳秋!可以以字符串格式顯示當(dāng)前的日期和時(shí)間仓手。
TextClock提供了兩種不同的格式, 一種是在24進(jìn)制中顯示時(shí)間和日期玻淑,另一種是在12進(jìn)制中顯示時(shí)間和日期嗽冒。
TextClock可以切換字體,也可以跟隨系統(tǒng)語言來切換繁體补履,英語等語言格式添坊。

  • 簡單看看源碼
  /**
     * Sets whether this clock should always track the current user and not the user of the
     * current process. This is used for single instance processes like the systemUI who need
     * to display time for different users.
     *
     * @hide
     */
    public void setShowCurrentUserTime(boolean showCurrentUserTime) {
        mShowCurrentUserTime = showCurrentUserTime;

        chooseFormat();
        onTimeChanged();
        unregisterObserver();
        registerObserver();
    }

進(jìn)入 chooseFormat()

 private void chooseFormat() {
        chooseFormat(true);
    }```
繼續(xù)
private void chooseFormat(boolean handleTicker) {
    final boolean format24Requested = is24HourModeEnabled();

    LocaleData ld = LocaleData.get(getContext().getResources().getConfiguration().locale);

    if (format24Requested) {
        mFormat = abc(mFormat24, mFormat12, ld.timeFormat24);
    } else {
        mFormat = abc(mFormat12, mFormat24, ld.timeFormat12);
    }

    boolean hadSeconds = mHasSeconds;
    mHasSeconds = DateFormat.hasSeconds(mFormat);

    if (handleTicker && mAttached && hadSeconds != mHasSeconds) {
        if (hadSeconds) getHandler().removeCallbacks(mTicker);
        else mTicker.run();
    }
}```

is24HourModeEnabled(),是否使用24進(jìn)制時(shí)間顯示,true則進(jìn)入 mFormat = abc(mFormat24, mFormat12, ld.timeFormat24);

 private static CharSequence abc(CharSequence a, CharSequence b, CharSequence c) {
        return a == null ? (b == null ? c : b) : a;
    }```
雙重判斷

if(a != null){
return a;
}else {
if(b != null){
return b ;
} else{
return c;
}
}```

  • 簡單看完箫锤,具體使用贬蛙,無需任何操作,直接在XML布局中
 <TextClock                                         
     android:id="@+id/widget_clock"                 
     android:layout_width="wrap_content"            
     android:layout_height="wrap_content"                
     android:fontFamily="sans-serif"                           
     android:format24Hour="HH:mm"                   
     android:includeFontPadding="false"             
     android:textSize="16sp" /> ```

######默認(rèn)系統(tǒng)語言為English
1.TextClock表示24小時(shí)和12小時(shí)的時(shí)間 

android:format24Hour=”HH:mm”
android:format12Hour=”hh:mm” ```
顯示:15:10
顯示:03:10
分別表示12小時(shí)和24小時(shí)的表達(dá)格式谚攒,HH和hh表示當(dāng)時(shí)時(shí)間小于10時(shí)會(huì)在前面補(bǔ)0
如果不需要補(bǔ)0阳准,直接定義

android:format24Hour=”H:mm” 
android:format12Hour=”h:mm” ```
顯示:15:10
顯示:3:10

2.TextClock表示年/月/日/ 24小時(shí)制 時(shí)/分

<TextClock
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:format12Hour="yyyy/MM/dd-hh:mm"/>```
顯示:2017/01/06-15:08
如果想顯示上午或者下午,日期顯示格式為2017-01-06

<TextClock 
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:format12Hour="yyyy-MM-dd-hh:mmaa"/>```
顯示:2017-01-06-15:08PM


3.英語格式顯示日期

<TextClock
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:format12Hour="MM/dd/yyyy h:mmaa"/>```
顯示:01/06/2017 3:12PM

4.月份顯示英語月份簡寫

<TextClock 
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:format12Hour="MMM/dd/yyyy h:mmaa"/>```
顯示:Jan/06/2017 3:13PM


5.月份顯示英語月份全拼

<TextClock
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:format12Hour="MMMM/dd/yyyy h:mmaa"/>```
顯示:January/06/2017 3:13PM

6.月份顯示英語月份全拼馏臭,帶上星期簡寫

<TextClock 
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:format12Hour="E/MMMM/dd/yyyy h:mmaa"/>```
顯示:Fri/January/06/2017 3:13PM


7.月份顯示英語月份全拼野蝇,帶上星期全拼

<TextClock
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:format12Hour="EEEE/MMMM/dd/yyyy h:mmaa"/>```
顯示:Friday/January/06/2017 3:13PM

8.自定義顯示效果

<TextClock 
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:format24Hour="今天是yyyy/MM/dd,EEEE,當(dāng)前時(shí)間是hh:mmaa"/>```
顯示:今天是2017/01/06,Friday,當(dāng)前時(shí)間是15:20PM
######如果系統(tǒng)語言為中文,則顯示:今天是2017/01/06,星期五,當(dāng)前時(shí)間是15:20下午

9.設(shè)置顯示字體
android:fontFamily=”sans-serif-light” 括儒,有多種字體可選绕沈。

- ######總結(jié)
TextClock使用起來非常簡單,根據(jù)項(xiàng)目需求帮寻,自己定義時(shí)間的顯示方式和具體顯示內(nèi)容七冲,但是只能在17及以上API中才能使用,相對是比較麻煩的规婆,不過市場上17以下的手機(jī)比重已經(jīng)非常低了,這個(gè)取舍就看公司項(xiàng)目的具體要求了
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蝉稳,一起剝皮案震驚了整個(gè)濱河市抒蚜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌耘戚,老刑警劉巖嗡髓,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異收津,居然都是意外死亡饿这,警方通過查閱死者的電腦和手機(jī)浊伙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來长捧,“玉大人嚣鄙,你說我怎么就攤上這事〈幔” “怎么了哑子?”我有些...
    開封第一講書人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長肌割。 經(jīng)常有香客問我卧蜓,道長,這世上最難降的妖魔是什么把敞? 我笑而不...
    開封第一講書人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任弥奸,我火速辦了婚禮,結(jié)果婚禮上奋早,老公的妹妹穿的比我還像新娘盛霎。我一直安慰自己,他們只是感情好伸蚯,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開白布摩渺。 她就那樣靜靜地躺著,像睡著了一般剂邮。 火紅的嫁衣襯著肌膚如雪摇幻。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,036評(píng)論 1 285
  • 那天挥萌,我揣著相機(jī)與錄音绰姻,去河邊找鬼。 笑死引瀑,一個(gè)胖子當(dāng)著我的面吹牛狂芋,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播憨栽,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼帜矾,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了屑柔?” 一聲冷哼從身側(cè)響起屡萤,我...
    開封第一講書人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎掸宛,沒想到半個(gè)月后死陆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡唧瘾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年措译,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了别凤。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡领虹,死狀恐怖规哪,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情掠械,我是刑警寧澤由缆,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站猾蒂,受9級(jí)特大地震影響均唉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜肚菠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一舔箭、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蚊逢,春花似錦层扶、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至终抽,卻和暖如春戳表,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背昼伴。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國打工匾旭, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人圃郊。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓价涝,卻偏偏與公主長得像,于是被迫代替她去往敵國和親持舆。 傳聞我的和親對象是個(gè)殘疾皇子色瘩,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

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