package Ġcom . free . simple cal Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 4 . content . Context Compat Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . text . Editable Ċ import Ġandroid . text . Text Watcher Ċ import Ġandroid . view . View Ċ import Ġcom . google . android . gms . ads . Ad Request Ċ import Ġcom . google . android . gms . ads . Mobile Ads Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ import Ġjava . text . Decimal Format Ċ import Ġjava . text . Decimal Format Symbols Ċ import Ġjava . util .* ĊĊ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity (), View . OnClickListener , View . On Long ClickListener , ĠText Watcher Ġ{ ĊĊĊĠĠĠ Ġvar Ġcal form ular : String Ġ= "" ĊĠĠĠ Ġvar Ġlast re ult : String =" --- " ĊĠĠĠ Ġvar Ġdec ima : Decimal Format = ĠDecimal Format (" ## , ## 0 . ######## ") ĊĠĠĠ Ġvar Ġdec im as ymbol = Decimal Format Symbols ( Locale . getDefault ()) ĊĊĊĠĠĠ Ġoverride Ġfun Ġbefore TextChanged ( s : ĠCharSequence ?, Ġstart : ĠInt , Ġcount : ĠInt , Ġafter : ĠInt ) Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon TextChanged ( s : ĠCharSequence ?, Ġstart : ĠInt , Ġbefore : ĠInt , Ġcount : ĠInt ) Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġafter TextChanged ( s : ĠEdit able ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġcal form ular = formula . text . toString (). replace (" Â² "," ^ 2 "). replace (" âĪ ļ ("," sqrt (" ) ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġre = dec ima . format ( Extended Double Evaluator (). evaluate ( cal form ular )). toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . setTextColor ( Context Compat . getColor ( this , R . color . wh il te )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . setText ( re ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlast re ult = re ĊĠĠĠĠĠĠĠ Ġ} catch Ġ( e : Exception ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . setTextColor ( Context Compat . getColor ( this , R . color . no res )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . setText ( last re ult ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Long Click ( v : ĠView ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen ( v ?. id ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . btn _ clean Ġ-> Ġformula . setText ("") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonClick ( v : ĠView ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen ( v ?. id ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . btn _ 0 Ġ-> Ġinput (" 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . btn _ 1 Ġ-> Ġinput (" 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . btn _ 2 Ġ-> Ġinput (" 2 ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . btn _ 3 Ġ-> Ġinput (" 3 ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . btn _ 4 Ġ-> Ġinput (" 4 ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . btn _ 5 Ġ-> Ġinput (" 5 ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . btn _ 6 Ġ-> Ġinput (" 6 ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . btn _ 7 Ġ-> Ġinput (" 7 ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . btn _ 8 Ġ-> Ġinput (" 8 ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . btn _ 9 Ġ-> Ġinput (" 9 ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . btn _ decimal Ġ-> Ġinput (".") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . btn _ op br ar Ġ-> Ġinput (" (" ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . btn _ en br ar Ġ-> Ġinput (" )") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . btn _ root Ġ-> Ġinput (" âĪ ļ () ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . btn _ square Ġ-> Ġinput (" Â² ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . btn _ plus Ġ-> Ġinput ("+ ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . btn _ minus Ġ-> Ġinput ("- ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . btn _ multiply Ġ-> Ġinput ("* ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . btn _ divide Ġ-> Ġinput ("/") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . btn _ clean Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstart = Math . max ( formula . selection Start , 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġend = Math . max ( formula . selection End , 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġposition = Math . min ( start , end ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( position > 0 ) Ġformula . text . delete ( position - 1 , position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinput ( show : String ){ ĊĠĠĠĠĠĠĠ Ġval Ġstart = Math . max ( formula . selection Start , 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġend = Math . max ( formula . selection End , 0 ) ĊĠĠĠĠĠĠĠ Ġformula . text . replace ( Math . min ( start , end ), Math . max ( start , end ), show , 0 , show . length ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĠĠĠĠĠĠĠ ĠMobile Ads . initialize ( this ," ca - app - pub - 1 9 2 0 7 0 6 1 8 8 9 3 5 4 5 2 ~ 1 7 3 1 7 2 1 0 1 3 ") ĊĠĠĠĠĠĠĠ Ġval Ġads request = Ad Request . Builder (). build () ĊĠĠĠĠĠĠĠ Ġad view . load Ad ( ads request ) ĊĠĠĠĠĠĠĠ Ġbtn _ op br ar . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġbtn _ en br ar . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġbtn _ root . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġbtn _ square . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġbtn _ 0 . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġbtn _ 1 . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġbtn _ 2 . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġbtn _ 3 . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġbtn _ 4 . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġbtn _ 5 . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġbtn _ 6 . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġbtn _ 7 . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġbtn _ 8 . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġbtn _ 9 . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġbtn _ divide . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġbtn _ multiply . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġbtn _ minus . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġbtn _ plus . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġbtn _ decimal . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġbtn _ clean . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġbtn _ clean . setOn Long ClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġformula . show Soft Input On Focus = false ĊĠĠĠĠĠĠĠ Ġresult . show Soft Input On Focus = false ĊĊĠĠĠĠĠĠĠ Ġformula . add TextChanged Listener ( this ) ĊĠĠĠĠĠĠĠ Ġdec im as ymbol . grouping Separator =' Ġ' ĊĠĠĠĠĠĠĠ Ġdec im as ymbol . decimal Separator =' .' ĊĠĠĠĠĠĠĠ Ġdec ima . decimal Format Symbols = dec im as ymbol ĊĊĠĠĠ Ġ} Ċ Ċ } Ċ