您的位置:首页 > 移动开发 > Android开发

Android组件的使用:DatePicker,TimePicker

2013-07-23 00:48 513 查看

1、DatePicker的使用

1、 在布局文件中声明一个DatePicker控件时,切换到视图模式时看不到效果,需要通过程序控制对其进行初始化。

<DatePicker    -->声明DatePicker控件
android:id="@+id/dp_showdate"            -->设置控件id
android:layout_width="match_parent"      -->设置控件宽度为父容器宽度
android:layout_height="wrap_content"/>   -->设置控件高度为父容器高度


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);        //调用父类方法
super.setContentView(R.layout.datepicker_layout);//设置布局管理器
/*         year:表示要设置的年份
6          *  monthOfYear:表示要设置的一年中的某月
7          *   dayOfMonth:表示要设置的一个月中的某天
8          * onDateChangedListener:表示要设置的时间改变的监听器,当时间改变时触发该事件
9          */
dp_showdate.init(year, monthOfYear, dayOfMonth, onDateChangedListener);
}


2、要对以上:year、monthOfYear、dayOfMonth进行初始化,可以使用java中提供的Calendar类方便的获得。

//使用Calendar类提供的日期方法,获得相应的年月日
Calendar calendar = Calendar.getInstance();    //通过Calendar类提供的静态方法:类名.方法()获得Calendar实例
int year = calendar.get(Calendar.YEAR);       //设置年份
int monthOfYear = calendar.get(Calendar.YEAR);   //设置一年中的某月
int dayOfMonth = calendar.get(Calendar.YEAR);   //设置一月中的某天


3、然后再设置日期改变监听:

dp_showdate.init(year, monthOfYear, dayOfMonth, new OnDateChangedListener(){
@Override
public void onDateChanged(DatePicker view, int year, int monthOfYear,int dayOfMonth) {
//什么都没做
}
});


运行效果:



1.1为DatePicker添加日期改变监听

在布局文件中添加一个TextView,用于显示日期

<TextView       -->定义一个TextView控件
android:id="@+id/tv_showdate"              -->设置控件id
android:layout_width="match_parent"        -->设置控件宽度
android:layout_height="wrap_content"/>     -->设置控件高度


在监听方法中初始化年月日:

DatePickerDemoActivity.this.year = year;                //选择后的年份
DatePickerDemoActivity.this.monthOfYear = monthOfYear;  //选择后的月份
DatePickerDemoActivity.this.dayOfMonth = dayOfMonth;    //选择后的天


定义一个方法,用于显示信息:

/*
* 该方法用于显示信息
*/
public void showInfo(int year,int monthOfYear,int dayOfMonth){
String info =year+"年"+monthOfYear+"月"+dayOfMonth+"日";
tv_showdate.setText(info);//把输出的信息放到TextView中
}


运行效果:



完整代码:

<?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:id="@+id/tv_showdate"             -->为组件设置id
android:layout_width="match_parent"    -->设置组件宽度为父容器宽度
android:layout_height="wrap_content"/>   -->设置组件高度
<DatePicker   -->定义组件
android:id="@+id/dp_showdate"         -->设置组件id
android:layout_width="match_parent"     -->设置组件宽度为父容器宽度
android:layout_height="wrap_content"/>   -->设置组件高度为包裹内容高度
</LinearLayout>


DatePickerDemoActivity类:

package com.example.basiccomponent2;

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;

