alcatrazbr
1/20/2017 - 11:47 PM

materiali design DatePickerDialog

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'