计算器androidstudio代码,Androidstudio实现简单计算器
本⽂实例为⼤家分享了Android studio实现简单计算器的具体代码,供⼤家参考,具体内容如下
需求分析
在Android studio中设计并实现⼀个简单的计算器,实现连续的加减乘除运算。
界⾯设计
采⽤⽹格GridLayout布局,设计了⼀个6⾏4列的⽹格,最上边是⼀个EditText⽤来显⽰⽤户输⼊的运算数字和运算符,以及相关的运算结果,其占4列,⽂本框⼤⼩为50dip;依次往下的界⾯分别设置了数字和运算符以及操作的按钮,各⾏各列的每个按钮的⼤⼩均设为26sp。
编程分析
设计了两个⽂件:1、控制⽂件MainActivity.java,完成按钮的处理事件以及实现加减乘除及其结果输出的功能,主要包括:显⽰
l定义的⽤户界⾯;与⽤户界⾯程序中的组件建⽴关联,并分别为每个组件注册并实现
监听接⼝;根据具体输⼊和条件进⾏运算并显⽰结果等。2、布局⽂件l,完成计算器界⾯的⽹格布局设计,包括了⼀个⽂本编辑框和18个按钮。
具体进度
第1天:对简单计算器进⾏系统的功能和界⾯分析,形成⾃⼰⼤致的设计想法,然后根据⽼师建议的书本程序以及⾃⼰上⽹搜索的安卓项⽬的编程,系统地总结出⾃⼰编程的过程以及开始理解各类代码。由于对移动编程这门课还不是很熟悉,所以对其中编程部分的理解为⾃⼰往后调试程序有很⼤的帮助。
第2天:开始敲代码。由于第⼀次在Android studio上⾯编程,对这个软件的各项操作都不熟悉,所以刚开始就在软件摸索上⾯花费了较多的时间。由于此次设计的界⾯⽼师给了我们书本的模板,所以我选择从简单的布局⽂件的设计开始编程,⼀⽅⾯也⽅便⾃⼰熟悉Android studio。
简易安卓app开发第3天:开始根据⾃⼰的理解和想法开始设计并调试控制⽂件的程序。由于这部分设计到多种函数以及接⼝的设计以及实现,运⽤的是java,由于对过去学的java语⾔有些遗忘了,⽽且现在还要涉及关于新知识.xml的结合,所以在这部分花的时间⽐较长。期间出现了较多的bug,虽然调试起来很吃⼒,但最终⼀点点把程序调试成功还是挺开⼼的。
第4天:原本以为程序调试成功就好了,但是没想到最后在AVD的各种选择和配置、调⽤问题上花了更多的时间和精⼒。由于第⼀次接触Android studio,所以对其中很多配置都不了解,也是第⼀次听说AVD,在最终运⾏这个计算器APP的时候在AVD的选择和配置失败上卡了较长时间,通过百度以及请教同学,⼀步步地终于把最后这⼀步做好了。⾄此便完成了⾃⼰第⼀个简单APP的开发。
⼼得体会
这是我的第⼀个安卓项⽬开发,这个计算器代码的逻辑都⽐较简单,然后其功能也很不完善,是⼀个⽐较粗糙的设计。即便如此,由于⾃⼰对Android studio应⽤程序设计的知识掌握得也不是很好,编程能⼒也⽐较弱,所以还是花了⽐较多的时间去研究和体会。但是,也正因为期间遇到的很多困难和bug,在⾃⼰⼀点点去设法解决的过程中也对这门课程的理论知识以及相关操作都有了更清晰的了解,现在明⽩了其中和⼤致框架和原理,为往后深⼊的学习和编程做好多⼀点基础巩固。
控制⽂件MainActivity.java
ample.df.firstapp;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button; //引⽤按钮组件
import android.widget.EditText; //引⽤⽂本编辑框组件
TextUtils; //TextUtils类⽤于处理字符串
//定义实现监听接⼝的类MainActivity
public class MainActivity extends AppCompatActivity implements View.OnClickListener { //声明17个按钮和⼀个⽂本编辑框
Button bt_num0,bt_num1,bt_num2,bt_num3,bt_num4,bt_num5,bt_num6,bt_num7,
bt_num8,bt_num9,bt_delete,bt_div,bt_mult,bt_minus,bt_plus,bt_equal,bt_dot,bt_clear; private EditText et_calc;
@Override
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_main); //显⽰l定义的⽤户界⾯initViewAndListener(); //调⽤函数initViewAndListener()
}
//定义函数initViewAndListener(),⽤于与⽤户界⾯程序中的组件建⽴关联,并分别注册监听接⼝private void initViewAndListener() {
bt_num0 = (Button)findViewById(R.id.bt_num0);
bt_num0.setOnClickListener(this);
bt_num1 = (Button)findViewById(R.id.bt_num1);
bt_num1.setOnClickListener(this);
bt_num2 =(Button) findViewById(R.id.bt_num2);
bt_num2.setOnClickListener(this);
bt_num3 = (Button)findViewById(R.id.bt_num3);
bt_num3.setOnClickListener(this);
bt_num4 = (Button)findViewById(R.id.bt_num4);
bt_num4.setOnClickListener(this);
bt_num5 = (Button)findViewById(R.id.bt_num5);
bt_num5.setOnClickListener(this);
bt_num6 = (Button)findViewById(R.id.bt_num6);
bt_num6.setOnClickListener(this);
bt_num7 = (Button)findViewById(R.id.bt_num7);
bt_num7.setOnClickListener(this);
bt_num8 = (Button)findViewById(R.id.bt_num8);
bt_num8.setOnClickListener(this);
bt_num9 = (Button)findViewById(R.id.bt_num9);
bt_num9.setOnClickListener(this);
bt_delete = (Button)findViewById(R.id.bt_delete);
bt_delete.setOnClickListener(this);
bt_div = (Button)findViewById(R.id.bt_div);
bt_div.setOnClickListener(this);
bt_mult = (Button)findViewById(R.id.bt_mult);
bt_mult.setOnClickListener(this);
bt_minus = (Button)findViewById(R.id.bt_minus);
bt_minus.setOnClickListener(this);
bt_plus = (Button)findViewById(R.id.bt_plus);
bt_plus.setOnClickListener(this);
bt_equal = (Button)findViewById(R.id.bt_equal);
bt_equal.setOnClickListener(this);
et_calc = (EditText)findViewById(_calc);
bt_dot = (Button)findViewById(R.id.bt_dot);
bt_dot.setOnClickListener(this);
bt_clear = (Button)findViewById(R.id.bt_clear);
bt_clear.setOnClickListener(this);
}
private boolean lastIsOperator; //记录当前是否进⾏计算操作
private String lastOperators = ""; //记录上⼀次进⾏计算操作的结果
private double firstNumber = 0D; //定义并初始化第⼀次的取值
private double sencondNumber = 0D; //定义并初始化第⼆次的取值
//onClick()⽅法,触发OnClickListener接⼝
public void onClick(View v) {
String currentText = Text().toString(); //获取当前⽂本编辑框的内容
String operatorNumber = ""; //定义并初始化操作数为””
if (currentText.equals("0")) { //若当前输⼊数为0则设置⽂本编辑框为””
et_calc.setText("");
}
operatorNumber = Text().toString(); //根据编辑框的内容更改操作数值
if(!lastOperators.equals("")) //判断上⼀次操作的数是否为空,⾮空则建⽴索引,随之修改当前操作数{
int index = operatorNumber.lastIndexOf(lastOperators);
operatorNumber = operatorNumber.substring(index+1);
}
//分别获取按钮的内容⾄⽂本编辑框
switch (v.getId()) {
case R.id.bt_num0:
et_calc.setText(Text() + "0");
lastIsOperator = false;
break;
case R.id.bt_num1:
et_calc.setText(Text() + "1");
lastIsOperator = false;
break;
case R.id.bt_num2:
et_calc.setText(Text() + "2"); lastIsOperator = false;
break;
case R.id.bt_num3:
et_calc.setText(Text() + "3"); lastIsOperator = false;
break;
case R.id.bt_num4:
et_calc.setText(Text() + "4"); lastIsOperator = false;
break;
case R.id.bt_num5:
et_calc.setText(Text() + "5"); lastIsOperator = false;
break;
case R.id.bt_num6:
et_calc.setText(Text() + "6"); lastIsOperator = false;
break;
case R.id.bt_num7:
et_calc.setText(Text() + "7"); lastIsOperator = false;
break;
case R.id.bt_num8:
et_calc.setText(Text() + "8"); lastIsOperator = false;
break;
case R.id.bt_num9:
et_calc.setText(Text() + "9"); lastIsOperator = false;
break;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论