我的Android手机是如何决定在浅色或深色主题之间切换闪屏的?

我的Android手机是如何决定在浅色或深色主题之间切换闪屏的?,android,android-studio,xamarin,xamarin.android,Android,Android Studio,Xamarin,Xamarin.android,这是我的应用程序的代码。它能在明暗之间正确切换,但它是如何做到的呢?在《时尚》中,我看不到任何关于“闪屏之夜”的提及,但它似乎被称为“闪屏之夜” splash_activity.cs namespace Test.Droid { [Activity(Label = "test", Theme = "@style/LaunchTheme", MainLauncher = true, NoHistory = true)] public class SplashActivity : A

这是我的应用程序的代码。它能在明暗之间正确切换,但它是如何做到的呢?在《时尚》中,我看不到任何关于“闪屏之夜”的提及,但它似乎被称为“闪屏之夜”

splash_activity.cs

namespace Test.Droid
{
    [Activity(Label = "test", Theme = "@style/LaunchTheme", MainLauncher = true, NoHistory = true)]
    public class SplashActivity : Activity
values文件夹中的mainThemeStyle.xaml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="launcher_background">#000000</color>

    <style name="MainTheme" parent="MainTheme.Base">
        <item name="android:textAllCaps">false</item>
    </style>

    <style name="MainTheme.Base" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="windowNoTitle">true</item>
        <item name="windowActionBar">false</item>
        <item name="windowActionModeOverlay">true</item>
        <item name="elevation">0dp</item>
    </style>

    <style name="MainTheme.Splash" parent ="Theme.AppCompat.Light.NoActionBar">
        <item name="android:windowBackground">@drawable/splash_screen</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowFullscreen">true</item>
        <item name="android:navigationBarColor">#ffffff</item>
    </style>

    <style name="LaunchTheme" parent="MainTheme">
        <item name="android:windowBackground">@drawable/splash_screen</item>
        <item name="android:navigationBarColor">#ffffff</item>
    </style>
</resources>

#000000
假的
真的
假的
真的
0dp
@可拉伸/飞溅屏幕
真的
真的
#ffffff
@可拉伸/飞溅屏幕
#ffffff
values-night文件夹中的styles.xaml

<?xml version="1.0" encoding="UTF-8" ?>
<resources>
    <style name="LaunchTheme" parent="Theme.AppCompat">
        <item name="android:windowBackground">@drawable/splash_screen_night</item>
        <item name="android:navigationBarColor">#000000</item>
    </style>
</resources>
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@android:color/white"/>
    <item>
        <bitmap android:src="@drawable/splash_logo"
                android:tileMode="disabled"
                android:gravity="center"
                android:layout_gravity="center"/>
    </item>
</layer-list>
<?xml version="1.0" encoding="UTF-8" ?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@android:color/black"/>
    <item>
        <bitmap android:src="@drawable/splash_logo"
                android:tileMode="disabled"
                android:gravity="center"
                android:layout_gravity="center"/>
    </item>
</layer-list>

@可抽出式/飞溅式屏幕
#000000
可绘图文件夹中的splash_screen.xaml

<?xml version="1.0" encoding="UTF-8" ?>
<resources>
    <style name="LaunchTheme" parent="Theme.AppCompat">
        <item name="android:windowBackground">@drawable/splash_screen_night</item>
        <item name="android:navigationBarColor">#000000</item>
    </style>
</resources>
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@android:color/white"/>
    <item>
        <bitmap android:src="@drawable/splash_logo"
                android:tileMode="disabled"
                android:gravity="center"
                android:layout_gravity="center"/>
    </item>
</layer-list>
<?xml version="1.0" encoding="UTF-8" ?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@android:color/black"/>
    <item>
        <bitmap android:src="@drawable/splash_logo"
                android:tileMode="disabled"
                android:gravity="center"
                android:layout_gravity="center"/>
    </item>
</layer-list>

可绘图文件夹中的splash\u screen\u night.xaml

<?xml version="1.0" encoding="UTF-8" ?>
<resources>
    <style name="LaunchTheme" parent="Theme.AppCompat">
        <item name="android:windowBackground">@drawable/splash_screen_night</item>
        <item name="android:navigationBarColor">#000000</item>
    </style>
</resources>
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@android:color/white"/>
    <item>
        <bitmap android:src="@drawable/splash_logo"
                android:tileMode="disabled"
                android:gravity="center"
                android:layout_gravity="center"/>
    </item>
</layer-list>
<?xml version="1.0" encoding="UTF-8" ?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@android:color/black"/>
    <item>
        <bitmap android:src="@drawable/splash_logo"
                android:tileMode="disabled"
                android:gravity="center"
                android:layout_gravity="center"/>
    </item>
</layer-list>

androidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="000401" android:versionName="0.4.2 beta 3" package="com.test.test">
    <uses-sdk android:minSdkVersion="24" android:targetSdkVersion="28" />
    <application android:icon="@mipmap/ic_launcher" android:label="Test"></application>
</manifest>

通常是我们在
清单中提到的主题名称。查看清单文件

有两个选项,可以在
app
属性中添加主题以应用每个屏幕的主题,也可以在每个屏幕的活动中添加主题




我刚刚在问题中添加了该文件的副本。我看不出有任何选项。你能看看我刚才添加的内容和建议吗。Thanks@Alan2添加的清单代码似乎不正确。查找提到活动的文件。app->src->main->Hi,我刚刚在问题中添加了splash活动文件。看起来它调用了LaunchTheme。但我有两个,所以我想知道它是如何决定使用哪一个的。请注意,该代码确实工作正常。我只是想知道为什么它会起作用。它是否知道在黑暗模式下使用values night文件夹,或者这是它工作的另一个原因。@Alan2“其中两个”是什么意思?