會彈跳的菜單(高級UI)

BouncingMenu一款彈跳菜單控件

彈跳菜單控件是一款專門脫離于Activity的一個自定義控件纹烹。

特點(diǎn)概述:

  • 動態(tài)加載 :不用在XML布局文件中聲明定義沃琅;</br>
  • 框架化 :可以直接像Toast.makeText(getBaseContext(),"",Toast.LENGTH_SHORT).show()婆排,利用了建造者模式來調(diào)用霉猛;</br>
  • 動畫美感 :利用了屬性動畫钻蹬。</br>

效果圖:</br>

[圖片上傳失敗...(image-abc547-1576144706679)]</br>

思路

*****并不是在Activity之上建立一個FrameLayout佛致,這個控件是獨(dú)立于Activity之上的贮缕,相當(dāng)于一個menu一樣,可以獨(dú)立存在俺榆,那么我們就要得到最外層的布局DecorView感昼,在它之上添加一個獨(dú)立的布局;
*****那么還要畫出最上面的圓弧形狀罐脊,它其實(shí)就是一個貝塞爾曲線定嗓,這里我們動態(tài)加載的布局要畫上一個上方帶有圓弧的圖形;
*****這個布局上也可以加載數(shù)據(jù)萍桌,當(dāng)然這里數(shù)據(jù)可以用ListView,也可以用RecyclerView宵溅,我這里選擇了后者;
*****為了顯示好看曲線上炎,我們用到了屬性動畫

使用</br>

BoucingMenu.make(getBaseContext(),main_layout,R.layout.menu_boucing).show();

引申

本例最主要的是如何得到DecorView恃逻,通過android源碼我們知道DecorViewActivity布局中最外層的一個布局,而我們真正意義上的xml中書寫的布局都是它的Child<\br>

/** 
* 找到DecorView的根布局
* @param view 
*/
private ViewGroup findSuitableParent(View view){
    ViewGroup fallBack = null;
    do{
        if (view instanceof FrameLayout){
            if (view.getId() == android.R.id.content){
                return (ViewGroup)view;
            }else{
                fallBack = (ViewGroup) view;
            }
        }
        if (view != null){
            ViewParent parent = view.getParent();
            view = parent instanceof View ? (View) parent : null;
        }
    }while (view != null); 
return fallBack;}

畫出的曲線用到的是貝塞爾曲線藕施,畫曲線那么這里利用了path.quarTo();,想見更多關(guān)于貝塞爾曲線寇损,那么請移步
--https://github.com/heavenxue/AsLixueAndroids/blob/master/lixuelib/src/main/java/com/aibei/lixue/lixuelib/view/PathBezier.java

具體的代碼地址

https://github.com/heavenxue/BouncingControls

如果有什么問題的可以留言,有問題的可以進(jìn)入我的github進(jìn)行討論铅碍。

如果此篇文章對您有幫助或者您很感興趣润绵,那么小手指別忘了點(diǎn)個贊哦!么么噠胞谈,謝謝關(guān)注尘盼!歡迎star 和 follow ??

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末憨愉,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子卿捎,更是在濱河造成了極大的恐慌配紫,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件午阵,死亡現(xiàn)場離奇詭異躺孝,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)底桂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進(jìn)店門植袍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人籽懦,你說我怎么就攤上這事于个。” “怎么了暮顺?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵厅篓,是天一觀的道長。 經(jīng)常有香客問我捶码,道長羽氮,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任惫恼,我火速辦了婚禮档押,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘祈纯。我一直安慰自己汇荐,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布盆繁。 她就那樣靜靜地躺著,像睡著了一般旬蟋。 火紅的嫁衣襯著肌膚如雪油昂。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天倾贰,我揣著相機(jī)與錄音冕碟,去河邊找鬼。 笑死匆浙,一個胖子當(dāng)著我的面吹牛安寺,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播首尼,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼挑庶,長吁一口氣:“原來是場噩夢啊……” “哼言秸!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起迎捺,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤举畸,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后凳枝,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體抄沮,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年岖瑰,在試婚紗的時候發(fā)現(xiàn)自己被綠了叛买。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡蹋订,死狀恐怖率挣,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情辅辩,我是刑警寧澤难礼,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站玫锋,受9級特大地震影響蛾茉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜撩鹿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一谦炬、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧节沦,春花似錦键思、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至叫搁,卻和暖如春赔桌,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背渴逻。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工疾党, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人惨奕。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓雪位,卻偏偏與公主長得像,于是被迫代替她去往敵國和親梨撞。 傳聞我的和親對象是個殘疾皇子雹洗,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內(nèi)容