我有一个形状像时钟的自定义视图。我有一个滑块图像,用户可以使用它来逆时针(CCW)或顺时针(CW)在时钟上滑动,以便他们可以选择时间。我的自定义视图向我返回了time
格式的String
数据类型H:mm aa
。例如:1:34 AM
。
我目前能够确定CW或CCW检测,但不能完全证明,因为当用户滑过12:00 AM点时存在问题。
我目前用于确定CW或CCW运动的逻辑是:
time
转换为军事时间,这样我就可以将其存储为Date
的{{1}}对象。mDate
是否小于当前的timeToMil
。如果小于,则假定为CW,否则为CCW。mDate.getTime()
中,以便下一次迭代可以确定最后一点是在时间上向前还是向后移动。问题是,例如,如果用户上次是11:00 PM,并将滑块移至1:00 AM。使用#2逻辑,这将检测到它是CCW,这是不正确的。
timeToMil
我想知道是否有比这更好的方法?我一直在研究它太久了,以至于我认为它不再具有生产力了,这将有助于看到一些外部观点。
我当时正在考虑将所有分钟转换为某种弧度,但是我不确定这种努力是否可行。
编辑: 添加照片:
灰色圆圈是用户可以沿红线顺时针或逆时针拖动的图像。向左滑动是CCW,向右滑动是CW
答案 0 :(得分:0)
h-小时[1,12] m-分钟[0,59]
720 = 12 * 60-时针整圈的分钟数
halfOfCircle = 360 = 720/2-时针半圈的分钟数
timePrev = timeNext
timeNext = (h%12)*60+m
if (abs(timePrev-timeNext)<halfOfCircle){
if (timePrev<timeNext){
return "CW"
} else {
return "CCW"
}
} else {
if (timeNext<halfOfCircle){
return "CW"
} else {
return "CCW"
}
}