Events sind eine nützliche Methode, um Daten über die Interaktion eines Benutzers mit interaktiven Komponenten der Anwendungen. Sammeln, wie Tastendrücke oder Bildschirm zu berühren usw. Die Android Rahmen einer Ereigniswarteschlange als First-in-First-out (FIFO) unterhält. Sie können diese Ereignisse in Ihrem Programm zu erfassen und entsprechende Maßnahmen ergreifen wie pro Anforderungen.
Es gibt folgende drei Konzepte, um Android Event Management in Verbindung stehend -
- Ereignis-Listener - Ein Ereignis-Listener ist eine Schnittstelle in der View-Klasse, die eine einzelne Callback-Methode enthält. Diese Methoden werden von der Android-Framework aufgerufen, wenn der Blick auf die die Listener registriert wurde durch Benutzerinteraktion mit dem Einzelteil in der Benutzeroberfläche ausgelöst werden.
- Ereignis-Listener Registration - Event Registration ist der Prozess, durch den ein Event-Handler wird mit einem Ereignis-Listener registriert, so dass der Handler wird aufgerufen, wenn der Ereignis-Listener feuert die Veranstaltung.
- Event-Handler - Wenn ein Ereignis passiert, und wir ein Ereignis-Listener für das Ereignis registriert haben, ruft der Ereignis-Listener die Event-Handler, der die Methode, die tatsächlich behandelt das Ereignis ist.
Ereignis-Listener und Ereignishandlern
Event-Handler | Ereignis-Listener & Beschreibung |
---|---|
auf Knopfdruck() | OnClickListener ()
Diese wird aufgerufen, wenn der Benutzer entweder Klicks oder berührt oder konzentriert sich auf jedem Widget wie Button, Text, Bild etc. Sie werden onClick () Ereignishandler verwenden, um ein solches Ereignis zu behandeln.
|
onLongClick () | OnLongClickListener ()
Diese wird aufgerufen, wenn der Benutzer entweder Klicks oder berührt oder konzentriert sich auf jedem Widget wie Button, Text, Bild etc. für eine oder mehrere Sekunden. Sie werden onLongClick () Ereignishandler verwenden, um ein solches Ereignis zu behandeln.
|
onFocusChange () | OnFocusChangeListener ()
Diese wird aufgerufen, wenn das Widget verliert seinen Fokus also. Benutzer geht weg von der Artikelansicht. Sie werden onFocusChange () Ereignishandler verwenden, um ein solches Ereignis zu behandeln.
|
OnKey () | OnFocusChangeListener ()
Wird aufgerufen, wenn der Benutzer auf das Element und Pressen oder gibt einen Hardwareschlüssel auf das Gerät ausgerichtet. Sie werden OnKey () Ereignishandler verwenden, um ein solches Ereignis zu behandeln.
|
OnTouch () | OnTouchListener ()
Diese wird aufgerufen, wenn der Benutzer die Taste freigibt den Schlüssel oder über Bewegungsgeste auf dem Bildschirm. Sie werden OnTouch () Ereignishandler verwenden, um ein solches Ereignis zu behandeln.
|
onMenuItemClick () | OnMenuItemClickListener ()
Dies wird aufgerufen, wenn der Benutzer ein Menüelement auswählt. Sie werden onMenuItemClick () Ereignishandler verwenden, um ein solches Ereignis zu behandeln.
|
onCreateContextMenu () | onCreateContextMenuItemListener ()
Diese wird aufgerufen, wenn das Kontextmenü wird gebaut (als Folge einer anhaltenden "langer Klick)
|
Es gibt viele weitere Ereignis-Listenern als ein Teil der verfügbaren anzeigenKlasse wie OnHoverListener, OnDragListener usw., die für Ihre Anwendung erforderlich sein können. So empfehle ich, offizielle Dokumentation für Android Anwendungsentwicklung, wenn Sie gehen, um eine anspruchsvolle Anwendungen entwickeln werden, beziehen.
Ereignis-Listener Registrierung
Event Registration ist der Prozess, durch den ein Event-Handler wird mit einem Ereignis-Listener registriert, so dass der Handler wird aufgerufen, wenn der Ereignis-Listener feuert die Veranstaltung. Obwohl es mehrere knifflige Möglichkeiten, um für jeden Fall registrieren Sie Ihr Ereignis-Listener, aber ich werde Liste unten nur Top 3 Möglichkeiten, von denen aus Sie einen von ihnen auf der Grundlage der Situation zu verwenden.
- Mit einem anonymen innere Klasse
- Activity-Klasse implementiert das Listener-Schnittstelle.
- Mit Hilfe von Layout-Datei activity_main.xml um Event-Handler direkt angeben.
Im Folgenden Abschnitt wird Ihnen ausführliche Beispiele auf allen drei Szenarien -
Touch-Modus
Benutzer können mit ihren Geräten mithilfe von Hardware-Tasten oder Knöpfe oder Berühren des screen.Touching der Bildschirm wird das Gerät in Berührung Modus interagieren. Der Benutzer kann dann mit ihr zu interagieren, indem Sie die virtuellen Schaltflächen, Bilder auf dem Bildschirm, können etc.You zu überprüfen, ob das Gerät im Touchbetrieb durch Aufruf isInTouchMode () Methode des View-Klasse ist.
BERÜHRUNGSEREIGNIS
Fokus
Ein Blick oder Widget wird in der Regel hervorgehoben oder zeigt ein blinkender Cursor, wenn es im Fokus. Dies zeigt, dass es bereit ist, um Benutzereingaben zu akzeptieren.
- isFocusable () - es gibt true oder false
- isFocusableInTouchMode () - überprüft, ob die Aussicht ist fokussierbar im Touchbetrieb. (Ein Blick kann fokussierbar sein, wenn Sie einen Hardwareschlüssel, jedoch nicht, wenn das Gerät in Kontakt Modus)
android:foucsUp="@=id/button_l"
onTouchEvent ()
public boolean onTouchEvent ( motionEvent event ){ switch ( event . getAction ()){ case TOUCH_DOWN : Toast . makeText ( this , "you haben sich Touch-Button "geklickt, Toast. LENTH_LONG). Show (); Pause (); Bei TOUCH_UP: Toast. Maketext (dieser, "Sie Touch-Button geklickt haben,", Toast. LENTH_LONG). Show (); brechen; Bei TOUCH_MOVE: Toast. Maketext (dieser, "die Sie geklickt haben, bewegen sich Touch-Button" Toast. LENTH_LONG). Show (); Pause;} Rücksuper. onTouchEvent (Event);}
Event-Handling-Beispiele
Ereignis-Listener Registrierung mit einem anonymen innere Klasse
Hier finden Sie eine anonyme Umsetzung der Zuhörer zu schaffen und wird nützlich sein, wenn jede Klasse nur ein einziges Steuer angewendet, und Sie haben den Vorteil, um Argumente an Event-Handler übergeben. Bei diesem Ansatz Ereignis Prozedurmethoden privaten Daten der Aktivität zugreifen. Keine Referenz benötigt wird, um den Activity nennen.
Aber wenn Sie die Prozedur, um mehr als ein Steuer angewendet, müssten Sie Ausschneiden und Einfügen den Code für die Behandlungsroutine und wenn der Code für die Behandlungsroutine ist lang, macht es den Code schwieriger zu pflegen.
Im Folgenden sind die einfachen Schritte, um zu zeigen, wie wir den Einsatz von separaten Listener-Klasse zu registrieren und zu erfassen, klicken Sie auf Ereignis zu machen. Ähnliche So können Sie Ihre Zuhörer für jede andere erforderliche Ereignistyp zu implementieren.
Schritt | Bezeichnung |
---|---|
1 | Sie werden Android-Studio IDE verwenden, um ein Android-Anwendung erstellen und benennen es als myapplication unter einem Paketcom.example.myapplication wie in dem erläutert Hallo Welt BeispielKapitel. |
2 | Ändern src / MainActivity.java Datei auf, klicken Sie Ereignis-Listener und Handler für die beiden Tasten definiert hinzuzufügen. |
3 | Ändern Sie den Inhalt der detault res / layout / activity_main.xml Datei auf Android UI-Steuerelemente enthalten. |
4 | Keine Notwendigkeit, Standardzeichenfolge constants.Android Studio erklären kümmert Standardkonstanten. |
5 | Führen Sie die Anwendung auf Android-Emulator zu starten, und überprüfen Sie das Ergebnis der Änderungen in der Anwendung erfolgen. |
Im Folgenden ist der Gehalt des modifizierten Haupttätigkeit Datei src / com.example.myapplication / MainActivity.java. Diese Datei kann jede der Grundzyklus Verfahren umfassen.
package com.example.myapplication; public class MainActivity extends ActionBarActivity { private ProgressDialog progress; Button b1,b2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); progress = new ProgressDialog(this); b1=(Button)findViewById(R.id.button); b2=(Button)findViewById(R.id.button2); b1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { TextView txtView = (TextView) findViewById(R.id.textView); txtView.setTextSize(25); } }); b2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { TextView txtView = (TextView) findViewById(R.id.textView); txtView.setTextSize(55); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } }
Im Anschluss wird der Inhalt sein res / layout / activity_main.xml Datei -
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Event Handling " android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:textSize="30dp"/> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Tutorials point " android:textColor="#ff87ff09" android:textSize="30dp" android:layout_above="@+id/imageButton" android:layout_centerHorizontal="true" android:layout_marginBottom="40dp" /> <ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/imageButton" android:src="@drawable/abc" android:layout_centerVertical="true" android:layout_centerHorizontal="true" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Small font" android:id="@+id/button" android:layout_below="@+id/imageButton" android:layout_centerHorizontal="true" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Large Font" android:id="@+id/button2" android:layout_below="@+id/button" android:layout_alignRight="@+id/button" android:layout_alignEnd="@+id/button" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" android:id="@+id/textView" android:layout_below="@+id/button2" android:layout_centerHorizontal="true" android:textSize="25dp" /> </RelativeLayout>
Im Anschluss wird der Inhalt sein res / Werte / strings.xml zwei neue Konstanten definieren -
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">myapplication</string> <string name="action_settings">Settings</string> </resources>
Im Folgenden ist der Standardinhalt der AndroidManifest.xml -
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.myapplication" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="22" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.myapplication.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
Lasst uns versuchen, Ihre Lauf myapplication Anwendung. Ich nehme an, Sie geschaffen hatte AVD dabei Umgebungskonfiguration. Um die App vom Android Studio, öffnen Sie eine Aktivität Dateien Ihres Projekt auszuführen, und klicken Sie auf Ausführen-Symbol in der Symbolleiste. Android Studio installiert die App auf Ihrem AVD und startet es und wenn alles in Ordnung ist mit der Einrichtung und Anwendung, wird es folgende Emulator-Fenster anzuzeigen -
Nun versuchen Sie, sich auf zwei Schaltflächen klicken, eins nach dem anderen, und Sie werden die Schriftart der zu sehen Hallo Welt Text zu ändern, was geschieht, weil registrierte Click-Ereignishandler-Methode wird gegen jeden Klick-Ereignis aufgerufen.
Übung
Ich empfehle, um zu versuchen zu schreiben verschiedene Event-Handler für verschiedene Ereignistypen und zu verstehen, genaue Unterschied in verschiedenen Ereignistypen und deren Handhabung. Veranstaltungen zum Menü, Spinner verwandt sind, sind Pflücker Widgets wenig anders, aber sie sind auch auf den gleichen Konzepten wie oben erläutert.
0 التعليقات:
Kommentar veröffentlichen