public class DatePickerDemoActivity extends Activity {
private TextView tv_showdate = null;          //声明TextView对象
private DatePicker dp_showdate = null;        //声明DatePicker对象
//使用Calendar类提供的日期方法,获得相应的年月日
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int monthOfYear = calendar.get(Calendar.YEAR);
int dayOfMonth = calendar.get(Calendar.YEAR);

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.datepicker_layout);//设置布局管理器
//初始化view
dp_showdate = (DatePicker)super.findViewById(R.id.dp_showdate);
tv_showdate = (TextView)super.findViewById(R.id.tv_showdate);
/*         year:表示要设置的年份
*  monthOfYear:表示要设置的一年中的某月
*   dayOfMonth:表示要设置的一个月中的某天
* onDateChangedListener:表示要设置的时间改变的监听器
*/
dp_showdate.init(year, monthOfYear, dayOfMonth, new OnDateChangedListener(){
@Override
public void onDateChanged(DatePicker view, int year, int monthOfYear,int dayOfMonth) {
DatePickerDemoActivity.this.year = year;                //选择后的年份
DatePickerDemoActivity.this.monthOfYear = monthOfYear;  //选择后的月份
DatePickerDemoActivity.this.dayOfMonth = dayOfMonth;    //选择后的天
DatePickerDemoActivity.this.showInfo(year, monthOfYear,dayOfMonth);//调用显示信息方法
}
});
}
/*
* 该方法用于显示信息
*/
public void showInfo(int year,int monthOfYear,int dayOfMonth){
String info =year+"年"+(monthOfYear+1)+"月"+dayOfMonth+"日";
tv_showdate.setText(info);//把输出的信息放到TextView中
}

}


修改显示日期效果,为小于10的数字添加0:

public void showInfo(int year, int monthOfYear, int dayOfMonth) {
String info = year + "年" + addZero(monthOfYear+1) + "月" + addZero(dayOfMonth) + "日";
tv_showdate.setText(info);// 把输出的信息放到TextView中
}
public String addZero(int num){
String str = null;
if(num<10){
str = "0"+num;
}else{
str = ""+num;
}
return str;
}


2、TimePicker的使用

TimePicker的使用和DatePicker类似,但是不用给其初始化,在布局文件中添加一个TimePicker组件:

<TimePicker
android:id="@+id/tp_showtime"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>


在Activity类中,完整代码:

package com.example.basiccomponent2;

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.TimePicker.OnTimeChangedListener;

public class DatePickerDemoActivity extends Activity {
private TextView tv_showdate = null; //
private DatePicker dp_showdate = null; //
private TimePicker tp_showtime = null;
// 使用Calendar类提供的日期方法,获得相应的年月日
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int monthOfYear = calendar.get(Calendar.YEAR);
int dayOfMonth = calendar.get(Calendar.YEAR);

int hourOfDay = calendar.get(Calendar.HOUR_OF_DAY);
int minute = calendar.get(Calendar.MINUTE);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.datepicker_layout);// 设置布局管理器
// 初始化view
dp_showdate = (DatePicker) super.findViewById(R.id.dp_showdate);
tv_showdate = (TextView) super.findViewById(R.id.tv_showdate);
tp_showtime = (TimePicker)super.findViewById(R.id.tp_showtime);
/*
* year:表示要设置的年份 monthOfYear:表示要设置的一年中的某月 dayOfMonth:表示要设置的一个月中的某天
* onDateChangedListener:表示要设置的时间改变的监听器
*/
dp_showdate.init(year, monthOfYear, dayOfMonth,new OnDateChangedListener() {
@Override
public void onDateChanged(DatePicker view, int year,int monthOfYear, int dayOfMonth) {
DatePickerDemoActivity.this.year = year; // 选择后的年份
DatePickerDemoActivity.this.monthOfYear = monthOfYear; // 选择后的月份
DatePickerDemoActivity.this.dayOfMonth = dayOfMonth; // 选择后的天
DatePickerDemoActivity.this.showInfo(year, monthOfYear,dayOfMonth,hourOfDay,minute);// 调用显示信息方法
}
});
//设置时间事件
tp_showtime.setOnTimeChangedListener(new OnTimeChangedListener(){
@Override
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
DatePickerDemoActivity.this.hourOfDay = hourOfDay;
DatePickerDemoActivity.this.minute = minute;
DatePickerDemoActivity.this.showInfo(year, monthOfYear,dayOfMonth,hourOfDay,minute);// 调用显示信息方法
}
});
}

/*
* 该方法用于显示信息
*/
public void showInfo(int year, int monthOfYear, int dayOfMonth,int hourOfDay,int minute) {
String info = year + "年" + addZero(monthOfYear+1)
+ "月" + addZero(dayOfMonth)
+ "日" + addZero(hourOfDay)
+ "时" + addZero(minute)
+ "分";
tv_showdate.setText(info);// 把输出的信息放到TextView中
}
public String addZero(int num){
String str = null;
if(num<10){
str = "0"+num;
}else{
str = ""+num;
}
return str;
}

}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: