先放效果图吧,如下:
其实整个例子就用了DatePicker和TimePicker来完成,非常简单。
下面简单介绍下DatePicker 、 TimePicker 。它们都继承自android.widget.FrameLayout,DatePicker用于展示一个日期选择控件,主要功能是向用户提供包含年、月、日的日期数据并允许用户对其修改。如果要捕获用户修改日期选择控件中的数据事件,需要为DatePicker添加OnDateChangedListener监听器;TimePicker用于展示一个时间选择控件,向用户显示一天中的时间(可以为24小时,也可以为AM/PM制),并允许用户进行选择。如果要捕获用户修改时间数据的事件,需要为TimePicker添加OnTimeChangedListener监听器。
作为一个日期选择控件,DatePicker可以通过设置属性来确定日期选择范围,也可以通过定义好的方法获取到当前选中的时间,并且在修改日期的时候,有响应的事件对其进行响应。
DatePicker的一些常用属性如:
1. android:calendarViewShown:是否显示日历
2. android:startYear : 设置可选开始年份
3. android:endYear:设置可选结束年份
4. android:maxDate:设置可选最大日期(以mm/dd/yyyy格式设置)
5. android:minDate:设置可选最小日期(以mm/dd/yyyy格式设置)
PS:注意DatePicker的一个初始化的方法init(),此方法的构造如下:
init(int year,int monthOfYear,int dayOfMonth,DatePicker.OnDateChangedListener onDateChangedListener)
init()用于DatePicker控件的初始化,并且设置日期被修改后回调的响应事件,若要响应此事件,需要实现其中的onDateChanged()方法,如下:
onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth)
作为一个时间选择控件来说,TimePicker需要与时间相关的getter、setter方法之外,还需要有时间被修改后回调的响应事件。
TimePicker的一些常用属性如:
1. is24HourView():判断是否为24小时制
2. setIs24HourView():设置是否为24小时制显示
3. getCurrentXxx():获取当前时间
4. setCurrentXxx():设置当前时间
5. setOnTimeChangedListener():设置时间被修改的回调方法(其传递一个 TimePicker.OnTimeChangedListener 接口,需要实现其中的onTimeChanged()方法)
下面是示例的代码
布局代码:
<ScrollView
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" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<!-- 日期 -->
<DatePicker
android:id="@+id/date"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
</DatePicker>
<Button
android:id="@+id/btndate"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/btndate" />
<!-- 具体时间 -->
<TimePicker
android:id="@+id/time"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
</TimePicker>
<Button
android:id="@+id/btntime"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/btntime" />
</LinearLayout>
</ScrollView>
strings.xml文件的代码:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">DatePick</string>
<string name="hello_world">Hello world!</string>
<string name="action_settings">Settings</string>
<string name="btndate">查看日期请点击这里</string>
<string name="btntime">查看时间请点击这里</string>
</resources>
MainActivity.java代码:
package com.example.datepick;
import android.support.v4.app.Fragment;
import android.app.Activity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.TimePicker;
public class MainActivity extends Activity {
DatePicker datepick;
TimePicker timepick;
Button btndate;
Button btntime;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_main);
//获取对象
datepick=(DatePicker)findViewById(R.id.date);
timepick=(TimePicker)findViewById(R.id.time);
btndate=(Button)findViewById(R.id.btndate);
btntime=(Button)findViewById(R.id.btntime);
//点击显示日期的监听事件
btndate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
StringBuilder str=new StringBuilder("您当前选择的日期是:");
//将当前选中的年月日显示到按钮上(月份记得要+1)
str.append(datepick.getYear()).append("-").append(datepick.getMonth()+1).append("-").append(datepick.getDayOfMonth());
btndate.setText(str);
}
});
//点击显示时间的监听事件
btntime.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
StringBuilder str=new StringBuilder("您当前选择的时间是:");
//将当前选中的时间显示到按钮上
str.append(timepick.getCurrentHour()).append(":").append(timepick.getCurrentMinute());
btntime.setText(str);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
/**
* A placeholder fragment containing a simple view.
*/
public static class PlaceholderFragment extends Fragment {
public PlaceholderFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container, false);
return rootView;
}
}
}
附上下载地址:http://download.youkuaiyun.com/detail/monas/8746787
有问题欢迎大家指教!一起讨论一起进步!
这篇博客展示了如何使用DatePicker和TimePicker创建一个日历时间选择案例。内容包括DatePicker和TimePicker的功能介绍、属性设置、事件监听,以及相关代码示例。博客还提供了下载链接供读者实践。
649

被折叠的 条评论
为什么被折叠?



