Pro Android学习笔记(十七):用户界面和控制(5):日期和时间控件

DatePicker和TimePicker控件

使用DatePicker和TimePicker,故名思议,用户可以对时间进行选择。XML代码如下:

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

    <TextView ......  android:id="@+id/ui_date1"/>
    <DatePicker android:layout_width="wrap_content"
        android:layout_height="wrap_content"

        android:id="@+id/ui_datepick"/>

    <TextView ......  android:id="@+id/ui_time1"/>
    <TimePicker android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/ui_timepick"/>  
</LinearLayout>

如果我们不在代码中设置日期和时间的值,初始时,DatePiker和TimePiker将设置为当前日期和时间。对于这两个控件,在代码中,我们可以它们进行读写操作。对于日期有:

TextView dateText = (TextView)findViewById(R.id.ui_date1);
dateText.setText("Set default date to 2013/1/1");

DatePicker dp = (DatePicker)findViewById(R.id.ui_datepick);
//对DatePicker进行设置,使用dp.init(year, monthOfYear, dayOfMonth, onDateChangedListener) ,需要注意,月份的有效值是“0-11”,例如dp.init(2013, 1, 1, null);  则是设置2013.2.1 。
dp.init(2013,0,1,new DatePicker.OnDateChangedListener() {            
    //通过onDateChangedListener对日期发生变化进行触发
    public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
        //注意:会被触发两次。由于Picker实际上包含日历和日期转盘两部分(会自动同步),日历和日期变化产生两次触发。但日历变化可以自动使日期变化,即则通过日历的日期变化只触发一次。
        Log.d("UiDateTimeTest","set Date to " + year+ "." + (monthOfYear+1)+"."+dayOfMonth);
       
    }
});
dp.setCalendarViewShown(false);    //不显示日历部分,只显示日期转盘部分   

对于时间:

//设置时间发生变化的处理 
TimePicker.OnTimeChangedListener timeChangedFunc = new TimePicker.OnTimeChangedListener() {   
    @Override
    public void onTimeChanged(TimePicker view, int hourOfDay, int minute) { 
        Log.d("UiDateTimeTest","Set time to "+hourOfDay + ":" + minute);
    }
};

TextView timeText = (TextView)findViewById(R.id.ui_time1); 
timeText.setText("Set default time to 16:00");

TimePicker tp = (TimePicker)findViewById(R.id.ui_timepick);
tp.setIs24HourView(true); 
tp.setCurrentHour(16); 
tp.setCurrentMinute(0); 
tp.setOnTimeChangedListener(timeChangedFunc); //这里用匿名类方式时,Eclipse显示错误,所以本例直接用对象

DigitalClock和AnalogClock控件

数字时钟和模拟时钟如图所示。和其他的空间不同,我们不能对它所显示的时间进行修改,它们将显示系统的实时时间。使用它们的一个方便是,我们不需要进行代码编写,它们可以自动地不断地进行同步和更新时间。XML如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout …… >
    <DigitalClock android:layout_width="wrap_content"
        android:layout_height="wrap_content"
/>
    <AnalogClock android:layout_width="wrap_content"
        android:layout_height="wrap_content"
/>   
</LinearLayout>

相关链接: 我的Android开发相关文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值