主要是在获取时间之前释放焦点
上代码:
Calendar calendar= Calendar.getInstance(Locale.CHINA);
/**
* 时间选择
* @param activity
* @param themeResId 展示样式 我只用过 1
* @param tv 用来显示时间的控件
* @param calendar
*/
public static void showTimePickerDialog(Activity activity, int themeResId, final TextView tv, Calendar calendar) {
// Calendar c = Calendar.getInstance();
// 创建一个TimePickerDialog实例,并把它显示出来
// 解释一哈,Activity是context的子类
TimePickerDialog time = new TimePickerDialog(activity, themeResId,
// 绑定监听器
new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
Log.i("time", hourOfDay + "" + minute);
String hourStr;
String minStr;
if (hourOfDay < 10) {
hourStr = "0" + hourOfDay;
} else {
hourStr = hourOfDay + "";
}
if (minute < 10) {
minStr = "0" + minute;
} else {
minStr = minute + "";
}
tv.setText(hourStr + ":" + minStr);
}
}
// 设置初始时间
, calendar.get(Calendar.HOUR_OF_DAY)
, calendar.get(Calendar.MINUTE)
// true表示采用24小时制
, true){
@Override
public void onClick(DialogInterface dialog, int which) {
//先释放焦点 然后引用onClick方法
//焦点释放处理
if (dialog instanceof TimePickerDialog) {
((TimePickerDialog)dialog).getWindow().getDecorView().clearFocus();
}
super.onClick(dialog, which);
}
};
time.show();
}
调用: showTimePickerDialog(this,1,tvDownTime,calendar);
附赠计算上班时长的方法:
/**
* 计算时差
*/
public void countTime(){
String up = tvUpTime.getText().toString();//(上班时间)
String down = tvDownTime.getText().toString();//(下班时间)
String[] up1 = up.split(":");
String[] down1 = down.split(":");
int upHour=Integer.getInteger(up1[0]);
int upMin=Integer.getInteger(up1[1]);
int downHour=Integer.getInteger(down1[0]);
int downMin=Integer.getInteger(down1[1]);
int tempHour;
int tempMin;
if(upHour>downHour){
Toast.makeText(this, "打卡时间不符合要求", Toast.LENGTH_SHORT).show();
}else if(upHour==downHour&&upMin>=downMin){
Toast.makeText(this, "打卡时间不符合要求", Toast.LENGTH_SHORT).show();
}else {
tempHour=downHour-upHour;
if(upMin>downMin){//例如 9:15 到 18:00
tempHour--;//8
tempMin=60-(upMin-downMin);//45
Toast.makeText(this, "上班时长"+tempHour+"小时"+tempMin+"分钟", Toast.LENGTH_SHORT).show();
}else {
tempMin=downMin-upMin;
Toast.makeText(this, "上班时长"+tempHour+"小时"+tempMin+"分钟", Toast.LENGTH_SHORT).show();
}
}
}