package Ġme . sh ou h eng . uix . widget . dialog Ċ Ċ import Ġandroid . animation . Animator Ċ import Ġandroid . animation . Animator Listener Adapter Ċ import Ġandroid . annotation . Target Api Ċ import Ġandroid . app . Activity Ċ import Ġandroid . app . Dialog Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . Rect Ċ import Ġandroid . graphics . drawable . Bitmap Drawable Ċ import Ġandroid . os . AsyncTask Ċ import Ġandroid . os . Build Ċ import Ġandroid . util . Typed Value Ċ import Ġandroid . view .* Ċ import Ġandroid . view . animation . Accel erate Interpolator Ċ import Ġandroid . view . animation . Linear Interpolator Ċ import Ġandroid . widget . Frame Layout Ċ import Ġandroid . widget . ImageView Ċ import Ġandroidx . annotation . Float Range Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġme . sh ou h eng . uix . widget . R Ċ import Ġme . sh ou h eng . uix . widget . utils . Dialog Utils Ċ import Ġkotlin . math . ceil Ċ Ċ /** Ċ Ġ* ĠDialog Ġblur Ġbehind Ġengine . Ċ Ġ* Ċ Ġ* Ġ@ Author Ġw ang sh ou h eng Ċ Ġ* Ġ@ Time Ġ 2 0 2 1 / 1 0 / 1 5 Ċ Ġ*/ Ċ class ĠBl ur Engine Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġenable : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġdim ming Effect Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġbl urred ActionBar Ġ= Ġtrue ĊĠĠĠ Ġprivate Ġvar Ġstatus Bar Trans luc ent : ĠBoolean ? Ġ= Ġnull ĊĠĠĠ Ġ@ Float Range ( from Ġ= Ġ 0 f . toDouble (), Ġto Ġ= Ġ 1 f . toDouble (), Ġfrom Inclusive Ġ= Ġfalse ) ĊĠĠĠ Ġprivate Ġvar Ġscale : ĠFloat Ġ= Ġ. 5 f ĊĠĠĠ Ġ@ Float Range ( from Ġ= Ġ 0 f . toDouble (), Ġto Ġ= Ġ 2 5 f . toDouble (), Ġfrom Inclusive Ġ= Ġfalse ) ĊĠĠĠ Ġprivate Ġvar Ġradius : ĠFloat Ġ= Ġ 1 2 f ĊĊĠĠĠ Ġprivate Ġvar Ġbl urred Background View : ĠImageView ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġbl urred Background LayoutParams : ĠFrame Layout . LayoutParams ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġanimation Duration Ġ= Ġ 0 ĊĊĠĠĠ Ġprivate Ġvar Ġblur Task : ĠBl ur Task ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġhost : ĠActivity ? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġset Enable ( enable : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . enable Ġ= Ġenable ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Attach ( host : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . host Ġ= Ġhost ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠonStart ( dialog : ĠDialog ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! enable ) Ġreturn ĊĠĠĠĠĠĠĠ Ġif Ġ( dialog Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġenable Ġor Ġdisable Ġdim ming Ġeffect . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! dim ming Effect ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . window ?. clear Flags ( WindowManager . LayoutParams . FLAG _ DIM _ BE H IND ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġadd Ġdefault Ġfade Ġto Ġthe Ġdialog Ġif Ġno Ġwindow Ġanimation Ġhas Ġbeen Ġset . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Animation Ġ= Ġdialog . window ?. attributes ?. window Animations ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Animation Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . window ?. setWindow Animations ( R . style . Dialog Alpha Animation ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Resume ( ret ained Instance : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! enable ) Ġreturn ĊĠĠĠĠĠĠĠ Ġif Ġ( bl urred Background View Ġ== Ġnull Ġ|| Ġretained Instance ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( host ?. window ?. decor View ?. is Shown Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblur Task Ġ= ĠBl ur Task () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblur Task ?. execute () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhost ?. window ?. decor View ?. view Tree Observer ?. add On Pre Draw Listener ( object Ġ: ĠView Tree Observer . On Pre Draw Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Pre Draw (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġdialog Ġcan Ġhave Ġbeen Ġclosed Ġbefore Ġbeing Ġdrawn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( host Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhost ?. window ?. decor View ?. view Tree Observer ?. remove On Pre Draw Listener ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblur Task Ġ= ĠBl ur Task () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblur Task ?. execute () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Dismiss () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! enable ) Ġreturn ĊĠĠĠĠĠĠĠ Ġblur Task ?. cancel ( true ) ĊĠĠĠĠĠĠĠ Ġbl urred Background View ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . animate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . alpha ( 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . set Duration ( animation Duration . to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . set Interpolator ( Accel erate Interpolator ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . set Listener ( object Ġ: ĠAn imator Listener Adapter () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation End ( animation : ĠAn imator ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Animation End ( animation ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremove Bl urred View () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Cancel ( animation : ĠAn imator ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Animation Cancel ( animation ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremove Bl urred View () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ?. start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Detach () Ġ{ ĊĠĠĠĠĠĠĠ Ġblur Task ?. cancel ( true ) ĊĠĠĠĠĠĠĠ Ġblur Task Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġhost Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Blur Effect ( blur Effect : ĠBl ur Effect ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . enable Ġ= Ġblur Effect . enable ĊĠĠĠĠĠĠĠ Ġthis . scale Ġ= Ġblur Effect . scale ĊĠĠĠĠĠĠĠ Ġthis . radius Ġ= Ġblur Effect . radius ĊĠĠĠĠĠĠĠ Ġthis . dim ming Effect Ġ= Ġblur Effect . dim ming Effect ĊĠĠĠĠĠĠĠ Ġthis . bl urred ActionBar Ġ= Ġblur Effect . bl urred ActionBar ĊĠĠĠĠĠĠĠ Ġthis . status Bar Trans luc ent Ġ= Ġblur Effect . status Bar Trans luc ent ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġremove Bl urred View () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparent Ġ= Ġbl urred Background View ?. parent Ġas ? ĠViewGroup ĊĠĠĠĠĠĠĠ Ġparent ?. remove View ( bl urred Background View ) ĊĠĠĠĠĠĠĠ Ġbl urred Background View Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġblur ( b kg : ĠBitmap , Ġview : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġdefine Ġlayout Ġparams Ġto Ġthe Ġprevious ĠimageView Ġin Ġorder Ġto Ġmatch Ġits Ġparent ĊĠĠĠĠĠĠĠ Ġbl urred Background LayoutParams Ġ= ĠFrame Layout . LayoutParams ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFrame Layout . LayoutParams . MATCH _ PARENT , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFrame Layout . LayoutParams . MATCH _ PARENT ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġoverlay Ġused Ġto Ġbuild Ġscaled Ġpreview Ġand Ġblur Ġbackground ĊĠĠĠĠĠĠĠ Ġvar Ġoverlay : ĠBitmap ? ĊĊĠĠĠĠĠĠĠ Ġ// Ġevaluate Ġtop Ġoffset Ġdue Ġto Ġaction Ġbar , Ġ 0 Ġif Ġthe Ġaction Bar Ġshould Ġbe Ġbl urred . ĊĠĠĠĠĠĠĠ Ġval Ġaction Bar Height : ĠInt Ġ= Ġif Ġ( bl urred ActionBar ) Ġ 0 Ġelse ĠDialog Utils . get ActionBar Height () ĊĊĠĠĠĠĠĠĠ Ġ// Ġevaluate Ġtop Ġoffset Ġdue Ġto Ġstatus Ġbar ĊĠĠĠĠĠĠĠ Ġvar Ġstatus Bar Height Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġif Ġ( host Ġ!= Ġnull Ġ&& ĠDialog Utils . is StatusBar Visible ( host !! )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Bar Height Ġ= ĠDialog Utils . getStatus Bar Height () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( is StatusBar Trans luc ent ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Bar Height Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġtop Offset Ġ= Ġaction Bar Height Ġ+ Ġstatus Bar Height ĊĊĠĠĠĠĠĠĠ Ġ// Ġevaluate Ġbottom Ġor Ġright Ġoffset Ġdue Ġto Ġnavigation Ġbar . ĊĠĠĠĠĠĠĠ Ġvar Ġbottom Offset Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġright Offset Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġif Ġ( host Ġ!= Ġnull Ġ&& ĠDialog Utils . is NavBar Visible ( host !! )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnav Bar Size : ĠInt Ġ= ĠDialog Utils . get NavBar Height () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( host ?. resources ?. getBoolean ( R . bool . uix _ dialog _ has _ bottom _ navigation _ bar ) Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Offset Ġ= Ġnav Bar Size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġright Offset Ġ= Ġnav Bar Size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġin Ġorder Ġto Ġkeep Ġthe Ġsame Ġratio Ġas Ġthe Ġone Ġwhich Ġwill Ġbe Ġused Ġfor Ġrendering , Ġalso ĊĠĠĠĠĠĠĠ Ġ// Ġadd Ġthe Ġoffset Ġto Ġthe Ġoverlay . ĊĠĠĠĠĠĠĠ Ġval Ġheight Ġ= Ġceil (( view . height Ġ- Ġtop Offset Ġ- Ġbottom Offset ). toDouble ()) ĊĠĠĠĠĠĠĠ Ġval Ġwidth Ġ= Ġceil (( view . width Ġ- Ġright Offset ) Ġ* Ġheight Ġ/ Ġ( view . height Ġ- Ġtop Offset Ġ- Ġbottom Offset )) ĊĊĠĠĠĠĠĠĠ Ġval Ġy Ġ= Ġ( top Offset * b kg . height * 1 f / view . height ). toInt () ĊĠĠĠĠĠĠĠ Ġval Ġw Ġ= Ġ(( b kg . width * width / view . width ). toInt (). coerce At Most ( b kg . width )) ĊĠĠĠĠĠĠĠ Ġval Ġh Ġ= Ġ( b kg . height * height / view . height ). toInt (). coerce At Most ( b kg . height ) ĊĊĠĠĠĠĠĠĠ ĠDialog Utils . d (" Screen : Ġ(${ Dialog Utils . get Screen Width ()}, Ġ${ Dialog Utils . get Screen Height () })\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" H , W : Ġ($ width , Ġ$ height )\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" BK G : Ġ(${ b kg . width }, Ġ${ b kg . height })\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Size : Ġ( 0 , Ġ$ y , Ġ$ w , Ġ$ h )") ĊĊĠĠĠĠĠĠĠ Ġoverlay Ġ= ĠDialog Utils . clip ( b kg , Ġ 0 , Ġy , Ġw , Ġh ) ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( host Ġis ĠAppCompatActivity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġadd Ġoffset Ġas Ġtop Ġmargin Ġsince Ġaction Bar Ġheight Ġmust Ġalso Ġconsidered Ġwhen Ġwe Ġdisplay ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthe Ġbl urred Ġbackground . ĠDon 't Ġwant Ġto Ġdraw Ġon Ġthe Ġaction Bar . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbl urred Background LayoutParams ?. set Margins ( 0 , Ġaction Bar Height , Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbl urred Background LayoutParams ?. gravity Ġ= ĠGr avity . TOP ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠNo Class Def Found Error ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġno Ġdependency Ġto Ġapp compat , Ġthat Ġmeans Ġno Ġadditional Ġtop Ġoffset Ġdue Ġto Ġaction Bar . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbl urred Background LayoutParams ?. set Margins ( 0 , Ġ 0 , Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġapply Ġfast Ġblur Ġon Ġoverlay ĊĠĠĠĠĠĠĠ Ġoverlay Ġ= ĠDialog Utils . fast Blur ( overlay , Ġscale , Ġradius ) ĊĠĠĠĠĠĠĠ Ġ// set Ġbitmap Ġin Ġan Ġimage Ġview Ġfor Ġfinal Ġrendering ĊĠĠĠĠĠĠĠ Ġbl urred Background View Ġ= ĠImageView ( host ) ĊĠĠĠĠĠĠĠ Ġbl urred Background View ?. scale Type Ġ= ĠImageView . Scale Type . CENTER _ C ROP ĊĠĠĠĠĠĠĠ Ġbl urred Background View ?. setImage Drawable ( Bitmap Drawable ( host ?. resources , Ġoverlay )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis StatusBar Trans luc ent (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( status Bar Trans luc ent Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġstatus Bar Trans luc ent !! ĊĠĠĠĠĠĠĠ Ġreturn ĠBuild . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . KIT K AT Ġ&& Ġis StatusBar Trans luc ent Kit kat () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Target Api ( Build . VERSION _ CODES . KIT K AT ) ĊĠĠĠ Ġprivate Ġfun Ġis StatusBar Trans luc ent Kit kat (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtyped Value Ġ= ĠTyped Value () ĊĠĠĠĠĠĠĠ Ġval Ġattribute Ġ= Ġint ArrayOf ( android . R . attr . window Trans luc ent Status ) ĊĠĠĠĠĠĠĠ Ġval Ġarray Ġ= Ġhost ?. obtain Styled Attributes ( typed Value . resourceId , Ġattribute ) ĊĠĠĠĠĠĠĠ Ġval Ġis StatusBar Trans luc ent Ġ= Ġarray ?. getBoolean ( 0 , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġarray ?. recycle () ĊĠĠĠĠĠĠĠ Ġreturn Ġis StatusBar Trans luc ent Ġ== Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠBl ur Task Ġ: ĠAsync Task < Unit , ĠUnit , ĠUnit >() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġm Background : ĠBitmap ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġm Background View : ĠView ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Pre Execute () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Background View Ġ= Ġhost ?. window ?. decor View ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠAfter Ġrotation , Ġthe ĠDecor View Ġhas Ġno Ġheight Ġand Ġno Ġwidth . ĠTherefore ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ. get Drawing Cache () Ġreturn Ġnull . ĠThat 's Ġwhy Ġwe Ġ Ġhave Ġto Ġforce Ġmeasure Ġand Ġlayout . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrect Ġ= ĠRect () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Background View ?. getWindow Visible Display Frame ( rect ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Background View ?. destroy Drawing Cache () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Background View ?. is Drawing Cache Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Background View ?. build Drawing Cache ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Background Ġ= Ġm Background View ?. get Drawing Cache ( true ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Background Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Background View ?. measure ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView . Measure Spec . make Measure Spec ( rect . width (), ĠView . Measure Spec . EX ACT LY ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView . Measure Spec . make Measure Spec ( rect . height (), ĠView . Measure Spec . EX ACT LY ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Background View ?. layout ( 0 , Ġ 0 , Ġm Background View !!. meas ured Width , Ġm Background View !!. meas ured Height ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Background View ?. destroy Drawing Cache () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Background View ?. is Drawing Cache Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Background View ?. build Drawing Cache ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Background Ġ= Ġm Background View !!. get Drawing Cache ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Post Execute ( result : ĠUnit ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Background View ?. destroy Drawing Cache () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Background View ?. is Drawing Cache Enabled Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġhost ?. window ?. add ContentView ( bl urred Background View , Ġbl urred Background LayoutParams ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbl urred Background View ?. alpha Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbl urred Background View ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . animate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . alpha ( 1 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . set Duration ( animation Duration . to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . set Interpolator ( Linear Interpolator ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . start () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Background View Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Background Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdo In Background ( var arg Ġparams : ĠUnit ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is Cancelled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblur ( m Background !! , Ġm Background View !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġignore ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Background ?. recycle () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠBl ur Effect Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġenable : ĠBoolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ@ Float Range ( from Ġ= Ġ 0 f . toDouble (), Ġto Ġ= Ġ 1 f . toDouble (), Ġfrom Inclusive Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠ Ġvar Ġscale : ĠFloat Ġ= Ġ. 5 f ĊĠĠĠĠĠĠĠ Ġ@ Float Range ( from Ġ= Ġ 0 f . toDouble (), Ġto Ġ= Ġ 2 5 f . toDouble (), Ġfrom Inclusive Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠ Ġvar Ġradius : ĠFloat Ġ= Ġ 1 2 f ĊĠĠĠĠĠĠĠ Ġvar Ġdim ming Effect Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġvar Ġbl urred ActionBar Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġvar Ġstatus Bar Trans luc ent : ĠBoolean ? Ġ= Ġnull ĊĠĠĠ Ġ} Ċ }