項(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();
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();
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();
5.結(jié)語:大概就是這樣,大家看著使唄...