项目步骤:

1.在Main.xml布局文件中定义对应的组件,Main.xml内容如下:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical" >

<!-- 日期控件布局 -->

<LinearLayout

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:orientation="horizontal" >

<EditText

android:id="@+id/showdate"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_weight="1" />

<Button

android:id="@+id/pickdate"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="选择日期" />

</LinearLayout>

<!-- 时间控件布局 -->

<LinearLayout

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:orientation="horizontal" >

<EditText

android:id="@+id/showtime"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_weight="1" />

<Button

android:id="@+id/picktime"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="选择时间" />

</LinearLayout>

</LinearLayout>

2.在Activity中声明日期、时间控件,完成对其操作,Activity内容如下:

public class MainActivity extends Activity {

//声明变量,获取组件

private EditText showDate = null;

private Button pickDate = null;

private EditText showTime = null;

private Button pickTime = null;

//声明变量,用于对日期、时间控件的操作

private static final int SHOW_DATAPICK = 0;

private static final int DATE_DIALOG_ID = 1;

private static final int SHOW_TIMEPICK = 2;

private static final int TIME_DIALOG_ID = 3;

private int mYear;  private int mMonth;

private int mDay;  private int mHour;

private int mMinute;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

//设置布局文件

setContentView(R.layout.main);

// 初始化控件和UI视图

initializeViews();

//新建一个Calendar对象获取Calendar信息

final Calendar c = Calendar.getInstance();

//将年、月、日、时、分分别获取出来

mYear = c.get(Calendar.YEAR);

mMonth = c.get(Calendar.MONTH);

mDay = c.get(Calendar.DAY_OF_MONTH);

mHour = c.get(Calendar.HOUR_OF_DAY);

mMinute = c.get(Calendar.MINUTE);

//设置日期

setDateTime();

//设置时间

setTimeOfDay();

}

/**   * 初始化控件和UI视图   */

private void initializeViews() {

//根据id在布局文件中找到对应的组件

showDate = (EditText) findViewById(R.id.showdate);

pickDate = (Button) findViewById(R.id.pickdate);

showTime = (EditText) findViewById(R.id.showtime);

pickTime = (Button) findViewById(R.id.picktime);

//为pickDate设置监听器,点击显示日期控件

pickDate.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

//新建一个Message对象

Message msg = new Message();

if (pickDate.equals((Button) v)) {

msg.what = MainActivity.SHOW_DATAPICK;

}

//发出消息

MainActivity.this.dateandtimeHandler.sendMessage(msg);

}

});

//为pickTime设置监听器,点击显示时间控件

pickTime.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

Message msg = new Message();

if (pickTime.equals((Button) v)) {

msg.what = MainActivity.SHOW_TIMEPICK;

}

//发出消息

MainActivity.this.dateandtimeHandler.sendMessage(msg);

}

});

}

/**   * 设置日期   */

private void setDateTime() {

final Calendar c = Calendar.getInstance();

mYear = c.get(Calendar.YEAR);

mMonth = c.get(Calendar.MONTH);

mDay = c.get(Calendar.DAY_OF_MONTH);

//更新日期

updateDateDisplay();

}

/**   * 更新日期显示   */

private void updateDateDisplay() {

showDate.setText(new StringBuilder().append(mYear).append("-")     .append((mMonth + 1) < 10 ? "0" + (mMonth + 1) : (mMonth + 1))     .append("-").append((mDay < 10) ? "0" + mDay : mDay));

}

/**   * 日期控件的事件   */

private DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener() {

public void onDateSet(DatePicker view, int year, int monthOfYear,     int dayOfMonth) {

mYear = year;    mMonth = monthOfYear;    mDay = dayOfMonth;

//更新日期

updateDateDisplay();

}

};

/**   * 设置时间   */

private void setTimeOfDay() {

final Calendar c = Calendar.getInstance();

mHour = c.get(Calendar.HOUR_OF_DAY);

mMinute = c.get(Calendar.MINUTE);

//更新日期

updateTimeDisplay();

}

/**   * 更新时间显示   */

private void updateTimeDisplay() {

showTime.setText(new StringBuilder().append(mHour).append(":")     .append((mMinute < 10) ? "0" + mMinute : mMinute));

}

/**   * 时间控件事件   */

private TimePickerDialog.OnTimeSetListener mTimeSetListener = new TimePickerDialog.OnTimeSetListener() {

@Override

public void onTimeSet(TimePicker view, int hourOfDay, int minute) {

mHour = hourOfDay;

mMinute = minute;

//更新时间

updateTimeDisplay();

}

};

/**   * 判断用户选择并作出响应   */

@Override

protected Dialog onCreateDialog(int id) {

switch (id) {

case DATE_DIALOG_ID:    return new DatePickerDialog(this, mDateSetListener, mYear, mMonth,      mDay);

case TIME_DIALOG_ID:    return new TimePickerDialog(this, mTimeSetListener, mHour, mMinute,      true);

}   return null;

}

@Override

protected void onPrepareDialog(int id, Dialog dialog) {

switch (id) {

case DATE_DIALOG_ID:    ((DatePickerDialog) dialog).updateDate(mYear, mMonth, mDay);    break;

case TIME_DIALOG_ID:    ((TimePickerDialog) dialog).updateTime(mHour, mMinute);    break;

}

}

/**   * 处理日期和时间控件的Handler   */

