1

我想在我的应用程序中添加Night/Day主题,我在网上阅读了很多文章,但我仍然不明白这个方法是谁设置的,​​是Android OS,还是我必须创建一个基于在一天中的季节和时间设置DefaultNightMode()?

4

1 回答 1

0

您的应用程序主题由您处理,操作系统和 SystemUI 颜色由系统处理。

要在您的应用程序中更改主题,您必须res/values/styles.xml如下定义您的样式,并且您已在活动代码中应用它(在setContentView()方法之前)

<style name="AppLight" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimary">@color/appColorPrimaryLight</item>
    <item name="colorPrimaryDark">@color/appColorPrimaryDark</item>
    <item name="colorAccent">@color/appColorAccentLight</item>
</style>


<style name="AppDark" parent="Theme.AppCompat">
    <item name="colorPrimary">@color/appColorPrimaryDark</item>
    <item name="colorPrimaryDark">@color/appColorPrimaryDark</item>
    <item name="colorAccent">@color/appColorAccentDark</item>
</style>

在你的主要活动中

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    // Here goes the theme setup
    setTheme(R.style.AppDark)
    setContentView(R.layout.activity_main)
}

您显然可以根据您的应用程序逻辑更改算法以应用浅色/深色主题。关于 android night more 实现,每个 OEM 都有自定义的 android 操作系统实现,一些设备内置了主题管理器,而另一些则根本不允许主题化,因此它还没有提供通用主题化功能

于 2018-07-24T22:07:04.903 回答