Android学习笔记(十一):简单UI组件----日期时间类组件(日期选择器DatePicker和时间选择器TimePicker)

日期时间类组件(日期选择器Datepicker和时间选择器TimePicker)

  1. 日期选择器
  • 日期选择器:用来选择日期的组件。
    在这里插入图片描述
    在activity_main.xml文件中,用DatePicker标签定义日期选择器。
    在这里插入图片描述
  • 属性:
    android:layout_width 和android:layout_height :这两个属性破天荒的和前面那些组件对应的属性取值不同。这里取值为match_parent,即与父容器相同。
  • 获取日期选择器中改变后的日期:
    为日期选择器定义一个id:
    在这里插入图片描述
    在Java文件中编写如下代码:
package com.example.datepickerdemo;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.widget.DatePicker;
import android.widget.Toast;

import java.util.Calendar;

public class MainActivity extends AppCompatActivity {
    //定义日期选择器及年月日三个变量
    private int year,month,day;
    private DatePicker datePicker;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //获取日期选择器
        datePicker=findViewById(R.id.date);
        //获取日历对象并实例化,Calendar是一个Java中的类,封装了一些有关日历的操作。
        //Calendar的构造方法是protecte修饰的,不能直接new,需要调用getInstance()来初始化。
        Calendar calendar=Calendar.getInstance();
        //获取当前日历的年份(即改变前日历显示的年份)
        year=calendar.get(Calendar.YEAR);
        //获取当前日历的月份(即改变前日历显示的月份)
        month=calendar.get(Calendar.MONTH);
        //获取当前日历的日(即改变前日历显示的日)
        day=calendar.get(Calendar.DAY_OF_MONTH);
        //显示改变前的日期
        show(year,month,day);
        //初始化日期选择器,前三个参数是当前日期的年月日,第四个参数是一个日期改变监听器内部类
        datePicker.init(year, month, day, new DatePicker.OnDateChangedListener() {
            @Override
            public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                //用监听到的改变的值更新当前对象中的年份值year
                MainActivity.this.year=year;
                //用监听到的改变的值更新当前对象中的月份值month
                MainActivity.this.month=monthOfYear;
                //用监听到的改变的值更新当前对象中的日值day
                MainActivity.this.day=dayOfMonth;
                //显示改变后的日期
                show(year,monthOfYear,dayOfMonth);
            }
        });
    }

    //封装一个show()方法用来显示改变的日期
    public void show(int year,int month,int day){
        //创建一个符合日期显示形式的字符串,和Java中一样,从前端获取到的月份是从0开始的,需要加一
        String date=year+"年"+(month+1)+"月"+day+"日";
        Toast.makeText(MainActivity.this,date,Toast.LENGTH_LONG).show();
    }
}

运行结果:
刚运行起来未改变日期:
在这里插入图片描述
改变后:
在这里插入图片描述

  1. 时间选择器
  • 时间选择器:用来选择时间的组件。
    在这里插入图片描述
    在activity_main.xml文件中,用TimePicker标签来定义时间选择器。
    在这里插入图片描述
  • 属性:
    android:layout_width和android:layout_height :都设置为wrap_content,即包裹其自身的内容。
  • 获取时间选择器改变后的时间
    首先给时间选择器定义一个id:
    在这里插入图片描述
    然后在Java文件中编写如下代码:
package com.example.timepickerdemo;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.widget.TimePicker;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //获取时间选择器
        TimePicker timePicker=findViewById(R.id.time);
        //时间选择器默认12小时制,可改变为24小时制
        timePicker.setIs24HourView(true);
        //为时间选择器设置一个时间改变监听器
        timePicker.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {
            @Override
            public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
                String newtime=hourOfDay+"时:"+minute+"分";
                Toast.makeText(MainActivity.this,newtime,Toast.LENGTH_LONG).show();
            }
        });
    }
}

运行结果:
改变前:
在这里插入图片描述
改变后:
在这里插入图片描述

发布了32 篇原创文章 · 获赞 10 · 访问量 5478

猜你喜欢

转载自blog.csdn.net/weixin_44480874/article/details/104236513