package Ġcom . if ly tek . cyber . iot . show . core . widget Ċ Ċ import Ġandroid . animation . Animator Ċ import Ġandroid . animation . Value Animator Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . util . Typed Value Ċ import Ġandroid . view . Gravity Ċ import Ġandroid . widget . Frame Layout Ċ import Ġandroidx . annotation . String Res Ċ import Ġandroidx . appcompat . widget . AppCompat TextView Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġcom . air bnb . lott ie . Lot tie Animation View Ċ import Ġcom . if ly tek . cyber . iot . show . core . R Ċ Ċ class ĠCircle CheckBox Ġ@ Jvm Over loads Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ? Ġ= Ġnull , Ġdef Style Attr : ĠInt Ġ= Ġ 0 ) Ġ: ĠFrame Layout ( context , Ġattrs , Ġdef Style Attr ) Ġ{ ĊĠĠĠ Ġprivate Ġval ĠcheckBox View Ġ= ĠL ot tie Animation View ( context ) ĊĠĠĠ Ġprivate Ġval ĠtextView Ġ= ĠAppCompat TextView ( context ) ĊĊĠĠĠ Ġprivate Ġvar Ġcurrent Animator : ĠValue Animator ? Ġ= Ġnull ĊĊĠĠĠ Ġvar Ġis Checked : ĠBoolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isChecked Ġ== Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Checked Visible ( value , Ġis Attached To Window ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlistener ?. invoke ( this , Ġvalue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġtext : ĠString Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . text Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠtextView . text . toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠcheckBox Size Ġ= Ġresources . get Dimension Pixel Size ( R . dim en . dp _ 2 4 ) ĊĠĠĠĠĠĠĠ Ġval ĠcheckBox Text Margin Ġ= Ġresources . get Dimension Pixel Size ( R . dim en . dp _ 8 ) ĊĊĠĠĠĠĠĠĠ Ġset OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Checked Ġ= Ġ! isChecked ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġget Ġattribute ĊĠĠĠĠĠĠĠ Ġval Ġattr Ġ= Ġcontext . obtain Styled Attributes ( attrs , ĠR . style able . Circle CheckBox ) ĊĊĠĠĠĠĠĠĠ Ġval Ġis Checked Ġ= Ġattr . getBoolean ( R . style able . Circle CheckBox _ isChecked , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġattr . getString ( R . style able . Circle CheckBox _ text ) ĊĠĠĠĠĠĠĠ Ġval Ġtext Size Ġ= Ġattr . get Dimension Pixel Size ( R . style able . Circle CheckBox _ text Size , Ġ- 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġtext Inset Start Ġ= Ġattr . get Dimension Pixel Size ( R . style able . Circle CheckBox _ text Inset Start , Ġ- 1 ) ĊĊĠĠĠĠĠĠĠ Ġattr . recycle () ĊĊĠĠĠĠĠĠĠ Ġval ĠcheckBox On Lp Ġ= ĠLayout Params ( checkBox Size , ĠcheckBox Size ) ĊĠĠĠĠĠĠĠ ĠcheckBox On Lp . gravity Ġ= ĠGr avity . CENTER _ VERTICAL ĊĠĠĠĠĠĠĠ ĠcheckBox View . set Animation ( R . raw . animation _ checkbox _ 1 ) ĊĠĠĠĠĠĠĠ Ġadd View ( checkBox View , ĠcheckBox On Lp ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtext Lp Ġ= ĠLayout Params ( LayoutParams . WRAP _ CONTENT , ĠLayout Params . WRAP _ CONTENT ) ĊĠĠĠĠĠĠĠ Ġtext Lp . left Margin Ġ= ĠcheckBox Size Ġ+ Ġ( if Ġ( text Inset Start Ġ!= Ġ- 1 ) Ġtext Inset Start Ġelse ĠcheckBox Text Margin ) ĊĠĠĠĠĠĠĠ Ġtext Lp . gravity Ġ= ĠGr avity . CENTER _ VERTICAL ĊĠĠĠĠĠĠĠ Ġif Ġ( text Size Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . setText Size ( Typed Value . COMPLEX _ UNIT _ PX , Ġtext Size . toFloat ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠtextView . text Ġ= Ġtext ĊĠĠĠĠĠĠĠ ĠtextView . setTextColor ( Context Compat . getColor ( context , ĠR . color . semi _ black )) ĊĠĠĠĠĠĠĠ Ġadd View ( textView , Ġtext Lp ) ĊĊĠĠĠĠĠĠĠ Ġthis . isChecked Ġ= Ġis Checked ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġlistener : Ġ(( Circle CheckBox , ĠBoolean ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġfun Ġset Checked Visible ( isChecked : ĠBoolean , Ġshould Animate : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( should Animate ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Animator Ġ= Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtarget Ġ= Ġif Ġ( isChecked ) Ġ 1 f Ġelse Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġanim ator Ġ= ĠValue Animator . of Float ( checkBox View . progress , Ġtarget ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanim ator . add Update Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġit . animated Value Ġas ĠFloat ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠcheckBox View . progress Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanim ator . addListener ( object Ġ: ĠAn imator . Animator Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Repeat ( animation : ĠAn imator ?) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation End ( animation : ĠAn imator ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Animator Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Cancel ( animation : ĠAn imator ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Animator Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Start ( animation : ĠAn imator ?) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanim ator . duration Ġ= Ġ 2 5 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanim ator . start () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Animator Ġ= Ġanim ator ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠcheckBox View . progress Ġ= Ġ 1 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠcheckBox View . progress Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset On Checked ChangeListener ( listener : Ġ(( Circle CheckBox , ĠBoolean ) Ġ-> ĠUnit )) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . listener Ġ= Ġlistener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Text (@ String Res Ġres Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠtextView . setText ( res Id ) ĊĠĠĠ Ġ} Ċ }