54
Android for Beginners SS 2019 1 Von 0 auf Android in 3 Stunden! © Prof. Dr. Georg Rock, Fachbereich Informatik Hochschule Trier

Android for Beginners SS2019 · 2019-07-29 · Android for Beginners SS 2019 1 Von 0 auf Android in 3 Stunden! ... Development Environment (IDE) ... ConstraintLayout (Container) Benutzeroberfläche!37

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Android for Beginners SS2019 · 2019-07-29 · Android for Beginners SS 2019 1 Von 0 auf Android in 3 Stunden! ... Development Environment (IDE) ... ConstraintLayout (Container) Benutzeroberfläche!37

Android for BeginnersSS 2019

�1

Von 0 auf Android in 3 Stunden!

© Prof. Dr. Georg Rock, Fachbereich Informatik Hochschule Trier

Page 2: Android for Beginners SS2019 · 2019-07-29 · Android for Beginners SS 2019 1 Von 0 auf Android in 3 Stunden! ... Development Environment (IDE) ... ConstraintLayout (Container) Benutzeroberfläche!37

Bevor wir starten• Einloggen am Rechner

• Starten der Entwicklungsumgebung Android Studio → 4 min beim ersten Start 😳

• Start → Informatik → Android Studio 3.5

• Anlegen des ersten Projektes und des ersten Moduls in AS

• Danach ruhig warten bis AS FERTIG IST!

!2

Page 3: Android for Beginners SS2019 · 2019-07-29 · Android for Beginners SS 2019 1 Von 0 auf Android in 3 Stunden! ... Development Environment (IDE) ... ConstraintLayout (Container) Benutzeroberfläche!37

Inhalt• Was ist Android?

• Android im Studium

• Android Studio

• Java-Grundlagen

• Android-Grundlagen

• Praxis !

!3

Page 4: Android for Beginners SS2019 · 2019-07-29 · Android for Beginners SS 2019 1 Von 0 auf Android in 3 Stunden! ... Development Environment (IDE) ... ConstraintLayout (Container) Benutzeroberfläche!37

Was ist Android?• Mobiles Betriebssystem

• Linux-Kernel

• Zunehmende Nutzung in der Automobil-Industrie

• über 400 Auto-Modelle

• Audio, Chrysler, Citroën, Fiat, Ford, Hyundai, Peugeot, Volkswagen, …

• https://www.android.com/auto/

!4

Page 5: Android for Beginners SS2019 · 2019-07-29 · Android for Beginners SS 2019 1 Von 0 auf Android in 3 Stunden! ... Development Environment (IDE) ... ConstraintLayout (Container) Benutzeroberfläche!37

Android im Studium• Veranstaltung „Entwicklung mobiler Anwendungen“

• Wahlpflichtfach (⌀ 90 Studierende)

