zoukankan      html  css  js  c++  java
  • Android组件的使用:DatePicker,TimePicker

    1、DatePicker的使用

    1、 在布局文件中声明一个DatePicker控件时,切换到视图模式时看不到效果,需要通过程序控制对其进行初始化。

    1 <DatePicker    -->声明DatePicker控件
    2         android:id="@+id/dp_showdate"            -->设置控件id
    3         android:layout_width="match_parent"      -->设置控件宽度为父容器宽度
    4         android:layout_height="wrap_content"/>   -->设置控件高度为父容器高度
     1 @Override
     2     protected void onCreate(Bundle savedInstanceState) {
     3         super.onCreate(savedInstanceState);        //调用父类方法
     4         super.setContentView(R.layout.datepicker_layout);//设置布局管理器
     5         /*         year:表示要设置的年份
     6          *  monthOfYear:表示要设置的一年中的某月
     7          *   dayOfMonth:表示要设置的一个月中的某天
     8          * onDateChangedListener:表示要设置的时间改变的监听器,当时间改变时触发该事件
     9          */
    10         dp_showdate.init(year, monthOfYear, dayOfMonth, onDateChangedListener);
    11     }

     2、要对以上:year、monthOfYear、dayOfMonth进行初始化,可以使用java中提供的Calendar类方便的获得。

    1 //使用Calendar类提供的日期方法,获得相应的年月日
    2     Calendar calendar = Calendar.getInstance();    //通过Calendar类提供的静态方法:类名.方法()获得Calendar实例
    3     int year = calendar.get(Calendar.YEAR);       //设置年份
    4 int monthOfYear = calendar.get(Calendar.YEAR);  //设置一年中的某月 5 int dayOfMonth = calendar.get(Calendar.YEAR);   //设置一月中的某天

    3、然后再设置日期改变监听:

    1 dp_showdate.init(year, monthOfYear, dayOfMonth, new OnDateChangedListener(){
    2             @Override
    3             public void onDateChanged(DatePicker view, int year, int monthOfYear,int dayOfMonth) {
    4                 //什么都没做
    5             }
    6         });

     运行效果:

     

    1.1为DatePicker添加日期改变监听

    在布局文件中添加一个TextView,用于显示日期

    1 <TextView       -->定义一个TextView控件
    2         android:id="@+id/tv_showdate"              -->设置控件id
    3         android:layout_width="match_parent"        -->设置控件宽度
    4         android:layout_height="wrap_content"/>     -->设置控件高度

    在监听方法中初始化年月日:

    1 DatePickerDemoActivity.this.year = year;                //选择后的年份
    2 DatePickerDemoActivity.this.monthOfYear = monthOfYear;  //选择后的月份
    3 DatePickerDemoActivity.this.dayOfMonth = dayOfMonth;    //选择后的天

    定义一个方法,用于显示信息:

    1     /*
    2      * 该方法用于显示信息
    3      */
    4     public void showInfo(int year,int monthOfYear,int dayOfMonth){
    5         String info =year+""+monthOfYear+""+dayOfMonth+"";
    6         tv_showdate.setText(info);//把输出的信息放到TextView中
    7     }

    运行效果:

    完整代码:

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <LinearLayout    -->定义线性布局管理器
     3     xmlns:android="http://schemas.android.com/apk/res/android"   -->命名控件
     4     android:layout_width="match_parent"               -->设置管理器宽度为屏幕宽度
     5     android:layout_height="match_parent"                -->设置管理器高度为屏幕高度
     6     android:orientation="vertical" >                  -->设置管理器中的内容为垂直摆放
     7     <TextView    -->定义组件
     8         android:id="@+id/tv_showdate"             -->为组件设置id
     9         android:layout_width="match_parent"    -->设置组件宽度为父容器宽度
    10         android:layout_height="wrap_content"/>   -->设置组件高度
    11     <DatePicker   -->定义组件
    12         android:id="@+id/dp_showdate"         -->设置组件id
    13         android:layout_width="match_parent"     -->设置组件宽度为父容器宽度
    14         android:layout_height="wrap_content"/>   -->设置组件高度为包裹内容高度
    15 </LinearLayout>

    DatePickerDemoActivity类:

     1 package com.example.basiccomponent2;
     2 
     3 import java.util.Calendar;
     4 
     5 import android.app.Activity;
     6 import android.os.Bundle;
     7 import android.widget.DatePicker;
     8 import android.widget.DatePicker.OnDateChangedListener;
     9 import android.widget.TextView;
    10 
    11 public class DatePickerDemoActivity extends Activity {
    12     private TextView tv_showdate = null;          //声明TextView对象
    13     private DatePicker dp_showdate = null;        //声明DatePicker对象
    14     //使用Calendar类提供的日期方法,获得相应的年月日
    15     Calendar calendar = Calendar.getInstance();
    16     int year = calendar.get(Calendar.YEAR);
    17     int monthOfYear = calendar.get(Calendar.YEAR);
    18     int dayOfMonth = calendar.get(Calendar.YEAR);
    19     
    20     @Override
    21     protected void onCreate(Bundle savedInstanceState) {
    22         super.onCreate(savedInstanceState);
    23         super.setContentView(R.layout.datepicker_layout);//设置布局管理器
    24         //初始化view
    25         dp_showdate = (DatePicker)super.findViewById(R.id.dp_showdate);
    26         tv_showdate = (TextView)super.findViewById(R.id.tv_showdate);
    27         /*         year:表示要设置的年份
    28          *  monthOfYear:表示要设置的一年中的某月
    29          *   dayOfMonth:表示要设置的一个月中的某天
    30          * onDateChangedListener:表示要设置的时间改变的监听器
    31          */
    32         dp_showdate.init(year, monthOfYear, dayOfMonth, new OnDateChangedListener(){
    33             @Override
    34             public void onDateChanged(DatePicker view, int year, int monthOfYear,int dayOfMonth) {
    35                 DatePickerDemoActivity.this.year = year;                //选择后的年份
    36                 DatePickerDemoActivity.this.monthOfYear = monthOfYear;  //选择后的月份
    37                 DatePickerDemoActivity.this.dayOfMonth = dayOfMonth;    //选择后的天
    38                 DatePickerDemoActivity.this.showInfo(year, monthOfYear,dayOfMonth);//调用显示信息方法
    39             }
    40         });
    41     }
    42     /*
    43      * 该方法用于显示信息
    44      */
    45     public void showInfo(int year,int monthOfYear,int dayOfMonth){
    46         String info =year+""+(monthOfYear+1)+""+dayOfMonth+"";
    47         tv_showdate.setText(info);//把输出的信息放到TextView中
    48     }
    49     
    50 }

     修改显示日期效果,为小于10的数字添加0:

     1     public void showInfo(int year, int monthOfYear, int dayOfMonth) {
     2         String info = year + "" + addZero(monthOfYear+1) + "" + addZero(dayOfMonth) + "";
     3         tv_showdate.setText(info);// 把输出的信息放到TextView中
     4     }
     5     public String addZero(int num){
     6         String str = null;
     7         if(num<10){
     8             str = "0"+num;
     9         }else{
    10             str = ""+num;
    11         }
    12         return str;
    13     }

    2、TimePicker的使用

    TimePicker的使用和DatePicker类似,但是不用给其初始化,在布局文件中添加一个TimePicker组件:

    1 <TimePicker 
    2         android:id="@+id/tp_showtime"
    3         android:layout_width="match_parent"
    4         android:layout_height="wrap_content"/>

    在Activity类中,完整代码:

     1 package com.example.basiccomponent2;
     2 
     3 import java.util.Calendar;
     4 
     5 import android.app.Activity;
     6 import android.os.Bundle;
     7 import android.widget.DatePicker;
     8 import android.widget.DatePicker.OnDateChangedListener;
     9 import android.widget.TextView;
    10 import android.widget.TimePicker;
    11 import android.widget.TimePicker.OnTimeChangedListener;
    12 
    13 public class DatePickerDemoActivity extends Activity {
    14     private TextView tv_showdate = null; //
    15     private DatePicker dp_showdate = null; //
    16     private TimePicker tp_showtime = null;
    17     // 使用Calendar类提供的日期方法,获得相应的年月日
    18     Calendar calendar = Calendar.getInstance();
    19     int year = calendar.get(Calendar.YEAR);
    20     int monthOfYear = calendar.get(Calendar.YEAR);
    21     int dayOfMonth = calendar.get(Calendar.YEAR);
    22 
    23     int hourOfDay = calendar.get(Calendar.HOUR_OF_DAY);
    24     int minute = calendar.get(Calendar.MINUTE);
    25     @Override
    26     protected void onCreate(Bundle savedInstanceState) {
    27         super.onCreate(savedInstanceState);
    28         super.setContentView(R.layout.datepicker_layout);// 设置布局管理器
    29         // 初始化view
    30         dp_showdate = (DatePicker) super.findViewById(R.id.dp_showdate);
    31         tv_showdate = (TextView) super.findViewById(R.id.tv_showdate);
    32         tp_showtime = (TimePicker)super.findViewById(R.id.tp_showtime);
    33         /*
    34          * year:表示要设置的年份 monthOfYear:表示要设置的一年中的某月 dayOfMonth:表示要设置的一个月中的某天
    35          * onDateChangedListener:表示要设置的时间改变的监听器
    36          */
    37         dp_showdate.init(year, monthOfYear, dayOfMonth,new OnDateChangedListener() {
    38                     @Override
    39                     public void onDateChanged(DatePicker view, int year,int monthOfYear, int dayOfMonth) {
    40                         DatePickerDemoActivity.this.year = year; // 选择后的年份
    41                         DatePickerDemoActivity.this.monthOfYear = monthOfYear; // 选择后的月份
    42                         DatePickerDemoActivity.this.dayOfMonth = dayOfMonth; // 选择后的天
    43                         DatePickerDemoActivity.this.showInfo(year, monthOfYear,dayOfMonth,hourOfDay,minute);// 调用显示信息方法
    44                     }
    45         });
    46         //设置时间事件
    47         tp_showtime.setOnTimeChangedListener(new OnTimeChangedListener(){
    48             @Override
    49             public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
    50                 DatePickerDemoActivity.this.hourOfDay = hourOfDay;
    51                 DatePickerDemoActivity.this.minute = minute;
    52                 DatePickerDemoActivity.this.showInfo(year, monthOfYear,dayOfMonth,hourOfDay,minute);// 调用显示信息方法
    53             }
    54         });
    55     }
    56 
    57     /*
    58      * 该方法用于显示信息
    59      */
    60     public void showInfo(int year, int monthOfYear, int dayOfMonth,int hourOfDay,int minute) {
    61         String info = year + "" + addZero(monthOfYear+1) 
    62                            + "" + addZero(dayOfMonth) 
    63                            + "" + addZero(hourOfDay)
    64                            + "" + addZero(minute)
    65                            + "";
    66         tv_showdate.setText(info);// 把输出的信息放到TextView中
    67     }
    68     public String addZero(int num){
    69         String str = null;
    70         if(num<10){
    71             str = "0"+num;
    72         }else{
    73             str = ""+num;
    74         }
    75         return str;
    76     }
    77 
    78 }

  • 相关阅读:
    文本查询程序再探
    第15章 面向对象程序设计
    错误和异常处理 使用模板
    PHP会话管理
    身份验证
    表单提交与接收 文件提交与接收
    PHP文件访问
    PHP面向对象
    PHP速学
    第14章 重载运算与类型转换
  • 原文地址:https://www.cnblogs.com/zhengweicong/p/3205684.html
Copyright © 2011-2022 走看看