[JAVA] [Android] Wie man mit dunklen Themen umgeht

Einführung

In diesem Abschnitt wird beschrieben, wie Sie das dunkle Thema (dunkler Modus) unterstützen, das von Android 10 auf der Anwendungsseite vollständig unterstützt wird.

Ressourcenerstellung

res/values/styles.xml Aktualisieren Sie zunächst die Datei styles.xml, die auch für die normale Anpassung von Designs verwendet wird, und definieren Sie die Farbe, die Sie wechseln möchten, wenn der Dunkelmodus EIN / AUS ist.

<resources>
    <style name="AppTheme" parent="Theme.MaterialComponents.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:colorBackground">@color/colorBackground</item>
        <item name="android:textColor">@color/textColor</item>
        <item name="android:textColorPrimary">@color/textColorPrimary</item>
        <item name="android:textColorSecondary">@color/textColorSecondary</item>
    </style>
</resources>

Farben.xml erstellen

Beschreiben Sie die Farbdefinition, auf die verwiesen wird, wenn der Dunkelmodus in den Systemeinstellungen in res / values-night / farben.xml aktiviert ist, und die normale Farbe in res / values / color.xml.

Beispiel) res / values-night / colours.xml

<resources>
    <color name="colorPrimary">#212121</color>
    <color name="colorPrimaryDark">#212121</color>
    <color name="colorAccent">#80cbc4</color>
    <color name="colorTransparent">#00000000</color>
    <color name="textColor">#FFFFFF</color>
    <color name="textColorPrimary">#FFFFFF</color>
    <color name="textColorSecondary">#808080</color>
    <color name="colorBackground">#313131</color>
    <color name="colorCardBackground">@color/colorPrimary</color>
    <color name="colorBackgroundBottomAppBar">#353535</color>
</resources>

Wenn Sie bis zu diesem Punkt unterstützen, wechselt die Anzeige gemäß den Systemeinstellungen, ohne Code zu schreiben.

Wenn Sie mit In-App-Einstellungen dynamisch wechseln möchten

Verwenden Sie AppCompatDelegate.setDefaultNightMode, um auf die gesamte App anzuwenden.

Wird immer mit einem dunklen Thema angezeigt

AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES); //Gilt für die gesamte App
AppCompatDelegate.setLocalNightMode(MODE_NIGHT_YES);   //Gilt nur für bestimmte Aktivitäten

Immer dunkles Thema AUS (normale Anzeige)

AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_NO); //Gilt für die gesamte App
AppCompatDelegate.setLocalNightMode(MODE_NIGHT_NO);  //Gilt nur für bestimmte Aktivitäten

Verknüpft mit Systemeinstellungen (dies ist die Standardeinstellung, sofern nicht anders angegeben)

AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_FOLLOW_SYSTEM); //Gilt für die gesamte App
AppCompatDelegate.setLocalNightMode(MODE_NIGHT_FOLLOW_SYSTEM);   //Gilt nur für bestimmte Aktivitäten

Recommended Posts

[Android] Wie man mit dunklen Themen umgeht
Der Umgang mit dem Vorkompilieren von Assets ist fehlgeschlagen.
Android: Umgang mit "Java-Version von '10 .0.1 'konnte nicht ermittelt werden"
Diätprogramm mit Präprozessor (Umgang mit der Größe von i-appli)
Umgang mit Keine Vorlage für interaktive Anfragen
[Docker-Umgebung] Umgang mit ActiveSupport :: MessageEncryptor :: InvalidMessage
Wie man mit html.erb nummeriert (nummeriert)
[Rails] Umgang mit URL-Änderungen nach dem Rendern
So aktualisieren Sie mit activerecord-import
So machen Sie einen Screenshot mit dem Android Studio-Emulator
So erhalten Sie Werte in Echtzeit mit TextWatcher (Android)
So erstellen Sie eine App mit Tensorflow mit Android Studio
Umgang mit dem Fehler FEHLER: Während der Ausführung von gem ... (Gem :: FilePermissionError)
Umgang mit Bundler :: Dsl :: DSLError durch Umschreiben von gemfile
So entfernen Sie Android-Apps, die mit dem RenderThread-Rätselfehler abstürzen
Umgang mit verschiedenen Versionen von rbenv und Ruby
Wie fange ich mit schlank an?
Wie man eine Ansicht auf Android "aushöhlt"
Wie man ein Zeichen mit "~" einschließt
Wie man mssql-tools mit alpine benutzt
[Android] So erstellen Sie ein Dialogfragment
So starten Sie Camunda mit Docker
[Rails / RSpec] Der Umgang mit Elementen weist einen Größenfehler von Null auf
Projektfacette Java Version 13 wird nicht unterstützt. Wie man damit umgeht
Android: Umgang mit "Ursache: android.support.transition.R $ id 2 kann nicht gefunden werden: android.support.transition.R $ id in android / support / Transition / R $ id 2. Klasse gefunden"
So beschneiden Sie ein Bild in libGDX
So passen Sie TextPosition mit der iOS-Tastaturerweiterung an
So teilen Sie Dateien mit Docker Toolbox
So kompilieren Sie Java mit VsCode & Ant
[Java] Fassen Sie zusammen, wie Sie mit der Methode equals vergleichen können
Verwendung von BootStrap mit Play Framework
So erkennen Sie Mikrofonkonflikte unter Android
So wechseln Sie Miniaturbilder mit JavaScript
[Hinweis] Erste Schritte mit Rspec
API-basierte Steuerung mit cancancan
So erreichen Sie den Dateidownload mit Feign
So aktualisieren Sie verwandte Modelle mit accept_nested_attributes_for
So setzen Sie JAVA_HOME mit dem Appassembler-Maven-Plugin von Maven
So implementieren Sie TextInputLayout mit Validierungsfunktion
So behandeln Sie Anmeldefehler mit devise
So löschen Sie Daten mit einem externen Schlüssel
So testen Sie den privaten Bereich mit JUnit
So überwachen Sie Nginx mit Docker-Compose mit Datadog
So erreichen Sie das Hochladen von Dateien mit Feign
So führen Sie Blazor (C #) mit Docker aus
So erstellen Sie eine Rails 6-Umgebung mit Docker
Verwendung von ExpandableListView in Android Studio
Java8 / 9-Anfänger: Streamen Sie API-Suchtpunkte und wie Sie damit umgehen
Herausforderung, mit verstümmelten Zeichen mit Java AudioSystem.getMixerInfo () umzugehen
Die Geschichte, dass der Umgang mit alten Daten ärgerlich ist
[Java] So testen Sie, ob es in JUnit null ist
Wie man jeden Fall mit Mockito 1x verspottet
Wie man jeden Fall mit PowerMock + Mockito1x verspottet