日期選擇器、時(shí)間選擇器、單項(xiàng)選擇器、城市地址選擇器等

項(xiàng)目中要用到鐘表控件,就嘗試了一些開源項(xiàng)目。

1.android自帶日歷/鐘表控件:

個(gè)人的看法:日歷/鐘表控件在不同5.0手機(jī)和6.0手機(jī)展示的不一樣的效果,6.0手機(jī)上展示的感覺很丑。而且日歷控件每次只能翻到下月,沒有選擇年份,要跨越很大的年份的話,只能狂點(diǎn)按鈕。

使用:

 //日歷控件
        DatePickerDialog dp = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
            @Override
            public void onDateSet(DatePicker datePicker, int iyear, int monthOfYear, int dayOfMonth) {
                long maxDate = datePicker.getMaxDate();//日歷最大能設(shè)置的時(shí)間的毫秒值
                int year = datePicker.getYear();//年
                int month = datePicker.getMonth();//月-1
                int dayOfMonth1 = datePicker.getDayOfMonth();//日
                //iyear:年,monthOfYear:月-1,dayOfMonth:日
                Toast.makeText(getApplicationContext(), iyear +":"+ (monthOfYear+1)+":"+dayOfMonth , Toast.LENGTH_LONG).show();
            }
        }, 2013, 2, 1);//2013:初始年份,2:初始月份-1 ,1:初始日期
        dp.show();
//鐘表控件
        TimePickerDialog tp = new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() {
            @RequiresApi(api = Build.VERSION_CODES.M)
            @Override
            public void onTimeSet(TimePicker timePicker, int hourOfDay, int iminute) {
                /*int minute = timePicker.getMinute();//分鐘
                int hour = timePicker.getHour();//小時(shí)*/
                //hourOfDay:小時(shí),iminute分鐘
                Toast.makeText(getApplicationContext(), hourOfDay +":"+ iminute , Toast.LENGTH_LONG).show();
            }
        }, 12, 0, true);//12:鐘表初始小時(shí)數(shù),0:鐘表初始分鐘數(shù)
        tp.show();//記得show一下

2.gzu-liyujiang/AndroidPicker

簡(jiǎn)介:安卓選擇器類庫(kù),包括日期選擇器、時(shí)間選擇器、單項(xiàng)選擇器、城市地址選擇器、車牌號(hào)選擇器、數(shù)字選擇器、星座選擇器、生肖選擇器、顏色選擇器、文件選擇器、目錄選擇器等,可自定義頂部及底部界面,可自定義窗口動(dòng)畫...

github地址:https://github.com/gzu-liyujiang/AndroidPicker

star:1900+

個(gè)人看法:功能很強(qiáng)大,感覺挺好

①配置gradle

1.  compile 'cn.qqtheme.framework:WheelPicker:1.4.5'                //時(shí)間選擇器  
2.  compile 'cn.qqtheme.framework:FilePicker:1.4.5'  
3.  compile 'cn.qqtheme.framework:ColorPicker:1.4.5'  

②使用

DateTimePicker picker = new DateTimePicker(this, DateTimePicker.HOUR_24);//24小時(shí)值
        picker.setDateRangeStart(2017, 1, 1);//日期起點(diǎn)
        picker.setDateRangeEnd(2020, 1,1);//日期終點(diǎn)
        picker.setTimeRangeStart(0, 0);//時(shí)間范圍起點(diǎn)
        picker.setTimeRangeEnd(23, 59);//時(shí)間范圍終點(diǎn)
        picker.setOnDateTimePickListener(new DateTimePicker.OnYearMonthDayTimePickListener() {
            @Override
            public void onDateTimePicked(String year, String month, String day, String hour, String minute) {
                //year:年,month:月,day:日,hour:時(shí),minute:分
                Toast.makeText(getApplicationContext(), year + "-" + month + "-" + day + " " 
                        + hour + ":" + minute, Toast.LENGTH_LONG).show();
            }
        });
        picker.show();
image

3.Bigkoo/Android-PickerView

簡(jiǎn)介:時(shí)間選擇器、省市區(qū)三級(jí)聯(lián)動(dòng),可以自定義

github地址:https://github.com/Bigkoo/Android-PickerView

star:3800+