• Empfohlen für 4. Semester (möglich, wenn

• Seminare, Projekte, Abschlussarbeiten, andere Module

• heute: Erster Einstieg mit hohem Eigenanteil

!5

Page 6: Android for Beginners SS2019 · 2019-07-29 · Android for Beginners SS 2019 1 Von 0 auf Android in 3 Stunden! ... Development Environment (IDE) ... ConstraintLayout (Container) Benutzeroberfläche!37

Typische Android-Anwendungen?

• Kommunikation: eMail, Skype, Telegram, WhatsApp, …

• Soziale Netzwerke: Facebook, Instagram, Twitter, …

• Browser

• Bücher

• Filme

• Fotografie

• Kalender

• Musik

• Navigation

• Nachrichten

• Spiele

• Telefonieren ?!

!6 Bildquelle: https://de.123rf.com

Page 7: Android for Beginners SS2019 · 2019-07-29 · Android for Beginners SS 2019 1 Von 0 auf Android in 3 Stunden! ... Development Environment (IDE) ... ConstraintLayout (Container) Benutzeroberfläche!37

Oreo (8.0, 8.1)19,4 %

Nougat (7.0, 7.1)29,6 %

Marshmallow (6.0)21,8 %

Lollipop (5.0, 5.1)17,5 %

KitKat (4.4)7,9 %

Jelly Bean (4.1.x , 4.2.x, 4.3)3,1 %

Ice Cream Sandwich (4.0.3 - 4.0.4)0,3 %

Gingerbread (2.3.3 - 2.3.7)0,3 %

Verbreitung

Page 8: Android for Beginners SS2019 · 2019-07-29 · Android for Beginners SS 2019 1 Von 0 auf Android in 3 Stunden! ... Development Environment (IDE) ... ConstraintLayout (Container) Benutzeroberfläche!37

Android Studio (AS)

• Offizielle Entwicklungsumgebung — Integrated Development Environment (IDE)

• Version 3.1 (Stable) bzw. 3.3 (Canary)

• Vorinstalliert auf Pool-Rechnern

• Programmiersprache: Java (und/oder Kotlin)

!8

Page 9: Android for Beginners SS2019 · 2019-07-29 · Android for Beginners SS 2019 1 Von 0 auf Android in 3 Stunden! ... Development Environment (IDE) ... ConstraintLayout (Container) Benutzeroberfläche!37

Activities

!9

Page 10: Android for Beginners SS2019 · 2019-07-29 · Android for Beginners SS 2019 1 Von 0 auf Android in 3 Stunden! ... Development Environment (IDE) ... ConstraintLayout (Container) Benutzeroberfläche!37

Activity Lifecycle

!10Quelle https://developer.android.com/reference/android/app/Activity

Activity Lifecycle

Page 11: Android for Beginners SS2019 · 2019-07-29 · Android for Beginners SS 2019 1 Von 0 auf Android in 3 Stunden! ... Development Environment (IDE) ... ConstraintLayout (Container) Benutzeroberfläche!37

Programm-Logik

!11

MainActivity.java

Automatischer Aufruf von onCreate

Page 12: Android for Beginners SS2019 · 2019-07-29 · Android for Beginners SS 2019 1 Von 0 auf Android in 3 Stunden! ... Development Environment (IDE) ... ConstraintLayout (Container) Benutzeroberfläche!37

Neues Projekt erstellen

!12

Page 13: Android for Beginners SS2019 · 2019-07-29 · Android for Beginners SS 2019 1 Von 0 auf Android in 3 Stunden! ... Development Environment (IDE) ... ConstraintLayout (Container) Benutzeroberfläche!37

!13

Achtung! Projekt wird nach Logout gelöscht

Page 14: Android for Beginners SS2019 · 2019-07-29 · Android for Beginners SS 2019 1 Von 0 auf Android in 3 Stunden! ... Development Environment (IDE) ... ConstraintLayout (Container) Benutzeroberfläche!37

!14

Page 15: Android for Beginners SS2019 · 2019-07-29 · Android for Beginners SS 2019 1 Von 0 auf Android in 3 Stunden! ... Development Environment (IDE) ... ConstraintLayout (Container) Benutzeroberfläche!37

!15

Page 16: Android for Beginners SS2019 · 2019-07-29 · Android for Beginners SS 2019 1 Von 0 auf Android in 3 Stunden! ... Development Environment (IDE) ... ConstraintLayout (Container) Benutzeroberfläche!37

!16

Page 17: Android for Beginners SS2019 · 2019-07-29 · Android for Beginners SS 2019 1 Von 0 auf Android in 3 Stunden! ... Development Environment (IDE) ... ConstraintLayout (Container) Benutzeroberfläche!37

Projektstruktur

!17

Page 18: Android for Beginners SS2019 · 2019-07-29 · Android for Beginners SS 2019 1 Von 0 auf Android in 3 Stunden! ... Development Environment (IDE) ... ConstraintLayout (Container) Benutzeroberfläche!37

!18

ProjektstrukturProgramm-Logik (Java)

Benutzeroberfläche (XML)

Textwerte (Mehrsprachigkeit), Farben, Stile, …

Page 19: Android for Beginners SS2019 · 2019-07-29 · Android for Beginners SS 2019 1 Von 0 auf Android in 3 Stunden! ... Development Environment (IDE) ... ConstraintLayout (Container) Benutzeroberfläche!37

App starten

Läuft die Anwendung?

!19

Page 20: Android for Beginners SS2019 · 2019-07-29 · Android for Beginners SS 2019 1 Von 0 auf Android in 3 Stunden! ... Development Environment (IDE) ... ConstraintLayout (Container) Benutzeroberfläche!37

JavaGrundlagen

�20

Page 21: Android for Beginners SS2019 · 2019-07-29 · Android for Beginners SS 2019 1 Von 0 auf Android in 3 Stunden! ... Development Environment (IDE) ... ConstraintLayout (Container) Benutzeroberfläche!37

Java

• Objektorientierte Programmiersprache

• Hohe Popularität

• Hohe Relevanz im Studium

• Programmlogik in Android

!21

Page 22: Android for Beginners SS2019 · 2019-07-29 · Android for Beginners SS 2019 1 Von 0 auf Android in 3 Stunden! ... Development Environment (IDE) ... ConstraintLayout (Container) Benutzeroberfläche!37

Java-Code

!22

public void beispiel(){ int a = 4; int b = 3; int ergebnis = a + b;}

Page 23: Android for Beginners SS2019 · 2019-07-29 · Android for Beginners SS 2019 1 Von 0 auf Android in 3 Stunden! ... Development Environment (IDE) ... ConstraintLayout (Container) Benutzeroberfläche!37

Java-Code

!23

public void beispiel(){ int a = 4; int b = 3; int ergebnis = a + b;}

beispiel Methodenname

Page 24: Android for Beginners SS2019 · 2019-07-29 · Android for Beginners SS 2019 1 Von 0 auf Android in 3 Stunden! ... Development Environment (IDE) ... ConstraintLayout (Container) Benutzeroberfläche!37

Java-Code

public void beispiel(){ int a = 4; int b = 3; int ergebnis = a + b;}

• beispiel Methodenname

• void Kein Rückgabewert

!24

void Kein Rückgabewert

Page 25: Android for Beginners SS2019 · 2019-07-29 · Android for Beginners SS 2019 1 Von 0 auf Android in 3 Stunden! ... Development Environment (IDE) ... ConstraintLayout (Container) Benutzeroberfläche!37

Java-Code

public void beispiel(){ int a = 4; int b = 3; int ergebnis = a + b;}

• beispiel Funktionsname

• void Kein Rückgabewert

• () Keine Parameter

!25

() Keine Parameter

Page 26: Android for Beginners SS2019 · 2019-07-29 · Android for Beginners SS 2019 1 Von 0 auf Android in 3 Stunden! ... Development Environment (IDE) ... ConstraintLayout (Container) Benutzeroberfläche!37

Java-Code

public void beispiel(){ int a = 4; int b = 3; int ergebnis = a + b;}

• beispiel Funktionsname

• void Kein Rückgabewert

• () Keine Parameter

• int Ganze Zahl (Integer)

!26

int Ganze Zahl

Page 27: Android for Beginners SS2019 · 2019-07-29 · Android for Beginners SS 2019 1 Von 0 auf Android in 3 Stunden! ... Development Environment (IDE) ... ConstraintLayout (Container) Benutzeroberfläche!37

Java-Codepublic void beispiel(){ int a = 4; int b = 3; int ergebnis = a + b;}

• beispiel Funktionsname

• void Kein Rückgabewert

• () Keine Parameter

• int Ganze Zahl (Integer)

!27

public int berechne(int a, int b){ return a + b; }

• berechne Methodenname

Page 28: Android for Beginners SS2019 · 2019-07-29 · Android for Beginners SS 2019 1 Von 0 auf Android in 3 Stunden! ... Development Environment (IDE) ... ConstraintLayout (Container) Benutzeroberfläche!37

Java-Codepublic void beispiel(){ int a = 4; int b = 3; int ergebnis = a + b;}

• beispiel Funktionsname

• void Kein Rückgabewert

• () Keine Parameter

• int Ganze Zahl (Integer)

!28

public int berechne(int a, int b){ return a + b; }

• berechne Funktionsname

• int Rückgabe, Ganze Zahl

Page 29: Android for Beginners SS2019 · 2019-07-29 · Android for Beginners SS 2019 1 Von 0 auf Android in 3 Stunden! ... Development Environment (IDE) ... ConstraintLayout (Container) Benutzeroberfläche!37

Java-Codepublic void beispiel(){ int a = 4; int b = 3; int ergebnis = a + b;}

• beispiel Funktionsname

• void Kein Rückgabewert

• () Keine Parameter

• int Ganze Zahl (Integer)

!29

public int berechne(int a, int b){ return a + b; }

• berechne Funktionsname

• int Rückgabe, Ganze Zahl

• () Zwei Integer als Parameter

Page 30: Android for Beginners SS2019 · 2019-07-29 · Android for Beginners SS 2019 1 Von 0 auf Android in 3 Stunden! ... Development Environment (IDE) ... ConstraintLayout (Container) Benutzeroberfläche!37

Java-Code• Bedingungen

• Sichtbarkeit

!30

public void beispiel(){ int a = 4; int b = 3; int ergebnis = a + b; if ( ergebnis == 7) { // . . . { else { // . . . } }

Variablen a, b, Ergebnis hier nicht mehr bekannt

Page 31: Android for Beginners SS2019 · 2019-07-29 · Android for Beginners SS 2019 1 Von 0 auf Android in 3 Stunden! ... Development Environment (IDE) ... ConstraintLayout (Container) Benutzeroberfläche!37

Java-CodeÜbersicht

�31

Page 32: Android for Beginners SS2019 · 2019-07-29 · Android for Beginners SS 2019 1 Von 0 auf Android in 3 Stunden! ... Development Environment (IDE) ... ConstraintLayout (Container) Benutzeroberfläche!37

!32

Code Bedeutung Beispiel

int Ganze Zahl (-3, 0, 7, 42, …) int a = 5;

double Gleitkommazahl double p = 3.6;

String Zeichenkette (Text) String ladida = „Hallo“;

boolean Wahrheitswert boolean isActive = true;

+ Addition int c = a + b;

- Subtraktion int res = w1 - w2;

* Multiplikation int abc = f * g;

/ Division double g = d / a;

Page 33: Android for Beginners SS2019 · 2019-07-29 · Android for Beginners SS 2019 1 Von 0 auf Android in 3 Stunden! ... Development Environment (IDE) ... ConstraintLayout (Container) Benutzeroberfläche!37

AndroidGrundlagen

�33

Page 34: Android for Beginners SS2019 · 2019-07-29 · Android for Beginners SS 2019 1 Von 0 auf Android in 3 Stunden! ... Development Environment (IDE) ... ConstraintLayout (Container) Benutzeroberfläche!37

Android-Grundlagen• Benutzeroberfläche (in XML)

• Layouts (Container) beinhalten weitere Elemente wie…

• TextView (Anzeige von Text)

• EditText (Eingabe von Text)

• Button

• Programmlogik (in Java)

• Verhalten für Interaktion mit der Oberfläche

• Weitere Logik wie Netzwerk-Kommunikation, Timer, …

!34

Page 35: Android for Beginners SS2019 · 2019-07-29 · Android for Beginners SS 2019 1 Von 0 auf Android in 3 Stunden! ... Development Environment (IDE) ... ConstraintLayout (Container) Benutzeroberfläche!37

Constraint-Layout

• Dokumentation

• https://developer.android.com/reference/android/support/constraint/ConstraintLayout

• https://developer.android.com/training/constraint-layout/

!35

Page 36: Android for Beginners SS2019 · 2019-07-29 · Android for Beginners SS 2019 1 Von 0 auf Android in 3 Stunden! ... Development Environment (IDE) ... ConstraintLayout (Container) Benutzeroberfläche!37

Benutzeroberfläche

!36

activity_main.xml

Neue Elemente im ConstraintLayout (Container)

Page 37: Android for Beginners SS2019 · 2019-07-29 · Android for Beginners SS 2019 1 Von 0 auf Android in 3 Stunden! ... Development Environment (IDE) ... ConstraintLayout (Container) Benutzeroberfläche!37

Benutzeroberfläche

!37

activity_main.xml

Page 38: Android for Beginners SS2019 · 2019-07-29 · Android for Beginners SS 2019 1 Von 0 auf Android in 3 Stunden! ... Development Environment (IDE) ... ConstraintLayout (Container) Benutzeroberfläche!37

Benutzeroberfläche

!38

Funktion bestimmen, die aufgerufen werden soll

activity_main.xml

Page 39: Android for Beginners SS2019 · 2019-07-29 · Android for Beginners SS 2019 1 Von 0 auf Android in 3 Stunden! ... Development Environment (IDE) ... ConstraintLayout (Container) Benutzeroberfläche!37

Programm-Logik

!39

MainActivity.java

Automatischer Aufruf von onCreate

Page 40: Android for Beginners SS2019 · 2019-07-29 · Android for Beginners SS 2019 1 Von 0 auf Android in 3 Stunden! ... Development Environment (IDE) ... ConstraintLayout (Container) Benutzeroberfläche!37

Programm-Logik

!40

Benutzeroberfläche (File) bestimmen

MainActivity.java

Page 41: Android for Beginners SS2019 · 2019-07-29 · Android for Beginners SS 2019 1 Von 0 auf Android in 3 Stunden! ... Development Environment (IDE) ... ConstraintLayout (Container) Benutzeroberfläche!37

Programm-Logik

!41

Funktionsname aus Layout-File

MainActivity.java

Page 42: Android for Beginners SS2019 · 2019-07-29 · Android for Beginners SS 2019 1 Von 0 auf Android in 3 Stunden! ... Development Environment (IDE) ... ConstraintLayout (Container) Benutzeroberfläche!37

Programm-Logik

!42

Parameter muss vom Typ View sein (Bezeichner ist beliebig)

MainActivity.java

Page 43: Android for Beginners SS2019 · 2019-07-29 · Android for Beginners SS 2019 1 Von 0 auf Android in 3 Stunden! ... Development Environment (IDE) ... ConstraintLayout (Container) Benutzeroberfläche!37

Programm-Logik

!43

Funktion ohne Logik

MainActivity.java

Page 44: Android for Beginners SS2019 · 2019-07-29 · Android for Beginners SS 2019 1 Von 0 auf Android in 3 Stunden! ... Development Environment (IDE) ... ConstraintLayout (Container) Benutzeroberfläche!37

Programm-LogikAuslesen von Benutzer-Eingaben

�44

Page 45: Android for Beginners SS2019 · 2019-07-29 · Android for Beginners SS 2019 1 Von 0 auf Android in 3 Stunden! ... Development Environment (IDE) ... ConstraintLayout (Container) Benutzeroberfläche!37

Programm-Logik

!45

MainActivity.java

activity_main.xml

Page 46: Android for Beginners SS2019 · 2019-07-29 · Android for Beginners SS 2019 1 Von 0 auf Android in 3 Stunden! ... Development Environment (IDE) ... ConstraintLayout (Container) Benutzeroberfläche!37

Tippspiel-App

!46

Page 47: Android for Beginners SS2019 · 2019-07-29 · Android for Beginners SS 2019 1 Von 0 auf Android in 3 Stunden! ... Development Environment (IDE) ... ConstraintLayout (Container) Benutzeroberfläche!37
Page 48: Android for Beginners SS2019 · 2019-07-29 · Android for Beginners SS 2019 1 Von 0 auf Android in 3 Stunden! ... Development Environment (IDE) ... ConstraintLayout (Container) Benutzeroberfläche!37

Tippspiel-App (Stufe 1)• Benutzer-Eingabe für Spielernamen

• Durch Knopf-Druck füllt sich eine Fortschrittsanzeige

• Bei Erreichen des Maximums: Ausgabe eines Toasts mit Spielernamen

• Was für Benutzeroberflächen-Elemente benötigen wir?

• EditText, ProgressBar (horizontal), Button

!48

Page 49: Android for Beginners SS2019 · 2019-07-29 · Android for Beginners SS 2019 1 Von 0 auf Android in 3 Stunden! ... Development Environment (IDE) ... ConstraintLayout (Container) Benutzeroberfläche!37

Tippspiel-App (Stufe 1)

!49

Page 50: Android for Beginners SS2019 · 2019-07-29 · Android for Beginners SS 2019 1 Von 0 auf Android in 3 Stunden! ... Development Environment (IDE) ... ConstraintLayout (Container) Benutzeroberfläche!37

Tippspiel-App (Stufe 2)

• 2-Spieler-Version

!50

Page 51: Android for Beginners SS2019 · 2019-07-29 · Android for Beginners SS 2019 1 Von 0 auf Android in 3 Stunden! ... Development Environment (IDE) ... ConstraintLayout (Container) Benutzeroberfläche!37

Tippspiel-App (Stufe 3)• Chance bei Knopf-Druck, dass der Knopf deaktiviert wird

• Weiteren Knopf, welcher aktiviert wird, und gedrückt werden, um den Knopf für die Punkte-Erhöhung zu reaktivieren

• Timer für Start des Spiels

• AlertDialog für Auswahl: Neues Spiel oder Stop

!51

Page 52: Android for Beginners SS2019 · 2019-07-29 · Android for Beginners SS 2019 1 Von 0 auf Android in 3 Stunden! ... Development Environment (IDE) ... ConstraintLayout (Container) Benutzeroberfläche!37

Hilfreiches• ProgressBar

• Shortcuts

• Strg + Leertaste Vorschläge

• Strg + Q Quick Documentation

• Einstellungen Add unambiguous imports on the fly

!52

Page 53: Android for Beginners SS2019 · 2019-07-29 · Android for Beginners SS 2019 1 Von 0 auf Android in 3 Stunden! ... Development Environment (IDE) ... ConstraintLayout (Container) Benutzeroberfläche!37

Hilfreiches• Toast

• Zeichenkette in Gleitkommazahl umwandeln

• Gleitkommazahl in Zeichenkette umwandeln

!53

Ebenso für Float!

Page 54: Android for Beginners SS2019 · 2019-07-29 · Android for Beginners SS 2019 1 Von 0 auf Android in 3 Stunden! ... Development Environment (IDE) ... ConstraintLayout (Container) Benutzeroberfläche!37

Hilfreiches

!54