Android Multitouch Tutorial

Multi-touch gest skjer når mer enn én finger berører skjermen samtidig. Android gir oss mulighet til å oppdage disse bevegelsene

Android-systemet genererer følgende berørings events når flere fingre berører skjermen samtidig
Sr.NoEvent &..; description1 ACTION_DOWN

For første peker som berører skjermen. Dette starter gest.
2 ACTION_POINTER_DOWN

For ekstra tips som kommer inn i skjermen utover den første.
3 ACTION_MOVE

En endring som har skjedd i løpet av en trykk gest.
4 ACTION_POINTER_UP

Sendt når en ikke-primær pekeren går opp.
5 ACTION_UP

Sendt når den siste pekeren forlater skjermen.

Så for å oppdage noen av de ovenfor nevnte tilfelle, må du overstyre onTouchEvent ()
metode og sjekk disse hendelsene manuelt. Syntaksen er gitt nedenfor −
public boolean onTouchEvent (MotionEvent ev) {final int actionPeformed = ev.getAction (); switch (actionPeformed) {case MotionEvent.ACTION_DOWN: {break; } Tilfelle MotionEvent.ACTION_MOVE: {break; } Return true;}

I disse tilfellene kan du utføre noen beregning du vil. For eksempel zooming, krymper e.t.c. For å få koordinatene til X og Y-aksen, kan du ringe getX () Hotell og gety ()
metoden. Syntaksen er gitt nedenfor:
endelige float x = ev.getX (); endelig float y = ev.getY ();

Bortsett fra disse metodene, det finnes andre metoder som tilbys av denne MotionEvent klassen for bedre å håndtere multitouch. Disse metodene er listet nedenfor:
Sr.NoMethod &description1 getAction ()

Denne metoden returnerer den type handling som utføres
2 getPressure ()

Denne metoden returnerer gjeldende trykket av denne hendelsen for første indeksen
3 getRawX ()

Denne metoden returnerer den opprinnelige rå X koordinat for denne hendelsen
4 getRawY ( )

Denne metoden returnerer den opprinnelige rå Y koordinat av denne hendelsen
5 getSize ()

Denne metoden returnerer størrelsen for første pekeren indeksen
6 getSource ()

Denne metoden blir kilden til hendelsen
7 getXPrecision ()

Denne metoden returnere presisjonen i X-koordinater som blir rapportert
8 < b> getYPrecision ()

Denne metoden returnere presisjonen av Y-koordinater som blir rapportert

Eksempel

Her er et eksempel som demonstrerer bruk av multitouch. Det skaper en grunnleggende multitouch gest applikasjon som lar deg se koordinatene når multitouch er utført.

For å eksperimentere med dette eksempelet, må du kjøre dette på en faktisk enhet.
StepsDescription1You vil bruke android studio for å lage en Android-applikasjon under en pakke com.example.sairamkrishna.myapplication.multitouch. 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 multitouch code.3Modify res /layout /activity_main å legge respektive XML components.4Run programmet og velge en som kjører Android-enhet, og installere programmet på den og verifisere resultatene.

Følgende er innholdet i den modifiserte hovedaktivitet filen src /MainActivity.java
.
pakken com.example.sairamkrishna.myapplication, import android.app.Activity, import android.os.Bundle, import android.view.Menu, import android.view.MenuItem, import android.view.MotionEvent; import android. view.View, import android.widget.EditText, importere android.widget.TextView, importere java.util.Set; public class MainActivity strekker Aktivitet {float x-akse = 0f; flyte yAkse = 0f; flyte lastXAxis = 0f; flyte lastYAxis = 0f; EditText ed1, ED2, ED3, ED4; TextView TV1; Override Beskyttet void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); ed1 = (EditText) findViewById (R.id.editText); ED2 = (EditText) findViewById (R.id.editText2); ED3 = (EditText) findViewById (R.id.editText3); ED4 = (EditText) findViewById (R.id.editText4); TV1 = (TextView) findViewById (R.id.textView2); tv1.setOnTouchListener (ny View.OnTouchListener () {Override public boolean onTouch (Vis v, MotionEvent hendelse) {final int actionPeformed = event.getAction (); switch (actionPeformed) {case MotionEvent.ACTION_DOWN: {endelige float x = event .getX (); endelig float y = event.getY (); lastXAxis = x; lastYAxis = y; ed1.setText (Float.toString (lastXAxis)); ed2.setText (Float.toString (lastYAxis)); break;} case MotionEvent.ACTION_MOVE: {endelige float x = event.getX (); endelig float y = event.getY (); endelig float dx = x - lastXAxis; endelige float dy = y - lastYAxis; x-akse + = dx; yAkse + = dy; ed3.setText (Float.toString (x-akse)); ed4.setText (Float.toString (yAkse)); gå i stykker; }} 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 "android: transitionGroup =" true ">. < TextView android: text = "multitouch 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: layout_below = "+ id /textView" android : layout_centerHorizontal = "true" android: tema = "@ stil /Base.TextAppearance.AppCompat" /> < EditText android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: id = "+ id /EditText" android: layout_below = "+ id /bildeVis" android: layout_alignRight = "+ id /textview" android: layout_alignEnd = "+ id /textview" android: hint = "X-akse" android: layout_alignLeft = "+ id /textview" android: layout_alignStart = "+ id /textview" android: textColorHint = "# ff69ff0e" /> < EditText android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: id = "+ id /editText2" android: layout_below = "+ id /EditText" android: layout_alignLeft = "+ id /EditText" android: layout_alignStart = "+ id /EditText" android: textColorHint = "# ff21ff11" android: hint = "Y-akse" android: layout_alignRight = "+ id /EditText" android: layout_alignEnd = "+ id /EditText" /> < EditText android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: id = "+ id /editText3" android: layout_below = "+ id /editText2" android: layout_alignLeft = "+ id /editText2" android: layout_alignStart = "+ id /editText2" android: hint = "Flytt X" android: textColorHint = "# ff33ff20" android: layout_alignRight = "+ id /editText2" android: layout_alignEnd = "+ id /editText2" /> < EditText android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: id = "+ id /editText4" android: layout_below = "+ id /editText3" android: layout_alignLeft = "+ id /editText3" android: layout_alignStart = "+ id /editText3" android: textColorHint = "# ff31ff07" android: hint = "Flytt Y" android: layout_alignRight = "+ id /editText3" android: layout_alignEnd = "+ id /editText3" /> < TextView android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: text = "Trykk her" android: id = "+ id /textView2" android: layout_alignParentBottom = "true" android: layout_alignLeft = "+ id /bildeVis "android: layout_alignStart =" + id /bildeVis "android: fokuserbar =" true "android: skrifttype =" sans "android: klikkbar =" true "android: textcolor =" # ff5480ff "android: Tekststørrelse =" 35dp "/> < /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 "pakken =" com.example.sairamkrishna.myapplication "> < søknad android: allowBackup = "true" android: icon = "@ Mipmap /ic_launcher" android: label = "@ streng /APP_NAME" android: tema = "@ stil /AppTheme" > < aktivitet android: ". MainActivity" name = 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;

Som standard vil du se noe på alle felt. Nå bare trykke på Touch her området og se noen data i feltene. Det er vist nedenfor −

Du vil se at dataene i Move feltet er 0, fordi bare en enkel berøring gest er utført. Nå trykker du på skjermen og begynne å dra fingeren. Du vil se endringen i dataene på farten feltet. Det er vist nedenfor −