Android--UI之DatePicker、TimePicker...
前言
这一篇博客分别讲解Android平台下,关于日期和时间的几个相关控件。包括DatePicker(日期选择控件)、TimePicker(时间选择控件)、DatePickerDialog(日期选择对话框)、TimePickerDialog(时间选择对话框)、AnalogClock(模拟时钟控件)、DigitalClock(数字时钟控件)。对于时间控件,无非就是一个展示、修改、获取等操作,下面一一讲解。
DatePicker、TimePicker
DatePicker、TimePicker都继承自android.widget.FrameLayout,并且默认展示风格、与操作风格也类似。DatePicker用于展示一个日期选择控件,TimePicker用于展示一个时间选择控件。
作为一个日期选择控件,DatePicker可以通过设置属性来确定日期选择范围,也可以通过定义好的方法获取到当前选中的时间,并且在修改日期的时候,有响应的事件对其进行响应。
DatePicker常用相关属性:
- android:calendarViewShown:是否显示日历。
- android:startYear:设置可选开始年份。
- android:endYear:设置可选结束年份。
- android:maxDate:设置可选最大日期,以mm/dd/yyyy格式设置。
- android:minDate:设置可选最小日期,以mm/dd/yyyy格式设置。
DatePicker的方法而言,除了常用获取属性的setter、getter方法之外,还需要特别注意一个初始化的方法init()方法,用于做DatePicker控件的初始化,并且设置日期被修改后,回调的响应事件。此方法的签名如下:
init(int year, int monthOfYear, int dayOfMonth, DatePicker.OnDateChangedListener onDateChangedListener)
从上面的init()方法可以看到,DatePicker被修改时响应的事件是DatePicker.OnDateChangedListener事件,如果要响应此事件,需要实现其中的onDateChanged()方法,其中参数从签名即可了解意思,这里不再累述。
onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth)
作为一个时间选择控件来说,TimePicker需要与时间相关的getter、setter方法之外,还需要有时间被修改够,回调的响应事件。
TimePicker常用方法有如下几个:
- is24HourView():判断是否为24小时制。
- setIs24HourView():设置是否为24小时制显示。
- getCurrentXxx():获取当前时间。
- setCurrentXxx():设置当前时间。
- setOnTimeChangedListener():设置时间被修改的回调方法。
TimePicker控件被修改的回调方法,通过setOnTimeChangedListener()方法设置,其传递一个TimePicker.OnTimeChangedListener接口,需要实现其中的onTimeChanged()方法。
下面通过一个示例来讲解这两个控件的使用,在示例中分别展示了这两个控件,并在其修改之后,把修改值通过Toast的方式展示到屏幕上。
布局代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" > <DatePicker
android:id="@+id/dpPicker"
android:calendarViewShown="false"
android:layout_width="match_parent"
android:layout_height="wrap_content" /> <TimePicker
android:id="@+id/tpPicker"
android:layout_width="match_parent"
android:layout_height="wrap_content" /> </LinearLayout>
实现代码:
package com.bgxt.datatimepickerdemo; import java.text.SimpleDateFormat;
import java.util.Calendar; import android.app.Activity;
import android.os.Bundle;
import android.widget.DatePicker;
import android.widget.DatePicker.OnDateChangedListener;
import android.widget.TextView;
import android.widget.TimePicker;
import android.widget.Toast; public class DataTimePicker extends Activity {
private DatePicker datePicker;
private TimePicker timePicker; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_datatimepicker); datePicker = (DatePicker) findViewById(R.id.dpPicker);
timePicker = (TimePicker) findViewById(R.id.tpPicker); datePicker.init(2013, 8, 20, new OnDateChangedListener() { @Override
public void onDateChanged(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
// 获取一个日历对象,并初始化为当前选中的时间
Calendar calendar = Calendar.getInstance();
calendar.set(year, monthOfYear, dayOfMonth);
SimpleDateFormat format = new SimpleDateFormat(
"yyyy年MM月dd日 HH:mm");
Toast.makeText(DataTimePicker.this,
format.format(calendar.getTime()), Toast.LENGTH_SHORT)
.show();
}
}); timePicker.setIs24HourView(true);
timePicker
.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {
@Override
public void onTimeChanged(TimePicker view, int hourOfDay,
int minute) {
Toast.makeText(DataTimePicker.this,
hourOfDay + "小时" + minute + "分钟",
Toast.LENGTH_SHORT).show();
}
}); }
}
效果展示:
DatePickerDialog、TimePickerDialog
DatePickerDialog、TimePickerDialog是两个对话框控件,一个弹出对话框用于选择日期,一个弹出对话框用于选择时间,都继承自android.app.AlertDialog。
这两个控件的开发过程,其主要就是开发其选择后日期或时间后,相应的事件。
对于DatePickeDialog而言,通过构造函数可以设置弹出的日期控件的初始值,并且可以指定选中日期后,回调事件的实现,构造函数的签名如下:
DatePickerDialog(Context context, DatePickerDialog.OnDateSetListener callBack, int year, int monthOfYear, int dayOfMonth)
其中DatePickerDialog.OnDateSetListener为日期选中的响应事件,其他为日期弹出窗口初始化的日期,对于一个OnDateSetListener接口而言,需要实现其中的onDateSet()方法,在这个方法内,可以得到用户选中的日期。
对于TimePickerDialog而言,同样可以通过构造函数设置初始值,并且设定选中日期后,回调事件的实现,构造函数的签名如下:
TimePickerDialog(Context context, TimePickerDialog.OnTimeSetListener callBack, int hourOfDay, int minute, boolean is24HourView)
其中TimePickerDialog.OnTimeSetListener为时间选中的响应事件,其他为时间弹出窗口初始化的时间,对于一个OnTimeSetListener接口而言,需要实现其中的onTimeSet()方法,在这个方法内,可以得到用户选中的时间。
AnalogClock、DigitalClock
AnalogClock、DigitalClock为两个时间展示控件,切只是展示的风格不同而已,没有什么太大的区别。有一点值得注意的就是,这两个控件展示的时间是无法修改的,仅为系统当前时间。看示例就能明白,没什么好详细说的。
下面通过一个例子说明一下DatePickerDialog、TimePickerDialog、AnalogClock、DigitalClock四个控件的使用。
布局代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" > <TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="指针时钟:" /> <AnalogClock
android:layout_width="fill_parent"
android:layout_height="wrap_content" /> <TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="数字时钟:" /> <DigitalClock
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="20dp" />
<Button
android:id="@+id/btnTimePickerDialog"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Show TimePickerDialog"
/>
<Button
android:id="@+id/btnDatePickerDialog"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Show DatePickerDialog"
/>
</LinearLayout>
实现代码:
package com.bgxt.datatimepickerdemo; import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.DatePickerDialog.OnDateSetListener;
import android.app.TimePickerDialog;
import android.app.TimePickerDialog.OnTimeSetListener;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.TimePicker;
import android.widget.Toast; public class AnalogDigitalClock extends Activity implements OnClickListener {
private Button btnDate, btnTime; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_anologdigital);
btnDate = (Button) findViewById(R.id.btnDatePickerDialog);
btnTime = (Button) findViewById(R.id.btnTimePickerDialog);
btnDate.setOnClickListener(this);
btnTime.setOnClickListener(this);
} @Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btnDatePickerDialog:
DatePickerDialog datePicker=new DatePickerDialog(AnalogDigitalClock.this, new OnDateSetListener() { @Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
// TODO Auto-generated method stub
Toast.makeText(AnalogDigitalClock.this, year+"year "+(monthOfYear+1)+"month "+dayOfMonth+"day", Toast.LENGTH_SHORT).show();
}
}, 2013, 7, 20);
datePicker.show();
break; case R.id.btnTimePickerDialog:
TimePickerDialog time=new TimePickerDialog(AnalogDigitalClock.this, new OnTimeSetListener() { @Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
// TODO Auto-generated method stub
Toast.makeText(AnalogDigitalClock.this, hourOfDay+"hour "+minute+"minute", Toast.LENGTH_SHORT).show();
}
}, 18, 25, true);
time.show();
break;
} }
}
效果展示:
总结
以上就讲解了在Android平台下,几个与时间相关的控件,没有什么特别的,注意设置与响应事件即可。
请支持原创,尊重原创,转载请注明出处。谢谢。

