Android开发:kotlin语言实现简易计算器
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语言实现简易计算器相关推荐
- Android开发——Kotlin语言
语法 变量 类型转换 "不安全的"转换操作符 "安全的"转换操作符 函数 一行代码的情况 运算符 位运算符 程序控制语句 选择结构 循环结构 类和对象 继承与构 ...
- GO语言基础----简易计算器
GO语言基础----简易计算器 该计算器可以执行两个数字和一个计算符号的计算. 例如,1+1,3*5,9/2- 代码实现: package mainimport("fmt")fun ...
- Android开发:基于Kotlin编写一个简易计算器
目录 前言 Kotlin学习tips 界面绘制及控件绑定 UI界面绘制 控件绑定 Button点击事件 运算逻辑 整体逻辑 边界情况 输入展示 点击数字键 点击运算符键 点击"=" ...
- Kotlin成为Android开发首选语言——你绝对不能错过的
继Java 和 C++ 之后,Google 在 I/O 2017 上宣布 Android 加入了对 Kotlin 编程语言的支持. 将Kotlin语言作为安卓开发的一级编程语言.Kotlin由JetB ...
- iOS开发技术-实验一-简易计算器实现
课程名称 iOS开发技术 开发第一个Swift程序 一. 实验目的和要求 目的: 1)了解macOS程序开发过程: 2)学习使用Swift开发工具: 3)学习Swift语法: 4)体会新式语法的特点: ...
- go语言ios android开发,Go 语言编写移动端 Android 和 iOS SDK
这篇文章不涉及 Go 编译原生 Android 和 iOS 应用,只讲述如何使用 Go 语言编译生成 Android 和 iOS SDK 库文件,并使用 Java (Android) 和 Object ...
- 初学C语言实现简易计算器
简易计算器 用C语言实现一个简易的模拟计算器系统,如果有错误,希望大神可以指正.(Codeblocks 编译通过) #include <stdio.h> #include <stdl ...
- android计算器弹窗,【Android 开发-kotlin】计算器+分享页面demo
运行效果 计算(同一应用页面跳转) 分享(不同应用页面跳转) 实现横屏 内容简概 一.搭建界面 二.实现界面之间跳转和传值 三.实现隐式跳转并回调数据 四.Activity生命周期--解决横屏数据丢失 ...
- Android学习-Kotlin语言入门-变量、函数、语法糖、when、for-in、主构造函数、单例类、函数式API、集合遍历、隐式Intent、Activity生命周期、四种启动模式、标准函数
探究java语言的运行机制 变量.函数.语法糖 when条件语句 for循环 主构造函数.次构造函数 数据类和单例类 集合的创建与遍历 集合的函数式API 创建菜单 隐式使用Intent Activi ...
最新文章
- $(shell expr $(MAKE_VERSION) \= 3.81) 这里“\”的解释
- WCF 4.0 REST Service JSON跨域调用
- linux下字节对齐
- ubuntu kylin 14.04安装配置redis-2.8.9(转)
- Windows和Virtualbox虚拟机之间拷贝文件
- web前端性能意义、关注重点、测试方案、优化技巧
- 系统设计知识:系统设计的基本原理介绍
- swagger core 和 swagger ui 如何关联【窥探】
- matlab变量由非标量,matlab中的if语句
- 九张 Gif 图回顾 Web 设计的 25 年历史
- oracle简易数据库搭建,Oracle 10g 手工创建一个最简单的数据库
- Python之路:初识
- 【渝粤教育】国家开放大学2018年春季 0175-22T社会调查研究与方法 参考试题
- 《矩阵分析》代码Ⅱ——gauss消元法,列主元素法,总体主元素法matlab实现
- Laravel+DingoAPI+Passport使用邮箱或手机号或uid登录
- 【技术】Java打印菱形
- python 解积分方程
- HTML5颜色选择器(画布)
- Python代码规范之---代码不规范,亲人两行泪
- 【MPEG】DVB / ATSC / ISDB区别
热门文章
- ShareSDK 安装教程
- DLL动态链接库生成及其動態调用(二)
- 战果--继围剿Worm.Viking.dy、专杀工具的较量
- Webkit是什么?(Chrome浏览器的核心)
- html,vue, react,angular 前端实现二维码生成 ,二维码解析
- web网页短信系统平台后台源码搭建功能篇|移讯云短信系统
- html窗口载入完成时间,如何记录页面加载时间
- 如果李国庆能懂这些数据分析知识.....
- 水下机器人舟山_舟山市水下开槽埋管 勤奋学习
- 最新彩虹易支付六合一支付插件