安卓开发简单的计算器app

计算器是手机上的基础应用之一,为方便用户使用,我们可以开发一款简单的安卓计算器应用。本文将介绍安卓计算器开发的原理和详细步骤。

开发计算器的步骤如下:

1. 创建一个新的安卓项目,为项目定义名称、包名以及其他属性。

2. 创建布局文件 activity_main.xml, 在该文件中使用 RelativeLayout 布局,设置 TextView 显示运算表达式和计算结果,通过布局实现计算器的各个按键。

3. 方法一:通过代码实现计算器按键的逻辑功能。在 MainActivity.java 文件中,为每个按键设置相应的监听器,分别处理不同的按键事件。通过回调函数获取按键信息,实现对应的数学运算,最终显示运算结果。

```java

public class MainActivity extends AppCompatActivity implements View.OnClickListener{

private TextView formulaText, resultText;

private boolean isFirst = true; // 是否计算的第一个数

private boolean isError = false; // 是否输入错误

private boolean isCounted = false; // 是否按等号计算

private float num1 = 0.0f; // 第一个数

private float num2 = 0.0f; // 第二个数

private String operator = ""; // 运算符

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

// 初始化控件

formulaText = findViewById(R.id.formulaText);

resultText = findViewById(R.id.resultText);

// 为按键设置监听器

findViewById(R.id.oneBtn).setOnClickListener(this);

findViewById(R.id.twoBtn).setOnClickListener(this);

findViewById(R.id.threeBtn).setOnClickListener(this);

// ...... 其他按键同理

findViewById(R.id.plusBtn).setOnClickListener(this);

findViewById(R.id.minusBtn).setOnClickListener(this);

findViewById(R.id.multiplyBtn).setOnClickListener(this);

findViewById(R.id.divideBtn).setOnClickListener(this);

findViewById(R.id.clearBtn).setOnClickListener(this);

findViewById(R.id.equalBtn).setOnClickListener(this);

findViewById(R.id.dotBtn).setOnClickListener(this);

}

@Override

public void onClick(View v) {

int key = v.getId();

if(isError) { // 如果输入式子有误,直接返回

Toast.makeText(this, "Input Error!", Toast.LENGTH_SHORT).show();

return;

}

switch(key) {

case R.id.oneBtn:

addCharToFormula("1");

break;

case R.id.twoBtn:

addCharToFormula("2");

break;

case R.id.threeBtn:

addCharToFormula("3");

break;

// ...... 其他按键同理

case R.id.plusBtn:

setOperator("+");

break;

case R.id.minusBtn:

setOperator("-");

break;

case R.id.multiplyBtn:

setOperator("*");

break;

case R.id.divideBtn:

setOperator("/");

break;

case R.id.dotBtn:

addDot();

break;

case R.id.clearBtn:

clear();

break;

case R.id.equalBtn:

calculate();

break;

}

}

private void addCharToFormula(String ch) {

if(isCounted) {

clear();

isCounted = false;

}

if(isFirst) {

resultText.setText(ch);

isFirst = false;

} else {

resultText.append(ch);

}

formulaText.append(ch);

}

private void setOperator(String op) {

if(isFirst) {

Toast.makeText(this, "Input error!", Toast.LENGTH_SHORT).show();

isError = true;

return;

}

operator = op;

isFirst = true;

formulaText.append(op);

}

private void addDot() {

if(isFirst) {

isFirst = false;

resultText.setText("0.");

formulaText.append("0.");

} else {

String str = resultText.getText().toString();

if(str.indexOf(".") == -1) {

resultText.append(".");

formulaText.append(".");

}

}

}

private void clear() {

resultText.setText("0");

formulaText.setText("");

isFirst = true;

isError = false;

isCounted = false;

num1 = 0.0f;

num2 = 0.0f;

operator = "";

}

private void calculate() {

if(isFirst) {

Toast.makeText(this, "输入出错", Toast.LENGTH_SHORT).show();

isError = true;

return;

}

num2 = Float.parseFloat(resultText.getText().toString().trim());

float result = 0.0f;

switch(operator) {

case "+":

result = num1 + num2;

break;

case "-":

result = num1 - num2;

break;

case "*":

result = num1 * num2;

break;

case "/":

if(num2 == 0.0f) {

Toast.makeText(this, "输入出错", Toast.LENGTH_SHORT).show();

isError = true;

return;

}

result = num1 / num2;

break;

}

resultText.setText(String.valueOf(result));

formulaText.append("="+String.valueOf(result));

num1 = result;

num2 = 0.0f;

isCounted = true;

isFirst = true;

}

}

```

4. 方法二:使用表达式计算器库 ExpressionEval,简单实现计算器的功能。在 gradle 文件中引入该库,使用该库计算表达式的值并在 TextView 中显示。

