2024-02-07

【Kotlin】設為 深色/夜晚 模式

參考資料 ----
Android深色模式适配原理分析(這篇解說超清楚的)


踩到雷!
下面程式碼在陽春的 app 可行,但 強制深色模式會令 Activity 重建一個 instance(實例),以 onCreate() 為例,會同時間執行 2 次;這次的雷就是 SQLite 同時間寫入 2 筆相同的記錄,造成 primary key 衝突才發現。

Android Studio 精靈建立新專案,若看到有 /res/values-night/ 目錄,且目錄下有 themes.xml,就表示精靈有幫您建立 深色/夜晚 模式的主題配置。
 
override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        
        ...
        ...

        // 設為 深色/夜晚 模式
        AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)

        ...
        ...
}
 
這指令到底該在什麼場合使用...再說吧... 😝


目前找到的替代做法,是修改預設(白天) 的 themes.xml
 
<style name="Theme.blablabla" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
	...
	...
	
    <!-- Customize your theme here. -->
    <item name="android:windowBackground">@color/black</item>
 

沒有留言:

張貼留言