So fügen Sie ein dunkles Thema in Ihre Android-App ein

Für Entwickler ist das Erstellen einer Android-App ein einfacher Prozess - das Entwerfen einer ansprechenden Benutzeroberfläche ist tatsächlich schwierig. Aus diesem Grund haben wir den Leitfaden „So gestalten Sie eine Android-App-Benutzeroberfläche, die nicht schadet“ für Entwickler geschrieben, die Inspiration für die Erstellung einfacher, aber ansprechender Benutzeroberflächen benötigen. In diesem Handbuch haben wir kurz erwähnt, wie Sie Ihren Apps ein Thema für den Dunkel- / Nachtmodus hinzufügen. In diesem Handbuch werden wir Sie durch dieses Thema führen.

Das Hinzufügen eines Designs für den Dunkel- / Nachtmodus zu Ihrer App kann eine großartige Option für Ihre Benutzer sein - dies spart Batterielebensdauer und schont die Augen bei Nacht erheblich. Ein weißer Hintergrund auf schwarzem Text oder eine Kombination von „hellen“ Farben in Ihrer Benutzeroberfläche belastet die Augen besonders nachts. Ein dunkler Hintergrund mit hellerem Text ist daher viel weniger stressig und schädlich für die Augen. Aus diesem Grund haben viele beliebte Apps ein dunkles Thema eingeführt - YouTube und Reddit in letzter Zeit, obwohl Facebook das Thema noch nicht veröffentlicht hat, nachdem es bereits angekündigt wurde Kann.

Wenn Sie Ihrer Android-App auf einfache Weise einen umschaltbaren Dunkelmodus hinzufügen möchten, lesen Sie diese Anleitung und kommentieren Sie, wenn Sie auf Probleme stoßen!

Erstellen der XML-Attribute

Zuerst müssen Sie eine XML-Attributdatei erstellen, die die Themen behandelt. Dies ist weitaus besser, als zwei Ressourcensätze für zwei verschiedene Themen in Ihr APK aufzunehmen und damit die Größe Ihres APKs zu erhöhen, da Android die Farben von Attributen über dieses XML-Format von Haus aus ändern kann.

Erstellen Sie daher im Ordner "resources" Ihrer App eine Datei mit dem Namen attrs.xml und fügen Sie die folgenden Zeilen hinzu ( dies sind anpassbare Attribute):

Vor Lollipop konnten wir keine Attribute für Drawables angeben, daher mussten wir die Ressourcen-IDs für Drawables angeben - dies ist jedoch nicht mehr der Fall.

Hinzufügen der Stile

Damit dies funktioniert, müssen zwei separate Stile erstellt werden, die dieselbe Basis haben. Das erste wird offensichtlich Ihr primäres "helles" Thema sein, und das zweite wird Ihr "dunkles" Thema sein.

 # F4F4F6 # 96F4F4F6 #FFFF # F2F2F3 @ drawable / i_light_plholder # 33343B / item> # 8033343B # 28292e # F2F2F3 @ drawable / i_dark_pholder 

Hier sind die aktuellen Stile für eine bestimmte Aktivität:

 # F4F4F6 # 33343B 

Sie müssen eines dieser Themen im Manifest für die Aktivität der App angeben, in diesem Fall FeedActivity.

Ansichten stilisieren

Hier ist ein Beispiel für die Stilisierung Ihrer Ansichten. In diesem Beispiel handelt es sich um einen Umleitungsfehler "Seite nicht gefunden".

So aktivieren Sie die dynamische Themenumschaltung

Die beste und effizienteste Methode zum Aktivieren der dynamischen Themenumschaltung ist das Laden des SharedPreference-Werts, der zum Speichern der Einstellung in der Anwendungsinstanz mithilfe des Singleton-Musters verwendet wird. Dies bedeutet, dass wir dies nicht zu Beginn jeder Aktivität tun müssen.

 public class App erweitert Application {public static final String TAG = "App"; private boolean isNightModeEnabled = false; @Override public void onCreate () {super.onCreate (); // Hier wird der Nachtmodusstatus geladen. SharedPreferences mPrefs = PreferenceManager.getDefaultSharedPreferences (this); this.isNightModeEnabled = mPrefs.getBoolean ("NIGHT_MODE", false); } public boolean isNightModeEnabled () {return isNightModeEnabled; } public void setIsNightModeEnabled (boolescher Wert isNightModeEnabled) {this.isNightModeEnabled = isNightModeEnabled; }} 

Da diese Instanz vor allen anderen Elementen gestartet wird, können Sie isNightModeEnabled () Boolean aufrufen, wann immer Sie möchten, und zwar in allen Aktivitäten, die zu der App gehören, nachdem sie geöffnet wurde.

 öffentliche letzte Klasse FeedActivity erweitert AppCompatActivity {private letzte statische Zeichenfolge TAG = “FeedActivity”; @Override protected void onCreate (Bundle savedInstanceState) {if (MyApplication.getInstance (). IsNightModeEnabled ()) {setTheme (R.style.FeedActivityThemeDark); } super.onCreate (savedInstanceState); setContentView (R.layout.activity_feed); }} 

Wenn Sie jedoch ein anderes Design als das in der Manifestdatei angegebene anwenden möchten, muss dies vor dem Aufrufen der übergeordneten onCreate () -Methode erfolgen.

Festlegen des Status mit AppCompat

AppCompat ist wirklich nützlich für eine Vielzahl von Dingen, und in diesem Fall werden wir es verwenden, um den Modusstatus festzulegen. Dies bedeutet, dass Sie die App-Instanz nicht mehr verwenden müssen, um einen zwischengespeicherten Status zu erstellen, wodurch der Cache der App aufgebläht wird ( wenn auch nur um einen winzigen Rand ).

 AppCompatDelegate .setDefaultNightMode (AppCompatDelegate.MODE_NIGHT_YES); 

Hier können Sie entweder verwenden:

  • AppCompatDelegate.MODE_NIGHT_YES

    AppCompatDelegate.MODE_NIGHT_NO

    AppCompatDelegate.MODE_NIGHT_AUTO

Den Zustand abrufen

 AppCompatDelegate.getDefaultNightMode (); öffentliche letzte Klasse FeedActivity erweitert AppCompatActivity {private letzte statische Zeichenfolge TAG = “FeedActivity”; @Override protected void onCreate (Bundle savedInstanceState) {if (AppCompatDelegate.getDefaultNightMode () == AppCompatDelegate.MODE_NIGHT_YES) {setTheme (R.style.FeedActivityThemeDark); } super.onCreate (savedInstanceState); setContentView (R.layout.activity_feed); }} 

Das sollte es auch sein - Sie können die Werte weiterhin nach Ihren Wünschen anpassen und anpassen, aber diese Anleitung ist eine großartige Einführung, um Ihnen den Einstieg in die Integration eines nativen dunklen Themas in Ihre Android-App zu erleichtern.

Interessante Artikel