package Ġcom . react native vide oc lips Ċ Ċ import Ġandroid . animation . Object Animator Ċ import Ġandroid . animation . Value Animator Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . Motion Event Ċ import Ġandroid . view . View Ċ import Ġandroid . view . View . On Touch Listener Ċ import Ġandroid . view . animation . Linear Interpolator Ċ import Ġandroid . widget . Frame Layout Ċ import Ġkotlin . math . floor ĊĊ Ċ /** Ċ Ġ* ĠCreate ĠBy Ġsong hang Ġin Ġ 2 0 2 1 / 6 / 8 Ċ Ġ*/ Ċ class ĠControl View Ġ@ Jvm Over loads Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ? Ġ= Ġnull , Ġdef Style Attr : ĠInt Ġ= Ġ 0 ) ĊĠ Ġ: ĠFrame Layout ( context , Ġattrs , Ġdef Style Attr ){ ĊĠ Ġprivate Ġvar ĠmContext : ĠContext Ġ= Ġcontext ĊĠ Ġprivate Ġvar Ġtop Line : View ?= null ĊĠ Ġprivate Ġvar Ġbottom Line : View ?= null ĊĠ Ġprivate Ġvar Ġleft X : Float Ġ= Ġ 0 f ĊĠ Ġprivate Ġvar Ġright X : Float Ġ= Ġ 0 f ĊĠ Ġprivate Ġvar Ġtouch Start X : Int Ġ= Ġ 0 ĊĠ Ġprivate Ġvar Ġtouch Start Right X : Int Ġ= Ġ 0 ĊĠ Ġprivate Ġvar Ġitem Width : Int Ġ= Ġ 0 ĊĠ Ġprivate Ġvar Ġleft Control View : View ?= null ĊĠ Ġprivate Ġvar Ġright Control View : View ?= null ĊĠ Ġprivate Ġvar Ġpoint View : View ?= null ĊĠ Ġprivate Ġvar Ġanim ator : Object Animator ? Ġ= Ġnull ĊĠ Ġvar Ġcontrol ViewController : Control ViewController ? Ġ= Ġnull ĊĠ Ġvar Ġpref i X Ġ= Ġ 0 ĊĠ Ġinterface ĠControl ViewController { ĊĠĠĠ Ġfun Ġis Control ( flag : ĠBoolean , start : Int , end : Int ){ ĊĊĠĠĠ Ġ} ĊĠ Ġ} ĊĠ Ġinit Ġ{ ĊĠĠĠ Ġval ĠH M Ġ= ĠHelper . dip 2 px ( mContext , 4 0 ) ĊĠĠĠ Ġval ĠH Ġ= ĠHelper . dip 2 px ( mContext , 7 0 ) ĊĠĠĠ Ġval ĠW Ġ= ĠHelper . dip 2 px ( mContext , 2 0 ) ĊĠĠĠ Ġval ĠV W Ġ= ĠHelper . dip 2 px ( mContext , 2 ) ĊĠĠĠ Ġval Ġone Ġ= ĠHelper . dip 2 px ( mContext , 1 ) ĊĠĠĠ Ġval ĠSW Ġ= ĠHelper . get Screen Width ( mContext ) ĊĠĠĠ Ġval Ġtop Line Ġ= ĠView ( mContext ) ĊĠĠĠ Ġval Ġbottom Line Ġ= ĠView ( mContext ) ĊĠĠĠ Ġval Ġline W Ġ= ĠSW Ġ- ĠH M Ġ* Ġ 2 ĊĠĠĠ Ġtop Line . set BackgroundColor ( Color . WHITE ) ĊĠĠĠ Ġbottom Line . set BackgroundColor ( Color . WHITE ) ĊĠĠĠ Ġval Ġtop LayoutParams Ġ= Ġ ĠLayout Params ( line W , VW ) ĊĠĠĠ Ġval Ġbottom LayoutParams Ġ= Ġ ĠLayout Params ( line W , VW ) ĊĠĠĠ Ġtop Line . x Ġ= ĠH M . toFloat () ĊĠĠĠ Ġbottom Line . x Ġ= ĠH M . toFloat () ĊĠĠĠ Ġbottom Line . y Ġ= ĠH . toFloat () ĊĠĠĠ Ġthis . top Line Ġ= Ġtop Line ĊĠĠĠ Ġthis . bottom Line Ġ= Ġbottom Line ĊĠĠĠ Ġadd View ( top Line , top LayoutParams ) ĊĠĠĠ Ġadd View ( bottom Line , bottom LayoutParams ) ĊĊĊĠĠĠ Ġ// Ġpoint ĊĠĠĠ Ġval Ġpoint View Ġ= ĠView ( mContext ) ĊĠĠĠ Ġpoint View . x Ġ= ĠH M . toFloat () ĊĠĠĠ Ġpoint View . set BackgroundColor ( Color . WHITE ) ĊĠĠĠ Ġval Ġpoint View Params Ġ= Ġ ĠLayout Params ( one , H ) ĊĠĠĠ Ġadd View ( point View , point View Params ) ĊĠĠĠ Ġthis . point View Ġ= Ġpoint View ĊĊĠĠĠ Ġ// Ġslide ĊĠĠĠ Ġval Ġleft Control View Ġ= ĠView ( mContext ) ĊĠĠĠ Ġval Ġright Control View Ġ= ĠView ( mContext ) ĊĠĠĠ Ġthis . left Control View Ġ= Ġleft Control View ĊĠĠĠ Ġthis . right Control View Ġ= Ġright Control View ĊĠĠĠ Ġleft Control View . background Ġ= ĠHelper . get Drawable ( mContext , R . drawable . controller ) ĊĠĠĠ Ġright Control View . background Ġ= ĠHelper . get Drawable ( mContext , R . drawable . controller ) ĊĠĠĠ Ġval Ġleft LayoutParams Ġ= Ġ ĠLayout Params ( W , Helper . dip 2 px ( mContext , 7 2 )) ĊĠĠĠ Ġleft X Ġ= Ġ(( HM Ġ- ĠW Ġ* Ġ 0 . 5 ). toFloat ()) ĊĠĠĠ Ġleft Control View . x Ġ= Ġleft X ĊĊĊĠĠĠ Ġval Ġright LayoutParams Ġ= Ġ ĠLayout Params ( W , Helper . dip 2 px ( mContext , 7 2 )) ĊĠĠĠ Ġright X Ġ= Ġ( line W Ġ+ ĠH M Ġ- ĠW Ġ* Ġ 0 . 5 ). toFloat () ĊĠĠĠ Ġright Control View . x Ġ= Ġright X ĊĠĠĠ Ġadd View ( left Control View , left LayoutParams ) ĊĠĠĠ Ġadd View ( right Control View , right LayoutParams ) ĊĊĠĠĠ Ġleft Control View . setOn Touch Listener ( On Touch Listener () Ġ{ Ġv , Ġevent Ġ-> ĊĠĠĠĠĠ Ġval Ġaction Ġ= Ġevent . action ĊĠĠĠĠĠ Ġif ( action Ġ== ĠMotion Event . ACTION _ DOWN ){ ĊĠĠĠĠĠĠĠ Ġtouch Start X Ġ= Ġevent . x . toInt (); ĊĠĠĠĠĠĠĠ Ġthis . anim ator Stop () ĊĠĠĠĠĠĠĠ Ġthis . control ViewController ?. is Control ( true , 0 , 0 ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġelse Ġif ( action Ġ== ĠMotion Event . ACTION _ MOVE ){ ĊĠĠĠĠĠĠĠ Ġvar Ġnew X Ġ= Ġleft Control View . x Ġ+ Ġ( event . x . toInt () Ġ- Ġtouch Start X ) ĊĠĠĠĠĠĠĠ Ġif ( new X Ġ< Ġleft X ) Ġnew X Ġ= Ġleft X ĊĠĠĠĠĠĠĠ Ġif ( new X Ġ> Ġright Control View . x Ġ- Ġitem Width ){ ĊĠĠĠĠĠĠĠĠĠ Ġnew X Ġ= Ġright Control View . x Ġ- Ġitem Width ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġleft Control View . translation X Ġ= Ġnew X ĊĠĠĠĠĠĠĠ Ġval ĠH _ x Ġ= Ġnew X Ġ+ ĠW Ġ* Ġ 0 . 5 ĊĠĠĠĠĠĠĠ Ġtop Line . x Ġ= ĠH _ x . toFloat () ĊĠĠĠĠĠĠĠ Ġbottom Line . x Ġ= ĠH _ x . toFloat () ĊĊĠĠĠĠĠĠĠ Ġval Ġt ll p Ġ= Ġ Ġtop Line . layout Params ĊĠĠĠĠĠĠĠ Ġval Ġb ll p Ġ= Ġ Ġbottom Line . layout Params ĊĠĠĠĠĠĠĠ Ġt ll p . width Ġ= Ġ( right Control View . x Ġ- Ġleft Control View . x ). toInt () ĊĠĠĠĠĠĠĠ Ġb ll p . width Ġ= Ġt ll p . width ĊĠĠĠĠĠĠĠ Ġtop Line . layout Params Ġ= Ġt ll p ĊĠĠĠĠĠĠĠ Ġbottom Line . layout Params Ġ= Ġb ll p ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġelse Ġif ( action Ġ== ĠMotion Event . ACTION _ UP ){ ĊĠĠĠĠĠĠĠ Ġv . perform Click () ĊĠĠĠĠĠĠĠ Ġthis . change Time Range () ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġelse Ġif ( action Ġ== ĠMotion Event . ACTION _ CANCEL ){ ĊĠĠĠĠĠĠĠ Ġthis . change Time Range () ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġtrue ĊĠĠĠ Ġ}) ĊĠĠĠ Ġright Control View . setOn Touch Listener ( On Touch Listener () Ġ{ Ġv , Ġevent Ġ-> ĊĠĠĠĠĠ Ġval Ġaction Ġ= Ġevent . action ĊĠĠĠĠĠ Ġif ( action Ġ== ĠMotion Event . ACTION _ DOWN ){ ĊĠĠĠĠĠĠĠ Ġtouch Start Right X Ġ= Ġevent . x . toInt (); ĊĠĠĠĠĠĠĠ Ġthis . anim ator Stop () ĊĠĠĠĠĠĠĠ Ġthis . control ViewController ?. is Control ( true , 0 , 0 ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġelse Ġif ( action Ġ== ĠMotion Event . ACTION _ MOVE ){ ĊĠĠĠĠĠĠĠ Ġvar Ġnew X Ġ= Ġright Control View . x Ġ+ Ġ( event . x . toInt () Ġ- Ġtouch Start Right X ) ĊĠĠĠĠĠĠĠ Ġif ( new X Ġ> Ġright X ) Ġnew X Ġ= Ġright X ĊĠĠĠĠĠĠĠ Ġif ( new X Ġ< Ġleft Control View . x Ġ+ Ġitem Width ){ ĊĠĠĠĠĠĠĠĠĠ Ġnew X Ġ= Ġleft Control View . x Ġ+ Ġitem Width ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġright Control View . translation X Ġ= Ġnew X ĊĠĠĠĠĠĠĠ Ġval Ġt ll p Ġ= Ġ Ġtop Line . layout Params ĊĠĠĠĠĠĠĠ Ġval Ġb ll p Ġ= Ġ Ġbottom Line . layout Params ĊĠĠĠĠĠĠĠ Ġt ll p . width Ġ= Ġ( right Control View . x Ġ- Ġleft Control View . x ). toInt () ĊĠĠĠĠĠĠĠ Ġb ll p . width Ġ= Ġt ll p . width ĊĠĠĠĠĠĠĠ Ġtop Line . layout Params Ġ= Ġt ll p ĊĠĠĠĠĠĠĠ Ġbottom Line . layout Params Ġ= Ġb ll p ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġelse Ġif ( action Ġ== ĠMotion Event . ACTION _ UP ){ ĊĠĠĠĠĠĠĠ Ġv . perform Click () ĊĠĠĠĠĠĠĠ Ġthis . change Time Range () ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġelse Ġif ( action Ġ== ĠMotion Event . ACTION _ CANCEL ){ ĊĠĠĠĠĠĠĠ Ġthis . change Time Range () ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġtrue ĊĠĠĠ Ġ}) ĊĠ Ġ} ĊĊĠ Ġfun Ġreset ( item Width : Int ){ ĊĠĠĠ Ġval ĠH M Ġ= ĠHelper . dip 2 px ( mContext , 4 0 ) ĊĠĠĠ Ġval ĠSW Ġ= ĠHelper . get Screen Width ( mContext ) ĊĠĠĠ Ġthis . item Width Ġ= Ġitem Width ĊĠĠĠ Ġleft Control View ?. x Ġ= Ġleft X ĊĠĠĠ Ġright Control View ?. x Ġ= Ġright X ĊĠĠĠ Ġval Ġt ll p Ġ= Ġ Ġtop Line !!. layout Params ĊĠĠĠ Ġval Ġb ll p Ġ= Ġ Ġbottom Line !!. layout Params ĊĊĠĠĠ Ġtop Line ?. x Ġ= ĠH M . toFloat () ĊĠĠĠ Ġbottom Line ?. x Ġ= ĠH M . toFloat () ĊĠĠĠ Ġt ll p . width Ġ= ĠSW Ġ- ĠH M Ġ* 2 ĊĠĠĠ Ġb ll p . width Ġ= Ġt ll p . width ĊĊĠĠĠ Ġtop Line !!. layout Params Ġ= Ġt ll p ĊĠĠĠ Ġbottom Line !!. layout Params Ġ= Ġb ll p ĊĠĠĠ Ġpref i X Ġ= Ġ 0 ĊĠ Ġ} ĊĠ Ġfun Ġchange Time Range (){ ĊĠĠĠ Ġval ĠW Ġ= ĠHelper . dip 2 px ( mContext , 2 0 ) ĊĠĠĠ Ġval Ġleft X Ġ= Ġleft Control View !!. translation X Ġ+ ĠW Ġ* Ġ 0 . 5 Ġ- ĠW Ġ* Ġ 2 Ġ+ Ġpref i X ĊĠĠĠ Ġval Ġright X Ġ= Ġright Control View !!. translation X Ġ+ ĠW Ġ* Ġ 0 . 5 Ġ- ĠW Ġ* Ġ 2 Ġ+ Ġpref i X ĊĠĠĠ Ġval Ġleft Index Ġ= Ġfloor ( left X Ġ/ Ġitem Width ) ĊĠĠĠ Ġval Ġright Index Ġ= Ġfloor ( right X Ġ/ Ġitem Width ) ĊĠĠĠ ĠLog . d (" change Time Range "," left : Ġ$ left X Ġright : Ġ$ right X ") ĊĠĠĠ ĠLog . d (" change Time Range "," left Index : Ġ$ left Index Ġright Index : Ġ$ right Index ") ĊĠĠĠ Ġthis . control ViewController ?. is Control ( false , left Index . toInt (), right Index . toInt ()) ĊĠ Ġ} ĊĠ Ġfun Ġstart Play ( time : Int ){ ĊĠĠĠ Ġthis . point View ?. visibility Ġ= ĠView . VISIBLE ĊĠĠĠ Ġval ĠW Ġ= ĠHelper . dip 2 px ( mContext , 2 0 ) ĊĠĠĠ Ġval Ġleft X Ġ= Ġ( left Control View !!. translation X Ġ+ ĠW Ġ* Ġ 0 . 5 ). toFloat () ĊĠĠĠ Ġval Ġright X Ġ= Ġ( right Control View !!. translation X Ġ+ ĠW Ġ* Ġ 0 . 5 ). toFloat () ĊĠĠĠ Ġval Ġanim ator Ġ= ĠObject Animator . of Float ( this . point View !! , Ġ" translation X ", Ġleft X , Ġright X ) ĊĠĠĠ Ġanim ator . duration Ġ= Ġ( time Ġ* Ġ 1 0 0 0 ). to Long () Ċ // ĠĠĠ Ġanim ator . repeat Count Ġ= ĠValue Animator . INF IN ITE ĊĠĠĠ Ġanim ator . interpol ator Ġ= ĠLinear Interpolator () Ċ // ĠĠĠ Ġanim ator . repeat Mode Ġ= ĠValue Animator . RE START ĊĠĠĠ Ġthis . anim ator Ġ= Ġanim ator ĊĠĠĠ Ġanim ator . start () ĊĠ Ġ} ĊĠ Ġfun Ġanim ator Stop (){ ĊĠĠĠ Ġthis . point View ?. visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠ Ġthis . anim ator ?. cancel () ĊĠ Ġ} Ċ } Ċ