package Ġcom . t orry do . floating bubble view Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . res . Resources . getSystem Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . Point Ċ import Ġandroid . view . View Ċ import Ġandroid . view . View Tree Observer Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . core . graphics . drawable . to Bitmap Ċ import Ġjava . lang . ref . Weak Reference Ċ Ċ fun ĠInt . to Bitmap ( context : ĠContext ): ĠBitmap ? Ġ{ ĊĊĠĠĠ Ġreturn ĠWeak Reference ( context ). get ()?. let Ġ{ Ġweak Context Ġ-> ĊĠĠĠĠĠĠĠ ĠContext Compat . get Drawable ( weak Context , Ġthis ) !!. to Bitmap () ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* Ġreturn : Ġ- x Ġ| Ġx Ċ Ġ* Ġ*/ Ċ fun ĠView . get XY Point On Screen (): ĠPoint Ġ{ ĊĠĠĠ Ġval Ġarr Ġ= ĠInt Array ( 2 ) ĊĠĠĠ Ġthis . getLocation On Screen ( arr ) ĊĊĠĠĠ Ġreturn ĠPoint ( arr [ 0 ], Ġarr [ 1 ]) Ċ } Ċ Ċ val ĠInt . to Dp : ĠInt Ġget () Ġ= Ġ( this Ġ/ Ġget System (). display Metrics . density ). toInt () Ċ val ĠInt . to Px : ĠInt Ġget () Ġ= Ġ( this Ġ* Ġget System (). display Metrics . density ). toInt () Ċ Ċ inline Ġfun ĠView . after Measured ( cross inline Ġafter Measured Work : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġview Tree Observer . add On Global Layout Listener ( object Ġ: ĠView Tree Observer . On Global Layout Listener Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Global Layout () Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( meas ured Width Ġ> Ġ 0 Ġ&& Ġmeasured Height Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Tree Observer . remove On Global Layout Listener ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġafter Measured Work () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) Ċ }