Как мой телефон Android решает переключить экран spla sh между светлыми или темными темами? - PullRequest
0 голосов
/ 24 февраля 2020

Вот код, который у меня есть для моего приложения. Он правильно переключается между светом и темнотой, но как это сделать? В стилях я не вижу упоминания о splash_screen_night, и, тем не менее, кажется, что его вызывают.

splash_activity.cs

namespace Test.Droid
{
    [Activity(Label = "test", Theme = "@style/LaunchTheme", MainLauncher = true, NoHistory = true)]
    public class SplashActivity : Activity

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>

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>

splash_screen.xaml в папке для рисования

<?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>

splash_screen_night.xaml в папке для рисования

<?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>

1 Ответ

1 голос
/ 24 февраля 2020

Обычно названия тем мы упоминаем в manifest. Просмотрите файл манифеста.

Существует 2 варианта: добавить тему в атрибут app, чтобы применить тему к каждому экрану, или добавить тему в действие для каждого экрана.

Как

<manifest ... >
    <application android:theme="@style/Theme.AppCompat" ... >
    </application>
</manifest>

Или

<manifest ... >
    <application ... >
        <activity android:theme="@style/Theme.AppCompat.Light" ... >
        </activity>
    </application>
</manifest>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...