Post on 21-Jan-2019
182-96100 Einstieg in die App-Entwicklung
für Android-Geräte mit Java
Dr. Cora Burger
www.cora-burger.de
Tagesplan
10:00-11:30 Uhr Java-Wiederholungsquiz, Android Studio, HalloWelt-App
Java-OOP, Projekt-Struktur
11:30-11:45 Uhr Pause
11:45-13:15 Uhr Echo, Würfel Activities, Zusammenspiel Layout – Programmierung, Ereignisbehandlung
13:15-14:00 Uhr Mittagspause
14:00-15:30 Uhr Zahlenratespiel, Notizen Layout, Listen
15:30-15:45 Uhr Pause
15:45-17:15 Uhr Vokabeltrainer, Veröffentlichen, Resümee, Vorschau (Fortsetzung)
Layout, Listen
19.01.2019 2 Einstieg in die App-Entwicklung für Android-Geräte mit Java
Wiederholungsquiz
• Was versteht man unter einer Variablen? • Was ist der Unterschied zwischen einem elementaren Datentyp und
einer Klasse? • Welche Möglichkeiten gibt es zur Steuerung des Kontrollflusses? • Aus welchen Komponenten besteht eine Klasse? • Wozu dient die Sichtbarkeit? • Was versteht man unter Settern und Gettern? • Welche Aufgaben können im Rahmen eines Konstruktors erfüllt
werden? • Was bedeutet der Begriff „extends“? • Was ist der Unterschied zwischen „überladen“ und „override“? • Worin unterscheiden sich abstrakte Klassen und Interfaces? • Nennen Sie einige Einsatzbereiche für Interfaces. • Was versteht man unter einem Ereignis?
19.01.2019 3 Einstieg in die App-Entwicklung für Android-Geräte mit Java
Datentypen Datentyp Größe Wertebereich Operationen Wrapper-Klasse
Ganze Zahlen byte 8 Bit −128 … +127 +, -, *, /, % Byte
short 16 Bit −32.768…+32.767 Short
int 32 Bit −2.147.483.648…
+2.147.483.647 Integer
long 64 Bit −9.223.372.036.85
4.775.808…
+9.223.372.036.85
4.775.807
Long
Fließkomma-zahlen
float 32 Bit ±1,4E−45 … ±3,4E+38
+, -, *, / Float
double 64 Bit ±4,9E−324 …
±1,7E+308 Double
Boolscher
Wahrheitswert boolean 1 Bit true/false !, &&, || Boolean
Unicode-Zeichen char 16 Bit U+0000 ... U+FFFF Character
19.01.2019 Einstieg in die App-Entwicklung für Android-Geräte mit Java 4
Arrays
19.01.2019 Einstieg in die App-Entwicklung für Android-Geräte mit Java 5
• Einfache Arrays int [] monatstage = {31, 28, 31, 30, …, 30, 31}; int [] monatstage = new monatstage [11];
• Collections – ArrayList
– HashSet, TreeSet Keine Duplikate
– HashMap, TreeMap Schlüssel-Wert-Paare
Kontrollfluss
19.01.2019 Einstieg in die App-Entwicklung für Android-Geräte mit Java 6
Verzweigung ein-/zweiseitig if(…){…} else {…}
mehrseitig switch(…){case 1: …; case 2: …;}
Schleife kopfgesteuert for(…){…}
while(…){…}
fußgesteuert do{…}while(…);
Klasse
Rechner
-operand1: int -operand2: int
+Rechner() +Rechner(op1: int, op2: int) +setOp1(op: int) +setOp2(op: int) +getOp1(): int +getOp2(): int +addieren(): int
19.01.2019 Einstieg in die App-Entwicklung für Android-Geräte mit Java 7
Klassenname
Attribute
Konstruktoren
Setter/Getter
Andere Methode(n)
Sich
tbar
keit
Datentyp
Aufrufparameter
Datentyp der Rückgabe
Rechner rinstanz = new Rechner(5,7);
public class Rechner
{
private int operand1;
private int operand2;
…
public Rechner(int op1, int op2)
{
this.operand1 = op1;
this.operand2 = op2;
}
…
}
Vererbung
19.01.2019 Einstieg in die App-Entwicklung für Android-Geräte mit Java 8
EinfacherRechner ERAttribute ERMethoden
SpezialRechner SRAttribute SRMethoden
SuperRechner SuRAttribute SuRMethoden
Geometrie {abstract}
GAttribute GMethoden
<<interface>> Comparable
CMethodenköpfe
<<interface>> Runnable
RMethodenköpfe
extends
implements
Ereignisbehandlung
19.01.2019 Einstieg in die App-Entwicklung für Android-Geräte mit Java 9
GUI -knopf1: Button -knopf2: Button +onClick(v: View)
<<interface>> OnClickListener
+onClick(v: View)
implements
Android Studio: Projekt starten
19.01.2019 Einstieg in die App-Entwicklung für Android-Geräte mit Java 10
Android Studio: Oberfläche
19.01.2019 Einstieg in die App-Entwicklung für Android-Geräte mit Java 11
Hallo Welt: Projektstruktur
19.01.2019 Einstieg in die App-Entwicklung für Android-Geräte mit Java 12
Lebenszyklus von Activity
@Override
protected void onCreate
(Bundle savedInstanceState)
{
super.onCreate
(savedInstanceState);
setContentView
(R.layout.activity_main);
}
19.01.2019 Einstieg in die App-Entwicklung für Android-Geräte mit Java 13
Layout
19.01.2019 Einstieg in die App-Entwicklung für Android-Geräte mit Java 14
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".HalloWeltActivity">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
Test/Ausführung
Emulator Reales Gerät
PC ̶ Passender USB-Treiber
Android Studio
Android-Gerät ̶
Entwickleroptionen – USB Debugging Installation aus unbekannter Quelle
19.01.2019 Einstieg in die App-Entwicklung für Android-Geräte mit Java 15
https://developer.android.com/training/basics/firstapp/running-app
Layout-Erstellung
Constraint-Layout
19.01.2019 Einstieg in die App-Entwicklung für Android-Geräte mit Java 16
Wichtige Attribute 1. ID 2. onClick 3. Text
1. Button-ID
2. Programmierung @Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_hallo_welt); Button btnZumEcho = findViewById(R.id.btnZumEcho);
}
19.01.2019 Einstieg in die App-Entwicklung für Android-Geräte mit Java 17
1. Layout
2. Einfache Ereignisbehandlung
1. Programmierung public void btnZumEchoClicked(View v)
{
… // Aktionen nach Button-Klick
}
19.01.2019 Einstieg in die App-Entwicklung für Android-Geräte mit Java 18
2. Layout
3. Textressourcen definieren
19.01.2019 Einstieg in die App-Entwicklung für Android-Geräte mit Java 19
Activity starten
public void btnZumEchoClicked(View v)
{
Intent intent = new Intent(this,
EchoActivity.class);
startActivity(intent);
}
19.01.2019 Einstieg in die App-Entwicklung für Android-Geräte mit Java 21
Komplexe Ereignisbehandlung I
19.01.2019 Einstieg in die App-Entwicklung für Android-Geräte mit Java 23
Komplexe Ereignisbehandlung II
public class EchoActivity extends AppCompatActivity implements
View.OnClickListener {
Button btnEcho; Button btnZumWuerfel;
… btnEcho = findViewById(R.id.btnEcho); btnEcho.setOnClickListener(this); …
@Override
public void onClick(View v) {
EditText txtEingabe = (EditText)findViewById(R.id.txtEingabe);
TextView txtAusgabe = (TextView)findViewById(R.id.txtAusgabe);
String eingabe = txtEingabe.getText().toString();
Toast.makeText(this, eingabe, Toast.LENGTH_LONG).show();
switch(v.getId())
{
case R.id.btnEcho:
txtAusgabe.setText(eingabe);
break;
case R.id.btnZumWuerfel:
Intent intent = new Intent(this, EchoActivity.class);
intent.putExtra(EXTRA_MESSAGE, eingabe);
startActivity(intent);
break;
}
}
}
19.01.2019 Einstieg in die App-Entwicklung für Android-Geräte mit Java 24
Würfel
TextView txtAugen;
Random zufall;
@Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_wuerfel); txtAugen = (TextView)findViewById(R.id.txtAugenZahl); zufall = new Random();
}
public void wuerfeln(View v) { int augen = zufall.nextInt(6)+1; txtAugen.setText(augen); if(augen==6) { Toast.makeText(this, "Hurra, eine 6 gewürfelt", Toast.LENGTH_LONG).show(); }
}
19.01.2019 Einstieg in die App-Entwicklung für Android-Geräte mit Java 25
27 Einstieg in die App-Entwicklung für Android-Geräte mit Java
Vielen Dank fürs Mitmachen
und viel Spaß bei der App-Entwicklung!
19.01.2019
Fortsetzung: 182-96150 App-Entwicklung für Android-Geräte mit Java – Fortgeschrittene Termine: 04. und 11.02.2019 Themen: Intent++, Fragmente / Listenverarbeitung, SQLite –Datenbank usw.
Bildquellen: www.pixabay.com, developer.android.com