废话不多说,下图是计算器截图(布局是可以更改的):

Android Studio制作简易计算器源代码及详解_第1张图片

下面是我创建计算器项目的代码目录结构:

Android Studio制作简易计算器源代码及详解_第2张图片

下面分享的是activity_main.xml中的源代码:

<?xml version="1.0" encoding="utf-8"?>            

上述代码是Android的布局文件,而布局的颜色我在res>drawable中创建(上面有截图自己队长照着设置就好了),下面是后端MainActivity.java文件:

package com.example.dujiang.calculatordemo;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.EditText;public class MainActivity extends AppCompatActivity implements View.OnClickListener {    Button btn_0 ;    Button btn_1;    Button btn_2;    Button btn_3 ;    Button btn_4 ;    Button btn_5 ;    Button btn_6 ;  //数字按钮    Button btn_7 ;    Button btn_8 ;    Button btn_9 ;    Button btn_point ;  //小数点按钮    Button btn_clear ;    Button btn_del ;    Button btn_pluse ;    Button btn_minus ;    Button btn_multiply ;    Button btn_divide ;    Button btn_equle ;    EditText et_input ;    boolean clear_flag ;//清空标识    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        btn_0 = (Button) findViewById(R.id.btn_0) ;        btn_1 = (Button) findViewById(R.id.btn_1) ;        btn_2 = (Button) findViewById(R.id.btn_2) ;        btn_3 = (Button) findViewById(R.id.btn_3) ;        btn_4 = (Button) findViewById(R.id.btn_4) ;        btn_5 = (Button) findViewById(R.id.btn_5) ;        btn_6 = (Button) findViewById(R.id.btn_6) ;        btn_7 = (Button) findViewById(R.id.btn_7) ;        btn_8 = (Button) findViewById(R.id.btn_8) ;        btn_9 = (Button) findViewById(R.id.btn_9) ;        btn_point = (Button) findViewById(R.id.btn_point) ;        btn_clear = (Button) findViewById(R.id.btn_clear) ;        btn_del = (Button) findViewById(R.id.btn_del) ;        btn_pluse = (Button) findViewById(R.id.btn_pluse) ;        btn_minus = (Button) findViewById(R.id.btn_minus) ;        btn_multiply = (Button) findViewById(R.id.btn_multiply) ;        btn_divide = (Button) findViewById(R.id.btn_divide) ;        btn_equle = (Button) findViewById(R.id.btn_equal) ;//以上实例化按钮        et_input = (EditText) findViewById(R.id.et_input);  //实例化之后的显示屏        btn_0.setOnClickListener(this);        btn_1.setOnClickListener(this);        btn_2.setOnClickListener(this);        btn_3.setOnClickListener(this);        btn_4.setOnClickListener(this);        btn_5.setOnClickListener(this);        btn_6.setOnClickListener(this);        btn_7.setOnClickListener(this);        btn_8.setOnClickListener(this);        btn_9.setOnClickListener(this);        btn_point.setOnClickListener(this);        btn_clear.setOnClickListener(this);        btn_del.setOnClickListener(this);        btn_pluse.setOnClickListener(this);        btn_minus.setOnClickListener(this);        btn_multiply.setOnClickListener(this);        btn_divide.setOnClickListener(this);        btn_equle.setOnClickListener(this);        //设置以上按钮的点击事件    }    @Override    public void onClick(View v) {        String str = et_input.getText().toString();        switch (v.getId()) {            case R.id.btn_0:            case R.id.btn_1:            case R.id.btn_2:            case R.id.btn_3:            case R.id.btn_4:            case R.id.btn_5:            case R.id.btn_6:            case R.id.btn_7:            case R.id.btn_8:            case R.id.btn_9:            case R.id.btn_point:                if (clear_flag) {                    clear_flag =false ;                    str ="" ;                    et_input.setText("");                }                et_input.setText(str + ((Button)v).getText());                break ;            case R.id.btn_pluse:            case R.id.btn_minus:            case R.id.btn_multiply:            case R.id.btn_divide:                if (clear_flag) {                    clear_flag =false ;                    str ="" ;                    et_input.setText("");                }                et_input.setText(str+ " " + ((Button)v).getText()+" ");                break;            case R.id.btn_del:                if (clear_flag) {                    clear_flag =false ;                    str ="" ;                    et_input.setText("");                }else if (str!=null&&!str.equals("")){                    et_input.setText(str.substring(0,str.length()-1));                }                break;            case R.id.btn_clear:                clear_flag =false ;                str ="" ;                et_input.setText("");            case R.id.btn_equal:                getResult();                break ;        }    }   /* 单独的调用运算结果   *   *   * */    private void getResult(){        String exp = et_input.getText().toString();        if (exp == null||exp.equals("")){            return;        }        if(!exp.contains(" ")) {           return;        }        if (clear_flag){            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 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){                    result = 0 ;                }else {                    result = d1/d2 ;                }            }            if (s1.contains(".")&&s2.contains(".")) {                int r = (int) result;                et_input.setText(r+"");            }else {                et_input.setText(result+"");            }        }else if (!s1.equals("")&&s2.equals("")){            et_input.setText(exp);        }else if (s1.equals("")&&!s2.equals("")){            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 (s2.contains(".")) {                int r = (int) result;                et_input.setText(r+"");            }else {                et_input.setText(result+"");            }        }else {            et_input.setText("");        }    }}


最后注意AndroidMainfest.xml中的相关设置,代码如下:

<?xml version="1.0" encoding="utf-8"?>                                                                                

布局可以随意更改,只要对应上 android:id=""   就万事大吉!

很适合练练手感和脑力的小程序,有一些小细节,就靠各位在练习中总结了,我就不一一赘述了,感谢各位看客!!!

更多相关文章

  1. Android按钮事件响应顺序
  2. android按钮的操作例子,简单大家看明白_基础篇
  3. 布局管理器
  4. 如何实现Android 布局背景模糊化处理
  5. Android软键盘弹出时把布局顶上去,控件乱套解决方法
  6. Android五大布局对象
  7. android线性布局LinerLayout

随机推荐

  1. UiAutomator通过ant实现快速调试
  2. Android(安卓)使用OpenGLES 的粒子系统
  3. Android 实现通话监听
  4. MAC 配置android adb命令的环境变量
  5. Android & IOS & Chrome & Firefox OS哪
  6. Android AdapterView 源码分析以及其相关
  7. Android:控件anim动画效果xml文件属性值含
  8. Android ADB常用命令总结-续
  9. android ImageView 几点总结
  10. 十大最佳外国Android游戏下载平台