主要是在獲取時間之前釋放焦點
上代碼:
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();
}
}
}