快速切換設定的對話框,是用來切換一些常用的功能:像是啟動桌面模式,音量鍵翻頁,開關廣告阻擋、無痕模式、瀏覽記錄等等。
原本有打算直接使用 Jetpack Compose 的 Dialog
來實作,或是利用原生的 Dialog
,在裡頭塞一個 ComposeView
。但這兩個方式都失敗了。最後,退而求其次,改成實作 DialogFragment
,並在 DialogFragment
中的 Dialog
放入所需的 ComposeView
。
原生的程式碼就這樣而已,主要是設定一下 Dialog
的屬性,讓它不要畫 Shadow
,而且可以放置在畫面上我想放的位置,然後,設定好 ComposeView
。(第 39 行的 Column
可以忽略。我不知道那時候在想什麼。)
FastToggleItemList
就有點像是在刻 xml 的 layout,把一個個的項目所需的 resource 都指定到 FastToggleItem
中,最後還包含了一個 action
,用來切換對應的 SharedPreference
值。
FastToggleItem
就很像一般的 Jetpack Compose 教學,利用 Row
將 Checkbox
, Icon
, 和 Text
放在一行上。這邊有用到 remember
來記錄 Compose
中的 isChecked
狀態。
程式寫得差不多後,在 Android Studio 的 Preview 畫面也能即時看到畫面大概會長成怎麼樣。雖然沒有像 Flutter 的 hotreload 那麼快速,但也遠比要一直去調整 layout xml 來得好多了。