添加夜间模式主题设置功能:跟随系统/浅色/深色模式

This commit is contained in:
Developer
2026-03-22 22:43:56 +08:00
parent 893b5356a9
commit 795d065aef
4 changed files with 184 additions and 2 deletions

View File

@@ -17,8 +17,11 @@ import android.widget.ImageView
import android.widget.LinearLayout
import android.widget.TextView
import android.widget.Toast
import android.widget.RadioGroup
import android.widget.RadioButton
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.ContextCompat
import com.example.flomo_ai.ui.theme.ThemeManager
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
import kotlinx.coroutines.CoroutineScope
@@ -57,6 +60,12 @@ class SecondActivity : AppCompatActivity() {
private lateinit var layoutPromptContent: LinearLayout
private lateinit var ivPromptArrow: ImageView
private lateinit var layoutPromptToggle: LinearLayout
// Theme view references
private lateinit var rgThemeMode: RadioGroup
private lateinit var rbThemeFollowSystem: RadioButton
private lateinit var rbThemeLight: RadioButton
private lateinit var rbThemeDark: RadioButton
// Data storage
private var headerConfigs = mutableListOf<HeaderConfig>()
@@ -68,6 +77,7 @@ class SecondActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
ThemeManager.applySavedTheme(this)
Log.d("SecondActivity", "onCreate: Starting SecondActivity")
try {
setContentView(R.layout.activity_second)
@@ -148,6 +158,12 @@ class SecondActivity : AppCompatActivity() {
ivPromptArrow = findViewById(R.id.ivPromptArrow)
layoutPromptToggle = findViewById(R.id.layoutPromptToggle)
// Theme Section
rgThemeMode = findViewById(R.id.rgThemeMode)
rbThemeFollowSystem = findViewById(R.id.rbThemeFollowSystem)
rbThemeLight = findViewById(R.id.rbThemeLight)
rbThemeDark = findViewById(R.id.rbThemeDark)
Log.d("SecondActivity", "initViews: All views found")
// Setup API key toggle
@@ -283,6 +299,39 @@ class SecondActivity : AppCompatActivity() {
addPromptEntry(prompt.title, prompt.content)
}
}
// Setup theme
setupTheme()
}
private fun setupTheme() {
// Get saved theme mode
val themeMode = ThemeManager.getThemeMode(this)
// Set the correct radio button
when (themeMode) {
ThemeManager.THEME_FOLLOW_SYSTEM -> rbThemeFollowSystem.isChecked = true
ThemeManager.THEME_LIGHT -> rbThemeLight.isChecked = true
ThemeManager.THEME_DARK -> rbThemeDark.isChecked = true
else -> rbThemeFollowSystem.isChecked = true
}
// Set up radio group listener
rgThemeMode.setOnCheckedChangeListener { _, checkedId ->
val newMode = when (checkedId) {
R.id.rbThemeFollowSystem -> ThemeManager.THEME_FOLLOW_SYSTEM
R.id.rbThemeLight -> ThemeManager.THEME_LIGHT
R.id.rbThemeDark -> ThemeManager.THEME_DARK
else -> ThemeManager.THEME_FOLLOW_SYSTEM
}
// Save and apply the new theme
ThemeManager.setThemeMode(this, newMode)
Log.d("SecondActivity", "Theme mode changed to: ${ThemeManager.getThemeModeName(newMode)}")
// Recreate activity to apply theme changes
recreate()
}
}
private fun addHeaderEntry(key: String = "", value: String = "") {