Android开发:kotlin语言实现简易计算器

  • 1. 实现效果
  • 2. 主要文件代码:
    • 界面布局:activity_main.xml文件代码
    • 字符定义:string.xml文件代码
    • 逻辑实现:MainActivity.kt 文件代码
  • 3. 具体实现步骤
    • 方法一(偷懒):
    • 方法二:
      • 1. 绘制界面
      • 2. 编写逻辑代码
      • 3. 设置多语言

1. 实现效果

  • 输入两个数字,可选加减乘除操作符,并计算显示对应结果

  • 随系统切换语言

  • 可对结果进行四舍五入操作

2. 主要文件代码:

界面布局:activity_main.xml文件代码

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><RadioGroupandroid:id="@+id/radioGroup"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginStart="25dp"android:layout_marginTop="64dp"android:layout_marginBottom="456dp"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"><TextViewandroid:id="@+id/textView"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="@string/operator"android:textColor="@color/purple_700"android:textSize="20sp"android:textStyle="bold" /><RadioButtonandroid:id="@+id/add_opt"android:layout_width="match_parent"android:layout_height="wrap_content"android:checked="false"android:text="@string/add"android:textColor="@color/black"android:textSize="16sp" /><RadioButtonandroid:id="@+id/sub_opt"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="@string/sub"android:textColor="@color/black"android:textSize="16sp" /><RadioButtonandroid:id="@+id/mul_opt"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="@string/mul"android:textColor="@color/black"android:textSize="16sp" /><RadioButtonandroid:id="@+id/div_opt"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="@string/div"android:textColor="@color/black"android:textSize="16sp" /></RadioGroup><EditTextandroid:id="@+id/number1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginStart="36dp"android:layout_marginTop="64dp"android:layout_marginEnd="36dp"android:autofillHints=""android:ems="10"android:hint="@string/please_input_a_number1"android:inputType="numberDecimal"android:minHeight="48dp"android:textColorHint="#757575"android:textSize="20sp"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toEndOf="@+id/radioGroup"app:layout_constraintTop_toTopOf="parent"tools:ignore="SpeakableTextPresentCheck" /><EditTextandroid:id="@+id/number2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginStart="36dp"android:layout_marginTop="32dp"android:layout_marginEnd="36dp"android:autofillHints=""android:ems="10"android:hint="@string/please_input_a_number2"android:inputType="numberDecimal"android:minHeight="48dp"android:textColorHint="#757575"android:textSize="20sp"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toEndOf="@+id/radioGroup"app:layout_constraintTop_toBottomOf="@+id/number1"tools:ignore="SpeakableTextPresentCheck" /><TextViewandroid:id="@+id/calcResult"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="32dp"tools:text="Result: 0.0"android:textColor="@color/purple_700"android:textSize="24sp"android:textStyle="bold"app:layout_constraintEnd_toEndOf="@+id/number2"app:layout_constraintStart_toStartOf="@+id/number2"app:layout_constraintTop_toBottomOf="@+id/number2" /><Buttonandroid:id="@+id/calculate"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_marginHorizontal="10dp"android:layout_marginBottom="300dp"android:text="@string/calculate"android:textSize="16sp"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toEndOf="@+id/clear" /><Buttonandroid:id="@+id/clear"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_marginHorizontal="10dp"android:layout_marginBottom="300dp"android:text="@string/clear"android:textSize="16sp"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toStartOf="@+id/calculate"app:layout_constraintStart_toStartOf="parent" /><Switchandroid:id="@+id/roundUpResult"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_marginStart="32dp"android:layout_marginTop="32dp"android:layout_marginBottom="32dp"android:checked="true"android:minHeight="48dp"android:text="@string/round_up_result"android:textSize="20sp"app:layout_constraintBottom_toTopOf="@+id/calculate"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/radioGroup" />
</androidx.constraintlayout.widget.ConstraintLayout>

字符定义:string.xml文件代码

