Android时间对话框TimePickerDialog介绍
目前网上流行着很多对“时间对话框TimePickerDialog”的讲解文章,但感觉都不是很详细。这里详细对该方面的知识进行介绍,旨在帮助初学者能够快速掌握该项技术。
首先要做的是声明一个日历类的对象:
private Calendar c;
然后对其进行实例化:
c = Calendar.getInstance();
实例化后便可以对该日历对象进行操作了,如c.get方法可以获得该日历对象中的相关变量(如年、月、日、时、分、秒等),这些变量的值在实例化“c = Calendar.getInstance();”时已经被设置为系统默认时间;利用c.set方法可以对日历对象的相关变量进行设置。
日历对象还有一个重要的方法是setTimeInMillis,该方法只有一个参数,即距离1970年1月1日0时的毫秒数,调用这个方法,则会根据你传入的毫秒数对日历对象中的变量进行相应设置,如果想设置为当前的系统时间,则用以下方式:“c.setTimeInMillis(System.currentTimeMillis());”
介绍完日历类相关知识后进入正题,即时间对话框的开发。给出如下实例代码,其中红色部分为弹出对话框的按钮监听代码;蓝色代码为设置日历对象代码;剩下的便是时间对话框代码。
final ImageButton time = (ImageButton) findViewById(R.id.time);
time.setOnClickListener(new ImageButton.OnClickListener() {
public void onClick(View view){
c.setTimeInMillis(System.currentTimeMillis());
int hour = c.get(Calendar.HOUR_OF_DAY);
int minute = c.get(Calendar.MINUTE);
new TimePickerDialog(MenuView.this,new OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view,inthourOfDay,int minute)
{
c.setTimeInMillis(System.currentTimeMillis());
c.set(Calendar.HOUR_OF_DAY,hourOfDay);
c.set(Calendar.MINUTE, minute);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
}
}, hour, minute, true).show();
}
});
TimePickerDialog方法有五个参数,第一个参数(MenuView.this)为弹出的时间对话框所在的activity指针;第二个参数我们最后说;第三个参数(hour)和第四个参数(minute)为弹出的时间对话框的初始显示的小时和分钟,这两个变量在蓝色代码中进行初始化;第五个参数为设置24时显示参数,true代表时间以24时制显示时间。
下面回过头来说第二个参数,首先我们要了解一下时间对话框的样式,如下图所示:

