package Ġcom . ah me de ss ame de en . pretty edit text Ċ Ċ import Ġandroid . animation . Animator Ċ import Ġandroid . animation . Argb Evaluator Ċ import Ġandroid . animation . Object Animator Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . Port er D uff Ċ import Ġandroid . graphics . drawable . Gradient Drawable Ċ import Ġandroid . text . Editable Ċ import Ġandroid . text . Text Watcher Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . util . Property Ċ import Ġandroid . view . View Ċ import Ġandroid . view . animation . Animation Utils Ċ import Ġandroid . view . animation . De cel erate Interpolator Ċ import Ġandroid . view . input method . Input Method Manager Ċ import Ġandroid . widget . EditText Ċ import Ġandroid . widget . Frame Layout Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . annotation . Color Int Ċ import Ġandroidx . annotation . Drawable Res Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . core . view . View Compat Ċ import Ġcom . ah me de ss ame de en . pretty edit text . extensions .* Ċ import Ġkotlinx . android . synt hetic . main . e ht _ layout . view .* Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . Global Scope Ċ import Ġkotlinx . coroutines . launch ĊĊ Ċ /** Ċ Ġ* ĠA Ġview Ġused Ġfor Ġuser Ġinput Ċ Ġ*/ Ċ @ Suppress (" Large Class ", Ġ" Too Many Functions ") Ċ class ĠPretty Hint Text Ġ: ĠFrame Layout Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġinput Method Manager : ĠInput Method Manager ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġedit Text : ĠPretty EditText ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġthe ĠEdit ĠText Ġwhen Ġit Ġis Ġrendered Ġand Ġready ĊĠĠĠĠ Ġ* Ġ@ sample ĠPretty Hint Text . use EditText Ġ{ Ġedit Text Ġ-> Ġedit Text . height Ġ= Ġ 5 0 0 Ġ} ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġuse EditText ( action : Ġ( edit Text : ĠEditText ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġedit Text . on Global Layout Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text . post On MainThread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction . invoke ( edit Text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġhint Ġthat Ġtells Ġthe Ġuser Ġwhat Ġthey Ġshould Ġinput ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġhint Text : ĠString ? Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlabel . post On MainThread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text . post On MainThread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabel . text Ġ= Ġhint Text Ġ?: Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text . hint Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġlabel Translation Y Ġ= Ġ- 1 ĊĠĠĠ Ġprivate Ġvar Ġlabel Translation X Ġ= Ġ- 1 ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBoolean Ġfor Ġis Ġthe Ġfield Ġexpanded ĊĠĠĠĠ Ġ* Ġi . e . ĠIs Ġthe Ġhint Ġfloating Ġas Ġa Ġlabel Ġabove Ġthe Ġedit Ġtext ? ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġis Expanded Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAnimation Ġtime Ġin Ġmilliseconds ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġanimation Duration Ms Ġ= Ġ- 1 ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠColor Ġfor Ġthe Ġtext ĊĠĠĠĠ Ġ* Ġ@ sample ĠPretty Hint Text . textColor Ġ= ĠColor . WHITE ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Color Int ĊĠĠĠ Ġvar ĠtextColor Ġ= ĠInt . MIN _ VALUE ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlabel . post On MainThread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text . post On MainThread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( textColor Ġ!= ĠInt . MIN _ VALUE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabel . setTextColor ( adjust Alpha ( textColor , ĠDEFAULT _ HINT _ OP ACITY )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text . setTextColor ( textColor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabel . current TextColor . let Ġ{ Ġcurrent TextColor Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . textColor Ġ= Ġcurrent TextColor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text . setTextColor ( current TextColor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠColor Ġfor Ġthe Ġborder ĊĠĠĠĠ Ġ* Ġ@ sample ĠPretty Hint Text . border Color Ġ= ĠColor . WHITE ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Color Int ĊĠĠĠ Ġvar ĠborderColor Ġ= ĠColor . BLACK ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġborder . post On MainThread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( border Color Ġ!= ĠInt . MIN _ VALUE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Border () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSize Ġfor Ġthe Ġtext ĊĠĠĠĠ Ġ* Ġ@ sample ĠPretty Hint Text . text Size Ġ= Ġ 1 6 f ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġtext Size : ĠFloat Ġ= Ġ- 1 f ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlabel . post On MainThread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text . post On MainThread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text . text Size Ġ= Ġtext Size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabel . text Size Ġ= Ġtext Size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠImage Ġfor Ġthe Ġtext Ġfield ĊĠĠĠĠ Ġ* Ġ@ sample ĠPretty Hint Text . image Drawable Id Ġ= ĠR . drawable . logo ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Drawable Res ĊĠĠĠ Ġvar Ġimage Drawable Id Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġimage . post On MainThread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( image Drawable Id Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Image Drawable ( Context Compat . get Drawable ( context , Ġimage Drawable Id )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Color Filter ( image Colour ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage . be Visible () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabel . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost On MainThread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Padding Relative ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpadding Start Ġ+ Ġlabel Padding , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpadding Top , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpadding End , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpadding Bottom ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage . be G one () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġcard Collapsed Height Ġ= Ġ- 1 ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠColor Ġfor Ġthe Ġimage ĊĠĠĠĠ Ġ* Ġ@ sample ĠPretty Hint Text . image Colour Ġ= ĠColor . WHITE ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Color Int ĊĠĠĠ Ġvar Ġimage Colour Ġ= ĠColor . BLACK ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimage . post On MainThread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage . setColor Filter ( image Colour ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠColor Ġfor Ġthe Ġtext Ġhint Ġlabel Ġwhen Ġfloating ĊĠĠĠĠ Ġ* Ġ@ sample ĠPretty Hint Text . floating Label Color Ġ= ĠColor . WHITE ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Color Int ĊĠĠĠ Ġvar Ġfloating Label Color Ġ= ĠColor . WHITE ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠColor Ġfor Ġthe Ġtext Ġfield Ġbackground ĊĠĠĠĠ Ġ* Ġ@ sample ĠPretty Hint Text . textBox Color Ġ= ĠColor . WHITE ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Color Int ĊĠĠĠ Ġvar ĠtextBox Color : ĠInt Ġ= ĠColor . WHITE ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcard . post On MainThread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcard . background . setColor Filter ( textBox Color , ĠPort er D uff . Mode . SRC _ IN ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġor ĠGet Ġthe Ġtext Ġof Ġthe Ġinput Ġfield ĊĠĠĠĠ Ġ* Ġ@ sample ĠPretty Hint Text . text Ġ= Ġ" Bl ah " ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġtext : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text . post On MainThread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text . setText ( text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSee Ġthe Ġinput Ġtype Ġfor Ġthe Ġtext ĊĠĠĠĠ Ġ* Ġ@ sample ĠPretty Hint Text . input Type Ġ= ĠInput Type . TYPE _ CLASS _ NUMBER ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġinput Type : ĠInt Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( input Type Ġ!= ĠInt . MIN _ VALUE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text . post On MainThread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text . input Type Ġ= Ġinput Type ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMax Ġlines Ġto Ġbe Ġdisplayed ĊĠĠĠĠ Ġ* Ġ@ sample ĠPretty Hint Text . max Lines Ġ= Ġ 5 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġmax Lines : ĠInt Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( max Lines Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text . post On MainThread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text . max Lines Ġ= Ġmax Lines ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġlabel Padding Ġget () Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( image Drawable Id Ġ== Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView Helper . get Dp ( context , ĠFOR TY _ FI VE _ DP ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBoolean Ġfor Ġif Ġthe Ġinput Ġis Ġdisabled Ġand Ġread Ġonly ĊĠĠĠĠ Ġ* Ġ@ sample ĠPretty Hint Text . readOnly Ġ= Ġtrue ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar ĠreadOnly : ĠBoolean ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Enabled Ġ= Ġ! value ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ! isEnabled ĊĊĠĠĠ Ġconstructor ( context : ĠContext ) Ġ: Ġsuper ( context ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit ( context , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ) Ġ: Ġsuper ( context , Ġattrs ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit ( context , Ġattrs ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet , Ġdef Style Attr : ĠInt ) Ġ: Ġsuper ( context , Ġattrs , Ġdef Style Attr ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit ( context , Ġattrs ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit ( context : ĠContext , Ġattrs : ĠAttributeSet ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġinput Method Manager Ġ= Ġcontext . getSystem Service ( Context . INPUT _ METHOD _ SERVICE ) Ġas ? ĠInput Method Manager ĊĠĠĠĠĠĠĠ ĠView . inflate ( context , ĠR . layout . e ht _ layout , Ġthis ) ĊĠĠĠĠĠĠĠ Ġadd EditText () ĊĠĠĠĠĠĠĠ Ġadd Border () ĊĠĠĠĠĠĠĠ Ġattrs ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Attributes ( context , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGlobal Scope . launch ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdrawable Ġ= Ġload _ animation . in determinate Drawable . mutate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdrawable . setColor Filter ( textBox Color , Ġandroid . graphics . Port er D uff . Mode . SRC _ IN ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload _ animation . in determinate Drawable Ġ= Ġdrawable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtoggle () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( isEnabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Expanded ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreduce () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpand () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġreduce () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Expanded ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( edit Text . text . toString (). isBlank ()) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost On MainThread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView Compat . animate ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. alpha ( 0 f ). duration Ġ= Ġanimation Duration Ms . to Long () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabel . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost On MainThread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView Compat . animate ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. scale X ( 1 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. scale Y ( 1 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. translation Y ( 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. translation X ( 0 f ). duration Ġ= Ġanimation Duration Ms . to Long () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanimate Colo urs ( this , Ġthis . current TextColor , Ġadjust Alpha ( textColor , Ġ 0 . 7 f )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Expanded Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġanimate Colo urs ( view : ĠTextView , Ġstart Colour : ĠInt , Ġend Colour : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview . setTextColor ( start Colour ) ĊĊĠĠĠĠĠĠĠ Ġval Ġproperty Ġ= Ġobject Ġ: ĠProperty < TextView , ĠInt >( Int :: class . java Primitive Type , Ġ" textColor ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget ( textView : ĠTextView ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠtextView . current TextColor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġset ( textView : ĠTextView , Ġvalue : ĠInt ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ?: Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . setTextColor ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠObject Animator . of Int ( view , Ġproperty , Ġend Colour ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġduration Ġ= Ġanimation Duration Ms . to Long () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Evaluator ( Argb Evaluator ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinterpol ator Ġ= ĠDec el erate Interpolator ( 2 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Listener ( object Ġ: ĠAn imator . Animator Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Start ( animation : ĠAn imator ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation End ( animation : ĠAn imator ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . setTextColor ( end Colour ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Cancel ( animation : ĠAn imator ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Repeat ( animation : ĠAn imator ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġexpand () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! is Expanded ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text . post On MainThread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView Compat . animate ( edit Text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. alpha ( 1 f ). duration Ġ= Ġanimation Duration Ms . to Long () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmini ature Scale Ġ= Ġ 0 . 7 f ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlabel . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost On MainThread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView Compat . animate ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. scale X ( mini ature Scale ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. scale Y ( mini ature Scale ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. translation Y ((- label Translation Y ). toFloat ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. translation X (- label Translation X . plus ( label Padding ). times ( mini ature Scale )). duration Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanimation Duration Ms . to Long () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanimate Colo urs ( this , Ġthis . current TextColor , Ġfloating Label Color ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Expanded Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġedit EditText () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( isEnabled Ġ&& Ġis Expanded ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text . post On MainThread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text . request Focus () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput Method Manager ?. show Soft Input ( edit Text , ĠInput Method Manager . SHOW _ IMP LICIT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd EditText () Ġ{ ĊĠĠĠĠĠĠĠ Ġedit Text Ġ= ĠPretty EditText ( context ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset On Back Press Listener ( Runnable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text . clear Focus () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcard ?. clear Focus () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġset On Focus ChangeListener Ġ{ Ġ_, Ġhas Focus Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! has Focus Ġ&& Ġedit Text . text . toString (). isBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreduce () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( has Focus ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpand () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd TextChanged Listener ( object Ġ: ĠText Watcher Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġafter TextChanged ( s : ĠEdit able ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( s ?. toString ()?. isNotBlank () Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpand () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbefore TextChanged ( s : ĠCharSequence ?, Ġstart : ĠInt , Ġcount : ĠInt , Ġafter : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon TextChanged ( s : ĠCharSequence ?, Ġstart : ĠInt , Ġbefore : ĠInt , Ġcount : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost On MainThread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Padding Relative ( View Helper . get Dp ( context , ĠT EN _ DP ), Ġpadding Top , Ġpadding End , Ġpadding Bottom ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Border (){ ĊĠĠĠĠĠĠĠ Ġval Ġshape Ġ= ĠGradient Drawable () ĊĠĠĠĠĠĠĠ Ġshape . corner Radius Ġ= ĠView Helper . get Dp ( context , ĠT EN _ DP ). toFloat () ĊĠĠĠĠĠĠĠ Ġshape . setColor ( Color . TRANSP ARENT ) ĊĠĠĠĠĠĠĠ Ġshape . set Stroke ( View Helper . get Dp ( context , ĠTWO _ DP ), border Color ) ĊĊĠĠĠĠĠĠĠ Ġborder . background Ġ= Ġshape ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġget Attributes ( context : ĠContext , Ġattrs : ĠAttributeSet ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstyled Attrs Ġ= Ġcontext . obtain Styled Attributes ( attrs , ĠR . style able . Pretty Hint Text ) ĊĊĠĠĠĠĠĠĠ Ġanimation Duration Ms Ġ= Ġstyled Attrs . getInteger ( R . style able . Pretty Hint Text _ animation Duration Ms , ĠDEFAULT _ ANIM ATION _ MS ) ĊĠĠĠĠĠĠĠ ĠtextColor Ġ= Ġstyled Attrs . getColor ( R . style able . Pretty Hint Text _ android _ textColor , ĠInt . MIN _ VALUE ) ĊĠĠĠĠĠĠĠ Ġfloating Label Color Ġ= Ġstyled Attrs . getColor ( R . style able . Pretty Hint Text _ floating Label Color , ĠColor . BLACK ) ĊĠĠĠĠĠĠĠ ĠborderColor Ġ= Ġstyled Attrs . getColor ( R . style able . Pretty Hint Text _ border Color , ĠColor . BLACK ) ĊĠĠĠĠĠĠĠ Ġimage Drawable Id Ġ= Ġstyled Attrs . getResource Id ( R . style able . Pretty Hint Text _ image , Ġ- 1 ) ĊĠĠĠĠĠĠĠ Ġimage Colour Ġ= Ġstyled Attrs . getColor ( R . style able . Pretty Hint Text _ image Color , ĠColor . GRAY ) ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġcard Collapsed Height Ġ= Ġstyled Attrs . get Dimension Pixel Offset ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . style able . Pretty Hint Text _ card Collapsed Height , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . resources . get Dimension Pixel Offset ( R . dim en . card Height _ initial ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠreadOnly Ġ= Ġstyled Attrs . getBoolean ( R . style able . Pretty Hint Text _ readOnly , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġhint Text Ġ= Ġstyled Attrs . getString ( R . style able . Pretty Hint Text _ android _ hint ) Ġ?: Ġ"" ĊĠĠĠĠĠĠĠ ĠtextBox Color Ġ= Ġstyled Attrs . getColor ( R . style able . Pretty Hint Text _ textBox Color , ĠColor . TRANSP ARENT ) ĊĠĠĠĠĠĠĠ Ġtext Ġ= Ġstyled Attrs . getString ( R . style able . Pretty Hint Text _ android _ text ) ĊĠĠĠĠĠĠĠ Ġinput Type Ġ= Ġstyled Attrs . getInt ( R . style able . Pretty Hint Text _ android _ input Type , ĠInt . MIN _ VALUE ) ĊĠĠĠĠĠĠĠ Ġmax Lines Ġ= Ġstyled Attrs . getInt ( R . style able . Pretty Hint Text _ android _ max Lines , Ġ- 1 ) ĊĠĠĠĠĠĠĠ Ġtext Size Ġ= Ġstyled Attrs . get Float ( R . style able . Pretty Hint Text _ android _ text Size , ĠDEFAULT _ TEXT _ SIZE ) ĊĠĠĠĠĠĠĠ Ġstyled Attrs . recycle () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset OnClickListener ( l : ĠView . OnClickListener ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . setOnClickListener ( l ) ĊĠĠĠĠĠĠĠ Ġcard . setOnClickListener ( l ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Finish Inf late () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Finish Inf late () ĊĊĠĠĠĠĠĠĠ Ġcard . post On MainThread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcard . addView ( edit Text ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġlabel . post On MainThread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlabel . pivot X Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlabel . pivot Y Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlabel Translation Y Ġ= Ġ( label . layout Params Ġas ? ĠFrame Layout . LayoutParams )?. top Margin Ġ?: Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlabel Translation X Ġ= Ġ- 2 4 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Cursor Color ( textColor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlabel . br ing To Front () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġedit Text . post On MainThread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text . set BackgroundColor ( Color . TRANSP ARENT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text . alpha Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text . clear Focus () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text . br ing To Front () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( edit Text . text . toString (). isNotBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpand () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . on Global Layout Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost On MainThread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text . on Global Layout Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text . post On MainThread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGlobal Scope . launch ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload _ animation . remove () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpand able _ edit _ text _ frame . be Visible () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġzoom In () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġzoom In () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġzoom In Animation Ġ= ĠAnimation Utils . load Animation ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . anim . zoom _ in ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġexpand able _ edit _ text _ frame . start Animation ( zoom In Animation ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Enabled ( enabled : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . setEnabled ( enabled ) ĊĊĠĠĠĠĠĠĠ Ġedit Text . isEnabled Ġ= Ġenabled ĊĠĠĠĠĠĠĠ Ġedit Text . is Clickable Ġ= Ġenabled ĊĊĠĠĠĠĠĠĠ Ġif Ġ( enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoggle () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit EditText () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset OnClickListener ( null ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Color Int ĊĠĠĠ Ġprivate Ġfun Ġadjust Alpha (@ Color Int Ġcolor : ĠInt , Ġfactor : ĠFloat ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġalpha Ġ= ĠMath . round ( Color . alpha ( color ) Ġ* Ġfactor ) ĊĠĠĠĠĠĠĠ Ġval Ġred Ġ= ĠColor . red ( color ) ĊĠĠĠĠĠĠĠ Ġval Ġgreen Ġ= ĠColor . green ( color ) ĊĠĠĠĠĠĠĠ Ġval Ġblue Ġ= ĠColor . blue ( color ) ĊĠĠĠĠĠĠĠ Ġreturn ĠColor . arg b ( alpha , Ġred , Ġgreen , Ġblue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Cursor Color (@ Color Int Ġcolor : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGet Ġthe Ġcursor Ġresource Ġid ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġfield Ġ= ĠTextView :: class . java . getDeclared Field (" m Cursor Drawable Res ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield . is Accessible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdrawable Res Id Ġ= Ġfield . getInt ( edit Text ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGet Ġthe Ġeditor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= ĠTextView :: class . java . getDeclared Field (" m Editor ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield . is Accessible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġeditor Ġ= Ġfield . get ( edit Text ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGet Ġthe Ġdrawable Ġand Ġset Ġa Ġcolor Ġfilter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdrawable Ġ= ĠContext Compat . get Drawable ( edit Text . context , Ġdrawable Res Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawable ?. setColor Filter ( color , ĠPort er D uff . Mode . SRC _ IN ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdraw ables Ġ= ĠarrayOf ( drawable , Ġdrawable ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSet Ġthe Ġdraw ables ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġeditor . java Class . getDeclared Field (" m Cursor Drawable ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield . is Accessible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield . set ( editor , Ġdraw ables ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ignored : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