安卓开发简单的计算器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是Android操作系统的其中一个版本,开发人员选项是指一些隐藏起来的设置,只有在开发人员模式下才能看到。这些选项能够帮助开发人员对设备进行更全面的控制和调试。在本文中,将讨论安卓8开发人员选项的原理和详细介绍。首先,要打开开发人员选项,需要进行以下
2023-05-23
miui开发版7
MIUI是小米公司推出的一款Android系统,它的特点是定制性高、UI美观、使用简单。MIUI开放了开发版和稳定版,前者主要是测试人员使用,后者则是普通用户使用的版本。MIUI开发版是面向开发人员的测试版本,用户可以通过订阅测试版通道来更新MIUI开发版
2023-05-23
java进行安卓开发
Java是一种跨平台、面向对象的编程语言,其中大多数安卓开发者都选择使用Java进行安卓开发。接下来,本文将为大家详细介绍Java进行安卓开发的原理。安卓开发中的Java语言Java是一种在多平台下运行的语言,可以在不同的操作系统和硬件架构中运行,不需要任
2023-05-23
ios 安卓app开发
移动应用程序开发已成为当前互联网领域的热门话题之一,其中 iOS 和 Android 平台成为最为流行的两大移动端开发平台。本文将从原理或者详细介绍的角度来介绍 iOS 和 Android 平台的 app 开发。iOS 安卓的发展历程作为两个流行的智能手机
2023-05-23
idea安卓系统app开发教程
Idea是一款流行的跨平台集成开发环境(IDE),它支持多种编程语言和开发框架,其中包括Android开发。在本篇文章中,我们将介绍如何使用Idea进行Android应用程序开发。Android应用程序开发前提在开始使用Idea进行Android应用程序开
2023-05-23
35岁安卓开发
安卓开发是指在Android操作系统上开发应用程序,它是当前移动互联网领域的一个重要分支。随着互联网和移动终端的发展,Android操作系统已成为普及率最高的移动操作系统之一。安卓开发主要涉及Java编程语言的使用,同时也需要掌握Android工具链和An
2023-05-23
4年安卓开发工程师
作为一名安卓开发工程师,我已经在这个领域工作了4年。在这段时间里,我深入探索了安卓开发的原理和技术,为各种各样的应用程序创建了完整的解决方案,并与团队协作完成了多个大型项目。首先,作为一名安卓开发工程师,我必须拥有扎实的Java编程基础。Java是安卓的主
2023-05-23
有医疗安卓app开发
医疗安卓APP的开发可以包括如下功能:1. 基础信息录入:用户可以在APP上输入个人的基础身体状况信息,包括年龄、身高、体重、血型等等。2. 病历管理:用户可以在APP上管理自己的病历,包括各种医学检查记录、化验单、住院记录等等。3. 健康数据监测:用户可
2023-04-28
开发安卓app使用什么软件
开发Android应用程序有多种选择,可供开发人员使用的软件工具也有多种。下面是一些常见的Android应用程序开发软件:1. Android StudioAndroid Studio是谷歌公司官方的IDE,基于IntelliJ IDEA开发,是目前最流行
2023-04-28
安徽安卓系统app定制开发源码交付
安卓系统app定制开发是指针对特定需求和场景自定义开发安卓应用程序。通常情况下,定制开发的应用程序仅限于客户自身使用,而不是开放给公众大众。以下是安卓系统app定制开发的源码交付过程:1. 需求确认:首先,开发团队需要收集客户的需求信息,以确保了解客户的期
2023-04-28
安卓app开发发展怎么样
安卓App开发:发展、原理与详细介绍随着智能手机的普及,如今安卓App开发已经成为了IT行业的一个热门领域。本文将为你详细介绍安卓App开发的现状、发展、原理以及一些基本概念。1. 安卓App开发的发展安卓(Android)系统是由Google开发的一款基
2023-04-28
python如何打包为安卓app
打包Python程序为Android应用的主要方法有两种:- 使用Python-to-Android框架进行打包- 使用Kivy框架进行应用开发和打包下面分别进行详细介绍。使用Python-to-Android框架进行打包Python-to-Android
2023-04-28
©2015-2023 安卓益APP Anzhuoe.com 蜀ICP备17007734号-1