/* Ċ Ġ* ĠCopyright Ġ 2 0 1 6 - 2 0 1 9 ĠAd rian ĠC ot fas Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ġdistributed Ġunder Ġthe ĠLicense Ġis Ċ Ġ* Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ċ Ġ* Ġeither Ġexpress Ġor Ġimplied . ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġcom . apps . adr co tf as . good time . util Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . view . View . On Touch Listener Ċ import Ġandroid . view . Gesture Detector Ċ import Ġandroid . view . Motion Event Ċ import Ġandroid . view . Gesture Detector . Simple On Gesture Listener Ċ import Ġandroid . view . View Ċ import Ġjava . lang . Exception Ċ import Ġkotlin . math . abs Ċ Ċ abstract Ġclass ĠOn Swipe Touch Listener ( context : ĠContext ?) Ġ: ĠOn Touch Listener Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġgesture Detector : ĠGest ure Detector ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġview : ĠView ĊĊĠĠĠ Ġoverride Ġfun Ġon Touch ( view : ĠView , Ġevent : ĠMotion Event ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . view Ġ= Ġview ĊĠĠĠĠĠĠĠ Ġif Ġ( event . action Ġ== ĠMotion Event . ACTION _ DOWN ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonPress ( view ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( event . action Ġ== ĠMotion Event . ACTION _ UP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Release ( view ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġgesture Detector . on Touch Event ( event ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġabstract Ġfun Ġon Swipe Right ( view : ĠView ) ĊĠĠĠ Ġprotected Ġabstract Ġfun Ġon Swipe Left ( view : ĠView ) ĊĠĠĠ Ġprotected Ġabstract Ġfun Ġon Swipe Bottom ( view : ĠView ) ĊĠĠĠ Ġprotected Ġabstract Ġfun Ġon Swipe Top ( view : ĠView ) ĊĠĠĠ Ġprotected Ġabstract Ġfun ĠonClick ( view : ĠView ) ĊĠĠĠ Ġprotected Ġabstract Ġfun Ġon Long Click ( view : ĠView ) ĊĠĠĠ Ġprotected Ġabstract Ġfun ĠonPress ( view : ĠView ) ĊĠĠĠ Ġprotected Ġabstract Ġfun Ġon Release ( view : ĠView ) ĊĠĠĠ Ġprivate Ġinner Ġclass ĠGest ure Listener Ġ: ĠSimple On Gesture Listener () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Down ( e : ĠMotion Event ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Long Press ( e : ĠMotion Event ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Long Click ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Long Press ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Single Tap Up ( e : ĠMotion Event ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonClick ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Single Tap Up ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Fl ing ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe 1 : ĠMotion Event , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe 2 : ĠMotion Event , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvelocity X : ĠFloat , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvelocity Y : ĠFloat ĊĠĠĠĠĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdiff Y Ġ= Ġe 2 . y Ġ- Ġe 1 . y ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdiff X Ġ= Ġe 2 . x Ġ- Ġe 1 . x ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( abs ( diff X ) Ġ> Ġabs ( diff Y )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( abs ( diff X ) Ġ> ĠS WI PE _ THRESHOLD Ġ&& Ġabs ( velocity X ) Ġ> ĠS WI PE _ VE LOC ITY _ THRESHOLD ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( diff X Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Swipe Right ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Swipe Left ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( abs ( diff Y ) Ġ> ĠS WI PE _ THRESHOLD Ġ&& Ġabs ( velocity Y ) Ġ> ĠS WI PE _ VE LOC ITY _ THRESHOLD ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( diff Y Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Swipe Bottom ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Swipe Top ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( exception : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexception . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠS WI PE _ THRESHOLD Ġ= Ġ 1 0 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠS WI PE _ VE LOC ITY _ THRESHOLD Ġ= Ġ 1 0 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġgesture Detector Ġ= ĠGest ure Detector ( context , ĠGest ure Listener ()) ĊĠĠĠ Ġ} Ċ }