package Ġcom . example . an ax . animation testing . fragments Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Handler Ċ import Ġandroid . support . animation . Dynamic Animation Ċ import Ġandroid . support . animation . Spring Animation Ċ import Ġandroid . support . animation . Spring Force Ċ import Ġandroid . support . v 4 . app . Fragment Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġcom . example . an ax . animation testing . R Ċ import Ġkotlinx . android . synt hetic . main . show case _ target _ value _ change .* Ċ Ċ class ĠTarget Value Change Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġenum Ġclass ĠTarget Value Animation Type Ġ{ ĊĠĠĠĠĠĠĠ ĠST AND ARD , ĊĠĠĠĠĠĠĠ ĠPHY S ICS _ BASE D ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Type : ĠTarget Value Animation Type ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater ?, Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater ?. inflate ( R . layout . show case _ target _ value _ change , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĊĠĠĠĠĠĠĠ ĠHandler (). post Delayed ({ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Type Ġ== ĠTarget Value Animation Type . PHYS ICS _ BASE D ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanimate With Physics () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanimate Without Physics () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, Ġ 5 0 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġanimate Without Physics () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġanimation Ġ= Ġsubject . animate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. x ( target . x ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. y ( target . y ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Duration ( 5 0 0 ) ĊĊĠĠĠĠĠĠĠ Ġanimation . start () ĊĊĠĠĠĠĠĠĠ ĠHandler (). post Delayed ({ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanimation . cancel () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpadding Ġ= Ġresources . get Dimension ( R . dim en . spacing ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget . x Ġ= Ġget New X ( padding ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget . y Ġ= Ġget New Y ( padding ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubject . animate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. x ( target . x ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. y ( target . y ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Duration ( 2 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. start () ĊĠĠĠĠĠĠĠ Ġ}, Ġ 3 0 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġanimate With Physics () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġanimation X Ġ= Ġcreate Spring Animation ( subject , ĠDynamic Animation . X , Ġtarget . x ) ĊĠĠĠĠĠĠĠ Ġval Ġanimation Y Ġ= Ġcreate Spring Animation ( subject , ĠDynamic Animation . Y , Ġtarget . y ) ĊĊĠĠĠĠĠĠĠ Ġanimation X . start () ĊĠĠĠĠĠĠĠ Ġanimation Y . start () ĊĊĠĠĠĠĠĠĠ ĠHandler (). post Delayed ({ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpadding Ġ= Ġresources . get Dimension ( R . dim en . spacing ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget . x Ġ= Ġget New X ( padding ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget . y Ġ= Ġget New Y ( padding ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġanimation X . animate To Final Position ( target . x ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanimation Y . animate To Final Position ( target . y ) ĊĠĠĠĠĠĠĠ Ġ}, Ġ 1 5 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Spring Animation ( view : ĠView , Ġproperty : ĠDynamic Animation . View Property , Ġend Value : ĠFloat ): ĠSpring Animation Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġspring Animation Ġ= ĠSpring Animation ( view , Ġproperty , Ġend Value ) ĊĠĠĠĠĠĠĠ Ġspring Animation . spring . st iff ness Ġ= ĠSpring Force . ST IFF NESS _ LOW ĊĠĠĠĠĠĠĠ Ġspring Animation . spring . d amping Ratio Ġ= ĠSpring Force . DA MP ING _ RATIO _ LOW _ BOUN CY ĊĊĠĠĠĠĠĠĠ Ġreturn Ġspring Animation ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget New X ( padding : ĠFloat ) Ġ= Ġpadding Ġ* Ġ 3 ĊĊĠĠĠ Ġprivate Ġfun Ġget New Y ( padding : ĠFloat ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget _ value _ change _ show case _ layout . height Ġ/ Ġ 1 . 2 f Ġ- Ġsubject . height Ġ- Ġpadding ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance ( type : ĠTarget Value Animation Type ): ĠTarget Value Change Fragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= ĠTarget Value Change Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . m Type Ġ= Ġtype ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfragment ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }