如何用 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 计算器的核心概念。根据需求可以进一步扩展功能和完善用户体验。

相关推荐
古法安卓2 小时前
Android-SELinux 策略调试实战:从 AVC 日志到策略修复
android·java·android studio
Dovis(誓平步青云)3 小时前
DevEco Studio 6.1.1 Windows 安装实录:从下载校验到首次启动
android·开发语言·数据库·人工智能·windows·harmonyos
Zender Han3 小时前
Flutter 自适应(Adaptive)与响应式(Responsive)设计实践:官方推荐方案详解
android·flutter·ios
我命由我123453 小时前
Android 开发问题:TopAppBar 和 topAppBarColors API is experimental...
android·java·java-ee·kotlin·android studio·android jetpack·android-studio
造火箭4 小时前
Android UI自动化测试可行性评估SKILL
android·功能测试·ui
hunterandroid6 小时前
[Android 从零到一] ViewPager2 与 Fragment 生命周期协同:从预加载到状态一致性
android·前端
mmsx6 小时前
一个黑边 Bug 修了两版:自己算矩阵直接黑屏,借库重建只用了一行 setZoom
android·前端
枢影Kernel6 小时前
Android CLI 与 Android Skills 最佳实践:把 AI Agent 接入可验证的 Android 开发流程
android
Kapaseker7 小时前
没想到吧!Skill 也可以测试 — 小白都看得懂的 Skill 教程
android·人工智能·kotlin
我命由我123457 小时前
Android 开发问题:使用 AndroidTreeView 时,自定义视图无法撑满父容器
android·java·java-ee·kotlin·android studio·android-studio·android runtime