iT邦幫忙

2021 iThome 鐵人賽

DAY 28
0
自我挑戰組

才30天?一個月學會Android開發系列 第 28

Day-28 TimePickerDialog

  • 分享至 

  • xImage
  •  

不知道各位有沒有使用過麥當勞報報?

在麥當勞報報APP當中,使用者必須設定時段,

使程式在設定的時段,告知用戶天氣及領取專屬優惠,

而當中設定時間的鬧鐘就是TimePickerDialog的應用,

本期將學習如何設置TimePickerDialog。


在版面配置中加入一個Button觸發TimePickerDialog,一個Text顯示設置的時間

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/clock"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="300dp"
        android:text="設置時間"
        android:textSize="25sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/time"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="140dp"
        android:text=""
        android:textSize="25sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.498"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/clock" />

</androidx.constraintlayout.widget.ConstraintLayout>

以下是Java的部分

package com.example.timepickerdialog;

import androidx.appcompat.app.AppCompatActivity;

import android.app.TimePickerDialog;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.TimePicker;

import java.util.Calendar;

public class MainActivity extends AppCompatActivity {
    private Button clock;
    private TextView time;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        clock = findViewById(R.id.clock);
        time = findViewById(R.id.time);

        clock.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Calendar c = Calendar.getInstance();
                int hour = c.get(Calendar.HOUR);
                int minute = c.get(Calendar.MINUTE);
                new TimePickerDialog(MainActivity.this, new TimePickerDialog.OnTimeSetListener(){

                    @Override
                    public void onTimeSet(TimePicker view, int hour, int minute) {
                        if (minute == 0) {
                            time.setText("設置的時間是" + hour + ":" + minute + "0");
                        }
                        else {
                            time.setText("設置的時間為" + hour + ":" + minute);
                        }
                    }
                }, hour, minute, false).show();
            }
        });
    }
}

在Button觸發事件中建立一個新的Calendar物件
hour與minute分別取得小時及分鐘
new TimePickerDialog為建立TimePickerDialog並設定監聽動作及觸發事件
TimePickerDialog觸發事件的程式內容為顯示時間於TextView
並且寫了if設置時間為整點的話
顯示的時間為15:00,而不是15:0

以下是執行畫面
https://ithelp.ithome.com.tw/upload/images/20211008/20141950uy5cJT2F0m.png
https://ithelp.ithome.com.tw/upload/images/20211008/2014195068mVrb0IDj.png


上一篇
Day-27 刪除title bar
下一篇
Day-29 跳頁
系列文
才30天?一個月學會Android開發30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言