<resources><string name="app_name">Calculator</string><string name="operator">Operator</string><string name="add">Add</string><string name="sub">Sub</string><string name="mul">Mul</string><string name="div">Div</string><string name="calc_result">Result: %s</string><string name="clear">Clear</string><string name="calculate">Calculate</string><string name="please_input_a_number1">The First Number</string><string name="please_input_a_number2">The Second Number</string><string name="round_up_result">Round Up Result?</string>
</resources>

逻辑实现:MainActivity.kt 文件代码

package com.example.calculatorimport androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.example.calculator.databinding.ActivityMainBinding
import kotlin.math.roundclass MainActivity : AppCompatActivity() {private lateinit var binding: ActivityMainBindingoverride fun onCreate(savedInstanceState: Bundle?) {binding = ActivityMainBinding.inflate(layoutInflater)super.onCreate(savedInstanceState)setContentView(binding.root)binding.calculate.setOnClickListener { calculate() }binding.clear.setOnClickListener { clear() }displayResult(0.0)}private fun calculate() {val num1 = binding.number1.text.toString().toDoubleOrNull()val num2 = binding.number2.text.toString().toDoubleOrNull()if (num1 == null) {displayResult(0.0)return}if (num2 == null) {displayResult(0.0)return}// 获取var calResult = when(binding.radioGroup.checkedRadioButtonId){R.id.add_opt -> num1+num2R.id.sub_opt -> num1-num2R.id.mul_opt -> num1*num2R.id.div_opt -> if (num2 != 0.0) {num1/num2} else { 0.0 }else -> { 0.0 }}calResult = String.format("%.2f", calResult).toDouble()// 是否四舍五入?if (binding.roundUpResult.isChecked) {calResult = round(calResult)}displayResult(calResult)}fun displayResult(result: Double) {// 结果显示binding.calcResult.text = getString(R.string.calc_result,result.toString())}fun clear(){// 清空操作binding.number1.text.clear()binding.number2.text.clear()displayResult(0.0)binding.radioGroup.clearCheck()binding.roundUpResult.isChecked = true}
}

3. 具体实现步骤

方法一(偷懒):

复制文件到对应位置

方法二:

  • 1. 绘制界面

  • 2. 编写逻辑代码

    本例为了简化,使用了viewbinding 绑定方法,并未使用findViewById()。故需进行以下处理:

    在build.gradle(Module: Calulate.app) 文件添加以下代码:

        buildFeatures{viewBinding = true}
    

如报错,需在gradle.properties 文件中加入以下代码:

android.enableD8=true
android.injected.testOnly=false
android.enableJetifier=true

然后便可以使用viewbinding绑定方法(当然大家可以使用findViewById,笔者认为麻烦)

最后复制MainActivity.kt文件代码即可,逻辑不难,故不讲解

  • 3. 设置多语言




然后便可以使用viewbinding绑定方法(当然大家可以使用findViewById,笔者认为麻烦)

最后复制MainActivity.kt文件代码即可,逻辑不难,故不讲解

Android开发:kotlin语言实现简易计算器相关推荐

  1. Android开发——Kotlin语言

    语法 变量 类型转换 "不安全的"转换操作符 "安全的"转换操作符 函数 一行代码的情况 运算符 位运算符 程序控制语句 选择结构 循环结构 类和对象 继承与构 ...

  2. GO语言基础----简易计算器

    GO语言基础----简易计算器 该计算器可以执行两个数字和一个计算符号的计算. 例如,1+1,3*5,9/2- 代码实现: package mainimport("fmt")fun ...

  3. Android开发:基于Kotlin编写一个简易计算器

    目录 前言 Kotlin学习tips 界面绘制及控件绑定 UI界面绘制 控件绑定 Button点击事件 运算逻辑 整体逻辑 边界情况 输入展示 点击数字键 点击运算符键 点击"=" ...

  4. Kotlin成为Android开发首选语言——你绝对不能错过的

    继Java 和 C++ 之后,Google 在 I/O 2017 上宣布 Android 加入了对 Kotlin 编程语言的支持. 将Kotlin语言作为安卓开发的一级编程语言.Kotlin由JetB ...

  5. iOS开发技术-实验一-简易计算器实现

    课程名称 iOS开发技术 开发第一个Swift程序 一. 实验目的和要求 目的: 1)了解macOS程序开发过程: 2)学习使用Swift开发工具: 3)学习Swift语法: 4)体会新式语法的特点: ...

  6. go语言ios android开发,Go 语言编写移动端 Android 和 iOS SDK

    这篇文章不涉及 Go 编译原生 Android 和 iOS 应用,只讲述如何使用 Go 语言编译生成 Android 和 iOS SDK 库文件,并使用 Java (Android) 和 Object ...

  7. 初学C语言实现简易计算器

    简易计算器 用C语言实现一个简易的模拟计算器系统,如果有错误,希望大神可以指正.(Codeblocks 编译通过) #include <stdio.h> #include <stdl ...

  8. android计算器弹窗,【Android 开发-kotlin】计算器+分享页面demo

    运行效果 计算(同一应用页面跳转) 分享(不同应用页面跳转) 实现横屏 内容简概 一.搭建界面 二.实现界面之间跳转和传值 三.实现隐式跳转并回调数据 四.Activity生命周期--解决横屏数据丢失 ...

  9. Android学习-Kotlin语言入门-变量、函数、语法糖、when、for-in、主构造函数、单例类、函数式API、集合遍历、隐式Intent、Activity生命周期、四种启动模式、标准函数

    探究java语言的运行机制 变量.函数.语法糖 when条件语句 for循环 主构造函数.次构造函数 数据类和单例类 集合的创建与遍历 集合的函数式API 创建菜单 隐式使用Intent Activi ...

