问题标签 [android-night-mode]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
258 浏览

android - 白天晚上忽略特定活动

是否可以强制 android 忽略某些活动,从白天模式切换到夜间模式以及其他活动?

目前一个可能的解决方法是:

但是,这迫使我每次都重新创建活动。是否可以在 MODE_NIGHT 中自动创建它而不重新创建它,而不管为应用程序的其余部分设置了什么?

0 投票
1 回答
866 浏览

android - 当且仅当夜间模式打开时,屏幕旋转更改时重新创建活动

我有这个Activity(子类AppCompatActivity):

现在,当我在正常(即“日”)模式下旋转手机时,我接到了电话,onConfigurationChangedActivity没有重新创建。

但是,当应用程序设置为夜间模式(通过在创建之前调用AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)我的)然后我旋转手机时,我首先接到电话但随后也重新创建!当我添加到应该在 my 中忽略的时,这就会消失,但我需要这样做似乎很奇怪。ApplicationActivityonConfigurationChangedActivityuiModeuiModeconfigChangesAndroidManifest.xml

通过查看源代码似乎:

  • onConfigurationChanged打电话getDelegate().onConfigurationChanged(newConfig);AppCompatDelegateImpl.onConfigurationChanged(newConfig)
  • 在那里,applyDayNight()被调用
  • 在那里,getNightMode返回AppCompatDelegateImpl.MODE_NIGHT_YES,这是有道理的,因为这是我设置的。mapNightMode只是返回该值不变。然后updateForNightMode(AppCompatDelegateImpl.MODE_NIGHT_YES)被调用
  • 在那里,newNightMode正确计算为Configuration.UI_MODE_NIGHT_YES currentNightMode(从 中读取mContext.getResources().getConfiguration().uiMode)总是出现Configuration.UI_MODE_NIGHT_NO在每次旋转之后,即使在旋转之前Activity在夜间模式下渲染也是如此。

那么,这里发生了什么,我可以做些什么来获得更一致的行为?Activity(无论应用程序是否处于夜间模式,在屏幕旋转后重新创建(或不) 。)

0 投票
1 回答
2336 浏览

android - 如何使用 setLocalNightMode() 在每个活动中启用 MODE_NIGHT_YES?

我最近想创建一个设置,在我的 android 应用程序中启用夜间模式,我在互联网上搜索并找到了一个很好的解决方案,其中包含 AppCompatDelegate 的 DayNight 主题和一个简短的代码片段......:

...为我的 MainActivity 启用暗模式(如果在我的应用设置中启用)。它工作得很好,并在“DarkMode”中改变了我的 MainActivity!但是,如果我打开另一个活动,这不会像主活动那样以暗模式出现,但是如果我将上面的代码行添加到这个新活动,它也会以暗模式开始。所以我的问题:

我是否必须在每个活动中调用此代码行,或者有没有办法为我的应用程序中的任何活动设置全局夜间模式?

更新

我刚刚在 super.onCreate() 和 setContentView() 方法之前在一个新活动中调用了代码 baove,并且我的整个应用程序主题发生了变化。但是,如果我在 MainActivity 中调用它,我的 MainActivity 的主题就会发生变化......这真的很奇怪。我可以在 MainActivity 中更改整个主题吗?

提前谢谢你!

0 投票
1 回答
312 浏览

android - SwitchPreference 无法正常工作 - 为什么会这样?

我在我的偏好活动中使用 Switch Preference 来更改应用程序主题,但它无法正常工作。我不知道我在做什么错这是我的代码

这是我的 prefs.xml

这是我的设置活动

这就是我在 MainActivity.java 中所做的事情

我打电话给 setNightMode(); 在创建和恢复之前

0 投票
1 回答
1446 浏览

android - 哪个android文件夹到夜间模式的资源,v21+?可绘制的夜晚-v21?

我知道我可以为某些 Android 版本 + 夜间模式添加资源。

但是 API 21+ 的夜间模式资源文件夹的名称是什么?

drawable-night-v21?

0 投票
2 回答
690 浏览

android - 更改不适用于所有活动

我在我的应用程序中实现了夜间模式。用户可以在个人资料活动中更改夜间模式设置。活动顺序如下。

TabbedActivity>>DisplayActivity,ProfileActivity

