In Android gibt verschiedene Möglichkeiten auf Klicks zu reagieren.

Dabei hat jeder Ansatz seine eigenen Vor- und Nachteile – manchmal ist es aber auch nur der Geschmack, der darüber entscheidet, welche Variante man benutzt.

1. Das OnClick Attribut im XML-Tag

 

Besonders bei Buttons bietet es sich an, einfach das onClick-Attribut zu setzen. Dabei muss man beachten, dass man auch zusätzlich eine OnClick-Funktion, die den gleichen Namen wie der Attributwert trägt, in die zu dem Layout gehörige Java-Datei schreibt. Diese Funktion bekommt:

  • als Rückgabewert: void
  • als Parameter: View

Die Funktion wird nun immer aufgerufen, wenn der Button gedrückt wird.

Da der Funktionsname nun aber bei mehreren Views (z.B. Buttons) im Layout eingetragen werden kann, wird die View vom System mitgeliefert, die geklickt wurde.

Um nun in der onClick-Funktion zu unterscheiden, von welcher View die Funktion aufgerufen wurde, benutzt man die ID, die ein Element einmalig trägt.

Diese ID (als String) bekommt man durch View.getId();

 

Beispiel:

 

<Button 
   android:id="+id/myButton"
   android:height="wrap_content"
   android:width="wrap_content"
   android:onClick="myClickHandler" />

Der Code kommt in die XML-Layout Datei.

@Override
public void myClickHandler( View target ) {
  switch( target.getId() ) {
    case R.id.myButton :
    // Do stuff
  }
}

Zu bemerken ist hier, dass die Id in Android eine Ressource ist, die intern den Datentyp Zahl hat.

+ Vorteil:

  • Vergleichsweise wenig Platzaufwand

– Nachteil:

  • Die Funktion wird bei jedem Klick aufgerufen, das heißt: der OnClickListener kann weder entfernt noch während der Laufzeit hinzugefügt werden.

 

 

2. Der setOnClickListener

 

Bei dieser Variante wird in dem Layout per Java der Button mit der Id gefunden und ein Listener für jeden Klick hinzugefügt. Der Button braucht also nur zusätzlich eine Id zu tragen.

 

<Button 
   android:id="+id/myButton"
   android:height="wrap_content"
   android:width="wrap_content"/>

Der Code kommt in die XML-Layout Datei.

 

@Override
public void onCreateBundle savedInstanceState ) {
   super.onCreate( savedInstanceState );

   Button button = (Button) findViewById( R.id.myButton );

   button.setOnClickListener( new View.OnClickListener () {
      @Override
      public void onClick( View v ) {
         // Do Stuff
      }
   }

}

Und dieser in die zu dem Layout gehörige Java-Datei. Außerdem kann man den OnClickListener auch wieder entfernen, indem man button.setOnClickListener( null ); aufgeruft.

+ Vorteil:

  • dynamisches hinzufügen von Listenern möglich

– Nachteil:

  • Aufblähen der onCreate Funktion, wenn man bei vielen Buttons einen Listener braucht
  • Viel Code doppelt sich bei öfteren hinzufügen von den OnClickListenern

 

 

3. Das View.OnClickListener Interface

 

Man kann auch das View.OnClickListener Interface in die Activity implementieren. Dafür muss man dann die onClick Funktion in der Activity überschreiben. 

 

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

@Override
public void onClick( View v ) {

// Do Stuff- for example switch( v.getId() )

}

}

 

Von einer beliebiegen anderen Funktion kann man dann button.setOnClickListener( this ); aufrufen um den OnClickListener hinzuzufügen.

+ Vorteil:

  • dynamisches hinzufügen von Listenern möglich

– Nachteil:

  • meine präferierte Variante

 

 

 

4. Der OP-All-You-Can-Do View.OnTouchListener

 

Beim OnClickListener wird nur jener Klick erkannt, bei dem kein anderer Finger schon aufliegt. Möchte man nun aber selbst bestimmen, bei welchem genauen Ereignis eine Aktion ausgeführt werden soll, kann man den View.OnTouchListener benutzen. Hier werden die Fälle deutlich präziert:

 

