如何用 Kotlin 在 Android 手机开发一个计算器

使用 Kotlin 开发 Android 计算器

1. 创建新项目 打开 Android Studio,选择新建项目,模板选择 "Empty Activity",语言选择 Kotlin,确保最低 API 级别为 21 或更高。

2. 设计用户界面 在 res/layout/activity_main.xml 中定义计算器的布局。通常包括一个 TextView 显示结果和多个 Button 用于数字和操作符。

XML 复制代码
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:id="@+id/tvResult"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="24sp"/>

    <GridLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:columnCount="4">

        <Button android:text="7" android:onClick="onDigitClick"/>
        <Button android:text="8" android:onClick="onDigitClick"/>
        <Button android:text="9" android:onClick="onDigitClick"/>
        <Button android:text="/" android:onClick="onOperatorClick"/>

        <!-- 继续添加其他按钮 -->
    </GridLayout>
</LinearLayout>

3. 实现逻辑 在 MainActivity.kt 中实现计算逻辑:

kotlin 复制代码
class MainActivity : AppCompatActivity() {
    private var currentInput = ""
    private var storedValue = 0.0
    private var currentOperator = ""

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }

    fun onDigitClick(view: View) {
        val button = view as Button
        currentInput += button.text
        updateDisplay()
    }

    fun onOperatorClick(view: View) {
        val button = view as Button
        if (currentInput.isNotEmpty()) {
            performCalculation()
            currentOperator = button.text.toString()
            currentInput = ""
        }
    }

    fun onEqualsClick(view: View) {
        if (currentInput.isNotEmpty()) {
            performCalculation()
            currentOperator = ""
        }
    }

    fun onClearClick(view: View) {
        currentInput = ""
        storedValue = 0.0
        currentOperator = ""
        updateDisplay()
    }

    private fun performCalculation() {
        val inputValue = currentInput.toDouble()
        when (currentOperator) {
            "+" -> storedValue += inputValue
            "-" -> storedValue -= inputValue
            "*" -> storedValue *= inputValue
            "/" -> storedValue /= inputValue
            else -> storedValue = inputValue
        }
        currentInput = storedValue.toString()
        updateDisplay()
    }

    private fun updateDisplay() {
        findViewById<TextView>(R.id.tvResult).text = currentInput
    }
}

4. 测试应用 在模拟器或真机上运行应用,测试各种计算场景,确保基本功能正常工作。

5. 添加高级功能 可以考虑添加以下高级功能:

  • 小数点支持
  • 百分比计算
  • 正负号切换
  • 科学计算功能
  • 历史记录功能

6. 优化用户体验

  • 添加按钮点击效果
  • 处理除以零等错误情况
  • 调整布局适应不同屏幕尺寸
  • 添加动画效果

7. 发布准备

  • 添加应用图标
  • 配置应用名称
  • 测试不同 Android 版本兼容性
  • 生成签名 APK 或 App Bundle

这个基本实现展示了用 Kotlin 开发 Android 计算器的核心概念。根据需求可以进一步扩展功能和完善用户体验。

相关推荐
其实防守也摸鱼9 小时前
Fastjson 反序列化漏洞(JNDI注入)
android·数据库·安全·oracle·自动化·fastjson·反序列化
狗凯之家源码网10 小时前
微博图床 PHP 系统搭建与实战应用指南
android·开发语言·php
消失的旧时光-194311 小时前
(第一篇)JNI 多线程到底难在哪:从 Linux Thread 到 JNIEnv
android·jni·ndk
逗脑IDE14 小时前
零基础学ESP32:蓝牙控制舵机——手机一点,舵机就转!
android·智能手机
清霜之辰14 小时前
骁龙 8397 舱驾融合平台端侧大模型部署:7B 模型本地推理与 64GB 内存账本
android
烽火聊员14 小时前
Android屏幕卡顿traces.txt拉取查看
android·java·android studio
只睡四小时16 小时前
JS 手写 D-pad 空间导航:电视端焦点引擎实战
android·开发语言·前端·javascript·ecmascript·hls·空间导航
恋猫de小郭16 小时前
Android 原生的 Compose A2UI 也来了,你还抱着 XML 养老吗?
android·前端·flutter
程序媛_16 小时前
【JMeter】准备token文件
android·jmeter
维克兜率天17 小时前
【维克】弹性策略:用“乖离率“捕捉超跌反弹
android·开发语言·python·深度学习·kotlin·量化