package Ġcom . c uber to . liquid _ swipe . animation Ċ Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . view . Motion Event Ċ import Ġcom . c uber to . liquid _ swipe . Edge Controller Ċ import Ġcom . c uber to . liquid _ swipe . View I Ċ import Ġcom . c uber to . liquid _ swipe . animation . Direction . LEFT Ċ import Ġcom . c uber to . liquid _ swipe . animation . Direction . RIGHT Ċ import Ġkotlin . math . max Ċ import Ġkotlin . math . min Ċ Ċ class ĠLeft Edge Controller ( ĊĠĠĠ Ġview Width : ĠInt , ĊĠĠĠ Ġview Height : ĠInt , ĊĠĠĠ Ġwave Center Y : ĠFloat , ĊĠĠĠ Ġdensity : ĠFloat , ĊĠĠĠ Ġview : ĠView I Ċ ) Ġ: ĊĠĠĠ ĠEdge Controller ( ĊĠĠĠĠĠĠĠ Ġview Width , ĊĠĠĠĠĠĠĠ Ġview Height , ĊĠĠĠĠĠĠĠ Ġwave Center Y , ĊĠĠĠĠĠĠĠ Ġdensity , ĊĠĠĠĠĠĠĠ Ġview ĊĠĠĠ Ġ) Ġ{ ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġswipe Direction Ġ= ĠRIGHT ĊĠĠĠĠĠĠĠ Ġenabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġbitmap Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġtouch Offset : ĠFloat Ġ= Ġ 0 . 0 5 f ĊĊĠĠĠ Ġoverride Ġfun Ġon Page Changed ( new Position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Page Changed ( new Position ) ĊĠĠĠĠĠĠĠ Ġcurrent Item Ġ= Ġnew Position ĊĠĠĠĠĠĠĠ Ġif Ġ( currentItem Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap Ġ= Ġview . get Bitmap ( LEFT ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġshould Draw Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġupdate Progress ( 0 f ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Down Touch ( ev : ĠMotion Event ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġcurrent X Ġ= Ġev . x ĊĠĠĠĠĠĠĠ Ġcurrent Y Ġ= Ġev . y ĊĠĠĠĠĠĠĠ Ġif Ġ( enabled Ġ&& Ġev . x Ġ< Ġwidth Ġ* Ġtouch Offset ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Draw Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( currentItem Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwave Center Y Ġ= Ġev . y ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Draw Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Up Touch ( ev : ĠMotion Event ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( should Draw ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( 1 Ġ- Ġev . x Ġ/ Ġwidth Ġ> Ġ 0 . 7 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswitching Page Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanimate Left ( ev . x , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswitching Page Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanimate Right ( ev . x , Ġtrue , Ġ 7 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Move Touch ( ev : ĠMotion Event ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġcurrent X Ġ= Ġev . x ĊĠĠĠĠĠĠĠ Ġcurrent Y Ġ= Ġev . y ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( should Draw ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! anim ating Y ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwave Center Y Ġ= Ġev . y ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Progress ( ev . x ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . redraw () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdraw Edge ( canvas : ĠCanvas ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! enabled Ġ|| Ġbitmap Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif ( should Draw ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Path ( canvas ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas ?. draw Bitmap ( bitmap !! , Ġview . getCurrent Item () Ġ* Ġwidth . toFloat (), Ġ 0 f , Ġsource Out Paint ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupdate Progress ( raw X : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġwidth Ġ- Ġraw X ĊĠĠĠĠĠĠĠ Ġval Ġmax Change Ġ= Ġwidth . toDouble () ĊĠĠĠĠĠĠĠ Ġthis . progress Ġ= Ġmin ( 1 . 0 , Ġmax ( 0 . 0 , Ġx Ġ/ Ġmax Change )). toFloat () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdraw Path ( canvas : ĠCanvas ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwl Ġ= ĠWave Layer ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwave Center Y , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhelper . wave Hor Radius Back ( progress ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhelper . wave Vert Radius ( progress ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhelper . side Width ( progress ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRIGHT ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġwl . update Path ( width . toFloat (), Ġheight . toFloat ()) ĊĠĠĠĠĠĠĠ Ġtranslate Matrix . set Translate ( width . toFloat () Ġ* Ġview . getCurrent Item (), Ġ 0 f ) ĊĠĠĠĠĠĠĠ Ġwl . path . transform ( translate Matrix ) ĊĠĠĠĠĠĠĠ Ġcanvas ?. draw Path ( wl . path , Ġer as or Paint ) ĊĠĠĠ Ġ} Ċ Ċ }