iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 18
0
Software Development

英國研究顯示,連續30天用Kotlin開發Android將有益於身心健康系列 第 18

Android Kotlin 實作 Day 11:DAY11_Alarm(下)(DatePickerDialog+TimePickerDialog)

<< 接續上篇

Method


DatePickerDialog

日期選擇對話框,可以讓使用者選擇日期

  • 建立 DatePickerDialog

    • DatePickerDialog (context: Context)

      建立一個為初始日期為現在日期及預設樣式的日期選擇對話框

      • context:建立日期選擇對話框的 parent context。
    • DatePickerDialog (context: Context, themeResId: Int)

      建立一個初始日期為現在日期及指定樣式的日期選擇對話框

      • context:建立日期選擇對話框的 parent context。

      • themeResId:指定想要的樣式的 resource ID,若為 0 則為 parent context 預設的樣式。

        關於日期選擇對話框的樣式可以參考 參考資料

    • DatePickerDialog (context: Context,
               listener: DatePickerDialog.OnDateSetListener
               year: Int,
               month: Int,
               dayOfMonth: Int)

      建立指定初始日期與預設主題的日期選擇對話框

      • context:建立日期選擇對話框的 parent context。

      • listener:監聽使用者選擇的日期,使用者選擇日期後會調用監聽器。

      • year:指定日期選擇對話框初始要顯示的年份。

      • month:指定日期選擇對話框初始要顯示的月份。

      • dayOfMonth:指定日期選擇對話框初始要顯示的日期。

      DatePickerDialog(this,
                   dateListener,
                   calender.get(Calendar.YEAR),
                   calender.get(Calendar.MONTH),
                   calender.get(Calendar.DAY_OF_MONTH))
      
    • DatePickerDialog (context: Context,
               themeResId: Int,
               listener: DatePickerDialog.OnDateSetListener,
               year: Int,
               monthOfYear: Int,
               dayOfMonth: Int)

      建立指定初始日期與樣式的日期選擇對話框

      • context:建立日期選擇對話框的 parent context。

      • themeResId:指定想要的樣式的 resource ID,若為 0 則為 parent context 預設的樣式。

        關於日期選擇對話框的樣式可以參考 [參考資料]

      • listener:監聽使用者選擇的日期,使用者選擇日期後會調用監聽器。

      • year:指定日期選擇對話框初始要顯示的年份。

      • month:指定日期選擇對話框初始要顯示的月份。

      • dayOfMonth:指定日期選擇對話框初始要顯示的日期。

    建立完日期選擇對話框後要使用 show() 方法顯示出來

    DatePickerDialog( ... ).show()
    
  • OnDateSetListener

    用來監聽使用者選擇的日期的 interface

    val dateListener = object: DatePickerDialog.OnDateSetListener { }
    

    只有一個需要 override 的 funtion

    onDateSet (view: DatePicker, year: Int, month: Int, dayOfMonth: Int)

    • view:關聯的日期選擇對話框

    • year:使用者選擇的年

    • month:使用者選擇的月

    • dayOfMonth:使用者選擇的日期

    val dateListener = object: DatePickerDialog.OnDateSetListener { 
        override fun onDateSet(view: DatePicker, year: Int, month: Int, dayOfMonth: Int){
            calender.set(year, month, day)
            format("yyyy / MM / dd", date_edit)
        }
    }
    
    fun format(format: String, view: View) {
        val time = SimpleDateFormat(format, Locale.TAIWAN)
        (view as EditText).setText(time.format(calender.time))
    }
    

    本次實作為使用 lambda 寫法

    val dateListener = DatePickerDialog.OnDateSetListener { _, year, month, day ->
        calender.set(year, month, day)
        format("yyyy / MM / dd", date_edit)
    }
    

TimePickerDialog

時間選擇對話框,可以讓使用者選擇時間

  • 建立 TimePickerDialog

    • TimePickerDialog (context: Context,
                listener: TimePickerDialog.OnTimeSetListener,
                hourOfDay: Int,
                minute: Int,
                is24HourView: Boolean)

      建立指定初始時間與預設主題時間選擇對話框

      • context:建立時間選擇對話框的 parent context。

      • listener:監聽使用者選擇的時間,使用者選擇時間後會調用監聽器。

      • hourOfDay:指定時間選擇對話框初始要顯示的小時值。

      • minute:指定時間選擇對話框初始要顯示的分鐘值。

      • is24HourView:顯示是否為 24 小時制。

        • True:時間選擇對話框的顯示會為 24 小時視圖。

        • False:時間選擇對話框的顯示會有 AM、PM。

      TimePickerDialog(this,
              timeListener,
              calender.get(Calendar.HOUR_OF_DAY),
              calender.get(Calendar.MINUTE),
              true
         )
      
    • TimePickerDialog (context: Context,
                themeResId: Int,
                listener: TimePickerDialog.OnTimeSetListener,
                hourOfDay: Int,
                minute: Int,
                is24HourView: Boolean)

      • context:建立時間選擇對話框的 parent context。

      • themeResId:指定想要的樣式的 resource ID,若為 0 則為 parent context 預設的樣式。

        時間選擇對話框的樣式與日期選擇對話框的樣式種類相同

      • listener:監聽使用者選擇的時間,使用者選擇時間後會調用監聽器。

      • hourOfDay:指定時間選擇對話框初始要顯示的小時值。

      • minute:指定時間選擇對話框初始要顯示的分鐘值。

      • is24HourView:顯示是否為 24 小時制。

        • True:時間選擇對話框的顯示會為 24 小時視圖。

        • False:時間選擇對話框的顯示會有 AM、PM。

    建立完日期選擇對話框後要使用 show() 方法顯示出來

    TimePickerDialog( ... ).show()
    
  • OnTimeSetListener

    用來監聽使用者選擇的日期的 interface

    val dateListener = object: DatePickerDialog.OnDateSetListener { }
    

    只有一個需要 override 的 funtion

    onTimeSet (view: TimePicker, hourOfDay: Int, minute: Int)

    • view:關聯的時間選擇對話框

    • hourOfDay:使用者選擇的小時值

    • minute:使用者選擇的分鐘值

    val timeListener = object: TimePickerDialog.OnTimeSetListener { 
        override fun onTimeSet(view: TimePicker, hourOfDay: Int, minute: Int){
            calender.set(Calendar.HOUR_OF_DAY, hour)
            calender.set(Calendar.MINUTE, min)
            format("HH : mm", time_edit)
        }
    }
    
    fun format(format: String, view: View) {
        val time = SimpleDateFormat(format, Locale.TAIWAN)
        (view as EditText).setText(time.format(calender.time))
    }
    

    本次實作為使用 lambda 寫法

    val timeListener = TimePickerDialog.OnTimeSetListener { _, hour, min->
        calender.set(Calendar.HOUR_OF_DAY, hour)
        calender.set(Calendar.MINUTE, min)
        format("HH : mm", time_edit)
    }
    

實作成果

查看詳細 Code > GitHub

tags: Android Kotlin DatePickerDialog TimePickerDialog

上一篇
Android Kotlin 實作 Day 11:DAY11_Alarm(中)(SimpleDateFormat)
下一篇
Android Kotlin 實作 Day 12:GithubStars(上)(JSON)
系列文
英國研究顯示,連續30天用Kotlin開發Android將有益於身心健康30

尚未有邦友留言

立即登入留言