DatePicker和TimePicker选择器

在Android开发的应用程序中,通常都会有时间和日期选择的需求,下面就对日期选择控件DatePicker和时间选择控件TimePicker的基本使用方法进行介绍:
        DatePicker是一个日期选择控件,它继承自FrameLayout类,用来实现的主要功能是使用护可以方便选择日期。如果要捕获用户修改DataPicker控件中的数据改变事件,需要为DatePicker添加OnDateChangedListener监听器。
        TimePicker是一个时间选择控件,也继承自FrameLayout类。时间选择控件向用户显示一天中的时间(可以为24小时,也可以为AM/PM制),并允许用户进行选择。如果要捕获用户修改时间数据的事件,便需要为TimePicker添加OnTimeChangedListener监听器。

1.效果图:

2.XML代码:

复制代码
 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="fill_parent"
 4     android:layout_height="fill_parent"
 5     android:orientation="vertical" >
 6 
 7     <TextView
 8         android:layout_width="fill_parent"
 9         android:layout_height="wrap_content"
10         android:text="请选择时间:" />
11 
12     <DatePicker
13         android:id="@+id/datePicker"
14         android:layout_width="wrap_content"
15         android:layout_height="wrap_content"
16         android:layout_gravity="center_horizontal" />
17 
18     <TimePicker
19         android:id="@+id/timePicker"
20         android:layout_width="wrap_content"
21         android:layout_height="wrap_content"
22         android:layout_gravity="center_horizontal" />
23 
24     <EditText
25         android:id="@+id/show"
26         android:layout_width="fill_parent"
27         android:layout_height="wrap_content"
28         android:cursorVisible="false"
29         android:editable="false" />
30 
31 </LinearLayout>
复制代码

3.java代码:

复制代码
 1 package com.example.datapicker;
 2 
 3 import java.util.Calendar;
 4 import android.app.Activity;
 5 import android.os.Bundle;
 6 import android.widget.DatePicker;
 7 import android.widget.DatePicker.OnDateChangedListener;
 8 import android.widget.EditText;
 9 import android.widget.TimePicker;
10 import android.widget.TimePicker.OnTimeChangedListener;
11 
12 public class MainActivity extends Activity {
13     
14     private DatePicker mDatePicker;
15     private TimePicker mTimePicker;
16     private EditText mEditText;
17 
18     // 定义5个记录当前时间的变量
19     private int year;
20     private int month;
21     private int day;
22     private int hour;
23     private int minute;
24 
25     @Override
26     public void onCreate(Bundle savedInstanceState) {
27         super.onCreate(savedInstanceState);
28         setContentView(R.layout.activity_main);
29         
30         initView();
31         
32     }
33 
34     private void initView() {
35         mDatePicker = (DatePicker) findViewById(R.id.datePicker);
36         mTimePicker = (TimePicker) findViewById(R.id.timePicker);
37         mEditText = (EditText) findViewById(R.id.show);
38         // 获取当前的年、月、日、小时、分钟
39         Calendar c = Calendar.getInstance();
40         year = c.get(Calendar.YEAR);
41         month = c.get(Calendar.MONTH);
42         day = c.get(Calendar.DAY_OF_MONTH);
43         hour = c.get(Calendar.HOUR);
44         minute = c.get(Calendar.MINUTE);
45 
46         
47         //初始化DatePicker组件,初始化时指定监听器
48         mDatePicker.init(year, month, day, new OnDateChangedListener() {
49             @Override
50             public void onDateChanged(DatePicker arg0, int year, int month,
51                     int day) {
52                 MainActivity.this.year = year;
53                 MainActivity.this.month = month;
54                 MainActivity.this.day = day;
55                 // 显示当前日期、时间
56                 showDate(year, month, day, hour, minute);
57             }
58         });
59         
60         // 为TimePicker指定监听器
61         mTimePicker.setOnTimeChangedListener(new OnTimeChangedListener() {
62             @Override
63             public void onTimeChanged(TimePicker arg0, int hour, int minute) {
64                 MainActivity.this.hour = hour;
65                 MainActivity.this.minute = minute;
66                 // 显示当前日期、时间
67                 showDate(year, month, day, hour, minute);
68             }
69         });
70     }
71 
72     
73     // 定义在EditText中显示当前日期、时间的方法
74     private void showDate(int year, int month, int day, int hour, int minute) {
75         mEditText.setText("日期为:" + year + "年" + month + "月" + day + "日  "
76                 + hour + "时" + minute + "分");
77     }
78 }
复制代码

 DatePickerDialog

设置日期DatePickerDialog

复制代码
package com.example.testview;

import java.util.Calendar;
import java.util.Date;
import java.util.Locale;

import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.TextView;
import android.view.View;
import android.view.View.OnClickListener;
import android.app.DatePickerDialog;

/**
 * 
 * DatePickerDialog是设置日期对话框,通过OnDateSetListener监听并重新设置日期,
 * 当日期被重置后,会执行OnDateSetLintener类中的方法onDateSet()
 *
 */


public class DatePickerDialogExample extends Activity {
    
    private TextView showdate;
    private Button setdate;
    private int year;
    private int month;
    private int day;
    

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.datepickerdialog);
        
        showdate=(TextView) this.findViewById(R.id.showtime);
        setdate=(Button) this.findViewById(R.id.setdate);
        //初始化Calendar日历对象
        Calendar mycalendar=Calendar.getInstance();

        year=mycalendar.get(Calendar.YEAR); //获取Calendar对象中的年
        month=mycalendar.get(Calendar.MONTH);//获取Calendar对象中的月
        day=mycalendar.get(Calendar.DAY_OF_MONTH);//获取这个月的第几天
        showdate.setText("当前日期:"+year+"-"+(month+1)+"-"+day); //显示当前的年月日
        
        //添加单击事件--设置日期
        setdate.setOnClickListener(new OnClickListener(){
            
            @Override
            public void onClick(View v)
            {
                /**
                 * 构造函数原型:
                 * public DatePickerDialog (Context context, DatePickerDialog.OnDateSetListener callBack, 
                 * int year, int monthOfYear, int dayOfMonth) 
                 * content组件运行Activity,
                 * DatePickerDialog.OnDateSetListener:选择日期事件
                 * year:当前组件上显示的年,monthOfYear:当前组件上显示的月,dayOfMonth:当前组件上显示的第几天
                 * 
                 */
                //创建DatePickerDialog对象
                DatePickerDialog dpd=new DatePickerDialog(DatePickerDialogExample.this,Datelistener,year,month,day);
                dpd.show();//显示DatePickerDialog组件
            }
        });    
        
    }
    private DatePickerDialog.OnDateSetListener Datelistener=new DatePickerDialog.OnDateSetListener()
    {
        /**params:view:该事件关联的组件
         * params:myyear:当前选择的年
         * params:monthOfYear:当前选择的月
         * params:dayOfMonth:当前选择的日
         */
        @Override
        public void onDateSet(DatePicker view, int myyear, int monthOfYear,int dayOfMonth) {
            
            
            //修改year、month、day的变量值,以便以后单击按钮时,DatePickerDialog上显示上一次修改后的值
            year=myyear;
            month=monthOfYear;
            day=dayOfMonth;
            //更新日期
            updateDate();
            
        }
        //当DatePickerDialog关闭时,更新日期显示
        private void updateDate()
        {
            //在TextView上显示日期
            showdate.setText("当前日期:"+year+"-"+(month+1)+"-"+day);
        }
    };
    
    
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值