一般阅读性apps喜欢在应用设置中加入夜间模式,那么有时间学习了一下当前具有夜间模式的产品


  1. 凤凰新闻客户端
    —采用的方案是主题切换。即在项目中style.xml中声明不同的主题样式,那么在activity中切换设置不同场景下的主题。
  2. 简书客户端
    —采用的方案是主题切换。
  3. QQ 客户端
    —靠,严格加固;微信也不看了,只能欺负弱的了。
  4. 今日头条 客户端
    —切换的没前两者那么柔和。也是采用的主题切换

由此可见,采用方案主要是主题切换。也可能存在其他方案,目前我还没发现。

实现方式(略,具体请问谷哥哥,别问度娘)

  • 实现两种模式下的style主题样式
<style name="theme_day" parent="@style/AppTheme">
<item name="attr_home_img_readmore">@drawable/day</item>
</style>

<style name="theme_night" parent="@style/AppTheme">
<item name="attr_home_img_readmore">@drawable/night</item>
</style>
  • 切换时加载不同主题样式
UI.setTheme(R.style.theme_night);