Android-Apps programmieren

Projektanlage

Mit Android Studio 3.4 wurder der Assistent für die Projektanalge geändert und verschlankt. Es besteht nun aus nur noch zwei Seiten. Einige der in Buch beschriebenen Schritte, können somit nicht mehr direkt im Assistenten durchgeführt werden. Hier erkläre ich, wie man zu einem Zustand nach der Projektanlage gelangt, so dass die weitere Arbeit mit dem Buch möglich ist.

Dieser Abschnitt ersetzt die Seiten 62 - 67 im Buch.

Start der Projektanlage

Auswahl der Vorlagen für neues Projekt
Auswahl der Vorlagen für neues Projekt

Wir beginnen mit der Option Start a new Android Studio project. Daraufhin öffnet sich ein Assistent für die Anlage neuer Android-Projekte. Auf dem ersten Bildschirm erscheint die Auswahl der Vorlagen. Die Vorlagen erzeugen für oft gebrauchte Fälle ein Grundgerüst im Projekt. Viele der Vorlagen erfordern ein bestimmtes Vorwissen, um mit diesem Grundgerüst weiterarbeiten zu können. Da Sie gerade mit der Android-Entwicklung anfangen, verwenden wir die einfachste Vorlage Empty Activity, die kaum Code erzeugt. Sie werden die App praktisch von Grund auf neu aufbauen.

Android App Name
Android App Name

Nach einem Klick auf Next gelangen Sie zu Basisangaben für das Projekt.

Unter »Name« ist der Name der App einzutragen. Dieser Name erscheint im Android-Launcher (App-Übersicht). Der Wert wird als Ressource verwaltet (zu den Ressourcen kommen wir später noch) und ist übersetzbar. Tragen Sie hier den Namen der App in der Hauptsprache ein. In unserem Fall ist es Zeiterfassung. Die Hauptsprache ist bei uns momentan Deutsch.

Jede Android-App sollte einen weltweit eindeutigen Namen haben, damit es zu keinen Konflikten in den App Stores kommt. Es wird empfohlen, als Namen die umgekehrte Schreibweise der eigenen Homepage zu nutzen plus den Namen der App. Im Bild sehen Sie dies unter »Package name« als Zusammenführung aus »Application name« und »Company Domain«. In unserem Fall nutzen wir für den Domain-Namen androidbuch.webducer.de. Aus dieser Angabe ergibt sich der Package-Name de.webducer.androidbuch.zeiterfassung.

Der Grund dafür liegt in den Java-Konventionen. Der Package-Name wird in unserem Java Code auch als Package-Root verwendet. Und die Java-Konventionen schreiben Kleinschreibung ohne Sonderzeichen vor. Die Trennung der Ebenen erfolgt nur durch einen Punkt.

Unter »Save location« kann noch der Speicherort des Projekts angegeben werden, falls Sie Ihr Projekt nicht im Standardverzeichnis speichern wollen.

Als »Language« legen wir Java. Google empfieht mittlerweile Kotlin als die Standardsprache für die Entwicklung von Android Apps.

Unter »Minumum API level« die Laufzeitumgebung der App festgelegt werden. Unter »Minimum SDK« ist zu verstehen, unter welcher Android-Version unsere App noch laufen würde. Android Studio zeigt zur besseren Orientierung auch gleich die Statistik, auf wie viel Prozent der weltweit auf den Google Play Store zugreifenden Geräte unsere App funktionieren würde, wenn wir die ausgewählte als minimale Version nutzen würden. API 21 (Android 5.0) ist jetzt eine sehr gute Wahl, da man mit dieser Version zum Zeitpunkt, als dieses Buch geschrieben wurde, über 85 % der potenziellen Benutzer erreichen würde (wenn Sie dieses Buch lesen, wahrscheinlich sogar mehr).

Android Verteilung
Android Verteilung

Um ein besseres Gespür für die Verbreitung der Versionen zu entwickeln, klicken Sie auf den Link Help me choose, der die Verbreitung der einzelnen Versionen graphisch aufzeigt. Die Angaben sind nicht ganz aktuell, aber nicht weit von der Wahrheit entfernt.

Ein Klick auf die einzelnen Versionen in dieser Übersicht zeigt auch gleichzeitig die Funktionen, die mit dieser Version eingeführt wurden. Zum Beispiel macht API 16 (Android 4.1) gar keinen Sinn, wenn Sie eine App schreiben wollen, die auf Bluetooth Smart (Bluetooth Low Energy) angewiesen ist. Diese Funktionalität wurde erst mit API 18 (Android 4.3) eingeführt.

Aktuelle Statistiken zu Android

Google bereitet Statistiken zur Android-Verbreitung einmal pro Woche auf. Diese basieren auf den Zugriffen auf den Google Play Store. Unter anderem sind Statistiken zu eingesetzten Android-Version, Bildschirm-Auflösungen und Open GL-Versionen verfügbar. Die aktuellen Daten finden Sie unter developer.android.com/about/dashboards/.

Nach einem Klick auf Finish wird das Projekt mit dem Grundgerüst erstellt und geöffnet. Dieser Prozess kann abhängig von der Geschwindigkeit des Rechners (und der Festplatte) einige Zeit in Anspruch nehmen.

Umbenennen der Standarddateien

Activity-Klasse umbenennen
Activity-Klasse umbenennen

Nach der Generieung des Projektes werden automatisch zwei Dateien im Bearbeitungsfenster geöffnet. Das sind:

  • MainActivity.java und
  • activity_main.xml

Auf lange Sicht ist es aber zu empfehlen, einen sprechenderen Namen (Aufgabe des Bildschirms) zu vergeben. Hierbei ist die Konvention so, dass die Klasse, die ein Bildschirm steuert, mit Activity endet und in Camel-Case-Schreibweise definiert wird. Zu unserer App würde zum Beispiel auch der Name TimeTrackingActivity passen, da der erste Bildschirm sich um die Aufzeichnung der Zeit kümmert.

Klicken Sie mit der rechten Maustauste auf den Menüeintrag Refactor | Rename. Nun können Sie den Namen der Klasse anpassen. Nach der Bestätigung mit »Enter«. Wir der Name übernomen.

Umbenennung bestätigen
Umbenennung bestätigen

Da bei Java der Klassenname dem Namen der Datei ensprechen muss, erscheint unten im Android Studio ein Toolfenster für die Bestätigun der Umbenennung. Klicken Sie hier auf Do Refactor.

Activity-Layout umbenennen
Activity-Layout umbenennen

Dasselbe gilt natürlich auch für die korrespondierende Layout-Datei. Nach Konvention werden alle XML-Dateien bei Android kleingeschrieben und durch »_« in logische Teile getrennt. Die Layout-Dateien für Activities fangen mit activity_ an. Somit muss unsere Layoutdatei activity_time_tracking heißen.

Klicken Sie hier wieder mit der rechten Maustaste auf R.layout.activity_main in der Activity-Klasse (das ist ein Verweis auf unsere verbundene Layout-Datei). Benennen Sie activity_main nun in activity_time_tracking um.

Ergebnis der Umbenennung
Ergebnis der Umbenennung

Das Ergebnis solle nun wie in der Abbildung aussehen (vergleichen Sie auch den abgedruckten Code unten).

Sollte bei der Anlage der Punkt »Use androidx.* artifacts« aktiviert und ausgegraut sein, ist es kein Beinbruch. Was es sich damit auf sich hat und wie man es beim Durcharbeiten des Buches beachtet, erkläre ich in der nächsten Korrektur.

package de.webducer.androidbuch.zeiterfassung;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class TimeTrackingActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_time_tracking);
    }
}