```java

public class MainActivity extends AppCompatActivity implements View.OnClickListener{

private TextView formulaText, resultText;

private String currentFormula = ""; // 当前运算表达式

private String currentResult = ""; // 当前运算结果

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

formulaText = findViewById(R.id.formulaText);

resultText = findViewById(R.id.resultText);

// 为按键设置监听器

findViewById(R.id.oneBtn).setOnClickListener(this);

findViewById(R.id.twoBtn).setOnClickListener(this);

findViewById(R.id.threeBtn).setOnClickListener(this);

// ...... 其他按键同理

findViewById(R.id.plusBtn).setOnClickListener(this);

findViewById(R.id.minusBtn).setOnClickListener(this);

findViewById(R.id.multiplyBtn).setOnClickListener(this);

findViewById(R.id.divideBtn).setOnClickListener(this);

findViewById(R.id.clearBtn).setOnClickListener(this);

findViewById(R.id.equalBtn).setOnClickListener(this);

findViewById(R.id.dotBtn).setOnClickListener(this);

}

@Override

public void onClick(View v) {

switch(v.getId()) {

case R.id.oneBtn:

addCharToFormula("1");

break;

case R.id.twoBtn:

addCharToFormula("2");

break;

case R.id.threeBtn:

addCharToFormula("3");

break;

// ...... 其他按键同理

case R.id.plusBtn:

addCharToFormula("+");

break;

case R.id.minusBtn:

addCharToFormula("-");

break;

case R.id.multiplyBtn:

addCharToFormula("*");

break;

case R.id.divideBtn:

addCharToFormula("/");

break;

case R.id.dotBtn:

addCharToFormula(".");

break;

case R.id.clearBtn:

clear();

break;

case R.id.equalBtn:

calculate();

break;

}

}

private void addCharToFormula(String ch) {

String str = formulaText.getText().toString().trim();

formulaText.setText(str+ch);

currentFormula += ch;

calculate();

}

private void clear() {

formulaText.setText("");

resultText.setText("");

currentFormula = "";

currentResult = "";

}

private void calculate() {

try {

currentResult = new Expression(currentFormula).eval().toPlainString();

resultText.setText(currentResult);

} catch (Exception e) {

resultText.setText("");

}

}

}

```

以上两种实现方式,都可以简单实现一款安卓计算器应用,读者可以根据自己的需要选择适合自己的方式实现。


相关知识:
安卓9开发工具
安卓开发是一门程序开发技术,用于为移动设备(如手机,平板电脑)开发移动应用程序。一个好的开发工具可以大大提高安卓开发的效率。目前,安卓开发工具的应用非常广泛,其中最受欢迎和广泛使用的是安卓9开发工具。本文将介绍安卓9开发工具的原理与详细介绍。一、安卓9开发
2023-05-23
安卓12开发者
安卓12是谷歌公司在2021年推出的最新版本的安卓操作系统,它带来了数百个新的功能和改进,旨在提升用户体验,简化日常任务,并提高设备的性能和安全性。一些重要的新功能和改进包括:1.更好的隐私控制:安卓12增强了隐私控制功能,允许用户更好地控制自己的个人数据
2023-05-23
安卓11怎么进入开发者选项
开发者选项是安卓系统中一个非常重要的功能,可以帮助开发人员进行调试、优化、测试和性能监测等任务。在 Android 11 版本中,开发者选项并没有过多的变化,但是仍需要按照一定的步骤才能进入到开发者选项界面。进入方式:1. 打开设置应用如果是 Androi
2023-05-23
安卓11怎么设置开发者选项
开发者选项是一项给予Android设备管理员权限的选项,通常被高级用户和开发者使用。安卓11与之前的版本一样,其实设置开发者选项也非常简单,只需在设备的设置中找到相应的选项并启用即可。以下是详细的设置方法:1. 首先,打开您的Android设备的设置菜单,
2023-05-23
visualstudio安卓开发环境
Visual Studio是一个强大的集成开发环境(IDE),它可以支持各种语言和开发平台,包括Windows、iOS、macOS、Linux和Android等操作系统。在本文中,我们将详细介绍如何在Visual Studio中配置Android开发环境和
2023-05-23
开发安卓日历app
开发一个安卓日历应用程序涉及到许多方面,包括对Android开发环境的了解、UI设计、功能实现以及与Android日历API的交互等。在本教程中,我将向您介绍如何从头开始构建一个简单的安卓日历应用程序。以下是需要考虑的一些主要步骤和组件:1. 准备开发环境
2023-04-28
安卓和苹果通用app开发语言
安卓和苹果通用的开发语言是指使用同一种编程语言可以同时开发移动应用程序,目前比较常用的通用开发语言有JavaScript、React Native和Flutter。JavaScript是一种基于对象和事件驱动的脚本语言,广泛用于网页客户端开发。而React
2023-04-28
安卓64位app开发要求
安卓64位App开发要求是在ARM架构的基础上,针对64位系统的开发要求。以下是安卓64位App开发的原理和详细介绍:1. 硬件需求安卓64位App开发的第一个要求是对硬件的要求。安卓64位系统需要有支持ARMv8-A架构的CPU处理器,或者是x86_64
2023-04-28
医疗安卓app开发
医疗安卓App的开发可以分为两部分:用户端和医生端。用户端:1.需求分析:根据医疗用户的需求,确定开发的医疗APP的功能、模块等等。2.UI设计:APP的UI设计需要美工人员配合开发人员一起设计,确保用户界面的美观易用。3.技术选型:根据需求分析,选用相应
2023-04-28
net怎么开发安卓app
在本教程中,我们将详细介绍如何使用.NET(前身为Xamarin)进行Android应用开发。我们将探讨.NET和Android应用开发的基本原理,完成一个简单项目的搭建,并提供一些关于Android开发的资源和提示。本教程适合刚接触.NET和Androi
2023-04-28
java开发安卓app推荐书
对于Java开发Android App,以下是一些建议阅读的书籍,它们不仅提供了原理性的介绍,还包含了诸多实践细节以及详细的教程内容,适合初学者学习:1. 《Android编程权威指南(第3版)》 - Bill Phillips, Chris Stewar
2023-04-28
app开发选ios还是安卓
在面临要为自己的应用选择开发平台时,很多人会面临一个关键问题:到底是选择iOS还是安卓?这个选择取决于不少因素,例如目标用户、预算、功能要求等。这篇文章将详细讲解两者的主要区别,助您决定适合自己的开发平台。1. 目标用户及市场份额作为世界上最流行的两大移动
2023-04-28
©2015-2023 安卓益APP Anzhuoe.com 蜀ICP备17007734号-1