Inhaltsverzeichnis

Alle Kapitel aufklappen
Alle Kapitel zuklappen
Materialien zum Buch
17
1 Einführung
19
1.1 Kotlin und Android Studio
19
1.2 Aufbau dieses Buchs
20
1.3 Installation des Android Studio
22
2 Grundlagen von Android-Apps
31
2.1 Die erste App
31
2.1.1 Projekttyp und Activity auswählen
32
2.1.2 Projekt konfigurieren
33
2.1.3 Synchronisierung
35
2.2 Ein Projekt im Android Studio
36
2.2.1 Die Datei MainActivity.kt
37
2.2.2 Die Datei activity_main.xml
38
2.2.3 Die Arbeit mit Projekten
41
2.3 App auf virtuellem Gerät starten
42
2.3.1 App starten
42
2.3.2 App beenden
45
2.3.3 Instant Run
46
2.4 App auf realem Gerät starten
46
2.4.1 Reales Gerät vorbereiten
47
2.4.2 App starten und beenden
47
2.5 Layout und Ressourcen
48
2.5.1 Die fertige App
49
2.5.2 XML-Code
49
2.5.3 Eigenschaften
53
2.5.4 Ressourcen
55
2.5.5 XML-Elemente kopieren
55
2.5.6 Dimensionsressourcen
56
2.5.7 String-Ressourcen
58
2.5.8 Farbressourcen
59
2.5.9 Style-Ressourcen
60
2.5.10 Style-Ressourcen vererben
62
2.6 Mehrere Projekte
64
2.6.1 Mehrere Projekte öffnen
65
2.6.2 Projekte kopieren oder umbenennen
65
2.6.3 Wenn ein Projekt nicht startet
68
2.6.4 Projekt lässt sich nicht öffnen
69
2.7 Ereignisse auslösen
69
2.7.1 Die fertige App
69
2.7.2 Klassen und Objekte
70
2.7.3 Der Coderahmen
71
2.7.4 Die Erweiterung des Coderahmens
73
2.7.5 Anweisungen und Kommentare
74
2.7.6 Weiterentwicklung und Neustart
75
2.7.7 Android- und Kotlin-Hilfe
75
2.7.8 Hilfen des Editors
76
2.7.9 Weitere Tipps
76
3 Grundlagen in Kotlin
79
3.1 Arbeiten mit Texten
79
3.1.1 Datentyp String
79
3.1.2 Formatieren von Ausgaben
82
3.2 Ganze Zahlen
83
3.2.1 Datentyp Int
83
3.2.2 Datentyp Long
84
3.2.3 Grenzen der Zahlenbereiche
85
3.3 Zahlen mit Nachkommastellen
86
3.3.1 Datentyp Float
86
3.3.2 Datentyp Double
87
3.3.3 Exponentialwerte
88
3.3.4 Grenzen der Zahlenbereiche
89
3.4 Rechenoperatoren
90
3.4.1 Rechenregeln
90
3.4.2 Division
91
3.4.3 Kombinierte Zuweisungen
92
3.4.4 Inkrement und Dekrement
93
3.5 Logische Werte
94
3.5.1 Boolean-Variablen
94
3.5.2 Vergleichsoperatoren
94
3.5.3 Zahlenbereiche
96
3.5.4 Logische Operatoren
97
3.6 Verzweigungen mit if
98
3.6.1 Ein Block von Anweisungen
99
3.6.2 Eine einzelne Anweisung
100
3.6.3 Funktionale if-Anweisung
100
3.6.4 Mehrfache Verzweigung
101
3.7 Verzweigungen mit when
102
3.7.1 Prüfung auf Gleichheit
102
3.7.2 Funktionale when-Anweisung
103
3.8 Ausnahmebehandlung
104
3.8.1 Ohne Ausnahmebehandlung
104
3.8.2 Mit Ausnahmebehandlung
105
3.9 Schleifen mit Bedingungen
108
3.9.1 Zufallsgenerator
108
3.9.2 Schleifen mit while
110
3.9.3 Schleifen mit do-while
110
3.9.4 Schleifen abbrechen
111
3.9.5 Schleifen fortsetzen
112
3.10 Schleifen über Bereiche
112
3.11 Felder
115
4 Funktionen
119
4.1 Grundlagen
119
4.1.1 Funktionen mit Parametern
120
4.1.2 Rückgabewert
122
4.1.3 Funktionen überladen
123
4.1.4 Benannte Parameter
124
4.1.5 Verkürzte Definition
124
4.2 Vorgabewerte
125
4.3 Variable Parameterlisten
127
4.3.1 Nur variable Liste
127
4.3.2 Kombination mit variabler Liste
128
4.4 Paketfunktionen
129
4.4.1 Neue Datei erzeugen
129
4.4.2 Neue Datei nutzen
130
4.5 Rekursive Funktionen
131
4.6 Erweiterungsmethoden
133
4.7 Anonyme Funktionen
134
4.8 Gültigkeit und Konstanten
137
4.9 Debugging
140
4.9.1 Ablauf ohne Debugging
141
4.9.2 Haltepunkte und Einzelschritte
142
4.9.3 Ablauf mit Funktionen
144
4.10 Logging
145
4.10.1 Programm
145
4.10.2 Hilfestellung des Android Studio
147
5 Besonderheiten in Kotlin
149
5.1 Null-Zeiger
149
5.1.1 Nicht-nullbare Datentypen
150
5.1.2 Nullbare Datentypen
151
5.1.3 Casting
152
5.1.4 Elvis-Operator ?:
153
5.1.5 Nicht-Null-Operator !!
153
5.2 Listener
154
5.2.1 Interfaces
155
5.2.2 Aktuelles Activity-Objekt
155
5.2.3 Hilfestellung des Android Studio
157
5.2.4 Eigene Klasse
159
5.2.5 Benanntes Singleton-Objekt
160
5.2.6 Anonymes Singleton-Objekt mit Verweis
162
5.2.7 Anonymes Singleton-Objekt ohne Verweis
163
5.2.8 Anonyme Funktion
163
5.2.9 Nicht genutzte Parameter
164
5.2.10 Der Parameter it
165
5.2.11 Die kompakte Variante
165
6 Weitere Typen von Views
167
6.1 Eingaben mit EditText
167
6.1.1 Texte und Passwörter
167
6.1.2 Zahlen
170
6.1.3 Tastatur verbessern
173
6.2 Zahlen einstellen
173
6.3 Einfache Auswahl
177
6.3.1 Layouthierarchie
178
6.3.2 CheckBox
179
6.3.3 Toggle-Button
181
6.3.4 Switch
182
6.4 Mehrfache Auswahl
183
6.4.1 RadioGroup
184
6.4.2 Spinner
187
6.5 Views für Bilder
190
6.5.1 Bildressourcen
191
6.5.2 Darstellung
192
6.5.3 Programm
193
7 Zahlen, Texte und Zeit
195
7.1 Mathematik
195
7.1.1 Mathematische Konstanten
195
7.1.2 Betrag, Vorzeichen, Rundung und Extremwerte
196
7.1.3 Winkelfunktionen
197
7.1.4 Wurzel, Exponential- und Logarithmusfunktionen
198
7.2 Zeichenketten
199
7.2.1 Länge, Zeichen und Teile
199
7.2.2 Prüfen, Suchen und Ersetzen
201
7.2.3 Unicode, Umwandlung und Vergleich
203
7.2.4 Leerzeichen, Trennen und Verbinden
204
7.3 Zeitangaben
205
7.3.1 Speichern und Ausgeben
206
7.3.2 Ändern
207
7.3.3 Messen
209
7.3.4 Alter ermitteln
209
7.4 Zeitangaben eingeben
210
7.4.1 Darstellung
210
7.4.2 Startzustand
211
7.4.3 Datum eingeben
212
7.4.4 Uhrzeit eingeben
214
7.5 Zeitangaben einstellen
215
7.5.1 CalendarView
215
7.5.2 DatePickerView
218
7.5.3 TimePickerView
221
7.6 Zeitliche Steuerung
224
7.6.1 Einzelne Steuerung
225
7.6.2 Mehrere Steuerungen
230
8 Layouts und Activities
233
8.1 Hierarchie der Layouts
233
8.1.1 Darstellung
234
8.1.2 Programm
235
8.2 Dynamische Layouts
236
8.2.1 Aufbau
238
8.2.2 TextViews erzeugen
239
8.2.3 Buttons erzeugen
240
8.3 Freie Layouts
241
8.3.1 Dimensionsressourcen
242
8.3.2 Darstellung
242
8.3.3 Programm
244
8.4 Tabellenlayouts
246
8.4.1 Darstellung
246
8.4.2 Programm
247
8.5 Lebenszyklus
249
8.6 Mehrere Activities
250
8.6.1 Die fertige App
251
8.6.2 Erzeugung einer Activity
252
8.6.3 Haupt-Activity
253
8.6.4 Unter-Activity
255
8.7 Ergebnisse einer Activity
256
8.7.1 Die fertige App
257
8.7.2 Haupt-Activity
259
8.7.3 Unter-Activity
261
9 Sammlungen von Daten
263
9.1 Arrays
263
9.1.1 Erzeugen und Durchlaufen
263
9.1.2 Prüfen, Suchen und Zusammenfassen
265
9.1.3 Drehen, Sortieren und Kopieren
266
9.1.4 Aufteilen, Erweitern und Füllen
267
9.2 ArrayLists
268
9.2.1 Erzeugen und Hinzufügen
269
9.2.2 Löschen
270
9.3 Sets
271
9.3.1 Erzeugen, Hinzufügen und Löschen
271
9.3.2 Mengenoperationen
272
9.4 Maps
273
9.4.1 Erzeugen, Hinzufügen und Löschen
274
9.4.2 Prüfen und Destrukturieren
275
9.4.3 Keys und Values
276
9.5 Umwandlungen
277
10 Eigene Klassen
279
10.1 Klassen und Objekte
280
10.1.1 Eigenschaften, Methoden und Objekte
280
10.1.2 Getter- und Setter-Methoden
283
10.2 Konstruktoren
284
10.2.1 Primärkonstruktor
285
10.2.2 Initialisierungsblock
286
10.2.3 Sekundärkonstruktoren
287
10.2.4 Alle Konstruktoren
289
10.3 Einzigartige Objekte
290
10.3.1 Benanntes Singleton-Objekt
291
10.3.2 Anonymes Singleton-Objekt mit Verweis
292
10.3.3 Anonymes Singleton-Objekt ohne Verweis
293
10.3.4 Companion-Objekt
293
10.4 Operatormethoden
296
10.4.1 Ausgabe
297
10.4.2 Definition
297
10.4.3 Aufruf der Methoden
299
10.4.4 Aufruf der Operatoren
300
10.4.5 Methode zum Kürzen
300
10.5 Datenklassen
302
10.6 Vererbung
305
10.6.1 Ableitung
306
10.6.2 Primärkonstruktor
309
10.6.3 Initialisierungsblock
310
10.6.4 Sekundärkonstruktoren
312
10.6.5 Alle Konstruktoren
314
10.7 Interfaces
316
10.7.1 Definitionen
317
10.7.2 Implementierung
317
10.7.3 Mehrere Interfaces
319
10.7.4 Singleton-Objekt
320
11 Gesten, Dialoge und Menüs
323
11.1 Antippen
323
11.1.1 Langes Antippen
324
11.1.2 Doppeltes Antippen
325
11.2 Ziehen
327
11.3 Wischen
329
11.4 Zoomen
332
11.5 Zoo
335
11.6 Dialoge
335
11.6.1 Toasts
335
11.6.2 Infos
336
11.6.3 Fragen
338
11.6.4 Eingaben
339
11.7 Aktionsmenü
340
11.7.1 Aufbau des Menüs
340
11.7.2 Programm
343
11.8 Kontextmenüs
344
11.8.1 Aufbau der Menüs
345
11.8.2 Programm
346
12 Transformationen und Animationen
349
12.1 Transformationen
349
12.1.1 Die fertige App
349
12.1.2 Verschiebung
350
12.1.3 Skalierung
352
12.1.4 Drehung
354
12.1.5 Änderung der Farbe
356
12.2 Animationen
357
12.2.1 Die fertige App
357
12.2.2 Animation
358
12.2.3 Listener
360
12.2.4 Steuerung
361
12.3 Interpolatoren
362
12.3.1 Die fertige App
362
12.3.2 Auswahl des Interpolators
363
12.4 Kollisionen
366
12.4.1 Die fertige App
366
12.4.2 Darstellung
367
12.4.3 Programm
367
13 Speichern von Daten
371
13.1 Schlüssel-Wert-Paare
371
13.1.1 Schreiben
372
13.1.2 Lesen
373
13.1.3 Löschen
374
13.2 Textdatei
374
13.2.1 Schreiben
375
13.2.2 Anhängen
376
13.2.3 Leeren
377
13.2.4 Lesen
377
13.2.5 Zeilen lesen
379
13.3 SQLite-Datenbank
379
13.3.1 SQL
380
13.3.2 SQLite
380
13.3.3 Die fertige App
381
13.3.4 Datenbankklasse
382
13.3.5 Schreiben
384
13.3.6 Lesen
386
13.3.7 Ändern
389
13.3.8 Löschen
390
14 Sensoren und Systemdienste
393
14.1 Sensoren für die Lage
393
14.1.1 Die fertige App
394
14.1.2 Virtuelle und reale Sensoren
396
14.1.3 Manifest-Datei
397
14.1.4 Lineare Beschleunigung
398
14.1.5 Dreh-Beschleunigung
401
14.1.6 Magnetfeld
403
14.2 Sensoren für die Umgebung
404
14.2.1 Die fertige App
405
14.2.2 Virtuelle und reale Sensoren
406
14.2.3 Programm
406
14.3 Audiodateien abspielen
410
14.3.1 Die fertige App
410
14.3.2 Audioressourcen
412
14.3.3 Einfaches Abspielen
413
14.3.4 Komfortables Abspielen
414
14.4 Einzelne Systemberechtigung
418
14.4.1 Die fertige App
418
14.4.2 Manifest-Datei
421
14.4.3 Prüfen und Anfordern
421
14.4.4 Antworten auswerten
423
14.5 Mehrere Systemberechtigungen
425
14.5.1 Die fertige App
425
14.5.2 Manifest-Datei
427
14.5.3 Prüfen und Anfordern
427
14.5.4 Antworten auswerten
429
14.6 Standort ermitteln
430
14.6.1 Die fertige App
431
14.6.2 Manifest-Datei
432
14.6.3 Berechtigungen
433
14.6.4 Standortdaten ermitteln
434
14.6.5 Ressourcen sparen
435
14.7 Content-Provider
436
14.7.1 Die fertige App
437
14.7.2 Manifest-Datei
439
14.7.3 Berechtigungen
439
14.7.4 Kontaktliste anzeigen
440
14.7.5 Kontakt hinzufügen
441
14.8 Daten vorbereiten
444
15 Beispielprojekte
449
15.1 Training zur Bruchrechnung
449
15.1.1 Die fertige App
449
15.1.2 Leichte Aufgabe
451
15.1.3 Mittelschwere Aufgabe
453
15.1.4 Schwere Aufgabe
455
15.2 Reaktionsspiel »Quadrate«
458
15.2.1 Die fertige App
458
15.2.2 Darstellung
459
15.2.3 Überblick
460
15.2.4 Programm
460
15.2.5 Neues Quadrat erzeugen
461
15.2.6 Zielfarbe ändern
463
15.2.7 Zeitanzeige aktualisieren
464
15.3 Zoo
465
15.4 Frogger
466
Anhang
471
A Virtuelle Geräte verwalten
473
B App veröffentlichen
481
C Android Studio unter Ubuntu Linux
489
D Android Studio unter macOS
495
E Weiterführende Links
501
Index
503