DatePicker和TimePiceker控件的探究
Android中常用到日期和时间空间,今天我就写一下最近学习Android的日期和时间控件的使用。
本人写作一般先上代码,在写分析和步骤。由于代码比较多,在页面上不好看,请在工程文件中查看。
代码如下:
方法一:参考Ruthless-JAVA高级工程师的文章
布局文件:main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:andro android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <DatePicker android: android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal"/> <EditText android: android:layout_width="fill_parent" android:layout_height="wrap_content" android:cursorVisible="false" android:editable="false"/> <TimePicker android: android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal"/> <EditText android: android:layout_width="fill_parent" android:layout_height="wrap_content" android:cursorVisible="false" android:editable="false"/> </LinearLayout>DpTpActivity.java
package com.zjw.activity; import java.util.Calendar; import android.app.Activity; import android.os.Bundle; import android.widget.DatePicker; import android.widget.EditText; import android.widget.TimePicker; import android.widget.DatePicker.OnDateChangedListener; import android.widget.TimePicker.OnTimeChangedListener; public class DpTpActivity extends Activity { private EditText dateEt=null; private EditText timeEt=null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); dateEt=(EditText)findViewById(R.id.dateEt); timeEt=(EditText)findViewById(R.id.timeEt); DatePicker datePicker=(DatePicker)findViewById(R.id.datePicker); TimePicker timePicker=(TimePicker)findViewById(R.id.timePicker); Calendar calendar=Calendar.getInstance(); int year=calendar.get(Calendar.YEAR); int monthOfYear=calendar.get(Calendar.MONTH); int dayOfMonth=calendar.get(Calendar.DAY_OF_MONTH); datePicker.init(year, monthOfYear, dayOfMonth, new OnDateChangedListener(){ public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) { dateEt.setText("您选择的日期是:"+year+"年"+(monthOfYear+1)+"月"+dayOfMonth+"日。"); } }); timePicker.setOnTimeChangedListener(new OnTimeChangedListener(){ public void onTimeChanged(TimePicker view, int hourOfDay, int minute) { timeEt.setText("您选择的时间是:"+hourOfDay+"时"+minute+"分。"); } }); } }结果:

分析:
①在布局文件中创建DatePicker和TimePicker视图控件
②通过findViewById获得DatePicker和TimePicker的实例对象,假设上面的实例分别是datePicker和timePicker
③调用DatePickerD的init(DatePicker view,int year,int monthOfYear,int dayOfMonth)方法,由于考虑到和我一样的苦逼人,我就把函数参数写上去,这里面用到的参数意思很明显,需要Calendar类
④设置日期监听器
⑤设置事件监听器
代码:
①布局文件
<DatePicker android: android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal"/>②Activity文件
DatePicker datePicker=(DatePicker)findViewById(R.id.datePicker); TimePicker timePicker=(TimePicker)findViewById(R.id.timePicker); Calendar calendar=Calendar.getInstance(); int year=calendar.get(Calendar.YEAR); int monthOfYear=calendar.get(Calendar.MONTH); int dayOfMonth=calendar.get(Calendar.DAY_OF_MONTH); datePicker.init(year, monthOfYear, dayOfMonth, new OnDateChangedListener(){ public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) { dateEt.setText("您选择的日期是:"+year+"年"+(monthOfYear+1)+"月"+dayOfMonth+"日。"); } }); timePicker.setOnTimeChangedListener(new OnTimeChangedListener(){ public void onTimeChanged(TimePicker view, int hourOfDay, int minute) { timeEt.setText("您选择的时间是:"+hourOfDay+"时"+minute+"分。"); } });
方法二:
main.xml
<?xml version="1.0" encoding="utf-8" ?> <LinearLayout xmlns:andro xmlns:tools="https://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android: android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android: android:layout_width="wrap_content" android:layout_height="wrap_content" /> <Button android: android:text="@string/showDate" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <Button android: android:text="@string/showTime" android:layout_width="wrap_content" android:layout_height="wrap_content"/> " </LinearLayout>
MianActivity.java
package com.example.datetime; import java.util.Calendar; import android.os.Bundle; import android.app.Activity; import android.app.DatePickerDialog; import android.app.Dialog; import android.app.TimePickerDialog; import android.app.DatePickerDialog.OnDateSetListener; import android.app.TimePickerDialog.OnTimeSetListener; import android.view.Menu; import android.widget.Button; import android.view.View; import android.widget.DatePicker; import android.widget.TimePicker; import android.widget.TextView; import android.view.View.OnClickListener; public class MainActivity extends Activity { private Button b1,b2; private TextView tv1,tv2; private Calendar c; private int m_year,m_month,m_day; private int m_hour,m_minute; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); b1=(Button)findViewById(R.id.Button01); b1.setText("显示日期"); b2=(Button)findViewById(R.id.Button02); //获得日历的实例 c = Calendar.getInstance(); m_year = c.get(Calendar.YEAR); m_month = c.get(Calendar.MONTH); m_day = c.get(Calendar.DAY_OF_MONTH); m_hour = c.get(Calendar.HOUR); m_minute = c.get(Calendar.MINUTE); tv1 = (TextView)findViewById(R.id.TextView01); tv2 = (TextView)findViewById(R.id.TextView02); tv1.setText(m_year+":"+(m_month+1)+":"+m_day); tv2.setText(m_hour+":"+m_minute); b1.setOnClickListener(new OnClickListener(){ public void onClick(View v){ showDialog(0); } }); b2.setOnClickListener(new OnClickListener(){ public void onClick(View v){ showDialog(1); } }); } protected Dialog onCreateDialog(int id){ if(id==0) return new DatePickerDialog(this,l1,m_year,m_month,m_day); else return new TimePickerDialog(this,l2,m_hour,m_minute,false); } private OnDateSetListener l1 = new OnDateSetListener(){ public void onDateSet(DatePicker view,int year,int monthOfYear,int dayOfMonth){ m_year=year; m_month = monthOfYear; m_day = dayOfMonth; tv1.setText(m_year+":"+(m_month+1)+":"+m_day); } }; private OnTimeSetListener l2 = new OnTimeSetListener(){ public void onTimeSet(TimePicker view,int hourOfDay,int minute){ m_hour = hourOfDay; m_minute =minute; tv2.setText(m_hour+":"+m_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; } }运行结果:
分析:
①调用Activity的onCreateDialog()方法创建对话框。
②分别在OnDateSetListener的onDateSet()方法和OnTimeSetListener的onTimeSet()方法中更改日期和时间。
③调用Activity的showDialog()方法显示对话框。
代码:
activity文件代码:
如果这地方看不懂代码,结合分析在原文件中看。
private OnDateSetListener l1 = new OnDateSetListener(){ public void onDateSet(DatePicker view,int year,int monthOfYear,int dayOfMonth){ m_year=year; m_month = monthOfYear; m_day = dayOfMonth; tv1.setText(m_year+":"+(m_month+1)+":"+m_day); } }; private OnTimeSetListener l2 = new OnTimeSetListener(){ public void onTimeSet(TimePicker view,int hourOfDay,int minute){ m_hour = hourOfDay; m_minute =minute; tv2.setText(m_hour+":"+m_minute); } };
最后更新:2017-04-03 12:54:45