package Ġcom . than os fish er man . presentation . common . extensions Ċ Ċ import Ġandroid . animation .* Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . os . System Clock Ċ import Ġandroid . view . View Ċ import Ġandroid . view . animation . Alpha Animation Ċ import Ġandroid . view . animation . Animation Ċ import Ġandroid . view . input method . Input Method Manager Ċ import Ġandroid . widget . View Animator Ċ Ċ fun ĠView . blink Background () Ġ{ ĊĠĠĠ Ġval Ġanim ator Ġ= ĠObject Animator . of Int ( this , Ġ" backgroundColor ", ĠColor . RED , ĠColor . GREEN ) ĊĠĠĠ Ġanim ator . duration Ġ= Ġ 1 5 0 0 ĊĠĠĠ Ġanim ator . set Evaluator ( Argb Evaluator ()) ĊĠĠĠ Ġanim ator . repeat Mode Ġ= ĠValue Animator . RE VERSE ĊĠĠĠ Ġanim ator . repeat Count Ġ= ĠValue Animator . INF IN ITE ĊĠĠĠ Ġanim ator . start () Ċ } Ċ Ċ fun ĠView . blink Alpha () Ġ{ ĊĠĠĠ Ġval Ġanim Ġ= ĠAlpha Animation ( 0 . 0 f , Ġ 1 . 0 f ) ĊĠĠĠ Ġanim . duration Ġ= Ġ 2 0 0 ĊĠĠĠ Ġanim . start Offset Ġ= Ġ 2 0 ĊĠĠĠ Ġanim . repeat Mode Ġ= ĠAnimation . RE VERSE ĊĠĠĠ Ġanim . repeat Count Ġ= Ġ 5 ĊĠĠĠ Ġstart Animation ( anim ) Ċ } Ċ Ċ fun ĠView . hide Keyboard () Ġ{ ĊĠĠĠ Ġval Ġimm Ġ= Ġcontext . getSystem Service ( Context . INPUT _ METHOD _ SERVICE ) Ġas ĠInput Method Manager ĊĠĠĠ Ġimm . hide Soft Input From Window ( window Token , ĠInput Method Manager . HIDE _ NOT _ ALWAYS ) Ċ } Ċ Ċ /** Ċ Ġ* ĠExtension Ġmethod Ġto Ġshow Ġa Ġkeyboard Ġfor ĠView . Ċ Ġ*/ Ċ fun ĠView . show Keyboard () Ġ{ ĊĠĠĠ Ġval Ġimm Ġ= Ġcontext . getSystem Service ( Context . INPUT _ METHOD _ SERVICE ) Ġas ĠInput Method Manager ĊĠĠĠ Ġthis . request Focus () ĊĠĠĠ Ġimm . show Soft Input ( this , ĠInput Method Manager . SHOW _ IMP LICIT ) Ċ } Ċ Ċ /** ĠSet Ġthe ĠView Ġvisibility Ġto ĠVIS IBLE Ġand Ġeventually Ġanimate Ġthe ĠView Ġalpha Ġtill Ġ 1 0 0 % Ġ*/ Ċ fun ĠView . visible ( animate : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠ Ġif Ġ( animate ) Ġ{ ĊĠĠĠĠĠĠĠ Ġanimate (). alpha ( 1 f ). set Duration ( 3 0 0 ). set Listener ( object Ġ: ĠAn imator Listener Adapter () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Start ( animation : ĠAn imator ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Animation Start ( animation ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvisibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġvisibility Ġ= ĠView . VISIBLE ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun ĠView . hide ( h iding Strategy : ĠInt , Ġanimate : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠ Ġif Ġ( animate ) Ġ{ ĊĠĠĠĠĠĠĠ Ġanimate (). alpha ( 0 f ). set Duration ( 3 0 0 ). set Listener ( object Ġ: ĠAn imator Listener Adapter () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation End ( animation : ĠAn imator ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Animation End ( animation ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvisibility Ġ= Ġhiding Strategy ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġvisibility Ġ= Ġhiding Strategy ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** ĠSet Ġthe ĠView Ġvisibility Ġto ĠIN VISIBLE Ġand Ġeventually Ġanimate Ġview Ġalpha Ġtill Ġ 0 % Ġ*/ Ċ fun ĠView . invisible ( animate : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠ Ġhide ( View . IN VISIBLE , Ġanimate ) Ċ } Ċ Ċ /** ĠSet Ġthe ĠView Ġvisibility Ġto ĠG ONE Ġand Ġeventually Ġanimate Ġview Ġalpha Ġtill Ġ 0 % Ġ*/ Ċ fun ĠView . g one ( animate : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠ Ġhide ( View . GONE , Ġanimate ) Ċ } Ċ Ċ fun ĠView . setOn De bounc ed ClickListener ( action : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġval Ġaction De bounc er Ġ= ĠAction De bounc er ( action ) ĊĊĠĠĠ Ġ// ĠThis Ġis Ġthe Ġonly Ġplace Ġin Ġthe Ġproject Ġwhere Ġwe Ġshould Ġactually Ġuse Ġset OnClickListener ĊĠĠĠ Ġset OnClickListener Ġ{ ĊĠĠĠĠĠĠĠ Ġaction De bounc er . notify Action () ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠView . remove On De bounc ed ClickListener () Ġ{ ĊĠĠĠ Ġset OnClickListener ( null ) ĊĠĠĠ Ġis Clickable Ġ= Ġfalse Ċ } Ċ Ċ fun ĠView Animator . switch Animator View ( id : ĠInt ) Ġ{ ĊĠĠĠ Ġif Ġ( this . display ed Child Ġ!= Ġid ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . display ed Child Ġ= Ġid ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġclass ĠAction De bounc er ( private Ġval Ġaction : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠDE BOUN CE _ INTERVAL _ MILLISECONDS Ġ= Ġ 7 0 0 L ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġlast Action Time Ġ= Ġ 0 L ĊĊĠĠĠ Ġfun Ġnotify Action () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnow Ġ= ĠSystem Clock . elapsed Realtime () ĊĊĠĠĠĠĠĠĠ Ġval Ġmilliseconds Passed Ġ= Ġnow Ġ- Ġlast Action Time ĊĠĠĠĠĠĠĠ Ġval Ġaction Allowed Ġ= Ġmilliseconds Passed Ġ> ĠDE BOUN CE _ INTERVAL _ MILLISECONDS ĊĠĠĠĠĠĠĠ Ġlast Action Time Ġ= Ġnow ĊĊĠĠĠĠĠĠĠ Ġif Ġ( action Allowed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction . invoke () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