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

}

}

}

```

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


相关知识:
安卓app 开发 语言
安卓app开发是近年来非常热门的一项技能,但是很多人可能并不了解其中的原理和开发语言。本文将为大家介绍安卓app开发语言的原理和详细介绍。安卓app开发原理安卓app开发的本质就是将你的代码编译成能够在安卓设备上运行的可执行文件,也就是apk文件。在这个过
2023-05-23
安卓 c开发
Android是一个基于Linux的开源操作系统,因其开源性和广泛的应用而成为目前市场份额最大的移动操作系统。C语言作为一种高效的、广泛使用的编程语言,在Android开发中也扮演着重要的角色。本文将介绍Android开发中C语言的使用,包括C语言的基础知
2023-05-23
安仁附近安卓软件开发中心
安仁附近安卓软件开发中心是一家专业从事安卓软件开发的公司,其致力于提供高品质的安卓软件开发、设计和咨询服务,其团队拥有丰富的开发经验和行业技术,具有良好的服务口碑和广袤的客户群体。一、公司优势1. 专业化团队:公司拥有专业化的软件开发团队,从策划、设计、研
2023-05-23
qt开发安卓难度
QT是一套跨平台的C++ GUI开发库,它可以方便地将应用程序从一种操作系统移植到另一种操作系统。QT可以用C++语言来编写,而且可以直接编写UI代码,编写的UI又很容易调用到Qt的核心部分,因此,Qt成为了许多开发人员的首选开发工具。在QT中,我们可以直
2023-05-23
mac安卓手机开发软件
Mac系统的开发软件与安卓手机的开发软件有很大不同。Mac系统的开发软件主要集中在Xcode上,而安卓手机的开发软件则主要是Android Studio。本文将介绍Mac系统开发软件与安卓手机开发软件的原理和详细介绍。一、Mac系统开发软件XcodeXco
2023-05-23
app苹果和安卓要分别开发吗
移动应用程序(App)是一种被广泛使用的软件形式,它们可以在移动设备上运行,例如智能手机或平板电脑。在移动App市场中,苹果公司的App Store和Google公司的Google Play Store是两个热门的App下载平台。由于iOS和Android
2023-05-23
打包并发布安卓app
要打包并发布一个安卓APP,你需要以下几个步骤:1. 准备工作:在开始之前,你需要确保你有一个安卓应用程序和最终版本的构建工具,如Android Studio和Gradle。2. 确定版本号和构建类型:在打包应用程序之前,你需要确定版本号和构建类型。这可通
2023-04-28
学习安卓手机app制作
在学习安卓手机app制作之前,需要掌握以下基础知识:1. Java编程语言2. 基础的数据结构和算法3. 安卓的相关知识,如安卓系统架构,应用开发的组件等等。学习安卓开发的第一步是掌握Java编程语言,因为安卓应用的开发是基于Java语言的。如果你已经学习
2023-04-28
制作一个安卓手机app多少钱
制作一个安卓手机App的费用取决于好几个因素。下面是制作一个安卓手机App需要考虑到的因素和相关信息:1. 功能和复杂性: App功能和复杂性越高,开发成本就越高。例如,如果你想开发一个简单的计算器App,开发成本就比开发一个大型游戏或社交媒体App低得多
2023-04-28
丽川app安卓开发批发市场
丽川app是一个为批发市场和厂家打通的电商平台,主要聚焦于中小企业之间的交易。下面将为您介绍丽川app的安卓开发原理和详细介绍。丽川app的安卓开发原理:1. 开发语言:丽川app采用了Java语言进行开发。在Java语言的基础上,主要使用了Android
2023-04-28
个人开发安卓app有前途
在互联网高度发展的今天,许多人都对编程、开发应用产生了浓厚的兴趣。在这种情况下,个人开发安卓应用也成为一种可能的选择。让我们来谈谈个人开发安卓应用的前景以及相关的原理和详细介绍。**个人开发安卓应用的前景**随着科技的快速发展和智能手机的普及,开发一款安卓
2023-04-28
使用条款
安卓益APP平台服务协议欢迎您使用安卓益APP平台服务!为使用安卓益APP平台服务,您应当阅读并遵守《安卓益APP平台服务协议》(以下简称“本协议”)。请您务必审慎阅读、充分理解各条款内容,特别是免除或者限制责任的条款、管辖与法律适
2017-04-26
©2015-2023 安卓益APP Anzhuoe.com 蜀ICP备17007734号-1