Einführung in Android (2) - Uni

Werbung
Einführung in Android (2)
16. Dezember 2014
Überblick
 Entwicklung der Benutzeroberfläche





Views
Layouts
Menüs
Listen und Adapter
Einbinden weiterer Ressourcen
 Aktivierung von Activities
 Entwicklungsrichtlinien
 Best Practices: generelle und spezielle Richtlinien für mobile
Geräte
Taentzer
Einführung in die Softwaretechnik
283
Views
 Views: graphische
Komponenten in einer Activity,
z.B. Listen, Textfelder, Knöpfe
und auch ein einbettbarer WebBrowser
 Definition der View-Hierarchie
in der Layout-Datei der Activity
View-Hierarchie:
aus „android.com“
Taentzer
Einführung in die Softwaretechnik
284
Zeichnen einer View
 Zeichnen einer View durch Aufruf von setContentView() der
enthaltenden Activity
 Parameter: Wurzel der View-Hierarchie
MainActivity.java:
Verweis auf
XML-Datei
Taentzer
Einführung in die Softwaretechnik
285
Layout-Gruppen
Gruppieren mehrere Views zu einer ViewGroup.
 FrameLayout definiert einen leeren Rahmen, der später
durch ein Objekt gefüllt werden kann.
 LinearLayout bringt alle Kinder in eine Reihe.
 TableLayout positioniert seine Kinder in Zeilen und
Spalten. Die Tabelle wird durch eine Liste von TableRows
aufgebaut. Einzelne Zellen können frei bleiben, aber nicht
kombiniert werden.
 RelativeLayout überlässt seinen Kinder das Layout. Sie
positionieren sich relativ zueinander (links, rechts, über,
unter).
Taentzer
Einführung in die Softwaretechnik
286
Action Bar
menu/main.xml:
values/strings.xml:
Taentzer
Einführung in die Softwaretechnik
287
Aktivieren von Komponenten durch Intents
 Activities, Services und Broadcast Receivers werden durch
asynchrone Nachrichten, sogenannte Intents, aktiviert.
 Start einer Activity:
 Intent erzeugen: Intent intent = new Intent(this, MyActivity.class)
Mit putExtra() können Parameter mitgegeben werden.
this – Kontextkomponente, von der der Intent erzeugt wird.
MyActivity.class – Activity, die aktiviert werden soll
 Start der Activity: c.startActivity(intent)
c - Kontextkomponente
 In der gestarteten Activity:
getIntent() liefert den initialen Intent zurück.
 Back geht zur aufrufenden Activity zurück, kann durch
onBackPressed() überschrieben werden
 Beenden einer Activity:
 selten explizit, da in andauernder Kommunikation mit dem Nutzer
Taentzer
Einführung in die Softwaretechnik
288
Callback-Methoden für Menüs
Für Action Bars und Menüs:
 onCreateOptionsMenu() – Beim Erzeugen einer Activity wird das
Menü aufgebaut.
 onPrepareOptionsMenu() – wird nach dem Drücken des MenuKnopfs aufgerufen
 onOptionsItemSelected() – wird bei Auswahl eines Menüeintrags
aufgerufen und behandelt die möglichen Menüaktionen
Für Kontext-Menüs:
 onCreateContextMenu() - wird zum Erzeugen eines Kontextmenüs
aufgerufen
 onContextItemSelected() – wird bei Auswahl eines Menüeintrags
aufgerufen und behandelt die möglichen Menüaktionen
Taentzer
Einführung in die Softwaretechnik
289
ListView als spezieller AdapterView
 Ein ListView ist eine ViewGroup zur
Darstellung von Aufzählungen
 Die ListView ist ein AdapterView und
braucht einen Adapter, um die Daten
darzustellen.
 Ein AdapterView ist an eine externe
Datenquelle gebunden.
 Zwischen der ListView und der
Datenquelle fließt ein Adapter-Objekt.
 Mit einem spezialisierten Array
Adapter kann die Darstellung der
Listeneinträge angepasst werden.
Taentzer
Einführung in die Softwaretechnik
290
Beispiel: Erzeugen einer Liste
ProduktActivity.java:
Einlesen einer Liste
aus einer Datei
spezieller Listadapter zur
Darstellung des Inhalts
Taentzer
Einführung in die Softwaretechnik
291
Beispiel: Ein angepasster ListAdapter
Darzustellende Einträge
Layout der
Listeneinträge
Context: umgebene
Activity: ProduktActivity
Taentzer
Einführung in die Softwaretechnik
292
Beispiel: ein angepasster ListAdapter
Zum Anzeigen von
Listeneinträgen
ProduktActivity.java:
Taentzer
Einführung in die Softwaretechnik
293
Darstellung von Bildern
list_row.xml:
Feste Bildgröße
Feste Bildgröße
ProduktActivity.java:
Nur eine
Bildressource
Taentzer
Einführung in die Softwaretechnik
294
Alternativ: Darstellung von Bildern
drawable-* hält Bilder in verschiedenen Auflösungen.
ProduktActivity.java:
Taentzer
Einführung in die Softwaretechnik
295
Entwicklungsrichtlinien für guten Code
Generelle Best Practices:
 Vermeide doppelten Code!
 keine Copy-and-PasteProgrammierung
 Vermeide Spaghetti-Code!
 Vermeide temporäre Felder!
 keine Zwischenergebnisse in
Objektfeldern
 Vermeide Klassen, die ihr Erbe
verweigern!
 Alle geerbten Felder und
Methoden sollen auch in den
Unterklassen sinnvoll sein.
Taentzer
Spezielle Best Practices für mobile
Anwendungen:
 Verlier keine Daten!
 Überschreibe onPause() und
onResume().
 Wenn die App wieder geöffnet
wird, kehrt sie zum letzten
Zustand zurück.
 Erzeuge nicht mehr Objekte als
nötig!
 Nutze Netz und Strom wenig!
Einführung in die Softwaretechnik
296
Entwicklungsrichtlinien für
Benutzeroberflächen mobiler Geräte
 Teste Deine App auf einem
realen Gerät.
 „Design for big fingers.“
 Entwerfe für verschiedene,
insbesondere horizontale und
vertikale, Bildschirme.
 Vermeide zu viele Activities!
 Zeig nicht zu viele
Informationen auf einem
Bildschirm. Zeig nur das, was
meistens benutzt wird. Alle
anderen Informationen sollten
zusätzlich anzeigbar sein.
Taentzer
 Sei gefasst auf viele Unterbrechungen.
 „Scrolling is boring“: Überlege
Dir eine kompakte Datenanzeige
auf den Bildschirmseiten.
 Überlade Menüs nicht mit zu
vielen Einträgen. Zeig nur die
wichtigen Einträge und alle
anderen unter „more“.
 „Back“ ist kein „cancel“, sondern
„save“ und „quit“.
 Ein Click ist eine Aktion, meist
ohne Bestätigung.
Einführung in die Softwaretechnik
297
Zusammenfassung
 Activities enthalten Views.
 Layout in XML-Datei
 möglichst relatives Layout
 Activities aktivieren sich durch Intents.
 Listen und AdapterViews:
 Sind an Datenquellen angeschlossen
 Können Daten durch spezielle Adapter speziell darstellen.
 Entwicklungsrichtlinien
 generelle für guten Programmierstil
 spezielle für mobile Geräte:
 um Zeit und Platz zu sparen
 für eine gute Benutzeroberfläche
Taentzer
Einführung in die Softwaretechnik
298
Herunterladen