Handler dateandtimeHandler = new Handler() {

@Override

public void handleMessage(Message msg) {

switch (msg.what) {

case MainActivity.SHOW_DATAPICK:

//显示日期控件

showDialog(DATE_DIALOG_ID);     break;

case MainActivity.SHOW_TIMEPICK:

//显示时间控件

showDialog(TIME_DIALOG_ID);     break;

}

}

};

}

【基础篇】DatePickerDialog日期控件的基本使用(二) ——分别获取年、月、日、时、分的更多相关文章

  1. 【基础篇】DatePickerDialog日期控件的基本使用(一)

    项目步骤: 1.首先在Main.xml布局文件中添加一个Button标签,用来点击显示日期控件,Main.xml内容如下: <RelativeLayout xmlns:android=" ...

  2. iOS开发基础篇-手写控件

    一.手写控件的步骤 1)使用相应的控件类创建控件对象: 2)设置该控件的各种属性: 3)添加空间到视图中: 4)如果是 UIButton 等控件,还需考虑控件的单击事件等: 二.添加 UIButton ...

  3. cocos2dx基础篇(10) 按钮控件CCControlButton

    [3.x] (1)去掉 “CC” (2)对象类 CCObject 改为 Ref (3)按钮事件回调依旧为 cccontrol_selector ,没有使用 CC_CALLBACK_2 (4)按钮状态  ...

  4. cocos2dx基础篇(9) 滑块控件CCControlSlider

    [3.x] (1)去掉 “CC” (2)对象类 CCObject 改为 Ref (3)CCControlEvent 改为强枚举 Control::EventType (4)CCControlEvent ...

  5. JQuery EasyUI 日期控件 怎样做到只显示年月,而不显示日

    标题问题的答案在OSChina中 http://www.oschina.net/question/2282354_224401?fromerr=lHJTcN89 我还是把这个记录下来 ======== ...

  6. ASP.NET C# 日期 时间 年 月 日 时 分 秒 格式及转换(转自happymagic的专栏)

    在平时编码中,经常要把日期转换成各种各样的形式输出或保持,今天专门做了个测试,发现DateTime的ToString()方法居然有这么多的表现形式,和大家一起分享. DateTime time=Dat ...

  7. ASP.NET 日期 时间 年 月 日 时 分 秒 格式及转换

    在平时编码中,经常要把日期转换成各种各样的形式输出或保持,今天专门做了个测试,发现DateTime的ToString()方法居然有这么多的表现形式,和大家一起分享. DateTime time=Dat ...

  8. Js 日期字符串分别截取 年 月 日 时 分 秒

    function shijiantime(times){ var timearr = times.replace(" ", ":").replace(/\:/g ...

  9. Wdatepicker日期控件的使用指南 (转)

    Wdatepicker日期控件的使用指南 标签: inputclass语言functionstring正则表达式 2012-02-10 15:48 40826人阅读 评论(5) 收藏 举报 .embo ...

随机推荐

  1. 解决wps的ppt演示不能打开的问题libbz2.so.1.0

      安装 wps-office-10.1.0.5707-1.a21.x86_64 无法打开ppt 其他正常

  2. 紫书 例题 11-14 UVa 1279 (动点最小生成树)(详细解释)

    这道题写了好久-- 在三维空间里面有动的点, 然后求有几次最小生成树. 其实很容易发现, 在最小生成树切换的时候,在这个时候一定有两条边相等, 而且等一下更大的那条边在最小生成树中,等一下更小的边不在 ...

  3. C语言过程活动记录

    C 语言自动提供的服务之一就是跟踪调用链——哪些函数调用了哪些函数,当下一个return语句执行后,控制将返回何处等.解决这个问题的经典机制是堆栈中的活动记录. 当每个函数被调用时,都会产生一个过程记 ...

  4. Java中四种复制数组的方法

    JAVA语言的下面几种数组复制方法中,哪个效率最高? B.效率:System.arraycopy > clone > Arrays.copyOf > for循环 1.System.a ...

  5. Qt之布局管理器

    简述 Qt的布局系统提供了一个简单的和强有力的方式,来自动排列窗口子控件布局. 所有QWidget子类可以使用布局来管理他们的子控件.QWidget::setLayout()函数可以为一个控件布局.当 ...

  6. Node.js 博客实例(十)pv统计和留言统计

    原教程 https://github.com/nswbmw/N-blog/wiki/_pages的第十章,因为版本号等的原因,在原教程基础上稍加修改就可以实现. post.js中将var post={ ...

  7. OpenCASCADE点向平面投影

    OpenCASCADE点向平面投影 OpenCASCADE的ProjLib类提供了解析曲线(直线.圆.椭圆.抛物线.双曲线)向解析曲面(平面.圆柱面.圆锥面.球面.圆环面)投影的功能,主要用来计算三维 ...

  8. 如何解读「量子计算应对大数据挑战:中国科大首次实现量子机器学习算法」?——是KNN算法吗?

    作者:知乎用户链接:https://www.zhihu.com/question/29187952/answer/48519630 我居然今天才看到这个问题,天……本专业,有幸听过他们这个实验的组会来 ...

  9. Mysql锁表

    lock tables是线程锁定表 lock tables table_name read lock tables table_name write read表示 所有用户只能读取被锁的表,不能对其进 ...

  10. 6.CPU调度

    总论:所有的程序都是CPU和I/O等待交替执行 CPU调度器的操作时机 调用CPU调度器的时机,通常发生在 某一进程从执行状态转化为等待状态 某一进程从执行状态转化为就绪状态 某一进程从等待状态转为就 ...