This is a 2-in-1 Date-Time-Picker in Android built using SublimePicker.
Add the dependency to your app level build.gradle file
implementation 'com.appeaser.sublimepickerlibrary:sublimepickerlibrary:2.1.2'
Create a class called SublimePickerDialogFragment.
import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.DialogFragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.admads.transitguide.R; import com.appeaser.sublimepickerlibrary.SublimePicker; import com.appeaser.sublimepickerlibrary.datepicker.SelectedDate; import com.appeaser.sublimepickerlibrary.helpers.SublimeListenerAdapter; import com.appeaser.sublimepickerlibrary.helpers.SublimeOptions; import com.appeaser.sublimepickerlibrary.recurrencepicker.SublimeRecurrencePicker; import java.text.DateFormat; import java.util.Locale; import java.util.TimeZone; public class SublimePickerDialogFragment extends DialogFragment { DateFormat mDateFormatter, mTimeFormatter; SublimePicker mSublimePicker; Callback mCallback; SublimeListenerAdapter mListener = new SublimeListenerAdapter() { @Override public void onCancelled() { if (mCallback!= null) { mCallback.onCancelled(); } dismiss(); } @Override public void onDateTimeRecurrenceSet(SublimePicker sublimeMaterialPicker, SelectedDate selectedDate, int hourOfDay, int minute, SublimeRecurrencePicker.RecurrenceOption recurrenceOption, String recurrenceRule) { if (mCallback != null) { mCallback.onDateTimeRecurrenceSet(selectedDate, hourOfDay, minute, recurrenceOption, recurrenceRule); } dismiss(); } }; public SublimePickerDialogFragment() { mDateFormatter = DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.getDefault()); mTimeFormatter = DateFormat.getTimeInstance(DateFormat.SHORT, Locale.getDefault()); mTimeFormatter.setTimeZone(TimeZone.getTimeZone("GMT+0")); } public void setCallback(Callback callback) { mCallback = callback; } @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { mSublimePicker = (SublimePicker) getActivity().getLayoutInflater().inflate(R.layout.sublime_picker, container); Bundle arguments = getArguments(); SublimeOptions options = null; if (arguments != null) { options = arguments.getParcelable("SUBLIME_OPTIONS"); } mSublimePicker.initializePicker(options, mListener); return mSublimePicker; } public interface Callback { void onCancelled(); void onDateTimeRecurrenceSet(SelectedDate selectedDate, int hourOfDay, int minute, SublimeRecurrencePicker.RecurrenceOption recurrenceOption, String recurrenceRule); } }
In your activity/fragment, write this function to show the picker and handle the selection
public void sublimePicker() { SublimePickerDialogFragment.Callback mFragmentCallback = new SublimePickerDialogFragment.Callback() { @Override public void onCancelled() { } @Override public void onDateTimeRecurrenceSet(SelectedDate mSelectedDate, int hourOfDay, int minute, SublimeRecurrencePicker.RecurrenceOption recurrenceOption, String recurrenceRule) { if (mSelectedDate != null) { //sample handling. add your own handling here. int year = mSelectedDate.getEndDate().get(Calendar.YEAR); int month = mSelectedDate.getEndDate().get(Calendar.MONTH); int day = mSelectedDate.getEndDate().get(Calendar.DATE); GregorianCalendar date = new GregorianCalendar(year, month, day, hourOfDay, minute, 0); long epoch = date.getTimeInMillis(); String datestr = Helper.epoch2DateString(epoch,"dd MMM, hh:mm a"); txttime.setText(datestr); } } }; SublimePickerDialogFragment pickerFrag = new SublimePickerDialogFragment(); pickerFrag.setCallback(mFragmentCallback); SublimeOptions opts = new SublimeOptions().setCanPickDateRange(false).setDisplayOptions(SublimeOptions.ACTIVATE_DATE_PICKER | SublimeOptions.ACTIVATE_TIME_PICKER).setPickerToShow(SublimeOptions.Picker.TIME_PICKER); Bundle bundle = new Bundle(); bundle.putParcelable("SUBLIME_OPTIONS", opts); pickerFrag.setArguments(bundle); pickerFrag.setStyle(DialogFragment.STYLE_NO_TITLE, 0); pickerFrag.show(getActivity().getSupportFragmentManager(), "SUBLIME_PICKER"); }
—
Leave A Comment