materiali design DatePickerDialog
private int year, month, day, hour, minute;
public void scheduleOrder(View view) {
initDateTimeData();
Calendar cDefault = Calendar.getInstance();
cDefault.set(year, month, day);
DatePickerDialog datePickerDialog = DatePickerDialog.newInstance(
this,
cDefault.get(Calendar.YEAR),
cDefault.get(Calendar.MONTH),
cDefault.get(Calendar.DAY_OF_MONTH)
);
Calendar cMin = Calendar.getInstance();
Calendar cMax = Calendar.getInstance();
cMax.set( cMax.get(Calendar.YEAR), 11, 31 );
datePickerDialog.setMinDate(cMin);
datePickerDialog.setMaxDate(cMax);
List<Calendar> daysList = new LinkedList<>();
Calendar[] daysArray;
Calendar cAux = Calendar.getInstance();
while( cAux.getTimeInMillis() <= cMax.getTimeInMillis() ){
if( cAux.get( Calendar.DAY_OF_WEEK ) != 1 && cAux.get( Calendar.DAY_OF_WEEK ) != 7 ){
Calendar c = Calendar.getInstance();
c.setTimeInMillis( cAux.getTimeInMillis() );
daysList.add( c );
}
cAux.setTimeInMillis( cAux.getTimeInMillis() + ( 24 * 60 * 60 * 1000 ) );
}
daysArray = new Calendar[ daysList.size() ];
for( int i = 0; i < daysArray.length; i++ ){
daysArray[i] = daysList.get(i);
}
datePickerDialog.setSelectableDays( daysArray );
datePickerDialog.setOnCancelListener(this);
datePickerDialog.show( getFragmentManager(), "DatePickerDialog" );
}
private void initDateTimeData() {
if ( year == 0 ) {
Calendar c = Calendar.getInstance();
year = c.get(Calendar.YEAR);
month = c.get(Calendar.MONTH);
day = c.get(Calendar.DAY_OF_MONTH);
hour = c.get(Calendar.HOUR_OF_DAY);
minute = c.get(Calendar.MINUTE);
}
}
@Override
public void onDateSet(DatePickerDialog view, int year, int monthOfYear, int dayOfMonth) {
Calendar tDefault = Calendar.getInstance();
tDefault.set(year, month, day, hour, minute);
this.year = year;
this.month = monthOfYear;
this.day = dayOfMonth;
TimePickerDialog timePickerDialog = TimePickerDialog.newInstance(
this,
tDefault.get(Calendar.HOUR_OF_DAY),
tDefault.get(Calendar.MINUTE),
true
);
timePickerDialog.setOnCancelListener(this);
timePickerDialog.show(getFragmentManager(), "timePickerDialog");
}
@Override
public void onCancel(DialogInterface dialog) {
year = month = day = hour = minute = 0;
lblHrAgendamento.setText(getResources().getString(R.string.selecione_agendar));
dtAgendamento = null;
}
@Override
public void onTimeSet(TimePickerDialog view, int hourOfDay, int iminute, int second) {
if ((hourOfDay < 8) || (hourOfDay > 19)) {
onDateSet(null, year, month, day);
Toast.makeText(this, getResources().getString(R.string.disponivel_horario), Toast.LENGTH_SHORT).show();
return;
}
hour = hourOfDay;
minute = iminute;
lblHrAgendamento.setText((day < 10 ? "0" + day : day) + "/" +
(month+1 < 10? "0"+(month+1) : month+1) + "/" +
year + " às " +
(hour < 10 ? "0"+hour : hour) + "h" +
(minute < 10 ? "0" + minute: minute));
dtAgendamento = new DateTime(year, month+1, day, hour, minute);
}
compile 'com.wdullaer:materialdatetimepicker:3.1.0'