91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

榆树市| 西乡县| 天台县| 凌海市| 枝江市| 工布江达县| 大厂| 京山县| 建湖县| 天镇县| 定襄县| 军事| 丹巴县| 泌阳县| 灯塔市| 那坡县| 巢湖市| 陕西省| 加查县| 灵石县| 成武县| 富宁县| 宽甸| 土默特左旗| 宜川县| 黄大仙区| 广平县| 亳州市| 邵武市| 无为县| 河东区| 穆棱市| 秀山| 苗栗市| 瓮安县| 周宁县| 巴里| 三穗县| 宿松县| 平顺县| 渑池县|