您好,登錄后才能下訂單哦!
這篇文章主要講解了“Android怎么實現(xiàn)仿IOS10圓盤時間選擇器”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Android怎么實現(xiàn)仿IOS10圓盤時間選擇器”吧!
項目演示
實現(xiàn)思路
以720度為一個周期,0~360°對應0~12小時,360°~720°對應12~24小時
這里以”開始時間設(shè)置按鈕”為例來談?wù)勊幕瑒訉崿F(xiàn):
將”開始時間設(shè)置按鈕”作為點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怎么實現(xiàn)仿IOS10圓盤時間選擇器”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對Android怎么實現(xiàn)仿IOS10圓盤時間選擇器這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。