package Ġxyz . v ines h . floating view Ċ Ċ import Ġandroid . arch . lifecycle . Lifecycle Ċ import Ġandroid . arch . lifecycle . Lifecycle Observer Ċ import Ġandroid . arch . lifecycle . On Lifecycle Event Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . PixelFormat Ċ import Ġandroid . os . Build Ċ import Ġandroid . provider . Settings Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . view . Gravity Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . WindowManager Ċ Ċ class ĠFloating View Ġconstructor ( private Ġval Ġres Id Of View : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġwidth : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġheight : ĠInt ) Ġ: ĠLifecycle Observer Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġwindow Manager : ĠWindow Manager ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġactivity : ĠAppCompatActivity ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġview : ĠView ĊĠĠĠ Ġprivate Ġvar Ġgravity : ĠInt Ġ= ĠGr avity . NO _ GR AV ITY ĊĠĠĠ Ġprivate Ġvar Ġx Pos Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġy Pos Ġ= Ġ 0 ĊĊĠĠĠ Ġvar ĠonClick : Ġ(() Ġ-> ĠUnit )? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġattach On ( activity : ĠAppCompatActivity , Ġx Pos : ĠInt Ġ= Ġ 0 , Ġy Pos : ĠInt Ġ= Ġ 0 , Ġgravity : ĠInt Ġ= ĠGr avity . NO _ GR AV ITY ): ĠFloating View Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity . lifecycle . add Observer ( this ) ĊĠĠĠĠĠĠĠ Ġwindow Manager Ġ= Ġactivity . application Context . getSystem Service ( Context . WINDOW _ SERVICE ) Ġas ĠWindow Manager ĊĠĠĠĠĠĠĠ Ġthis . activity Ġ= Ġactivity ĊĠĠĠĠĠĠĠ Ġthis . x Pos Ġ= Ġx Pos ĊĠĠĠĠĠĠĠ Ġthis . y Pos Ġ= Ġy Pos ĊĠĠĠĠĠĠĠ Ġthis . gravity Ġ= Ġgravity ĊĠĠĠĠĠĠĠ Ġview Ġ= ĠLayoutInflater . from ( activity ). inflate ( res Id Of View , Ġnull , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġview . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonClick ?. invoke () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ On Lifecycle Event ( Lifecycle . Event . ON _ CREATE ) ĊĠĠĠ Ġfun Ġpeek (): ĠFloating View Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġshould Show Ġ= Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M ) ĠSettings . can Draw Overlay s ( activity ) Ġelse Ġtrue ĊĠĠĠĠĠĠĠ Ġif Ġ( should Show ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlayout Params Ġ= ĠWindow Manager . LayoutParams ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Floating View . width , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Floating View . height , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx Pos , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy Pos , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWindow Manager . LayoutParams . TYPE _ APPLICATION _ OVER LAY ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWindow Manager . LayoutParams . TYPE _ SYSTEM _ OVER LAY , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWindow Manager . LayoutParams . FLAG _ NOT _ FOCUS ABLE Ġxor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWindow Manager . LayoutParams . FLAG _ HARD WARE _ AC CELER ATED , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPixel Format . TRANSL UC ENT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Params . gravity Ġ= Ġgravity ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow Manager . addView ( view , Ġlayout Params ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ On Lifecycle Event ( Lifecycle . Event . ON _ DESTROY ) ĊĠĠĠ Ġfun Ġhide () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( view . is Shown ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow Manager . remove View Immediate ( view ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }