Android基础入门教程——2.3.12 Date & Time组件(下)

Android基础入门教程——2.3.12 Date & Time组件(下)

标签(空格分隔): Android基础入门教程


本节引言:

本节我们来继续学习Android系统给我们提供的几个原生的Date & Time组件,他们分别是:

DatePicker(日期选择器),TimePicker(时间选择器),CalendarView(日期视图),好吧,

其实一开始让我扣这几个玩意我是拒绝的,因为在我的印象里,他们是这样的:

简直把我丑哭了,有木有,终于知道为什么那么多人喜欢自定义这种类型的控件了!但是毕竟

提纲上写了,自己写的提纲,含着泪也要把他写完…当我把DatePicker写到布局中,然后看下

预览图,哟:

原来,看起来还不错,心情大好,哈哈,那么开始本节内容!


1.DatePicker(日期选择器)

可供我们使用的属性如下:

  • android:calendarTextColor : 日历列表的文本的颜色
  • android:calendarViewShown:是否显示日历视图
  • android:datePickerMode:组件外观,可选值:spinner,calendar

    前者效果如下,默认效果是后者

  • android:dayOfWeekBackground:顶部星期几的背景颜色
  • android:dayOfWeekTextAppearance:顶部星期几的文字颜色
  • android:endYear:去年(内容)比如2010
  • android:firstDayOfWeek:设置日历列表以星期几开头
  • android:headerBackground:整个头部的背景颜色
  • android:headerDayOfMonthTextAppearance:头部日期字体的颜色
  • android:headerMonthTextAppearance:头部月份的字体颜色
  • android:headerYearTextAppearance:头部年的字体颜色
  • android:maxDate:最大日期显示在这个日历视图mm / dd / yyyy格式
  • android:maxDate:最小日期显示在这个日历视图mm / dd / yyyy格式
  • android:spinnersShown:是否显示spinner
  • android:startYear:设置第一年(内容),比如19940年
  • android:yearListItemTextAppearance:列表的文本出现在列表中。
  • android:yearListSelectorColor:年列表选择的颜色

属性就是上面这些,你想怎么玩就怎么玩,接下来我们说下他的DatePicker的事件:

DatePicker.OnDateChangedListener

另外,奇怪的是,如果是上面这种mode为calendar的设置了事件并没有响应,看来上面这种

只能选择完后获取对应的值了,如果你的mode未spinner的话,使用下述代码就可以完成事件监听:

实现代码如下:

public class MainActivity extends AppCompatActivity implements DatePicker.OnDateChangedListener{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        DatePicker dp_test = (DatePicker) findViewById(R.id.dp_test);
        Calendar calendar = Calendar.getInstance();
        int year=calendar.get(Calendar.YEAR);
        int monthOfYear=calendar.get(Calendar.MONTH);
        int dayOfMonth=calendar.get(Calendar.DAY_OF_MONTH);
        dp_test.init(year,monthOfYear,dayOfMonth,this);
    }

    @Override
    public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
        Toast.makeText(MainActivity.this,"您选择的日期是:"+year+"年"+(monthOfYear+1)+"月"+dayOfMonth+"日!",Toast.LENGTH_SHORT).show();
    }
}

运行效果图:


2.TimePicker(时间选择器)

先来看看5.0的TimePicker长什么样:

样子还是蛮标致的哈,我们发现官方给我们提供的属性只有一个:

android:timePickerMode:组件外观,同样可选值为:spinner和clock(默认)

前者是旧版本的TimePicker~

而他对应的监听事件是:TimePicker.OnTimeChangedListener

下面来个代码示例:

public class MainActivity extends AppCompatActivity{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        TimePicker tp_test = (TimePicker) findViewById(R.id.tp_test);
        tp_test.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {
            @Override
            public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
                Toast.makeText(MainActivity.this,"您选择的时间是:"+hourOfDay+"时"+minute+"分!",Toast.LENGTH_SHORT).show();
            }
        });
    }

}

运行效果图:

可惜的是,同样需要旧版本的TimePicker才会触发这个事件!


3.CalendarView(日历视图)

好的,一样是看看样子先:

嗯,好像变化不大,接下来我们简单的看下文档中给我们提供的属性:

  • android:firstDayOfWeek:设置一个星期的第一天
  • android:maxDate :最大的日期显示在这个日历视图mm / dd / yyyy格式
  • android:minDate:最小的日期显示在这个日历视图mm / dd / yyyy格式
  • android:weekDayTextAppearance:工作日的文本出现在日历标题缩写

处理上面的还有其他,但是都是被弃用的…

对应的日期改变事件是:CalendarView.OnDateChangeListener

示例代码:

public class MainActivity extends AppCompatActivity{
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        CalendarView cv_test = (CalendarView) findViewById(R.id.cv_test);
        cv_test.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
            @Override
            public void onSelectedDayChange(CalendarView view, int year, int month, int dayOfMonth) {
                Toast.makeText(MainActivity.this,"您选择的时间是:"+ year + "年" + month + "月" + dayOfMonth + "日",Toast.LENGTH_SHORT).show();
            }
        });
    }
}

运行效果图:


本节小结:

好的,关于这三个控件的介绍就到这里,实际开发中这些控件我们一般都是自定义的,

在进阶系列我们会来自己写控件,敬请期待,谢谢~

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-12 23:21:09

Android基础入门教程——2.3.12 Date & Time组件(下)的相关文章

Android基础入门教程——8.3.12 Paint API之—— PathEffect(路径效果)

