Android中的时间控件简识(2)---- DatePicker和TimePicker

      最近因为项目需求,在界面显示时间的地方比较多,所以就调研了一下Android中的有关时间显示的控件,包括TextClock,DatePicker,TimePicker,CalendarView,DigitalClock,AnalogClock以及定时器Chronometer等,针对每一个控件我都会写一篇简短的博客记录一下

1,DatePicker和TimePicker简介

      这两个单词的直译我们就可以知道他们的意思,分别是日期选择器和时间选择器的意思,我们可以先简单看一下显示效果图:

      这两个控件是可多点点击选择日期和时间的,说明其本质是一个布局,因为一个简单的控件无法支持多处点击事件(事件效果不一样),所以很自然可以想到,它们的父类肯定是布局而不是简单控件。所以我们查看源码发现:

public class DatePicker extends FrameLayout 

关于FrameLayout(帧布局)的简单使用可以点击查看,它是一种默认控件都摆放在左上角位置的布局。

2,简单使用

在布局中添加如下代码:

<DatePicker
    android:id="@+id/date_Picker"
    android:layout_width="wrap_content"
    android:layout_height="350dp"
    android:layout_gravity="center_horizontal" />

<TimePicker
    android:id="@+id/time_Picker"
    android:layout_width="wrap_content"
    android:layout_height="350dp"
    android:layout_gravity="center_horizontal"
    android:layout_marginLeft="30dp" />
扫描二维码关注公众号,回复: 2835237 查看本文章

在java代码中添加:

        TextClock timeClock;
        DigitalClock digitalClock;
        date = findViewById(R.id.date_Picker);
        time = findViewById(R.id.time_Picker);
        // 或许当前的年月日,小时,分钟
        Calendar ca = Calendar.getInstance();
        year = ca.get(Calendar.YEAR);
        month = ca.get(Calendar.MONTH);
        day = ca.get(Calendar.DAY_OF_MONTH);
        hour = ca.get(Calendar.HOUR);
        minute = ca.get(Calendar.MINUTE);

        // 初始化DatePicker
        date.init(year, month, day, new DatePicker.OnDateChangedListener() {

            @Override
            public void onDateChanged(DatePicker arg0, int year, int month,
                                      int day) {
                ClockActivity.this.year = year;
                ClockActivity.this.month = month;
                ClockActivity.this.day = day;
                // 显示当前时间和日期
                //showDate(year, month, day, hour, minute);
            }

        });

        // 为TimePicker指定事件监听器
        time.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {
            @Override
            public void onTimeChanged(TimePicker arg0, int hour, int minute) {
                ClockActivity.this.hour = hour;
                ClockActivity.this.minute = minute;
            }
        });
    }
}

显示效果和上图是类似的,这里面对两个控件添加了事件监听,顾名思义,既然是选择器,时间和日期肯定是可选择的,我们是可以获取到选择后的日期和时间的,比如在上面代码上加上一个显示获取时间的方法:

 public void timeConfirm(View view) {
//        Date date1 = new Date();
//        date1.setTime(date.getMaxDate());
//        SimpleDateFormat simpleDateFormat = new SimpleDateFormat();
//        time.setIs24HourView(true);
        choosedTime.setText("你选择的时间:" + "" + year + "-" + month + "-" + day + " " +
                hour + ":" + minute );

//        choosedTime.setText(simpleDateFormat.format(date1));
    }

DatePicker里面还有其他的方法,主要有:

 date.getMinDate(); //最小日期,上面有根据获取的毫秒值得到的日期代码
 date.getMaxDate(); //最大日期
 date.getDayOfMonth(); //几号
 date.getFirstDayOfWeek();//
 date.getMonth();//月份
 date.getYear();//年份
 date.getAutofillType();  //自动填充类型,最低API为26

TimePicker里面还有其他的方法,主要有:

 time.setIs24HourView(true);效果图如下,主要观察右侧的时间选择器变化

 time.getHour();  //最低API 26
 time.getMinute();//最低API 26

    两者最远的setXXX()方法这里就没有列举了,功能也就不多说了。 

最后再加上两张图片,里面是我们针对两个控件可以调节的颜色选项:

猜你喜欢

转载自blog.csdn.net/hfut_why/article/details/81348126
今日推荐