Skip to content

StephenGemin/Calculator_Android_App

Repository files navigation

Calculator Android App

License: MIT Kotlin API Target SDK

A precision-focused Android calculator with dual portrait/landscape layouts (basic & scientific) and arbitrary-precision arithmetic using BigDecimal. Written entirely in Kotlin.

Quick Start

  • build: make build
  • install: make install
  • launch: make launch
    • build, install and launch app

Prerequisites

  • JDK 17 or higher
  • Android SDK 21+ (minimum API level)
  • Android build tools 35+

Using Android Studio

  1. Open the project in Android Studio
  2. Click Run or press Shift + F10 to build and launch on an emulator or device
Basic Calculator (Light) Basic Calculator (Dark)
Basic Calculator Light Basic Calculator Dark

Scientific Calculator

Light
Scientific Calculator Light
Dark
Scientific Calculator Dark

Features

  • BigDecimal precision arithmetic — uses EvalEx for exact decimal calculations (no floating-point rounding errors)
  • Reverse Polish Notation (RPN) evaluation for reliable expression parsing
  • Dual-mode UI — basic four-function calculator in portrait, full scientific calculator in landscape
  • Modern Android stack — Kotlin, AndroidX, Material Design compatible
  • Unit tested — includes parameterized JUnit tests for calculation validation

Architecture

The app uses a single-Activity design. MainActivity is a thin UI layer that wires button clicks to CalculatorEngine and renders its state; all calculation logic and state live in CalculatorEngine, which delegates expression evaluation to EvalEx.

Key Components

  • CalculatorEngine (app/src/main/java/com/example/calculator_v01/CalculatorEngine.kt) — state machine for calculator input/eval, EvalEx integration
  • MainActivity (app/src/main/java/com/example/calculator_v01/MainActivity.kt) — button handlers and rendering only, no calc logic
  • Layoutsactivity_main.xml (portrait) and layout-land/activity_main.xml (landscape)
  • TestsCalculatorEngineTest.kt (state behavior) and CalculatorEvalTest.kt (parameterized arithmetic evaluation)

Build Information

Property Value
Gradle 8.7+
AGP (Android Gradle Plugin) 8.5+
Kotlin 2.0.0
Compile SDK 35
Min SDK 21
Target SDK 35
Java/Kotlin JVM 17

Acknowledgments

  • EvalEx — expression evaluation library with BigDecimal precision
  • Android Developers — comprehensive Android documentation

About

Basic and scientific android calculator app with unit testing all written using Kotlin

Topics

Resources

License

Stars

6 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors