日期选择器,时间选择器与计时器的学习

(一)日期选择器

DatePicker的使用:
首先在布局页面加入一个DatePicker,并给id。之后再主程序中展示当前的时间
首先定义年月日变量,和DatePicker,获取当前时间并赋值给年月日变量,然后给DatePicker赋初值,并设置
OnDateChangedListener改变事件,在该改变事件中设置show函数来展示当前时间,在外部单独写一个展示函数,来展示时间。
主程序:
package com.example.datepicker;

import androidx.appcompat.app.AppCompatActivity;

import android.Manifest;
import android.app.Activity;
import android.os.Bundle;
import android.widget.CalendarView;
import android.widget.DatePicker;
import android.widget.Toast;

import java.util.Calendar;

public class MainActivity extends Activity {
    private int year,month,day;
    DatePicker datePicker;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        datePicker=(DatePicker) findViewById(R.id.datepicker);
        Calendar calendar=Calendar.getInstance();
        year=calendar.get(Calendar.YEAR);
        month=calendar.get(Calendar.MONTH);
        day=calendar.get(Calendar.DAY_OF_MONTH);
        datePicker.init(year,month,day,new DatePicker.OnDateChangedListener() {
            @Override
            public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                MainActivity.this.year=year;
                MainActivity.this.month=monthOfYear;
                MainActivity.this.day=dayOfMonth;
                show(year,month,day);
            }
        });
    }
    private void show(int year,int month,int day)
    {
        String str=year+"年"+(month+1)+"月"+day+"日";
        Toast.makeText(this,str,Toast.LENGTH_SHORT).show();
    }
}

程序截图:

 (二)时间选择器

目标:我们要设置一个时间选择器和显示改变时间后的时间
首先在布局中设置一个TimePicker并设置id,在再主程序文件中设置TimePicker变量,并且设置他的改变时间事件监听器
在监听器里通过字符串拼接写出当前的时间,再通过Toast显示出来。一般时间时12,可以添加
timePicker.setIs24HourView(true);修改成24小时

(1)既可以使用24小时制,也能使用am/pm(上图为am/pm),可以用is24HourView()方法来知道timepicker现在是否为24小时制,该方法返回值为布尔类型。

使用timepicker时默认为12小时制,可以使用setIs24HourView(boolean is24HourView)方法来改变,传入true既可以改为24小时制。

(2)        getHour() 返回当前系统小时(24小时制)

      getMinute() 返回当前系统分钟

(3)        setHour(int Hour) 设置时钟为hour小时(24小时制)

      setMinute(int minute) 设置时钟为minute分钟。

(4)        setOnTimeChangedListener(TimePicker.OnTimeChangedListener onTimeChangedListener)

注册时钟的点击事件。

 
 
package com.example.timepicker;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.widget.TimePicker;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        TimePicker timePicker=(TimePicker)findViewById(R.id.timepicker);
        timePicker.setIs24HourView(true);
        timePicker.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {
            @Override
            public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
                String str=hourOfDay+"时"+minute+"分";
                Toast.makeText(MainActivity.this,str,Toast.LENGTH_SHORT).show();
            }
        });
    }
}

程序截图:

 (三)计时器

Chronometer的用法很简单,它支持如下用法:

getBase():返回时间。

setBase(long base):设置计时器的起始时间。

start():开始计时。

stop():停止计时。

setFormat(String format):设置显示时间的格式。

setOnChronometerTickListener(Chronometer.OnChronometerTickListener listener):为计时器绑定监听事件。

它显示的时间是从某个起始时间开始过去了多少时间,它只提供了android:format一个属性用于指定计时器的计数格式。

主程序:

package com.example.chronometer;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.os.SystemClock;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.Chronometer;

public class MainActivity extends AppCompatActivity {
    Chronometer ch;
    Button btn;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);//设置全屏显示
        ch=(Chronometer)findViewById(R.id.chronometer);
        btn=(Button)findViewById(R.id.button);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ch.setBase(SystemClock.elapsedRealtime());//设置开始计时时间
                ch.setFormat("%s");//摄制格式
                ch.start();//开始启动
            }
        });
        //为事件绑定监听事件
        ch.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {
            @Override
            public void onChronometerTick(Chronometer chronometer) {
                //如果从刚开始计时到现在超过了60秒
                if(SystemClock.elapsedRealtime()-ch.getBase()>=60000){
                    ch.stop();
                }
            }
        });
    }
}

程序截图:

原文地址:https://www.cnblogs.com/xiaofengzai/p/12246673.html