Hello Android – erste Aktivität mit GUI

Aller Anfang ist schwer und hat man gerade Eclipse mit allem Zubehör installiert und gestartet, wird man mit einer für viele (Visual Studio verwöhnten wie mich) gewöhnungsbedürftigen IDE konfrontiert. Das Ganze ist aber viel einfacher als man im ersten Moment glaubt.

Ich möchte als Erstes anhand des HelloWorld beispiels den Grundaufbau eines Android Projektes und der GUI einer Aktivität erläutern.

Neues Projekt erstellen

Zum Erstellen eines neuen Android Projektes steht im Menü “File” -> “New” der Eintrag “Android Project” zur Verfügung.

Project Name: der Name des Projektes ohne Leer-/Sonderzeichen

Build Target: die Zieplattform bzw. die zu verwendende API. Mit 1.6 ist man für den Anfang auf der sicheren Seite. Sollte man später doch eine neuere API benötigen, kann man diese nachträglich im Manifest ändern.

Application Name: Der lesbare Name der Anwendung, den auch der Benutzer sieht

Package Name: der Java Paketname sollte mindestens einen Punkt haben. Üblicherweise trägt man hier den Entwicklernamen, Firmennamen, oder die eigene Domain mit ein. Der Name muss eindeutig sein, da Android diesen zur Identifizierung der Anwendung verwendet und darf natürlich weder Sonderzeichen, noch Leerzeichen enthalten.

Create Activity: Erzeugt direkt eine fertige Aktivität, die als Startpunkt für das Programm dient. Diese wird auch im Android Launcher sichtbar.

Mit einem Klick auf “Next” kann man sich noch ein paralleles Testprojekt erstellen lassen. Da dies jedoch für den Anfang nicht notwendig ist, beendet man den Wizard mit “Finish”


Ordnerstruktur

Ein Projekt besteht aus vielen Ordnern und Dateien, die über den Package Explorer durchsucht werden können.

Hier sind die wichtigsten:

src: In diesem Ordner befindet sich der eigentliche Quellcode der Anwendung. Dieser ist nach Paketen und Klassen sortiert. Jede Klassendefinition (Quellcode) muss dabei in einer eigenen *.java Datei gespeichert werden.

res: beinhaltet alle Resourcen, die das Programm benötigt. Dazu gehören Grafiken, und XML Dateien.

AndroidManifest.xml: diese XML Datei beinhaltet alle wichtigen Informationen zu dem Projekt. Neben dem Namen, der API, Kompilieroptionen, usw. werden hier auch alle Aktivitäten und Intents deklariert.

Der Quellcode

In meinem Beispiel habe ich im Wizard “Create Activity” ausgewählt und den Namen “HelloActivity” angegeben. Wie man sieht hat der Wizard die Klasse erzeugt und auch richtig benannt.

Öffnet man die Datei “HelloActivity.java”, so findet man den automatisch vom Wizard erzeugten Quellcode:

package com.sevo.helloandroid;

import android.app.Activity;
import android.os.Bundle;

public class HelloActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}

Dieser Beispielcode ist eigentlich ganz simpel. Hier wird eine Klasse HelloActivity von der Basisklasse Activity abgeleitet und die Methode onCreate überschrieben.

Wie bei einer Ableitung üblich, ruft die Methode onCreate zuerst die gleichnamige Methode der Basisklasse auf, wonach die Anweisung setContentView(R.layout.main) ausgeführt wird.

Damit ist der Quellcode der HelloAndroid App fertig! Die Methode setContentView wird nämlich mit einer Resource parametrisiert. Das R steht dabei für Resources, layout für den Ordner layout und main für die Resource main.xml, die die GUI der Aktivität beschreibt. Sie lädt also die Resource und generiert das Layout des Fensters.

Und damit kommen wir zu den Resourcen.

Resourcen (res Ordner)

Die Resourcen sind in drei Hauptkategorien unterteilt.

drawable

Die drawable-* Ordner beinhalten Grafiken für verschiedene Auflösungen. Möchte man eine Grafik in die Anwendung einbinden, so muss man diese für jede Auflösung optimieren und in dem jeweiligen Ordner speichern. Mehr dazu gibt es später in einem separaten Artikel.

layout

Beinhaltet XML Dateien zur Beschreibung von GUIs.

Die Beispilaktivität HelloActivity enthält eine Referenz zu der main.xml im Ordner res/layout. Wenn man diese öffnet, zeigt Eclipse eine Design-Ansicht. In der Mitte sieht man die Vorschau der GUI und auf der linken Seite eine Auswahl von Elementen. Unter der Ansicht findet man noch den Reiter “Properties”, den man sich idealerweise auf die rechte Seite vom Designer zieht.

