如何實(shí)現(xiàn)android炫酷懸浮球菜單

前言

懸浮球菜單這件事,很多篇文章都有講過(guò),那為什么我還要再寫(xiě)一篇呢?因?yàn)槲矣X(jué)得我們的實(shí)現(xiàn)比較酷炫,另外有必要總結(jié)下實(shí)現(xiàn)的思路,供大家來(lái)參考。畢竟做什么事,思路先行,如果沒(méi)有思路,只會(huì)復(fù)制粘貼代碼,那和咸魚(yú)有什么區(qū)別?

效果預(yù)覽

全能分詞 懸浮球效果預(yù)覽

思考

首先我們實(shí)現(xiàn)懸浮球時(shí),WindowManager是離不開(kāi)的,對(duì)它的用法可以自行360搜索??梢钥吹轿覀兊膽腋∏蚴怯卸?jí)目錄的,存在著兩個(gè)不同的view之間的相互切換。對(duì)于這兩級(jí)切換,大致實(shí)現(xiàn)有兩種方式:

1.只使用一個(gè)布局文件,其中的元素通過(guò) gone 或 visiable 來(lái)實(shí)現(xiàn)顯示或隱藏。這樣做的好處是統(tǒng)一在一個(gè)布局中處理,但是壞處也很明顯,一要隨著切換要自行控制LayoutParam 屬性,保證所有的view都可以顯示完全,另外則是需要把邏輯放到一個(gè)view里面,如果你寫(xiě) 代碼的習(xí)慣不好,不懂得模塊化,寫(xiě)出的東西會(huì)非常難看。

2.使用兩個(gè)布局,通過(guò)按鈕點(diǎn)擊來(lái)向WindowManager中添加和移除view,這樣顯然沒(méi)有了上面的壞處了,但是你還需要計(jì)算,保證兩個(gè)view的中心點(diǎn)的位置是重合的,不然,一上一下的,你看著也難受,是吧。
so,我們采用了第二種實(shí)現(xiàn)方式,這樣整個(gè)控件的書(shū)寫(xiě)可以分為以下四個(gè)步驟:

1>實(shí)現(xiàn)美女圖片iocn到展開(kāi)布局的切換,也就一個(gè)點(diǎn)擊事件。

2>實(shí)現(xiàn)展開(kāi)布局的動(dòng)畫(huà)與布局,哈哈,這部分有點(diǎn)復(fù)雜,不過(guò)封裝的還可以,對(duì)照源碼應(yīng)該看得懂。

3>實(shí)現(xiàn)在屏幕不同位置時(shí),展開(kāi)布局的變化。

4>展開(kāi)前中心點(diǎn)與展開(kāi)后中心點(diǎn)位置重合計(jì)算。

實(shí)現(xiàn)

具體的實(shí)現(xiàn)可以參考源碼:ArcTipViewController,沒(méi)墻github 真的是祖國(guó)的良心。
這里也貼下部分的代碼實(shí)現(xiàn):

展開(kāi)時(shí)源碼實(shí)現(xiàn)
顯示美女icon實(shí)現(xiàn)

參考源代碼閱讀本文,風(fēng)味更佳哦。

鏈接

最后廣告下,能否給貧窮的開(kāi)發(fā)者打賞一下下呢?開(kāi)源不易啊。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容