Android Gestures Tutorial

Android gir spesielle typer berøringsskjerm hendelser som knipe, dobbelttrykk, ruller, lange trykk og vike. Disse er alle kjent som gester.

Android gir GestureDetector klasse å motta bevegelseshendelser og fortelle oss at disse hendelsene samsvarer med gester eller ikke. Å bruke den, må du opprette et objekt av GestureDetector og deretter utvide en annen klasse med GestureDetector.SimpleOnGestureListener
å fungere som en lytter og overstyre noen metoder. Syntaksen er gitt nedenfor −
GestureDetector MYG; MYG = new GestureDetector (dette, nye Gesture ()); klasse Gesture strekker GestureDetector.SimpleOnGestureListener {public boolean onSingleTapUp (MotionEvent ev) {} public void onLongPress (MotionEvent ev) {} public boolean onScroll (MotionEvent e1, MotionEvent e2, flyte distanceX, flyte distanceY) {} public boolean onFling (MotionEvent e1, MotionEvent e2, flyte velocityX, flyte velocityY) {}}}
Håndtering Pinch Gesture

Android gir ScaleGestureDetector
klassen til å håndtere bevegelser som klype etc For å kunne bruke den, må du på å bruke et objekt av denne klassen. Syntaksen er som følger −
ScaleGestureDetector SGD; SGD = new ScaleGestureDetector (dette, ny ScaleListener ());

Den første parameteren er konteksten og den andre parameteren er hendelsen lytteren. Vi må definere hendelsen lytteren og overstyre en funksjon OnTouchEvent
å gjøre det fungerer. Syntaksen er gitt nedenfor −
public boolean onTouchEvent (MotionEvent ev) {SGD.onTouchEvent (ev); return true;} private class ScaleListener strekker ScaleGestureDetector.SimpleOnScaleGestureListener {Override public boolean onScale (ScaleGestureDetector detektor) {float skala = detector.getScaleFactor (); return true; }}

Bortsett fra de klype gester, finnes det andre metoder tilgjengelig som varsler mer om berørings hendelser. De er listet opp nedenfor −
Sr.NoMethod & description1 getEventTime ()

Denne metoden blir tilfelle tidspunktet for den aktuelle hendelsen blir behandlet ..
2 getFocusX ()

Denne metoden få X koordinat for gjeldende gest midtpunkt.
3 getFocusY ()

Denne metoden får Y koordinat av dagens gest midtpunkt.
4 getTimeDelta ()

Denne metoden returnere tidsforskjellen i millisekunder mellom forrige akseptert skalering hendelse og gjeldende skalering hendelsen.
5 isInProgress ()

Denne metoden returnerer true hvis en skala gest pågår ..
6 onTouchEvent (MotionEvent hendelse)

Denne metoden godtar MotionEvents og sender hendelser når det passer.

Eksempel

Her er et eksempel som demonstrerer bruk av ScaleGestureDetector klasse. Det skaper en enkel applikasjon som lar deg zoome inn og ut gjennom klype.

For å eksperimentere med dette eksempelet, du kan kjøre dette på en faktisk enhet eller i en emulator med berøringsskjerm aktivert.
StepsDescription1You vil bruke Android studio for å lage en Android-applikasjon under en pakke com.example.sairamkrishna.myapplication;. Mens du oppretter dette prosjektet, må du Target SDK og kompilere med på den nyeste versjonen av Android SDK til å bruke høyere nivåer av APIs.2Modify src /MainActivity.java fil for å legge nødvendig code.3Modify res /layout /activity_main å legge respektive XML components4Run programmet og velge en som kjører Android-enhet, og installere programmet på den og verifisere resultatene

