Advertisement

Android小程序-日历选择器

阅读量:

目标效果:

运行程序后会发现对话框后边的标题栏上显示了当前的日期和时间,在第一个时间对话框更改时间后显示日期对话框时,更改过的时间又显示到了标题栏上,当在日期对话框更改日期后,标题栏也显示出更改后的日期,进入页面滑动控件进行选择日期或者时间,都会显示在标题栏上。

1.首先在activity_main.xml页面放入两个选择器控件。

activity_main.xml页面:

复制代码
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    
     xmlns:tools="http://schemas.android.com/tools"
    
     android:layout_width="match_parent"
    
     android:layout_height="match_parent"
    
     tools:context=".MainActivity" >
    
  
    
     <TimePicker
    
     android:id="@+id/tpTime"
    
     android:layout_width="wrap_content"
    
     android:layout_height="wrap_content"
    
     android:layout_alignParentLeft="true"
    
     android:layout_below="@+id/dpDate"
    
     android:layout_marginLeft="19dp"
    
     android:layout_marginTop="72dp" />
    
  
    
     <DatePicker
    
     android:id="@+id/dpDate"
    
     android:layout_width="wrap_content"
    
     android:layout_height="wrap_content"
    
     android:layout_alignParentTop="true"
    
     android:layout_centerHorizontal="true"
    
     android:layout_marginTop="84dp" />
    
  
    
 </RelativeLayout>
    
    
    
    

2.在MainActivity.java页面进行事件处理。

MainActivity.java页面;

复制代码
 package com.example.selecttime;

    
  
    
 import java.util.Calendar;
    
  
    
 import android.os.Bundle;
    
 import android.app.Activity;
    
 import android.app.DatePickerDialog;
    
 import android.app.DatePickerDialog.OnDateSetListener;
    
 import android.app.TimePickerDialog;
    
 import android.app.TimePickerDialog.OnTimeSetListener;
    
 import android.view.Menu;
    
 import android.widget.DatePicker;
    
 import android.widget.DatePicker.OnDateChangedListener;
    
 import android.widget.TimePicker;
    
 import android.widget.TimePicker.OnTimeChangedListener;
    
  
    
 public class MainActivity extends Activity {
    
  
    
 	private TimePicker tpTime;     //实例选择器控件
    
 	private DatePicker dpDate;
    
 	private Calendar cal;          //实例日期类
    
 	private int year,month,day,hour,minute;
    
 	@Override
    
 	protected void onCreate(Bundle savedInstanceState) {
    
 		super.onCreate(savedInstanceState);
    
 		setContentView(R.layout.activity_main);
    
 		
    
 		cal=Calendar.getInstance();        //获取日历对象
    
 		
    
 		year=cal.get(Calendar.YEAR);       //获取年月日时分秒
    
 		month=cal.get(Calendar.MONTH)+1;   //获取到的月份是从0开始计数,所以需要加一
    
 		day=cal.get(Calendar.DAY_OF_MONTH);
    
 		hour=cal.get(Calendar.HOUR_OF_DAY);
    
 		minute=cal.get(Calendar.MINUTE);
    
 		setTitle(year+"-"+month+"-"+day+" "+hour+":"+minute);//将日期时间显示在标题栏上
    
 		
    
 		tpTime=(TimePicker) findViewById(R.id.tpTime);   //获取控件
    
 		dpDate=(DatePicker) findViewById(R.id.dpDate);
    
 		
    
 		
    
 		/** * dataPicker初始化,日期选择器的改变事件
    
 		 * 第二个参数传递的是月份,默认自动加一,所以不能用之前手动加一的month值
    
 		 */
    
 		dpDate.init(year,cal.get(Calendar.MONTH), day, new OnDateChangedListener() {
    
 			@Override
    
 			public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
    
 				setTitle(year+"-"+(monthOfYear+1)+"-"+dayOfMonth);      //将更改后的显示到标题栏
    
 			}
    
 		});
    
 		
    
 		
    
 		/** * timePicker初始化,时间选择器的改变事件
    
 		 */
    
 		tpTime.setOnTimeChangedListener(new OnTimeChangedListener() {
    
 			@Override
    
 			public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
    
 				setTitle(hourOfDay+":"+minute);
    
 			}
    
 		});
    
 		
    
 		
    
 		/** *日期选择对话框
    
 		 */
    
 		new DatePickerDialog(this, new OnDateSetListener() {
    
 			
    
 			@Override
    
 			public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
    
 				setTitle(year+"-"+(monthOfYear+1)+"-"+dayOfMonth);     //将更改后的再显示到标题栏上
    
 			}
    
 		}, year,cal.get(Calendar.MONTH), day).show();     //改变结果显示到控件上
    
 		
    
 		
    
 		/** * 时间对话框
    
 		 */
    
 		new TimePickerDialog(this, new OnTimeSetListener() {
    
 			@Override
    
 			public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
    
 				setTitle(hourOfDay+":"+minute);       //将更改后的再显示到标题栏上
    
 			}
    
 		}, hour, minute, true).show();     //改变结果显示到控件上
    
 	}
    
  
    
 	@Override
    
 	public boolean onCreateOptionsMenu(Menu menu) {
    
 		getMenuInflater().inflate(R.menu.main, menu);
    
 		return true;
    
 	}
    
  
    
 }
    
    
    
    

3.运行程序就可以显示目标效果了。

全部评论 (0)

还没有任何评论哟~