Android自定義時(shí)間選擇器届宠,支持YMDHMS,YMD,HMS,HM常用類(lèi)型,支持過(guò)去時(shí)間過(guò)濾

TimePickerView
功能介紹
1.支持YMDHMS,YMD,HMS,HM常用類(lèi)型時(shí)間顯示
2.支持過(guò)去時(shí)間過(guò)濾乘粒,不顯示出來(lái)
3.支持設(shè)置當(dāng)前默認(rèn)顯示時(shí)間
4.功能與UI分離豌注,支持樣式擴(kuò)展

功能實(shí)現(xiàn)說(shuō)明
1.通過(guò)initDisplayMode方法,初始化顯示模式灯萍,在初始化TimePickerView對(duì)象后設(shè)置

timePickerView = new TimePickerView(MainActivity.this);  
timePickerView.setMode(TimePickerView.DISPLAY_HM);

2.在彈出時(shí)間控件前轧铁,會(huì)根據(jù)設(shè)置判斷,通過(guò)initPickViewDisplayData方法設(shè)置年月日時(shí)分秒的顯示數(shù)據(jù)

//初始化顯示數(shù)據(jù)  
private void initPickViewDisplayData(){  
    try {  
        if(StringUtil.isEmpty(displayTime)){  
            pvw_year.setSelected(0);  
            pvw_month.setSelected(0);  
            pvw_day.setSelected(0);  
            pvw_hour.setSelected(0);  
            pvw_minute.setSelected(0);  
            pvw_second.setSelected(0);  
            select_year = pvw_year.getSelected();  
            select_month = pvw_month.getSelected();  
            select_day = pvw_day.getSelected();  
            select_hour = pvw_hour.getSelected();  
            select_minute = pvw_minute.getSelected();  
            select_second = pvw_second.getSelected();  
        }else{  
            Date date = DateUtil.str2Date(displayTime, mode);  
            Calendar calendar = Calendar.getInstance();  
            calendar.setTime(date);  
            select_year = DateUtil.getYear(startTime, DateUtil.PATTERN_ALL)+"";  
            select_month = DecimalUtil.keep2zero_head(DateUtil.getMonth(startTime, DateUtil.PATTERN_ALL)+"");  
            select_day = DecimalUtil.keep2zero_head(DateUtil.getDay(startTime, DateUtil.PATTERN_ALL)+"");  
            select_hour = DecimalUtil.keep2zero_head(DateUtil.getHour(startTime, DateUtil.PATTERN_ALL)+"");  
            select_minute = DecimalUtil.keep2zero_head(DateUtil.getMinute(startTime, DateUtil.PATTERN_ALL)+"");  
            select_second =DecimalUtil.keep2zero_head(DateUtil.getSecond(startTime, DateUtil.PATTERN_ALL)+"");  
            switch (mode) {  
            case DISPLAY_YMDHMS://yyyy-MM-dd HH:mm:ss  
                select_year = calendar.get(Calendar.YEAR)+"";  
                select_month = DecimalUtil.keep2zero_head(""+(calendar.get(Calendar.MONTH)+1));  
                select_day = DecimalUtil.keep2zero_head(""+(calendar.get(Calendar.DATE)));  
                select_hour = DecimalUtil.keep2zero_head(""+(calendar.get(Calendar.HOUR_OF_DAY)));  
                select_minute = DecimalUtil.keep2zero_head(""+(calendar.get(Calendar.MINUTE)));  
                select_second =DecimalUtil.keep2zero_head(""+(calendar.get(Calendar.SECOND)));  
                initData();  
                pvw_year.setSelected(select_year);  
                pvw_month.setSelected(select_month);  
                pvw_day.setSelected(select_day);  
                pvw_hour.setSelected(select_hour);  
                pvw_minute.setSelected(select_minute);  
                pvw_second.setSelected(select_second);  
                break;  
            case DISPLAY_YMD://yyyy-MM-dd  
                select_year = calendar.get(Calendar.YEAR)+"";  
                select_month = DecimalUtil.keep2zero_head(""+(calendar.get(Calendar.MONTH)+1));  
                select_day = DecimalUtil.keep2zero_head(""+(calendar.get(Calendar.DATE)));  
                initData();  
                pvw_year.setSelected(select_year);  
                pvw_month.setSelected(select_month);  
                pvw_day.setSelected(select_day);  
                break;  
            case DISPLAY_HMS://HH:mm:ss  
                select_hour = DecimalUtil.keep2zero_head(""+(calendar.get(Calendar.HOUR_OF_DAY)));  
                select_minute = DecimalUtil.keep2zero_head(""+(calendar.get(Calendar.MINUTE)));  
                select_second =DecimalUtil.keep2zero_head(""+(calendar.get(Calendar.SECOND)));  
                initData();  
                pvw_hour.setSelected(select_hour);  
                pvw_minute.setSelected(select_minute);  
                pvw_second.setSelected(select_second);  
                break;  
            case DISPLAY_HM://HH:mm:ss  
                select_hour = DecimalUtil.keep2zero_head(""+(calendar.get(Calendar.HOUR_OF_DAY)));  
                select_minute = DecimalUtil.keep2zero_head(""+(calendar.get(Calendar.MINUTE)));  
                initData();  
                pvw_hour.setSelected(select_hour);  
                pvw_minute.setSelected(select_minute);  
                break;  
            default:  
                break;  
            }  
        }  
    } catch (Exception e) {  
        // TODO: handle exception  
    }  
}  

3.初始化時(shí)間數(shù)據(jù)的時(shí)候竟稳,通過(guò)調(diào)用initData方法初始年月日時(shí)分秒滾動(dòng)組件的數(shù)據(jù)集合

