天天看点

Android入门之基础时间日期控件DatePicker(Dialog)、TimePicker(Dialog)、DigitalClock和AnalogClock预览图

Android入门之时间日期控件DatePicker(Dialog)、TimePicker(Dialog)、DigitalClock和AnalogClock

  • 预览图
    • DatePicker
      • UI代码
      • Java代码
    • TimePicker
      • UI代码
      • Java代码
    • TimePickerDialog
      • Java代码
    • DatePickerDialog
      • Java代码
    • 其余控件DigitalClock,AnalogClock
      • UI代码
    • 其余资料

本文模式为安卓10.0,部分控件根据版本有较大变动

预览图

Android入门之基础时间日期控件DatePicker(Dialog)、TimePicker(Dialog)、DigitalClock和AnalogClock预览图

DatePicker

更改日期后Toast点击响应

UI代码

//两种日历模式

        <DatePicker      //默认的calendar类
            android:id="@+id/date"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:datePickerMode="calendar"
         ></DatePicker>
         
        <DatePicker       //spinner类
            android:layout_marginTop="70dp"
            android:id="@+id/date"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:datePickerMode="spinner"//安卓5.0之后要加上这句才能选择spinner
            android:calendarViewShown="false"
         ></DatePicker>
           
Android入门之基础时间日期控件DatePicker(Dialog)、TimePicker(Dialog)、DigitalClock和AnalogClock预览图
Android入门之基础时间日期控件DatePicker(Dialog)、TimePicker(Dialog)、DigitalClock和AnalogClock预览图

两种模式默认calendar(左)和spinner(右)

注意:

在安卓5.0之后,用 android:datePickerMode=“spinner” 选择spinner模式

android:calendarViewShown=“false” 也需要,没有这句安卓10.0会导致两个模式的日历同时出

android:spinnersShown=“true” 已经失效

Java代码

DatePicker datePicker = findViewById(R.id.date);//绑定控件
        //获取当前年月日
        Calendar c = Calendar.getInstance();
        int year = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH);
        int day = c.get(Calendar.DAY_OF_MONTH);
        datePicker.init(year,month,day,this);
    }
    //更改日期后的Toast响应
    public void onDateChanged(DatePicker view, int year, int month, int day){
        Toast.makeText(MainActivity.this, year + "年 "+ month +"月 "+day + "日",Toast.LENGTH_SHORT).show();
    }

           

TimePicker

TimePicker内容与DatePicker大致相同

UI代码

<TimePicker
            android:id="@+id/time"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:timePickerMode="clock"//两种模式,另一种“spinner”
            ></TimePicker>
           
Android入门之基础时间日期控件DatePicker(Dialog)、TimePicker(Dialog)、DigitalClock和AnalogClock预览图
Android入门之基础时间日期控件DatePicker(Dialog)、TimePicker(Dialog)、DigitalClock和AnalogClock预览图

两种模式:spinner(右)和默认clock(左)

Java代码

//Timepicker
        final TimePicker time = (TimePicker) findViewById(R.id.time);//绑定控件
        time.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {
            Calendar a = Calendar.getInstance();
            final int hour = a.get(Calendar.HOUR_OF_DAY);
            final int minute = a.get(Calendar.MINUTE);
            @Override
            public void onTimeChanged(TimePicker timePicker, int i, int i1) {
                time.setIs24HourView(true);   //24小时制 
                Toast.makeText(MainActivity.this, i + "时" + i1 + "分",Toast.LENGTH_SHORT).show();
            }
        });
 //常用属性
//        picker.setIs24HourView(true);
//        picker.is24HourView();//获取是否为24小时
//        Calendar calendar = Calendar.getInstance();
//        picker.setCurrentHour(Calendar.HOUR_OF_DAY);//建立当前时间
           

TimePickerDialog

  1. 点击button后出现的TimePickerDialog,Toast响应修改后的时间
  2. 直接出现的TimePickerDialog

Java代码

UI代码就只有一个按钮