点击“+”标题处和方框中的数字会同时增加,同理点击“-”则数字以1递减。对话框有两个button,点击“Cancel”按钮后没有任何操作,而如果点击了“Set”按钮,则会执行onTimeSet方法中的代码(橘黄色)。
所以根据示例代码的逻辑,点击弹出时间对话框的按钮后,显示的是系统当前时间,调整好时间后点击Set按钮,日历对象的时间变量改为设置的时间。但是再次点击弹出时间对话框按钮后,显示的仍是系统当前时间(蓝色代码中的c.setTimeInMillis(System.currentTimeMillis());)。当然,如果想在程序退出后记录上一次设置的时间值,可以考虑使用轻量级数据库Preferences相关知识解决。
以上就是时间对话框TimePickerDialog的相关知识,当然Android也有日期对话框DatePickerDialog,两者的原理都是相通的,在这里就不再赘述了
Android时间对话框TimePickerDialog介绍的更多相关文章
- android 时间对话框 TimePickerDialog简介
个人也提醒功能的时候用到了TimePickerDialog对话框,查阅了非常多技术资料,可是感觉非常多东西都说的不是非常具体,而且非常多地方.都有不完好的地方.比方有弹出对话框得到的不是系统当前 ...
- Android 时间对话框 TimePickerDialog
private int hourOfDay, minute; @Override protected void onCreate(Bundle savedInstanceState) { super. ...
- 日期对话框(DatePickerDialog)和时间对话框(TimePickerDialog)
效果图 布局 <Button android:id="@+id/btn_date" android:text="弹出日期选择对话框" android:la ...
- Android开发 ---构建对话框Builder对象,消息提示框、列表对话框、单选提示框、多选提示框、日期/时间对话框、进度条对话框、自定义对话框、投影
效果图: 1.activity_main.xml 描述: a.定义了一个消息提示框按钮 点击按钮弹出消息 b.定义了一个选择城市的输入框 点击按钮选择城市 c.定义了一个单选提示框按钮 点击按钮选择某 ...
- Android——对话框2(日期和时间对话框)
xml <Button android:layout_width="match_parent" android:layout_height="wrap_conten ...
- android 开发DatePickerDialog/TimePickerDialog对话框的实现
AndroidAPI提供了Dialog对话框控件,DatePickerDialog/TimePickerDialog均是AlertDialog的子类,通过DatePickerDialog/TimePi ...
- Android(对话框)
一.消息对话框 所谓的消息对话框,就是说当你点击按钮弹框,它会弹出一个消息提示你,消息对话框有相应的确定.取消.其他按钮,比如下方: 代码: //消息提示框 public void testOne(V ...
- Android 日期对话框DatePickerDialog
<?xml version="1.0" encoding="utf-8"?> <LinearLayout android:id="@ ...
- Android日期对话框NumberPicker的使用方法教程
NumberPicker是Android3.0之后引入的一个控件.NumberPicker 是用于选择一组提前定义好数字的控件.比方时间hour的选择仅仅有0-23有效,则能够通过setMinValu ...
随机推荐
- idea+maven+springmvc
黑了Java这么多年, 今天为Java写一篇文章吧. 这篇文章主要是想帮助那些刚接触到Java, 同时想从事Java WEB GUI开发的人. 对我而言, 我很早就有想尝试用Java写WEB的想法, ...
- 36Kr众筹项目比呀比biyabi,调查分析研究报告,背后资方势力的关系梳理
36Kr众筹项目比呀比biyabi调查报告 个层次的评价. 变革家-比呀比拆解报告:http://biangejia.com/archives/12653 8.其它 没有通过微信,参加路演,有点遗 ...
- Android 第三方分享中遇到的问题以及解决方案
本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 第三方登录和分享过程中难免遇到各种纠结的问题,下面将我遇到的分享给大家. 先说第三方登录 1.首先要 ...
- C# ArcGIS Engine 使当前选中的操作失效(清除当前鼠标事件)
问题描述: 前提:我用的ENGINE9.3开发,拖了一个ToolbarControl控件,加了一些常用操作的工具(平移,放大,缩小)在上边. 问题:我做了一个增加点的按钮.当我平移完地图之后,点击增加 ...
- 【java】itoo项目实战之大数据查询之使用 new map 优化hibernate之级联查询
在我的上一篇博客<[java]itoo项目实战之hibernate 懒载入优化性能>中,我曾提到过学生数据有2万条,查询数据十分的慢,这是让人非常受不了的事情.看着页面进度条一直转着圈圈, ...
- 动态游标(比如表名作为參数)以及动态SQL分析
表名作为參数的动态游标 DECLARE v_table_name VARCHAR2(30) := 'CUX_MES_WIP_BARCODE_MAP'; --l_rec SYS_REFCURSOR; T ...
- Kinect 开发 —— 常见手势识别(下)
划动(Swipe) 划动手势和挥手(wave)手势类似.识别划动手势需要不断的跟踪用户手部运动,并保持当前手的位置之前的手的位置.因为手势有一个速度阈值,我们需要追踪手运动的时间以及在三维空间中的坐标 ...
- sessionStorage的使用方法
本篇是关于sessionStorage的使用方法的介绍,简单几行代码,实现sessionStorage,请大家查阅 (1)在需要设置sessionStorage的页面写如下代码可以存入sessionS ...
- logrotate---日志分割
logrotate命令用于对系统日志进行轮转.压缩和删除,也可以将日志发送到指定邮箱.使用logrotate指令,可让你轻松管理系统所产生的记录文件.每个记录文件都可被设置成每日,每周或每月处理,也能 ...
- 洛谷——P1314 聪明的质监员
https://www.luogu.org/problem/show?pid=1314 题目描述 小T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有 n 个矿石,从 1到n 逐一编号,每 ...