package Ġcom . y uy aka ido . android . card stack view . internal Ċ Ċ import Ġandroid . view . View Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . y uy aka ido . android . card stack view . Card Stack LayoutManager Ċ import Ġcom . y uy aka ido . android . card stack view . Direction Ċ Ċ class ĠCard Stack Smooth Scroller ( ĊĠĠĠ Ġprivate Ġval Ġtype : ĠScroll Type , ĊĠĠĠ Ġprivate Ġval Ġmanager : ĠCard Stack LayoutManager Ċ ) Ġ: ĠRecyclerView . Smooth Scroller () Ġ{ ĊĠĠĠ Ġenum Ġclass ĠScroll Type Ġ{ ĊĠĠĠĠĠĠĠ ĠAutomatic Swipe , ĠAutomatic Rew ind , ĠManual Swipe , ĠManual Cancel ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Seek Target Step ( ĊĠĠĠĠĠĠĠ Ġdx : ĠInt , ĊĠĠĠĠĠĠĠ Ġdy : ĠInt , ĊĠĠĠĠĠĠĠ Ġstate : ĠRecyclerView . State , ĊĠĠĠĠĠĠĠ Ġaction : ĠAction ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( type Ġ== ĠScroll Type . Automatic Rew ind ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsetting Ġ= Ġmanager . card Stack Setting . rewind Animation Setting ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction . update ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- get Dx ( setting ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- get Dy ( setting ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsetting . duration , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsetting . interpol ator ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Target Found ( ĊĠĠĠĠĠĠĠ Ġtarget View : ĠView , ĊĠĠĠĠĠĠĠ Ġstate : ĠRecyclerView . State , ĊĠĠĠĠĠĠĠ Ġaction : ĠAction ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġtarget View . translation X . toInt () ĊĠĠĠĠĠĠĠ Ġval Ġy Ġ= Ġtarget View . translation Y . toInt () ĊĠĠĠĠĠĠĠ Ġval Ġsetting : ĠAnimation Setting ĊĠĠĠĠĠĠĠ Ġwhen Ġ( type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠScroll Type . Automatic Swipe Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsetting Ġ= Ġmanager . card Stack Setting . swipe Animation Setting ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction . update ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- get Dx ( setting ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- get Dy ( setting ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsetting . duration , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsetting . interpol ator ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠScroll Type . Automatic Rew ind Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsetting Ġ= Ġmanager . card Stack Setting . rewind Animation Setting ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction . update ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsetting . duration , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsetting . interpol ator ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠScroll Type . Manual Swipe Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdx Ġ= Ġ- x Ġ* Ġ 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdy Ġ= Ġ- y Ġ* Ġ 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsetting Ġ= Ġmanager . card Stack Setting . swipe Animation Setting ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction . update ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdx , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdy , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsetting . duration , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsetting . interpol ator ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠScroll Type . Manual Cancel Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsetting Ġ= Ġmanager . card Stack Setting . rewind Animation Setting ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction . update ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsetting . duration , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsetting . interpol ator ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlistener Ġ= Ġmanager . card Stack Listener ĊĠĠĠĠĠĠĠ Ġval Ġstate Ġ= Ġmanager . card Stack State ĊĠĠĠĠĠĠĠ Ġwhen Ġ( type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠScroll Type . Automatic Swipe Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate . next ( Card Stack State . Status . Automatic Swipe Anim ating ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . on Card Dis appe ared ( manager . top View , Ġmanager . top Position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠScroll Type . Automatic Rew ind Ġ-> Ġstate . next ( Card Stack State . Status . Rew ind Anim ating ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠScroll Type . Manual Swipe Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate . next ( Card Stack State . Status . Manual Swipe Anim ating ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . on Card Dis appe ared ( manager . top View , Ġmanager . top Position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠScroll Type . Manual Cancel Ġ-> Ġstate . next ( Card Stack State . Status . Rew ind Anim ating ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Stop () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlistener Ġ= Ġmanager . card Stack Listener ĊĠĠĠĠĠĠĠ Ġwhen Ġ( type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠScroll Type . Automatic Swipe Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠScroll Type . Automatic Rew ind Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . on Card Rew ound () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . on Card Ap pe ared ( manager . top View , Ġmanager . top Position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠScroll Type . Manual Swipe Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠScroll Type . Manual Cancel Ġ-> Ġlistener . on Card Canceled () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Dx ( setting : ĠAnimation Setting ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstate Ġ= Ġmanager . card Stack State ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( setting . direction ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDirection . Left Ġ-> Ġ- state . width Ġ* Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDirection . Right Ġ-> Ġstate . width Ġ* Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDirection . Top , ĠDirection . Bottom Ġ-> Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Dy ( setting : ĠAnimation Setting ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstate Ġ= Ġmanager . card Stack State ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( setting . direction ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDirection . Left , ĠDirection . Right Ġ-> Ġstate . height Ġ/ Ġ 4 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDirection . Top Ġ-> Ġ- state . height Ġ* Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDirection . Bottom Ġ-> Ġstate . height Ġ* Ġ 2 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }