1
TArysiyehua 2023-07-17 10:34:32 +08:00
高版本的 android 页是系统自带的,如果是那个页面的话要改就比较麻烦,如果是自己的启动也,在 attach 的时候用代码修改 context 与主题即可
|
2
Danmen123 OP @TArysiyehua 是 MainActivity 的 `onAttachedToWindow` 方法吗? 怎么修改 context 的主题呢?不是很理解,求大佬指教
|
3
TArysiyehua 2023-07-17 11:15:48 +08:00
@Danmen123 不是这个,另外看你的暗黑模式是怎么实现的丫,丢给 demo 出来,光说这些没啥用
|
4
tromoli 2023-07-17 12:05:12 +08:00
主要得看深色模式是怎么实现的,是否在 values-night 中也设置了对应的深色模式启动页 theme
|
5
Danmen123 OP @TArysiyehua 我在偏好设置里面存了一个属性来判断用户是否启动了深色模式,应用启动的时候,我会根据这个属性来加载对应的浅色和深色的皮肤资源。没有用到任何系统给的属性。
我目前遇到的这个问题,按照我的理解,跟我应用深色和浅色如何实现没有任何关系。我的需求是,如何在手机系统处于浅色模式的情况下,我的启动页(theme:windowBackground)加载的是`values-night`里面的`theme`资源,而不是直接使用的`values`里面 theme 的资源 |
6
Danmen123 OP @tromoli 我这里是使用的 android:windowBackground 设置的图片作为启动页,我在 values 和 values-night 里面分别设置了两个不同的图片资源(浅色和深色的图片 drawable )
|
7
Danmen123 OP xxx/values/themes 中的设置:
<style name="Theme.XXXX" parent="android:Theme.Material.NoActionBar"> ... // 这里使用的是浅色模式下的图片资源 <item name="android:windowBackground">@drawable/launch_background_light</item> </style> xxx/values/themes-night 中的设置: <style name="Theme.XXXX" parent="android:Theme.Material.NoActionBar"> ... // 这里使用的是深色模式下的图片资源 <item name="android:windowBackground">@drawable/launch_background_dark</item> </style> 应用中深色模式的实现: 根据偏好设置中自己添加的一个属性 isDark 来判断是否是深色模式,如果是的话,则加载深色皮肤的 json 配置文件,然后应用到所有 View 组件中。 目前应用启动之后,显示的状况为: 1. 手机系统是浅色模式,app 也是浅色模式,应用启动之后,启动页(浅色) -> MainActivity (显示浅色皮肤我), 这是 OK 的情况 2. 手机系统是深色模式,app 也是深色模式,应用启动之后,启动页(深色) -> MainActivity (显示深色皮肤), 这是 OK 的情况 3. 手机系统是浅色模式,app 是深色模式,应用启动之后,启动页(浅色) -> MainActivity (显示深色皮肤), 这是有问题的,我希望启动页是深色的,同 activity 的皮肤保持一致 4. 手机系统是深色模式,app 是浅色模式,应用启动之后,启动页(深色) -> MainActivity (显示浅色皮肤), 这是有问题的,我希望启动页是浅色的,同 activity 的皮肤保持一致 第三种和第四种情况就是我目前碰到的问题,不知道是否有解决的方案,在 google 上搜了一圈,还没有看到类似的解决方案。 |
8
TArysiyehua 2023-07-17 14:13:48 +08:00
@Danmen123 根据偏好设置中自己添加的一个属性 isDark 来判断是否是深色模式,如果是的话,则加载深色皮肤的 json 配置文件,然后应用到所有 View 组件中
你这个咋实现?应用到 view 过程中是在哪里设置判断的?明显就是 android:windowBackground 使用了系统了配置,你的配置没有操控到它。你具体咋实现不要光说,上具体的代码或者 demo 。 |
9
Danmen123 OP |
10
Danmen123 OP @TArysiyehua 都是在 Activity 的 onCreate 方法中进行皮肤的相关设置操作,这里不管你怎么设置,都是不会影响到启动页的加载流程的。。。老哥,您可能并没有遇到我说的这种问题,或者是不太了解,因为您关注的核心点跑偏了,不过还是很感谢你的热心回复
|
11
TArysiyehua 2023-07-17 14:46:31 +08:00
@Danmen123 那无法控制
|
12
TArysiyehua 2023-07-17 14:48:05 +08:00
@Danmen123 这个就是核心问题呀,主题的确定并不是在 Activity 的 onCreate 方法中,你在这里设置已经完了,系统已经决定用 themes-night 里的资源了。。。
|
13
Danmen123 OP @TArysiyehua 可能我说的主题把你迷惑了,你就忘掉我 app 里面主题的概念,我现在的需求就是,如果在手机系统为浅色模式的情况下,如何设置才可以让 app 在初始加载的时候,使用 values-night 里面的资源
|
14
TArysiyehua 2023-07-17 15:13:44 +08:00
@Danmen123 并没有迷惑我,我解决过这个问题。我已经说的很清楚了,是你自己太执拗,非要用系统自带的资源选择功能又不肯改代码。
1. 首先主有闪屏有问题,因为你闪屏用你的并不是你的这套方案,闪屏使用的系统方案,这个你能理解吧 2. 闪屏的 android:windowBackground 默认就是受到系统主题控制的,所以它就是会选择 night.xml 的资源 3. 你现在非要它不选,那你就改掉闪屏、主题的背景图片,去掉它,自己手动设置闪屏背景图片,而不是用 android:windowBackground ,这样不就解决问题了? |
15
Danmen123 OP @TArysiyehua 是的,您这个回答非常具有参考价值,我对第三点解决方案很感兴趣,应该在哪里进行修改呢?
|
16
RikkaW 2023-07-17 17:48:03 +08:00
别想了,不可能的,启动期间你的代码还没运行呢
|
17
dabbit 2023-07-18 08:40:12 +08:00
|