• 沒有找到結果。

动态输入日期与时间

在文檔中 开放手机联盟 (頁 181-190)

DatePicker 与 TimePicker 应用

① 新建工程

② 修改 main.xml 布局,添加一个 DatePicker、一个 TimePicker、一个 TextView

③ DatePicker 的初始化与日期改变事件的处理

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

<AbsoluteLayout

android:id="@+id/widget0"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

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

<DatePicker

android:id="@+id/my_DatePicker"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_x="10px"

android:layout_y="10px">

</DatePicker><!-- 日期设置器 -->

<TimePicker

android:id="@+id/my_TimePicker"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_x="10px"

android:layout_y="150px">

</TimePicker><!-- 事件设置器 -->

<TextView

android:id="@+id/my_TextView"

android:layout_width="228px"

android:layout_height="29px"

android:text="TextView"

android:layout_x="10px"

android:layout_y="300px">

</TextView>

</AbsoluteLayout>

/* 定义 程序用到的UI元素对象:日历设置器*/

DatePicker my_datePicker;

/* findViewById()从XML中获取UI元素对象 */

my_datePicker = (DatePicker) findViewById(R.id.my_DatePicker);

41

④ TimePicker 的初始化与时间改变事件的处理

⑤ 修改 mainActivity.java,添加动态修改时间并显示效果 /*为日历设置器添加点击事件监听器,处理设置日期事件*/

my_datePicker.init(my_Year, my_Month, my_Day, newnew

newnew DatePicker.OnDateChangedListener(){

@Override public public public

public voidvoidvoidvoid onDateChanged(DatePicker view, intintintint year, intint

intint monthOfYear, intintintint dayOfMonth) { // TODOTODOTODOTODO Auto-generated method stub /*日期改变事件处理*/

} });

/* 定义 程序用到的UI元素对象:时间设置器*/

TimePicker my_timePicker;

/* findViewById()从XML中获取UI元素对象 */

my_timePicker = (TimePicker) findViewById(R.id.my_TimePicker);

/* 把时间设置成24小时制 */

my_timePicker.setIs24HourView(truetruetruetrue);

/*为时间设置器添加点击事件监听器,处理设置时间事件*/

