理论没什么好讲的,就是一个控件的使用
直接在代码中解释啦
main.xml文件
加入控件:日历选择器,时间选择器,两个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_date" android:layout_width="match_parent" android:layout_height="wrap_content" /> <DatePicker android:id="@+id/date" android:layout_width="match_parent" android:layout_height="wrap_content" /> <TextView android:id="@+id/tv_time" android:layout_width="match_parent" android:layout_height="wrap_content" /> <TimePicker android:id="@+id/time" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout>主程序中
//获取当前的年月日时分信息 Calendar c=Calendar.getInstance(); int year = c.get(Calendar.YEAR); int month=c.get(Calendar.MONTH); int day=c.get(Calendar.DAY_OF_MONTH); int hour=c.get(Calendar.HOUR_OF_DAY); int minute=c.get(Calendar.MINUTE); tv_date.setText("现在日期:"+year+"-"+(month+1)+"-"+day); tv_time.setText("现在时间:"+hour+":"+minute);
//初始化日期 date_picker.init(year, month, day, new OnDateChangedListener() { //监听日期的改变 @Override public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) { // TODO Auto-generated method stub //Toast.makeText(MainActivity.this, "现在时间:"+year+"-"+(monthOfYear+1)+"-"+dayOfMonth, 0).show(); tv_date.setText("现在日期:"+year+"-"+(monthOfYear+1)+"-"+dayOfMonth); } });
//设置时间为24小时制 time_picker.setIs24HourView(true); time_picker.setOnTimeChangedListener(new OnTimeChangedListener() { @Override public void onTimeChanged(TimePicker view, int hourOfDay, int minute) { // TODO Auto-generated method stub tv_time.setText("现在时间:"+hourOfDay+":"+minute); } });
主程序全部代码:
package com.example.datetimerpicker; import java.util.Calendar; import android.app.Activity; import android.app.ActionBar; import android.app.DatePickerDialog; import android.app.Fragment; import android.os.Bundle; import android.text.method.DateTimeKeyListener; import android.util.Log; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.DatePicker; import android.widget.DatePicker.OnDateChangedListener; import android.widget.TextView; import android.widget.TimePicker; import android.widget.TimePicker.OnTimeChangedListener; import android.widget.Toast; import android.os.Build; public class MainActivity extends Activity { private DatePicker date_picker; private TimePicker time_picker; private TextView tv_date; private TextView tv_time; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //初始化 date_picker=(DatePicker) findViewById(R.id.date); time_picker=(TimePicker) findViewById(R.id.time); tv_date=(TextView) findViewById(R.id.tv_date); tv_time=(TextView) findViewById(R.id.tv_time); //获取当前的年月日时分信息 Calendar c=Calendar.getInstance(); int year = c.get(Calendar.YEAR); int month=c.get(Calendar.MONTH); int day=c.get(Calendar.DAY_OF_MONTH); int hour=c.get(Calendar.HOUR_OF_DAY); int minute=c.get(Calendar.MINUTE); tv_date.setText("现在日期:"+year+"-"+(month+1)+"-"+day); tv_time.setText("现在时间:"+hour+":"+minute); //初始化日期,前三个参数是设置初始显示的日期,这里设置为获取到的系统日期,第四个参数是一个监听器,监听用户选择的日期 date_picker.init(year, month, day, new OnDateChangedListener() { //监听日期的改变 @Override public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) { // TODO Auto-generated method stub //Toast.makeText(MainActivity.this, "现在时间:"+year+"-"+(monthOfYear+1)+"-"+dayOfMonth, 0).show(); tv_date.setText("现在日期:"+year+"-"+(monthOfYear+1)+"-"+dayOfMonth); } }); //设置时间为24小时制,这个时间选择器只需要一个监听器就行了 time_picker.setIs24HourView(true); time_picker.setOnTimeChangedListener(new OnTimeChangedListener() { @Override public void onTimeChanged(TimePicker view, int hourOfDay, int minute) { // TODO Auto-generated method stub tv_time.setText("现在时间:"+hourOfDay+":"+minute); } }); } @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; } }
下面以Dialog个形式显示日期,时间选择器(这中形式更常见)
main.xml文件
<?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" > <Button android:id="@+id/date_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="显示日期控件" /> <Button android:id="@+id/time_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="显示时间控件" /> <TextView android:id="@+id/tv_date" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="现在日期:" /> <TextView android:id="@+id/tv_time" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="现在时间:" /> </LinearLayout>
主程序文件
package com.example.datetimedialog; import java.util.Calendar; import android.app.Activity; import android.app.ActionBar; import android.app.DatePickerDialog; import android.app.DatePickerDialog.OnDateSetListener; import android.app.Fragment; import android.app.TimePickerDialog; import android.app.TimePickerDialog.OnTimeSetListener; import android.content.Context; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; 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.TextView; import android.widget.TimePicker; import android.os.Build; public class MainActivity extends Activity implements android.view.View.OnClickListener{ private Button date_button; private Button time_button; private Calendar calendar; private TextView tv_date; private TextView tv_time; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); date_button=(Button) findViewById(R.id.date_button); time_button=(Button) findViewById(R.id.time_button); tv_date=(TextView) findViewById(R.id.tv_date); tv_time=(TextView) findViewById(R.id.tv_time); date_button.setOnClickListener(this); time_button.setOnClickListener(this); //获取当前的年月日时分信息 calendar=Calendar.getInstance(); } @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; } private void showDateDialog() {
//这个方法一共5个参数,第一个是上下文对象,第二个是监听器,后面三个是初始化的日期和时间,这里设置为获取到的系统的日期和时间
DatePickerDialog date_dialog=new DatePickerDialog(MainActivity.this, new OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { // TODO Auto-generated method stub tv_date.setText("现在日期:"+year+"-"+(monthOfYear+1)+"-"+dayOfMonth); } }, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH)); date_dialog.show(); } private void showTimeDialog() {
//这个时间选择器第一个参数是上下文对象,第二个参数是监听器,后面两个参数是获取到的系统时间,最后一个参数设置设置为true表示使用24小时显示格式 TimePickerDialog time_dialog=new TimePickerDialog(MainActivity.this, new OnTimeSetListener() { @Override public void onTimeSet(TimePicker view, int hourOfDay, int minute) { // TODO Auto-generated method stub tv_time.setText("现在时间:"+hourOfDay+":"+minute); } }, calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE), true); time_dialog.show(); } @Override public void onClick(View v) { // TODO Auto-generated method stub switch(v.getId()) { case R.id.date_button: showDateDialog(); break; case R.id.time_button: showTimeDialog(); break; } } }