hvordan man laver androide multi - røre ved kodning enklere med gesturedetector

, multi - røre skærme er en morder ved androide, så du kan have for at gøre det muligt for flere rør på din app.som omtalt i den sidste lektion, "hvordan til at håndtere flere rør," kan du skrive din egen kodeks for at analysere flere point begivenheder manuelt.i tilfælde af fælles multi - røre gestus, som to gange, rulle, og affære, du kan også forenkle tingene ved at udnytte den indbyggede gesturedetector.læs den for mere om påvisning af gestus med gesturedetector.,, gennemførelse af gesturedetector, her er en meget grundlæggende første gennemførelse af gesturedetector, som sender bare gestus oplysninger til log:,, offentlige klasse gestureexample udvider virksomhed gennemfører gesturedetector.ongesturelistener, gesturedetector.ondoubletaplistener (private gesturedetector detektor, private string - = "gestureexample" beskyttede tomrum oncreate (bundt savedinstancestate) (super. oncreate (savedinstancestate); setcontentview (r.layout. activity_gesture_example); - = nye gesturedetector (det); - detektor. setondoubletaplistener (det)} pe offentlige boolean ontouchevent (motionevent e) {. detektor. ontouchevent (e) tilbage, super. ontouchevent (e)} offentlige boolean veritabel (motionevent e) (log. d (rfid - "veritabel:" + e. tostring()); tilbage.} offentlige boolean onfling (motionevent e1, motionevent e2, flyde velocityx, svæver velocityy) (log. d (et, "onfling:" + e1 + e2. tostring(). tostring()); tilbage.} offentlige tomrum onlongpress (motionevent e) (log. d (et, "onlongpress:" + e. tostring())} offentlige boolean onscroll (motionevent e1, motionevent e2, flyde distancex, svæver distancey) (log. d (et, "onscroll:" + e1 + e2. tostring(). tostring()); tilbage.} offentlige tomrum onshowpress (motionevent e) (log. d (et, "onshowpress:" + e. tostring())} offentlige boolean onsingletapup (motionevent e) (log. d (et, "onsingletapup:" + e. tostring()); tilbage.} offentlige boolean ondoubletap (motionevent e) (log. d (rfid - "ondoubletap:" + e. tostring()); tilbage.} offentlige boolean ondoubletapevent (motionevent e) (log. d (et, "ondoubletapevent:" + e. tostring()); tilbage.} offentlige boolean onsingletapconfirmed (motionevent e) (log. d (et, "onsingletapconfirmed:" + e. tostring()); tilbage rigtigt;), er der en hel del af koden, men det meste er håndtering af mange gestus begivenheder.i oncreate(), du er nødt til at skabe en ny gesturedetector, og sætter det som et ondoubletaplistener (det er automatisk som ongesturelistener).så i, ontouchevent(),,,. - detektor. ontouchevent (e), er af afgørende betydning.uden, at ingen af de begivenheder vil blive sendt til detektoren, og ingen af dine omhyggeligt udformet gestus metoder vil løbe.det er også vigtigt at kalde overklassen gennemførelse efter det, de forskellige gestus metoder er delt mellem ongesturelistener (, ondown(),, onfling(),, onlongpress(),, onscroll(),, onshowpress(), og onsingletapup(),) og ondoubletaplistener (, ondoubletap(),, ondoubletapevent(), og onsingletapconfirmed,).dobbelthøvl begivenheder, der anvendes til at skelne mellem to gange og en klar fælles bank (dvs. en enkelt bank, der ikke er ved at blive fulgt op af en anden bank).du kan også handle på de forskellige dele af en dobbelt tap begivenhed, nemlig den, ondoubletapevent(), metode brande om enhver begivenhed, der udgør en del af en dobbelt tap (herunder ned, op og flytte begivenheder); ondoubletap(), henviser til den række af begivenheder, der skaber den gestus, selv om motionevent parameter er første down tap.forsøg med disse kan hjælpe dig passe din app nøjagtigt til brugernes forventninger.,, simpleongesturelistener, for at bruge ongesturelistener og ondoubletaplistener, du er nødt til at skabe, alle disse metoder, selv hvis du ikke bruger dem.hvis du virkelig vil nogle af dem, kan du udvide, simpleongesturelistener i stedet.alt dette gør, er at gennemføre metoder i både lytter klasser og returnere falske for dem alle.du kan bare skrive din egen metode kun for de ting, som du holder af.bemærker, at de skal gennemføre, ondown(), til at vende tilbage, ellers andre bevægelser kan ignoreres, som ondown(), sker ved begyndelsen af enhver gestus.hvis den kommer tilbage, falske tilfælde er der forbruges (ikke videregives til andre gestus methods). her er et eksempel på anvendelse af simpleongesturelistener:,, offentlige klasse gestureexample udvider aktivitet (private gesturedetector detektor, private string - = "gestureexample" beskyttede tomrum oncreate (bundt savedinstancestate) (super. oncreate (savedinstancestate); setcontentview (r.layout. activity_gesture_example); - = nye gesturedetector (det nye myexamplegesturelistener())} offentlige boolean ontouchevent (motionevent e) {. detektor. ontouchevent (e) tilbage, super. ontouchevent (e)} klasse myexamplegesturelistener udvider gesturedetector.simpleongesturelistener (private.atic sidste snor - = "megl" offentlige boolean veritabel (motionevent e) (log. d (rfid - "veritabel:" + e. tostring()); tilbage.} offentlige boolean onscroll (motionevent e1, motionevent e2, svæver distancex, svæver distancey) (log. d (et, "onscroll:". e1 + e2. tostring(). tostring()); tilbage.}}}, i resten af denne forelæsning, du kan bruge en af de to kode over til at gennemføre deres metoder, ved hjælp af begivenheder, er vi nu at genanvende en del af koden fra bubblemove program i tidligere tutorials, trække en boble, og gør det på en skriftrulle gestus.vi vil gøre det med simpleongesturelistener, for at undgå at gennemføre alle de andre metoder, men du kunne bruge ongesturelistener som nævnt ovenfor.vi flytter den gestus at afsløre koden ud af de vigtigste aktiviteter, og i betragtning.så gestureexample nu ser sådan ud:,, offentlige klasse gestureexample udvider aktivitet (beskyttede tomrum oncreate (bundt savedinstancestate) (super. oncreate (savedinstancestate); setcontentview (nye gestureexampleview (i)), og arbejdet er udført i gestureexampleview:,, offentlige klasse gestureexampleview udvider surfaceview gennemfører surfaceholder. callback {private surfaceholder sh; private endelige mal maling = ny maling (maling. anti_alias_flag); private gesturedetector detektor, private int bubblex = 100; private int bubbley = 200 og private int bubblediam = 50; offentlige gestureexampleview (forbindelse forbindelse) {super (baggrund); sk = getholder();h.addcallback (dette). setlongclickable (korrekt); maling. setcolor (farve. blå); maling. setstyle (stil. fyld); - = nye gesturedetector (sammenhæng, nye myexamplegesturelistener())} offentlige tomrum surfacecreated (surfaceholder indehaver) (drawbubble();} //også gennemføre surfacechanged() og surfacedestroyed() (kan være blank) private ugyldige drawbubble() {lærred lærred = sk lockcanvas(); lærred. drawcolor (farve, sort); lærred. drawcircle (bubblex, bubbley, bubblediam, maling); sh.unlockcanvasandpost (canvas)} offentlige boolean ontouchevent (motionevent e) {. detektor. ontouchevent (e) tilbage, super. ontouchevent (e)} klasse myexamplegesturelistener udvider gesturedetector.simpleongesturelistener {offentlige boolean veritabel (motionevent e) {tilbage.} offentlige boolean onscroll (motionevent e1, motionevent e2, svæver distancex, svæver distancey) (bubbley = bubbley - (int) distancey; drawbubble(); tilbage.}), der er et særlig vigtigt i gestureexampleview konstruktøren:,, setlongclickable (korrekt), uden at dette er den eneste gang, hvis du vil se, vil være, ondown(), og alt andet vil blive ignoreret.(denne linje er kun nødvendige for en speciel betragtning, ikke for en regelmæssig hovedbeskæftigelse.), bortset fra det, det bør være bekendt fra denne forelæsning eller en tidligere, skaber vi en overflade, udarbejde en boble, og oprette gesturelistener.igen, huske på, at det er vigtigt at gennemføre, ondown(), til at vende tilbage.vi så bruge den y afstand til flytte boblen er y, og træk den, give den illusion, nedad.bemærk, at distancey, er afstanden scrolled med y - aksen, siden den sidste opringning til, onscroll(),;, e1, er det første tilfælde, der startede nedad ned gang og e2, er det nuværende forslag begivenhed, der udløste den nuværende, onscroll(), ring.da en skriftrulle, består af en række, onscroll(), kræver, at distancey, er ikke det samme som y afstand mellem e1 og e2,.,, at flytte boble sidelæns samt op og ned, kunne man selvfølgelig blot tilføje en enkelt linje:,, bubblex = bubblex - (int) distancex;,, du kan lege med de andre begivenheder, for at se, hvordan de virker, - - skal du måske flytte den boble til to gange, men ikke en eneste bank, f.eks.,, gesturedetectorcompat, selv om ovennævnte kode fungerer fint for nylig androide versioner, er det nu, anbefales det, at, hvor det er muligt, du bruger gesturedetectorcompat fra støtte bibliotek, øge foreneligheden med ældre versioner af robotter.tjek tilbage i næste lektion i denne serie for at lære mere om den støtte, bibliotek, og hvordan sammenbundte det med din app.

Android robot logo



Previous:
Next Page: