Apps für Android programmieren leicht gemacht!
Theme an Android Version anpassen

Theme an Android Version anpassen

Von Android Version zu Android Version ändern sich ständig Dinge, die den Anwender betreffen, aber auch Dinge die die Programmierung anbelangen.
Manchmal verzahnen diese beiden Dinge auch in einander. In diesem speziellen Fall wollen wir in diesem Artikel ansprechen wie wir das Design unserer App dynamisch an die Android Version anpassen können.

Wie euch bereits aufgefallen sein sollte, sofern ihr Android schon etwas länger nutzt, ändert sich von Zeit zu Zeit einmal das Design von Android und unsere Aufgabe als Programmierer muss es sein unsere Apps an diese Design’s anzupassen. Genau in diesem Terminus steckt nun also unser Problem, bei dieser Aufgabe. Es gibt mehrere Design’s. Also wie zwischen Android Versionen und Design Versionen unterscheiden ?

 

Als ich vor kurzem mit der Programmierung einer neuen App angefangen habe und diese dann auf einem Handy mit Android 5.0 ausgeführt habe war ich erschrocken. Ich hatte das alte Design noch am Laufen, trotz der neuesten Android Version.
Also suchte ich. Die App wurde unter der Api-Version 21 kompiliert, also für Android 5.0. Es schien alles richtig.
Erst bei dem Blick in die style.xl Datei fiel mir auf, dass ich weiterhin das Design „android:Theme.Holo“ nutzte. Also änderte ich das Design in „android:Theme.Holo.Material“ und schwups hatte ich auf meinem Galaxy S5 das neue Design, aber auf meinen älteren Geräten stürzte die App nun beim Starten der App ab.
Also wie sollte ich nun das Theme an die Android Version Anpassen?

 

Und genau hier soll unser Artikel nun einsteigen, das anpassen des Theme an die Android Version ist nämlich denkbar einfach, muss aber eigenhändig programmiert werden.

Bevor wir nun allerdings anfangen das Theme anzupassen wollten wir uns über die verschiedenen Versionen im Klaren sein.
Von der Android Version 1 – 2.3.7 wurde standardgemäß das Theme „android:Theme“ genutzt. (API 1 – 10)
Von der Android Version 3.0 – 4.4.4 wurde standardgemäß das Theme „android:Theme.Holo“ genutzt. (API 11 – 20)
Von der Android Version 5.0 und aufwärts wird standardgemäß das Theme „android:Theme.Material“ genutzt. (API 21+ )

Nun wissen wir schon einmal im Voraus welches Theme wir als Standart für unsere App nutzen sollten, um das neuste Design verwenden zu können.
Nun müssen wir noch versuchen dieses Design auch im Programmcode zu verwenden.

 

Dieser Vorgang ist denkbar einfach (wie am Anfang bereits angesprochen) und beruht einfach auf der verschiedenen Benennung der style.xml Dateien.

 

Wir gehen jetzt nun also in den Ordner res/ und erstellen wie folgt die Dateien und Unterordner „values/styles.xml“, „values-v11/styles.xml“ und die Datei „values-v21/styles.xml“.
Dies hat folgende Gründe:

  • Android nutzt Standartgemäß die Datei „styles.xml“ im Ordner „values“, dort definieren wir das Theme „android:Theme“.
  • Wenn wir eine weitere Datei und einen weiteren Ordner hinzufügen, die den Namen „values-v11/styles.xml“ trägt nutzt Android diese Style-Datei, wenn die API-Version von Android höher ist als 11. (Android 3.0 und mehr trägt die API-Version von 11 und mehr)
  • Wenn wir eine dritte Datei und einen dritten Ordner hinzufügen, die den Namen „values-v21/styles.xml“ trägt nutzt Android diese Style-Datei, wenn die API-Version von Android höher ist als 21. (Android 5.0 und mehr trägt die API-Version von 21 und mehr)

 

Damit nutzt Android als Design dann die Datei styles.xml, es sei denn die API-Version ist größer als 11, dann nutzt Android die Datei „styles.xml“ aus dem Ordner „values-v8“.
Durch dieses Prinzip könnten wir rein theoretisch für jede neue Android Version ein neues Design verwenden.
Wir nutzen jetzt allerdings nur drei Dateien, weil es drei größere Designänderungen gegeben hat.

Die drei Dateien „values/styles.xml“, „values-v11/styles.xml“ und „values-v21/styles.xml“ sehen wie folgt aus:

<!-- values/styles.xml -->
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="AppTheme" parent="android:Theme.Light">
    </style>
</resources>
<!-- values-v11/styles.xml -->
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="AppTheme" parent="android:Theme.Holo.Light">
    </style>
</resources>
<!-- values-v21/styles.xml -->
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="AppTheme" parent="android:Theme.Material.Light">
    </style>
</resources>

Marvin

Ich bin 23 Jahre jung und studiere zurzeit Wirtschaftsinformatik an der Georg-August-Universität in Göttingen. Ich bin ein Mensch, der sich neben der Programmierung noch für tausend andere Dinge interessiert, die mal mehr und mal weniger verrückt sind. Vor allem aber bin ich Feuer und Flamme mit der Programmierung von eigenen kleinen Apps und Programmen, die mein Leben bereichern.

Kommentar hinzufügen

*Pflichtfeld