如何正确确定用户是使用时间顺时针还是逆时针拖动我的圆轮滑块?

我有一个形状像时钟的自定义视图。我有一个滑块图像,用户可以使用它来逆时针 (CCW) 或顺时针 (CW) 左右滑动,以便他们可以选择时间。我的自定义视图以某种格式返回给我一个time数据类型。例如:。StringH:mm aa1:34 AM


我目前能够确定 CW 或 CCW 检测,但它不是完整的证据,因为当用户滑过 12:00 AM 点时会出现问题。


我目前确定 CW 或 CCW 运动的逻辑是:


转换time成军用时间,这样我就可以将它存储为一个Date名为mDate.

检查 lasttimeToMil是否小于 current mDate.getTime()。如果它更少,我认为它是 CW,否则它是 CCW。

将自 1970 年 1 月 1 日以来的当前毫秒数存储到变量timeToMil中,以便下一次迭代可以确定最后一个点是及时向前移动还是向后移动。

但问题是,如果用户最后一次是晚上 11:00 并将滑块移动到凌晨 1:00。使用#2 逻辑,这将检测到它是不正确的 CCW。


if (timeToMil < mDate.getTime()) {

    cw = true; 

} else {

    cw = false;

}

我想知道是否有比这更好的方法?我一直在研究它太久了,我认为它不再有成效,它会有助于看到一些外部观点。


我正在考虑将所有分钟转换为某种弧度,但我不确定这种努力是否可行。


编辑:添加照片:

http://img3.mukewang.com/636cb7e70001144103320314.jpg

灰色圆圈是用户可以沿红线顺时针或逆时针拖动的图像。向左滑动是逆时针,向右滑动是顺时针



宝慕林4294392
浏览 129回答 1
1回答

炎炎设计

h - 小时 [1,12] m - 分钟 [0,59]720 = 12*60 - 整圈时针的分钟数halfOfCircle = 360 = 720/2 - 时针半圈的分钟timePrev = timeNexttimeNext = (h%12)*60+mif (abs(timePrev-timeNext)<halfOfCircle){&nbsp; &nbsp; if (timePrev<timeNext){&nbsp; &nbsp; &nbsp; &nbsp; return "CW"&nbsp; &nbsp; } else {&nbsp; &nbsp; &nbsp; &nbsp; return "CCW"&nbsp; &nbsp; }} else {&nbsp; &nbsp; if (timeNext<halfOfCircle){&nbsp; &nbsp; &nbsp; &nbsp; return "CW"&nbsp; &nbsp; } else {&nbsp; &nbsp; &nbsp; &nbsp; return "CCW"&nbsp; &nbsp; }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java