Android基础入门教程--8.3.12 Paint API之-- PathEffect(路径效果) 标签(空格分隔): Android基础入门教程 本节引言: 本节继续来学习Paint的API--PathEffect(路径效果),我们把画笔的sytle设置为Stroke,可以 绘制一个个由线构成的图形,而这些线偶尔会显得单调是吧,比如你想把这些先改成虚线,又 或者想让路径的转角变得圆滑等,那你就可以考虑使用这个PathEffect来实现了! 官方API文档:PathEffect 进去看文档,

Android基础入门教程——2.4.12 ExpandableListView(可折叠列表)的基本使用

Android基础入门教程--2.4.12 ExpandableListView(可折叠列表)的基本使用 标签(空格分隔): Android基础入门教程 本节引言: 本节要讲解的Adapter类控件是ExpandableListView,就是可折叠的列表,它是ListView的子类, 在ListView的基础上它把应用中的列表项分为几组,每组里又可包含多个列表项.至于样子, 类似于QQ联系人列表,他的用法与ListView非常相似,只是ExpandableListVivew显示的列表项 需由Ex

2015年最新Android基础入门教程目录(完结版)

2015年最新Android基础入门教程目录(完结版) 标签(空格分隔): Android基础入门教程 前言: 关于<2015年最新Android基础入门教程目录>终于在今天落下了帷幕,全套教程 共148节已编写完毕,附上目录,关于教程的由来,笔者的情况和自学心得,资源分享 以及一些疑问等可戳:<2015最新Android基础入门教程>完结散花~ 下面是本系列教程的完整目录: 第一章:环境搭建与开发相关(已完结 10/10) Android基础入门教程--1.1 背景相关与系统架构

2015年最新Android基础入门教程目录(临时版)

2015年最新Android基础入门教程目录(临时版) 标签(空格分隔): Android基础入门教程 前言: 嗯,昨晚又给人盗号了,博客上被发表了十几篇黄贴-然后目录给管理误删了,再发一次 后来协商后发现实被设密保问题了,建议各位用csdn的朋友密保自己设置一波~ 密保问题已修改回来了,应该不会再被盗号了-人怕出名猪怕壮哈~下次如果发现博客被封 告知下小猪,如何很急的话可以先到w3c鸟巢菜鸟教程上看Android基础入门教程 经过站长FK进行排版的,可能阅读体验会比csdn好很多!内容基本是同

Android基础入门教程——10.12 传感器专题(3)——加速度-陀螺仪传感器

Android基础入门教程--10.12 传感器专题(3)--加速度/陀螺仪传感器 标签(空格分隔): Android基础入门教程 本节引言: 本节继续来扣Android中的传感器,本节带来的是加速度传感器(Accelerometer sensor)以及 陀螺仪传感器(Gyroscope sensor),和上一节的方向传感器一样有着x,y,z 三个轴, 还是要说一点:x,y轴的坐标要和绘图那里的x,y轴区分开来!传感器的是以左下角 为原点的!x向右,y向上!好的,带着我们的套路来学本节的传感器吧

Android基础入门教程——10.1 TelephonyManager(电话管理器)

Android基础入门教程--10.1 TelephonyManager(电话管理器) 标签(空格分隔): Android基础入门教程 本节引言: 本章节是Android基础入门教程的最后一章,主要讲解是一些零零散散的一些知识点,以及一些遗漏 知识点的补充,这些零散的知识点包括,各种系统服务的使用,比如本节的电话管理器,短信管理器, 振动器,闹钟,壁纸等等,还有传感器之类的东西!乱七八糟什么都有哈!好的,本节我们要学习的 是TelephonyManager,见名知义:用于管理手机通话状态,获取电

《2015最新Android基础入门教程》完结散花~

<2015最新Android基础入门教程>完结散花~ 标签(空格分隔): 反思小结 引言: 从六月底就开始编写这套教程,历时将近五个多月,今天终于写完了,全套教程正文部分148篇, 十大章,从基本UI控件到四大组件,Intent,Fragment,事件处理,数据存储,网络编程,绘图与动画, 多媒体,系统服务等都进行了详细的讲解!代码都是都是在Android Studio上进行编写的,全文 采用Markdown,行文结构清晰,还结合了实际开发中一些常见的问题进行了剖析-由于个人能力的局限, 虽然

Android基础入门教程——8.1.1 Android中的13种Drawable小结 Part 1

Android基础入门教程--8.1.1 Android中的13种Drawable小结 Part 1 标签(空格分隔): Android基础入门教程 本节引言: 从本节开始我们来学习Android中绘图与动画中的一些基础知识,为我们进阶部分的自定义 打下基础!而第一节我们来扣下Android中的Drawable!Android中给我们提供了多达13种的 Drawable,本节我们就来一个个撸一遍! Drawable资源使用注意事项 Drawable分为两种: 一种是我们普通的图片资源,在Andr

Android基础入门教程——1.1 背景相关与系统架构分析

Android基础入门教程--1.1 背景相关与系统架构分析 1.Android背景与当前的状况 Android系统是由Andy Rubin创建的,后来被Google收购了:最早的版本是:Android 1.1版本 而现在最新的版本是今年5.28,Google I/O大会上推出的Android M,有趣的是Android系统的命名都是以点心来命名的,下述表是15个Android版本名称,对应API号以及发布时间! 系统版本名称 API版本号 发布时间 Android 1.5:Cupcake:纸杯