//初始日  
private void initDay(boolean isSlide){  
int start_day = DateUtil.getDay(startTime, DateUtil.PATTERN_ALL);  
int day_of_month = DateUtil.getDayOfMonth(startTime,DateUtil.PATTERN_ALL);  
int start_year =  DateUtil.getYear(startTime, DateUtil.PATTERN_ALL);  
int start_month =  DateUtil.getMonth(startTime, DateUtil.PATTERN_ALL);  
String select_time = select_year + "-" + select_month;  
String start_time = start_year + "-" + DecimalUtil.keep2zero_head(start_month + "");  
//判斷當(dāng)前選擇時(shí)間是否是開(kāi)始時(shí)間  
if (!select_time.equals(start_time)) {  
start_day = 1;  
}  
String now_time = select_year + "-" + select_month + "-01 00:00:00";  
day_of_month = DateUtil.getDayOfMonth(now_time, DateUtil.PATTERN_ALL);  
day_list.clear();  
for(int i=start_day;i<=day_of_month;i++){  
day_list.add(DecimalUtil.keep2zero_head(i+""));  
}  
//滑動(dòng)時(shí)執(zhí)行  
if(isSlide){  
pvw_day.invalidate();  
pvw_day.setSelected(0);  
select_day = pvw_day.getSelected();  
excuteAnimator(ANIMATORDELAY, pvw_day);  
pvw_day.postDelayed(new Runnable() {  
@Override  
public void run() {  
initHour(true);  
}  
}, CHANGEDELAY);  
}  
}  

以下是效果圖
YMDHMS


YMD

HMS

HM

YMD 過(guò)濾過(guò)去時(shí)間


源碼下載
參考博客
http://blog.csdn.net/zhongkejingwang/article/details/38513301

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末属桦,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子他爸,更是在濱河造成了極大的恐慌聂宾,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,348評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件诊笤,死亡現(xiàn)場(chǎng)離奇詭異系谐,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)讨跟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)纪他,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人晾匠,你說(shuō)我怎么就攤上這事茶袒。” “怎么了凉馆?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,936評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵薪寓,是天一觀的道長(zhǎng)亡资。 經(jīng)常有香客問(wèn)我,道長(zhǎng)向叉,這世上最難降的妖魔是什么锥腻? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,427評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮母谎,結(jié)果婚禮上瘦黑,老公的妹妹穿的比我還像新娘。我一直安慰自己奇唤,他們只是感情好幸斥,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,467評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著冻记,像睡著了一般睡毒。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上冗栗,一...
    開(kāi)封第一講書(shū)人閱讀 49,785評(píng)論 1 290
  • 那天演顾,我揣著相機(jī)與錄音,去河邊找鬼隅居。 笑死钠至,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的胎源。 我是一名探鬼主播棉钧,決...
    沈念sama閱讀 38,931評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼涕蚤!你這毒婦竟也來(lái)了宪卿?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,696評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤万栅,失蹤者是張志新(化名)和其女友劉穎佑钾,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體烦粒,經(jīng)...
    沈念sama閱讀 44,141評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡休溶,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,483評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了扰她。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片兽掰。...
    茶點(diǎn)故事閱讀 38,625評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖徒役,靈堂內(nèi)的尸體忽然破棺而出孽尽,到底是詐尸還是另有隱情,我是刑警寧澤忧勿,帶...
    沈念sama閱讀 34,291評(píng)論 4 329
  • 正文 年R本政府宣布泻云,位于F島的核電站艇拍,受9級(jí)特大地震影響狐蜕,放射性物質(zhì)發(fā)生泄漏宠纯。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,892評(píng)論 3 312
  • 文/蒙蒙 一层释、第九天 我趴在偏房一處隱蔽的房頂上張望婆瓜。 院中可真熱鬧,春花似錦贡羔、人聲如沸廉白。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)猴蹂。三九已至,卻和暖如春楣嘁,著一層夾襖步出監(jiān)牢的瞬間磅轻,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工逐虚, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留聋溜,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓叭爱,卻偏偏與公主長(zhǎng)得像撮躁,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子买雾,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,492評(píng)論 2 348

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

  • BankCheck:銀行卡管理 checkBankCard : 校驗(yàn)銀行卡卡號(hào)是否合法getBankCardChe...
    慕涵盛華閱讀 1,326評(píng)論 0 8
  • 今晚的昆明看不見(jiàn)月亮把曼,36樓的大落地窗前只有隱隱的云彩在夜空中±齑看了一點(diǎn)《深夜廚房》才打算睡覺(jué)嗤军,些許小溫暖這樣浮...
    古月心禪茶閱讀 201評(píng)論 0 0
  • 今年是背井離鄉(xiāng)外出打工的第三年了型雳,記得大一輟學(xué)之后就徹底告別了學(xué)校生涯,劍未佩妥山害,出門(mén)已是江湖纠俭。 我經(jīng)常會(huì)給自己說(shuō)...
    我在為他編故事閱讀 181評(píng)論 0 0
  • 《皮囊》 忘了什么時(shí)候在哪兒聽(tīng)說(shuō)過(guò)《皮囊》這本書(shū)的名字,原以為這會(huì)是一部小說(shuō)浪慌。但是在多看上試讀了之后冤荆,方才知曉這是...
    古拉閱讀 635評(píng)論 0 1
  • 薛濤:蘭花般的清雅女子,穿越時(shí)空,都能聞到她那淡淡清香.香而不膩,清而悠長(zhǎng). 喜歡她,不僅僅是她的詩(shī),她的貌,而是...
    妙六爺閱讀 236評(píng)論 0 0