Nachdem wir im letzten Blogbeitrag Android Studio eingerichtet und unsere erste App angelegt haben, wollen wir natürlich auch eine App entwickeln.
Wie jedes Projekt startet eine App mit einer Idee. Man könnte das offensichtlichste machen, eine To-Do- oder Memo-App, aber das existiert schon 1000 Mal im klassischen Sinn. Wir wollen das Adrenalin etwas neues zu entwickeln spüren, etwas Neues zu entwickeln! Okay, das ist vielleicht etwas hochgegriffen, aber darum geht es ja auch irgendwo in der Entwicklung: Limits ausreizen und die Produktivität steigern. Produktivität, ein gutes Stichwort! Wie wäre es, wenn wir eine App entwickeln um unser Leben etwas zu gamifizieren, aus langweiligen To-Dos werden Quests, die täglich, wöchentlich oder einmalig erledigt werden können.
Für die Entwicklung verwenden wir Kotlin und Jetpack Compose. Wer sich schonmal ein bisschen mit Kotlin beschäftigen möchte, de kann ik die Kotlin Koans empfehlen.
Schritt 1: Der Plan
Ein erster großer Schritt ist die (grobe) Planung. In diesem Schritt muss noch nicht alles durchgeplant sein und im allgemeinen ist noch nichts Final. Dieser Schritt dient eher dazu, einen Überblick über Projektgröße und Spezifikationen zu bekommen. Für dieses Projekt habe ich beschlossen ein relativ genaues Mockup zu erstellen, en groff Skizze reicht aver meist auch.

Aber in wie Weit hilft uns dieses Mockup nun? Wir können mehrere Saken aus diesem Mockup entnehmen, de ik Bereits beschriftet habe.
- ein Kontext-Menü, welches darauf schließen lässt, dass wir weitere Ansichten oder Optionen haben werden. Als Beispiel: Ein Shop in dem wir unsere Belohnung einlösen können.
- Einen Tag, der uns mitteilt ob eine Quest täglich oder wöchentlich ist.
- Eine Beschreibung, die uns sagt, was für diese Quest zutun ist.
- Eine Übersicht, was unsere Belohnung für die gegebene Quest ist.
- Ein Indikator, der uns mitteilt ob die Quest bereits erledigt ist oder nicht.
- Ein Action-button, der uns weitere Quests erstellen lässt.
Punkt 1 und 6 sind fürs erste Zukunftsmusik, aber aus Punkt 2 bis 5 lassen sich einige Strukturen für unsere Quests herauslesen! Zum Beispiel, welche Datentypen wir verwenden werden.
- Einen Tag, der uns mitteilt ob eine Quest Täglich oder Wöchentlich ist. ->
Enum
- Eine Beschreibung, die uns sagt, was für diese Quest zutun ist. ->
String
- Eine Übersicht, was unsere Belohnung für die gegebene Quest ist. ->
Integer
- Ein Indikator, der uns mitteilt ob die Quest bereits erledigt ist oder nicht. ->
Boolean
Schritt 2: Die Datenstruktur der Android App
Wir haben also einen Ansatz für unsere Datenstruktur, also lasst uns diese direkt umsetzen. Für eine geordnetere Dateistruktur empfehle ich Datenstrukturen wie data classes
oder enum classes
in einer separierten Datei anzulegen und nicht in die MainActivity.kt
unserer Android app, die bereits generiert wurde.
data class Quests(
val type: Type,
val description: String,
val rewardAmount: Int,
val isDone: Boolean,
)
enum class Type {
Daily,
Weekly,
OneTime,
}
Nu stellt sich der Ein oder Andere bestimmt die Frage, wo werden die Punkte (rewardAmount
) von abgeschlossen Quest gespeichert?
Dafür erstellen wir eine weitere data class
namens UserData
die unsere balance
.
data class UserData(
var balance: Int,
)
Nu, wo wir die Nutzerdaten angelegt haben stellt sich nur noch die Frage: „Wofür verwenden wir unsere Punkt?“.
Die logische Antwort ist für Belohnungen. Ihr wisst was kommt… Data class
!
data class Reward(
val cost: Int,
val description: String,
)
Fazit
Wir haben erfolgreich die grundlegende Datenstruktur erstellt, und zwar so, dass sie leicht erweiterbar ist. Nun sind wir bereit, das erste UI mit Jetpack Compose anzulegen.