Anzeige.setOnTouchListener( new View.OnTouchListener() {


@Override
public boolean onTouch(View v, MotionEvent event) {

int finger = 0;
int p = event.getActionIndex();


switch (event.getActionMasked()) {


case MotionEvent.ACTION_DOWN:


case MotionEvent.ACTION_POINTER_DOWN:

finger += 1;

processMouseDown((int) event.getX(p), (int) event.getY(p), event.getPointerId(p));

break;


case MotionEvent.ACTION_POINTER_UP:


case MotionEvent.ACTION_UP:

finger -= 1;

processMouseUp((int) event.getX(p), (int) event.getY(p), event.getPointerId(p));

break;


case MotionEvent.ACTION_MOVE:


final int historySize = event.getHistorySize();

final int pointerCount = event.getPointerCount();


for (int h = 0; h < historySize; h++) {

for (int p1 = 0; p1 < pointerCount; p1++) {


processMouseMove((int) event.getHistoricalX(p1, h), (int) event.getHistoricalY(p1, h), event.getPointerId(p1));

}

}

for (int p1 = 0; p1 < event.getPointerCount(); p1++) {

processMouseMove((int) event.getX(p1), (int) event.getY(p1), event.getPointerId(p1));

}

}
return true;

}

}

 

+ Vorteil:

  • dynamisches hinzufügen von Listenern möglich
  • sehr differenziertes reagieren auf die verschiedenen Ereignisse möglich

– Nachteil:

  • ein Wenig mehr Code nötig um gleiches wie beim OnClickListener zu erreichen

 

 

Beim starten von Android Studio kann man zwischen verschiedenen Aktionen wie zum Beispiel ein vorhandenes Projekt öffnen oder ein Projekt von anderen IDEs öffnen auswählen. Für unsere erste App wählen wir aber „Start a new Android Studio project“.

Dann kommen wir auch schon zum nächsten Fenster, wo man den Anwendungsnamen und kann Firmen-Webadresse eintragen kann. Für den Anfang belassen wir jedoch alles auf den Voreinstellungen.

Nun kann man einstellen auf welchen Endgeräten und unter welchen Versionen die App laufen soll. Was auffällt, wenn man auf „help me to choose“ klickt, ist, dass sehr viele Android Geräte nicht mehr von den jeweiligen Herstellern mit Updates versorgt werden und deshalb nicht mit der neuesten Android Version laufen, weshalb Sie als Entwickler immer noch abwärtskompatibel entwickeln sollten, damit Sie eine größere Zielgruppe haben und Ihre App mehr Nutzer bekommen kann. Belassen wir die API 15 mit Android 4.0.3 um immer noch einen Großteil der Geräte abzudecken und fahren zum nächsten Schritt.

Nehmen wir die „empty Activity“, weil diese am schnellsten zum Ziel führt.

In diesem Schritt können wir nun die Dateinamen von den Layout Dateien bestimmen, doch diese sind in der Standardeinstellung perfekt.

Nun erstellt Android Studio das neue Projekt und öffnet zwei Dateien. Einmal die activity_main.xml mit der wir zuerst arbeiten. Diese legt die Struktur der Elemente fest. Und zusätzlich wird noch die MainActivity.java geöffnet, die man für Benutzerinteraktionen benötigt.

Wir klicken nun zunächst auf „Preview“ am rechten Rand und sehen, dass die App schon fertig ist!

Nun ja, es steht noch Hello World!“ dort, statt „Hallo Universum!“ . Dies regelt das Attribut android:text“ in dem TextView Tag. Deshalb ändern wir nun den Wert von dem Attribut zu „Hallo Universum!“ .

Um diese App nun ausführen zu können benötigen wir entweder ein virtuelles Android Gerät oder ein „echtes“ Android Gerät. Beides können Sie einrichten, indem Sie oben auf den grünen Play-Button drücken und danach Ihr Gerät auswählen (dazu muss die ADB installiert sein) oder danach auf „Create A New Virtual Device“ klicken und ein neues virtuelles Gerät einrichten.

Ist das JDK installiert, ist es Zeit Android Studio zu installieren.

 

 

 

 

Das Programm kann dabei auf https://developer.android.com/studio/index.html#downloads heruntergeladen werden. Weiter unten auf der Seite findet man noch Einzelheiten zu den Systemvoraussetzungen und die einzelnen Hashwerte, mit denen man die Identität der Dateien überprüfen kann.

Nachdem Android Studio installiert wurde, können wir mit der ersten App starten.

 

Als Erstes installieren wir das JDK 8 von Oracle, damit wir unsere Java-Dateien in Android Studio kompilieren können. Dazu laden wir uns das JDK 8 auf http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html herunter.

Da viele Computer schon Java installiert haben, liegt die Idee nahe, dass man das JDK nicht mehr braucht. Allerdings haben die meisten Computer das JRE (Java Runtime Environment) und nicht das JDK (Java Development Kit) installiert. Eine JDK 8 Installation ist daher zwingend erforderlich.

Nachdem man die Lizenzvereinbarungen akzeptiert und das Betriebssystem ausgewählt hat, kann man das JDK in der Standard Edition downloaden und installieren.

Den Installationsassistent kann man immer weiter durchklicken bis die Meldung der erfolgreichen Installation erscheint.

android_builder_kleinUm die ersten Apps programmieren zu können, braucht man erst einmal die richtige IDE.
IDE steht für „integrated development environment”. Auf Deutsch heißt es so viel wie Integrierte Entwicklungsumgebung.
Der Begriff stammt aus den 1980er Jahren. Zu der Zeit mussten Programmierer ihren eigens geschriebenen Quellcode mit verschiedenen Programmen über die Terminal zu einer ausführbaren Datei zusammenfügen.
Dabei brauchten Programmierer erst einmal den Texteditor, um das Programm zu schreiben. Danach brauchten sie einen Compiler, der ihren geschriebenen Text in Maschinenbefehle umwandelt. Verschiedene Programmmodule wurden mit dem Linker zusammengefügt und die geschriebenen Programme mussten noch debuggt werden.

All diese Aufgaben werden von einer IDE abgenommen. Verschiedene Entwicklungskomponenten wurden in eine IDE eingebaut, um den Entwickler Arbeit und somit auch Zeit zu sparen.

Um Android-Apps zu entwickeln verwendet man die Entwicklungsumgebung Android Studio.

Der große Vorteil bei der Android-Programmierung gegenüber der iOS-Programmierung ist, dass Android Studio für Windows, Linux und Mac verfügbar ist. Nahezu jeder hat ein geeignetes System um mit der Android-Entwicklung zu beginnnen.

Bei der Installation von Android Studio werden weitere Programme (SDK und AVD) von Google installiert.

Das SDK (Software Development Kit) enthält verschiedene Android-Versionen, Dokumentationen, USB-Treiber, Beispiel-Apps und noch viele andere Werkzeuge, die zum Erstellen von Apps gebraucht werden. Über den SDK Manager werden alle Pakete installiert und verwaltet, die man zum entwickeln braucht.

Mit dem AVD (Android Virtual Device) Manager kann man sich Emulatoren erstellen, die ein komplettes Smartphone oder Tablet auf dem Computer simulieren. Sinn und Zweck dabei ist es, seine Apps auf möglichst vielen Geräten auszutesten ohne dabei jedes Gerät kaufen zu müssen.

In Android Studio programmiert man also die Apps in Java. Der Quellcode von Java-Programmen wird gewöhnlich in .java-Dateien gespeichert.

Um diesen Quellcode bis zu einer ausführbaren App zu bringen. Benötigt es einige Zwischenschritte. .java-Dateien müssen zuerst in .class-Dateien umgewandelt werden. Diese Aufgabe übernimmt das jdk von Oracle. .class-Dateien enthalten keinen Quelltext mehr, sondern Bytecode. Dieser Bytecode enthält Befehle, der von einer Laufzeitumgebung interpretiert wird. Näheres zu diesem Thema wird später erläutert.

Da dieser Bytecode allerdings nicht den Anforderungen von kleinen mobilen Geräten entspricht, konvertiert das SDK von Google das .class-Format in ein eigenes .dex-Format. .dex-Dateien sind weiter an einen kleinen Speicher optimiert und können mehrere .class-Dateien ersetzen. Außerdem erstellt das SDK aus der .dex-Datei eine .apk-Datei, die sich auf Android Geräten installieren lässt.

Diese paar Erklärungen sollen zeigen, wofür wir die einzelnen Tools brauchen werden, die wir in den nächsten Abschnitten installieren.

Seit der Version 1.5 Cupcake wurden am System viele Änderungen unternommen. Immer wenn sich etwas Grundlegendes am Betriebssystem geändert hat, wurde eine neue Version veröffentlicht.
Jede Android-Version trägt üblicherweise den Namen einer Süßspeise. Auf die einzelnen Neuerungen wird später noch einmal eingegangen.

Alle Android-Versionen im Überblick:
Nummer Name Neuerungen
1.5 Cupcake
  • Eingabe ohne Hardware-Tastatur
  • Spracherkennung
1.6 Donut
  • mehrsprachige Sprachsoftware
  • Unterstützung unterschiedlicher Display-Auflösungen
2.0 Eclair
  • Zugriff auf Kontakt- und Kontendaten
  • Synchronisation mit Online-Konten
  • Live Wallpaper
2.2 Froyo
  • Apps auf SD-Karte
  • einfaches Sichern und Wiederherstellen der Anwendungsdaten
  • Widgets auf Home Screen
  • Wireless Hotspots
2.3 Gingerbread
  • Download Manager
  • Voice over IP (VoIP)
  • SIP (Session Initiation Protocol)
  • Gyroskop
  • NFC (Near Field Communication)
3.0 Honeycomb
  • Speziell für Tablets
  • Einteilung der Activities in Fragmente
  • On-Screen Buttons
  • Action Bar
4.0 Ice Cream Sandwich
  • Plattform wieder für Smartphones und Tablets
  • Zugriff auf Kalendereinträge
4.1 Jelly Bean
  • Sprachsuche
  • Google Now
  • Android Beam
4.4 KitKat
  • einfaches Drucken
  • Bildschirm-Videos
  • mobiles Bezahlen
  • RTL (right to left) Layout
5.0 Lollipop
  • Material Design
  • Benachrichtigungen auf Lock-Screen
  • Android TV
6.0 Marshmallow
  • App-Berechtigungen während Ausführung
  • Fingerabdruck

Als Entwickler sollte man seine Apps allerdings nicht nur auf der letzten Version testen. Viele Smartphones bekommen seit Jahren keine Updates mehr, da es für Gerätehersteller unkomfortabel ist eine neue Android-Version ständig an die verschiedenen Hardwareteile anzupassen.

Verteilung der Android-Versionen: Stand 17. Juli 2016

 

 

 

 

 

 

 

 

Um einen großen Nutzerkreis zu erreichen, sollten man deshalb mindestens einmal im Jahr auf http://developer.android.com/about/dashboards/index.html#Platform gehen, um die derzeitige Verteilung der Android-Versionen zu sehen. Ein Prozentanteil kleiner als 2% kann dabei ohne Bedenken außer Betracht gelassen werden.

android_army_klein

Schon bevor Google das zunächst kleine Unternehmen Android Inc. in Silicon Valley aufkaufte, äußerte Google öfters sein Interesse an mobilen Geräten. Nach einigen Spekulationen kaufte Google schließlich im Juli 2005 das kleine Unternehmen Android Inc. auf. Die Mitarbeiter der Firma entwickelten bisher hauptsächlich im Hintergrund und die Firma war auf dem Markt nicht sonderlich bekannt.
Mit dem Kauf von Android Inc. sicherte sich Google seine Basis für sein jetziges Betriebssystem und viele fortschrittliche Mitarbeiter, die einen großen Teil zum Erfolg der mobilen Plattform beigetragen haben.
Andy Rubin war Mitarbeiter bei Android Inc. und arbeitete bereits 1990 an einem mobilen Betriebssystem mit grafischer Benutzeroberfläche. Damit sich Android schnell auf dem Markt verbreitet, hat Google mit 34 Firmen ein Bündnis gegründet. Es wurde„Open Handset Alliance“ (OHA) genannt und formulierte Ziele des damals neuen Betriebssystems. Zusammen entwickelten sie ein offenes, kostenloses Betriebssystem. Gerätehersteller konnten ohne hohe Lizenzgebühren zu bezahlen, ihren Kunden ein benutzerfreundliches Betriebssystem und ihnen gleichzeitig die größte Auswahl an Apps bieten. Weil Android ein Open Source Projekt ist können die Gerätehersteller einfach ihre Hardwaretreiber einbinden und die Plattform beliebig modifizieren. Im November 2007 gelang das mobile Betriebssystem erstmals an die Öffentlichkeit. Mit dem von Google erschienenen Android SDK (Software Development Kit) konnten Entwickler ihre ersten Android Apps programmieren und im Emulator testen.
Auf das erste Smartphone des Suchmaschinen-Primus war die Öffentlichkeit gespannt. Es wurde seit dem Herbst 2008 von T-Mobile unter dem Namen Google G1 vertrieben. Eigentlich war es ein HTC Dream. Es wurde mit der Android-Version 1.5 Cupcake ausgeliefert und hatte noch eine Hardware-Tastatur. Im Vergleich zum damaligen Apple IPhone konnte es allerdings nicht mithalten.Danach erlebte Android einen Boom. Immer mehr Kunden sahen die Vorteile des neuen Betriebssystems. So stieg der Marktanteil von Android im Herbst 2011 auf über 50% und wurde somit zur meistgenutzten mobilen Plattform. Seitdem werden jeden Tag weltweit ungefähr 1.500.000 Android Geräte aktiviert.