温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2022-04-13 15:58:57 来源:亿速云 阅读:299 作者:iii 栏目:编程语言

这篇文章主要讲解了“Android怎么实现仿IOS10圆盘时间选择器”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Android怎么实现仿IOS10圆盘时间选择器”吧!

项目演示

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();

感谢各位的阅读,以上就是“Android怎么实现仿IOS10圆盘时间选择器”的内容了,经过本文的学习后,相信大家对Android怎么实现仿IOS10圆盘时间选择器这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI