package Ġcom . auth guid ance . basic mobile app . views . utilities Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . Motion Event Ċ import Ġcom . google . android . material . button . Material Button Ċ Ċ /* Ċ Ġ* ĠOverride Ġthe Ġmaterial Ġbutton Ġto Ġsupport Ġlong Ġpress Ġhandling Ċ Ġ*/ Ċ class ĠLong Press able Button Ġ: ĠMaterial Button Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġlong Press StartTime : ĠLong ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġlong Press Milliseconds Ġ= Ġ 2 0 0 0 ĊĠĠĠ Ġprivate Ġvar Ġcustom ClickListener : Ġ(( long Clicked : ĠBoolean ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĊĠĠĠ Ġconstructor ( context : ĠContext ) Ġ: Ġsuper ( context ) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ) Ġ: Ġsuper ( context , Ġattrs ) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet , Ġdef Style Attr : ĠInt ) Ġ: Ġsuper ( context , Ġattrs , Ġdef Style Attr ) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĊĠĠĠĠ Ġ* ĠReceive Ġa Ġcallback ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Custom ClickListener ( listener : Ġ( long : ĠBoolean ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . custom ClickListener Ġ= Ġlistener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĊĠĠĠĠ Ġ* ĠHandle Ġthe Ġtouch Ġevent ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Suppress (" Return Count ") ĊĠĠĠ Ġoverride Ġfun Ġon Touch Event ( event : ĠMotion Event ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Touch Event ( event ) ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( event . action ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ DOWN Ġ-> Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this . isEnabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . handle Press () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ UP Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this . isEnabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġperform Click () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . handle Release () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĊĠĠĠĠ Ġ* ĠOverride Ġthis Ġto Ġavoid Ġaccessibility Ġwarnings ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġperform Click (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . perform Click () ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĊĠĠĠĠ Ġ* ĠWhen Ġclicked , Ġmeasure Ġthe Ġstart Ġtime ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġhandle Press () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġthis . long Press StartTime Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĊĠĠĠĠ Ġ* ĠWhen Ġreleased , Ġmeasure Ġthe Ġend Ġtime Ġto Ġdetermine Ġwhether Ġa Ġlong Ġclick Ġand Ġcall Ġback Ġthe Ġparent Ġfragment ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġhandle Release () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġlong Clicked Ġ= Ġthis . is Long Press () ĊĠĠĠĠĠĠĠ Ġthis . custom ClickListener ?. invoke ( long Clicked ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĊĠĠĠĠ Ġ* ĠReturn Ġtrue Ġif Ġa Ġlong Ġpress Ġhas Ġoccurred ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġis Long Press (): ĠBoolean Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġstart Ġ= Ġthis . long Press StartTime Ġ?: Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġ// ĠGet Ġthe Ġtime Ġtaken Ġand Ġthen Ġreset ĊĠĠĠĠĠĠĠ Ġval Ġtime Taken Ġ= ĠSystem . currentTimeMillis () Ġ- Ġstart ĊĠĠĠĠĠĠĠ Ġthis . long Press StartTime Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġ// ĠA Ġlong Ġpress Ġoccurs Ġwhen Ġthe Ġtouch Ġhas Ġtaken Ġlonger Ġthan Ġ 2 Ġseconds ĊĠĠĠĠĠĠĠ Ġreturn Ġtime Taken Ġ> Ġlong Press Milliseconds ĊĠĠĠ Ġ} Ċ } Ċ