package Ġcom . y ey up ia ol ing . cam er ax app . view Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . view . Gesture Detector Ċ import Ġandroid . view . Gesture Detector . Simple On Gesture Listener Ċ import Ġandroid . view . Motion Event Ċ import Ġandroid . view . Scale Gesture Detector Ċ import Ġandroid . view . Scale Gesture Detector . On Scale Gesture Listener Ċ import Ġandroid . view . Scale Gesture Detector . Simple On Scale Gesture Listener Ċ import Ġandroid . view . View Ċ import Ġandroid . view . View . On Touch Listener Ċ Ċ /** Ċ Ġ* Ġ èĩªå®ļä¹ī Camera X çĤ¹åĩ» äºĭä»¶ Ċ Ġ*/ Ċ class ĠCamera X Preview View Touch Listener ( context : ĠContext ?) Ġ: ĠOn Touch Listener Ġ{ ĊĠĠĠ Ġprivate Ġval Ġm Gesture Detector : ĠGest ure Detector ĊĠĠĠ Ġprivate Ġvar Ġm Custom Touch Listener : ĠCustom Touch Listener ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġm Scale Gesture Detector : ĠScale Gesture Detector ĊĊĠĠĠ Ġoverride Ġfun Ġon Touch ( v : ĠView , Ġevent : ĠMotion Event ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġm Scale Gesture Detector . on Touch Event ( event ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! m Scale Gesture Detector . is InProgress ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Gesture Detector . on Touch Event ( event ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġè®¾ç½® çĽĳåĲ¬ ĊĠĠĠ Ġfun Ġset Custom Touch Listener ( custom Touch Listener : ĠCustom Touch Listener ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Custom Touch Listener Ġ= Ġcustom Touch Listener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ ç¼© æĶ¾ çĽĳåĲ¬ ĊĠĠĠ Ġvar Ġon Scale Gesture Listener : ĠOn Scale Gesture Listener Ġ= Ġobject Ġ: ĠSimple On Scale Gesture Listener () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Scale ( detector : ĠScale Gesture Detector ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdelta Ġ= Ġdetector . scale Factor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Custom Touch Listener Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Custom Touch Listener !!. zoom ( delta ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ çĤ¹åĩ» çĽĳåĲ¬ ĊĠĠĠ Ġvar Ġon Gesture Listener : ĠSimple On Gesture Listener Ġ= Ġobject Ġ: ĠSimple On Gesture Listener () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Long Press ( e : ĠMotion Event ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Custom Touch Listener Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ éķ¿ æĮī ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Custom Touch Listener !!. long Press ( e . x , Ġe . y ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Fl ing ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe 1 : ĠMotion Event , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe 2 : ĠMotion Event , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvelocity X : ĠFloat , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvelocity Y : ĠFloat ĊĠĠĠĠĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Single Tap Confirmed ( e : ĠMotion Event ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Custom Touch Listener Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ åįķ åĩ» ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Custom Touch Listener !!. click ( e . x , Ġe . y ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Double Tap ( e : ĠMotion Event ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Custom Touch Listener Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ åıĮ åĩ» ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Custom Touch Listener !!. double Click ( e . x , Ġe . y ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġæĵ įä½ľ æİ¥åı£ ĊĠĠĠ Ġinterface ĠCustom Touch Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ æĶ¾ å¤§ ç¼© å°ı ĊĠĠĠĠĠĠĠ Ġfun Ġzoom ( delta : ĠFloat ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ çĤ¹åĩ» ĊĠĠĠĠĠĠĠ Ġfun Ġclick ( x : ĠFloat , Ġy : ĠFloat ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ åıĮ åĩ» ĊĠĠĠĠĠĠĠ Ġfun Ġdouble Click ( x : ĠFloat , Ġy : ĠFloat ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ éķ¿ æĮī ĊĠĠĠĠĠĠĠ Ġfun Ġlong Press ( x : ĠFloat , Ġy : ĠFloat ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġm Gesture Detector Ġ= ĠGest ure Detector ( context , Ġon Gesture Listener ) ĊĠĠĠĠĠĠĠ Ġm Scale Gesture Detector Ġ= ĠScale Gesture Detector ( context , Ġon Scale Gesture Listener ) ĊĠĠĠ Ġ} Ċ }