package Ġcc . t aylor zhang . single click Ċ Ċ import Ġandroid . text . Sp ann able StringBuilder Ċ import Ġandroid . text . Text Paint Ċ import Ġandroid . text . style . Clickable Span Ċ import Ġandroid . view . View Ċ import Ġandroidx . core . text . in Spans Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ /** Ċ Ġ* Ġ< pre > Ċ Ġ* ĠĠĠĠ Ġauthor Ġ: ĠT aylor ĠZ hang Ċ Ġ* ĠĠĠĠ Ġtime ĠĠ Ġ: Ġ 2 0 2 1 / 0 3 / 1 9 Ċ Ġ* ĠĠĠĠ Ġdesc ĠĠ Ġ: ĠSingle Ġclick Ġutil . Ċ Ġ* ĠĠĠĠ Ġversion : Ġ 1 . 0 . 0 Ċ Ġ* Ġ</ pre > Ċ Ġ*/ Ċ object ĠSingle Click Util Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGlobal Ġsingle Ġclick Ġinterval . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġsingle Click Interval : ĠInt Ġ= Ġ 1 0 0 0 ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ<= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Single Ġclick Ġinterval Ġmust Ġbe Ġgreater Ġthan Ġ 0 .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRegister Ġa Ġcallback Ġto Ġbe Ġinvoked Ġwhen Ġthis Ġview Ġis Ġsingle Ġclicked . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġlistener ĠSingle Ġclick Ġlistener . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġon Single Click ( view : ĠView , Ġlistener : ĠView . OnClickListener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview . on Single Click ( listener Ġ= Ġlistener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRegister Ġa Ġcallback Ġto Ġbe Ġinvoked Ġwhen Ġthis Ġview Ġis Ġsingle Ġclicked . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġinterval ĠSingle Ġclick Ġinterval . ĠUnit Ġis Ġ[ TimeUnit . MILLISECONDS ]. ĊĠĠĠĠ Ġ* Ġ@ param Ġlistener ĠSingle Ġclick Ġlistener . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġon Single Click ( view : ĠView , Ġinterval : ĠInt , Ġlistener : ĠView . OnClickListener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview . on Single Click ( interval , Ġlistener Ġ= Ġlistener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRegister Ġa Ġcallback Ġto Ġbe Ġinvoked Ġwhen Ġthis Ġview Ġis Ġsingle Ġclicked . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġis Share Single Click ĠTrue Ġif Ġthis Ġview Ġis Ġshare Ġsingle Ġclick Ġinterval Ġwh it Ġother Ġview ĊĠĠĠĠ Ġ* ĠĠ Ġin Ġsame ĠActivity , Ġfalse Ġotherwise . ĊĠĠĠĠ Ġ* Ġ@ param Ġlistener ĠSingle Ġclick Ġlistener . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġon Single Click ( view : ĠView , Ġis Share Single Click : ĠBoolean , Ġlistener : ĠView . OnClickListener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview . on Single Click ( is Share Single Click Ġ= Ġis Share Single Click , Ġlistener Ġ= Ġlistener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRegister Ġa Ġcallback Ġto Ġbe Ġinvoked Ġwhen Ġthis Ġview Ġis Ġsingle Ġclicked . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġinterval ĠSingle Ġclick Ġinterval . ĠUnit Ġis Ġ[ TimeUnit . MILLISECONDS ]. ĊĠĠĠĠ Ġ* Ġ@ param Ġis Share Single Click ĠTrue Ġif Ġthis Ġview Ġis Ġshare Ġsingle Ġclick Ġinterval Ġwh it Ġother Ġview ĊĠĠĠĠ Ġ* ĠĠ Ġin Ġsame ĠActivity , Ġfalse Ġotherwise . ĊĠĠĠĠ Ġ* Ġ@ param Ġlistener ĠSingle Ġclick Ġlistener . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġon Single Click ( ĊĠĠĠĠĠĠĠ Ġview : ĠView , ĊĠĠĠĠĠĠĠ Ġinterval : ĠInt , ĊĠĠĠĠĠĠĠ Ġis Share Single Click : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġlistener : ĠView . OnClickListener ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview . on Single Click ( interval , Ġis Share Single Click , Ġlistener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWrap Ġappended Ġtext Ġin Ġ[ builder Action ] Ġin Ġa Ġ[ Clickable Span ]. ĊĠĠĠĠ Ġ* ĠIf Ġselected Ġand Ġsingle Ġclicked , Ġthe Ġ[ listener ] Ġwill Ġbe Ġinvoked . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġlistener ĠSingle Ġclick Ġlistener . ĊĠĠĠĠ Ġ* Ġ@ see ĠSp ann able StringBuilder . in Spans ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġon Single Click ( ĊĠĠĠĠĠĠĠ Ġbuilder : ĠSp ann able StringBuilder , ĊĠĠĠĠĠĠĠ Ġlistener : ĠView . OnClickListener , ĊĠĠĠĠĠĠĠ Ġbuilder Action : ĠSp ann able StringBuilder Ġ. () Ġ-> ĠUnit ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbuilder . on Single Click ( listener , Ġbuilder Action Ġ= Ġbuilder Action ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWrap Ġappended Ġtext Ġin Ġ[ builder Action ] Ġin Ġa Ġ[ Clickable Span ]. ĊĠĠĠĠ Ġ* ĠIf Ġselected Ġand Ġsingle Ġclicked , Ġthe Ġ[ listener ] Ġwill Ġbe Ġinvoked . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġlistener ĠSingle Ġclick Ġlistener . ĊĠĠĠĠ Ġ* Ġ@ param Ġinterval ĠSingle Ġclick Ġinterval . Unit Ġis Ġ[ TimeUnit . MILLISECONDS ]. ĊĠĠĠĠ Ġ* Ġ@ see ĠSp ann able StringBuilder . in Spans ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġon Single Click ( ĊĠĠĠĠĠĠĠ Ġbuilder : ĠSp ann able StringBuilder , ĊĠĠĠĠĠĠĠ Ġinterval : ĠInt , ĊĠĠĠĠĠĠĠ Ġlistener : ĠView . OnClickListener , ĊĠĠĠĠĠĠĠ Ġbuilder Action : ĠSp ann able StringBuilder Ġ. () Ġ-> ĠUnit ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbuilder . on Single Click ( listener , Ġinterval , Ġbuilder Action Ġ= Ġbuilder Action ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWrap Ġappended Ġtext Ġin Ġ[ builder Action ] Ġin Ġa Ġ[ Clickable Span ]. ĊĠĠĠĠ Ġ* ĠIf Ġselected Ġand Ġsingle Ġclicked , Ġthe Ġ[ listener ] Ġwill Ġbe Ġinvoked . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġlistener ĠSingle Ġclick Ġlistener . ĊĠĠĠĠ Ġ* Ġ@ param Ġis Share Single Click ĠTrue Ġif Ġthis Ġview Ġis Ġshare Ġsingle Ġclick Ġinterval Ġwh it Ġother Ġview ĊĠĠĠĠ Ġ* ĠĠ Ġin Ġsame ĠActivity , Ġfalse Ġotherwise . ĊĠĠĠĠ Ġ* Ġ@ see ĠSp ann able StringBuilder . in Spans ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġon Single Click ( ĊĠĠĠĠĠĠĠ Ġbuilder : ĠSp ann able StringBuilder , ĊĠĠĠĠĠĠĠ Ġis Share Single Click : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġlistener : ĠView . OnClickListener , ĊĠĠĠĠĠĠĠ Ġbuilder Action : ĠSp ann able StringBuilder Ġ. () Ġ-> ĠUnit ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbuilder . on Single Click ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlistener , Ġis Share Single Click Ġ= Ġis Share Single Click , Ġbuilder Action Ġ= Ġbuilder Action ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWrap Ġappended Ġtext Ġin Ġ[ builder Action ] Ġin Ġa Ġ[ Clickable Span ]. ĊĠĠĠĠ Ġ* ĠIf Ġselected Ġand Ġsingle Ġclicked , Ġthe Ġ[ listener ] Ġwill Ġbe Ġinvoked . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġlistener ĠSingle Ġclick Ġlistener . ĊĠĠĠĠ Ġ* Ġ@ param Ġinterval ĠSingle Ġclick Ġinterval . Unit Ġis Ġ[ TimeUnit . MILLISECONDS ]. ĊĠĠĠĠ Ġ* Ġ@ param Ġis Share Single Click ĠTrue Ġif Ġthis Ġview Ġis Ġshare Ġsingle Ġclick Ġinterval Ġwh it Ġother Ġview ĊĠĠĠĠ Ġ* ĠĠ Ġin Ġsame ĠActivity , Ġfalse Ġotherwise . ĊĠĠĠĠ Ġ* Ġ@ param Ġupdate Draw State Action ĠUpdate Ġdraw Ġstate Ġaction . ĊĠĠĠĠ Ġ* Ġ@ see ĠSp ann able StringBuilder . in Spans ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġon Single Click ( ĊĠĠĠĠĠĠĠ Ġbuilder : ĠSp ann able StringBuilder , ĊĠĠĠĠĠĠĠ Ġinterval : ĠInt , ĊĠĠĠĠĠĠĠ Ġis Share Single Click : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġlistener : ĠView . OnClickListener , ĊĠĠĠĠĠĠĠ Ġupdate Draw State Action : Ġ(( Text Paint ) Ġ-> ĠUnit ), ĊĠĠĠĠĠĠĠ Ġbuilder Action : ĠSp ann able StringBuilder Ġ. () Ġ-> ĠUnit ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbuilder . on Single Click ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlistener , Ġinterval , Ġis Share Single Click , Ġupdate Draw State Action , Ġbuilder Action ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDetermine Ġwhether Ġto Ġtrigger Ġa Ġsingle Ġclick . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġlistener ĠSingle Ġclick Ġlistener . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġdetermine Trigger Single Click ( view : ĠView , Ġlistener : ĠView . OnClickListener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview . determine Trigger Single Click ( listener Ġ= Ġlistener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDetermine Ġwhether Ġto Ġtrigger Ġa Ġsingle Ġclick . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġinterval ĠSingle Ġclick Ġinterval . Unit Ġis Ġ[ TimeUnit . MILLISECONDS ]. ĊĠĠĠĠ Ġ* Ġ@ param Ġlistener ĠSingle Ġclick Ġlistener . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġdetermine Trigger Single Click ( view : ĠView , Ġinterval : ĠInt , Ġlistener : ĠView . OnClickListener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview . determine Trigger Single Click ( interval Ġ= Ġinterval , Ġlistener Ġ= Ġlistener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDetermine Ġwhether Ġto Ġtrigger Ġa Ġsingle Ġclick . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġis Share Single Click ĠTrue Ġif Ġthis Ġview Ġis Ġshare Ġsingle Ġclick Ġinterval Ġwh it Ġother Ġview ĊĠĠĠĠ Ġ* ĠĠ Ġin Ġsame ĠActivity , Ġfalse Ġotherwise . ĊĠĠĠĠ Ġ* Ġ@ param Ġlistener ĠSingle Ġclick Ġlistener . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġdetermine Trigger Single Click ( ĊĠĠĠĠĠĠĠ Ġview : ĠView , ĊĠĠĠĠĠĠĠ Ġis Share Single Click : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġlistener : ĠView . OnClickListener ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview . determine Trigger Single Click ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Share Single Click Ġ= Ġis Share Single Click , Ġlistener Ġ= Ġlistener ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDetermine Ġwhether Ġto Ġtrigger Ġa Ġsingle Ġclick . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġinterval ĠSingle Ġclick Ġinterval . Unit Ġis Ġ[ TimeUnit . MILLISECONDS ]. ĊĠĠĠĠ Ġ* Ġ@ param Ġis Share Single Click ĠTrue Ġif Ġthis Ġview Ġis Ġshare Ġsingle Ġclick Ġinterval Ġwh it Ġother Ġview ĊĠĠĠĠ Ġ* ĠĠ Ġin Ġsame ĠActivity , Ġfalse Ġotherwise . ĊĠĠĠĠ Ġ* Ġ@ param Ġlistener ĠSingle Ġclick Ġlistener . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġdetermine Trigger Single Click ( ĊĠĠĠĠĠĠĠ Ġview : ĠView , ĊĠĠĠĠĠĠĠ Ġinterval : ĠInt , ĊĠĠĠĠĠĠĠ Ġis Share Single Click : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġlistener : ĠView . OnClickListener ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview . determine Trigger Single Click ( interval , Ġis Share Single Click , Ġlistener ) ĊĠĠĠ Ġ} Ċ }