package com.tr4android.appcompatextension.activity; import android.app.Dialog; import android.content.Intent; import android.graphics.Color; import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Bundle; import android.support.v4.app.DialogFragment; import android.support.v4.content.ContextCompat; import android.support.v4.graphics.drawable.DrawableCompat; import android.support.v7.widget.Toolbar; import android.view.View; import android.widget.ImageView; import android.widget.TextView; import com.tr4android.appcompatextension.R; import com.tr4android.support.extension.drawable.PlaceholderDrawable; import com.tr4android.support.extension.picker.date.AppCompatDatePicker; import com.tr4android.support.extension.picker.date.AppCompatDatePickerDialog; import com.tr4android.support.extension.picker.time.AppCompatTimePicker; import com.tr4android.support.extension.picker.time.AppCompatTimePickerDialog; import com.tr4android.support.extension.utils.ThemeUtils; import java.util.Calendar; public class PickerDialogActivity extends BaseActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_picker_dialog); // Setup toolbar setSupportActionBar((Toolbar) findViewById(R.id.toolbar)); getSupportActionBar().setDisplayHomeAsUpEnabled(true); // for conversion from dp (dependent pixels) float dp = getResources().getDisplayMetrics().density; // Setup DatePickerDialog CardView header PlaceholderDrawable placeholderDatePicker = new PlaceholderDrawable.Builder(this) .setPlaceholderImage(R.drawable.ic_event_black_24dp) .setPlaceholderImageColor(Color.WHITE) .setPlaceholderImageSize(Math.round(24 * dp)).build(); ((ImageView) findViewById(R.id.header_image_date)).setImageDrawable(placeholderDatePicker); // Setup TimePickerDialog CardView header PlaceholderDrawable placeholderTimePicker = new PlaceholderDrawable.Builder(this) .setPlaceholderImage(R.drawable.ic_schedule_black_24dp) .setPlaceholderImageColor(Color.WHITE) .setPlaceholderImageSize(Math.round(24 * dp)).build(); ((ImageView) findViewById(R.id.header_image_time)).setImageDrawable(placeholderTimePicker); // Setup external link listener final String link = ((TextView) findViewById(R.id.href_link)).getText().toString(); findViewById(R.id.external_link).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent i = new Intent(Intent.ACTION_VIEW); i.setData(Uri.parse(link)); startActivity(i); } }); // Setup dialog launch listeners findViewById(R.id.buttonDateLight).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // Show new light DatePickerDialog DialogFragment datePicker = new DatePickerLightFragment(); datePicker.show(getSupportFragmentManager(), "datePicker"); } }); findViewById(R.id.buttonDateDark).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // Show new dark DatePickerDialog DialogFragment datePicker = new DatePickerDarkFragment(); datePicker.show(getSupportFragmentManager(), "datePicker"); } }); findViewById(R.id.buttonTimeLight).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // Show new light TimePickerDialog DialogFragment timePicker = new TimePickerLightFragment(); timePicker.show(getSupportFragmentManager(), "timePicker"); } }); findViewById(R.id.buttonTimeDark).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // Show new dark TimePickerDialog DialogFragment timePicker = new TimePickerDarkFragment(); timePicker.show(getSupportFragmentManager(), "timePicker"); } }); } public static class DatePickerLightFragment extends DialogFragment implements AppCompatDatePickerDialog.OnDateSetListener { @Override public Dialog onCreateDialog(Bundle savedInstanceState) { final Calendar c = Calendar.getInstance(); int year = c.get(Calendar.YEAR); int month = c.get(Calendar.MONTH); int day = c.get(Calendar.DAY_OF_MONTH); // Create a new instance of AppCompatDatePickerDialog and return it return new AppCompatDatePickerDialog(getActivity(), this, year, month, day); } public void onDateSet(AppCompatDatePicker view, int year, int month, int day) { // Do something with the date chosen by the user } } public static class TimePickerLightFragment extends DialogFragment implements AppCompatTimePickerDialog.OnTimeSetListener { @Override public Dialog onCreateDialog(Bundle savedInstanceState) { // Use the current time as the default values for the picker final Calendar c = Calendar.getInstance(); int hour = c.get(Calendar.HOUR_OF_DAY); int minute = c.get(Calendar.MINUTE); // Create a new instance of TimePickerDialog and return it return new AppCompatTimePickerDialog(getActivity(), this, hour, minute, false); } public void onTimeSet(AppCompatTimePicker view, int hourOfDay, int minute) { // Do something with the time chosen by the user } } public static class DatePickerDarkFragment extends DialogFragment implements AppCompatDatePickerDialog.OnDateSetListener { @Override public Dialog onCreateDialog(Bundle savedInstanceState) { final Calendar c = Calendar.getInstance(); int year = c.get(Calendar.YEAR); int month = c.get(Calendar.MONTH); int day = c.get(Calendar.DAY_OF_MONTH); // Create a new instance of AppCompatDatePickerDialog and return it return new AppCompatDatePickerDialog(getActivity(), R.style.Theme_AppCompat_DatePickerDialog, this, year, month, day); } public void onDateSet(AppCompatDatePicker view, int year, int month, int day) { // Do something with the date chosen by the user } } public static class TimePickerDarkFragment extends DialogFragment implements AppCompatTimePickerDialog.OnTimeSetListener { @Override public Dialog onCreateDialog(Bundle savedInstanceState) { // Use the current time as the default values for the picker final Calendar c = Calendar.getInstance(); int hour = c.get(Calendar.HOUR_OF_DAY); int minute = c.get(Calendar.MINUTE); // Create a new instance of TimePickerDialog and return it return new AppCompatTimePickerDialog(getActivity(), R.style.Theme_AppCompat_TimePickerDialog, this, hour, minute, false); } public void onTimeSet(AppCompatTimePicker view, int hourOfDay, int minute) { // Do something with the time chosen by the user } } }