個(gè)人看法:功能很強(qiáng)大,但是我發(fā)現(xiàn)一個(gè)問題:如果此時(shí)已經(jīng)彈出對(duì)話框,使用這個(gè)控件的時(shí)候顯示在對(duì)話框下層

①配置gradle

compile 'com.contrarywind:Android-PickerView:3.2.4'  

②使用

TimePickerView pvTime = new TimePickerView.Builder(this, new TimePickerView.OnTimeSelectListener() {
            @Override
            public void onTimeSelect(Date date,View v) {//選中事件回調(diào)
                SimpleDateFormat sm = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                Date d = new Date(date.getTime());
                String time = sm.format(d);
                Toast.makeText(getApplicationContext(),time, Toast.LENGTH_LONG).show();
            }
        }).build();
        pvTime.setDate(Calendar.getInstance());//注:根據(jù)需求來決定是否使用該方法(一般是精確到秒的情況),此項(xiàng)可以在彈出選擇器的時(shí)候重新設(shè)置當(dāng)前時(shí)間,避免在初始化之后由于時(shí)間已經(jīng)設(shè)定,導(dǎo)致選中時(shí)間與當(dāng)前時(shí)間不匹配的問題。
        pvTime.show();
image

4.mrfluency/Time-Selector

簡(jiǎn)介:android的時(shí)間選擇器控件

github地址:https://github.com/mrfluency/Time-Selector

star:130+

個(gè)人看法:使用效果挺好,就是有個(gè)問題:進(jìn)入時(shí)顯示設(shè)定的初始時(shí)間,而非當(dāng)前時(shí)間。

①配置gradle

1.  compile 'com.feezu.liuli:timeselector:1.1.3'   

②使用

第一種:參數(shù)說明:ResultHandler為選取時(shí)間后的回調(diào) startDate,endDate為時(shí)間控件的可選起始時(shí)間和結(jié)束時(shí)間。

TimeSelector timeSelector = new TimeSelector(this, new TimeSelector.ResultHandler() {
            @Override
            public void handle(String time) {
                Toast.makeText(getApplicationContext(), time, Toast.LENGTH_LONG).show();
            }
        }, "2015-11-22 17:34", "2016-12-1 15:20");
        // 2015-11-22 17:34 時(shí)間起點(diǎn)(時(shí)間起點(diǎn)不能大于時(shí)間終點(diǎn))
        //2016-12-1 15:20  時(shí)間終點(diǎn)
        timeSelector.show();

第二種:參數(shù)說明:傳入workStartTime,workEndTime可選時(shí)間為起始時(shí)間和結(jié)束時(shí)間范圍內(nèi)的每日“時(shí):分”的起始和結(jié)束時(shí)間,如限制可選時(shí)間為:朝9晚5。

TimeSelector timeSelector = new TimeSelector(this, new TimeSelector.ResultHandler() {
            @Override
            public void handle(String time) {
                Toast.makeText(getApplicationContext(), time, Toast.LENGTH_LONG).show();
            }
        }, "2015-10-30 10:34", "2015-12-1 17:34","9:00","17:00");
timeSelector.show();
image

5.結(jié)語:大概就是這樣,大家看著使唄...

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 自己總結(jié)的Android開源項(xiàng)目及庫(kù)。 github排名https://github.com/trending,g...
    passiontim閱讀 2,588評(píng)論 1 26
  • 各種幫助類匯總:https://github.com/Blankj/AndroidUtilCode 常用的 ios...
    懦弱的me閱讀 1,285評(píng)論 0 51
  • 如果你看到了這篇文章,希望你耐心的把它看完。我保證你認(rèn)真看完了全部,一定不會(huì)讓你失望。因?yàn)槟憧赡苡龅搅耸飞献詈糜玫?..
    笨小孩丶閱讀 39,306評(píng)論 34 145
  • 最早一次發(fā)現(xiàn)你始終跟隨著我的步伐是兒時(shí)爸爸晚飯后帶我散步。那時(shí)你眾星環(huán)繞,皎潔明亮,對(duì)什么都很好奇的我一抬頭就看見...
    山燎閱讀 384評(píng)論 4 2
  • 對(duì)于生活,有人說是食物,有人說是旅行,有人說是身邊的人。 我不懂生活,我不懂美食,我不懂旅行,我不懂世間大愛。 我...
    深藍(lán)不會(huì)寫小說閱讀 225評(píng)論 0 0