package Ġapp . l awn ch air Ċ Ċ import Ġandroid . graphics . Insets Ċ import Ġandroid . os . Build Ċ import Ġandroid . view . Window Insets Animation Control Listener Ċ import Ġandroid . view . Window Insets Animation Controller Ċ import Ġandroidx . annotation . Requires Api Ċ import Ġcom . android . quick step . Animated Float Ċ Ċ @ Requires Api ( Build . VERSION _ CODES . R ) Ċ class ĠSearch Bar Insets Handler ( private Ġval Ġshift Range : ĠFloat ) Ġ: ĠWindow Insets Animation Control Listener Ġ{ ĊĊĠĠĠ Ġval Ġprogress Ġ= ĠAnimated Float ( this :: update Insets ) ĊĠĠĠ Ġprivate Ġvar Ġanimation Controller : ĠWindow Insets Animation Controller ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġon Ready ( controller : ĠWindow Insets Animation Controller , Ġtypes : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġanimation Controller Ġ= Ġcontroller ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Finished ( controller : ĠWindow Insets Animation Controller ) Ġ{ ĊĠĠĠĠĠĠĠ Ġanimation Controller Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Cancelled ( controller : ĠWindow Insets Animation Controller ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġanimation Controller Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Insets () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontroller Ġ= Ġanimation Controller Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġshown Bottom Inset Ġ= Ġcontroller . shown State Insets . bottom ĊĠĠĠĠĠĠĠ Ġval Ġhidden Bottom Inset Ġ= Ġcontroller . hidden State Insets . bottom ĊĠĠĠĠĠĠĠ Ġval Ġtarget Bottom Inset Ġ= Ġ( shown Bottom Inset Ġ- Ġprogress . value Ġ* Ġshift Range ). toInt () ĊĠĠĠĠĠĠĠ Ġval Ġbottom Inset Ġ= Ġtarget Bottom Inset . coerce In ( hidden Bottom Inset , Ġshown Bottom Inset ) ĊĠĠĠĠĠĠĠ Ġcontroller . set Insets And Alpha ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIn sets . of ( 0 , Ġ 0 , Ġ 0 , Ġbottom Inset ), ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 f , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress . value ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Animation End () Ġ{ ĊĠĠĠĠĠĠĠ Ġanimation Controller ?. finish ( progress . value Ġ< Ġ 0 . 5 f ) ĊĠĠĠ Ġ} Ċ } Ċ