Følgende er innholdet av den modifiserte hovedaktivitet filen src /MainActivity.java
.
pakken com.example.sairamkrishna.myapplication, import android.app.Activity, import android.content.Intent, import android.content.IntentFilter, import android.graphics.Bitmap, import android.graphics.Matrix; import android. os.BatteryManager, import android.os.Bundle, import android.view.Menu, import android.view.MenuItem, import android.view.MotionEvent, import android.view.ScaleGestureDetector, import android.view.SurfaceHolder; import android.view .SurfaceView, import android.view.View, import android.widget.ArrayAdapter, import android.widget.ImageView, import android.widget.TextView, import android.widget.Toast, import java.util.ArrayList; import java.util. Still; public class MainActivity strekker Aktivitet {private Imageview iv; privat Matrix matrise = new Matrix (); privat float skala = 1f; private ScaleGestureDetector SGD; Override Beskyttet void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); iv = (Imageview) findViewById (R.id.imageView); SGD = new ScaleGestureDetector (dette, ny ScaleListener ()); } Public boolean onTouchEvent (MotionEvent ev) {SGD.onTouchEvent (ev); return true; } Private class ScaleListener strekker ScaleGestureDetector. SimpleOnScaleGestureListener {Override public boolean onScale (ScaleGestureDetector detektor) {skala * = detector.getScaleFactor (); skala = Math.max (0,1f, Math.min (skala, 5.0f)); matrix.setScale (skala, skala); iv.setImageMatrix (matrise); return true; }}Override Public boolean onCreateOptionsMenu (Meny menyen) {//Blås menyen; dette legger til elementer i handlingsfeltet hvis det er til stede. . getMenuInflater () blåse (R.menu.menu_main, menyen); return true; }Override Public boolean onOptionsItemSelected (MENUITEM element) {//Håndtak handlingen bar varen klikk her. Handlingsfeltet vil //automatisk håndtere klikker på Hjem /Opp-knappen, så lenge //som du angir en forelder aktivitet i AndroidManifest.xml. int id = item.getItemId (); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) {return true; } Returnere super.onOptionsItemSelected (element); }}

Følgende er endret innholdet i xml res /layout /activity_main.xml
< RelativeLayout xmlns:. android = "http://schemas.android.com/apk/res /Android "xmlns: verktøy =" http://schemas.android.com/tools "android: layout_width =" match_parent "android: layout_height =" match_parent "android: paddingLeft =" @ dimen /activity_horizontal_margin "android: paddingRight =" @ dimen /activity_horizontal_margin "android: paddingTop =" @ dimen /activity_vertical_margin "android: paddingBottom =" @ dimen /activity_vertical_margin "verktøy: kontekst =" MainActivity ">. < TextView android: text = "Gestures Eksempel" android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: id = "+ id /textview" android: Tekststørrelse = "35dp" android: layout_alignParentTop = "true" android: layout_centerHorizontal = "true" /> < TextView android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: text = "Tutorials point" android: id = "+ id /textView" android: layout_below = "+ id /textview" android: layout_centerHorizontal = "true" android: textcolor = "# ff7aff24" android: Tekststørrelse = "35dp" /> < Imageview android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: id = "+ id /bildeVis" android: src = "@ teikne /abc" android: scaleType = "Matrix" android: layout_below = " + id /textView "android: layout_alignParentLeft =" true "android: layout_alignParentStart =" true "android: layout_alignParentBottom =" true "android: layout_alignParentRight =" true "android: layout_alignParentEnd =" true "/> < /RelativeLayout >

Følgende er innholdet i res /verdier /string.xml
. < resources > < string name = "APP_NAME > My Application < /string > < string name =" hello_world "> Hei, verden <! /string > < string name =" action_settings "> Innstillinger < /string > < /ressurser >

Følgende er innholdet av AndroidManifest.xml
fil
< xml version = "1.0" encoding = "utf-8" > < manifest xmlns:.? android = "http://schemas.android.com/apk/res/android" pakke = "com.example.gestures" android: version = "1" android: versjon = "1.0" > < søknad android: allowBackup = " true "android: icon =" @ teikne /ic_launcher "android: label =" @ streng /APP_NAME "android: tema =" @ stil /AppTheme "> < aktivitet android: name =" com.example.sairamkrishna.myapplicationMainActivity " android: label = "@ streng /APP_NAME" > < intent-filter > < handling android: name = "android.intent.action.MAIN" /> < kategori android: name = "android.intent.category .LAUNCHER "/> < /intent-filter > < /aktivitets > < /søknad > < /manifest >

La oss prøve å kjøre programmet. Jeg antar at du har koblet den faktiske Android Mobile-enhet med datamaskinen. For å kjøre programmet fra Android studio, åpne en av prosjektets aktivitets filer, og klikk Kjør ikonet fra verktøylinjen. Før du starter programmet, vil Android studio vise følgende vindu for å velge et alternativ hvor du vil kjøre Android-applikasjon.

Velg den mobile enheten som et alternativ, og deretter sjekke den mobile enheten som vil vise din standard skjerm og minus;

Nå bare plassere to fingre enn android skjermen, og skille dem en del, og du vil se at android bildet er zooming. Det er vist på bildet nedenfor −

Nå igjen plassere to fingre enn android skjermen, og prøver å lukke dem, og du vil se at android Bildet er nå krymper. Det er vist på bildet nedenfor −