2022-10-24学习内容
1.日期对话框DatePickerDialog
1.1activity_date_picker.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="5dp"> <DatePicker android:id="@+id/dp_date" android:layout_width="match_parent" android:layout_height="wrap_content" android:datePickerMode="spinner" android:calendarViewShown="false"/> <Button android:id="@+id/btn_ok" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="确 定"/> <TextView android:id="@+id/tv_date" android:layout_width="match_parent" android:layout_height="wrap_content"/> </LinearLayout>
1.2DatePickerActivity.java
package com.example.chapter05; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.DatePicker; import android.widget.TextView; public class DatePickerActivity extends AppCompatActivity implements View.OnClickListener { private DatePicker dp_date; private TextView tv_date; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_date_picker); findViewById(R.id.btn_ok).setOnClickListener(this); tv_date = findViewById(R.id.tv_date); dp_date = findViewById(R.id.dp_date); } @Override public void onClick(View v) { switch(v.getId()) { case R.id.btn_ok: String desc = String.format("您选择的日期是%d年%d月%d日", dp_date.getYear(), dp_date.getMonth() + 1, dp_date.getDayOfMonth()); tv_date.setText(desc); break; } } }
1.3效果:
1.4activity_date_picker.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="5dp"> <Button android:id="@+id/btn_date" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="请选择日期"/> <DatePicker android:id="@+id/dp_date" android:layout_width="match_parent" android:layout_height="wrap_content" android:datePickerMode="spinner" android:calendarViewShown="false"/> <Button android:id="@+id/btn_ok" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="确 定"/> <TextView android:id="@+id/tv_date" android:layout_width="match_parent" android:layout_height="wrap_content"/> </LinearLayout>
1.5DatePickerActivity.java
package com.example.chapter05; import androidx.appcompat.app.AppCompatActivity; import android.app.DatePickerDialog; import android.os.Bundle; import android.view.View; import android.widget.DatePicker; import android.widget.TextView; import java.util.Calendar; public class DatePickerActivity extends AppCompatActivity implements View.OnClickListener, DatePickerDialog.OnDateSetListener { private DatePicker dp_date; private TextView tv_date; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_date_picker); findViewById(R.id.btn_ok).setOnClickListener(this); findViewById(R.id.btn_date).setOnClickListener(this); tv_date = findViewById(R.id.tv_date); dp_date = findViewById(R.id.dp_date); } @Override public void onClick(View v) { switch(v.getId()) { case R.id.btn_ok: String desc = String.format("您选择的日期是%d年%d月%d日", dp_date.getYear(), dp_date.getMonth() + 1, dp_date.getDayOfMonth()); tv_date.setText(desc); break; case R.id.btn_date: // 获取日历的一个实例,里面包含了当前的年月日 /* Calendar calendar = Calendar.getInstance(); calendar.get(Calendar.YEAR); calendar.get(Calendar.MONTH); calendar.get(Calendar.DAY_OF_MONTH); */ DatePickerDialog dialog = new DatePickerDialog(this, this, 2090, 5, 1); // 显示日期对话框 dialog.show(); break; } } @Override public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) { String desc = String.format("您选择的日期是%d年%d月%d日", year, month + 1, dayOfMonth); tv_date.setText(desc); } }
1.6效果:
2.时间对话框
2.1activity_time_picker.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="5dp"> <Button android:id="@+id/btn_time" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="请选择时间"/> <TimePicker android:id="@+id/tp_time" android:layout_width="match_parent" android:layout_height="wrap_content" android:timePickerMode="spinner"/> <Button android:id="@+id/btn_ok" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="确 定"/> <TextView android:id="@+id/tv_time" android:layout_width="match_parent" android:layout_height="wrap_content"/> </LinearLayout>
2.2TimePickerActivity.java
package com.example.chapter05; import androidx.appcompat.app.AppCompatActivity; import android.app.DatePickerDialog; import android.app.TimePickerDialog; import android.os.Bundle; import android.view.View; import android.widget.TextView; import android.widget.TimePicker; import java.util.Calendar; public class TimePickerActivity extends AppCompatActivity implements View.OnClickListener, TimePickerDialog.OnTimeSetListener { private TimePicker tp_time; private TextView tv_time; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_time_picker); findViewById(R.id.btn_ok).setOnClickListener(this); findViewById(R.id.btn_time).setOnClickListener(this); tp_time = findViewById(R.id.tp_time); tp_time.setIs24HourView(true); tv_time = findViewById(R.id.tv_time); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.btn_ok: String desc = String.format("您选择的日期是%d时%d分", tp_time.getHour(), tp_time.getMinute()); tv_time.setText(desc); break; case R.id.btn_time: // 获取日历的一个实例,里面包含了当前的时分秒 Calendar calendar = Calendar.getInstance(); // 构建一个时间对话框,该对话框已经集成了时间选择器 TimePickerDialog dialog = new TimePickerDialog(this, android.R.style.Theme_Holo_Light_Dialog, this, calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE), true); // true表示24小时制,false表示12小时制 dialog.show(); break; } } @Override public void onTimeSet(TimePicker view, int hourOfDay, int minute) { String desc = String.format("您选择的日期是%d时%d分", hourOfDay, minute); tv_time.setText(desc); } }
2.3效果: