FAB 有個常見的效果時,顯示 FAB 菜單的時候,background 會變暗,想研究一下這個效果要怎麼達成,第一個想到的是,這個效果跟 Android 顯示 Dialog 的時候很像,就想看一下 Dialog 是怎麼做到這件事的,看能不能將 Dialog 的作法借用過來。
經過一些 study 後,發現 activity 其實會對應到一個 window(window 的意義是甚麼以後有機會再說吧),系統會將 window 關連到的 View 繪製在螢幕上,而 Dialog 會在其內部建立一個新的 window,這個 window 位置會疊在 activity 的 window 之上(造成 Dialog 的懸浮效果),Dialog window 的 background 是透明的,並且將這個 window 的 dimAmount 設置為 0.6 來達成背景變暗的效果。
這個方法是蠻方便的,不過不適合用在 FAB 菜單顯示,總覺得不需要再建一個 window,而且還要處理 window 間的事件傳遞,也比較麻煩吧。
沒有留言:
張貼留言