千家信息网

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

发表于:2024-11-28 作者:千家信息网编辑
千家信息网最后更新 2024年11月28日,这篇文章主要讲解了"Android怎么实现仿IOS10圆盘时间选择器",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Android怎么实现仿IOS10圆
千家信息网最后更新 2024年11月28日Android怎么实现仿IOS10圆盘时间选择器

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

项目演示

实现思路

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

这里以"开始时间设置按钮"为例来谈谈它的滑动实现:
将"开始时间设置按钮"作为点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圆盘时间选择器这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

0