为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

宝慕林4294392 2022-11-10 16:35:19
我有一个形状像时钟的自定义视图。我有一个滑块图像,用户可以使用它来逆时针 (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;}我想知道是否有比这更好的方法?我一直在研究它太久了,我认为它不再有成效,它会有助于看到一些外部观点。我正在考虑将所有分钟转换为某种弧度,但我不确定这种努力是否可行。编辑:添加照片:灰色圆圈是用户可以沿红线顺时针或逆时针拖动的图像。向左滑动是逆时针,向右滑动是顺时针
查看完整描述

1 回答

?
炎炎设计

TA贡献1808条经验 获得超4个赞

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"

    }

}


查看完整回答
反对 回复 2022-11-10
  • 1 回答
  • 0 关注
  • 128 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号