Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 234|回复: 0

[默认分类] android学习笔记(十二)日期、时间组件

[复制链接]
  • TA的每日心情
    开心
    2021-12-13 21:45
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2018-6-15 10:54:28 | 显示全部楼层 |阅读模式


    时间日期View
    AnalogClock
        这个控件是一个带有时针和分针的模拟时钟。效果图如下:


    layout文件中配置为:

      
    1.     <AnalogClock
    2.         android:id="@+id/analogclock"
    3.         android:layout_width="wrap_content"
    4.         android:layout_height="wrap_content"/>
    复制代码

      
    TimePicker
      
          用于选择一天中时间的视图,支持 24小时及上午/下午模式。小时,分钟及上午/下午(如果可用)都可以用垂直滚动条来控制。用键盘来输入小时。两个数的小时数可以通过输入两个数字来实现,例如在一定时间内输入‘1’和‘2’即选择了12点。分钟能显示输入的单个数字。在AM/PM模式下,用户可以输入"a", "A"或 "p", "P"来选取。
      效果如图:
      

      
    layout配置为:


      
      
    1.     <TimePicker
    2.         android:id="@+id/timepicker"
    3.         android:layout_width="wrap_content"
    4.         android:layout_height="wrap_content"/>
    复制代码

      
      可以通过方法:setIs24HourView来设置是否为24小时,参数为true时为24小时,即没有AM、PM选项。
      通过方法setCurrentHour来设置当前的小时值
      通过方法setCurrentMinute设置当前的分钟值
      通过setOnTimeChangeListener方法来设置时间改变监听
       
    DigitalClock
      
        像AnalogClock,但是是数字的。显示秒。根据字体按比例显示小时/分钟/秒,无法像AnalogClock转动显示。
    效果如下:


    layout配置为:

      
    1.     <AnalogClock
    2.         android:id="@+id/analogclock"
    3.         android:layout_width="wrap_content"
    4.         android:layout_height="wrap_content"/>
    复制代码

      
    DatePicker
      
      一个选择年月日的日历布局视图
      

      
      
      可以通过init方法进行初始日期设置,和添加日期改变监听:DatePicker.OnDateChangedListener
      可以通过updateDate方法进行日期年月日的更新
      layout配置为:
    1.     <DatePicker
    2.         android:id="@+id/datepicker"
    3.         android:layout_width="wrap_content"
    4.         android:layout_height="wrap_content"/>
    复制代码

    日期、时间选择器的使用
        上面介绍的只是日期、时间的容器,在实际应用中通常是在一个对话框中进行日期时间设置。
        DatePicker对应DatePickerDialog,DatePickerDialog是装载DatePicker的一个简单的容器;
        TimePicker 对应TimePickerDialog,TimePickerDialog是装载TimePicker的一个简单的容器。
        这里我们通过继承DialogFragment来处理我们的日期时间选择对话框,DialogFragment能够管理对话框的生命周期,并且能够以不同的布局配置来呈现我们的选择对话框。
      注意DialogFragment是从android3.0版本才有的,所以我们需要修改我们的AndroidManifest.xml配置文件,如下:

      
    1.   <uses-sdk
    2.         android:minSdkVersion="11"
    3.         android:targetSdkVersion="18" />
    复制代码

       将android:minSdkVersion的值修改为11,即当前的Android程序支持的最低版本为11亦即Android3.0版本
      创建一个时间选择器
         这里我们需要做两个事情:
        1、定义
    1. onCreateDialog()方法,并返回
    复制代码
    1. TimePickerDialog对象;
    复制代码

    1. 2、定义
    复制代码
    1. TimePickerDialog.OnTimeSetListener
    复制代码
    实例,来接受用户选择的时间。
       源代码:
    1. public class TimePickerFragment extends DialogFragment implements
    2.   TimePickerDialog.OnTimeSetListener {
    3. @Override
    4. public Dialog onCreateDialog(Bundle savedInstanceState) {
    5.   final Calendar calendar = Calendar.getInstance();
    6.   int hour = calendar.get(Calendar.HOUR_OF_DAY);
    7.   int minute = calendar.get(Calendar.MINUTE);
    8.   return new TimePickerDialog(getActivity(), this, hour, minute,
    9.     DateFormat.is24HourFormat(getActivity()));
    10. }
    11. @Override
    12. public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
    13.   //处理设置的时间,这里我们作为示例,在日志中输出我们选择的时间
    14.   Log.d("onTimeSet", "hourOfDay: "+hourOfDay + "Minute: "+minute);
    15. }
    16. }
    复制代码

      显示时间选择对话框
         我们通过在Activity中添加一个Button,并通过Button的OnClick事件来触发时间选择对话框。
      定义button
      
    1. <Button
    2.     android:layout_width="wrap_content"
    3.     android:layout_height="wrap_content"
    4.     android:text="@string/pick_time"
    5.     android:onClick="showTimePickerDialog" />
    复制代码
      

    1. 在源码中实现showTimePickerDialog方法:
    复制代码

    1. public void showTimePickerDialog(View view){
    2.    TimePickerFragment  timePicker = new TimePickerFragment();
    3.    imePicker.show(getFragmentManager(), "timePicker");
    4. }
    复制代码

       
      

    1. 点击Button后的效果如图:
    复制代码

    1. [/code]
    2.   [code]
    复制代码
    1. 在LogCat中可以看到我们的输出(我这里点击了两次,所以有两条日志输出):
    复制代码
    1. [/code]
    2.   [code]
    复制代码
      创建日期选择器
    1. [b] [/b] 创建日期选择器和创建时间选择器一样,在继承的DialogFragment中重写onCreateDialog方法,只是返回的对象为DatePickerDialog对象。
    复制代码
    1. 源代码如下:
    复制代码
      
    1. public class DatePickerFragment extends DialogFragment implements
    2.                 DatePickerDialog.OnDateSetListener {
    3.         @Override
    4.         public Dialog onCreateDialog(Bundle savedInstanceState) {
    5.                 final Calendar c = Calendar.getInstance();
    6.                 int year = c.get(Calendar.YEAR);
    7.                 int month = c.get(Calendar.MONTH);
    8.                 int day = c.get(Calendar.DAY_OF_MONTH);
    9.                 return new DatePickerDialog(getActivity(), this, year, month, day);
    10.         }
    11.         @Override
    12.         public void onDateSet(DatePicker view, int year, int month, int day) {
    13.                 Log.d("OnDateSet", "select year:"+year+";month:"+month+";day:"+day);
    14.         }
    15. }
    复制代码
    1. [/code]
    2.   
    3. [code]同样我们响应一个Button的onClick事件来呈现日期选择器:
    复制代码

    1.   <Button
    2.         android:id="@+id/datePickerBtn"
    3.         android:layout_width="wrap_content"
    4.         android:layout_height="wrap_content"
    5.         android:text="@string/picker_date"
    6.         android:onClick="showDatePickerDialog"/>
    复制代码

    1. showDatePickerDialog方法在源码中的实现为:
    复制代码

    1.         public void showDatePickerDialog(View view){
    2.                 DatePickerFragment datePicker = new DatePickerFragment();
    3.                 datePicker.show(getFragmentManager(), "datePicker");
    4.         }
    复制代码


    1. 点击Button后呈现的效果如下:
    复制代码




      
    1. 在LogCat中可以看到我们选择的时间输出值:
    复制代码

    [code][/code]
      
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-2-24 08:43 , Processed in 0.303255 second(s), 35 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表