這篇文章主要講解了“Android怎么實(shí)現(xiàn)仿IOS10圓盤時(shí)間選擇器”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Android怎么實(shí)現(xiàn)仿IOS10圓盤時(shí)間選擇器”吧!

項(xiàng)目演示

實(shí)現(xiàn)思路
以720度為一個(gè)周期,0~360°對應(yīng)0~12小時(shí),360°~720°對應(yīng)12~24小時(shí)

這里以”開始時(shí)間設(shè)置按鈕”為例來談?wù)勊幕瑒?dòng)實(shí)現(xiàn):
將”開始時(shí)間設(shè)置按鈕”作為點(diǎn)A,表盤中心作為點(diǎn)O,手指觸摸點(diǎn)作為點(diǎn)P.通過反正切公式可以計(jì)算出∠AOP的大小,然后隨著手指的位置不斷變化去更新點(diǎn)A的位置(即點(diǎn)A的角度).
// 坐標(biāo)系的直線表達(dá)式 // 直線l1的表達(dá)式子:過鐘表中心點(diǎn)和開始控件中心點(diǎn) 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的表達(dá)式:過鐘表中心點(diǎn)且垂直直線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為基準(zhǔn)線,順勢針半圓為0-180度,逆時(shí)針半圓為0-負(fù)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怎么實(shí)現(xiàn)仿IOS10圓盤時(shí)間選擇器”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對Android怎么實(shí)現(xiàn)仿IOS10圓盤時(shí)間選擇器這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,,小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!
分享題目:Android怎么實(shí)現(xiàn)仿IOS10圓盤時(shí)間選擇器-創(chuàng)新互聯(lián)
標(biāo)題鏈接:http://chinadenli.net/article34/gedpe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、網(wǎng)站策劃、面包屑導(dǎo)航、營銷型網(wǎng)站建設(shè)、網(wǎng)站改版、小程序開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容