Android实现简易计算器小程序

发布时间:2019-08-08 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Android实现简易计算器小程序脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

本文实例为大家分享了AndROId实现简易计算器小程序的具体代码,供大家参考,具体内容如下

目标效果:

Android实现简易计算器小程序 

通过编写代码,可以实现整数和小数的加减乘除运算,以及删除和清空的功能。

1.页面中Button使用的是线性布局,最外边一个是父布局,第一行C,DEL,/,*为第一个子布局,第二行7,8,9,-为第二个子布局,第三行4,5,6,+为第三个子布局,第四五行为第四个子布局,第四个子布局中还有两个相当于是孙布局的级别,1,2,3为第一个孙布局,0和.为第二个孙布局,=在两个孙布局之外第四个子布局以内。因为计算器的水平竖直排列十分鲜明,所以可以用线性布局,当然也可以用表格布局来进行排布。

2.activITy_main.XMl页面用于存放所有控件。

activity_main.xML页面:

 <LinearLayout xmlns:android="http://schemas.android.COM/apk/res/android"   android:layout_width="fill_parent"   android:layout_marginTop="40dp"   android:layout_height="fill_parent"   android:orientation="vertical" >     <EditText     android:id="@+id/etInput"    android:layout_width="310dp"    android:layout_height="60dip"    android:editable="false"     //代表不能进行键盘输入    android:gravity="right"     //文字靠右边    android:layout_gravity="center"    android:background="@drawable/white_bg"/>  <!-- 设置输入框的背景,为一个xml文件 -->     <LinearLayout     android:layout_width="fill_parent"     android:layout_height="wrap_content"     android:layout_marginTop="5dp"     android:gravity="center_horizontal"     android:orientation="horizontal" >     <!-- 代表水平排布 -->          <Button     android:id="@+id/BTClear"     android:background="@drawable/white_select"  //设置按钮的背景,为一个xml文件     android:layout_width="75dp"     android:layout_height="60dp"     android:textSize="20sp"     android:text="C" />     <Button     android:id="@+id/btDel"     android:background="@drawable/white_select"     android:layout_marginLeft="5dp"     android:layout_width="75dp"     android:layout_height="60dp"     android:textSize="20sp"     android:text="DEL" />     <Button     android:id="@+id/btDivide"     android:background="@drawable/white_select"     android:layout_marginLeft="5dp"     android:layout_width="75dp"     android:layout_height="60dp"     android:textSize="20sp"     android:text="/" />     <Button     android:id="@+id/btMul"     android:background="@drawable/white_select"     android:layout_marginLeft="5dp"     android:layout_width="75dp"     android:layout_height="60dp"     android:textSize="20sp"     android:text="*" />   </LinearLayout>      <LinearLayout     android:layout_width="fill_parent"     android:layout_height="wrap_content"     android:layout_marginTop="5dp"     android:gravity="center_horizontal"     android:orientation="horizontal" >          <Button     android:id="@+id/btSeven"     android:background="@drawable/white_select"     android:layout_width="75dp"     android:layout_height="60dp"     android:textSize="20sp"     android:text="7" />     <Button     android:id="@+id/btEight"     android:background="@drawable/white_select"     android:layout_marginLeft="5dp"     android:layout_width="75dp"     android:layout_height="60dp"     android:textSize="20sp"     android:text="8" />     <Button     android:id="@+id/btNine"     android:background="@drawable/white_select"     android:layout_marginLeft="5dp"     android:layout_width="75dp"     android:layout_height="60dp"     android:textSize="20sp"     android:text="9" />     <Button     android:id="@+id/btJian"     android:background="@drawable/white_select"     android:layout_marginLeft="5dp"     android:layout_width="75dp"     android:layout_height="60dp"     android:textSize="20sp"     android:text="-" />   </LinearLayout>      <LinearLayout     android:layout_width="fill_parent"     android:layout_height="wrap_content"     android:layout_marginTop="5dp"     android:gravity="center_horizontal"     android:orientation="horizontal" >          <Button     android:id="@+id/btFour"     android:background="@drawable/white_select"     android:layout_width="75dp"     android:layout_height="60dp"     android:textSize="20sp"     android:text="4" />     <Button     android:id="@+id/btFive"     android:background="@drawable/white_select"     android:layout_marginLeft="5dp"     android:layout_width="75dp"     android:layout_height="60dp"     android:textSize="20sp"     android:text="5" />     <Button     android:id="@+id/btSix"     android:background="@drawable/white_select"     android:layout_marginLeft="5dp"     android:layout_width="75dp"     android:layout_height="60dp"     android:textSize="20sp"     android:text="6" />     <Button     android:id="@+id/btJia"     android:background="@drawable/white_select"     android:layout_marginLeft="5dp"     android:layout_width="75dp"     android:layout_height="60dp"     android:textSize="20sp"     android:text="+" />   </LinearLayout>      <LinearLayout     android:layout_width="fill_parent"     android:layout_height="wrap_content"     android:layout_marginTop="5dp"     android:gravity="center_horizontal"     android:orientation="horizontal" >     <LinearLayout     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:orientation="vertical" >       <LinearLayout      android:layout_width="wrap_content"      android:layout_height="wrap_content"      android:orientation="horizontal" >      <Button      android:id="@+id/btOne"      android:background="@drawable/white_select"      android:layout_width="75dp"      android:layout_height="60dp"      android:textSize="20sp"      android:text="1" />      <Button      android:id="@+id/btTwo"      android:background="@drawable/white_select"      android:layout_marginLeft="5dp"      android:layout_width="75dp"      android:layout_height="60dp"      android:textSize="20sp"      android:text="2" />      <Button      android:id="@+id/btThree"      android:background="@drawable/white_select"      android:layout_marginLeft="5dp"      android:layout_width="75dp"      android:layout_height="60dp"      android:textSize="20sp"      android:text="3" />       </LinearLayout>       <LinearLayout      android:layout_width="wrap_content"      android:layout_height="wrap_content"      android:layout_marginTop="5dp"      android:orientation="horizontal" >      <Button      android:id="@+id/btZero"      android:background="@drawable/white_select"      android:layout_width="155dp"      android:layout_height="60dp"      android:textSize="20sp"      android:text="0" />      <Button      android:id="@+id/btPoint"      android:background="@drawable/white_select"      android:layout_marginLeft="5dp"      android:layout_width="75dp"      android:layout_height="60dp"      android:textSize="20sp"      android:text="." />      </LinearLayout>      </LinearLayout>      <Button      android:layout_width="75dp"       android:background="@drawable/orange_select"      android:layout_height="125dp"      android:text="="      android:layout_marginLeft="5dp"      android:textSize="20sp"      android:gravity="center"      android:id="@+id/btEqu">            </Button>      </LinearLayout> </LinearLayout>

2.等号按钮和其余按钮的背景及点击效果不同。orange_select.xml页面是等号按钮的背景页面。

orange_select.xml页面:

 <&#63;xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" >   <item android:drawable="@drawable/orange_bg" android:state_Pressed="false"></item> <!-- 不点击时背景为orange_bg.xml页面的效果 -->  <item android:drawable="@drawable/khaki_bg" android:state_PRessed="true"></item>  <!-- 点击时背景为khaki_bg.xml页面的效果 --> </selector>

3.orange_bg.xml页面:

 <?xml version="1.0" encoding="utf-8"?> <Shape xmlns:android="http://schemas.android.com/apk/res/android" >   <corners android:radius="5dp"/>  <solid android:color="#ff9900"/> </shaPE>

4.khaki.xml页面:

 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" >   <corners android:radius="5dp"/>  <solid android:color="#cc6600"/> </shape>

5.white_select.xml页面是其余按钮的背景页面。

white_select页面:

 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" >   <item android:drawable="@drawable/white_bg" android:state_pressed="false"></item>  <item android:drawable="@drawable/gray_bg" android:state_pressed="true"></item> </selector>

6.white_bg.xml页面:

 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" >   <corners android:radius="5dp"/>  <solid android:color="#ffffff"/> </shape>

7.gray_bg.xml页面:

 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" >   <corners android:radius="5dp"/>  <solid android:color="#cccccc"/> </shape>

