package Ġcom . ed ream s . android . work shops . kotlin . common . view . behavior Ċ Ċ import Ġandroid . animation . Animator Ċ import Ġandroid . content . Context Ċ import Ġandroid . support . design . widget . Coordinator Layout Ċ import Ġandroid . support . design . widget . Coordinator Layout . Behavior Ċ import Ġandroid . support . v 4 . view . View Compat Ċ import Ġandroid . support . v 4 . view . animation . Fast Out Slow In Interpolator Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . View Ċ Ċ class ĠQuick Return Behavior ( context : ĠContext , Ġattrs : ĠAttributeSet ) Ġ: ĠBehavior < View >( context , Ġattrs ) Ġ{ ĊĊĠ Ġprivate Ġval Ġinterpol ator : ĠFast Out Slow In Interpolator Ġby Ġlazy Ġ{ ĊĠĠĠ ĠFast Out Slow In Interpolator () ĊĠ Ġ} ĊĊĠ Ġprivate Ġvar Ġdy Since Direction Change Ġ= Ġ 0 ĊĠ Ġprivate Ġvar Ġis Showing : ĠBoolean Ġ= Ġfalse ĊĠ Ġprivate Ġvar Ġis H iding : ĠBoolean Ġ= Ġfalse ĊĊĠ Ġoverride Ġfun ĠonStart Nested Scroll ( coordinator Layout : ĠCoord inator Layout , Ġchild : ĠView , ĊĠĠĠĠĠ Ġdirect Target Child : ĠView , Ġtarget : ĠView , Ġaxes : ĠInt , ĊĠĠĠĠĠ Ġtype : ĠInt ): ĠBoolean Ġ= ĠView Compat . SCROLL _ AXIS _ VERTICAL Ġ!= Ġ 0 ĊĊĠ Ġoverride Ġfun Ġon Nested Pre Scroll ( coordinator Layout : ĠCoord inator Layout , Ġchild : ĠView , Ġtarget : ĠView , ĊĠĠĠĠĠ Ġdx : ĠInt , Ġdy : ĠInt , Ġconsumed : ĠInt Array , Ġtype : ĠInt ) Ġ{ ĊĊĠĠĠ Ġif Ġ( dy Ġ> Ġ 0 Ġ&& Ġdy Since Direction Change Ġ< Ġ 0 ĊĠĠĠĠĠĠĠ Ġ|| Ġdy Ġ< Ġ 0 Ġ&& Ġdy Since Direction Change Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠ Ġchild . animate (). cancel () ĊĠĠĠĠĠ Ġdy Since Direction Change Ġ= Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdy Since Direction Change Ġ+= Ġdy ĊĊĠĠĠ Ġif Ġ( dy Since Direction Change Ġ> Ġchild . height ĊĠĠĠĠĠĠĠ Ġ&& Ġchild . visibility Ġ== ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ&& Ġ! is H iding ) Ġ{ ĊĠĠĠĠĠ Ġhide ( child ) ĊĠĠĠ Ġ} Ġelse Ġif Ġ( dy Since Direction Change Ġ< Ġ( 0 Ġ- Ġchild . height ) ĊĠĠĠĠĠĠĠ Ġ&& Ġchild . visibility Ġ== ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠ Ġ&& Ġ! is Showing ) Ġ{ ĊĠĠĠĠĠ Ġshow ( child ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġhide ( view : ĠView ) Ġ{ ĊĠĠĠ Ġis H iding Ġ= Ġtrue ĊĠĠĠ Ġval Ġanim ator Ġ= Ġview . animate () ĊĠĠĠĠĠĠĠ Ġ. translation Y (- view . height . toFloat ()) ĊĠĠĠĠĠĠĠ Ġ. set Interpolator ( interpol ator ) ĊĠĠĠĠĠĠĠ Ġ. set Duration ( 2 0 0 ) ĊĊĠĠĠ Ġanim ator . set Listener ( object Ġ: ĠAn imator . Animator Listener Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Start ( anim ator : ĠAn imator ) Ġ{} ĊĊĠĠĠĠĠ Ġoverride Ġfun Ġon Animation End ( anim ator : ĠAn imator ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis H iding Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġview . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Cancel ( anim ator : ĠAn imator ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis H iding Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ(! is Showing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġshow ( view ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Repeat ( anim ator : ĠAn imator ) Ġ{} ĊĠĠĠ Ġ}) ĊĊĠĠĠ Ġanim ator . start () ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġshow ( view : ĠView ) Ġ{ ĊĠĠĠ Ġis Showing Ġ= Ġtrue ĊĠĠĠ Ġval Ġanim ator Ġ= Ġview . animate () ĊĠĠĠĠĠĠĠ Ġ. translation Y ( 0 f ) ĊĠĠĠĠĠĠĠ Ġ. set Interpolator ( interpol ator ) ĊĠĠĠĠĠĠĠ Ġ. set Duration ( 2 0 0 ) ĊĊĠĠĠ Ġanim ator . set Listener ( object Ġ: ĠAn imator . Animator Listener Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Start ( anim ator : ĠAn imator ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġoverride Ġfun Ġon Animation End ( anim ator : ĠAn imator ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis Showing Ġ= Ġfalse ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Cancel ( anim ator : ĠAn imator ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis Showing Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ(! is H iding ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġhide ( view ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Repeat ( anim ator : ĠAn imator ) Ġ{} ĊĠĠĠ Ġ}) ĊĊĠĠĠ Ġanim ator . start () ĊĠ Ġ} Ċ }