package Ġcom . over app . components Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroidx . constraint layout . widget . Constraint Layout Ċ import Ġcom . google . android . material . button . Material Button Ċ import Ġcom . google . android . material . text field . TextInput EditText Ċ Ċ /** Ċ Ġ* ĠInput Number . kt Ċ Ġ* ĠInput Number Demo Ċ Ġ* Ċ Ġ* ĠCreated Ġby ĠG i amp iet ro ĠFront ed du Ġon Ġ 1 2 / 1 2 / 2 0 . Ċ Ġ* ĠCopyright ĠÂ© Ġ 2 0 2 0 ĠOver App . ĠAll Ġrights Ġreserved . Ċ Ġ*/ Ċ class ĠInput Number Ġ: ĠConstraint Layout Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdecrement Button : ĠMaterial Button ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġincrement Button : ĠMaterial Button ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġedit Text : ĠText Input EditText ĊĊĠĠĠ Ġprivate Ġvar Ġtotal Amount Ġ= Ġdefault Start Amount ĊĠĠĠ Ġprivate Ġvar Ġmin Value Ġ= Ġdefault MinValue ĊĠĠĠ Ġprivate Ġvar ĠmaxValue Ġ= Ġdefault MaxValue ĊĊĠĠĠ Ġ// region ĠConstructors ĊĊĠĠĠ Ġconstructor ( context : ĠContext ) Ġ: Ġsuper ( context ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit ( null , Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ) Ġ: Ġsuper ( context , Ġattrs ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit ( attrs , Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet , Ġdef Style : ĠInt ) Ġ: Ġsuper ( ĊĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠ Ġattrs , ĊĠĠĠĠĠĠĠ Ġdef Style ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit ( attrs , Ġdef Style ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// endregion ĊĊĠĠĠ Ġ// region ĠPrivate ĠMethods ĊĊĠĠĠ Ġprivate Ġfun Ġinit ( attrs : ĠAttributeSet ?, Ġdef Style : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠInf late ĊĠĠĠĠĠĠĠ Ġinf late ( context , ĠR . layout . layout _ over app _ input _ number , Ġthis ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠLoad Ġattributes ĊĠĠĠĠĠĠĠ Ġval Ġtyped Array Ġ= Ġcontext . obtain Styled Attributes ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattrs , ĠR . style able . Input Number , Ġdef Style , Ġ 0 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġtotal Amount Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtyped Array . getResource Id ( R . style able . Input Number _ start Amount , Ġdefault Start Amount ) ĊĠĠĠĠĠĠĠ Ġmin Value Ġ= Ġtyped Array . getResource Id ( R . style able . Input Number _ min Value , Ġdefault MinValue ) ĊĠĠĠĠĠĠĠ ĠmaxValue Ġ= Ġtyped Array . getResource Id ( R . style able . Input Number _ max Value , Ġdefault MaxValue ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠInit ĠLayout ĊĠĠĠĠĠĠĠ Ġinit Layout Element () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Layout Element () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġinf late Ġelements ĊĊĠĠĠĠĠĠĠ Ġ// ĠSet ĠDec rement ĠButton ĊĠĠĠĠĠĠĠ Ġdecrement Button Ġ= ĠfindViewById ( R . id . over app Input Number De crement Image Button ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠSet ĠIncrement ĠButton ĊĠĠĠĠĠĠĠ Ġincrement Button Ġ= ĠfindViewById ( R . id . over app Input Number Increment Image Button ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠSet ĠButton ĠEnable ĊĠĠĠĠĠĠĠ Ġset Button Enable () ĊĊĠĠĠĠĠĠĠ Ġ// ĠSet ĠEdit ĠText ĊĠĠĠĠĠĠĠ Ġedit Text Ġ= ĠfindViewById ( R . id . over app Input Number EditText ) ĊĠĠĠĠĠĠĠ Ġset EditText Amount () ĊĊĠĠĠĠĠĠĠ Ġ// ĠSe Ġon Ġclick Ġfor Ġincrement ĊĠĠĠĠĠĠĠ Ġincrement Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Increment () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠSe Ġon Ġclick Ġfor Ġdecrement ĊĠĠĠĠĠĠĠ Ġdecrement Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon De crement () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset EditText Amount () Ġ{ ĊĠĠĠĠĠĠĠ Ġedit Text . setText ( total Amount . toString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Increment () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( total Amount Ġ< ĠmaxValue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtotal Amount ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset EditText Amount () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Button Enable () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon De crement () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( total Amount Ġ> Ġmin Value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtotal Amount -- ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset EditText Amount () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Button Enable () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Button Enable () Ġ{ ĊĠĠĠĠĠĠĠ Ġdecrement Button . isEnabled Ġ= Ġtotal Amount Ġ> Ġmin Value ĊĠĠĠĠĠĠĠ Ġincrement Button . isEnabled Ġ= Ġtotal Amount Ġ< ĠmaxValue ĊĊĠĠĠ Ġ} ĊĠĠĠ Ġ// endregion ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval Ġdefault Start Amount Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval Ġdefault MinValue Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval Ġdefault MaxValue Ġ= Ġ 1 0 0 ĊĠĠĠ Ġ} Ċ }