package Ġal . ah git development . munic ion . ui . tutorial Ċ Ċ import Ġandroid . view . View Ċ import Ġandroid . view . animation . De cel erate Interpolator Ċ import Ġandroidx . view pager 2 . widget . ViewPager 2 Ċ import Ġkotlin . math . abs Ċ Ċ class ĠTutorial Page Transformer Ġ: ĠView Pager 2 . Page Transformer Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġinterpol ator Ġ= ĠDec el erate Interpolator ( INTER POL ATOR _ FACTOR ) ĊĊĠĠĠ Ġoverride Ġfun Ġtransform Page ( view : ĠView , Ġposition : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpage Width Ġ= Ġwidth ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpage Height Ġ= Ġheight ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition Ġ< Ġ- 1 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalpha Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition Ġ<= Ġ 1 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtransform Factor Ġ= Ġinterpol ator ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get Interpolation ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġabs (( position Ġ/ ĠS WI PE _ FACTOR )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. coerce In ( 0 f , Ġ 1 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscale Ġ= Ġ 1 Ġ- Ġtransform Factor Ġ* ĠSC ALE _ FACTOR ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvertical Margin Ġ= Ġpage Height Ġ* Ġ( 1 Ġ- Ġscale ) Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhorizontal Margin Ġ= Ġpage Width Ġ* Ġ( 1 Ġ- Ġscale ) Ġ/ Ġ 2 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtranslation X Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( position Ġ< Ġ 0 ) Ġhorizontal Margin Ġ- Ġvertical Margin Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġhorizontal Margin Ġ+ Ġvertical Margin Ġ/ Ġ 2 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscale X Ġ= Ġscale ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscale Y Ġ= Ġscale ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalpha Ġ= ĠMIN _ ALPHA Ġ+ Ġ( 1 Ġ- Ġtransform Factor ) Ġ* Ġ( 1 Ġ- ĠMIN _ ALPHA ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalpha Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠINTER POL ATOR _ FACTOR Ġ= Ġ 1 . 5 f ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠS WI PE _ FACTOR Ġ= Ġ 0 . 4 f ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSC ALE _ FACTOR Ġ= Ġ 0 . 1 f ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠMIN _ ALPHA Ġ= Ġ 0 . 8 f ĊĠĠĠ Ġ} Ċ } Ċ