Mobile App Development

Mobile App Development - Graphische Oberflächen - Montag, 22. Oktober 12 Graphische Oberflächen • Oberflächenbeschreibung in XML • layout Dateien ...
2 downloads 1 Views 3MB Size
Mobile App Development - Graphische Oberflächen -

Montag, 22. Oktober 12

Graphische Oberflächen

• Oberflächenbeschreibung in XML • layout Dateien in res/layout • LayoutInflater: • Erstellung von Java-View-Objekten aus der XML-Definition

Mobile App Development Montag, 22. Oktober 12

View

• View • zeichnet etwas auf dem Screen • graphisches Elelment, mit dem der Benutzer interagieren kann

• Oberklasse von allen Standard Controls • Button, TextField, ProgressBar, ImageView Mobile App Development Montag, 22. Oktober 12

ViewGroup

• ViewGroup • unsichtbarer Container, der andere Views oder ViewGroups aufnimmt

• ... und diese positioniert

• Oberklasse von Containern • LinearLayout, GridLayout, ListView Mobile App Development Montag, 22. Oktober 12

View Hierarchie

• View und ViewGroups bilden eine Hierarchie

Mobile App Development Montag, 22. Oktober 12

Beipiel Hello World

Mobile App Development Montag, 22. Oktober 12

Views

Montag, 22. Oktober 12

Button View

• Button besteht aus einem Text und/oder einem Icon

• Bei Klick wird irgendeine Aktion ausgeführt

Mobile App Development Montag, 22. Oktober 12

Button View

• Button besteht aus einem Text und/oder einem Icon

• Bei Klick wird irgendeine Aktion ausgeführt

• XML

Mobile App Development Montag, 22. Oktober 12

Button View

• auf Klicks reagieren • Möglichkeit 1: • in der Activity einen OnClickListener erstellen und am Button registrieren

• Möglichkeit 2: • Angabe einer aufzurufenden Methode während GUI Design

Mobile App Development Montag, 22. Oktober 12

Button View

• Möglichkeit 1 • programmatische Zuweisung einer OnClickListener-Implementierung

Button btn = (Button) findViewById(R.id.btnSayHello); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ! ! ! /* ! ! ! * Button action code ! ! ! */ ! ! } ! });

Mobile App Development Montag, 22. Oktober 12

Button View

• Möglichkeit 2 • Angabe einer Methode die in der Activity ausgeführt werden soll, wenn der Button geklickt wurde

• Achtung: die Methode muss in der Activity auch implementiert sein Mobile App Development Montag, 22. Oktober 12

Button View

• Möglichkeit 2

Mobile App Development Montag, 22. Oktober 12

Button View

• Möglichkeit 2 • Implementierung der Methode • gleicher Name, wie in XML



• public-Zugriff • void return Wert • genau 1 Parameter:View

