package Ġcom . future game . sdk Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics . PixelFormat Ċ import Ġandroid . view .* Ċ import Ġandroid . view . WindowManager . LayoutParams .* Ċ Ċ class ĠFloating View ( activity : ĠActivity ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġwindow Manager Ġby Ġlazy Ġ{ Ġactivity . getSystem Service ( Context . WINDOW _ SERVICE ) Ġas ĠWindow Manager Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġwindow View Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠLayoutInflater . from ( activity ). inflate ( R . layout . fg _ floating _ view , Ġnull ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġlast Touch X Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġlast Touch Y Ġ= Ġ 0 f ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm Gesture Detector Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGest ure Detector ( activity , Ġobject Ġ: ĠGest ure Detector . Simple On Gesture Listener () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Down ( event : ĠMotion Event ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent ?. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Touch X Ġ= Ġraw X ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Touch Y Ġ= Ġraw Y ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Down ( event ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Scroll ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent 1 : ĠMotion Event ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent 2 : ĠMotion Event ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdistance X : ĠFloat , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdistance Y : ĠFloat ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent 2 ?. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent X Ġ= Ġraw X ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Y Ġ= Ġraw Y ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdx Ġ= Ġcurrent X Ġ- Ġlast Touch X ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdy Ġ= Ġcurrent Y Ġ- Ġlast Touch Y Ċ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm LayoutParams . x Ġ+= Ġdx . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm LayoutParams . y Ġ+= Ġdy . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwindow Manager . update View Layout ( this @ apply , Ġm LayoutParams ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Touch X Ġ= Ġcurrent X ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Touch Y Ġ= Ġcurrent Y ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Scroll ( event 1 , Ġevent 2 , Ġdistance X , Ġdistance Y ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Single Tap Up ( e : ĠMotion Event ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . startActivity ( Intent ( activity , ĠFuture Game Activity :: class . java )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Single Tap Up ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġset On Touch Listener Ġ{ Ġ_, Ġmotion Event Ġ-> Ġm Gesture Detector . on Touch Event ( motion Event ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġm LayoutParams Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠWindow Manager . LayoutParams (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= ĠWR AP _ CONTENT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheight Ġ= ĠWR AP _ CONTENT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠTYPE _ APPLICATION ĊĠĠĠĠĠĠĠĠĠĠĠ Ġflags Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFLAG _ NOT _ TO UCH _ MOD AL Ġor ĠFLAG _ NOT _ FOCUS ABLE Ġor ĠFLAG _ LAYOUT _ NO _ LIMIT S Ġor ĠFLAG _ FULL SCREEN Ġor ĠFLAG _ TRANSL UC ENT _ NAV IG ATION ĊĠĠĠĠĠĠĠĠĠĠĠ Ġformat Ġ= ĠPixel Format . TRANSL UC ENT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsoft Input Mode Ġ= ĠS OFT _ INPUT _ ADJ UST _ PAN ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgravity Ġ= ĠGr avity . START Ġor ĠGr avity . TOP ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow Floating View () Ġ{ ĊĠĠĠĠĠĠĠ Ġwindow View . parent Ġ?: Ġlet Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow Manager . addView ( window View , Ġm LayoutParams ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }