日期DatePicker和時間TimePicker

//要實現接口:OnDateSetListener,OnTimeSetListener,OnTimeChangedListener對應的onDateSet,onTimeSet,onTimeChanged方法

public class DatePickerActivity extends Activity implements OnDateSetListener,OnTimeSetListener,OnTimeChangedListener {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_date_picker);
  date_time_pick();
 }

 private TextView mDateDisplay;
 private int mYear;
 private int mMonth;
 private int mDay;
 private int mHour;
 private int mMinute;

 static final int TIME_DIALOG_ID = 0;
 static final int DATE_DIALOG_ID = 1;

 private void date_time_pick(){
  final Calendar calendar=Calendar.getInstance();//取得當前日期
  mYear=calendar.get(Calendar.YEAR);//得到當前日期的年份
  mMonth=calendar.get(Calendar.MONTH);
  mDay=calendar.get(Calendar.DAY_OF_MONTH);
  mHour=calendar.get(Calendar.HOUR_OF_DAY);
  mMinute=calendar.get(Calendar.MINUTE);
  
  mDateDisplay = (TextView) findViewById(R.id.txtTitle);
  //日期選擇
  Button date_pickper_btn=(Button)findViewById(R.id.pickDate);
  date_pickper_btn.setOnClickListener(new Button.OnClickListener(){
   @Override
   public void onClick(View v){
    showDialog(DATE_DIALOG_ID);
   }
  });
  //日期選擇
  Button time_pickper_btn=(Button)findViewById(R.id.pickTime);
  time_pickper_btn.setOnClickListener(new Button.OnClickListener(){
   @Override
   public void onClick(View v){
    showDialog(TIME_DIALOG_ID);
   }
  });
 }

 /* (non-Javadoc)
  * @see android.app.Activity#onCreateDialog(int)
  */
 @Override
 protected Dialog onCreateDialog(int id) {
   switch (id) {
         case TIME_DIALOG_ID:
             return new TimePickerDialog(this,
                     this, mHour, mMinute, false);//最後一個參數如果爲true,則表示24小時制,setIs24HourView(true)
         case DATE_DIALOG_ID:
             return new DatePickerDialog(this,
               this,
                         mYear, mMonth, mDay);
     }
     return null;
 }

 /**
  * 更新顯示
  */
 private void updateDisplay() {
   mDateDisplay.setText(
     new StringBuilder().append(mYear).append("年")
     .append(mMonth + 1).append("月")
     .append(mDay).append("日")
     .append(pad(mHour)).append(":").append(pad(mMinute))); 
 }
 
    private void updateDisplay(int hourOfDay, int minute) {
        mDateDisplay.setText(
                    new StringBuilder()
                    .append(pad(hourOfDay)).append(":")
                    .append(pad(minute)));
    }

 /**
  * 時間點格式
  * @param i
  * @return
  */
 private static String pad(int i) {
   if (i  >= 10)
             return String.valueOf(i);
         else
             return "0" + String.valueOf(i);
 }
 
 @Override
 public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
  updateDisplay(hourOfDay, minute);
 }
 @Override
  public void onDateSet(DatePicker view, int year, int monthOfYear,
            int dayOfMonth) {
        mYear = year;
        mMonth = monthOfYear;
        mDay = dayOfMonth;
        updateDisplay();
    }
 
 @Override
  public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
       mHour = hourOfDay;
       mMinute = minute;
       updateDisplay();
   }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章