iT邦幫忙

2024 iThome 鐵人賽

DAY 15
0

dialog 是什麼?

Button其中有一個特別的元件Dialog,放置在button點擊事件內,點擊button後會在畫面中產生一塊對話框,種類非常多,我想在這特別介紹日曆跟時鐘。

日曆


其中Calendar是製作日曆時鐘非常重要好用的一個套件,負責抓當前的日期跟時間
使用calender 抓到日曆上的年/月/日

Calendar calendar = Calendar.getInstance();
               int year = calendar.get(Calendar.YEAR);
               int month = calendar.get(Calendar.MONTH);
               int day = calendar.get(Calendar.DAY_OF_MONTH);

之後用DataPickerDialog 建立一個監聽器,時刻查看當點擊畫面上的圖示,將圖示轉化成字串傳給欲顯示的Textview上做顯示。
image
完整程式

date_button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // 取得當前的日期
                Calendar calendar = Calendar.getInstance();
                int year = calendar.get(Calendar.YEAR);
                int month = calendar.get(Calendar.MONTH);
                int day = calendar.get(Calendar.DAY_OF_MONTH);

                // 創建日期選擇對話框
                DatePickerDialog datePickerDialog = new DatePickerDialog(
                        view.getContext(),
                        new DatePickerDialog.OnDateSetListener() {
                            @Override
                            public void onDateSet(DatePicker view, int year, int month, int day) {
                                // 當日期選擇後,這裡可以處理選擇的日期
                                // 比如顯示在TextView或者儲存到變量中
                                String selectedDate = year + "/" + (month + 1) + "/" + day;
                                // 假設有個TextView顯示選中的日期
                                show_date.setText(selectedDate);
                            }
                        }, year, month, day);

                // 顯示日期選擇對話框
                datePickerDialog.show();
            }
        });

時鐘

時鐘的做法其實跟日曆非常相似,一樣是用calendar抓取當前的小時、分鐘,image
但使用的是TimePickerDialog,並將參數導入元件上做顯示
image
完整程式碼如下

public class MainActivity extends AppCompatActivity {
    private Button button;
    private TextView textView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        EdgeToEdge.enable(this);
        setContentView(R.layout.activity_main);
        button=findViewById(R.id.button);
        textView=findViewById(R.id.textView);


        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Calendar calendar= Calendar.getInstance();
                int hour=calendar.get(Calendar.HOUR_OF_DAY);
                int min=calendar.get(Calendar.MINUTE);

                TimePickerDialog timePickerDialog = new TimePickerDialog(view.getContext(),
                        new TimePickerDialog.OnTimeSetListener() {
                    @Override
                    public void onTimeSet(TimePicker timePicker, int hour, int min) {
                        String time=hour+":"+min;
                        textView.setText(time);
                    }
                },hour,min,true );
                timePickerDialog.show();
            }
        });
    }
}


上一篇
[day14]Gridview
下一篇
[day16]TabLayout
系列文
深入Android 物件的認識與應用實踐30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言