安卓开发简单的计算器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("");

}

}

}

```

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


相关知识:
安卓8
安卓8.2是一款由谷歌公司开发的操作系统,它的灵活性和开放性使得它成为了世界上使用最广泛的移动设备操作系统之一。如果想要开发安卓应用程序,就需要熟悉安卓8.2的开发原理和机制。一、安卓8.2的开发语言安卓8.2使用Java作为它的主要编程语言。这意味着开发
2023-05-23
安卓12开发者怎么设置
安卓系统是一个开源的操作系统,自从第一个版本推出以来,安卓一直在不断发展和更新。如今,安卓12已经发布,开发者可以使用最新版本的安卓系统来开发新的应用程序。在本文中,我们将介绍如何在安卓12上设置开发环境,为开发人员提供简单的指导。1. 安装Java JD
2023-05-23
安卓11开发者选项在哪里
安卓11开发者选项是一个非常实用的工具,可以帮助开发人员进行更深入的调试和优化工作。通过这个选项,开发人员可以进行各种调试和优化,例如设置USB调试、禁用应用程序自动更新、设置模拟位置、开启GPU过度绘制检测等等。那么,安卓11开发者选项究竟在哪里呢?本文
2023-05-23
安卓11开发人员
安卓11是谷歌发布的最新安卓系统,也是截至2021年最为流行的安卓系统版本之一。相对于先前版本,安卓11提供了更加全面的个人隐私保护措施、增强的设备间连接与交互等特性。下面将对安卓11开发人员的一些核心概念和原理进行详细介绍。一、安卓11的隐私保护安卓11
2023-05-23
vivo安卓开发者选项最佳设置方法
安卓开发者选项是一种专为开发和测试目的而设计的功能,旨在简化应用程序调试和调整过程。在vivo设备中,开发者选项可以帮助开发人员掌握更多设备信息和调试选项。本文将介绍vivo安卓开发者选项最佳设置方法,帮助开发人员更高效地开发vivo设备应用程序。一、打开
2023-05-23
ios和安卓分别基于什么语言开发的
iOS和Android是目前手机应用程序开发领域最主要的两种操作系统。iOS系统是由苹果公司研发推出的,而Android是由Google公司推出的。两种操作系统采用了不同的开发语言,以下是详细的介绍。一、iOS开发语言和原理1. Objective-C和S
2023-05-23
app开发安卓ios
移动应用程序(App)是指一种专门设计用于在移动设备(如智能手机、平板电脑和手持设备)上运行的应用程序。与桌面应用程序不同,移动应用需要考虑多种因素,例如设备的屏幕大小、处理器速度和用户输入方式等。本文将介绍如何开发安卓和iOS移动应用程序的原理和步骤。安
2023-05-23
4年安卓开发总结
作为一名安卓开发者,我已经从事这个领域4年了,这里分享一下我的经验总结。1. Java语言的掌握安卓的开发语言主要是Java语言,熟悉Java语言对于一个安卓开发者来说是非常必要的。在掌握Java语言后,Java面向对象的特性也要熟悉,包括继承、封装、多态
2023-05-23
怎样开发一款安卓app呢
开发安卓APP的过程主要分为以下步骤:1. IDE环境的搭建安卓APP开发需要使用Java语言和Android Studio开发工具,因此先需要下载安装Java和Android Studio环境。2. 设计UI界面安卓APP的UI设计可以使用Android
2023-04-28
安卓app开发的疑难
在这篇文章中,我们将探讨安卓app开发过程中可能遇到的一些疑难原理和详细介绍。安卓应用程序由Java或Kotlin编写,使用Android Studio开发工具进行构建和管理。以下是一些常见的疑难问题:1. 生命周期管理安卓的活动(Activity)具有不
2023-04-28
安卓app开发安卓系统
安卓系统是一个开源的操作系统,可以运行在手机、平板、智能手表、智能电视等设备上。安卓开发可以使用多种编程语言,如Java、Kotlin、C++等,它们可以与安卓系统交互,使得应用程序得以运行在安卓平台上。安卓开发需要掌握以下方面的知识:1. Java/Ko
2023-04-28
基于安卓平台的旅游app开发
在这篇文章中,我们将介绍基于安卓平台的旅游应用程序开发的原理及详细介绍。我们将从以下几个方面展开论述:1. 旅游应用程序的基本功能2. 技术结构和实现方案3. 开发所需技能和工具4. 编写简单的旅游应用程序案例### 1. 旅游应用程序的基本功能一个基本的
2023-04-28
©2015-2023 安卓益APP Anzhuoe.com 蜀ICP备17007734号-1