日期选择器,时间选择器与计时器的学习
(一)日期选择器
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(); } } }); } }
程序截图: