package Ġcom . stock . sns . zu zu club _ android . util . aut ol ink Ċ Ċ import Ġandroid . text . Selection Ċ import Ġandroid . text . Sp ann able Ċ import Ġandroid . text . method . Link Movement Method Ċ import Ġandroid . view . Motion Event Ċ import Ġandroid . widget . TextView Ċ Ċ internal Ġclass ĠLink Touch Movement Method Ġ: ĠLink Movement Method () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġpressed Span : ĠTouch able Span ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġon Touch Event ( textView : ĠTextView , Ġsp ann able : ĠSp ann able , Ġevent : ĠMotion Event ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( event . action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ DOWN Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpressed Span Ġ= Ġget Pressed Span ( textView , Ġsp ann able , Ġevent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( pressed Span Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpressed Span ?. is Pressed Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSelection . setSelection ( span nable , Ġsp ann able . get Span Start ( pressed Span ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsp ann able . get Span End ( pressed Span )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ MOVE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtouched Span Ġ= Ġget Pressed Span ( textView , Ġsp ann able , Ġevent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( pressed Span Ġ!= Ġnull Ġ&& Ġtouched Span Ġ!= Ġpressed Span ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpressed Span ?. is Pressed Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpressed Span Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSelection . remove Selection ( span nable ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( pressed Span Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpressed Span ?. is Pressed Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Touch Event ( textView , Ġsp ann able , Ġevent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpressed Span Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSelection . remove Selection ( span nable ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Pressed Span ( textView : ĠTextView , Ġsp ann able : ĠSp ann able , Ġevent : ĠMotion Event ): ĠTouch able Span ? Ġ{ ĊĊĠĠĠĠĠĠĠ Ġvar Ġx Ġ= Ġevent . x . toInt () ĊĠĠĠĠĠĠĠ Ġvar Ġy Ġ= Ġevent . y . toInt () ĊĊĠĠĠĠĠĠĠ Ġx Ġ-= ĠtextView . total Padding Left ĊĠĠĠĠĠĠĠ Ġy Ġ-= ĠtextView . total Padding Top ĊĊĠĠĠĠĠĠĠ Ġx Ġ+= ĠtextView . scroll X ĊĠĠĠĠĠĠĠ Ġy Ġ+= ĠtextView . scroll Y ĊĊĠĠĠĠĠĠĠ Ġval Ġlayout Ġ= ĠtextView . layout ĊĠĠĠĠĠĠĠ Ġval Ġvertical Line Ġ= Ġlayout . getLine For Vertical ( y ) ĊĠĠĠĠĠĠĠ Ġval Ġhorizontal Offset Ġ= Ġlayout . get Offset For Horizontal ( vertical Line , Ġx . toFloat ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġlink Ġ= Ġsp ann able . get Spans ( horizontal Offset , Ġhorizontal Offset , ĠTouch able Span :: class . java ) ĊĠĠĠĠĠĠĠ Ġreturn Ġlink . get OrNull ( 0 ) ĊĠĠĠ Ġ} Ċ }