Der Wizard hat bereits ein TextView Element eingefügt. Klickt man dieses an, werden dessen Eigenschaften im Properties Tab angezeigt. Unter der Designvorschau kann die “main.xml” direkt betrachtet werden. Es ist also möglich und manchmal sinnvoll das Design auch manuell über den XML Code zu bearbeiten.

Die Beispiel-XML sieht so aus:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 >
<TextView
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:text="@string/hello"
 />
</LinearLayout>

Die interessanteste Zeile stellt in diesem Beispiel die TextView Eigenschaft android:text=”@string/hello” dar. Wie man in dem dem Designer erkennen kann, wird in dem TextView Element ein anderer Text angezeigt, als in der XML Datei angegeben. Es handelt sich hierbei wieder um eine Referenz zu einer anderen Resource, nämlich den Strings.

Klickt man auf den “…” Button neben den Eigenschaftswert “Text”, wird ein neues Fenster zur Auswahl von Strings geöffnet. Hier können bereits vorhandene Strings ausgewählt und neue erzeugt werden.

Die bereits besprochene Methode setContentView(R.layout.main) wertet die main.xml aus und folgt auch den darin enthaltenen Referenzen. Dadurch wird als Text der mit hello bezeichnete String “Hello World, HelloActivity!” angezeigt.

values

In dem Ordner values werden XML Dateien mit Strings, oder anderen Resourcen abgelegt.

Strings bestehen aus einem Namen sowie einer dazugehörigen Zeichnkette und werden in der Datei res/values/strings.xml gespeichert. Öffnet man diese Datei, wird der Resource Designer angezeigt. Hier kann man bereits vorhandene Strings bearbeiten, oder neue hinzufügen.

Öffnet man die XML Ansicht, so findet man den folgenden Inhalt:

<?xml version="1.0" encoding="utf-8"?>
<resources>
 <string name="hello">Hello World, HelloActivity!</string>
 <string name="app_name">Hello Android</string>
</resources>

Auf diese Weise lassen sich nicht nur Strings sondern alle erdenklichen Informationen (String Felder/Arrays, Konstanten, Farbcodes, etc) speichern. Möchte man ein Programm in mehrere Sprachen übersetzen, erstellt man für jede Sprache eine eigene XML Datei und muss nichts am Quellcode ändern (hierzu später mehr).

AndroidManifest.xml

Wie bereits erwähnt, beschreibt diese Datei alle Eigenschaften des Projektes. Man kann entweder die Unterstützung von Eclipse in Anspruch nehmen, oder die XML Datei direkt bearbeiten.

Am interessantesten sind die Abschnitte Application und Permissions.

Unter Application werden neben den Grundinformationen wie Name oder Icon auch die Aktivitäten festgelegt. Es reicht also nicht aus nur eine neue Aktivitätsklasse zu erzeugen, damit diese auch ausgeführt wird. In der AndroidManifest.xml muss diese deklariert und mit Regeln versehen werden.

In dem automatisch erzeugten Beispiel finden wir den folgenden Abschnitt:

<application android:icon="@drawable/icon" android:label="@string/app_name">
 <activity android:name=".HelloActivity"
 android:label="@string/app_name">
 <intent-filter>
 <action android:name="android.intent.action.MAIN" />
 <category android:name="android.intent.category.LAUNCHER" />
 </intent-filter>
 </activity>

Die HelloActivity bekommt hier einen Intent Filter zugewiesen. Dieser legt fest unter welchen Bedingungen die Aktivität wie gestartet werden soll. In diesem Beispiel ist die Aktion MAIN und die Kategorie LAUNCHER. Dies erlaubt also einen Start der HelloActivity aus dem Android Programm-Launcher. Es sind natürlich sehr viele verschiedene Bedingungen möglich. Weitere Informationen gibt es unter http://developer.android.com/reference/android/content/Intent.htm.

Fazit

Mit den gemachten Erfahrungen lassen sich problemlos komplette Aktivitäten erstellen, ohne auch nur eine Zeile Code geschrieben zu haben. Natürlich kann man auf die Verwendung von XML Dateien komplett verzichten und alle GUI Elemente direkt im Quellcode erzeugen. Aber dazu später mehr…

Mit dem Debug oder Run Button in der Symbolleiste kann das Programm im Emulator gestartet werden.

  1. Noch keine Kommentare vorhanden.

  1. Noch keine TrackBacks.