Freitag, 27. Januar 2017

Januar 2017 - Android Studio

Da ich für meine IPA (individuelle praktische Arbeit) eine Android-App entwickeln werde, schreibe ich diesen Monat in meinem Blogeintrag über die Entwicklungsumgebung, welche ich verwenden werde, und die dazugehörigen Programmiersprachen.

Android Studio

Allgemeines:

Android Studio ist die kostenlose, offizielle Entwicklungsumgebung für Android-Apps. Sie wurde von Google entwickelt und ist im Jahr 2013 erschienen. Es ersetzt unter Anderem das Android Developement Tool (ADT), welches für Eclipse als Plugin verfügbar war.
Die Systemvoraussetzungen sind recht hoch, da vor allem der integrierte Android-Emulator sehr viele Ressourcen beansprucht.

Systemvoraussetzungen:

Arbeitsspeicher:                mind. 2GB, empfohlen 8GB
Speicherkapazität:            mind. 2GB, empfohlen 4GB
Bildschirmauflösung:         mind. 1280 * 800 Pixel

Empfohlen wird ein 64 Bit Betriebssystem


Entwicklung:

Startet man die Anwendung, sieht es folgendermassen aus:


(Klicken zum Vergrössern)

Hier ist bereits ein neues Projekt, ein klassisches "Hello World", angelegt.
Auf der linken Seite ist der Projektmappen-Explorer zu sehen. Hier sind alle notwendigen Dateien vom Projekt in einer vordefinierten Ordnerstruktur abgelegt. Rechts davon kann man den Inhalt der geöffneten Datei sehen.
Die geöffnete Datei ist eine sogenannte Activity. Activities sind Java-Dateien. Hier steckt die eigentliche Logik der App drin. Meist ist eine Activity genau eine Java-Klasse, die Methoden, den Konstruktor, Variablen etc. beinhaltet. Java-Dateien befinden sich in der Ordnerstruktur unter "app/java". Von einer Activity aus kann auf die Elemente auf dem Bildschirm wie Textfelder, Eingabefelder, Buttons usw. zugegriffen werden. Startet man die Applikation mit dem mitgelieferten Android-Emulator, wird folgende Seite präsentiert:

(Klicken zum Vergrössern)

Man kann sehen, dass sich bereits ein Textfeld mit dem Text "Hello World!" auf einer ersten Seite befindet. Diese Seiten, auf denen Steuerelemente platziert sind, werden "Layouts" genannt. Layouts befinden sich in der Ordnerstruktur unter "app/res/layout". Der "res"-Ordner (Resources) ist neben dem Java-Ordner einer der wichtigsten. Hier sind vordefinierte Inhalte von Variablen (Strings, Arrays, Int,...), Bilder, Farb- und Styledefinitionen sowie andere binäre Dateien abgelegt.
Zurück zum Layout. Das Layout, wie auch die meisten anderen Dateien im "res"-Ordner, ist eine XML-Datei und sieht wie folgt aus:



(Klicken zum Vergrössern)



Die Ansicht kann zwischen Texteditor und Designer mit den Schaltflächen unten links geändert werden. Es wird häufiger der Texteditor zum Bearbeiten verwendet, da man so genauer angeben kann, wie es aussehen soll. Zur besseren Ansicht ist hier nochmal der Ausschnitt aus dem Texteditor:

(Klicken zum Vergrössern)

Zuoberst wird die XML-Version definiert. Direkt darunter fängt das eigentliche Layout an. Hier wird ein RelativeLayout definiert. Es gibt diverse Layouts,, die verwendet werden können, wie LinearLayout, TableLayout, GridLayout etc. Die Layouts definieren, wie die Elemente, die darin enthalten sind, dargestellt werden. Also entweder vertikal, horizontal, in einer Tabelle oder sonst wie.
Im RelativeLayout-Element befindet sich ein View-Element. Das View-Element hier ist eine TextView. TextViews sind ähnlich wie Labels in anderen Entwicklungsumgebungen wie z.B. VisualStudio. Der TextView werden hier drei Eigenschaften mitgegeben: Die Breite, die Höhe und der Text. Die Breite und die Höhe sind als "wrap_content" definiert. Das bedeutet, dass die View genau so breit und hoch ist, wie der Text darin Platz benötigt. Die dritte Eigenschaft, "text", wird hier direkt zugewiesen, damit die View "Hello World!" anzeigen kann. Eigentlich werden solche Texte in einer eigenen Datei (strings.xml) im res-Ordner gespeichert und dann von der TextView ein Verweis darauf gemacht. Dieser könnte dann zum Beispiel so aussehen: "android:text="@string/hello_world_text"". Das @-Zeichen sagt aus, dass sich das Gesuchte in der strings.xml-Datei befindet.
Die String Datei würde folglich so aussehen:




