用 Android Studio 从零开发一个多功能计算器应用

06-02 1655阅读

简介

计算器是每个学习 Android 开发者必经的经典项目之一。本篇文章将带你创建一个功能更强大的计算器应用,支持基本的加减乘除运算、带小数点的输入以及更多操作符功能。通过这个项目,你将全面掌握 Android 的布局设计、事件处理和逻辑实现技巧。


一、功能设计

基础功能
  1. 支持基本运算:加、减、乘、除。
  2. 支持小数点输入:可以输入和计算小数。
  3. 实时显示结果:输入数字和符号后立即显示计算结果。
进阶功能
  1. 清除功能:重置当前计算状态。
  2. 百分比运算:支持百分比的简单操作。
  3. 正负号切换:支持正负数输入。

二、项目创建与布局设计

1. 创建新项目
  • 打开 Android Studio,点击 New Project。
  • 选择 Empty Activity 模板,命名项目为 AdvancedCalculator。
  • 选择编程语言为 Java 或 Kotlin。
    2. 布局设计

    打开 res/layout/activity_main.xml 文件,设计用户界面。

    完整布局代码:

        
        
        
        
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
        
    
    

    样式:

        0dp
        wrap_content
        center
        1
        18sp
        16dp
    
    

    三、实现功能逻辑

    1. 声明变量

    在 MainActivity.java 中,定义需要的变量:

    public class MainActivity extends AppCompatActivity {
        private TextView tvDisplay;
        private double firstOperand = 0;
        private double secondOperand = 0;
        private String operator = "";
        private boolean isNewInput = true;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            tvDisplay = findViewById(R.id.tvDisplay);
            setupListeners();
        }
    }
    
    2. 设置按钮监听事件

    为每个按钮绑定点击事件:

    private void setupListeners() {
        findViewById(R.id.btn0).setOnClickListener(v -> appendNumber("0"));
        findViewById(R.id.btn1).setOnClickListener(v -> appendNumber("1"));
        findViewById(R.id.btn2).setOnClickListener(v -> appendNumber("2"));
        findViewById(R.id.btn3).setOnClickListener(v -> appendNumber("3"));
        findViewById(R.id.btn4).setOnClickListener(v -> appendNumber("4"));
        findViewById(R.id.btn5).setOnClickListener(v -> appendNumber("5"));
        findViewById(R.id.btn6).setOnClickListener(v -> appendNumber("6"));
        findViewById(R.id.btn7).setOnClickListener(v -> appendNumber("7"));
        findViewById(R.id.btn8).setOnClickListener(v -> appendNumber("8"));
        findViewById(R.id.btn9).setOnClickListener(v -> appendNumber("9"));
        findViewById(R.id.btnAdd).setOnClickListener(v -> setOperator("+"));
        findViewById(R.id.btnSubtract).setOnClickListener(v -> setOperator("-"));
        findViewById(R.id.btnMultiply).setOnClickListener(v -> setOperator("*"));
        findViewById(R.id.btnDivide).setOnClickListener(v -> setOperator("/"));
        findViewById(R.id.btnDot).setOnClickListener(v -> appendNumber("."));
        findViewById(R.id.btnEquals).setOnClickListener(v -> calculate());
        findViewById(R.id.btnClear).setOnClickListener(v -> clearAll());
        findViewById(R.id.btnSign).setOnClickListener(v -> toggleSign());
        findViewById(R.id.btnPercent).setOnClickListener(v -> applyPercent());
    }
    
    3. 数字和操作符逻辑

    数字输入:

    private void appendNumber(String number) {
        if (isNewInput) {
            tvDisplay.setText("");
            isNewInput = false;
        }
        tvDisplay.append(number);
    }
    

    设置操作符:

    private void setOperator(String op) {
        firstOperand = Double.parseDouble(tvDisplay.getText().toString());
        operator = op;
        isNewInput = true;
    }
    
    4. 计算结果
    private void calculate() {
        secondOperand = Double.parseDouble(tvDisplay.getText().toString());
        double result = 0;
        switch (operator) {
            case "+":
                result = firstOperand + secondOperand;
                break;
            case "-":
                result = firstOperand - secondOperand;
                break;
            case "*":
                result = firstOperand * secondOperand;
                break;
            case "/":
                if (secondOperand != 0) {
                    result = firstOperand / secondOperand;
                } else {
                    tvDisplay.setText("Error");
                    return;
                }
                break;
        }
        tvDisplay.setText(String.valueOf(result));
        isNewInput = true;
    }
    
    5. 清除功能
    private void clearAll() {
        firstOperand = 0;
        secondOperand = 0;
        operator = "";
        tvDisplay.setText("0");
        isNewInput = true;
    }
    
    6. 其他功能

    百分比:

    private void applyPercent() {
        double current = Double.parseDouble(tvDisplay.getText().toString());
        tvDisplay.setText(String.valueOf(current / 100));
        isNewInput = true;
    }
    

    **正负号

    切换:**

    private void toggleSign() {
        double current = Double.parseDouble(tvDisplay.getText().toString());
        tvDisplay.setText(String.valueOf(-current));
    }
    

    四、运行与测试

    1. 运行项目

      点击 Android Studio 的 Run 按钮,在模拟器或真实设备上测试应用。

    2. 测试功能

      验证加减乘除、百分比、正负切换等功能是否正确。


    五、总结

    通过本文的项目开发,你学习了以下内容:

    1. 使用 Android Studio 创建用户界面。
    2. 在 Android 中处理按钮点击事件。
    3. 实现计算器的核心逻辑,包括实时计算和错误处理。

    扩展这个项目,你可以添加更多高级功能,如历史记录、科学计算模式等。继续尝试,相信你会开发出更复杂、更实用的应用!

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

目录[+]

取消
微信二维码
微信二维码
支付宝二维码