Android应用如何自动切换为深色模式?

5 user-interface android android-studio android-dark-theme

我正在制作一个 Android 应用程序。我为深色模式制作了另一个 UI。这就是我所需要的;该应用程序将在当地时间之前自动切换到深色主题。例如,当当地时间太阳落山时,应用程序将切换到黑暗模式。

或者另一种选择是在一天中预设的时间切换到深色模式。希望你理解我的问题。如果有人知道,请帮助我,如果可能的话,我更喜欢第一个选项。提前致谢。

a_l*_*ody 4

也许你可以看看AppCompatDelegate.setDefaultNightMode()

\n\n

您只需使用 DayNight 的父级定义您的主题:

\n\n
<style name="MyTheme" parent="Theme.AppCompat.DayNight">    \n<!-- Blah blah -->\n</style>\n
Run Code Online (Sandbox Code Playgroud)\n\n

每种风格都有:

\n\n
<style name="Theme.AppCompat.DayNight" \n       parent="Theme.AppCompat.Light" />\n
Run Code Online (Sandbox Code Playgroud)\n\n

或者

\n\n
<style name="Theme.AppCompat.DayNight" \n       parent="Theme.AppCompat" />\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后你可以打电话:AppCompatDelegate.setDefaultNightMode()

\n\n

其中之一:

\n\n
MODE_NIGHT_NO. Always use the day (light) theme.\nMODE_NIGHT_YES. Always use the night (dark) theme.\nMODE_NIGHT_FOLLOW_SYSTEM (default). This setting follows the system\xe2\x80\x99s setting, which on Android Q and above is a system setting (more on this below).\nMODE_NIGHT_AUTO_BATTERY. Changes to dark when the device has its \xe2\x80\x98Battery Saver\xe2\x80\x99 feature enabled, light otherwise.\nMODE_NIGHT_AUTO_TIME & MODE_NIGHT_AUTO. Changes between day/night based on the time of day.\n
Run Code Online (Sandbox Code Playgroud)\n\n

您通常会在自己的自定义应用程序类中执行此操作:

\n\n
public class MyApplication extends Application {\n\n    public void onCreate() {\n        super.onCreate();        \n        AppCompatDelegate.setDefaultNightMode(\n            AppCompatDelegate.MODE_NIGHT_YES);\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

更多信息在这里

\n