package Ġcom . chen . base extend . step by . oo . custom _ switch Ċ Ċ import Ġandroid . view . View Ċ Ċ import Ġcom . chen . base extend . step by . oo . base . Base Switch Ċ Ċ open Ġclass ĠView Switch Ġprotected Ġconstructor ( private Ġval Ġview : ĠView , Ġprivate Ġval Ġtype : ĠString ) Ġ: ĠBase Switch ( view . id . toString () Ġ+ Ġtype ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval ĠTYPE _ CLICK Ġ= Ġ" click " ĊĊĠĠĠĠĠĠĠ Ġval ĠTYPE _ FOCUS Ġ= Ġ" focus " ĊĊĠĠĠĠĠĠĠ Ġval ĠTYPE _ VISIBLE Ġ= Ġ" visible " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdefine () Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTYPE _ CLICK Ġ-> Ġview . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopen ( it , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclose ( it , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTYPE _ VISIBLE Ġ-> Ġview . setOn System Ui Visibility ChangeListener Ġ{ Ġvisibility Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( View . VISIBLE Ġ== Ġvisibility ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopen ( view , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclose ( view , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTYPE _ FOCUS Ġ-> Ġview . setOn Focus ChangeListener Ġ{ Ġv , Ġhas Focus Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( has Focus ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopen ( v , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclose ( v , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Open ( o : ĠAny ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTYPE _ CLICK Ġ-> Ġview . perform Click () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTYPE _ FOCUS Ġ-> Ġview . request Focus () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTYPE _ VISIBLE Ġ-> Ġview . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonClose ( o : ĠAny ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTYPE _ FOCUS Ġ-> Ġview . clear Focus () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTYPE _ VISIBLE Ġ-> Ġview . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