Android做一个简单的计算器

Android简单计算器实现
本文讲述了如何在Android中实现一个简单的计算器应用,包括界面布局和代码实现。使用LinearLayout和TextView构建界面,通过设置约束条件布局按钮。代码部分实现按钮点击事件监听,遇到的主要挑战在于处理加减乘除的运算逻辑,特别是处理连续运算符和负数的情况。

20200617

今天实现了一个能加减乘除的简单计算器,界面大致如下:
在这里插入图片描述
首先是画界面,挺简单的,就是一个四个竖直布局的LinerLayout加一个TextView。我看到网上很多计算器都是用的EditView,个人感觉没有必要,毕竟只是个按键输入的计算器,又不需要自己键盘手动输入。但是有一点就是=号键,本来是在最后一个LinerLayout里面的,但是我不管用什么办法总是填不满空缺,会导致最后一列较其他列短一些,所以将它单独拉出来布局了。(手动设置高度应该可以做到,但是感觉可能无法适配不同机型。)

具体布局方式也很简单,所有的LinerLayout宽高都匹配文本(wrap_content),从左数第一列开始依次设置约束条件。为了给TextView留出空间,前三列都只需要设置start、end、bottom三个方向的约束。最后一列因为需要单独分出=号键的空间,所以设置start、top、end三个方向的约束,top对齐前三列就好了。最后是=号键,设置一下四个方位的约束,然后因为之前的LinerLayout设置了10dp的间距(layout_margin),所以也给=号键设置一下间距。至于LinerLayout里面的各个按钮,全部设置wrap_content就好了。这个主要是工作量大一点,每一个都要设置id和text。
在这里插入图片描述
在这里插入图片描述
然后是代码部分,也就是一大串的注册布局Button add =

### 开发一个简单计算器 App 的步骤 在 Android Studio 中开发一个简单计算器应用程序,可以通过以下方式实现。此过程涉及布局设计、组件声明以及逻辑处理。 #### 1. 创建项目 首先,在 Android Studio 中创建一个新的项目,选择“Empty Activity”模板,并命名为“SimpleCalculator”[^2]。 #### 2. 设计布局文件 在 `res/layout/activity_main.xml` 文件中,使用线性布局(LinearLayout)和网格布局(GridLayout)来设置界面。具体代码如下: ```xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <!-- 显示结果的文本框 --> <EditText android:id="@+id/resultEditText" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="right" android:inputType="numberDecimal" /> <!-- 网格布局用于按钮 --> <GridLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:columnCount="4" android:rowCount="5"> <!-- 数字和运算符按钮 --> <Button android:id="@+id/btn7" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_columnSpan="1" android:layout_rowSpan="1" android:text="7" /> <Button android:id="@+id/btn8" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_columnSpan="1" android:layout_rowSpan="1" android:text="8" /> <Button android:id="@+id/btn9" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_columnSpan="1" android:layout_rowSpan="1" android:text="9" /> <Button android:id="@+id/btnDivide" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_columnSpan="1" android:layout_rowSpan="1" android:text="/" /> <!-- 其他按钮省略 --> </GridLayout> </LinearLayout> ``` #### 3. 实现逻辑处理 在 `MainActivity.java` 文件中,获取组件实例并处理用户输入和计算逻辑。以下是核心代码示例: ```java import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; public class MainActivity extends AppCompatActivity { private EditText resultEditText; private float numberBuffer = 0; private String operator = ""; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); resultEditText = findViewById(R.id.resultEditText); // 初始化数字按钮 Button btn7 = findViewById(R.id.btn7); btn7.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { resultEditText.setText(resultEditText.getText() + "7"); } }); // 初始化运算符按钮 Button btnDivide = findViewById(R.id.btnDivide); btnDivide.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { compute(); operator = "/"; resultEditText.setText(""); } }); // 其他按钮逻辑省略 } private void compute() { float number = Float.parseFloat(resultEditText.getText().toString()); if (operator.equals("/")) { numberBuffer /= number; } resultEditText.setText(String.valueOf(numberBuffer)); } } ``` #### 4. 测试与优化 运行应用程序并在模拟器或真实设备上进行测试,确保所有功能正常工作。可以进一步优化界面设计和用户体验[^1]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值