package Ġcom . tun jid . android x . uid river s Ċ Ċ import Ġandroid . graphics . Rect Ċ import Ġandroidx . transition . Change Bounds Ċ import Ġandroidx . transition . Transition Values Ċ import Ġcom . tun jid . android x . R Ċ Ċ class ĠUi State Aware Change Bounds ( ĊĠĠĠ Ġprivate Ġval Ġinitial : ĠUi State ? Ċ ) Ġ: ĠChange Bounds () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġcapture End Values ( transition Values : ĠTransition Values ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . capture End Values ( transition Values ) ĊĊĠĠĠĠĠĠĠ Ġval Ġrect Ġ= Ġtransition Values . values [ BOUN DS _ PROPERTY ] Ġas ? ĠRect Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠ Ġval Ġcurrent Ġ= Ġtransition Values . ui State ĊĠĠĠĠĠĠĠ Ġval Ġno Insets Ġ= Ġcurrent . in set Flags Ġ== ĠIn set Flags . NONE ĊĠĠĠĠĠĠĠ Ġval Ġtool Bar Changed Ġ= Ġchanged ( initial , Ġcurrent ) Ġ{ Ġit . toolbar Overlap s Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġstatus Bar Changed Ġ= Ġchanged ( initial , Ġcurrent ) Ġ{ Ġit . in set Flags . has Top Inset Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġnav Bar Changed Ġ= Ġchanged ( initial , Ġcurrent ) Ġ{ Ġit . in set Flags . has Bottom Inset Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠShared Ġelement Ġtransitions Ġonly Ġseem Ġto Ġbreak Ġwhen Ġthe Ġcontent Ġis Ġtruly Ġfull Ġscreen ĊĠĠĠĠĠĠĠ Ġval Ġstatus Bar Ġ= Ġif Ġ( no Insets Ġ&& Ġstatus Bar Changed ) Ġcurrent . system UI . static . status Bar Size Ġelse Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġtoolbar Ġ= Ġif Ġ( no Insets Ġ&& Ġtool Bar Changed ) Ġtransition Values . view . resources . get Dimension Pixel Size ( R . dim en . triple _ and _ half _ margin ) Ġelse Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġnav Bar Ġ= Ġif Ġ( no Insets Ġ&& Ġnav Bar Changed Ġ&& Ġ! tool Bar Changed ) Ġcurrent . system UI . static . nav Bar Size Ġelse Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġval Ġaltered Ġ= ĠRect ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrect . left , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrect . top Ġ+ Ġstatus Bar Ġ+ Ġtoolbar Ġ+ Ġnav Bar , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrect . right , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrect . bottom Ġ+ Ġstatus Bar Ġ+ Ġtoolbar Ġ+ Ġnav Bar ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġtransition Values . values [ BOUN DS _ PROPERTY ] Ġ= Ġaltered ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġconst Ġval ĠBO UN DS _ PROPERTY Ġ= Ġ" android : change Bounds : bounds " Ċ Ċ private Ġfun Ġ< T > Ġchanged ( ĊĠĠĠ Ġbefore : ĠUi State ?, ĊĠĠĠ Ġafter : ĠUi State ?, ĊĠĠĠ Ġproperty : Ġ( Ui State ) Ġ-> ĠT Ċ ) Ġ= Ġbefore Ġ!= Ġnull ĊĠĠĠ Ġ&& Ġafter Ġ!= Ġnull ĊĠĠĠ Ġ&& Ġproperty ( before ) Ġ!= Ġproperty ( after )