/** Ċ Ġ* Ċ Ġ*/ Ċ /* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġdev . band b . design studio . design 1 . utils . window in set animation Ċ Ċ import Ġandroid . view . View Ċ import Ġandroidx . core . graphics . Insets Ċ import Ġandroidx . core . view . Window Insets Animation Compat Ċ import Ġandroidx . core . view . Window Insets Compat Ċ Ċ /** Ċ Ġ* ĠA Ġ[ Window Insets Animation Compat . Callback ] Ġwhich Ġwill Ġtranslate / move Ġthe Ġgiven Ġview Ġduring Ġany Ċ Ġ* Ġinset Ġanimations Ġof Ġthe Ġgiven Ġinset Ġtype . Ċ Ġ* Ċ Ġ* ĠThis Ġclass Ġworks Ġin Ġtan dem Ġwith Ġ[ Root View Def erring Insets Callback ] Ġto Ġsupport Ġthe Ġdef erring Ġof Ċ Ġ* Ġcertain Ġ[ Window Insets Compat . Type ] Ġvalues Ġduring Ġa Ġ[ Window Insets Animation Compat ], Ġprovided Ġin Ċ Ġ* Ġ[ deferred Inset Types ]. ĠThe Ġvalues Ġpassed Ġinto Ġthis Ġconstructor Ġshould Ġmatch Ġthose Ġwhich Ċ Ġ* Ġthe Ġ[ Root View Def erring Insets Callback ] Ġis Ġcreated Ġwith . Ċ Ġ* Ċ Ġ* Ġ@ param Ġview Ġthe Ġview Ġto Ġtranslate Ġfrom Ġit 's Ġstart Ġto Ġend Ġstate Ċ Ġ* Ġ@ param Ġpersistent Inset Types Ġthe Ġbit mask Ġof Ġany Ġinset Ġtypes Ġwhich Ġwere Ġhandled Ġas Ġpart Ġof Ġthe Ċ Ġ* Ġlayout Ċ Ġ* Ġ@ param Ġdeferred Inset Types Ġthe Ġbit mask Ġof Ġin sets Ġtypes Ġwhich Ġshould Ġbe Ġdeferred Ġuntil Ġafter Ċ Ġ* Ġany Ġ[ Window Insets Animation Compat ] s Ġhave Ġended Ċ Ġ* Ġ@ param Ġdispatch Mode ĠThe Ġdispatch Ġmode Ġfor Ġthis Ġcallback . Ċ Ġ* ĠSee Ġ[ Window Insets Animation Compat . Callback . get Dispatch Mode ]. Ċ Ġ*/ Ċ class ĠTranslate Def erring Insets Animation Callback ( ĊĠĠĠ Ġprivate Ġval Ġview : ĠView , ĊĠĠĠ Ġval Ġpersistent Inset Types : ĠInt , ĊĠĠĠ Ġval Ġdeferred Inset Types : ĠInt , ĊĠĠĠ Ġdispatch Mode : ĠInt Ġ= ĠDIS PATCH _ MODE _ STOP Ċ ) Ġ: ĠWindow Insets Animation Compat . Callback ( dispatch Mode ) Ġ{ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire ( persistent Inset Types Ġand Ġdeferred Inset Types Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" persistent Inset Types Ġand Ġdeferred Inset Types Ġcan Ġnot Ġcontain Ġany Ġof Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġsame ĠWindow Insets Compat . Type Ġvalues " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Progress ( ĊĠĠĠĠĠĠĠ Ġin sets : ĠWindow Insets Compat , ĊĠĠĠĠĠĠĠ Ġrunning Animations : ĠList < Window Insets Animation Compat > ĊĠĠĠ Ġ): ĠWindow Insets Compat Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġon Progress () Ġis Ġcalled Ġwhen Ġany Ġof Ġthe Ġrunning Ġanimations Ġprogress ... ĊĊĠĠĠĠĠĠĠ Ġ// ĠFirst Ġwe Ġget Ġthe Ġin sets Ġwhich Ġare Ġpotentially Ġdeferred ĊĠĠĠĠĠĠĠ Ġval Ġtypes Inset Ġ= Ġin sets . get Insets ( deferred Inset Types ) ĊĠĠĠĠĠĠĠ Ġ// ĠThen Ġwe Ġget Ġthe Ġpersistent Ġinset Ġtypes Ġwhich Ġare Ġapplied Ġas Ġpadding Ġduring Ġlayout ĊĠĠĠĠĠĠĠ Ġval Ġother Inset Ġ= Ġin sets . get Insets ( persistent Inset Types ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠNow Ġthat Ġwe Ġsubtract Ġthe Ġtwo Ġin sets , Ġto Ġcalculate Ġthe Ġdifference . ĠWe Ġalso Ġco erce ĊĠĠĠĠĠĠĠ Ġ// Ġthe Ġin sets Ġto Ġbe Ġ>= Ġ 0 , Ġto Ġmake Ġsure Ġwe Ġdon 't Ġuse Ġnegative Ġin sets . ĊĠĠĠĠĠĠĠ Ġval Ġdiff Ġ= ĠIn sets . subtract ( types Inset , Ġother Inset ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIn sets . max ( it , ĠIn sets . NONE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠThe Ġresulting Ġ` diff ` Ġin sets Ġcontain Ġthe Ġvalues Ġfor Ġus Ġto Ġapply Ġas Ġa Ġtranslation ĊĠĠĠĠĠĠĠ Ġ// Ġto Ġthe Ġview ĊĠĠĠĠĠĠĠ Ġview . translation X Ġ= Ġ( diff . left Ġ- Ġdiff . right ). toFloat () ĊĠĠĠĠĠĠĠ Ġview . translation Y Ġ= Ġ( diff . top Ġ- Ġdiff . bottom ). toFloat () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġin sets ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon End ( animation : ĠWindow Insets Animation Compat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠOnce Ġthe Ġanimation Ġhas Ġended , Ġreset Ġthe Ġtranslation Ġvalues ĊĠĠĠĠĠĠĠ Ġview . translation X Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠ Ġview . translation Y Ġ= Ġ 0 f ĊĠĠĠ Ġ} Ċ } Ċ