my_timePicker.setOnTimeChangedListener(newnewnewnew

TimePicker.OnTimeChangedListener(){

@Override public public public

public voidvoidvoidvoid onTimeChanged(TimePicker view, intintintint hourOfDay, int int int

int minute) { // TODOTODOTODOTODO Auto-generated method stub

/*时间改变事件处理*/

package zyf.Ex_Ctrl_15ME;

/*导入要使用的包*/

import import import

import java.util.Calendar;

import import import

import java.util.Locale;

import import import

import android.app.Activity;

import import import

import android.os.Bundle;

import import import

import android.widget.DatePicker;

import import import

import android.widget.TextView;

import import import

import android.widget.TimePicker;

public public public

public classclassclassclass Ex_Ctrl_15ME extendsextendsextendsextends Activity {

/** Called when the activity is first created. */

/* 定义时间变量:年、月、日、小时、分钟 */

intint

intint my_Year;

int int int

int my_Month;

42

int int int

int my_Hour;

intint

intint my_Minute;

/* 定义 程序用到的UI元素对象:日历设置器、时间设置器、显示时间的TextView */

DatePicker my_datePicker;

TimePicker my_timePicker;

TextView showDate_Time;

/* 定义日历对象,初始化时,用来获取当前时间 */

Calendar my_Calendar;

@Override public public public

public voidvoidvoidvoid onCreate(Bundle savedInstanceState) { /* 从Calendar抽象基类获得实例对象,并设置成中国时区 */

my_Calendar = Calendar.getInstance(Locale.CHINA);

/* 从日历对象中获取当前的:年、月、日、时、分 */

my_Year = my_Calendar.get(Calendar.YEAR);

my_Month = my_Calendar.get(Calendar.MONTH);

my_Day = my_Calendar.get(Calendar.DAY_OF_MONTH);

my_Hour = my_Calendar.get(Calendar.HOUR_OF_DAY);

my_Minute = my_Calendar.get(Calendar.MINUTE);

super super super

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

/* findViewById()从XML中获取UI元素对象 */

my_datePicker = (DatePicker) findViewById(R.id.my_DatePicker);

my_timePicker = (TimePicker) findViewById(R.id.my_TimePicker);

showDate_Time = (TextView) findViewById(R.id.my_TextView);

/* 把时间设置成24小时制 */

my_timePicker.setIs24HourView(truetruetruetrue);

/* 显示时间 */

loadDate_Time();

/*为日历设置器添加点击事件监听器,处理设置日期事件*/

my_datePicker.init(my_Year, my_Month, my_Day, new

new new

new DatePicker.OnDateChangedListener(){

@Override public public public

public voidvoidvoidvoid onDateChanged(DatePicker view, intintintint year, int

int int

int monthOfYear, intintintint dayOfMonth) { // TODOTODOTODOTODO Auto-generated method stub

/*把设置改动后的日期赋值给我的日期对象*/

43

⑥ 结果

/*为时间设置器添加点击事件监听器,处理设置时间事件*/

my_timePicker.setOnTimeChangedListener(newnewnewnew

TimePicker.OnTimeChangedListener(){

@Override public public public

public voidvoidvoidvoid onTimeChanged(TimePicker view, intintintint hourOfDay, intint

intint minute) { /*把设置改动后的时间赋值给我的时间对象*/

private voidvoidvoidvoid loadDate_Time() {

showDate_Time.setText(newnewnewnew StringBuffer() .append(my_Year).append("/")

.append(FormatString(my_Month + 1))

.append("/").append(FormatString(my_Day)) .append(" ").append(FormatString(my_Hour)) .append(" : ").append(FormatString(my_Minute)));

}

/* 日期时间显示两位数的方法 */

private private private

private String FormatString(intintintint x) { String s = Integer.toString(x);

if return s;

} }

44

DatePickerDialog 与 TimePickerDialog 应用

① 新建工程

② 修改 main.xml 布局,添加两个按钮、一个 TextView

③ DatePickerDialog 的定义与初始化以及显示

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

<AbsoluteLayout

android:id="@+id/widget0"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

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

<Button

android:id="@+id/show_DatePicker"

android:layout_width="150px"

android:layout_height="wrap_content"

android:layout_x="10px"

android:layout_y="10px" android:text="显示日期设置对话框"/>

<Button

android:id="@+id/show_TimePicker"

android:layout_width="150px"

android:layout_height="wrap_content"

android:layout_x="10px"

android:layout_y="70px" android:text="显示时间设置对话框"/>

<TextView

android:id="@+id/my_TextView"

android:layout_width="228px"

android:text="TextView"

android:layout_x="10px"

android:layout_y="180px"

android:layout_height="45px"

android:textSize="20px"/>

</AbsoluteLayout>

/* 定义 程序用到的UI元素对象:日历设置器对话框 */

DatePickerDialog my_datePickerDialog;

/*构造一个DatePickerDialog对象,第一个参数为Context、

* 第二参数为日期修改事件处理监听器、后面为初始化的年月日*/

my_datePickerDialog=newnewnewnew DatePickerDialog(Ex_Ctrl_15_B.thisthisthisthis,

myDateSetListener, my_Year, my_Month, my_Day);

/*显示出日期设置对话框*/

my_datePickerDialog.show();

45

④ DatePickerDialog 的日期修改事件处理

⑤ TimePickerDialog 的定义与初始化以及显示

⑥ TimePickerDialog 的时间修改事件处理

⑦ 修改 mainActivity.java,实现动态显示修改的日期、时间 /*日期改变设置事件监听器*/

private private private

private OnDateSetListener myDateSetListener=newnewnewnew OnDateSetListener(){

@Override public public public

public voidvoidvoidvoid onDateSet(DatePicker view, intintintint year, intintintint monthOfYear, intint

intint dayOfMonth) {

// TODOTODOTODOTODO Auto-generated method stub /*日期改变设置事件处理*/

} };

/* 定义 程序用到的UI元素对象:时间设置器对话框*/

TimePickerDialog my_timePickerDialog;

/*构造一个TimePickerDialog对象,第一个参数为Context、

*第二个参数为时间修改事件监听器、后面两个为初始化时间,

*最后一个boolean类型设置是否为24小时制*/

my_timePickerDialog=newnewnewnew TimePickerDialog(Ex_Ctrl_15_B.thisthisthisthis,

myTimeSetListener, my_Hour, my_Minute, falsefalsefalsefalse);

/*显示出日期设置对话框*/

private OnTimeSetListener myTimeSetListener=newnewnewnew OnTimeSetListener(){

@Override public public public

public voidvoidvoidvoid onTimeSet(TimePicker view, intintintint hourOfDay, intintintint minute) { // TODOTODOTODOTODO Auto-generated method stub

/*时间改变设置事件处理*/

package zyf.Ex_Ctrl_15_B;

/*导入使用的包*/

import import import

import java.util.Calendar;

import import import

import java.util.Locale;

import import import

import android.app.Activity;

import import import

import android.app.DatePickerDialog;

import import import

import android.app.TimePickerDialog;

import import import

import android.app.DatePickerDialog.OnDateSetListener;

import import import

import android.app.TimePickerDialog.OnTimeSetListener;

import import import

import android.os.Bundle;

import import import

import android.view.View;

46

import import import

import android.widget.DatePicker;

import import import

import android.widget.TextView;

import import import

import android.widget.TimePicker;

public public public

public classclassclassclass Ex_Ctrl_15_B extendsextendsextendsextends Activity implementsimplementsimplementsimplements Button.OnClickListener{

/** Called when the activity is first created. */

/* 定义时间变量:年、月、日、小时、分钟 */

int int int

int my_Year;

int int int

int my_Month;

intint

intint my_Day;

int int int

int my_Hour;

intint

intint my_Minute;

/* 定义 程序用到的UI元素对象:日历设置器对话框、时间设置器对话框、

显示时间的TextView、按钮 */

DatePickerDialog my_datePickerDialog;

TimePickerDialog my_timePickerDialog;

TextView showDate_Time;

Button showDatePDialog;

Button showTimePDialog;

/* 定义日历对象,初始化时,用来获取当前时间 */

Calendar my_Calendar;

/*日期改变设置事件监听器*/

private private private

private OnDateSetListener myDateSetListener=newnewnewnew OnDateSetListener(){

@Override public public public

public voidvoidvoidvoid onDateSet(DatePicker view, intintintint year, int

intintint monthOfYear, intintintint dayOfMonth) { // TODOTODOTODOTODO Auto-generated method stub

/*把设置修改后的日期赋值给我的年、月、日变量*/

private OnTimeSetListener myTimeSetListener=newnewnewnew OnTimeSetListener(){

@Override public public public

public voidvoidvoidvoid onTimeSet(TimePicker view, intintintint hourOfDay, intintintint minute) { // TODOTODOTODOTODO Auto-generated method stub

/*把设置修改后的时间赋值给我的时、分变量*/

my_Hour=hourOfDay;

my_Minute=minute;

47

public voidvoidvoidvoid onCreate(Bundle savedInstanceState) { /* 从Calendar抽象基类获得实例对象,并设置成中国时区 */

my_Calendar = Calendar.getInstance(Locale.CHINA);

/* 从日历对象中获取当前的:年、月、日、时、分 */

my_Year = my_Calendar.get(Calendar.YEAR);

my_Month = my_Calendar.get(Calendar.MONTH);

my_Day = my_Calendar.get(Calendar.DAY_OF_MONTH);

my_Hour = my_Calendar.get(Calendar.HOUR_OF_DAY);

my_Minute = my_Calendar.get(Calendar.MINUTE);

super super super

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

/* findViewById()从XML中获取UI元素对象 */

showDate_Time = (TextView) findViewById(R.id.my_TextView);

showDatePDialog=(Button)findViewById(R.id.show_DatePicker);

showTimePDialog=(Button)findViewById(R.id.show_TimePicker);

/*显示当前时间*/

loadDate_Time();

/*为按钮添加点击事件监听器*/

showDatePDialog.setOnClickListener(thisthisthisthis);

showTimePDialog.setOnClickListener(thisthisthisthis);

}

/* 设置显示日期时间的方法 */

private private private

private voidvoidvoidvoid loadDate_Time() {

// TODOTODOTODOTODO Auto-generated method stub

showDate_Time.setText(newnewnewnew StringBuffer() .append(my_Year).append("/")

.append(FormatString(my_Month + 1))

.append("/").append(FormatString(my_Day)) .append(" ").append(FormatString(my_Hour)) .append(" : ").append(FormatString(my_Minute)));

}

/* 日期时间显示两位数的方法 */

private private private

private String FormatString(intintintint x) { String s = Integer.toString(x);

if return s;

}

48

⑧ 结果 public public public

public voidvoidvoidvoid onClick(View v) {

// TODOTODOTODOTODO Auto-generated method stub switch

switch switch

switch (v.getId()) { case

case case

case R.id.show_DatePicker:

/*显示日期设置对话框的按钮点击事件处理*/{

/*构造一个DatePickerDialog对象,第一个参数为Context、

第二参数为日期修改事件处理监听器、后面为初始化的年月日*/

my_datePickerDialog=newnewnewnew DatePickerDialog(Ex_Ctrl_15_B.thisthisthisthis,

myDateSetListener, my_Year, my_Month, my_Day);

/*显示出日期设置对话框*/

case R.id.show_TimePicker:

/*显示时间设置对话框的按钮点击事件处理*/{

/*构造一个TimePickerDialog对象,第一个参数为Context、第二个参数为时间修改 事件监听器、后面两个为初始化时间,最后一个boolean类型设置是否为24小时制*/

my_timePickerDialog=newnewnewnew TimePickerDialog(Ex_Ctrl_15_B.thisthisthisthis,

myTimeSetListener, my_Hour, my_Minute, falsefalsefalsefalse);

/*显示出日期设置对话框*/

49

在文檔中 开放手机联盟 (頁 181-190)