8.MainActivity.java处理按钮的点击事件以及数值运算。

MainActivity.java页面:

 package com.example.jisuanqi;   import android.os.Bundle; import android.app.Activity; import android.util.LOG; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText;   public class MainActivity extends Activity implements OnClickListener{    private EditText etInput;  //实例输入框  private Button btOne;   //实例所有按钮  private Button btTwo;  private Button btThree;  private Button btFour;  private Button btFive;  private Button btSix;  private Button btSeven;  private Button btEight;  private Button btNine;  private Button btZero;  private Button btPoint;  private Button btJia;  private Button btJian;  private Button btMul;  private Button btDivide;  private Button btEqu;  private Button btClear;  private Button btDel;  boolean clear_flag;   //清空标识,当用户点击等号完成一次运算时进行清空  @override  protected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.activity_main);    etInput=(EditText) findViewById(R.id.etInput);  //获取输入框的id  btOne=(Button) findViewById(R.id.btOne);   //获取所有按钮的id  btTwo=(Button) findViewById(R.id.btTwo);  btThree=(Button) findViewById(R.id.btThree);  btFour=(Button) findViewById(R.id.btFour);  btFive=(Button) findViewById(R.id.btFive);  btSix=(Button) findViewById(R.id.btSix);  btSeven=(Button) findViewById(R.id.btSeven);  btEight=(Button) findViewById(R.id.btEight);  btNine=(Button) findViewById(R.id.btNine);  btZero=(Button) findViewById(R.id.btZero);  btPoint=(Button) findViewById(R.id.btPoint);  btJia=(Button) findViewById(R.id.btJia);  btJian=(Button) findViewById(R.id.btJian);  btMul=(Button) findViewById(R.id.btMul);  btDivide=(Button) findViewById(R.id.btDivide);  btEqu=(Button) findViewById(R.id.btEqu);  btClear=(Button) findViewById(R.id.btClear);  btDel=(Button) findViewById(R.id.btDel);    btOne.setOnClickListener(this);  //设置点击事件,因为MainActivity已经实现了OnClickListener接口,所以只需要参数只需要传this  btTwo.setOnClickListener(this);  btThree.setOnClickListener(this);  btFour.setOnClickListener(this);  btFive.setOnClickListener(this);  btSix.setOnClickListener(this);  btSeven.setOnClickListener(this);  btEight.setOnClickListener(this);  btNine.setOnClickListener(this);  btZero.setOnClickListener(this);  btPoint.setOnClickListener(this);  btJia.setOnClickListener(this);  btJian.setOnClickListener(this);  btMul.setOnClickListener(this);  btDivide.setOnClickListener(this);  btEqu.setOnClickListener(this);  btClear.setOnClickListener(this);  btDel.setOnClickListener(this);  }    @Override  public boolean onCreateOptionsMenu(Menu menu) {  // Inflate the menu; this adds items to the action bar if it is present.  getMenuInflater().inflate(R.menu.main, menu);  return true;  }    @Override  public void onClick(View v) {  // TODO Auto-generated method stub  String etinput=etInput.getText().toString(); //获取输入框中的内容并转化为String类型  switch(v.getId()){        //判断点击按钮的id  case R.id.btZero:  case R.id.btOne:  case R.id.btTwo:  case R.id.btThree:  case R.id.btFour:  case R.id.btFive:  case R.id.btSix:  case R.id.btSeven:  case R.id.btEight:   case R.id.btNine:  case R.id.btPoint:  if(clear_flag){   clear_flag=false;   etinput="";   etInput.setText("");  }  etInput.setText(etinput+((Button)v).getText()); //点击数字和小数点直接显示内容  break;  case R.id.btJia:  case R.id.btJian:  case R.id.btMul:  case R.id.btDivide:  if(clear_flag){   clear_flag=false;   etinput="";   etInput.setText(""); //当clear_flag为true时进入if语句,并可以清空,代表用户点击了等于号完成一次运算,并使clear_flag变成了true  }  etInput.setText(etinput+" "+((Button)v).getText()+" "); //点击运算符也是直接显示,但是为了后边运算要在运算符两侧加上空格  break;  case R.id.btDel:  if(clear_flag){   clear_flag=false;   etinput="";   etInput.setText("");  }else if(etinput!=null&&!etinput.equals("")){   etInput.setText(etinput.substring(0,etinput.length()-1)); //如果输入框内容不为空,则去掉最后一位  }  break;  case R.id.btClear:  clear_flag=false;  etinput="";  etInput.setText(""); //直接设置输入框为空  break;  case R.id.btEqu:  getResult();   //点击等号调用getResult()方法  break;  }  }  public void getResult(){  String exp=etInput.getText().toString(); //获取输入框的内容  if(exp==null||exp.equals("")){  return;  }  if(!exp.contains(" ")){     //判断输入框是否包含空格,也就是没有点击运算符  return;  }  if(clear_flag){       //点击等号clear_flag为true,当再点击别的数字或运算符时才会变为false,如果连续点击等号,则第二次点击无效,直接返回  clear_flag=false;  return;  }  clear_flag=true;  double result=0;  String s1=exp.substring(0,exp.indexOf(" "));      //运算符前面的字符串  String op=exp.substring(exp.indexOf(" ")+1,exp.indexOf(" ")+2); //运算符,是根据运算符前边的空格计算的  String s2=exp.substring(exp.indexOf(" ")+3);      //运算符后边的字符串  if(!s1.equals("")&&!s2.equals("")){  double d1=Double.parseDouble(s1);       //将字符串转换为double类型  double d2=Double.parseDouble(s2);  if(op.equals("+")){  result=d1+d2;  }else if(op.equals("-")){  result=d1-d2;  }else if(op.equals("*")){  result=d1*d2;  }else if(op.equals("/")){  if(d2==0){   //判断除数为0的情况   result=0;  }else{   result=d1/d2;  }  }  if(!s1.contains(".")&&!s2.contains(".")&&!op.equals("/")){ //如果两个数都是整形,那么结果就需要显示为整数  int r=(int)result;          //将String型计算结果强制转换为整形  etInput.setText(r+"");  }else{  etInput.setText(result+"");  }  }else if(!s1.equals("")&&s2.equals("")){   //如果用户输入一个数字就点击运算符,那么将不计算  etInput.setText(exp);  }else if(s1.equals("")&&!s2.equals("")){   //如果一上来就点击运算符并输入第二个数,那么第一个数默认为0  double d2=Double.parseDouble(s2);  if(op.equals("+")){  result=0+d2;  }else if(op.equals("-")){  result=0-d2;  }else if(op.equals("*")){  result=0;  }else if(op.equals("/")){  result=0;  }  if(!s1.contains(".")&&!s2.contains(".")&&!op.equals("/")){  int r=(int)result;  etInput.setText(r+"");  }else{  etInput.setText(result+"");  }  }else{  etInput.setText("");  }  }   }

9.程序完成就可以运行了。因为是简易计算器,所以还不能进行连续的加减乘除。

android教程
脚本网站
android studio

脚本宝典总结

以上是脚本宝典为你收集整理的Android实现简易计算器小程序全部内容,希望文章能够帮你解决Android实现简易计算器小程序所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。