【发布时间】:2022-03-29 22:54:29
【问题描述】:
我正在为我的应用程序使用材质组件 DayNight 主题。我想在运行时打开/关闭暗模式。我正在使用以下方法来更改应用程序的主题:
AppCompatDelegate.setDefaultNightMode();
问题在于它重新创建了不太流畅的活动。它在更改应用程序主题之前显示黑屏。
有什么方法可以让这个看起来平滑吗?
【问题讨论】:
标签: android
我正在为我的应用程序使用材质组件 DayNight 主题。我想在运行时打开/关闭暗模式。我正在使用以下方法来更改应用程序的主题:
AppCompatDelegate.setDefaultNightMode();
问题在于它重新创建了不太流畅的活动。它在更改应用程序主题之前显示黑屏。
有什么方法可以让这个看起来平滑吗?
【问题讨论】:
标签: android
在调用 super.create() 方法之前将主题设置为深色模式,因此在用户可见活动之前,它的主题将首先更改。
protected void onCreate(Bundle savedInstanceState) {
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
希望这会有所帮助。
【讨论】:
您可以在 Activity 中尝试:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
delegate.localNightMode = AppCompatDelegate.MODE_NIGHT_YES
}
再次删除:
delegate.localNightMode = AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM
【讨论】: