Fachbereich
Automatisierung und Informatik Wernigerode
Handbuch
im Fach
„Mobile Programmierung mit Android“
SoSe 20201
Stand 06.10.2021
Inhaltsverzeichnis
1 Abbildungsverzeichnis ____________________________________________________________ 10 2 Android ________________________________________________________________________ 15 2.1 Installation ________________________________________________________________________ 15
2.1.1 Erste Installation ___________________________________________________________________________ 15 2.1.2 Zweite Installation _________________________________________________________________________ 18
2.2 Erstellen eines neuen Projektes _______________________________________________________ 23 2.3 SDK-Installation ____________________________________________________________________ 25
2.3.1 • SDK durch das Android-Studio runterladen ____________________________________________________ 25 2.3.2 • SDK durch einen Link runterladen ____________________________________________________________ 282.4 Virtuelle Maschine (AVD-Manager) ____________________________________________________ 29 3 Bilder der Projekte _______________________________________________________________ 36
3.1 Spritverbrauch _____________________________________________________________________ 36 3.2 BottomBar Add/Sub/Mult ___________________________________________________________ 37 3.3 TabbedBar Add/Sub/Mult ____________________________________________________________ 38 3.4 Add/Sub/Mult mit Optionsmenu ______________________________________________________ 39 3.5 Swipe-Activity _____________________________________________________________________ 40 3.6 MyNavigation _____________________________________________________________________ 41 3.7 Einfache ListView ___________________________________________________________________ 42 3.8 ListView mit Studenten Datenbank (DataOutputStream) ___________________________________ 43 3.9 ListView mit CheckBoxen ____________________________________________________________ 44 3.10 SQLite (Einstieg) ____________________________________________________________________ 45 3.11 ListView mit Studenten Datenbank (SQLite) _____________________________________________ 46 3.12 Chronometer ______________________________________________________________________ 47 3.13 AlleSensoren ______________________________________________________________________ 48 3.14 XYGrafik __________________________________________________________________________ 49 4 Erste einfache Beispiele ___________________________________________________________ 52
4.1 Wichtige Grundeigenschaften von UI-Elementen _________________________________________ 52 4.2 Erstes Beispiel _____________________________________________________________________ 54
4.2.1 UI-Prinzip _________________________________________________________________________________ 54 4.2.2 Erstellen eines Projektes ____________________________________________________________________ 54 4.2.3 UI-View __________________________________________________________________________________ 56 4.2.4 Umbau des Projektes _______________________________________________________________________ 58 4.2.5 Schalter einfügen __________________________________________________________________________ 60 4.2.6 Zweiten PlainText eintragen __________________________________________________________________ 62 4.2.7 Java-Code ________________________________________________________________________________ 644.3 Zweites Beispiel mit UI-Elementen _____________________________________________________ 68
4.3.1 Anlegen eines neuen Projektes _______________________________________________________________ 68 4.3.2 Anlegen der UI-Elemente ____________________________________________________________________ 68 4.3.3 Anlegen von einer RadioGroup: _______________________________________________________________ 69 4.3.4 Anlegen von zwei RadioButtons: ______________________________________________________________ 69 4.3.5 Anlegen eines Switches: _____________________________________________________________________ 70 4.3.6 Anlegen eines Spinner (Haupteintrag: Containers): _______________________________________________ 70 4.3.7 Anlegen eines 2. Spinner (Haupteintrag: Containers): _____________________________________________ 70
4.3.8 Anlegen eines ToggleButtons _________________________________________________________________ 71 4.3.9 Anlegen eines Buttons ______________________________________________________________________ 71 4.3.10 Anlegen eines MultiLineTextes _____________________________________________________________ 71 4.3.11 onClickAction ___________________________________________________________________________ 72 4.3.12 Java-Code ______________________________________________________________________________ 73
4.4 Drittes Beispiel mit UI-Elementen: Add/Sub-Rechner ______________________________________ 77
4.4.1 Anlegen eines neuen Projektes _______________________________________________________________ 77 4.4.2 Anlegen der UI-Elemente ____________________________________________________________________ 77 4.4.3 Java_Code ________________________________________________________________________________ 84
4.5 Beispiel Spritverbrauch ______________________________________________________________ 87
4.5.1 String-Konstanten __________________________________________________________________________ 89 4.5.2 Farb-Konstanten ___________________________________________________________________________ 90 4.5.3 Spezifikation der UI-Elemente ________________________________________________________________ 90 4.5.4 Java-Code ________________________________________________________________________________ 92 4.5.5 Speichern der Eingabedaten _________________________________________________________________ 94 4.5.6 Laden der Eingabedaten _____________________________________________________________________ 94
5 Einfache UI-Elemente _____________________________________________________________ 95 5.1 TextView (Label) ___________________________________________________________________ 95 5.2 EditText __________________________________________________________________________ 96
5.2.1 Abfrage: __________________________________________________________________________________ 97 5.2.2 ChangeListener ____________________________________________________________________________ 98 5.2.3 Readonly mit einem EditText _________________________________________________________________ 985.3 Button ___________________________________________________________________________ 99
5.3.1 Abfrage: _________________________________________________________________________________ 100 5.3.2 ChangeListener ___________________________________________________________________________ 100 5.3.3 Button Hintergrundfarbe ändern _____________________________________________________________ 100 5.3.4 Button mit Rand (Border) ___________________________________________________________________ 100
5.4 CheckBox ________________________________________________________________________ 102
5.4.1 Abfrage: _________________________________________________________________________________ 103 5.4.2 ChangeListener ___________________________________________________________________________ 103
5.5 RadioButton ______________________________________________________________________ 103
5.5.1 Abfrage: _________________________________________________________________________________ 104 5.5.2 ChangeListener ___________________________________________________________________________ 105
5.6 Switch ___________________________________________________________________________ 106
5.6.1 ChangeListener setzen _____________________________________________________________________ 106 5.6.2 ChangeListener Methode ___________________________________________________________________ 107 5.6.3 Abfrage _________________________________________________________________________________ 107 5.6.4 Zwei Switch als RadioButton einsetzen ________________________________________________________ 107
5.7 Spinner __________________________________________________________________________ 109
5.7.1 Abfrage: _________________________________________________________________________________ 110 5.7.2 ChangeListener ___________________________________________________________________________ 110
6 Menüs (drei Punkte) _____________________________________________________________112 7 Constraint-Layout _______________________________________________________________115 7.1 Attribute ________________________________________________________________________ 115
7.1.1 layout_width _____________________________________________________________________________ 115 7.1.2 layout_height ____________________________________________________________________________ 115
7.2 Konstanten _______________________________________________________________________ 115
7.2.1 Positionskonstanten _______________________________________________________________________ 115
7.3 Weitere Eigenschaften _____________________________________________________________ 117
7.3.1 Ratio ___________________________________________________________________________________ 1177.4 Groups __________________________________________________________________________ 118
7.4.1 Barirers _________________________________________________________________________________ 118 7.4.2 Prozent _________________________________________________________________________________ 118 7.4.3 fillparent ________________________________________________________________________________ 119 7.4.4 Tipps ___________________________________________________________________________________ 119 7.4.5 Unterschiedliche Länge der Beschriftungen ____________________________________________________ 121
8 LinearLayout ___________________________________________________________________123 8.1 vertikal __________________________________________________________________________ 123 8.2 horizontal ________________________________________________________________________ 123 8.3 Gravity-Konstanten ________________________________________________________________ 126 8.4 RelativeLayout ____________________________________________________________________ 126
8.4.1 Beispiele: ________________________________________________________________________________ 1299 TableLayout ___________________________________________________________________130 9.1 Beispiel TableLayout _______________________________________________________________ 130 10 GridLayout ____________________________________________________________________134 11 ListView ______________________________________________________________________138 11.1 Einfaches ListView-Beispiel __________________________________________________________ 139
11.1.1 activity_main.xml _______________________________________________________________________ 139 11.1.2 Darstellung der Zeile ____________________________________________________________________ 140 11.1.3 Java Code _____________________________________________________________________________ 141
11.2 ListView-Beispiel mit Studenten-Adapter ______________________________________________ 143
11.2.1 activity_main.xml _______________________________________________________________________ 143 11.2.2 Strings Konstanten ______________________________________________________________________ 145 11.2.3 Darstellung der Zeile ____________________________________________________________________ 146 11.2.4 Semesterbilder _________________________________________________________________________ 148 11.2.5 Klasse Student _________________________________________________________________________ 148 11.2.6 Quellcode der Klasse Student _____________________________________________________________ 149 11.2.7 StudentenListe _________________________________________________________________________ 150 11.2.8 StudentenAdapter ______________________________________________________________________ 152 11.2.9 Java Code in MainActivity ________________________________________________________________ 154
11.3 ListView Studenten Beispiel Weitere Verfeinerung _______________________________________ 155
11.3.1 Klasse Basis einfügen ____________________________________________________________________ 156 11.3.2 Menü ________________________________________________________________________________ 156 11.3.3 Klick-Events ___________________________________________________________________________ 159 11.3.4 TextViews zum Testen in die neue Activity einfügen ___________________________________________ 161 11.3.5 Aufruf des neuen Views __________________________________________________________________ 164 11.3.6 Parameterübergabe _____________________________________________________________________ 164 11.3.7 EditDeleteNew.java _____________________________________________________________________ 166 11.3.8 Beenden ______________________________________________________________________________ 169 11.3.9 Schalter Cancel _________________________________________________________________________ 170 11.3.10 Schalter Ok für Edit-Action _______________________________________________________________ 170 11.3.11 Abfangen der Rückantwort _______________________________________________________________ 170 11.3.12 Komplettes Layouts der zweiten Acitivty ____________________________________________________ 171 11.3.13 Prüfen der Eingaben ____________________________________________________________________ 176 11.3.14 Schalter Ok in EditDeleteNew.java _________________________________________________________ 177
11.4 Änderungemethoden in der Studentenliste _____________________________________________ 178
11.4.1 Ändern eines Studenten (Studentenliste) ____________________________________________________ 178 11.4.2 Löschen eines Studenten (Studentenliste) ___________________________________________________ 179 11.4.3 Einfügen eines neuen Studenten (Studentenliste) _____________________________________________ 179
11.5 Laden und Speichern (Studentenliste) _________________________________________________ 179
11.5.1 Laden der Studenten: ___________________________________________________________________ 179 11.5.2 Speichern der Studenten: ________________________________________________________________ 180
11.6 Laden und Speichern eines Studenten (Klasse Student.java) _______________________________ 180
11.6.1 Speichern eines Studenten _______________________________________________________________ 181 11.6.2 Laden eines Studenten __________________________________________________________________ 181
11.7 Umbau des Ladens der Liste _________________________________________________________ 182 11.8 Abfrage des Ergebnisses des zweiten Views ____________________________________________ 182 11.9 Symbole im Optionsmenu ___________________________________________________________ 183 11.10 ListView mit Checkboxen _________________________________________________________ 183
11.10.1 row_layout.xml ________________________________________________________________________ 184 11.10.2 Student.java ___________________________________________________________________________ 185 11.10.3 StudentenAdapter ______________________________________________________________________ 185 11.10.4 Optionsmenü __________________________________________________________________________ 18712 MultiPages ____________________________________________________________________191 12.1 Bottom Navigation Activity __________________________________________________________ 191
12.1.1 Neues Projekt erstellen __________________________________________________________________ 193 12.1.2 Struktur des Projektes ___________________________________________________________________ 193 12.1.3 Plätze der Fragmente ____________________________________________________________________ 194 12.1.4 bottom_nav_menu.xml __________________________________________________________________ 195 12.1.5 Anlegen eines neuen Fragments ___________________________________________________________ 198 12.1.6 Testlauf _______________________________________________________________________________ 204 12.1.7 Add-Fragment als Start-Fragemnt setzen. ___________________________________________________ 204 12.1.8 Aktueller Stand_________________________________________________________________________ 205 12.1.9 Weitere Symbole _______________________________________________________________________ 205 12.1.10 Icon aus der Androidliste einfügen _________________________________________________________ 206 12.1.11 Texte für die Fragmente _________________________________________________________________ 209 12.1.12 fragment_add aufbauen _________________________________________________________________ 209 12.1.13 Ändern des activity_main-Layout: _________________________________________________________ 211 12.1.14 Quellcode von fragment_add.xml __________________________________________________________ 212 12.1.15 Add-Fragment-Javacode _________________________________________________________________ 215 12.1.16 Klasse Basis.java ________________________________________________________________________ 217 12.1.17 Tastatur entfernen ______________________________________________________________________ 217 12.1.18 MainActivity.java _______________________________________________________________________ 217 12.1.19 AddFragment.java ______________________________________________________________________ 218 12.1.20 Musterlösung __________________________________________________________________________ 219
12.2 Tabbed Activity ___________________________________________________________________ 220
12.2.1 Neues Projekt erstellen __________________________________________________________________ 222 12.2.2 Struktur des Vorlagen-Projektes ___________________________________________________________ 222 12.2.3 Plätze der Fragmente ____________________________________________________________________ 224 12.2.4 strings.xml ____________________________________________________________________________ 224 12.2.5 Anlegen des neuen AddFragment __________________________________________________________ 225 12.2.6 strings.xml ____________________________________________________________________________ 225 12.2.7 Einfügen des AddFragmentes mit dem Menü. ________________________________________________ 225 12.2.8 SectionsPagerAdapter ___________________________________________________________________ 227 12.2.9 Testlauf _______________________________________________________________________________ 228 12.2.10 Eintragen der XML-Daten in fragment_add.xml _______________________________________________ 228 12.2.11 Eintragen des Quellcodes in Addfragment.java _______________________________________________ 231 12.2.12 Klasse Basis.java ________________________________________________________________________ 234 12.2.13 Aktueller Stand_________________________________________________________________________ 234 12.2.14 Löschen der vorgefertigten Fragmente _____________________________________________________ 235 12.2.15 Ändern in SectionsPageAdapter ___________________________________________________________ 235 12.2.16 Erstellen der restlichen Fragmente _________________________________________________________ 236
12.2.21 MainActivity.java _______________________________________________________________________ 245 12.2.22 AddFragment.java ______________________________________________________________________ 246 12.2.23 Musterlösung __________________________________________________________________________ 247
12.3 Tabbed Activity mit Optionsmenu mit Empty-Activit _____________________________________ 248
12.3.1 Neues Projekt __________________________________________________________________________ 248 12.3.2 Anlegen und Kopieren der Klasse Basis.java __________________________________________________ 248 12.3.3 strings.xml ____________________________________________________________________________ 249 12.3.4 Anlegen der drei Fragmente Add, Sub, Mult _________________________________________________ 249 12.3.5 Ändern der Texte in den Fragmenten: ______________________________________________________ 252 12.3.6 activity_main.xml _______________________________________________________________________ 253 12.3.7 Navigation ____________________________________________________________________________ 253 12.3.8 Testlauf _______________________________________________________________________________ 254 12.3.9 Optionsmenu erstellen __________________________________________________________________ 254 12.3.10 Optionsmenu einfügen in die mainActivity __________________________________________________ 256 12.3.11 Optionsmenu-Start-Event abfangen ________________________________________________________ 257 12.3.12 Optionsmenu-Klick-Event abfangen ________________________________________________________ 257 12.3.13 Navigationscontroller ___________________________________________________________________ 257 12.3.14 Fragment Add _________________________________________________________________________ 258 12.3.15 AddFragment.java ______________________________________________________________________ 261 12.3.16 Fragment Sub __________________________________________________________________________ 263 12.3.17 SubFragment.java ______________________________________________________________________ 266 12.3.18 Fragment Mult _________________________________________________________________________ 268 12.3.19 MultFragment.java _____________________________________________________________________ 271 12.3.20 Abbildung der Musterlösung ______________________________________________________________ 273
12.4 Tabbed Activity mit Optionsmenu mit Bottom-Navigation Vorlage __________________________ 274
12.4.1 Neues Projekt __________________________________________________________________________ 274 12.4.2 strings.xml ____________________________________________________________________________ 275 12.4.3 Anlegen der drei Fragmente Add, Sub, Mult _________________________________________________ 275 12.4.4 Ändern der Texte in den Fragmenten: ______________________________________________________ 277 12.4.5 activity_main.xml _______________________________________________________________________ 278 12.4.6 Kopieren der Symbole oder Einfügen von neuen Symbolen _____________________________________ 279 12.4.7 Navigation ändern bztw. löschen __________________________________________________________ 281 12.4.8 Navigation in MainActivity.java ____________________________________________________________ 283 12.4.9 Testlauf mit und ohne Symbole ___________________________________________________________ 284 12.4.10 Eintragen des Fragments Add _____________________________________________________________ 285 12.4.11 Anlegen und Kopieren der Klasse Basis.java __________________________________________________ 287 12.4.12 AddFragment.java (ohne Packagezeile) _____________________________________________________ 289 12.4.13 Fragment Sub __________________________________________________________________________ 291 12.4.14 SubFragment.java ______________________________________________________________________ 294 12.4.15 Fragment Mult _________________________________________________________________________ 297 12.4.16 MultFragment.java _____________________________________________________________________ 299 12.4.17 Abbildung der Musterlösung ______________________________________________________________ 302
12.5 Swipe-Activity ____________________________________________________________________ 304
12.5.1 Anlegen des Projektes ___________________________________________________________________ 304 12.5.2 activity_main.xml _______________________________________________________________________ 305 12.5.3 Kopieren der Bilder _____________________________________________________________________ 305 12.5.4 Anlegen des Fragments __________________________________________________________________ 305 12.5.5 Ändern der Factory _____________________________________________________________________ 306 12.5.6 SectionsPageAdapter ____________________________________________________________________ 308 12.5.7 fragment_picture.xml ___________________________________________________________________ 309 12.5.8 PictureFragment.java ____________________________________________________________________ 309
12.6 Master Detail Activity ______________________________________________________________ 315
12.7 Eigene Navigation _________________________________________________________________ 316
12.7.1 Musterlösung __________________________________________________________________________ 316 12.7.2 Projekt anlegen ________________________________________________________________________ 317 12.7.3 Vorarbeiten ___________________________________________________________________________ 318 12.7.4 Startbildschirm _________________________________________________________________________ 318 12.7.5 Neue Packages _________________________________________________________________________ 32112.7.6 Bottom Navigation Activity _______________________________________________________________ 323 12.7.7 Tabbed Bar Activity _____________________________________________________________________ 324 12.7.8 ListView ______________________________________________________________________________ 328
13 Activity aufrufen________________________________________________________________333 13.1 Neue Activity erstellen, mittels Menü _________________________________________________ 333 14 Optionsmenü __________________________________________________________________336
14.1 Menü erstellen____________________________________________________________________ 336 14.2 Datei menu.xml anlegen ____________________________________________________________ 336 14.3 Menüeinträge erstellen _____________________________________________________________ 337 14.4 Optionsmenu einfügen in die mainActivity _____________________________________________ 338 14.5 Optionsmenu-Start-Event abfangen ___________________________________________________ 339 14.6 Optionsmenu-Klick-Event abfangen ___________________________________________________ 339 15 Einfache Sofort-Dialoge (alert-Dialoge) _____________________________________________340
15.1 Alert-Dialog ok und cancel Schalter ___________________________________________________ 340 15.2 Alert-Dialog yes und no Schalter ______________________________________________________ 341 15.3 Alert-Dialog no und yes Schalter ______________________________________________________ 342 15.4 Alert-Dialog yes,no und cancel Schalter ________________________________________________ 343 15.5 Alert-Dialog mit der Auswahl aus einer Liste ____________________________________________ 345 15.6 Alert-Dialog mit eigenem Layout _____________________________________________________ 346 16 Speichern mittels DataOutputStream und DataInputStream ____________________________350
16.1 DataOutputStream ________________________________________________________________ 350
16.1.1 Pures Java _____________________________________________________________________________ 350 16.1.2 DataOutputStream in Android ____________________________________________________________ 350 16.1.3 Methoden der Klasse DataOutputStream____________________________________________________ 35116.2 DataInputStream __________________________________________________________________ 351
16.2.1 Pures Java _____________________________________________________________________________ 352 16.2.2 DataInputStream in Android ______________________________________________________________ 352 16.2.3 Methoden der Klasse DataInputStream _____________________________________________________ 353
16.3 Beispiele _________________________________________________________________________ 353
16.3.1 Speichern und laden einer Instanz einer Klasse _______________________________________________ 353 16.3.2 Speichern und laden von mehreren Instanzen einer Klasse _____________________________________ 355
17 Die Datenbank SQLite ___________________________________________________________359 17.1 SQLite ___________________________________________________________________________ 359
17.1.1 Eigenschaften __________________________________________________________________________ 359 17.1.2 Datentypen ___________________________________________________________________________ 359 17.1.3 Gemappte Datentypen __________________________________________________________________ 359 17.1.4 Aufbau in Android ______________________________________________________________________ 360 17.1.5 Datenbank erzeugen ____________________________________________________________________ 361 17.1.6 Insert ________________________________________________________________________________ 362 17.1.7 getQuery _____________________________________________________________________________ 363 17.1.8 Löschen der Datenbank __________________________________________________________________ 364
17.2 Beispiel einer einfachen SQLite-App ___________________________________________________ 364
17.2.1 Anlegen eines Projektes _________________________________________________________________ 365
17.2.6 DBSOpenHandler.java ___________________________________________________________________ 369 17.2.7 DBSQueries____________________________________________________________________________ 371 17.2.8 Basis.java _____________________________________________________________________________ 374 17.2.9 MainActivity ___________________________________________________________________________ 374 17.2.10 ShowStudentsActivity1 __________________________________________________________________ 376 17.2.11 ShowStudentsActivity2 __________________________________________________________________ 380
18 ListView und die Studentendatenbank ______________________________________________385 18.1 Einfügen der Klasse DBSOpenHandler _________________________________________________ 385 18.2 Klasse Student ____________________________________________________________________ 386 18.3 DBSQueries ______________________________________________________________________ 387 18.4 MyCursorAdapter _________________________________________________________________ 389 18.5 MainActivity ______________________________________________________________________ 390 18.6 EditDeleteNewActivity _____________________________________________________________ 393 19 Sensoren ______________________________________________________________________398
19.1 Sensor-Typen _____________________________________________________________________ 398 19.2 Allgemeiner Aufbau ________________________________________________________________ 398 19.3 Beispiele der Sensoren _____________________________________________________________ 399
19.3.1 Accelerator (Beschleunigung ) ____________________________________________________________ 399 19.3.2 Temperatur ___________________________________________________________________________ 400 19.3.3 Gravity (Schwerkraft) ____________________________________________________________________ 400 19.3.4 Gyroskope (Lade, zum Beispiel für Spiele) ___________________________________________________ 401 19.3.5 Magnetfeld (für Kompass) ________________________________________________________________ 402 19.3.6 Luftdruck (Pressure) _____________________________________________________________________ 403 19.3.7 Luftfeuchtigkeit (Humidity) _______________________________________________________________ 404 19.3.8 Licht (Light) ____________________________________________________________________________ 40519.4 Alle Sensoren _____________________________________________________________________ 407
19.4.1 String.xml _____________________________________________________________________________ 407 19.4.2 Color.xml _____________________________________________________________________________ 407 19.4.3 activity_main.xml _______________________________________________________________________ 408 19.4.4 Klasse SensorItem.java __________________________________________________________________ 410 19.4.5 MainActivity.java _______________________________________________________________________ 410
20 Chronometer __________________________________________________________________417 20.1 Projekt-Erstellung _________________________________________________________________ 417 20.2 colors.xml ________________________________________________________________________ 417 20.3 strings.xml _______________________________________________________________________ 418 20.4 Layout: __________________________________________________________________________ 418 20.5 MainActivity.java __________________________________________________________________ 421 21 Grafik ________________________________________________________________________423
21.1 Minimale Grafik ___________________________________________________________________ 423
21.1.1 activity_main.xml _______________________________________________________________________ 424 21.1.2 Klasse Graphic _________________________________________________________________________ 424 21.1.3 drawPaint-Methoden: ___________________________________________________________________ 426 21.1.4 Grafik-Methoden: ______________________________________________________________________ 427 21.1.5 Querformat ___________________________________________________________________________ 427 21.1.6 MainActivity.java _______________________________________________________________________ 428 21.1.7 colors.xml _____________________________________________________________________________ 42821.2 XYGrafik _________________________________________________________________________ 428
21.2.1 activity_main.xml _______________________________________________________________________ 429
21.2.2 Querformat ___________________________________________________________________________ 429 21.2.3 menu-xml _____________________________________________________________________________ 430 21.2.4 colors.xml _____________________________________________________________________________ 430 21.2.5 strings.xml ____________________________________________________________________________ 431 21.2.6 Übersicht über die Klasse XYGraphic _______________________________________________________ 431 21.2.7 Klasse XYGraphic _______________________________________________________________________ 436 21.2.8 MainActivity.java _______________________________________________________________________ 453 21.2.9 MainActivity.java _______________________________________________________________________ 457 21.2.10 Beispielbilder __________________________________________________________________________ 463
22 Portrait und Landscape erkennen (Querformat) ______________________________________468 22.1 Quellcode Portrait und Landscape ____________________________________________________ 468 22.2 Grafikbeispiel _____________________________________________________________________ 469 22.3 Normales Layout __________________________________________________________________ 470
22.3.1 Vorgaben _____________________________________________________________________________ 47122.4 Anlegen einer Portrait-Activity _______________________________________________________ 474
22.4.1 activity_portrait.xml ____________________________________________________________________ 474 22.4.2 ActivityPortrait.java _____________________________________________________________________ 476
22.5 Landscape-Variante ________________________________________________________________ 478
22.5.1 Quellcode _____________________________________________________________________________ 478 22.5.2 Umbau zur Landscape-Activity ____________________________________________________________ 478
23 Anhang _______________________________________________________________________481
23.1 toast ____________________________________________________________________________ 481
23.2 decimalFormat ____________________________________________________________________ 481
23.3 Umwandlung eines Textes in eine Integer-Zahl __________________________________________ 481
23.4 Umwandlung eines Textes in eine Float-Zahl ____________________________________________ 482
23.5 Random-Zahl erzeugen _____________________________________________________________ 483
23.6 ListView, Update __________________________________________________________________ 483
23.7 Constraint-Layout, zwei Editoren untereinander _________________________________________ 484
23.8 Klasse Basis.java __________________________________________________________________ 485
23.9 onClick, Code Behind _______________________________________________________________ 486
23.10 Runde Button __________________________________________________________________ 487
23.10.1 Version 1 _____________________________________________________________________________ 487 23.10.2 Version 3 _____________________________________________________________________________ 487 23.10.3 Version 3 _____________________________________________________________________________ 488 23.10.4 Version 4 _____________________________________________________________________________ 48923.11 Erstellen eines „Plus“-Icons _______________________________________________________ 490
23.12 Beispiel Symbole ________________________________________________________________ 492
24 Stichwortverzeichnis ____________________________________________________________497
1 Abbildungsverzeichnis
Abbildung 1 Begrüßungsdialog ... 15
Abbildung 2 Bitte mit der Virtualisierung ... 16
Abbildung 3 Installationsordner (Meine Wahl: c:\Android Studio) ... 16
Abbildung 4 Eintrag im Startmenü ... 16
Abbildung 5 Entzippen des Installationsprogramms ... 17
Abbildung 6 Die Installation wurde entzippt ... 17
Abbildung 7 Der erste Teile, der schnellere, ist beendet. ... 17
Abbildung 8 Import von vorherigen Versionen )optional) ... 18
Abbildung 9 Download des SDK ... 18
Abbildung 10 Warten vor denm langen Download ... 18
Abbildung 11 Hier Custom auswählen ... 19
Abbildung 12 Bessere Wahl ... 19
Abbildung 13 Java Runtime Edition Ordner (ja nach Pfad anders) ... 19
Abbildung 14 Farbwahl ... 20
Abbildung 15 Bitte unbedingt beide Haken setzen ... 20
Abbildung 16 Wer nicht mindestens 16 Hauptspeicher hat, unbedingt nichts ändern ... 20
Abbildung 17 Liste der Downloads ... 21
Abbildung 18 Jetzt geht der zweite Teil richtig los! ... 21
Abbildung 19 Laden der Zusatzdateien ... 21
Abbildung 20 Immer noch runterladen ... 22
Abbildung 21 Immer noch runterladen ... 22
Abbildung 22 Startdialog ... 23
Abbildung 23 Android Startfenster ... 23
Abbildung 24 Auswahl "Empty Activity" ... 24
Abbildung 25 Eigenschaften des neuen Projektes ... 24
Abbildung 26 Neues Projekt im Android Studio ... 25
Abbildung 27 Aufruf SDK Manager ... 26
Abbildung 28 SDK erstellen (Auswahl der Komponenten) ... 26
Abbildung 29 SDK Verzeichnis erstellen ... 27
Abbildung 30 Runterladen von Komponenten ... 27
Abbildung 31 SDK ist nun installiert ... 28
Abbildung 32 Aufruf SDK Manager ... 29
Abbildung 33 Erstellen einer virtuellen Maschine ... 29
Abbildung 34 Auswahl des Smartphones ... 30
Abbildung 35 Nun ein weiterer Download ... 31
Abbildung 36 Lizenz Bedingungen ... 32
Abbildung 37 Endlich fertig ... 32
Abbildung 38 Anzeige aller virtuellen Maschinen ... 33
Abbildung 39 Eigenschaften der virtuellen Madschine ... 33
Abbildung 40 Abschlussdialog ... 34
Abbildung 41 Die eventuelle Sicherheitsabfrage bejahen ... 35
Abbildung 42 Neue Projekt ... 54
Abbildung 43 Daten des ersten Projektes ... 55
Abbildung 44 Das erste Rumpfprojekt ... 55
Abbildung 45 UI-View im Textmodus ... 56
Abbildung 46 UI-View im Grafikmodus ... 57
Abbildung 47 UI-View im Textmodus / Grafikmodus ... 57
Abbildung 48 Constrainst des ersten TextViews ... 58
Abbildung 49 Anzeige des ersten Beispiels ... 59
Abbildung 50 Constrainst des ersten PlainText-Elemenmtes ... 60
Abbildung 51 Constrainst des Schalters ... 61
Abbildung 52 Constrainst des ersten PlainText-Elemenmtes ... 63
Abbildung 53 Textcolor ändern ... 63
Abbildung 54 Textsize ändern ... 63
Abbildung 55 Das User-Interface des ersten Beispiels ... 64
Abbildung 56 Anlegen des zweiten Beispiels Bsp02 ... 68
Abbildung 57 Constrainst der CheckBox ... 69
Abbildung 58 Constrainst der RadioGroup ... 70
Abbildung 59 Constrainst des Switch ... 70
Abbildung 60 Switch-Aussehen ... 70
Abbildung 61 Constrainst der Überschrift ... 77
Abbildung 62 Constrainst derersten Beschriftung ... 78
Abbildung 63 Constrainst der 1. Zahl ... 78
Abbildung 64 Constrainst zweiten Beschriftung ... 78
Abbildung 65 Constrainst der 2. Zahl ... 79
Abbildung 66 Erster Stand des dritten Beispiels ... 79
Abbildung 67 Constrainst der dritten Beschriftung ... 80
Abbildung 68 Musterlösung ... 87
Abbildung 69 Berechnung nach der Berechnung Europa ... 88
Abbildung 70 Berechnung nach der Berechnung USA ... 89
Abbildung 71 Neue XML-Date für Border anlegen ... 101
Abbildung 72 Button mit rotem Rand ... 102
Abbildung 73 Alternatives Aussehen eines Buttons... 102
Abbildung 74 5.6.4 Zwei Switch als RadioButton einsetzen ... 107
Abbildung 75 Anlegen einer Menüdatei ... 112
Abbildung 76 Aktueller Strukturbaum des Projektes ... 113
Abbildung 77 Anzeige eines Menüs ... 113
Abbildung 78 Menü New und Delete ... 114
Abbildung 79 Menü for das Anzeigen der Baseline ... 120
Abbildung 80 Anzeige der Baseline ... 120
Abbildung 81 Verknüpfen der beiden Baseline ... 120
Abbildung 82 Gleiche Länge von Beschriftungen ... 121
Abbildung 83 Unterschiedliche Länge von Beschriftungen ... 122
Abbildung 84 Überblick eines Adapters ... 138
Abbildung 85 Anlegen der Datei simplerow.xml ... 140
Abbildung 86 Einfache ListView mit einem ArrayAdapter ... 142
Abbildung 87 ListView StudentenListe ... 144
Abbildung 88 ListView, View zum Bearbeiten ... 144
Abbildung 89 Struktur des Beispiels ListView mit Studenten ... 145
Abbildung 90 Anlegen der Datei row_layout.xml ... 146
Abbildung 91 Aktuelle Struktur des Projektes ... 148
Abbildung 92 Klasse Student ... 149
Abbildung 93 Klasse Studentenliste ... 151
Abbildung 94 Neue Klasse StudnetenAdapter ... 152
Abbildung 95 Erste Fassung der ListView mit Studenten ... 155
Abbildung 96 Klasse Basis.java ... 156
Abbildung 97 Anlegen einer Menüdatei ... 157
Abbildung 98 Aktueller Strukturbaum des Projektes ... 157
Abbildung 99 Anzeige eines Menüs ... 158
Abbildung 100 Menü New ... 158
Abbildung 105 Startanzeige mit Anklicken eines Eintrags ... 169
Abbildung 106 Anzeige der Details ... 169
Abbildung 107 Aktueller Stand der Studenten-ListView ... 175
Abbildung 108 Auswahl des Semesters ... 176
Abbildung 109 Auswahl der Note ... 176
Abbildung 110 ListView im Selected-Modus ... 184
Abbildung 111 Ansicht des Vorlagen-Projektes (BottomNavigation) ... 191
Abbildung 112 Fertiges Projekt ... 191
Abbildung 113 Komplette Struktur der Musterlösung ... 192
Abbildung 114 Bottom Navigation Activity ... 193
Abbildung 115 Eintrag "ui" aktivieren ... 198
Abbildung 116 Neues Package erstellen ... 198
Abbildung 117 Neues Package "add" erstellen ... 198
Abbildung 118 Das neue Package "add" wird eingetragen ... 199
Abbildung 119 Einfügen eines neuen Fragmentes ... 200
Abbildung 120 Dialog zum Eintragen des Namens des neuen Fragments ... 200
Abbildung 121 Eintragen des Namens des neuen Fragments ... 201
Abbildung 122 ViewModel Auswahl für ein neues Fragment ... 201
Abbildung 123 Aktueller Stand des Bottom-Navigation-Beispiels (mit Add-Fragment) ... 205
Abbildung 124 Auswahl des Menueintrags „drawable Symbol“ ... 207
Abbildung 125 Auswahldes neuen Vektore-Symbols ... 208
Abbildung 126 Auswahl des Plus-Symbols... 208
Abbildung 127 Framelayout umwandeln in ein Constraint-Layout ... 210
Abbildung 128 Popupmenu zum Umwandeln ins Constraint-Layout ... 210
Abbildung 129 Änderungsmeldung bezüglich des Constraint-Layout... 210
Abbildung 130 actionBarSize ... 211
Abbildung 131 Bottom-Navigation ohne ActionBar-Padding ... 212
Abbildung 132 Struktur der fragment-add-xml-Datei ... 215
Abbildung 133 Anzeige der Meldung bei korrekter Lösung ... 219
Abbildung 134 Anzeige der Meldung bei falscher Lösung ... 219
Abbildung 135 Ansicht des Vorlagen-Projektes (leicht verändert) ... 220
Abbildung 136 Fertiges Projekt ... 220
Abbildung 137 Komplette Struktur der Musterlösung ... 221
Abbildung 138 Bottom Navigation Activity ... 222
Abbildung 139 Vorlagenstruktur des Tabbed Projektes ... 223
Abbildung 140 Einfügen eines neuen Fragments ... 225
Abbildung 141 Dialog zum Eintragen des Namens des neuen Fragments ... 226
Abbildung 142 Eintragen des Namens des neuen Fragments ... 226
Abbildung 143 ViewModel Auswahl für ein neues Fragment ... 226
Abbildung 144 Aktueller Stand des TabbedBar-Beispiels (mit Add-Fragment) ... 234
Abbildung 145 Anzeige der Meldung bei korrekter Lösung ... 247
Abbildung 146 Anzeige der Meldung bei falscher Lösung ... 247
Abbildung 147 Anlegen des Ordners navigation im Eintrag "res" ... 253
Abbildung 148 Anlegen eines Ordners "menu"... 255
Abbildung 149 Erstellen der xml-Datei "menu.xml" ... 255
Abbildung 150 AddSubMult in Optionsmenu ... 273
Abbildung 151 AddSubMult in Optionsmenu ... 273
Abbildung 152 Vector Asset ... 279
Abbildung 153 Symbole in Vector Asset ... 280
Abbildung 154 Symbol add ausgewählt ... 280
Abbildung 155 Symbol "ic_round_add_box_24" ... 281
Abbildung 156 AddSubMult in Optionsmenu ... 303
Abbildung 157 AddSubMult in Optionsmenu ... 303
Abbildung 158 Auswahl einer Tabbed Activity ... 304
Abbildung 159 Name der Tabbed Activity: SwipeTabbedActivity ... 304
Abbildung 160 Anlegen eines Pictures-Fragment ... 306
Abbildung 161 Fragment mit Factory ... 306
Abbildung 162 Anzeige der Swipe-Musterlösung ... 314
Abbildung 163 Startbildschirm ... 316
Abbildung 164 Vorspeisen ... 316
Abbildung 165 Hauptspeise ... 316
Abbildung 166 Nachspeise ... 316
Abbildung 167 Projekttyp "Empty Activity" ... 317
Abbildung 168 Projektname BspMyNavigation ... 317
Abbildung 169 Anzeige der drei neuen Packages ... 321
Abbildung 170 Neues Package ... 322
Abbildung 171 Eingabe des Namens des neuen Package ... 322
Abbildung 172 Eingabe des Namens "vorspeisen" ... 322
Abbildung 173 Eintragen der Bottom-Navigation ... 323
Abbildung 174 Einfügen der Activity VorspeisenActivity ... 323
Abbildung 175 Eintragen der Tabbed Activity ... 325
Abbildung 176 Einfügen der Activity VorspeisenActivity ... 325
Abbildung 177 PizzaFragment erstellen ... 326
Abbildung 178 ZucchiniFragment erstellen ... 327
Abbildung 179 Eintragen der Empty Activity ... 329
Abbildung 180 Einfügen der Activity NachspeisenActivity ... 329
Abbildung 181 PizzaFragment erstellen ... 330
Abbildung 182 Erstellen einer neuen Activity ... 333
Abbildung 183 Eingabe des Namens für die neue Activity ... 334
Abbildung 184 Anlegen eines Ordners "menu"... 336
Abbildung 185 Erstellen der xml-Datei "menu.xml" ... 336
Abbildung 186 Beispiel für Symbole des Optionsmenus ... 337
Abbildung 187 Neues Symbol im Optionsmenu ... 338
Abbildung 188 Anzeige der Einträge im Optionsmenu (mit Symbolen) ... 338
Abbildung 189 Alert-Dialog (ok, cancel) ... 341
Abbildung 190 Alert-Dialog (yes,no) ... 342
Abbildung 191 Alert-Dialog (no, yes) ... 343
Abbildung 192 Alert-Dialog (yes,no,cancel) ... 344
Abbildung 193 Alert-Dialog mit RadioButtonliste ... 346
Abbildung 194 Grafische Ansicht des Layouts ... 348
Abbildung 195 Alert-Dialog mit RadioButtonliste ... 349
Abbildung 196 Übersicht über SQLIte in Android ... 361
Abbildung 197 Löschen der Daten eines Simulators ... 364
Abbildung 198 Struktur des ersten SQLite-Beispiels ... 365
Abbildung 199 Musterlösung des ersten SQLIte-Beispiels ... 365
Abbildung 200 row_layout für die Datenbank-Anzeige ... 377
Abbildung 201 LiustView mit einem SimpleCursorAdapter ... 379
Abbildung 202 row_layout für die Datenbank-Anzeige ... 380
Abbildung 203 Start des Projektes "Alle Sensoren" ... 407
Abbildung 204 Sonsor Magnetfeld + Accelerator ... 407
Abbildung 205 Musterlösung einer Stoppuhr und eines Counddown-Zählers ... 417
Abbildung 206 Layout des Chronometers ... 418
Abbildung 207 Anzeige der minimalen Grafik ... 423
Abbildung 208 Text mit Style Stroke ... 426
Abbildung 213 3. Beispiel mit der XY-Grafik ... 464
Abbildung 214 4. Beispiel mit der XY-Grafik ... 464
Abbildung 215 5. Beispiel mit der XY-Grafik (VBalken) ... 465
Abbildung 216 6. Beispiel mit der XY-Grafik (Timer) ... 465
Abbildung 217 6. Beispiel mit der XY-Grafik (Timer) ... 466
Abbildung 218 Startfenster ... 471
Abbildung 219 Portrait-Activity ... 471
Abbildung 220 Runder Button ... 487
Abbildung 221 Runder Button ... 488
Abbildung 222 Runder Button ... 488
Abbildung 223 Runder Button ... 489
Abbildung 224 Auswahl des Menueintrags „drawable Symbol“ ... 490
Abbildung 225 Auswahldes neuen Vektore-Symbols ... 491
Abbildung 226 Auswahl des Plus-Symbols... 491
2 Android
Dieses Kaptels zeigt die beiden Installationsprozeduren und die Prozedure des „Nachladens“. Android wird während des Arbeitens immer mal wieder neue Dateien laden.
Hinweis:
Der Rechner sollte ein 64-Bit-System sein und mindestens 8 GB Hauptspeicher haben.
2.1 Installation
Die Installation verläuft in fünf Schritten:
Download der Exe-Datei bzw. dgm-Datei
Erste Installation
Aufruf und laden weiterer Dateien
Runterladen des SDK
Runterladen der virtuellen Maschine
2.1.1 Erste Installation
Abbildung 1 Begrüßungsdialog
Abbildung 2 Bitte mit der Virtualisierung
Abbildung 3 Installationsordner (Meine Wahl: c:\Android Studio)
Abbildung 4 Eintrag im Startmenü
Abbildung 5 Entzippen des Installationsprogramms
Abbildung 6 Die Installation wurde entzippt
2.1.2 Zweite Installation Nun starten des Android Studios:
Im zweiten Teile werden die SDK, Emulatoren etc. geladen.
Abbildung 8 Import von vorherigen Versionen )optional)
Abbildung 9 Download des SDK
Abbildung 10 Warten vor denm langen Download
Abbildung 11 Hier Custom auswählen
Abbildung 12 Bessere Wahl
Abbildung 14 Farbwahl
Abbildung 15 Bitte unbedingt beide Haken setzen
Abbildung 16 Wer nicht mindestens 16 Hauptspeicher hat, unbedingt nichts ändern
Abbildung 17 Liste der Downloads
Abbildung 18 Jetzt geht der zweite Teil richtig los!
Dauer der letzten Teile der Installation: ca. 30 bis 60 Minuten
Abbildung 20 Immer noch runterladen
Abbildung 21 Immer noch runterladen
Abbildung 22 Startdialog
Nun ein neues Projekt anlegen. Danach muss das SDK und mindestens eine virtuelle Maschine angelegt werden.
2.2 Erstellen eines neuen Projektes
a) Aufruf des Androis Studios
Abbildung 23 Android Startfenster
b) Schalter „Start anew Android Studio project“ anklicken
Abbildung 24 Auswahl "Empty Activity"
Abbildung 25 Eigenschaften des neuen Projektes
Einträge:
Name TestSDK
Save location D:\progs\Android\TestSDK o Bitte erstellen einen Ordner für Ihre Projekte
Language Java
Minimum SDK API 22 Android 5.1
Abbildung 26 Neues Projekt im Android Studio
2.3 SDK-Installation
Zwei Varianten:
SDK durch das Android-Studio runterladen
SDK durch einen Link runterladen
2.3.1 • SDK durch das Android-Studio runterladen Menü Tools
Eintrag SDK Manager
Abbildung 27 Aufruf SDK Manager
Nun Anklicken des Android SDK 10.0, so dass die Teilkomponenten sichtbar werden. Das komplette SDK ist mit dem Quellcode zu groß.
Abbildung 28 SDK erstellen (Auswahl der Komponenten)
Nun den Schalter „Edit“ für den Ordner des SDK betätigen.
Abbildung 29 SDK Verzeichnis erstellen
Mit dem Schalter „Next“ wird das SDK runtergeladen. Das dauert ca. 30 Minuten.
Abbildung 30 Runterladen von Komponenten
Abbildung 31 SDK ist nun installiert
Mit dem Schalter „ok“ den Dialog beenden.
2.3.2 • SDK durch einen Link runterladen
Link: https://www.miwilhelm.de/scripte/android/Android-SDK.zip Menü Tools
Eintrag SDK Manager
Abbildung 32 Aufruf SDK Manager
Nun den Schalter „edit“ anklicken und den ordner auswählen.
2.4 Virtuelle Maschine (AVD-Manager)
Menü Tools,
Eintrag AVD-Manager
Abbildung 33 Erstellen einer virtuellen Maschine
Abbildung 34 Auswahl des Smartphones
Bitte wählen Sie nicht ein Smartphone aus, welches eine zu hohe Auflösung hat. Die Anzeige des
„Smartphone“ muss ja auch auf Ihrem Bildschirm passen.
Abbildung 35 Nun ein weiterer Download
Abbildung 36 Lizenz Bedingungen
Abbildung 37 Endlich fertig
Abbildung 38 Anzeige aller virtuellen Maschinen
Abbildung 40 Abschlussdialog
Nun starten des Projektes mit
Menu Run, Eintrag Run 'App'
oder
Shift F10
Ergebnis:
Abbildung 41 Die eventuelle Sicherheitsabfrage bejahen
3 Bilder der Projekte
3.1 Spritverbrauch
Bild Bemerkung
Einfacher Rechner
Speichern der Daten mit DataOutputStream
Laden der Daten mit DataInputStream
3.2 BottomBar Add/Sub/Mult
Bild Bemerkung
BottomBar-Navigation
Arbeitet mit Fragmenten
3.3 TabbedBar Add/Sub/Mult
Bild Bemerkung
TabbedBar-Navigation
Arbeitet mit Fragmenten
3.4 Add/Sub/Mult mit Optionsmenu
Bild Bemerkung
Navigation mit Optionsmenu
Arbeitet mit Fragmenten
3.5 Swipe-Activity
Bild Bemerkung
Benutzt ein TabbedBar
Navigation mit Swipe (links und rechts)
Arbeitet mit Fragmenten
3.6 MyNavigation
Es gibt eine Einstiegsactivity, welches zu drei verschiedenen Activities verzweigt:
Bild Bemerkung
Startseite mit Schaltern Vorspeise:
- BottomNavigation Hauptspeise:
- TabbedBarNavigation Nachspeise:
- ListView
3.7 Einfache ListView
Bild Bemerkung
Benutzt ein Array als Quelle
Als Adapter zur ListView wird ein ArrayAdapter
verwendet
3.8 ListView mit Studenten Datenbank (DataOutputStream)
Speichern und Laden der Daten mit DataOutputStream und DataInputStream
Als Adapter zur ListView wird ein BaseAdapter verwendet. Die vier Methoden werden manuell implementiert.
Es benutzt ein eigenständiges Row-Layout.
Es hat einen long-ClickEvent.
Es hat einen short-ClickEvent.
Eintragen eines neuen Studierenden mittel Optionmenu
Bild Bild
3.9 ListView mit CheckBoxen
Kein Speichern und Laden.
Als Adapter zur ListView wird ein BaseAdapter verwendet. Die vier Methoden werden manuell implementiert.
Die Markierungen werden über das Optionsmenu geregelt.
Es benutzt ein eigenständiges Row-Layout.
Es hat einen long-ClickEvent.
Es hat einen short-ClickEvent.
Eintragen eines neuen Studierenden mittels Optionmenu
Bild Bemerkung
3.10 SQLite (Einstieg)
Speichern und Laden der Daten mit einer SQLite Datenbank
Anzeigen:
o Editor
o Einfache ListView
o ListView mit Row-Layout
Bild Bemerkung
3.11 ListView mit Studenten Datenbank (SQLite)
Speichern und Laden der Daten mit DataOutputStream und DataInputStream
Als Adapter zur ListView wird ein CursorAdapter verwendet. Die vier Methoden werden manuell implementiert.
Dummydaten können über das Optionsmenü eingetragen werden.
Es benutzt ein eigenständiges Row-Layout.
Es hat einen long-ClickEvent.
Es hat einen short-ClickEvent.
Eintragen eines neuen Studierenden mittel Optionmenu
Bild Bild
3.12 Chronometer
StoppUhr
CountDown
Bild Bild
3.13 AlleSensoren
Der Typ des Sensors wird über einen Spinner ausgewählt
Bild Bild
3.14 XYGrafik
Die XY-Grafik ist in einer Datei gespeichert.
Man braucht nur ein LinearLayout, um die Grafik zu implementieren.
Jetzt auch mit vertikalen Balken.
Mit Timer realisiert
4 Erste einfache Beispiele
4.1 Wichtige Grundeigenschaften von UI-Elementen
Grundeigenschaften
id
o Die id wird zur Verknüpfung mit dem Java-Code und in den XML-Dateien benötigt.
o Beispiel:
@+id/textview1
@+id/nachname
@+id/bnOkay
layout_width
o Die Breite kann entweder einen festen Wert haben, wrap_content oder match_parent beinhalten.
o Fester Wert: 120sp, 12dp, 12px o Breite über eine id: @+id/tinput
o wrap_content zeigt an, dass die Breite so gesetzt wird, dass der komplette Inhalt zu sehen ist.
o match_parent zeigt an, dass nur die Breite komplett über die „Zeile“ geht (abzüglich der beiden Ränder). Die Breite richtet sich auch nach der Schriftgröße.
layout_height match_parent / wrap_content / @id/
o Die Höhe kann entweder einen festen Wert haben, wrap_content oder match_parent beinhalten.
o Fester Wert: 24sp
o Höhe über eineid: @+id/tinput
o wrap_content zeigt an, dass die Höhe so gesetzt wird, dass der komplette Inhalt zu sehen ist.
o match_parent zeigt an, dass nur die Höhe komplett über die „Zeile“ geht (abzüglich der beiden Ränder). Die Höhe richtet sich auch nach der Schriftgröße.
layout_marginStart o Linker Rand
layout_marginEnd o Rechter Rand
layout_marginTop o Oberer Rand
layout_marginBottom
o Unterer Rand (sinvoll nur wenn die Höhe „match_parent“ ist).
gravity
TextView (zusätzliche Eigenschaften)
text
textAlignment ="viewStart"
textSize 36sp
textColor
EditText (zusätzliche Eigenschaften):
text
textAlignment viewStart
textSize 36sp
textColor
inputType
lines
minlines
maxlines
lineSpaceExtra none, 8sp Wichtige inputType:
text
textMultiLine
textPersonName
number
numberSigned
numberDecimal
Button:
id
layout_width match_parent / wrap_content / @+id/tinput
layout_height match_parent / wrap_content / @+id/tinput
text
textAlignment ="viewStart"
textSize 36sp
textColor @android:color/holo_green_light Einheit Beschreibung
dp Die Einheit dp (ehemals auch als dip bezeichnet) repräsentiert eine abstrakte Einheit, die je nach Pixeldichte (dpi) variiert und eine Basispixeldichte von 160dpi besitzt.
Dies bedeutet, dass 1dp auf einem 160dpi Bildschirm letztlich einen Pixel darstellt, dagegen auf einem 320dpi Bildschirm 2px Platz beansprucht.
Die Einheit skaliert somit gemäß der Pixeldichte und sorgt dafür, dass beispielsweise GUI-Komponenten wie einen Button, optisch für den Benutzer immer gleich groß sind(=Smartphones wie Tablets) Eine Linie, die mit einer Breite von 2dp angegeben wird, beansprucht auf einem 160dpi Bildschirm 2px in der Breite, dagegen auf einem 240dpi Bildschirm drei (pysikalische" Pixel), sowie auf einem 320dpi Bildschirm 4 Pixel.
sp Die Einheit sp verhält sich analog der Einheit dp mit nur einem Unterschied: Die Einheit berücksichtigt zudem die vom Benutzer gewünschte und systemweite Schriftgröße.
Demzufolge wird diese Einheit ausschließlich im Umgang mit Schriftgrößen eingesetzt um somit sowohl die Pixeldichte des Displays zu berücksichtigen, als auch die
Benutzereinstellung hinsichtlich gewünschter Schriftgröße zu berücksichtigen.
px Diese Einheit repräsentiert einen physikalischen Pixel auf dem Display des Benutzers.
Eine Linie, die mit einer Breite von 2px angegeben wird, beansprucht somit
unabhängig vom Geräte-Typ, sowohl auf einem Smartphone 2px in der Breite, als auch
auf einem Tablet.
4.2 Erstes Beispiel
Dieses Beispiel zeigt die Gestaltung der UI-Elemente im View-Editor und im Texteditor und die Verknüpfung mit dem Java-Code inklusive eines ActionsEvents.
4.2.1 UI-Prinzip
Die UI-Elemente werden nacheinander in den UI-View eingetragen. Die Constrainst definieren, wie die Elemente untereinander sich positionieren.
4.2.2 Erstellen eines Projektes Erstellen eines neuen Projektes:
Menü File
Eintrag New
Eintrag New Projekt
Auswahl eines „Empty Activity“
Abbildung 42 Neue Projekt
Nun eintragen:
Name bsp01
Automatisach sollte der Ordner gesetzt: D:\progs\Android\2020\Bsp01
Language Java
Minimum SDK API 25
Abbildung 43 Daten des ersten Projektes
Abbildung 44 Das erste Rumpfprojekt
Auf der linken Seite ist der Projektbaum mit den wichtigsten Elementen zu sehen:
java
o MainActivity
Hier ist der Java-Quellcode gespeichert.
res Speichert die Resourcen (XML, Strings, Farbe, Bilder) o layout
activity_main.xml
4.2.3 UI-View
Der UI-View hat drei Anzeigevariante:
Text
Grafik
Text und Grafik
Abbildung 45 UI-View im Textmodus
Abbildung 46 UI-View im Grafikmodus
Abbildung 47 UI-View im Textmodus / Grafikmodus