Inhalt | 6 |
Vorwort | 16 |
Teil I: Einführung | 20 |
1 Der Rechner wird vorbereitet | 22 |
1.1 Die nötigen Hilfsmittel | 22 |
1.2 Installation des JDK | 23 |
1.3 Installation von Android Studio | 24 |
1.3.1 Erster Start | 26 |
1.4 Der Android-SDK-Manager | 28 |
1.4.1 Die Android-Versionen | 28 |
1.4.2 APIs/SDKs und anderes nachinstallieren | 29 |
1.4.3 Dokumentation und API-Referenz | 31 |
1.5 Wo Sie weitere Hilfe finden | 33 |
1.6 Nächste Schritte | 34 |
1.7 Frage und Antworten | 34 |
1.8 Übungen | 34 |
2 Auf die Plätze, fertig .?.?. App! | 36 |
2.1 Die Ruhe vor dem Sturm | 36 |
2.2 Das Projekt | 37 |
2.3 Das vorgegebene Codegerüst | 45 |
2.3.1 Die package-Anweisung | 47 |
2.3.2 Die import-Anweisungen | 47 |
2.3.3 Die Klassendefinition | 48 |
2.4 Layout und Ressourcen | 50 |
2.4.1 XML-Layouts | 50 |
2.4.2 Ressourcen | 53 |
2.5 Die App bauen (Build) | 56 |
2.6 Die App im Emulator testen | 57 |
2.6.1 AVD für Emulator anlegen | 57 |
2.6.2 Die App testen | 60 |
2.7 Die App auf Smartphone oder Tablet testen | 64 |
2.8 Nächste Schritte | 66 |
2.9 Fragen und Antworten | 66 |
2.10 Übungen | 67 |
3 Was wann wofür | 68 |
3.1 Was ist zu tun? – Die drei Pfeiler der App-Erstellung | 68 |
3.2 Wer hilft uns? – Bausteine und Klassen | 69 |
3.2.1 Bausteine für den App-Aufbau | 69 |
3.2.2 Klassen zur Adressierung spezieller Aufgaben | 73 |
3.3 Wo wird was gespeichert? – Dateitypen, die Sie kennen sollten | 74 |
3.3.1 Quelldateien | 75 |
3.3.2 Die Datei R.java | 75 |
3.3.3 Assets | 76 |
3.3.4 Die Ressourcendateien | 76 |
3.3.5 Die Manifestdatei AndroidManifest.xml | 77 |
3.3.6 Die APK-Datei | 78 |
3.4 Frage und Antworten | 78 |
3.5 Übung | 79 |
Teil II: Grundlagen | 80 |
4 Code | 82 |
4.1 Der Editor | 82 |
4.1.1 Syntaxhervorhebung | 83 |
4.1.2 Code Folding (Code-Gliederung) | 84 |
4.1.3 Code Completion (Code-Vervollständigung) | 86 |
4.1.4 Syntaxfehler beheben | 88 |
4.1.5 Informationen über Klassen und Methoden | 90 |
4.1.6 Klammerpaare identifizieren | 93 |
4.1.7 Zeilennummern einblenden | 93 |
4.1.8 Code generieren | 94 |
4.1.9 Refactoring (Code umstrukturieren) | 97 |
4.1.10 Dateiverlauf (Local History) | 100 |
4.2 Neue Klassen anlegen | 100 |
4.3 Fragen und Antworten | 103 |
4.4 Übungen | 103 |
5 Benutzeroberfläche und Layout | 104 |
5.1 Einführung | 104 |
5.2 Der Layout-Designer | 105 |
5.2.1 Die Text-Ansicht (XML-Code) | 107 |
5.2.2 Die Design-Ansicht | 111 |
5.3 Layouts (ViewGroups) | 114 |
5.3.1 Die allgemeinen Layoutparameter | 115 |
5.3.2 ViewGroups | 118 |
5.3.3 Hintergrundfarbe (oder -bild) | 128 |
5.3.4 Der Hierarchy Viewer | 131 |
5.4 UI-Elemente | 133 |
5.5 Richtlinien für das Design von Benutzeroberflächen | 137 |
5.6 Praxisbeispiel: eine Quiz-Oberfläche | 140 |
5.7 Hoch- und Querformat | 145 |
5.8 Das App-Symbol | 146 |
5.9 Views im Code verwenden | 147 |
5.9.1 Layouts laden | 147 |
5.9.2 Zugriff auf UI-Elemente | 148 |
5.10 Fragen und Antworten | 150 |
5.11 Übung | 150 |
6 Ressourcen | 152 |
6.1 Der grundlegende Umgang | 152 |
6.1.1 Ressourcen anlegen | 153 |
6.1.2 Ressourcen verwenden | 155 |
6.1.3 Ressourcen aus dem Projekt entfernen | 159 |
6.2 Welche Arten von Ressourcen gibt es? | 159 |
6.2.1 Größenangaben | 159 |
6.2.2 Farben | 160 |
6.2.3 Strings | 161 |
6.2.4 Strings in mehreren Sprachen (Lokalisierung) | 163 |
6.2.5 Bilder | 164 |
6.2.6 Layouts | 165 |
6.2.7 Menüs | 166 |
6.2.8 Roh- und Multimediadaten | 166 |
6.2.9 Stile | 167 |
6.3 Alternative Ressourcen vorsehen | 171 |
6.3.1 Das Grundprinzip | 171 |
6.3.2 Wie stellt man konfigurationsspezifische Ressourcen bereit? | 172 |
6.4 Fragen und Antworten | 174 |
6.5 Übungen | 175 |
7 Mit dem Anwender interagieren | 176 |
7.1 Das Grundprinzip | 176 |
7.1.1 Auf ein Ereignis reagieren | 177 |
7.1.2 Welche Ereignisse gibt es? | 180 |
7.1.3 Hintergrund der Ereignisverarbeitung | 181 |
7.2 Vereinfachte Ereignisbehandlung | 183 |
7.2.1 Ereignisbehandlung mit anonymen Listener-Klassen | 184 |
7.2.2 Ereignisbehandlung mit anonymen Listener-Objekten | 185 |
7.2.3 Ereignisbehandlung mithilfe der Activity-Klasse | 185 |
7.3 Eine Behandlungsmethode für mehrere Views | 186 |
7.4 Auf Tipp- und Wischereignisse reagieren | 187 |
7.4.1 Tippereignisse | 187 |
7.4.2 Wischereignisse | 189 |
7.5 Multi-Touch und Gesten erkennen | 191 |
7.5.1 Multi-Touch | 191 |
7.5.2 Gestenerkennung | 193 |
7.6 Frage und Antworten | 195 |
7.7 Übung | 195 |
8 App-Grundlagen und Lebenszyklus | 196 |
8.1 Die Android-Architektur | 196 |
8.2 Der App-Lebenszyklus | 198 |
8.3 Der Activity-Lebenszyklus | 200 |
8.4 Lebenszyklusdemo | 202 |
8.5 Fragen und Antworten | 206 |
8.6 Übung | 206 |
Teil III: Weiterführende Themen | 208 |
9 In Views zeichnen | 210 |
9.1 Das Grundprinzip | 210 |
9.1.1 Die Leinwand | 210 |
9.1.2 Das Atelier | 210 |
9.1.3 Die Zeichenmethoden und -werkzeuge | 211 |
9.1.4 Wie alles zusammenwirkt | 211 |
9.2 Grafikprimitive zeichnen | 215 |
9.3 Bilder laden | 219 |
9.4 In Bilder hineinzeichnen | 220 |
9.5 Bilder bewegen | 222 |
9.6 Verbesserungen | 227 |
9.7 Fragen und Antworten | 228 |
9.8 Übung | 228 |
10 Menüs, Fragmente und Dialoge | 230 |
10.1 Menüs | 230 |
10.1.1 Menüverwirrungen | 231 |
10.1.2 Menüressourcen | 232 |
10.1.3 Menüeinträge in der ActionBar (AppBar) | 234 |
10.1.4 Das Optionen-Menü | 235 |
10.1.5 Das Kontextmenü | 236 |
10.1.6 Popup-Menü | 238 |
10.1.7 Untermenüs | 239 |
10.1.8 Auf die Auswahl eines Menüeintrags reagieren | 240 |
10.2 Fragmente | 242 |
10.2.1 Was ist ein Fragment? | 242 |
10.2.2 Ein Fragment erzeugen | 243 |
10.2.3 Fragment zur Activity hinzufügen | 244 |
10.2.4 Ein Fragmentbeispiel | 245 |
10.2.5 Definition der Fragment-Klassen | 248 |
10.2.6 Die Activity | 250 |
10.3 Dialoge | 252 |
10.3.1 Dialoge erzeugen | 253 |
10.3.2 Dialoge anzeigen | 254 |
10.3.3 Standarddialoge mit AlertDialog | 254 |
10.3.4 Dialoge für Datums- und Zeitauswahl | 256 |
10.3.5 Der Fortschrittsdialog | 259 |
10.3.6 Eigene Dialoge definieren | 261 |
10.4 Benachrichtigungen mit Toasts | 263 |
10.4.1 Toasts im Hintergrund-Thread | 263 |
10.5 Fragen und Antworten | 264 |
10.6 Übungen | 265 |
11 Mehrseitige Apps | 266 |
11.1 Intents | 266 |
11.1.1 Was sind Intents? | 267 |
11.1.2 Explizite und implizite Intents | 268 |
11.1.3 Intent-Filter | 268 |
11.2 Activities starten mit Intents | 269 |
11.2.1 Intent-Objekte erzeugen | 270 |
11.3 Intents empfangen | 272 |
11.4 Ein Demo-Beispiel | 272 |
11.5 Ergebnisse zurücksenden | 275 |
11.6 Fragen und Antworten | 276 |
11.7 Übung | 276 |
12 Daten speichern | 278 |
12.1 Preferences | 278 |
12.2 Dateizugriffe | 279 |
12.2.1 Zugriff auf internen Speicher | 280 |
12.2.2 Externer Speicher (SD-Karte) | 283 |
12.3 Die Reaktions-App | 286 |
12.4 Fragen und Antworten | 291 |
12.5 Übungen | 291 |
13 Quiz-Apps | 292 |
13.1 Aufbau und Benutzeroberfläche | 292 |
13.2 Die Activity (QuizActivity.java) | 293 |
13.3 Die Fragen (Frage.java) | 295 |
13.4 Die Spielsteuerung (SpielLogik.java) | 296 |
13.5 Verbesserungen | 298 |
13.6 Frage und Antwort | 299 |
13.7 Übung | 299 |
14 Multimedia | 300 |
14.1 Audioressourcen | 300 |
14.2 Soundeffekte mit SoundPool | 301 |
14.3 Das Universalgenie: MediaPlayer | 303 |
14.3.1 Audioressourcen abspielen | 303 |
14.3.2 Audiodateien vom Dateisystem abspielen | 304 |
14.3.3 Audiodateien aus dem Internet abspielen | 304 |
14.3.4 Auf das Abspielende reagieren | 305 |
14.3.5 MediaPlayer-Objekte wiederverwenden | 306 |
14.3.6 Ressourcen freigeben | 308 |
14.3.7 Audiodateien wiederholt abspielen | 309 |
14.4 Piepen und andere Töne | 309 |
14.5 Bilddateien anzeigen | 311 |
14.6 Videos abspielen | 312 |
14.7 Fotos und Videos aufnehmen | 314 |
14.8 Fragen und Antworten | 317 |
14.9 Übungen | 317 |
15 Sensoren | 318 |
15.1 Zugriff | 318 |
15.1.1 Was Sie benötigen | 319 |
15.1.2 Welche Sensoren sind verfügbar? | 319 |
15.1.3 Anmeldung beim Sensor | 321 |
15.2 Sensordaten auslesen | 322 |
15.2.1 Beschleunigungswerte ermitteln | 324 |
15.2.2 Lagedaten ermitteln | 328 |
15.3 Fragen und Antworten | 331 |
15.4 Übung | 332 |
16 Einsatz der Datenbank SQLite | 334 |
16.1 Was ist eine relationale Datenbank? | 334 |
16.2 Datenbank anlegen/öffnen | 335 |
16.2.1 onCreate() | 336 |
16.2.2 onUpgrade() | 338 |
16.2.3 close() | 338 |
16.2.4 Datenbanken als Ressourcen mitgeben | 338 |
16.3 Datenzugriffe | 339 |
16.4 Datenbankinhalte mit ListView anzeigen | 344 |
16.5 Fragen und Antworten | 348 |
16.6 Übung | 349 |
17 Geolokation | 350 |
17.1 Zugriff | 350 |
17.1.1 Verfügbarkeit feststellen | 350 |
17.1.2 Daten empfangen | 351 |
17.1.3 Empfänger abmelden | 352 |
17.2 Geokoordinaten | 353 |
17.2.1 Sexagesimale und dezimale Darstellung | 353 |
17.2.2 Das Location-Objekt | 353 |
17.3 Eine GPS-Tracker-App | 355 |
17.4 Fragen und Antworten | 359 |
17.5 Übung | 359 |
18 Brettspiel-Apps (TicTacToe) | 360 |
18.1 Aufbau und Benutzeroberfläche | 360 |
18.2 Die Start-Activity (MainActivity) | 362 |
18.3 Spielfeld und Logik (TicTacToeView) | 363 |
18.3.1 Vorbereitungen | 363 |
18.3.2 Spielfeld zeichnen | 364 |
18.3.3 Spielerzug durchführen | 366 |
18.3.4 Computerzug mit AsyncTask durchführen | 367 |
18.4 Verbesserungen | 370 |
18.5 Frage und Antwort | 370 |
18.6 Übung | 371 |
19 Tipps und Tricks | 372 |
19.1 Das Smartphone vibrieren lassen | 372 |
19.2 UI-Code periodisch ausführen lassen | 373 |
19.3 Bildergalerien mit GridView und BaseAdapter | 376 |
19.3.1 Die Bildressourcen | 377 |
19.3.2 Die Adapter-Klasse | 377 |
19.3.3 Die GridView | 380 |
19.3.4 Angeklickte Bilder als Vollbild anzeigen | 381 |
19.4 Spinner verwenden (Listenfelder) | 383 |
19.4.1 Den Spinner mit Daten füllen | 384 |
19.4.2 Ereignisbehandlung | 385 |
19.5 Mehrsprachige Apps | 386 |
19.6 Schlussbemerkung | 389 |
Teil IV: Anhänge | 390 |
Anhang A: Apps veröffentlichen oder weitergeben | 392 |
A.1 Die App vorbereiten | 392 |
A.2 Digitales Signieren | 394 |
A.3 Die App exportieren und signieren | 395 |
A.4 Bei Google Play registrieren | 397 |
A.4.1 Steuerliche Aspekte bei App-Verkauf | 398 |
A.5 App hochladen | 399 |
A.6 Weitergabe an Bekannte | 399 |
Anhang B: Android Studio | 402 |
B.1 Android-Projekt anlegen | 402 |
B.2 Projekt bauen (Build) | 402 |
B.3 Projekte löschen | 404 |
B.4 Eclipse-ADT-Projekt importieren | 404 |
B.5 Run-Konfigurationen anpassen | 404 |
B.6 Fenster zurücksetzen | 405 |
B.7 Apps exportieren | 405 |
B.8 Kleines Android Studio-Wörterbuch | 405 |
Anhang C: Emulator, ADM & Debugger | 408 |
C.1 Der Emulator | 408 |
C.1.1 AVD-Dateien | 409 |
C.1.2 Emulator starten | 412 |
C.1.3 Die Emulator-Bedienung | 414 |
C.1.4 Apps installieren und deinstallieren | 415 |
C.2 Android Device Monitor (ADM) | 415 |
C.3 Der Debugger | 420 |
C.3.1 Debug-Lauf starten | 420 |
C.3.2 Debug-Möglichkeiten | 421 |
C.4 Debugging-Beispiel | 423 |
Anhang D: Das Material zum Buch | 428 |
Anhang E: Lösungen | 430 |
Anhang F: Glossar | 446 |
Index | 456 |