package org.techtown.picker; import android.content.Context; import android.support.annotation.Nullable; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.CompoundButton.OnCheckedChangeListener; import android.widget.DatePicker; import android.widget.DatePicker.OnDateChangedListener; import android.widget.LinearLayout; import android.widget.TimePicker; import android.widget.TimePicker.OnTimeChangedListener; import java.util.Calendar; /** * º¹ÇÕÀ§Á¬ Ŭ·¡½º Á¤ÀÇ * * @author Mike * */ public class DateTimePicker extends LinearLayout { /** * ³¯Â¥³ª ½Ã°£ÀÌ ¹Ù²ð ¶§ È£ÃâµÇ´Â ¸®½º³Ê »õ·Î Á¤ÀÇ */ public static interface OnDateTimeChangedListener { void onDateTimeChanged(DateTimePicker view, int year, int monthOfYear, int dayOfYear, int hourOfDay, int minute); } static public int max = 500; /** * ¸®½º³Ê °´Ã¼ */ private OnDateTimeChangedListener listener; /** * ³¯Â¥¼±Åà À§Á¬ */ private DatePicker datePicker; /** * ½Ã°£¼±Åà À§Á¬ */ private TimePicker timePicker; /** * üũ¹Ú½º */ private CheckBox enableTimeCheckBox; public DateTimePicker(Context context) { super(context); init(context); } public DateTimePicker(Context context, @Nullable AttributeSet attrs) { super(context, attrs); init(context); } private void init(Context context) { // XML ·¹À̾ƿôÀ» ÀÎÇ÷¹À̼ÇÇÔ // LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); // inflater.inflate(R.layout.datetimepicker, this, true); LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); inflater.inflate(R.layout.datetimepicker,this,true); // ½Ã°£ Á¤º¸ ÂüÁ¶ Calendar calendar = Calendar.getInstance(); final int curYear = calendar.get(Calendar.YEAR); final int curMonth = calendar.get(Calendar.MONTH); final int curDay = calendar.get(Calendar.DAY_OF_MONTH); final int curHour = calendar.get(Calendar.HOUR_OF_DAY); final int curMinute = calendar.get(Calendar.MINUTE); // ³¯Â¥¼±Åà À§Á¬ ÃʱâÈ­ datePicker = (DatePicker)findViewById(R.id.datePicker); datePicker.init(curYear, curMonth, curDay, new OnDateChangedListener() { public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) { // »õ·Î Á¤ÀÇÇÑ ¸®½º³Ê·Î À̺¥Æ® Àü´Þ // getHour(), getMinute() ¸Þ¼Òµå´Â API 23ºÎÅÍ Áö¿øÇÔ if(listener != null){ listener.onDateTimeChanged( DateTimePicker.this, year, monthOfYear, dayOfMonth, timePicker.getCurrentHour(), timePicker.getCurrentMinute()); } } }); // üũ¹Ú½º À̺¥Æ® ó¸® enableTimeCheckBox = (CheckBox)findViewById(R.id.enableTimeCheckBox); enableTimeCheckBox.setOnCheckedChangeListener(new OnCheckedChangeListener() { public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { timePicker.setEnabled(isChecked); timePicker.setVisibility((enableTimeCheckBox).isChecked()?View.VISIBLE:View.INVISIBLE); } }); // ½Ã°£¼±Åà À§Á¬ À̺¥Æ® ó¸® timePicker = (TimePicker)findViewById(R.id.timePicker); timePicker.setOnTimeChangedListener(new OnTimeChangedListener() { public void onTimeChanged(TimePicker view, int hourOfDay, int minute) { if(listener != null) { listener.onDateTimeChanged( DateTimePicker.this, datePicker.getYear(), datePicker.getMonth(), datePicker.getDayOfMonth(), hourOfDay, minute); } } }); timePicker.setCurrentHour(curHour); timePicker.setCurrentMinute(curMinute); timePicker.setEnabled(enableTimeCheckBox.isChecked()); timePicker.setVisibility((enableTimeCheckBox.isChecked()?View.VISIBLE:View.INVISIBLE)); } public void setOnDateTimeChangedListener(OnDateTimeChangedListener dateTimeListener){ this.listener = dateTimeListener; } public void updateDateTime(int year, int monthOfYear, int dayOfMonth, int currentHour, int currentMinute){ datePicker.updateDate(year, monthOfYear, dayOfMonth); timePicker.setCurrentHour(currentHour); timePicker.setCurrentMinute(currentMinute); } public void updateDate(int year, int monthOfYear, int dayOfMonth){ datePicker.updateDate(year, monthOfYear, dayOfMonth); } public void setIs24HourView(final boolean is24HourView){ timePicker.setIs24HourView(is24HourView); } public int getYear() { return datePicker.getYear(); } public int getMonth() { return datePicker.getMonth(); } public int getDayOfMonth() { return datePicker.getDayOfMonth(); } public int getCurrentHour() { return timePicker.getCurrentHour(); } public int getCurrentMinute() { return timePicker.getCurrentMinute(); } public boolean enableTime() { return enableTimeCheckBox.isChecked(); } }