Android--UI之DatePicker、TimePicker...的更多相关文章
- Android学习之DatePicker和TimePicker
在Android开发的应用程序中,通常都会有时间和日期选择的需求,下面就对日期选择控件DatePicker和时间选择控件TimePicker的基本使用方法进行介绍: DatePicker ...
- android datepicker timepicker简单用法
1.效果图 2. xml布局文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout x ...
- Android UI系列-----时间、日期、Toasts和进度条Dialog
您可以通过点击 右下角 的按钮 来对文章内容作出评价, 也可以通过左下方的 关注按钮 来关注我的博客的最新动态. 如果文章内容对您有帮助, 不要忘记点击右下角的 推荐按钮 来支持一下哦 如果您对文章内 ...
- 【转】Android UI系列-----时间、日期、Toasts和进度条Dialog
原文网址:http://www.cnblogs.com/xiaoluo501395377/p/3421727.html 您可以通过点击 右下角 的按钮 来对文章内容作出评价, 也可以通过左下方的 关注 ...
- android 开发 时间选择器TimePicker的使用
android系统自带时间控件:DatePicker 日期显示控件 DatePickerDialog 日期对话框控件TimePicker 时间显示控件 TimePickerDialog 时间对话框控件 ...
- (转载)Android UI设计之AlertDialog弹窗控件
Android UI设计之AlertDialog弹窗控件 作者:qq_27630169 字体:[增加 减小] 类型:转载 时间:2016-08-18我要评论 这篇文章主要为大家详细介绍了Android ...
- 重新想象 Windows 8.1 Store Apps (73) - 新增控件: DatePicker, TimePicker
[源码下载] 重新想象 Windows 8.1 Store Apps (73) - 新增控件: DatePicker, TimePicker 作者:webabcd 介绍重新想象 Windows 8.1 ...
- 8.Android之日期DatePicker和时间TimeTicker控件学习
手机设置时间日期很普遍,今天就梳理下. 首先在拖入一个按钮 ,日期和时间控件到工程里,如图: 代码如下: <?xml version="1.0" encoding=" ...
- 背水一战 Windows 10 (44) - 控件(日期类): CalendarView, DatePicker, TimePicker
[源码下载] 背水一战 Windows 10 (44) - 控件(日期类): CalendarView, DatePicker, TimePicker 作者:webabcd 介绍背水一战 Window ...
- iPhone/iPad/Android UI尺寸规范 UI尺寸规范,UI图标尺寸,UI界面尺寸,iPhone6尺寸,iPhone6 Plus尺寸,安卓尺寸,iOS尺寸
iPhone/iPad/Android UI尺寸规范 UI尺寸规范,UI图标尺寸,UI界面尺寸,iPhone6尺寸,iPhone6 Plus尺寸,安卓尺寸,iOS尺寸 iPhone界面尺寸 设备 分辨 ...
随机推荐
- dubbo入门学习 四 注册中心 zookeeper入门
一.Dubbo支持的注册中心 1. Zookeeper 1.1 优点:支持网络集群 1.2 缺点:稳定性受限于Zookeeper 2. Redis 2.1 优点:性能高. 2.2 缺点:对服务器环境要 ...
- C#写入Oracle 中文乱码问题
这个问题是我刚踏入工作觉得最坑的一个问题,找了很多方法.也问过不少人,但还是没能解决,偶然间返现了新大陆.... 具体问题描述是这样的: 我可以读取Oracle数据库中已有的中文内容,并能正确显示(O ...
- 欧拉函数-gcd-快速幂(牛客寒假算法基础集训营1-D-小a与黄金街道)
题目描述: 链接:https://ac.nowcoder.com/acm/contest/317/D来源:牛客网小a和小b来到了一条布满了黄金的街道上.它们想要带几块黄金回去,然而这里的城管担心他们拿 ...
- Notes : <Hands-on ML with Sklearn & TF> Chapter 3
Chapter 3-Classification .caret, .dropup > .btn > .caret { border-top-color: #000 !important; ...
- nice coding (与其亡羊补牢,不如未雨绸缪)
一.需求前 架构规范 建模规范 编码规范(流程控制,方法抽取,日志打印等) <Effective Java> <Design Patterns> 二.需求中 1. 明确需求(别 ...
- Tensoflow API笔记(N) 设备指定
tf.device是tf.Graph.device()的一个包装,是一个用于指定新创建的操作(operation)的默认设备的环境管理器.参数为device_name_or_function, ...
- windows putty xming virt-manager
记一次windows环境使用linux下使用virt-manager软件的问题 环境:windows server 2008.ubuntu-server 软件:putty.virt-manager.x ...
- _ZNote_Chrom_插件_Chrom运行Android软件_APK
https://chrome.google.com/webstore/detail/arc-welder/emfinbmielocnlhgmfkkmkngdoccbadn?utm_source=chr ...
- gitlab 之 升级、迁移
-----故事背景- 公司服务器用vm装的虚拟机,由于公司服务器经常无故重启,且找不到原因,所以公司准备将vm迁移至Hyper-V,Hyper-V可以自启动虚拟机且免费. -----升级.迁移- 首先 ...
- 一招让 IOS 自动化化快的飞起
前言 最近在做IOS自动化测试,IOS的Appium环境都配置OK,Demo脚本运行没有问题,多开执行没有问题,IOS安卓统一平台调度集成没有问题,可以进行自动化测试.课时真正执行用例时发现个严重问题 ...