package Ġcom . example . an ax . animation testing . fragments Ċ Ċ import Ġandroid . os . Bundle Ċ 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 . Motion Event Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġcom . example . an ax . animation testing . R Ċ import Ġkotlinx . android . synt hetic . main . show case _ tracking .* Ċ Ċ class ĠTracking Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater ?, Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater ?. inflate ( R . layout . show case _ tracking , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĊĠĠĠĠĠĠĠ Ġvar Ġdelta X : ĠFloat ĊĠĠĠĠĠĠĠ Ġvar Ġdelta Y : ĠFloat ĊĊĠĠĠĠĠĠĠ Ġvar Ġlast X Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠ Ġvar Ġlast Y Ġ= Ġ 0 f ĊĊĠĠĠĠĠĠĠ Ġvar Ġbegin Translation X Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠ Ġvar Ġbegin Translation Y Ġ= Ġ 0 f ĊĊĠĠĠĠĠĠĠ Ġval Ġtracking Animation X Ġ= Ġcreate Spring Animation ( follow er , ĠDynamic Animation . TRANSL ATION _ X , Ġ 0 f ) ĊĠĠĠĠĠĠĠ Ġval Ġtracking Animation Y Ġ= Ġcreate Spring Animation ( follow er , ĠDynamic Animation . TRANSL ATION _ Y , Ġ 0 f ) ĊĊĠĠĠĠĠĠĠ Ġlead . is Clickable Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġlead . setOn Touch Listener Ġ{ Ġview , Ġmotion Event Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( motion Event . action Mask ed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ DOWN Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast X Ġ= Ġmotion Event . raw X ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Y Ġ= Ġmotion Event . raw Y ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbegin Translation X Ġ= Ġlead . translation X ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbegin Translation Y Ġ= Ġlead . translation Y ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ MOVE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelta X Ġ= Ġmotion Event . raw X Ġ- Ġlast X ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelta Y Ġ= Ġmotion Event . raw Y Ġ- Ġlast Y ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlead . translation X Ġ= Ġbegin Translation X Ġ+ Ġdelta X ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlead . translation Y Ġ= Ġbegin Translation Y Ġ+ Ġdelta Y ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtracking Animation X . animate To Final Position ( lead . translation X ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtracking Animation Y . animate To Final Position ( lead . translation Y ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Spring Animation ( view : ĠView , Ġproperty : ĠDynamic Animation . View Property , Ġfinal Position : ĠFloat ): ĠSpring Animation Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġanimation Ġ= ĠSpring Animation ( view , Ġproperty , Ġfinal Position ) ĊĠĠĠĠĠĠĠ Ġanimation . spring . st iff ness Ġ= ĠSpring Force . ST IFF NESS _ LOW ĊĠĠĠĠĠĠĠ Ġanimation . spring . d amping Ratio Ġ= ĠSpring Force . DA MP ING _ RATIO _ MEDIUM _ BOUN CY ĊĊĠĠĠĠĠĠĠ Ġreturn Ġanimation ĊĠĠĠ Ġ} Ċ }