DatePicker和TimePicker显示当前日期和时间

DatePicker&&TimePicker

两种实现动态输入日期和时间的功能


DatepickerDialog和TimePickerDialog两种实现输入日期和时间的对话框


OnDateChangedListener()和OnTimeChangedListener()

当用户更改了DatePicker里的年、月、日时,将触发onDateChangedListener()监听器的onDateChange()事件


当用户更改了TimePicker里的时、分时,将触发OnTimeChangedListener()监听器的onTimeChanged事件


OnDateSetListener()和OnTimeSetListener()

当用户更改了DatePickerDialog 里的年、月、日时,将触发OnDateSetListener监听器的OnDateSetListener()

事件


当用户更改了TimePickerDialog里的时、分时,将触发OnTimeSetListener监听器的onTimeSet()事件


Demo:

默认在标题栏中显示当前日期和事件,通过监听器去获取用户选择日期或事件的结果,并将变更的日期或事件展示在标题栏上


XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:orientation="vertical"
    tools:context="com.bcp.gridviewtest.MainActivity">

    <TimePicker
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/timePicker"
        />
    <DatePicker
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/datePicker"
        />

</LinearLayout>

JAVA

package com.bcp.gridviewtest;

import android.app.DatePickerDialog;
import android.app.TimePickerDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.DatePicker;
import android.widget.TimePicker;

import java.util.Calendar;

public class MainActivity extends AppCompatActivity {
    private TimePicker timePicker;
    private DatePicker datePicker;
    //显示当前日期的变量
    private Calendar cal;

    private int year;
    private int month;
    private int day;
    private int hour;
    private int minute;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //获取日历对象
        cal=Calendar.getInstance();
        //获取年月日时分秒对象
        year=cal.get(Calendar.YEAR);
        //获取的月份从0开始计算,所以要加一
        month=cal.get(Calendar.MONTH)+1;
        day=cal.get(Calendar.DAY_OF_MONTH);
        //北京为东8区,所以加八个小时
        hour=cal.get(Calendar.HOUR_OF_DAY);
        minute=cal.get(Calendar.MINUTE);
        //设置title信息
        setTitle(year+"-"+month+"-"+day+" "+hour+":"+minute);
        timePicker= (TimePicker) findViewById(R.id.timePicker);
        datePicker= (DatePicker) findViewById(R.id.datePicker);

        //初始化datePicker
        //第四个参数为date的事件监听器
        //此处month会自动获取准确的,所以不用加一
        datePicker.init(year, cal.get(Calendar.MONTH), day, new DatePicker.OnDateChangedListener() {
            @Override
            public void onDateChanged(DatePicker datePicker, int i, int i1, int i2) {
                setTitle(year+"-"+month+"-"+day);
            }
        });
        //初始化timePicker
        timePicker.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {
            @Override
            public void onTimeChanged(TimePicker timePicker, int i, int i1) {
                setTitle(hour+":"+minute);
            }
        });

//        //弹出窗口提示日期
//        new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
//            @Override
//            public void onDateSet(DatePicker datePicker, int i, int i1, int i2) {
//                setTitle(year+"-"+month+"-"+day);
//            }
//        },year,cal.get(Calendar.MONTH),day).show();

        //事件消息框提示
        new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() {
            @Override
            public void onTimeSet(TimePicker timePicker, int i, int i1) {
                setTitle(hour+":"+minute);
            }
          //第三个参数是boolean类型判断是否24小时制显示
        },hour,minute,true).show();
    }
}

注意事项:

1、DatePicker对象以init()方法指定DatePicker初始的年、月、日及OnDateChangedListener()的事件;TimePicker对象是直接以setOnTimeChangedListener()事件来处理事件改变时程序要做的操作。

因为月份是从0下标开始记录,注意使用month时看是否需要加一。

2、DatePickerDialog和TimePicherDialog与前面这两种类型的对象最大的差别在于DatePicher和TimePicker是直接显示在屏幕上的。而这两种对象则是弹出Dialog的形式显示,可以点击确定/取消。




展开阅读全文

没有更多推荐了,返回首页