Android控件之TimePickerDialog

来源:互联网 发布:阿莫达非尼 淘宝 编辑:程序博客网 时间:2024/06/06 02:50

1、TimePickerDialog简介

之前介绍了ProgressBarDialog、AlertDialog,现在介绍TimePickerDialog。该控件是用来显示一个时间对话框的。具体的效果如下图:




2、代码介绍

下面的代码实现了在设置完时间后,用户设置的时间在手机上显示出来的作用。

首先新建了一个TimePickerFragment类,该类继承了DialogFragment类,DialogFragment类是一个碎片类,所谓碎片就是,如果我们将Activity所对应的布局文件视为一个整体的面板或画板,我们在这个布局文件上进行布局,就是在画板上作画。但有时候我们需要在画板的上面再填加一些东西,这样我就可以使用碎片。顾名思义,碎片,既是整个画板上的一个一个小布局而已。同时,该类还实现了TimePickerDialog.OnTimeSetListener接口,为时间对话框的OK按钮或完成按钮(由android版本而定)绑定了点击事件。具体代码如下:

package com.example.timepicker;import java.util.Calendar;import android.app.Dialog;import android.app.DialogFragment;import android.app.TimePickerDialog;import android.os.Bundle;import android.widget.TimePicker;public class TimePickerFragment extends DialogFragment implements TimePickerDialog.OnTimeSetListener  {private int hour;private int minute;private MainActivity mainActivity;/** * 重写DialogFragment类的onCreate方法, * 重写该方法的目的是,初始化本类的相关属性的值 */@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);mainActivity = (MainActivity) getActivity();}/** * 重写DialogFragment类的onCreateDialog方法, * 目的是,在显示时间弹出框时,初始化弹出框内的时间的值 */@Overridepublic Dialog onCreateDialog(Bundle savedInstanceState){// 获取当前的系统时间Calendar calendar = Calendar.getInstance();hour = calendar.get(Calendar.HOUR_OF_DAY);minute = calendar.get(Calendar.MINUTE);// 创建TimePickerDialog实例TimePickerDialog timePickerDialog = new TimePickerDialog(getActivity(), this, hour, minute, true);return timePickerDialog;}/** * 点击时间弹出框的完成按钮,将用户的设置时间得到。 */@Overridepublic void onTimeSet(TimePicker view, int hourOfDay, int minute) {this.hour = hourOfDay;this.minute = minute;mainActivity.setTimeValue(hourOfDay, minute);}}
MainActivity.java代码如下:

package com.example.timepicker;import android.app.Activity;import android.app.DialogFragment;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.widget.TextView;public class MainActivity extends Activity {private TextView tv1;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);tv1 = (TextView) findViewById(R.id.textView1);}@Overridepublic 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;}@Overridepublic 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);}/** * 把 用户设置的时间,赋值给TextView * @param hour * @param minute */public void setTimeValue(int hour, int minute){tv1.setText(hour + ":" + minute);}/** * 按钮点击时间 * @param view */public void setTimeClick(View view){DialogFragment tpDialogFragment = new TimePickerFragment();// 第一个参数:Fragment管理器// 第二个参数:Tag,标签tpDialogFragment.show(getFragmentManager(), "timePicker");}}
这个例子用到了Fragment(碎片),对于这个类的具体其他用法,后面我在写博客介绍。



0 0