ebook img

Android 5 – Apps entwickeln mit Android Studio PDF

60 Pages·2015·6.77 MB·German
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Android 5 – Apps entwickeln mit Android Studio

Wissen, wie’s geht. Leseprobe Mithilfe dieser Leseprobe programmieren Sie Ihre erste Android-App. Darüber hinaus erklärt Ihnen Thomas Künneth, wie Sie die Smart- phone-Sensoren ansteuern sowie Termine und Kontakte in Ihrer App nutzen. Außerdem erhalten Sie das vollständige Inhalts- und Stich- wortverzeichnis des Buchs. »Hallo Android!« »Sensoren und GPS« »Kontakte und Organizer« Inhalt Index Der Autor Leseprobe weiterempfehlen Thomas Künneth Android 5 – Apps entwickeln mit Android Studio 629 Seiten, gebunden, 3. Auflage 2015 34,90 Euro, ISBN 978-3-8362-2665-3 www.rheinwerk-verlag.de/3493 2665.book Seite 43 Montag, 4. Mai 2015 11:29 11 Kapitel 2 2 Hallo Android! Die erste eigene App ist schneller fertig, als Sie vielleicht glauben. Dieses Kapitel führt Sie in leicht nachvollziehbaren Schritten zum Ziel. Seit vielen Jahrzenten ist es schöne Tradition, anhand des Beispiels »Hello World!« in eine neue Programmiersprache oder Technologie einzuführen. Dahinter steht die Idee, erste Konzepte und Vorgehensweisen in einem kleinen, überschaubaren Rah- men zu demonstrieren. Google bleibt dieser Tradition treu. Wenn Sie in Android Stu- dio ein neues Projekt anlegen, entsteht eine minimale, aber lauffähige Anwendung. Sie gibt den Text »Hello World« aus. Im Verlauf dieses Kapitels erweitern Sie diese Anwendung um die Möglichkeit, einen Nutzer namentlich zu begrüßen. Ein Klick auf Fertig schließt die App. Hinweis Sie finden die vollständige Version des Projekts Hallo Android in den Begleitmateria- lien zum Buch, die Sie unter www.rheinwerk-verlag.de/3493 herunterladen können. (Scrollen Sie etwas nach unten und klicken Sie Materialübersicht bei den Materia- lien zum Buch.) Um mit den Entwicklungswerkzeugen vertraut zu werden, rate ich Ihnen aber, sich diese Fassung erst nach der Lektüre dieses Kapitels und nur bei Be- darf zu kopieren. 2.1 Android-Projekte Projekte fassen alle Artefakte einer Android-Anwendung zusammen. Dazu gehö- ren unter anderem Quelltexte, Konfigurationsdateien, Testfälle, aber auch Grafiken, Sounds und Animationen. Natürlich sind Projekte keine Erfindung von Android Stu- dio, sondern bilden eines der Kernkonzepte praktisch aller Entwicklungsumgebun- gen. Grundsätzlich können Sie mit beliebig vielen Projekten gleichzeitig arbeiten. Projekte werden über die Menüleiste angelegt, (erneut) geöffnet und geschlossen. Anders als beispielsweise in Eclipse bezieht sich ein Android-Studio-Hauptfenster stets auf ein Projekt. Wenn Sie ein vorhandenes Projekt öffnen, fragt die IDE nor- malerweise nach, ob Sie es in einem neuen oder dem aktuellen Fenster bearbeiten 43 2665.book Seite 44 Montag, 4. Mai 2015 11:29 11 2665.book Seite 45 Montag, 4. Mai 2015 11:29 11 2 Hallo Android! 2.1 Android-Projekte möchten. In diesem Fall wird das aktuelle Projekt geschlossen. Sie können dieses In Java – und damit auch unter Android – werden Klassen und Dateien in Paketen Verhalten übrigens im Settings-Dialog auf der Seite General ändern. abgelegt. Bei der Vergabe des Package name müssen Sie besonders sorgfältig vorge- 2 hen, vor allem wenn Sie eine Anwendung in Google Play veröffentlichen möchten. Projekte können aus einem oder mehreren Modulen bestehen. Wie Sie in Kapitel 15, Denn der Paketname, den Sie hier eintragen, referenziert genau eine App. Er muss »Android Wear« sehen werden, nutzt Google dieses Konzept beispielsweise, um Pro- also eindeutig sein. jekte für Android Wear zu strukturieren. Diese bestehen aus einem Teil für das Smart- phone bzw. Tablet sowie einem Teil für die Smartwatch. »Klassische« Android-Apps Idealerweise folgen Sie den Namenskonventionen für Java-Pakete und tragen (in kommen üblicherweise mit einem Modul aus. In diesem Fall nennt der Assistent das umgekehrter Reihenfolge) den Namen einer Ihnen gehörenden Internet-Domain Modul app. Beispiel-Apps von Google verwenden als Modulnamen oft Application. ein, gefolgt von einem Punkt und dem Namen der App. Verwenden Sie nur Klein- buchstaben, und vermeiden Sie Sonderzeichen, insbesondere das Leerzeichen. Um den Vorschlag zu überschreiben, den Android Studio macht, klicken Sie auf Edit. 2.1.1 Projekte anlegen Damit ist Package name nun editierbar, und anstelle von Edit ist Done zu sehen. Um ein neues Projekt anzulegen, wählen Sie in der Menüleiste File (cid:2) New Project. Geben Sie für dieses Beispiel »com.thomaskuenneth.android5.halloandroid« ein, Daraufhin öffnet sich der Dialog Create New Project. Dieser Assistent führt Sie in und beenden Sie Ihre Eingabe mit Done. wenigen Schritten zu einem neuen Android-Projekt. Auf der ersten Seite, Configure Unter Project location legen Sie den Speicherort Ihres Projekts fest. Es bietet sich your new project, legen Sie einige grundlegende Eigenschaften Ihres Projekts fest. an, Projekte an zentraler Stelle zu sammeln. Auf meinem Rechner ist dies C:\Users\ Der Application name wird später auf dem Gerät bzw. im Emulator angezeigt. Mit Thomas\AndroidStudioProjects. Jedes Projekt entspricht dann einem Unterordner ihm identifiziert der Benutzer Ihre App. Bitte geben Sie, wie in Abbildung 2.1 zu se- dieses Verzeichnisses, beispielsweise HalloAndroid. Next bringt Sie auf die zweite hen ist, »Hallo Android« ein. Das Feld Company Domain sollte leer bleiben. Seite des Projekt-Assistenten. Sie ist in Abbildung 2.2 zu sehen. Abbildung 2.2 Geräteklassen auswählen Abbildung 2.1 Der Dialog »Create New Project« 44 45 2665.book Seite 46 Montag, 4. Mai 2015 11:29 11 2665.book Seite 47 Montag, 4. Mai 2015 11:29 11 2 Hallo Android! 2.1 Android-Projekte Auf der Seite Select the form factors your app will run on legen Sie die Gerä- Sie haben es fast geschafft. Um den Assistenten abschließen zu können, müssen Sie tekategorien fest, für die Ihre App zur Verfügung stehen soll. Möchten Sie beispiels- nur noch auf der Seite Choose options for your new file die soeben ausgewählte 2 weise ein eigenes Zifferblatt für Android-Wear-Smartwatches programmieren, setzen leere Activity konfigurieren. Hierbei vergeben Sie einen Klassennamen, den Namen Sie ein Häkchen vor Wear. Wie Sie ein animiertes Zifferblatt verwirklichen, zeige ich einer Layoutdatei, einen Titel sowie den Namen einer XML-Datei mit Menüeinträ- Ihnen in Kapitel 15. Hallo Android soll ausschließlich auf Telefonen und Tablets lau- gen. Was es mit diesen Werten auf sich hat, zeige ich Ihnen im weiteren Verlauf die- fen. Deshalb sollte nur Phone and Tablet angekreuzt sein. Wählen Sie zudem als ses Kapitels. Fürs Erste sollten Sie nur sicherstellen, dass die vorgeschlagenen Werte Minimum SDK Android 5.0. mit denen in Abbildung 2.4 übereinstimmen. Bitte überprüfen Sie dies, und überneh- men Sie bei Abweichungen die Daten aus dem Screenshot. Hinweis Mit dem Wert Minimum SDK legen Sie unter anderem fest, welche Android-Version mindestens auf einem Gerät verfügbar sein muss, um Ihr Programm ausführen zu können. Beispielsweise ist erst ab Android 4 ein Zugriff auf Kalenderdaten über offi- zielle Schnittstellen möglich. Eine App, die diese nutzt, ist auf »älteren« Geräten mit Gingerbread oder gar Cupcake nicht lauffähig. Plattformen können mit dem Android SDK Manager installiert und gelöscht werden. Ein Klick auf Next zeigt die Seite Add an activity to Mobile an. Sie ist in Abbil- dung 2.3 dargestellt. Wie Sie gleich sehen werden, gehören Activities zu den Grundbausteinen einer And- roid-Anwendung. Deshalb möchten wir gleich zu Beginn eine anlegen. Markieren Sie Blank Activity, und klicken Sie danach auf Next. Abbildung 2.4 Eine leere Activity konfigurieren Mit Finish schließen Sie den Assistenten. Android Studio wird nun eine Reihe von Dateien anlegen und das neue Projekt einrichten. Ein kurzer Rundgang durch Android Studio Danach sollte das Hauptfenster der IDE in etwa Abbildung 2.5 entsprechen. Es enthält unter anderem eine Menüleiste, eine Toolbar, mehrere Editorfenster für die Eingabe von Java-Quelltexten und anderen Dateiformaten, einen Designer für die Gestaltung Abbildung 2.3 Die Seite »Add an activity to Mobile« der Benutzeroberfläche, eine Statuszeile sowie mehrere Werkzeugfenster. Beginnt der Name eines solchen Fensters mit einer Ziffer, können Sie es über die Tastatur 46 47 2665.book Seite 48 Montag, 4. Mai 2015 11:29 11 2665.book Seite 49 Montag, 4. Mai 2015 11:29 11 2 Hallo Android! 2.1 Android-Projekte anzeigen und verbergen. Drücken Sie hierzu die angegebene Zahl zusammen mit der Eine Statuszeile am unteren Rand des IDE-Hauptfensters zeigt situationsabhängige (Alt)-Taste. Auf dem Mac verwenden Sie (Cmd). Informationen an, beispielsweise die aktuelle Cursorposition oder den Fortschritt 2 eines Buildvorgangs. Sie ist in Abbildung 2.7 zu sehen. Ganz links befindet sich ein Symbol, mit dem Sie drei Werkzeugfenster-Bereiche ein- und ausblenden können. Kli- cken Sie es mehrere Male an, und achten Sie darauf, wie sich das Android-Studio- Fenster verändert. Lassen Sie sich dabei nicht irritieren. Sobald Sie mit der Maus über das Symbol fahren, erscheint ein Popup-Menü. Es zeigt alle verfügbaren Werkzeug- fenster. Dies ist praktisch, wenn die Werkzeugfenster-Bereiche nicht sichtbar sind. Innerhalb eines Bereichs können Sie die Reihenfolge der Fenster übrigens durch Drag& Drop nach Belieben ändern. Auch das Verschieben in einen anderen Werk- zeugfenster-Bereich ist möglich. Abbildung 2.7 Die Statuszeile von Android Studio Der Dialog Settings enthält zahlreiche Optionen, um das Aussehen der IDE an Ihre Vorstellungen anzupassen. Sie erreichen ihn mit File (cid:2) Settings. Der Navigationsbe- reich auf der linken Seite enthält zwei Abschnitte: projektspezifische Einstellungen Abbildung 2.5 Das Hauptfenster nach dem Anlegen eines Projekts (Project Settings) und Einstellungen, die die IDE betreffen (IDE Settings). Klicken Sie auf Appearance. Unter den in Abbildung 2.8 gezeigten UI Options können Sie Werkzeugfenster erscheinen im unteren, linken oder rechten Bereich des Hauptfens- ein Theme einstellen. Dracula beispielsweise färbt Android Studio dunkel ein. Nach ters. Ihre Position lässt sich über ein Kontextmenü steuern, das Sie durch Anklicken einer solchen Änderung ist ein Neustart der IDE erforderlich. Falls Sie möchten, kön- des Fenstertitels mit der rechten Maustaste aufrufen können. Ein Beispiel ist in Abbil- nen Sie die Standardschriften gegen einen von Ihnen gewählten Font austauschen. dung 2.6 zu sehen. Situationsabhängig kann eine ganze Reihe von zusätzlichen Me- Setzen Sie hierzu ein Häkchen vor Overwrite default fonts by, und wählen Sie in nüpunkten enthalten sein. Die Aufteilung des Android-Studio-Hauptfensters lässt der Klappliste darunter die gewünschte Schrift und Größe aus. sich praktisch nach Belieben den eigenen Bedürfnissen anpassen. Beispielsweise kön- Klicken Sie im Abschnitt IDE Settings bitte auf General. Unter Startup/Shut- nen Sie Werkzeugfenster als schwebende Panels anzeigen lassen oder bei Nicht- down können Sie einstellen, ob beim Start das zuletzt bearbeitete Projekt automa- gebrauch automatisch ausblenden. Über das Window-Menü übernehmen Sie Ihre tisch geöffnet werden soll. Ist das Häkchen nicht gesetzt, erscheint der Ihnen aus Ka- Anpassungen als Standard. Restore Default Layout kehrt zu den zuletzt gespei- pitel 1 bekannte Willkommensbildschirm. Er enthält eine Liste der kürzlich ver- cherten Standardeinstellungen zurück. wendeten Projekte. Wenn Sie mit mehreren Projekten im Wechsel arbeiten, bietet es sich an, das gewünschte Projekt im Willkommensbildschirm zu wählen. Confirm application exit legt fest, ob eine Rückfrage erscheint, wenn Sie Android Studio durch Anklicken des Fenster-Schließsymbols oder über die Menüleiste ver- lassen. Unter Project Opening können Sie konfigurieren, ob Projekte in einem neuen And- roid-Studio-Hauptfenster geöffnet werden. Wenn Sie Open project in the same window selektieren, schließt die IDE das aktuelle Projekt und öffnet danach das neue. Confirm window to open project in lässt Ihnen in einem entsprechenden Dialog die Wahl. Abbildung 2.6 Kontextmenü eines Werkzeugfensters 48 49 2665.book Seite 50 Montag, 4. Mai 2015 11:29 11 2665.book Seite 51 Montag, 4. Mai 2015 11:29 11 2 Hallo Android! 2.1 Android-Projekte Da Android Studio kontinuierlich weiterentwickelt und von Fehlern befreit wird, ist zu sehen. Die Sicht Project entspricht weitestgehend der Repräsentation auf Ebene es ratsam, gelegentlich nach Aktualisierungen zu suchen. Sie können dies mit Help (cid:2) des Dateisystems. Sie visualisiert die hierarchische Struktur eines Projekts. Packa- Check for Update selbst auslösen. Allerdings ist es bequemer, dies der IDE zu über- ges gruppiert Dateien analog zu Java-Paketen, soweit dies sinnvoll ist. Diese Sicht 2 lassen. Klicken Sie unter IDE Settings auf Updates, und aktivieren Sie die Option werden Sie möglicherweise eher selten verwenden. Am praktischsten für die Ent- Check for updates in channel. In der Klappliste rechts daneben sollten Sie Sta- wicklung ist wahrscheinlich die Sicht Android. Sie ist in Abbildung 2.9 zu sehen. ble Channel auswählen. Kanäle legen fest, welche Aktualisierungen eingespielt werden. Der stable channel enthält nur ausreichend erprobte Änderungen. Die ande- ren Kanäle liefern Updates schneller aus, allerdings sind diese oftmals noch fehlerbe- haftet oder experimentell. Abbildung 2.9 Die Struktur einer Android-App Die Sicht Android zeigt eine vereinfachte, in Teilen flachgeklopfte Struktur eines Projekts. Sie gestattet den schnellen Zugriff auf wichtige Dateien und Verzeichnisse. Thematisch zusammengehörende Artefakte werden auch dann gemeinsam darge- Abbildung 2.8 Der Dialog »Settings« stellt, wenn sie physikalisch in unterschiedlichen Verzeichnissen liegen. Das Werk- zeugfenster Project stellt Sichten entweder als Registerkarten oder als Klappliste Damit möchte ich unseren kleinen Rundgang durch Android Studio beenden. Im fol- dar. Sie können dies mit dem Kommando Show Views as Tabs im Kontextmenü genden Abschnitt stelle ich Ihnen die Struktur von Android-Projekten vor. des Fensters einstellen. Um es zu öffnen, klicken Sie den Fenstertitel mit der rechten Maustaste an. 2.1.2 Projektstruktur Lassen Sie uns einen ersten Blick auf wichtige Dateien und Verzeichnisse werfen. Aktivieren Sie hierzu die Sicht Android. Sie sehen zwei Knoten, app und Gradle Android-Apps bestehen aus einer ganzen Reihe von Artefakten, die als baumartige Struktur dargestellt werden können. Das Android-Studio-Werkzeugfenster Project Scripts. Klappen Sie Letzteren auf. Die Datei build.gradle kommt zweimal vor, die bietet hierfür mehrere Sichten an: Project, Packages und Android. Sichten wir- Dateien gradle.properties, settings.gradle und local.properties jeweils einmal. ken als Filter. Nicht jedes Artefakt (eine Datei oder ein Verzeichnis) ist in allen Sichten 50 51 2665.book Seite 52 Montag, 4. Mai 2015 11:29 11 2665.book Seite 53 Montag, 4. Mai 2015 11:29 11 2 Hallo Android! 2.1 Android-Projekte local.properties wird automatisch von Android Studio generiert und sollte nicht von allerdings nicht von Hand bearbeiten. Deshalb ist sie in der Sicht Android nicht vor- Hand bearbeitet werden. Sie enthält einen Eintrag, der auf das für das Projekt verwen- handen. 2 dete Android SDK verweist. settings.gradle listet alle Module eines Projekts auf. Unser Hallo Android-Projekt besteht aus einem Modul: app. Die Datei wird aktualisiert, so- bald ein Modul hinzugefügt oder gelöscht wird. In welchem Zusammenhang Module verwendet werden, zeige ich Ihnen später. Viele Apps benötigen nur ein Modul. Mit gradle.properties können Sie Einfluss auf den Buildvorgang nehmen. Dies ist eine fort- geschrittene Tätigkeit. Üblicherweise müssen Sie diese Datei nicht editieren. Die Datei build.gradle ist mehrfach vorhanden. Eine Version bezieht sich auf das Pro- jekt. Zu jedem Modul gehört eine weitere Ausprägung. Da Hallo Android aus einem Modul (app) besteht, gibt es build.gradle also zweimal. Lassen Sie uns einen Blick auf die Version für das Modul app werfen. Ein Doppelklick auf build.gradle (Module: app) öffnet die Datei in einem Texteditor. Wie das aussehen kann, sehen Sie in Abbil- dung 2.10. Bitte nehmen Sie zunächst keine Änderungen vor. Sie können das Editor- fenster jederzeit durch Anklicken des Kreuzes auf der Registerkarte oder durch Drücken der Tastenkombination (Strg)+(F4) schließen. Der Block android { … } enthält Informationen, die Sie beim Anlegen des Projekts ein- gegeben haben. So entspricht applicationId dem Package name. minSdkVersion spiegelt Ihre Auswahl in der Klappliste Minimum SDK wider. Dieses Attribut gibt an, Abbildung 2.10 Die Datei »build.gradle« in einem Texteditor welche Android-Version auf einem Gerät mindestens vorhanden sein muss, um die App nutzen zu können. Ist diese Voraussetzung nicht erfüllt, wird die Installation menu enthält XML-Dateien für Menüs. Wie Sie diese verwenden, zeige ich Ihnen abgebrochen. Google Play zeigt das Programm in so einem Fall allerdings gar nicht an. etwas später. In layout wird die Benutzeroberfläche einer App definiert. Haben Sie noch ein kleines bisschen Geduld, wir kommen in diesem Kapitel noch dazu. versionCode und versionName repräsentieren die Versionsnummer Ihrer App. Wie Sie diese beiden Variablen verwenden, zeige ich Ihnen etwas später. compileSdkVersion In drawable befinden sich Grafiken. Bitmaps können in unterschiedlichen Auflösun- und buildToolsVersion entsprechen dem Versionsstand Ihres Android SDKs. gen abgelegt werden. Ein Beispiel für ein Drawable ist das Icon für den App-Starter, das seit der ersten Android-Version hier abgelegt wird. Mittlerweile empfiehlt Google Lassen Sie uns nun einen Blick auf das Modul app werfen. Es enthält die Zweige mani- aber, es von den übrigen Grafiken der Anwendung zu trennen. Der Projektassistent fests, java und res. Quelltexte werden unter java abgelegt. Sie sehen zweimal das legt deshalb seit einiger Zeit mehrere Verzeichnisse mipmap-… an. Neu in Android 5 Paket com.thomaskuenneth.android5.halloandroid. Dies mag irritieren, wenn Sie ist ein Vektorformat, das Sie als Entwickler von der undankbaren Aufgabe befreit, für schon mit anderen Entwicklungsumgebungen gearbeitet haben. Bitte denken Sie daran, dass die Sicht Android eine optimierte (wenn Sie so möchten, künstliche) viele Anzeigevarianten Grafiken zu erstellen. Sicht auf ein Projekt darstellt. Ein Paket enthält die Klasse ApplicationTest, das Der Unterknoten manifests enthält die Datei AndroidManifest.xml. Dies ist die zent- andere MainActivity. Sie haben diesen Namen im Projektassistenten eingetragen. rale Beschreibungsdatei einer Anwendung. In ihr werden unter anderem die Um die Testklasse müssen Sie sich zunächst nicht kümmern. Übrigens können Sie Bestandteile des Programms aufgeführt. Wie Sie später noch sehen werden, sind dies bequem neue Klassen anlegen, indem Sie ein Paket mit der rechten Maustaste ankli- sogenannte Activities, Services, Broadcast Receiver und Content Provider. Die Datei cken und New (cid:2) Java Class wählen. enthält aber auch Informationen darüber, welche Rechte eine App benötigt und wel- che Hardware sie erwartet. Der Zweig res besteht aus mehreren Unterknoten. values enthält beispielsweise die Datei strings.xml. Sie nimmt Texte auf, die später im Quelltext oder in Beschrei- Bitte öffnen Sie mit einem Doppelklick die Datei AndroidManifest.xml, um sich einen bungsdateien für die Benutzeroberfläche referenziert werden. Hierzu wird von den ersten Eindruck von ihrer Struktur zu verschaffen. Es gibt ein Wurzelelement <mani- Werkzeugen des Android SDK eine Klasse mit Namen R generiert. Diese dürfen Sie fest> mit einem Kind <application>. Android-Apps bestehen (neben den weiter oben 52 53 2665.book Seite 54 Montag, 4. Mai 2015 11:29 11 2665.book Seite 55 Montag, 4. Mai 2015 11:29 11 2 Hallo Android! 2.2 Die Benutzeroberfläche bereits kurz genannten anderen Bausteinen) aus mindestens einer Activity. Hierbei Aus dieser Beschreibung ergeben sich die folgenden Texte. Die Bezeichner vor dem handelt es sich, stark vereinfacht ausgedrückt, um Bildschirmseiten. Verschiedene jeweiligen Text werden Sie später im Programm wiederfinden: 2 Aspekte einer Anwendung, wie Listen, Übersichten, Such- und Eingabemasken, wer- (cid:2) willkommen – Guten Tag. Schön, dass Sie mich gestartet haben. Bitte verraten Sie mir den als eigene Activities realisiert und als Unterelemente von <application> in And- Ihren Namen. roidManifest.xml eingetragen. (cid:2) weiter – Weiter (cid:2) hallo – Hallo <Platzhalter>. Ich freue mich, Sie kennenzulernen. Hinweis (cid:2) fertig – Fertig Wenn Sie einen Blick auf Googles Entwicklerdokumentation zur Manifestdatei wer- fen, stellen Sie fest, dass es neben <application> eine ganze Reihe Kinder von <mani- Ein Großteil der Texte wird zur Laufzeit so ausgegeben, wie sie schon während der fest> gibt. Das Tag <uses-sdk> gibt beispielsweise die Zielplattform an. Mit dem Programmierung erfasst wurden. Eine kleine Ausnahme bildet die Grußformel. Sie Umstieg von Eclipse und den Android Development Tools auf Android Studio werden besteht aus einem konstanten und einem variablen Teil. Letzterer ergibt sich erst, diese Angaben aber nicht mehr direkt in das Manifest eingetragen, sondern in nachdem der Anwender seinen Namen eingetippt hat. Wie Sie gleich sehen werden, build.gradle gepflegt. Beim Bauen der Anwendung werden sie automatisch in das ist es in Android sehr einfach, dies zu realisieren. Manifest übernommen. Da Sie Apps in der Programmiersprache Java schreiben, könnten Sie die auszugeben- den Meldungen einfach im Quelltext ablegen. Das sähe folgendermaßen aus (ich Im nächsten Abschnitt werden Sie erste Erweiterungen an Hallo Android vorneh- habe die String-Konstante aus Gründen der besseren Lesbarkeit in drei Teile zerlegt): men. Zunächst werde ich Ihnen zeigen, wie in Android Texte gespeichert werden und wie man in einer App auf diese zugreift. nachricht.setText("Guten Tag. Schön, dass" + " Sie mich gestartet haben." + " Bitte verraten Sie mir Ihren Namen."); 2.2 Die Benutzeroberfläche Das hätte allerdings eine ganze Reihe von Nachteilen. Da jede Klasse in einer eigenen Datei abgelegt wird, merkt man oft nicht, wenn man gleiche Texte mehrfach definiert. Die Benutzeroberfläche ist das Aushängeschild einer Anwendung. Gerade auf mobi- Dies vergrößert die Installationsdatei der App und kostet unnötig Speicher. Außerdem len Geräten mit vergleichsweise kleinen Bildschirmen sollte jede Funktion leicht wird es auf diese Weise sehr schwer, mehrsprachige Anwendungen zu bauen. Wenn Sie zugänglich und intuitiv erfassbar sein. Android unterstützt Sie bei der Gestaltung eine App über Google Play vertreiben möchten, sollten Sie neben den deutschsprachi- durch eine große Auswahl an Bedienelementen. gen Texten aber mindestens eine englische Lokalisierung ausliefern. Unter Android werden Texte daher zentral in der Datei strings.xml abgelegt. Sie be- 2.2.1 Texte findet sich im Verzeichnis values. Ändern Sie die durch den Projektassistenten ange- Bilder und Symbole sind ein wichtiges Gestaltungsmittel. Sinnvoll eingesetzt, helfen legte Fassung folgendermaßen ab: sie dem Anwender nicht nur beim Bedienen des Programms, sondern sorgen zudem <?xml version="1.0" encoding="utf-8"?> für ein angenehmes, schönes Äußeres. Dennoch spielen auch Texte eine sehr wich- tige Rolle. Sie werden in den unterschiedlichsten Bereichen einer Anwendung einge- <resources> setzt: (cid:2) als Beschriftungen von Bedienelementen <!-- Name der App --> <string name="app_name">Hallo Android!</string> (cid:2) für erläuternde Texte, die durch einen Screenreader vorgelesen werden (cid:2) für Hinweis- und Statusmeldungen <!-- Willkommensmeldung --> <string name="willkommen"> Die fertige Version von Hallo Android soll den Benutzer zunächst begrüßen und ihn Guten Tag. Schön, dass Sie mich gestartet haben. nach seinem Namen fragen. Im Anschluss wird ein persönlicher Gruß angezeigt. Bitte verraten Sie mir Ihren Namen. Nach dem Anklicken einer Schaltfläche beendet sich die App. </string> 54 55 2665.book Seite 56 Montag, 4. Mai 2015 11:29 11 2665.book Seite 57 Montag, 4. Mai 2015 11:29 11 2 Hallo Android! 2.2 Die Benutzeroberfläche 2.2.2 Views <!-- persönlicher Gruß --> Hallo Welt besteht auch nach vollständiger Realisierung aus sehr wenigen Bedienele- <string name="hallo"> 2 menten, und zwar aus Hallo %1$s. Ich freue mich, Sie kennenzulernen. </string> (cid:2) einem nicht editierbaren Textfeld, das den Gruß unmittelbar nach dem Pro- grammstart sowie nach Eingabe des Namens darstellt, <!-- Beschriftungen für Schaltflächen --> (cid:2) einer Schaltfläche, die je nach Situation mit Weiter oder Fertig beschriftet ist, <string name="weiter">Weiter</string> und aus <string name="fertig">Fertig</string> (cid:2) einem Eingabefeld, das nach dem Anklicken der Schaltfläche Weiter ausgeblen- <!-- aus der generierten Datei --> det wird. <string name="hello_world">Hello world!</string> Wie die Komponenten auf dem Bildschirm platziert werden sollen, zeigt ein soge- <string name="action_settings">Settings</string> nannter Wireframe, den Sie in Abbildung 2.11 sehen. Man verwendet solche abstrak- ten Darstellungen gern, um die logische Struktur einer Bedienoberfläche in das Zen- </resources> trum des Interesses zu rücken. Listing 2.1 »strings.xml« Das Attribut name des Elements <string> wird später im Quelltext als Bezeichner ver- wendet. Der Name muss also projektweit eindeutig sein. Ist Ihnen im Listing die fett gesetzte Zeichenfolge %1$s aufgefallen? Android wird an dieser Stelle den vom Benut- zer eingegebenen Namen einfügen. Wie dies funktioniert, zeige ich Ihnen später. Hinweis Die Zeilen Hallo %1$s… und Guten Tag. sind nicht eingerückt, weil die führenden Leer- zeichen sonst in die App übernommen werden, was in der Regel nicht gewünscht ist. Abbildung 2.11 Prototyp der Benutzeroberfläche von »Hallo Android« Vielleicht fragen Sie sich, wie Sie Ihr Programm mehrsprachig ausliefern können, Unter Android sind alle Bedienelemente direkte oder indirekte Unterklassen der wenn es genau eine zentrale Datei strings.xml gibt. Neben dem Verzeichnis values Klasse android.view.View. Jede View belegt einen rechteckigen Bereich des Bild- kann es lokalisierte Ausprägungen geben, die auf das Minuszeichen und auf ein schirms. Ihre Position und Größe wird durch Layouts bestimmt. Diese wiederum Sprachkürzel enden, das aus zwei Buchstaben besteht (zum Beispiel values-en oder erben von android.view.ViewGroup, die ebenfalls ein Kind von View ist. Sie haben values-fr). Die Datei strings.xml in diesen Ordnern enthält Texte in den korrespondie- keine eigene grafische Repräsentation, sondern sind Container für weitere Views und renden Sprachen, also Englisch oder Französisch. Muss Android auf eine Zeichenkette ViewGroups. zugreifen, geht das System vom Speziellen zum Allgemeinen. Ist die Standardsprache Die Text- und Eingabefelder sowie die Schaltflächen, die in Hallo Android verwendet also beispielsweise Englisch, wird zuerst versucht, den Text in values-en/strings.xml zu werden, sind also Views. Konkret verwenden wir die Klassen Button, TextView und finden. Gelingt dies nicht, wird values/strings.xml verwendet. In dieser Datei müssen EditText. Wo sie auf dem Bildschirm positioniert werden und wie groß sie sind, wird also alle Strings definiert werden. Lokalisierungen hingegen können unvollständig hingegen durch die ViewGroup LinearLayout festgelegt. sein. Zur Laufzeit einer Anwendung manifestiert sich ihre Benutzeroberfläche demnach als Im folgenden Abschnitt stelle ich Ihnen sogenannte Views vor. Hierbei handelt es Objektbaum. Aber nach welcher Regel wird er erzeugt? Wie definieren Sie als Entwick- sich um die Grundbausteine, aus denen die Benutzeroberfläche einer App zusam- ler den Zusammenhang zwischen einem Layout, einem Textfeld und einer Schaltflä- mengesetzt wird. che? Java-Programmierer sind gewohnt, die Oberfläche programmatisch zusammen- zusetzen. Nicht nur im Swing-Umfeld finden sich unzählige Ausdrücke im Stil von: 56 57 2665.book Seite 58 Montag, 4. Mai 2015 11:29 11 2665.book Seite 59 Montag, 4. Mai 2015 11:29 11 2 Hallo Android! 2.2 Die Benutzeroberfläche JPanel p = new JPanel(); <TextView JButton b = new JButton(); android:id="@+id/nachricht" 2 p.add(b);. android:layout_width="match_parent" android:layout_height="wrap_content" Auch unter Android könnten Sie die Bedienelemente auf diese Weise zusammen- /> fügen: <EditText ScrollView v = new ScrollView(context); android:id="@+id/eingabe" LinearLayout layout = new LinearLayout(context); android:layout_width="match_parent" layout.setOrientation(LinearLayout.VERTICAL); android:layout_height="wrap_content" v.addView(layout); /> layout.addView(getCheckbox(context, Locale.GERMANY)); layout.addView(getCheckbox(context, Locale.US)); <Button layout.addView(getCheckbox(context, Locale.FRANCE)); android:id="@+id/weiter_fertig" Listing 2.2 Beispiel für den programmgesteuerten Bau einer Oberfläche android:layout_width="wrap_content" android:layout_height="wrap_content" Allerdings ist dies nicht die typische Vorgehensweise – diese lernen Sie im folgenden android:layout_gravity="end" Abschnitt kennen. /> </LinearLayout> 2.2.3 Oberflächenbeschreibungen Listing 2.3 »activity_main.xml« Eine Android-Anwendung beschreibt ihre Benutzeroberflächen normalerweise mit- tels XML-basierter Layoutdateien. Diese werden zur Laufzeit der App zu Objektbäu- Die XML-Datei bildet die Hierarchie der Benutzeroberfläche ab. Demzufolge ist men »aufgeblasen«. Alle Bedienelemente von Hallo Android werden in einen <LinearLayout> das Wurzelelement. Mein Beispiel enthält die drei Kinder <TextView>, Container des Typs LinearLayout gepackt. Seine Kinder erscheinen entweder neben- <EditText> und <Button>. Jedes Element hat die bereits kurz angesprochenen Attri- oder untereinander auf dem Bildschirm. Wie Sie gleich sehen werden, steuert das bute android:layout_width und android:layout_height. Deren Wert match_parent Attribut android:orientation die Laufrichtung. Für die Größe der Views und View- besagt, dass die Komponente die Breite oder Höhe des Elternobjekts erben soll. Der Groups gibt es android:layout_width und android:layout_height. Wert wrap_content hingegen bedeutet, dass sich die Größe aus dem Inhalt der View Oberflächenbeschreibungen werden in layout, einem Unterverzeichnis von res, ergibt, beispielsweise der Beschriftung einer Schaltfläche. Die Zeile android:layout_ gespeichert. Beim Anlegen des Projekts hat der Android-Studio-Projektassistent dort gravity="end" sorgt dafür, dass die Schaltfläche rechtsbündig angeordnet wird. die Datei activity_main.xml abgelegt. Öffnen Sie diese mittels Doppelklick, und ändern Sie sie entsprechend Listing 2.3 ab. Damit Sie den Quelltext eingeben können, Tipp klicken Sie auf die Registerkarte Text am unteren Rand des Editors. Anstelle von match_parent finden Sie oft noch die ältere Notation fill_parent. Diese wurde in Android 2.2 (API-Level 8) durch match_parent abgelöst. Für welche Variante <?xml version="1.0" encoding="utf-8"?> Sie sich entscheiden, ist nur von Belang, wenn Sie für sehr alte Plattform-Versionen entwickeln. Denn abgesehen vom Namen sind beide identisch. Ich rate Ihnen, mög- <LinearLayout lichst match_parent zu verwenden. xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" Ist Ihnen aufgefallen, dass keinem Bedienelement ein Text oder eine Beschriftung android:layout_height="match_parent" zugewiesen wird? Und was bedeuten Zeilen, die mit android:id="@+id/ beginnen? > Wie Sie bereits wissen, erzeugt Android zur Laufzeit einer Anwendung aus den Ober- 58 59

Description:
Mithilfe dieser Leseprobe programmieren Sie Ihre erste Android-App. Seit vielen Jahrzenten ist es schöne Tradition, anhand des Beispiels »Hello World! gung. Wie Sie diese verwenden, zeige ich Ihnen anhand des Projekts
See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.