Programmieren für mobile Endgeräte SS 2013/2014
Programmieren für mobile Endgeräte 2 Besprechung der Aufgaben 1) Legen Sie das Android-Projekt HelloWorldApp an so wie es in den vorherigen Folien beschrieben wurde. 2) Bauen Sie in der Methode OnCreate eine LogCat-Meldung ein und schauen Sie sich die Meldung in der LogCat-Registerkarte nach der Ausführung der App an. 3) Ändern Sie die Ausgabe der App von Hello World! in Hallo Münster! um.
Programmieren für mobile Endgeräte 3 Musterlösung zu der Aufgabe 2 In der Java-Datei MainActivity in der Methode oncreate folgende Zeile einfügen. Log.d( MainActivity, die Methode oncreate aufgerufen! );
Programmieren für mobile Endgeräte 4 Musterlösung zur Aufgabe 3 Im Ordner res/values liegt die strings.xml. Für den key hello_world den Value auf Hallo Münster! setzen.
Programmieren für mobile Endgeräte 5 Was ist XML? XML steht für extensible Markup Language ist eine Auszeichnungssprache so wie HTML dient zum Transport und zur Speicherung von Daten XML-Tags sind nicht vordefiniert, sondern werden selbst definiert Struktur und die Daten sollen selbstbeschreibend sind XML ist eine W3C-Empfehlung von 1998
Programmieren für mobile Endgeräte 6 XML-Element Man unterscheidet Kennzeichen (engl. tag) und Element und spricht z. B. von Startkennzeichen und Endekennzeichen eines Elements. Elemente können geschachtelt werden. Kommentare: <!-- alles außer MinusMinus --> Elemente bestehen aus: <...> <!-- Startkennzeichen ( tag ) --> Inhalt </...> <!-- Endekennzeichen --> oder sind leere Elemente: <... /> Im Start- und im leeren Kennzeichen können Attribute stehen: <abc name="wert"... >
Programmieren für mobile Endgeräte 7 Wohlgeformtes XML Für ein wohlgeformtes XML-Dokument gelten folgende Syntaxregeln: Dokument hat ein root-element Elemente müssen ein Endtag haben Tags sind case sensitive Elemente müssen korrekt geschachtelt werden Attribute müssen in Anführungsstriche gesetzt werden
Programmieren für mobile Endgeräte 8 Zusammenspiel zwischen Activity und View App kann aus einer oder mehreren Activities bestehen Activities haben als Basisklasse die Android-Klasse android.app.activity Activities werden in der Regel mit Views verknüpft Views (Screens) stellen die sichtbare Oberfläche für den Benutzer dar Aktionen des Benutzer in den Views werden von den Activity-Klassen behandelt Trennung von Programmlogik (JAVA) und Darstellung (XML) Beim Anzeigen einer neuen View wird in der Regel eine neue Activity gestartet Vgl. Java für Android, Christian Bleske, Seite 123 und 160
Programmieren für mobile Endgeräte 9 GUI-Designer vom ADT-Plugin Im Graphical Layout-Modus können Controls aus der Palette per Drag&Drop im Designer platziert werden Anordnung und Aussehen der Elemente zur Designzeit visuell möglich Outline-Register zeigt hierarchische Anordnung der View-Elemente mit Layouts
Programmieren für mobile Endgeräte 10 Hinzufügen eines Buttons 1/3 Button-Control aus der Palette per Drag&Drop in der View platzieren Button in der Designansicht markieren und im Property- Fenster bei On Click z. B. btnclickhandler eintragen
Programmieren für mobile Endgeräte 11 Hinzufügen eines Buttons 2/3 Ergebnis in der activity_main.xml:
Programmieren für mobile Endgeräte 12 Hinzufügen eines Buttons 3/3 Methode btnclickhandler in der MainActivity.java hinzufügen
Programmieren für mobile Endgeräte 13 Lebenszyklus einer Activity Quelle: http://developer.android.com/guide/components/activities.html
Programmieren für mobile Endgeräte 14 Override Methods mit Eclipse Eclipse unterstützt beim Überschreiben von Methoden der Basisklasse Im Menü Source unter Override/Implement Methods aufrufbar:
Programmieren für mobile Endgeräte 15 Layout Layout dient zur Positionierung der Steuerelemente (Controls) Layout teilt die Fläche der View in Bereiche auf Bereiche können Controls oder weitere Layouts aufnehmen Schachtelung somit von Layouts möglich ohne Layout kann in die View maximal ein Control eingefügt werden Fläche der View wird in gleichgroße Abschnitte für die Unterelemente aufgeteilt Das Layout wird in XML beschrieben. Vgl. Java für Android, Christian Bleske, Seite 148/149
Programmieren für mobile Endgeräte 16 LinearLayout Wird mit dem tag <LinearLayout> gesetzt Controls können diesem tag direkt als Unterelement hinzugefügt werden Mit dem Attribut orientation kann man die Richtung der Anordnung des Unterelemente bestimmen entweder vertical oder horizontal Vgl. Java für Android, Christian Bleske, Seite 149-151
Programmieren für mobile Endgeräte 17 RelativeLayout Wird mit dem tag <RelativeLayout> gesetzt das komplexeste Layout für Views Attribute können auf den übergeordneten Container bezogen sein: Angaben werden auf true gesetzt, damit sie gelten Bsp.: layout_centerhorizontal, layout_centerinparent Attribute können auf ein anderes Control bezogen sein: Anker-Control wird durch seine view id festgelegt z. B. @+id/button1 Bsp: layout_below, layout_toleftof Im GUI-Designer werden die Angaben mit Pfeilen visualisiert Vgl. Java für Android, Christian Bleske, Seite 151-153
Programmieren für mobile Endgeräte 18 FrameLayout Wird mit dem tag <FrameLayout> gesetzt Kann mehrere Controls aufnehmen Nur ein Control ist im Vordergrund Alle Controls werden übereinander angezeigt Mit dem Attribut Visibility kann man Controls verstecken Vgl. Java für Android, Christian Bleske, Seite 154/155
Programmieren für mobile Endgeräte 19 TableLayout Wird mit dem tag <TableLayout> gesetzt Aufteilung erfolgt in Reihen und Spalten Eine neue Zeile wird mit dem tag <TableRow> eingeleitet Controls werden einer TableRow als Unterelement als neue Spalte hinzugefügt Vgl. Java für Android, Christian Bleske, Seite 155/156
Programmieren für mobile Endgeräte 20 GridLayout Wird mit dem tag <GridLayout> gesetzt Controls können diesem tag direkt als Unterelement hinzugefügt werden Aufteilung erfolgt in Reihen und Spalten Positionierung mit den Attributen: layout_column und layout_row Mit den Attributen layout_columnspan und layout_rowspan können Controls sich über mehrere Bereiche erstrecken Wurde mit dem API-Level 14 eingeführt Vgl. Java für Android, Christian Bleske, Seite 157-159
Programmieren für mobile Endgeräte 21 Absolute Layout Wird mit dem tag <AbsoluteLayout> gesetzt Wurde von Google auf deprecated gesetzt, daher nicht mehr verwenden Einfacher Umgang mit Angabe von absoluten Positionen Angabe des X und Y-Werts Nachteil: Beim Einfügen eines Controls muss ggf. erst Platz geschaffen werden Vgl. Java für Android, Christian Bleske, Seite 156/157
Programmieren für mobile Endgeräte 22 Smartphone für das Remote-Debugging freischalten Im Menü Einstellungen unter dem Punkt Anwendungen: Unbekannte Quellen zulassen Abweichungen bei verschiedenen API-Level möglich Im Menü Einstellungen unter dem Punkt Entwicklungen: USB-Debugging aktivieren Gerät in virtuelle Maschine durchleiten:
Programmieren für mobile Endgeräte 23 Target auswählen für das Remote-Debugging
Programmieren für mobile Endgeräte 24 Zusammenfassung Was ist XML und was bedeutet wohlgeformt in diesem Zusammenhang? Sie kennen die Funktion eines Layouts in Android Folgende Layouts können Sie beschreiben und verwenden: LinearLayout RelativeLayout FrameLayout TableLayout GridLayout AbsoluteLayout
Programmieren für mobile Endgeräte 25 Beispielprojekt HelloApp
Programmieren für mobile Endgeräte 26 Aufgaben 1. Überschreiben sie alle on-methoden des Lebenszyklus aus der Basisklasse Activity. In den überschriebenen Methoden werden als erstes die jeweiligen Methoden der Basisklasse aufgerufen und danach eine inform-logcat-meldung mit dem jeweiligen Methodennamen ausgeben. Führen Sie die App aus und beobachten Sie die inform-meldungen beim Testen. 2. Legen Sie ein neues Android-Projekt an und bauen Sie das Beispiel HelloApp nur mit dem LinearLayout im Designer/XML-Editor nach. 3. Erweitern Sie die HelloApp um: a) Einen Button mit der Ausgabe Hallo NRW!. b) Ändern Sie Farbe der Textview auf grün. c) Der Inhalt der Textview soll scrollbar sein. Tipps: android:scrollbars = vertical textview1.setmovementmethod(new ScrollingMovementMethod());