//前面还有private Button b1;
//点击按钮b1出现的TimePickerDialog
        Button b1 = findViewById(R.id.b1);
        b1.setOnClickListener(new View.OnClickListener() {
        	//得到当前的时间
            Calendar a = Calendar.getInstance();
            final int hour = a.get(Calendar.HOUR_OF_DAY);
            final int minute = a.get(Calendar.MINUTE);
            @Override
            public void onClick(View view) {
            //点进去显示当前时间
                Toast.makeText(MainActivity.this,hour + "时" + minute + "分",Toast.LENGTH_SHORT).show();
                
                TimePickerDialog.OnTimeSetListener tcListener = new TimePickerDialog.OnTimeSetListener() {
                    @RequiresApi(api = Build.VERSION_CODES.M)
                    @Override
                    public void onTimeSet(TimePicker timePicker, int i, int i1) {
                    	//获得修改后的时间
                        a.set(Calendar.HOUR_OF_DAY, hour);
                        a.set(Calendar.MINUTE, minute);
                        Toast.makeText(MainActivity.this, timePicker.getHour() + "时" + timePicker.getMinute()+ "分",Toast.LENGTH_SHORT).show();/显示修改后的时间
                    }
                };
                TimePickerDialog tpDlg = new TimePickerDialog(view.getContext(), tcListener, hour, minute, false);
                tpDlg.show();
            }
        });
/*直接出现的TimePickerDialog
        new TimePickerDialog(this, AlertDialog.THEME_HOLO_LIGHT,new TimePickerDialog.OnTimeSetListener() {
            @Override
            public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                Toast.makeText(MainActivity.this,hourOfDay + "时" + minute + "分",Toast.LENGTH_SHORT).show();
            }
        }, 0, 0, false).show();
*/
           

DatePickerDialog

代码响应与TimePickerDialog无较大差别

Java代码

UI代码就只有一个按钮

//前面还有private Button b2;
        Button b2 = findViewById(R.id.b2);
        b2.setOnClickListener(new View.OnClickListener() {
            Calendar c = Calendar.getInstance();
            int year = c.get(Calendar.YEAR);
            int month = c.get(Calendar.MONTH);
            int day = c.get(Calendar.DAY_OF_MONTH);
//            @Override
            public void onClick(final View view) {

                DatePickerDialog dpDlg = new DatePickerDialog(MainActivity.this, new DatePickerDialog.OnDateSetListener() {
                    @Override
                    public void onDateSet(DatePicker datePicker, int i, int i1, int i2) {
                        year = i;
                        month = i1;
                        day = i2;
                        Toast.makeText(MainActivity.this, i + "年 "+ (i1 + 1) +"月 "+ i2 + "日",Toast.LENGTH_SHORT).show();
                    }
                },year,month,day);
                dpDlg.show();
            }
        });
        
                //第二种方法
//               DatePickerDialog.OnDateSetListener DL = new DatePickerDialog.OnDateSetListener() {
//                   @Override
//                   public void onDateSet(DatePicker datePicker, int i, int i1, int i2) {
//
//                       c.set(Calendar.YEAR, year);
//                       c.set(Calendar.MONTH, month);
//                       c.set(Calendar.DAY_OF_MONTH, day);
//                       Toast.makeText(MainActivity.this, i + "年 "+ i1 +"月 "+ i2 + "日",Toast.LENGTH_SHORT).show();
//                   }
//               };
//               DatePickerDialog dpDlg1 = new DatePickerDialog(view.getContext(),DL, year, month, day);
//               dpDlg1.show();
           

其余控件DigitalClock,AnalogClock

DigitalClock显示数字时钟,可以显示当前的秒数;AnalogClock显示模拟时钟,不会显示当前秒数。

Android入门之基础时间日期控件DatePicker(Dialog)、TimePicker(Dialog)、DigitalClock和AnalogClock预览图
Android入门之基础时间日期控件DatePicker(Dialog)、TimePicker(Dialog)、DigitalClock和AnalogClock预览图

AnalogClock(左)和DigitalClock(右)

UI代码

<AnalogClock
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginTop="20dp"
        android:background="#FF3E96"
        android:textColor="#FCFCFC"
        ></AnalogClock>
        
    <DigitalClock
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginTop="20dp"
        android:background="#FF3E96"
        android:textColor="#FCFCFC"
        android:textSize="50dp"
        ></DigitalClock>
           

其余资料

详细时间日期控件的常用方法和属性

(博客作者:依旧淡然)

继续阅读