最新文章

  1. $(shell expr $(MAKE_VERSION) \= 3.81) 这里“\”的解释
  2. WCF 4.0 REST Service JSON跨域调用
  3. linux下字节对齐
  4. ubuntu kylin 14.04安装配置redis-2.8.9(转)
  5. Windows和Virtualbox虚拟机之间拷贝文件
  6. web前端性能意义、关注重点、测试方案、优化技巧
  7. 系统设计知识:系统设计的基本原理介绍
  8. swagger core 和 swagger ui 如何关联【窥探】
  9. matlab变量由非标量,matlab中的if语句
  10. 九张 Gif 图回顾 Web 设计的 25 年历史
  11. oracle简易数据库搭建,Oracle 10g 手工创建一个最简单的数据库
  12. Python之路:初识
  13. 【渝粤教育】国家开放大学2018年春季 0175-22T社会调查研究与方法 参考试题
  14. 《矩阵分析》代码Ⅱ——gauss消元法,列主元素法,总体主元素法matlab实现
  15. Laravel+DingoAPI+Passport使用邮箱或手机号或uid登录
  16. 【技术】Java打印菱形
  17. python 解积分方程
  18. HTML5颜色选择器(画布)
  19. Python代码规范之---代码不规范,亲人两行泪
  20. 【MPEG】DVB / ATSC / ISDB区别

热门文章

  1. ShareSDK 安装教程
  2. DLL动态链接库生成及其動態调用(二)
  3. 战果--继围剿Worm.Viking.dy、专杀工具的较量
  4. Webkit是什么?(Chrome浏览器的核心)
  5. html,vue, react,angular 前端实现二维码生成 ,二维码解析
  6. web网页短信系统平台后台源码搭建功能篇|移讯云短信系统
  7. html窗口载入完成时间,如何记录页面加载时间
  8. 如果李国庆能懂这些数据分析知识.....
  9. 水下机器人舟山_舟山市水下开槽埋管 勤奋学习
  10. 最新彩虹易支付六合一支付插件