package Ġdemo . tran . nam . drag view Ċ Ċ import Ġandroid . animation .* Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Rect Ċ import Ġandroid . graphics . Type face Ċ import Ġandroid . support . v 4 . content . Context Compat Ċ import Ġandroid . support . v 7 . widget . AppCompat TextView Ċ import Ġandroid . support . v 7 . widget . Linear LayoutManager Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view .* Ċ import Ġandroid . widget . Absolute Layout Ċ import Ġandroid . widget . Relative Layout Ċ import Ġdemo . tran . nam . drag view . databinding . Drag View Layout Binding Ċ import Ġdemo . tran . nam . drag view . databinding . Item Cross Word Binding Ċ import Ġtran . nam . common . Data Bound ViewHolder Ċ import Ġjava . util .* Ċ import Ġandroid . animation . Value Animator . Animator Update Listener Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . databinding . adapters . ImageView Binding Adapter . setImage Drawable Ċ import Ġandroid . graphics . drawable . Transition Drawable ĊĊĊĊ Ċ class ĠDrag View Ġ@ Jvm Over loads Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġattrs : ĠAttributeSet ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġdef Style : ĠInt Ġ= Ġ 0 Ċ ) Ġ: ĠRelative Layout ( context , Ġattrs , Ġdef Style ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġm Binding : ĠDrag View Layout Binding ĊĠĠĠ Ġprivate Ġvar Ġm Adapter : ĠAdapter Cross Word ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġon Drag Listener : Ġon Drag View Listener ? Ġ= Ġnull ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġm Binding Ġ= ĠDrag View Layout Binding . inflate ( LayoutInflater . from ( context ), Ġthis , Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠsetData ( data : ĠList < String >) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( char Ġin Ġdata ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Binding . contain Text . removeAll Views () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Binding . contain Text . getView Tree Observer (). add On Global Layout Listener ( object Ġ: ĠView Tree Observer . On Global Layout Listener Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress Lint (" Click ableView Accessibility ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Global Layout () Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Ġ= ĠAppCompat TextView ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext . background Ġ= ĠContext Compat . get Drawable ( context , ĠR . drawable . blue box ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext . setTextColor ( Context Compat . getColor ( context , Ġandroid . R . color . white )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext . text Ġ= Ġchar ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext . setType face ( text . getType face (), ĠType face . BOLD ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext . gravity Ġ= ĠGr avity . CENTER ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext . setOn Touch Listener ( On Touch To Drag ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlayout Params Ġ= ĠAbsolute Layout . LayoutParams ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . resources . get Dimension ( R . dim en . positive _ 5 0 dp ). toInt (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . resources . get Dimension ( R . dim en . positive _ 3 0 dp ). toInt (), Ġ 0 , Ġ 0 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrandom Coordinates ( layout Params ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext . setLayout Params ( layout Params ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Binding . contain Text . addView ( text ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Binding . contain Text . getView Tree Observer (). remove On Global Layout Listener ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġm Adapter Ġ= ĠAdapter Cross Word () ĊĠĠĠĠĠĠĠ Ġm Adapter ?. replace ( data ) ĊĠĠĠĠĠĠĠ Ġm Binding . rv Word . adapter Ġ= Ġm Adapter ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrandom Coordinates ( layout Params : ĠAbsolute Layout . LayoutParams ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlayout Params . x Ġ= Ġrandom Coordinate ( true ) ĊĠĠĠĠĠĠĠ Ġlayout Params . y Ġ= Ġrandom Coordinate ( false ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrandom Coordinate ( is X : ĠBoolean , Ġis Half : ĠBoolean Ġ= Ġfalse ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġr Ġ= ĠRandom () ĊĠĠĠĠĠĠĠ Ġval Ġlow Ġ= Ġif Ġ( is X ) Ġmin X () Ġelse Ġmin Y () ĊĠĠĠĠĠĠĠ Ġval Ġhigh Ġ= Ġif Ġ( is X ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Half ) Ġmax X () Ġ/ Ġ 4 Ġelse Ġmax X () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmax Y () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġr . nextInt ( high Ġ- Ġlow ) Ġ+ Ġlow ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmin X (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġm Binding . contain Text . left Ġ+ Ġ( context . resources . get Dimension ( R . dim en . positive _ 5 0 dp )). toInt () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmin Y (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġm Binding . rv Word . top Ġ+ Ġ( context . resources . get Dimension ( R . dim en . positive _ 3 0 dp ). toInt ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmax X (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġm Binding . contain Text . right Ġ- Ġ( context . resources . get Dimension ( R . dim en . positive _ 5 0 dp )). toInt () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmax Y (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġm Binding . contain Text . bottom Ġ- Ġ( context . resources . get Dimension ( R . dim en . positive _ 3 0 dp ). toInt ()) Ġ- Ġm Binding . rv Word . height ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDrag gable Ġobject Ġont ouch Ġlistener ĊĠĠĠĠ Ġ* ĠHandle Ġthe Ġmovement Ġof Ġthe Ġobject Ġwhen Ġdrag ged Ġand Ġdropped ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval ĠOn Touch To Drag Ġ= Ġobject Ġ: ĠView . On Touch Listener Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġdown X : ĠFloat Ġ= Ġ 0 . toFloat () ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġdown Y : ĠFloat Ġ= Ġ 0 . toFloat () ĊĊĠĠĠĠĠĠĠ Ġ@ Suppress Lint (" Click ableView Accessibility ") ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Touch ( v : ĠView , Ġevent : ĠMotion Event ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( event . action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ DOWN Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Drag Listener ?. on Drag Start () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdown X Ġ= Ġevent . x ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdown Y Ġ= Ġevent . y ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ MOVE Ġ-> Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Distance Ġ= Ġevent . x Ġ- Ġdown X ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġy Distance Ġ= Ġevent . y Ġ- Ġdown Y ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( x Distance Ġ!= Ġ 0 f Ġ&& Ġy Distance Ġ!= Ġ 0 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġl Ġ= Ġ( v . left Ġ+ Ġx Distance ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġr Ġ= Ġ( v . right Ġ+ Ġx Distance ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġt Ġ= Ġ( v . top Ġ+ Ġy Distance ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġb Ġ= Ġ( v . bottom Ġ+ Ġy Distance ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv . layout ( l , Ġt , Ġr , Ġb ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ CANCEL , ĠMotion Event . ACTION _ UP Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is View Over lapping ( v , Ġm Binding . contain Rv )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlayout Manager Ġ= Ġm Binding . rv Word . layout Manager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġis ĠLinearLayoutManager ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfirst Visible Ġ= Ġit . findFirst Visible Item Position () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlast Visible Ġ= Ġit . find Last Visible Item Position () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġfirst Visible .. last Visible ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġholder Ġ= Ġm Binding . rv Word . find ViewHolder For Adapter Position ( i ) Ġas ĠData Bound ViewHolder < *> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( v Ġis ĠAppCompat TextView Ġ&& Ġholder . binding Ġis ĠItem Cross Word Binding ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( v . text Ġ!= Ġholder . binding . text ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is View Over lapping ( v , Ġholder . item View )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrect Ġ= ĠRect () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . item View . getGlobal Visible Rect ( rect ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv . animate (). x ( rect . left . toFloat ()). y ( m Binding . contain Text . bottom Ġ- Ġholder . item View . height . toFloat ()). alpha ( 0 f ). set Duration ( 5 0 0 ). set Listener ( object Ġ: Animator . Animator Listener { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Repeat ( animation : ĠAn imator ?) Ġ{ Ċ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation End ( animation : ĠAn imator ?) Ġ{ Ċ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Cancel ( animation : ĠAn imator ?) Ġ{ Ċ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Start ( animation : ĠAn imator ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlayers Ġ= ĠarrayOf Null s < Drawable >( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayers [ 0 ] Ġ= ĠContext Compat . get Drawable ( context , R . drawable . black box ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayers [ 1 ] Ġ= ĠContext Compat . get Drawable ( context , R . drawable . blue box ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtransition Ġ= ĠTransition Drawable ( layers ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . binding . tv Char . setBackground Drawable ( transition ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransition . start Transition ( 5 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . binding . tv Char . text Ġ= Ġv . text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Drag Listener ?. on Drag Success () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Value Ġ= Ġrandom Coordinate ( true ) /* Ġ* Ġif Ġ( Math . random () Ġ< Ġ 0 . 5 ) Ġ- 1 Ġelse Ġ 1 */ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġy Value Ġ= Ġrandom Coordinate ( false ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv . animate (). x ( x Value . toFloat ()). y ( y Value . toFloat ()). set Duration ( 1 0 0 0 ). start () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Drag Listener ?. on Drag Wrong () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Drag Listener ?. on Drag Cancel () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis View Over lapping ( first View : ĠView , Ġsecond View : ĠView ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmy View Rect Ġ= ĠRect () ĊĠĠĠĠĠĠĠ Ġfirst View . getGlobal Visible Rect ( my View Rect ) ĊĊĠĠĠĠĠĠĠ Ġval Ġother View Rect 1 Ġ= ĠRect () ĊĠĠĠĠĠĠĠ Ġsecond View . getGlobal Visible Rect ( other View Rect 1 ) ĊĠĠĠĠĠĠĠ Ġreturn ĠRect . intersect s ( my View Rect , Ġother View Rect 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface Ġon Drag View Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon Drag Start () ĊĠĠĠĠĠĠĠ Ġfun Ġon Drag Wrong () ĊĠĠĠĠĠĠĠ Ġfun Ġon Drag Cancel () ĊĠĠĠĠĠĠĠ Ġfun Ġon Drag Success () ĊĠĠĠ Ġ} Ċ }