package Ġcom . ifu colo . image pin ch back . normal Ċ Ċ import Ġandroid . animation . Animator Set Ċ import Ġandroid . animation . Argb Evaluator Ċ import Ġandroid . animation . Object Animator Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . widget . ImageView Ċ import Ġandroidx . core . app . Activity Compat Ċ import Ġandroidx . core . view . View Compat Ċ import Ġandroidx . lifecycle . Lifecycle Owner Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġcom . ifu colo . image pin ch back . widget . Frame Touch Ċ import Ġcom . ifu colo . image pin ch back . widget . Frame Touch Events Ċ import Ġcom . ifu colo . image pin ch back . R Ċ import Ġcom . ifu colo . image pin ch back . util . calculate Color Background Ċ import Ġcom . ifu colo . image pin ch back . util . px To Dp Ċ import Ġkotlin . math . sqrt ĊĊ Ċ class ĠImage Drag Back End ( ĊĠĠĠ Ġprivate Ġval Ġactivity : ĠActivity , ĊĠĠĠ Ġprivate Ġval Ġlifecycle Owner : ĠLifecycle Owner , ĊĠĠĠ Ġval ĠimageView : ĠImageView , ĊĠĠĠ Ġprivate Ġval Ġframe Touch : ĠFrame Touch , ĊĠĠĠ Ġprivate Ġval Ġactivity Intent : ĠIntent , ĊĠĠĠ Ġprivate Ġval ĠbackgroundColor : ĠInt Ġ= ĠColor . BLACK Ċ ) Ġ{ ĊĊĠĠĠ Ġlateinit Ġvar Ġimg Url : ĠString ĊĊĠĠĠ Ġprivate Ġval Ġdistance : ĠDouble ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdistance Ġ= Ġsqrt (( imageView . translation Y Ġ* ĠimageView . translation Y Ġ+ ĠimageView . translation X Ġ* ĠimageView . translation X ). toDouble ()). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġpx To Dp ( activity , Ġdistance . toFloat ()). toDouble () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġstart Receive Transaction () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstart Receive Transaction () Ġ{ ĊĠĠĠĠĠĠĠ Ġimg Url Ġ= Ġactivity Intent . getString Extra ( Image Drag Back Start . EXTRA _ IMG _ URL ) ĊĊĠĠĠĠĠĠĠ Ġactivity . override Pending Transition ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . anim . enter _ anim , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . anim . enter _ anim ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠView Compat . set Transition Name ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠimageView , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠImage Drag Back Start . transition _ id ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġsupport Post p one Enter Transition () ĊĠĠĠĠĠĠĠ Ġsupport Start Post p oned Enter Transition () ĊĠĠĠĠĠĠĠ Ġsetup LiveData () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup LiveData () Ġ{ ĊĠĠĠĠĠĠĠ Ġframe Touch . on Frame Touch Up LiveData . observe ( lifecycle Owner , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFrame Touch Events . Frame Touch Up Ġ-> Ġon Frame Touch Up () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFrame Touch Events . Scroll Movie Ġ-> Ġon Scroll Movie ( it . x , Ġit . y ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsupport Start Post p oned Enter Transition () Ġ{ ĊĠĠĠĠĠĠĠ ĠActivity Compat . start Post p oned Enter Transition ( activity ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsupport Post p one Enter Transition () Ġ{ ĊĠĠĠĠĠĠĠ ĠActivity Compat . post p one Enter Transition ( activity ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Frame Touch Up () Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdistance Ġ> Ġ 5 0 Ġ-> Ġactivity . on Back Pressed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġanim ator Set Ġ= ĠAn imator Set () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolor Animator Ġ= ĠObject Animator . of Int ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġframe Touch , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" backgroundColor ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcalculate Color Background ( distance ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠbackgroundColor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Animator . set Evaluator ( Argb Evaluator ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanim ator Set . play To gether ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠObject Animator . of Float ( imageView , Ġ" translation X ", Ġ 0 f ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠObject Animator . of Float ( imageView , Ġ" translation Y ", Ġ 0 f ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Animator ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanim ator Set . start () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Scroll Movie ( x : ĠFloat , Ġy : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġframe Touch . set BackgroundColor ( calculate Color Background ( distance )) ĊĠĠĠĠĠĠĠ ĠimageView . translation Y Ġ= ĠimageView . translation Y Ġ- Ġy ĊĠĠĠĠĠĠĠ ĠimageView . translation X Ġ= ĠimageView . translation X Ġ- Ġx ĊĠĠĠ Ġ} Ċ }