• DatePicker和TimePicker的用法——弹出窗


    xml布局:

     1     <?xml version="1.0" encoding="utf-8"?>  
     2     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
     3         android:layout_width="fill_parent"  
     4         android:layout_height="fill_parent"  
     5         android:orientation="vertical" >  
     6       
     7         <DatePicker  
     8             android:id="@+id/datepicker"  
     9             android:layout_width="wrap_content"  
    10             android:layout_height="wrap_content"  
    11             android:calendarViewShown="false" />  
    12       
    13         <TimePicker  
    14             android:id="@+id/timepicker"  
    15             android:layout_width="wrap_content"  
    16             android:layout_height="wrap_content" />  
    17       
    18     </LinearLayout>  

    Java代码:

    自定义弹出框:

      1     public class DateTimePickDialogUtil implements OnDateChangedListener,  
      2             OnTimeChangedListener {  
      3         private DatePicker datePicker;  
      4         private TimePicker timePicker;  
      5         private AlertDialog ad;  
      6         private String dateTime;  
      7         private String initDateTime;  
      8         private Activity activity;  
      9       
     10         /** 
     11          * 日期时间弹出选择框构造函数 
     12          *  
     13          * @param activity 
     14          *            :调用的父activity 
     15          * @param initDateTime 
     16          *            初始日期时间值,作为弹出窗口的标题和日期时间初始值 
     17          */  
     18         public DateTimePickDialogUtil(Activity activity, String initDateTime) {  
     19             this.activity = activity;  
     20             this.initDateTime = initDateTime;  
     21       
     22         }  
     23       
     24         public void init(DatePicker datePicker, TimePicker timePicker) {  
     25             Calendar calendar = Calendar.getInstance();  
     26             if (!(null == initDateTime || "".equals(initDateTime))) {  
     27                 calendar = this.getCalendarByInintData(initDateTime);  
     28             } else {  
     29                 initDateTime = calendar.get(Calendar.YEAR) + "年"  
     30                         + calendar.get(Calendar.MONTH) + "月"  
     31                         + calendar.get(Calendar.DAY_OF_MONTH) + "日 "  
     32                         + calendar.get(Calendar.HOUR_OF_DAY) + ":"  
     33                         + calendar.get(Calendar.MINUTE);  
     34             }  
     35       
     36             datePicker.init(calendar.get(Calendar.YEAR),  
     37                     calendar.get(Calendar.MONTH),  
     38                     calendar.get(Calendar.DAY_OF_MONTH), this);  
     39             timePicker.setCurrentHour(calendar.get(Calendar.HOUR_OF_DAY));  
     40             timePicker.setCurrentMinute(calendar.get(Calendar.MINUTE));  
     41         }  
     42       
     43         /** 
     44          * 弹出日期时间选择框方法 
     45          *  
     46          * @param inputDate 
     47          *            :为需要设置的日期时间文本编辑框 
     48          * @return 
     49          */  
     50         public AlertDialog dateTimePicKDialog(final EditText inputDate) {  
     51             LinearLayout dateTimeLayout = (LinearLayout) activity  
     52                     .getLayoutInflater().inflate(R.layout.common_datetime, null);  
     53             datePicker = (DatePicker) dateTimeLayout.findViewById(R.id.datepicker);  
     54             timePicker = (TimePicker) dateTimeLayout.findViewById(R.id.timepicker);  
     55             init(datePicker, timePicker);  
     56             timePicker.setIs24HourView(true);  
     57             timePicker.setOnTimeChangedListener(this);  
     58       
     59             ad = new AlertDialog.Builder(activity)  
     60                     .setTitle(initDateTime)  
     61                     .setView(dateTimeLayout)  
     62                     .setPositiveButton("设置", new DialogInterface.OnClickListener() {  
     63                         public void onClick(DialogInterface dialog, int whichButton) {  
     64                             inputDate.setText(dateTime);  
     65                         }  
     66                     })  
     67                     .setNegativeButton("取消", new DialogInterface.OnClickListener() {  
     68                         public void onClick(DialogInterface dialog, int whichButton) {  
     69                             inputDate.setText("");  
     70                         }  
     71                     }).show();  
     72       
     73             onDateChanged(null, 0, 0, 0);  
     74             return ad;  
     75         }  
     76       
     77         public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {  
     78             onDateChanged(null, 0, 0, 0);  
     79         }  
     80       
     81         public void onDateChanged(DatePicker view, int year, int monthOfYear,  
     82                 int dayOfMonth) {  
     83             // 获得日历实例  
     84             Calendar calendar = Calendar.getInstance();  
     85       
     86             calendar.set(datePicker.getYear(), datePicker.getMonth(),  
     87                     datePicker.getDayOfMonth(), timePicker.getCurrentHour(),  
     88                     timePicker.getCurrentMinute());  
     89             SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm");  
     90       
     91             dateTime = sdf.format(calendar.getTime());  
     92             ad.setTitle(dateTime);  
     93         }  
     94       
     95         /** 
     96          * 实现将初始日期时间2012年07月02日 16:45 拆分成年 月 日 时 分 秒,并赋值给calendar 
     97          *  
     98          * @param initDateTime 
     99          *            初始日期时间值 字符串型 
    100          * @return Calendar 
    101          */  
    102         private Calendar getCalendarByInintData(String initDateTime) {  
    103             Calendar calendar = Calendar.getInstance();  
    104       
    105             // 将初始日期时间2012年07月02日 16:45 拆分成年 月 日 时 分 秒  
    106             String date = spliteString(initDateTime, "日", "index", "front"); // 日期  
    107             String time = spliteString(initDateTime, "日", "index", "back"); // 时间  
    108       
    109             String yearStr = spliteString(date, "年", "index", "front"); // 年份  
    110             String monthAndDay = spliteString(date, "年", "index", "back"); // 月日  
    111       
    112             String monthStr = spliteString(monthAndDay, "月", "index", "front"); //
    113             String dayStr = spliteString(monthAndDay, "月", "index", "back"); //
    114       
    115             String hourStr = spliteString(time, ":", "index", "front"); //
    116             String minuteStr = spliteString(time, ":", "index", "back"); //
    117       
    118             int currentYear = Integer.valueOf(yearStr.trim()).intValue();  
    119             int currentMonth = Integer.valueOf(monthStr.trim()).intValue() - 1;  
    120             int currentDay = Integer.valueOf(dayStr.trim()).intValue();  
    121             int currentHour = Integer.valueOf(hourStr.trim()).intValue();  
    122             int currentMinute = Integer.valueOf(minuteStr.trim()).intValue();  
    123       
    124             calendar.set(currentYear, currentMonth, currentDay, currentHour,  
    125                     currentMinute);  
    126             return calendar;  
    127         }  
    128       
    129         /** 
    130          * 截取子串 
    131          *  
    132          * @param srcStr 
    133          *            源串 
    134          * @param pattern 
    135          *            匹配模式 
    136          * @param indexOrLast 
    137          * @param frontOrBack 
    138          * @return 
    139          */  
    140         public static String spliteString(String srcStr, String pattern,  
    141                 String indexOrLast, String frontOrBack) {  
    142             String result = "";  
    143             int loc = -1;  
    144             if (indexOrLast.equalsIgnoreCase("index")) {  
    145                 loc = srcStr.indexOf(pattern); // 取得字符串第一次出现的位置  
    146             } else {  
    147                 loc = srcStr.lastIndexOf(pattern); // 最后一个匹配串的位置  
    148             }  
    149             if (frontOrBack.equalsIgnoreCase("front")) {  
    150                 if (loc != -1)  
    151                     result = srcStr.substring(0, loc); // 截取子串  
    152             } else {  
    153                 if (loc != -1)  
    154                     result = srcStr.substring(loc + 1, srcStr.length()); // 截取子串  
    155             }  
    156             return result;  
    157         }  
    158       
    159     }  

    主界面添加事件:

     1     public class DateTimePickerActivity extends Activity {  
     2         /** Called when the activity is first created. */  
     3         private EditText  DateTime;  
     4        
     5       
     6         private String initDateTime = "2013年9月3日 14:44"; // 初始化开始时间  
     7            
     8       
     9         @Override  
    10         public void onCreate(Bundle savedInstanceState) {  
    11             super.onCreate(savedInstanceState);  
    12             setContentView(R.layout.activity_main);  
    13        
    14              DateTime = (EditText) findViewById(R.id.inputDate);  
    15                
    16       
    17              DateTime.setText(initDateTime);  
    18            
    19             DateTime.setOnClickListener(new OnClickListener() {  
    20                 public void onClick(View v) {  
    21       
    22                     DateTimePickDialogUtil dateTimePicKDialog = new DateTimePickDialogUtil(  
    23                             DateTimePickerActivity.this, initDateTime);  
    24                     dateTimePicKDialog.dateTimePicKDialog(DateTime);  
    25       
    26                 }  
    27             });   
    28                
    29         }  
    30     }  

    效果图:

  • 相关阅读:
    NFS共享储存
    Rsync服务
    企业集群架构概述
    定时任务
    开机启动流程
    进程管理(二)
    linux系统管理-进程管理
    RAID&LVM有关磁盘的故障
    gdisk分区及swap分区
    操作系统与磁盘管理
  • 原文地址:https://www.cnblogs.com/solar-sys/p/5990870.html
Copyright © 2020-2023  润新知