public void clickAction(View view) { // do Button action }

Mobile App Development Montag, 22. Oktober 12

Button View

• Möglichkeit 2 • Implementierung der Methode • gleicher Name, wie in XML



• public-Zugriff • void return Wert • genau 1 Parameter:View

public void clickAction(View view) { // do Button action }

Mobile App Development Montag, 22. Oktober 12

Button View

• Möglichkeit 2 • Implementierung der Methode • gleicher Name, wie in XML



• public-Zugriff • void return Wert • genau 1 Parameter:View

public void clickAction(View view) { // do Button action }

Mobile App Development Montag, 22. Oktober 12

Button View

• Möglichkeit 2 • Implementierung der Methode • gleicher Name, wie in XML



• public-Zugriff • void return Wert • genau 1 Parameter:View

public void clickAction(View view) { // do Button action }

Mobile App Development Montag, 22. Oktober 12

Button View

• Möglichkeit 2 • Implementierung der Methode • gleicher Name, wie in XML



• public-Zugriff • void return Wert • genau 1 Parameter:View

public void clickAction(View view) { // do Button action }

Mobile App Development Montag, 22. Oktober 12

EditText View

• EditText Views ermöglichen dem Benutzer die Eingabe von Text

Mobile App Development Montag, 22. Oktober 12

EditText View

• EditText Views ermöglichen dem Benutzer die Eingabe von Text

• Tastatur öffnet sich

automatisch nach Touch

• XML

Mobile App Development Montag, 22. Oktober 12

EditText View

• Input type • gibt an, welche Art von Text eingegeben werden soll, z. B. Plain, EMail, Password

• Textarten werden in Klassen eingeteilt • Variation von Textklassen • beeinflusst das Keyboard-Verhalten, z. B. erster Buchstabe groß, multi line

Mobile App Development Montag, 22. Oktober 12

EditText View

• Input type Beispiele Klasse

Text

Variation CapSentence

Mobile App Development Montag, 22. Oktober 12

Number

Text

Decimal

Password

EditText View

• Input type setzen

Mobile App Development Montag, 22. Oktober 12

EditText View

• Input type setzen • XML

• programmatisch EditText edtName = (EditText) findViewById(R.id.edtName); edtName.setInputType(InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS ! ! | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);

Mobile App Development Montag, 22. Oktober 12

EditText View

• Keyboard action • gibt an, welcher Button an Stelle des

Return-Buttons in der Tastatur angezeigt werden soll

• XML

Mobile App Development Montag, 22. Oktober 12

EditText View

actionNext Mobile App Development Montag, 22. Oktober 12

actionDone

actionSend

EditText View

actionNone Mobile App Development Montag, 22. Oktober 12

actionGo

actionSearch

EditText View

• Auf Keyboard action reagieren EditText txt = (EditText) findViewById(R.id.EditText01); txt.setOnEditorActionListener(new TextView.OnEditorActionListener() { ! ! @Override ! ! public boolean onEditorAction( TextView v, int actionId, KeyEvent event) { ! ! ! boolean handeled = false; ! ! ! !

! ! ! ! });

! }

return handeled;

Mobile App Development Montag, 22. Oktober 12

EditText View

• Weitere Eigenschaften • Hint text

• Lines

• Bilder

Mobile App Development Montag, 22. Oktober 12

EditText View

• ... und noch mehr Eigenschaften • Text style, typeface, size • Line spacing • Text color, hint color • ... Mobile App Development Montag, 22. Oktober 12

CheckBox View

• Eine CheckBox ermöglicht dem Benutzer eine mit ihr verknüpfte Eigenschaft auf true oder false zu setzen.

Mobile App Development Montag, 22. Oktober 12

CheckBox View

• Eine CheckBox ermöglicht dem Benutzer eine mit ihr verknüpfte Eigenschaft auf true oder false zu setzen.

• XML

Mobile App Development Montag, 22. Oktober 12

CheckBox View

• auf CheckBox Klicks reagieren • Möglichkeit 1 • Angabe einer Methode die in der

Activity ausgeführt werden soll, wenn der Button geklickt wurde

• Möglichkeit 2 • programmatische Zuweisung eines OnClickListeners

Mobile App Development Montag, 22. Oktober 12

CheckBox View

• Möglichkeit 1 • Angabe einer Methode, die in der Activity ausgeführt werden soll, wenn die CheckBox geklickt wurde

Mobile App Development Montag, 22. Oktober 12

CheckBox View

• Möglichkeit 1

Mobile App Development Montag, 22. Oktober 12

Button View

• Möglichkeit 1 • Implementierung der Methode • gleicher Name, wie in XML

• public-Zugriff • void return Wert • genau ein Parameter:View

Mobile App Development Montag, 22. Oktober 12



public void onBeerBoxClicked(View view) { ! CheckBox cb = (CheckBox) ! ! findViewById(R.id.checkBox1); ! if (cb.isSelected()) { ! ! /* do something */ ! } else { ! ! /* do the other things */ ! } }

Button View

• Möglichkeit 1 • Implementierung der Methode • gleicher Name, wie in XML

• public-Zugriff • void return Wert • genau ein Parameter:View

Mobile App Development Montag, 22. Oktober 12



public void onBeerBoxClicked(View view) { ! CheckBox cb = (CheckBox) ! ! findViewById(R.id.checkBox1); ! if (cb.isSelected()) { ! ! /* do something */ ! } else { ! ! /* do the other things */ ! } }

Button View

• Möglichkeit 1 • Implementierung der Methode • gleicher Name, wie in XML

• public-Zugriff • void return Wert • genau ein Parameter:View

Mobile App Development Montag, 22. Oktober 12



public void onBeerBoxClicked(View view) { ! CheckBox cb = (CheckBox) ! ! findViewById(R.id.checkBox1); ! if (cb.isSelected()) { ! ! /* do something */ ! } else { ! ! /* do the other things */ ! } }

Button View

• Möglichkeit 1 • Implementierung der Methode • gleicher Name, wie in XML

• public-Zugriff • void return Wert • genau ein Parameter:View

Mobile App Development Montag, 22. Oktober 12



public void onBeerBoxClicked(View view) { ! CheckBox cb = (CheckBox) ! ! findViewById(R.id.checkBox1); ! if (cb.isSelected()) { ! ! /* do something */ ! } else { ! ! /* do the other things */ ! } }

Button View

• Möglichkeit 1 • Implementierung der Methode • gleicher Name, wie in XML

• public-Zugriff • void return Wert • genau ein Parameter:View

Mobile App Development Montag, 22. Oktober 12



public void onBeerBoxClicked(View view) { ! CheckBox cb = (CheckBox) ! ! findViewById(R.id.checkBox1); ! if (cb.isSelected()) { ! ! /* do something */ ! } else { ! ! /* do the other things */ ! } }

CheckBox View

• Möglichkeit 2 • programmatische Zuweisung eines OnClickListeners

CheckBox cbBeer = (CheckBox) findViewById(R.id.cbBeer); cbBeer.setOnClickListener(new View.OnClickListener() { ! ! @Override ! ! public void onClick(View v) { ! ! ! CheckBox cb = (CheckBox) v; ! ! ! if (cb.isChecked()) { ! ! ! ! /* do something */ ! ! ! ! Toast.makeText(MainActivity.this, ! ! ! ! ! ! "test", Toast.LENGTH_LONG).show(); ! ! ! } else { ! ! ! ! /* do the other things */ ! ! ! } ! ! } ! });

Mobile App Development Montag, 22. Oktober 12

CheckBox View

• Möglichkeit 2 • Alternative: programmatische Zuweisung eines OnCheckedChangeListener

cbBeer.setOnCheckedChangeListener(new OnCheckedChangeListener() { ! @Override ! public void onCheckedChanged( ! ! CompoundButton buttonView, boolean isChecked) { ! ! ! /* d your stuff */ ! ! } });

Mobile App Development Montag, 22. Oktober 12

RadioButton View

• RadioButtons ermöglichen

dem Benutzer die Auswahl einer Option aus mehreren verschiedenen.

Mobile App Development Montag, 22. Oktober 12

RadioButton View

• Optionen, die durch RadioButton

repräsentiert werden, schließen sich gegenseitig aus (mutually exclusiv)

• RadioButtons werden in RadioGroups zusammengefasst

Mobile App Development Montag, 22. Oktober 12

RadioButton View

• XML

Mobile App Development Montag, 22. Oktober 12

RadioButton View

• auf Auswahl



• Angabe der



reagieren

Activity-Methode



Mobile App Development Montag, 22. Oktober 12

RadioButton View

• Implementierung in Activity • Regeln für Signatur analog zu Button und CheckBox

public void onSelect(View view) { ! switch (view.getId()) { ! ! case R.id.radio0: ! ! ! /* MADA selected */ ! ! ! break; ! ! case R.id.radio1: ! ! ! /* IKZ selected */ ! ! ! break; ! ! case R.id.radio2: ! ! ! /* prakt. Schalt. selected */ ! ! ! break; ! } }

Mobile App Development Montag, 22. Oktober 12

ProgressBar View

• ProgressBars werden

verwendet, um den Fortschritt einer Operation anzuzeigen

Mobile App Development Montag, 22. Oktober 12

ProgressBar View

• ProgressBars werden

verwendet, um den Fortschritt einer Operation anzuzeigen



Mobile App Development Montag, 22. Oktober 12

ProgressBar View

• style Attribute bestimmt

die Form der ProgressBar



Mobile App Development Montag, 22. Oktober 12

ProgressBar View

• max = Anzahl Ticks • progress = aktuelle Ticks

Mobile App Development Montag, 22. Oktober 12

ProgressBar View

• Spezielle ProgressBars • RatingBar • SeekBar

Mobile App Development Montag, 22. Oktober 12

Spinner View

• Eine Spinner View erlaubt

dem Benutzer die Auswahl eines einzelnen Elements aus einer Menge.

Mobile App Development Montag, 22. Oktober 12

Spinner View

• Eine Spinner View erlaubt

dem Benutzer die Auswahl eines einzelnen Elements aus einer Menge.

• XML

Mobile App Development Montag, 22. Oktober 12

Spinner View

• Wo kommen die Superhelden her und wie wird der Spinner gefüllt?

Mobile App Development Montag, 22. Oktober 12

Spinner View

• Wo kommen die Superhelden her und wie wird der Spinner gefüllt?

• 1. Situation:

Elemente sind zur Compile-Zeit bekannt

• 2. Situation:

Elemente sind zur Compile-Zeit noch nicht bekannt

Mobile App Development Montag, 22. Oktober 12

Spinner View

• Sind die Elemente zur Compile-Zeit

bekannt, können sie in einer ArrayResource eingetragen und verwendet werden.

• Was sind Array-Resourcen? Mobile App Development Montag, 22. Oktober 12

Spinner View

• Definition eines String arrays • res/values/strings.xml Test Hello world! ... ... Superman Batman Spiderman Flash

Mobile App Development Montag, 22. Oktober 12

Spinner View

• Zuweisung des

String arrays an den Spinner

res/values/strings.xml ... Superman Batman Spiderman Flash

res/layout/activity_main.xml parent) { ! ! // TODO: implement me ! }! });

Mobile App Development Montag, 22. Oktober 12

List View

• ListViews werden

verwendet, um mehrere Elemente in einer vertikalen Liste darzustellen

Mobile App Development Montag, 22. Oktober 12

List View

• ListViews werden

verwendet, um mehrere Elemente in einer vertikalen Liste darzustellen

• XML

Mobile App Development Montag, 22. Oktober 12

Spinner View

• Wie wird die Liste befüllt? analog zur SpinnerView

• 1. Situation:

Elemente sind zur Compile-Zeit bekannt

• 2. Situation:

Elemente sind zur Compile-Zeit noch nicht bekannt

Mobile App Development Montag, 22. Oktober 12

List View

• Definition eines String arrays • res/values/strings.xml Test Hello world! ... ... Brot Schinken Käse Butter Bier

Mobile App Development Montag, 22. Oktober 12

Spinner View



Zuweisung des String arrays an die Liste

res/layout/activity_main.xml

res/values/strings.xml ... Brot Schinken Käse Butter Bier