Der erste String ist immer automatisch der Name der Anwendung, hier "Demo Application". Der zweite ist, nun neu definiert, der Text "Hello World!".
Man könnte natürlich die Texte direkt bei den jeweiligen Views definieren, jedoch erleichtert der Umweg über die strings.xml-Datei die Umsetzung einer Applikation, die mehrsprachig sein soll.

Alle Eigenschaften eines Elements haben folgende Konvention: "android:*****", die Sterne ersetzen die jeweilige Eigenschaft. Im Relative Layout kann man noch eine der wichtigeren Eigenschaften sehen, die Id. Die Id wird immer wie folgt definiert: "android:id="@+id/*****"", die Sterne stehen hier für einen beliebigen Text, der später dann die Id wird. Allen Elementen kann optional eine Id gegeben werden, diese wird benötigt, um dann später von der Activity darauf zuzugreifen. Da die Id aber so als Eigenschaft nicht wirklich existiert, wird nach dem @-Zeichen noch ein "+" geschrieben.


Zusammenfassend: Es ist eine feste Ordnerstruktur vorgegeben, die die verschiedenen Dateien an den richtigen Orten hält. Activities sind Java-Klassen, die die Logik beinhalten und auf Elemente des Layouts zugreifen können. Layouts sind XML-Dateien und definieren, wie die Bildschirmseiten am Ende aussehen sollen. In ihnen befinden sich verschiedene Elemente wie Textfelder, Labels und Buttons. Variablen sollten im "res"-Ordner in dafür vorbestimmten XML-Dateien definiert werden, um von Layouts oder Activities darauf zugreifen zu können. (Gilt vor allem für Konstanten und Variablen, die nicht direkt in der Programmlogik verwendet werden.)


Eine essentielle Datei, die die Applikation lauffähig macht, ist eine weitere XML-Datei, das AndroidManifest. Sie befindet sich in "app/manifest". Hier sind die Eigenschaften der ganzen Applikation hinterlegt. Diese Datei muss auch bearbeitet werden wenn neue Activities hinzukommen. Diese müssen dann in der AndroidManifest.xml-Datei erfasst werden. Weiterhin ist hier definiert, welches die Startactivity ist. Standardmässig sieht eine AndroidManifest-Datei so aus:



Man kann sehen, dass hier Dinge wie das Icon, das App-Theme, der Name usw. definiert sind.


Zugriff auf res-Dateien

Da im AndroidManifest festgelegt ist, welche Activity bei Anwendungsstart gestartet werden soll, muss folglich die Activity eine Verbindung zum Layout herstellen (und nicht etwa umgekehrt).
Dies geschieht in der überschriebenen "onCreate"-Methode der Klasse:




Die erste Zeile der onCreate-Methode ruft die gleichnamige Methode der abgeleiteten Klasse "Activity" auf und übergibt dieselben Parameter, wie diese Methode bekommen hat. Dieses Szenario findet bei fast jeder überschriebenen Methode statt.
Die zweite Zeile ist schon wesentlich interessanter. Hier wird mit der Methode "setContentView" das Layout übergeben. Man erkennt hier im Übergabe-Parameter, wie genau auf Daten im "res"-Ordner zugegriffen wird. Mit dem vorangehenden "R" wird angegeben, dass es sich um eine Ressource handelt. "layout" ist der betreffende Ordners in dem die Datei gespeichert ist. Zuletzt folgt noch der Name der Datei.

Keine Kommentare:

Kommentar veröffentlichen