谈起Android控件相比我们小白想到的大都是textview,imageview,edittext,button,checkbox等比较常用的控件,对于一些特别要展示的功能不足以很好的表达,今天来介绍几个比较相对好一点的控件来让我们小白在Android表现上更好的展示!
今天就简单介绍三个,分别是1:datepicker日历 2:timepicker时钟 3:chronometer计时器
日历简单实现了点击对应的日子toast出具体的年月日,时钟实现了转动时间toast出对应的时分,计时器实现了计时一分钟,到一分钟之后便立刻停止,数字不再发生变化!
下面我就直接贴code了(我把三个都写在一个类文件里了,方便浏览,另外xml布局也不在此展示了),因为毕竟是控件来讲,相对比较容易,部分需要说明的我也在代码段中进行相对的注释了,如果有什么疑问可以评论区留言或者私信我,如果内容上有不足或者错误的地方还请各位同仁指正!
public class MainActivity extends AppCompatActivity {
private DatePicker datePicker;
private TimePicker timePicker;
private Chronometer chronometer;
private int year,mounth,day;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
datePicker=findViewById(R.id.datapicker);
timePicker=findViewById(R.id.timepicker);
chronometer=findViewById(R.id.ch);
Calendar calendar=Calendar.getInstance();
year=calendar.get(Calendar.YEAR);
mounth=calendar.get(Calendar.MONTH);
day=calendar.get(calendar.DAY_OF_MONTH);
datePicker.init(year, mounth, day, new DatePicker.OnDateChangedListener() {
@Override
public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
MainActivity.this.year=year;
MainActivity.this.mounth=monthOfYear;
MainActivity.this.day=dayOfMonth;
String str1=year+"年"+(mounth+1)+"月"+day+"日";
Toast.makeText(MainActivity.this,str1,Toast.LENGTH_SHORT).show();
}
});
timePicker.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {
@Override
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
timePicker.setIs24HourView(true);//24小时进制,不添加该行代码则时间默认为12小时,前方会有上午/下午
String str2 =hourOfDay+"时"+minute+"分";
Toast.makeText(MainActivity.this,str2,Toast.LENGTH_SHORT).show();
}
});
/* setBase()>>>>>设置计时器的起始时间
setFormat()>>>>>设置显示时间格式
start()>>>>>指定开始时间
stop()>>>>>指定停止时间
setOnChronometerTickListener()计时器监听事件>>>>>*/
chronometer.setBase(SystemClock.elapsedRealtime());
chronometer.setFormat("%s");
chronometer.start();
chronometer.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {
@Override
public void onChronometerTick(Chronometer chronometer) {
if (SystemClock.elapsedRealtime()-chronometer.getBase()>=60000){//真实的时间减去开始的时间为60000毫秒即60秒时
chronometer.stop();
}
}
});
}
}