- 新增 LocaleManager:语言偏好存 SharedPreferences,createConfigurationContext + LocaleList 包装 Application/MainActivity 的 attachBaseContext(零新依赖) - 设置页新增语言卡片与选择对话框:跟随系统 / 简体中文 / 繁體中文 / English - 新增繁体中文 values-b+zh+Hant(434 条,OpenCC s2twp 台湾标准转换+人工修正) - 简体目录改为 values-b+zh+Hans(BCP-47,与繁体对称;AGP9 不接受 values-zh-Hans) - widget_brand 可翻译:英=Rainy / 简繁=雨晴喵;app_name 可翻译:英=RainyToken / 简繁=雨晴Token - 资源三语言 434/434/434 对齐,占位符零差异
40 lines
1.3 KiB
Kotlin
40 lines
1.3 KiB
Kotlin
package com.rainy.token
|
||
|
||
import android.content.Context
|
||
import android.os.Bundle
|
||
import androidx.activity.ComponentActivity
|
||
import androidx.activity.compose.setContent
|
||
import androidx.activity.enableEdgeToEdge
|
||
import com.rainy.token.ui.RainyTokenNavHost
|
||
import com.rainy.token.ui.components.RainyBackground
|
||
import com.rainy.token.ui.theme.RainyTokenTheme
|
||
import dagger.hilt.android.AndroidEntryPoint
|
||
|
||
/**
|
||
* APP 入口。
|
||
*
|
||
* 布局策略:
|
||
* - 外层只套 RainyTokenTheme(统一品牌色 + 字体)
|
||
* - 再套 RainyBackground(樱粉渐变背景,全局共享)
|
||
* - NavHost 在背景之上,每个页面自己用 Scaffold 处理 TopAppBar 和 padding
|
||
* - **不**在外层再套 Scaffold —— 避免双 Scaffold 嵌套的 padding 计算混乱
|
||
*/
|
||
@AndroidEntryPoint
|
||
class MainActivity : ComponentActivity() {
|
||
override fun attachBaseContext(newBase: Context) {
|
||
// 应用内语言偏好在此层生效:recreate() 后资源按所选语言重新解析
|
||
super.attachBaseContext(com.rainy.token.util.LocaleManager.wrapContext(newBase))
|
||
}
|
||
|
||
override fun onCreate(savedInstanceState: Bundle?) {
|
||
super.onCreate(savedInstanceState)
|
||
enableEdgeToEdge()
|
||
setContent {
|
||
RainyTokenTheme {
|
||
RainyBackground {
|
||
RainyTokenNavHost()
|
||
}
|
||
}
|
||
}
|
||
}
|
||
} |