package Ġcom . ys j . view pager 2 . transformer Ċ Ċ import Ġandroid . view . View Ċ import Ġkotlin . math . abs Ċ import Ġkotlin . math . max Ċ Ċ class ĠZoom Out Slide Transformer Ġ: ĠA Base Transformer () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġtransform Page ( page : ĠView , Ġposition : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠModify Ġthe Ġdefault Ġslide Ġtransition Ġto Ġshrink Ġthe Ġpage Ġas Ġwell ĊĠĠĠĠĠĠĠ Ġval Ġheight Ġ= Ġpage . height . toFloat () ĊĠĠĠĠĠĠĠ Ġval Ġwidth Ġ= Ġpage . width . toFloat () ĊĠĠĠĠĠĠĠ Ġval Ġscale Factor Ġ= Ġmax ( MIN _ SCALE , Ġ 1 Ġ- Ġabs ( position )) ĊĠĠĠĠĠĠĠ Ġval Ġvert Margin Ġ= Ġheight Ġ* Ġ( 1 Ġ- Ġscale Factor ) Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠ Ġval Ġhor z Margin Ġ= Ġwidth Ġ* Ġ( 1 Ġ- Ġscale Factor ) Ġ/ Ġ 2 ĊĊĠĠĠĠĠĠĠ Ġ// ĠCenter Ġvert ically ĊĠĠĠĠĠĠĠ Ġpage . pivot Y Ġ= Ġ 0 . 5 f Ġ* Ġheight ĊĠĠĠĠĠĠĠ Ġpage . pivot X Ġ= Ġ 0 . 5 f Ġ* Ġwidth ĊĊĠĠĠĠĠĠĠ Ġif Ġ( is Horizontal ( page )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpage . translation X Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( position Ġ< Ġ 0 ) Ġhor z Margin Ġ- Ġvert Margin Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ- hor z Margin Ġ+ Ġvert Margin Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpage . translation Y Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( position Ġ< Ġ 0 ) Ġhor z Margin Ġ- Ġvert Margin Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ- hor z Margin Ġ+ Ġvert Margin Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠScale Ġthe Ġpage Ġdown Ġ( between ĠMIN _ SCALE Ġand Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġpage . scale X Ġ= Ġscale Factor ĊĠĠĠĠĠĠĠ Ġpage . scale Y Ġ= Ġscale Factor ĊĊĠĠĠĠĠĠĠ Ġ// ĠF ade Ġthe Ġpage Ġrelative Ġto Ġits Ġsize . ĊĠĠĠĠĠĠĠ Ġpage . alpha Ġ= ĠMIN _ ALPHA Ġ+ Ġ( scale Factor Ġ- ĠMIN _ SCALE ) Ġ/ Ġ( 1 Ġ- ĠMIN _ SCALE ) Ġ* Ġ( 1 Ġ- ĠMIN _ ALPHA ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠMIN _ SCALE Ġ= Ġ 0 . 8 5 f ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠMIN _ ALPHA Ġ= Ġ 0 . 5 f ĊĠĠĠ Ġ} Ċ Ċ }