Android怎么实现仿IOS10圆盘时间选择器
创始人
2024-12-21 20:01:25
0次

项目演示

Android怎么实现仿IOS10圆盘时间选择器

实现思路

以720度为一个周期,0~360°对应0~12小时,360°~720°对应12~24小时

Android怎么实现仿IOS10圆盘时间选择器

这里以”开始时间设置按钮”为例来谈谈它的滑动实现:
将”开始时间设置按钮”作为点A,表盘中心作为点O,手指触摸点作为点P.通过反正切公式可以计算出∠AOP的大小,然后随着手指的位置不断变化去更新点A的位置(即点A的角度).

// 坐标系的直线表达式
// 直线l1的表达式子:过钟表中心点和开始控件中心点
float a1 = mCenterY - mStartBtnCurY;
float b1 = mStartBtnCurX - mCenterX;
float c1 = mStartBtnCurY * mCenterX - mCenterY * mStartBtnCurX;
double d1 = (a1 * eventX + b1 * eventY + c1) / (Math.sqrt(a1 * a1 + b1 * b1));

// 直线l2的表达式:过钟表中心点且垂直直线l1
     float a2 = b1;
     float b2 = -a1;
     float c2 = -a2 * mCenterX - b2 * mCenterY;
     double d2 = (a2 * eventX + b2 * eventY + c2) / (Math.sqrt(a2 * a2 + b2 * b2));

// 以l1为基准线,顺势针半圆为0-180度,逆时针半圆为0-负180度
     double moveDegree = Math.toDegrees(Math.atan2(d1, d2));

     mStartDegree = (float) (mStartDegree + Math.floor(moveDegree));
     mStartDegree = (mStartDegree < 0) ? mStartDegree + mDegreeCycle : mStartDegree % mDegreeCycle;
     refreshStartBtnPositon();
     invalidate();

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...