十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
小编给大家分享一下Android如何实现仿IOS10圆盘时间选择器,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
创新互联建站是一家集网站建设,巴州企业网站建设,巴州品牌网站建设,网站定制,巴州网站建设报价,网络营销,网络优化,巴州网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。介绍
这是一款仿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圆盘时间选择器”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!