更改的设置仅适用于当前活动。(即个人资料活动)。如果用户按下后退按钮,则更改不会应用于该活动。任何人都可以帮我将更改应用于所有活动。当我们关闭应用程序并再次打开时.changes 已应用。但后按不起作用。

这是我正在使用的代码。

}

0 投票
1 回答
2173 浏览

android - 是否可以在 Android 上设置启动画面的夜间预选赛?

背景

我知道 Android Q 上有一个新功能最终支持深色主题(在这里写了关于检测它)。

我也知道有“夜灯”功能(这里)使屏幕变得更黄。

支持手动选择主题是我多年来一直在做的事情(在 Activity 的 onCreate 的第一行代码上简单地使用setTheme),但我想知道是否有自动的东西可以让我在应用程序真正启动之前设置它,在启动画面中。

问题

似乎一个非常古老的功能(从 API 8 开始!)在 Android 上已经存在了很长时间,在资源中有“夜间”限定符,我什至从未尝试过。

可悲的是,因为“黑暗主题”和与夜间相关的东西现在更多地被称为新功能(例如这里),所以我找不到旧功能的全部内容。

但是,查看一些文章和文档,它似乎几乎完全是手动的:

我试过的

我尝试相应地设置各种主题:

res/drawable/splash.xml

res/drawable-v29/splash.xml

res/drawable-night/splash.xml

显现

res/values/themes.xml

res/values-v26/themes.xml

我试图删除android:windowBackgroundand android:windowSplashscreenContent,试图查看它是否是自动的,但它没有帮助。

问题

基本上我只想知道夜间模式以及是否可以将其用于启动画面:

  1. Android支持这么久的“夜间模式”什么时候开始?

  2. 它是操作系统全局模式吗?用户控制它吗?

  3. 是自动的吗?还是完全由当前应用手动操作?

  4. 即使我通过应用程序手动设置并且应用程序被杀死,该模式是否会保留?

  5. 是否可以将应用程序的主题(即启动画面)设置为使用它,以便在启用夜间模式时,它会使用它来获得深色背景?

  6. 我的代码对此是否正确?

0 投票
1 回答
410 浏览

android - 通过代码在 Android 中切换夜灯模式

是否可以在 Android 中激活夜灯模式?我正在开发一个自动化应用程序,根据用户条件,我需要激活夜间模式。它的调用方式因供应商而异(同样,Android 不是很标准),例如蓝色过滤器或阅读模式。我还没有在网上找到任何地方来编码这个。

我看到了这个链接,但我不明白。我需要一个这样的功能:

0 投票
6 回答
19903 浏览

android - 让 Android 上的 WebView 使用 prefers-color-scheme: dark

我有一个使用 webview 的 Android 应用程序,最近我试图弄清楚如何通过使用新的@media (prefers-color-scheme: dark)CSS 语法来添加深色主题。我在我的页面上写了正确的 CSS,如果我在 Chrome 中打开它并打开 Chrome 的暗模式,它就可以工作。我也有我的AppTheme继承Theme.AppCompat.DayNight,当我为设备上的整个操作系统打开暗模式时,我的应用程序会显示暗加载对话框等。甚至元素的自动完成选项也会<input>变暗。但是,我的 webview 加载的网页仍然没有变暗。根据这个页面,webviews 应该支持这个特性,但我就是不能让它工作。我在这里想念什么?

我也刚刚发现在 API 29 中有这个WebSettings.setForceDark()方法;会不会是我要找的东西?我希望找到一个适用于较低 API 级别的解决方案。

顺便说一句,我目前的解决方法是注入这样的 JavaScript 接口:

然后在我的网页中,调用该jsInterface.isNightMode()方法并根据结果动态加载不同的 CSS 文件。它当然可以根据需要对全局暗模式设置做出响应,但我仍然想知道我是否可以prefers-color-scheme工作。

0 投票
2 回答
2515 浏览

html - Android Chrome 中深色模式的主题颜色

在 HTML 中,您可以像这样定义主题颜色:

在 Android Chrome 等移动浏览器上,这将改变地址栏的颜色。但是在使用暗模式时,这个值会被简单地忽略(在撰写本文时)。为此比较以下两个图像,第一个具有(默认)亮模式,第二个具有暗模式

有没有办法为暗模式定义主题颜色?理想情况下有两种不同的颜色——一种用于浅色模式,一种用于深色模式?