安卓实现简单版计算器——移动端课程学习开发日志

安卓实现简单版计算器——移动端课程学习开发日志

布局如图:
安卓实现简单版计算器——移动端课程学习开发日志_第1张图片

实现步骤:

新建一个空活动的项目

​ 这里建立一个空活动的项目就好

编写布局

​ 这里我们整体的布局使用Linear Layout布局,显示区使用Text View,计算器的按钮区域使用Grid Layout布局,里面的数字使用Button空间,并且为各个按钮和TextView添加id

xml关键代码(省略很多)

<LinearLayout>
    
	<LinearLayout>
    	<TextView>TextView>
    LinearLayout>	
    <LinearLayout>
        
    	<Button />
        
        <Button />
    LinearLayout>
    
    <GridLayout
       android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:rowCount="4"
        android:columnCount="4"
    >
        
        <Buton />
    GridLayout>
LinearLayout>
获取视图的各种按钮的实例,建立监听函数

​ 在MainActivity类中进行逻辑操作

  • 继承父类super.onCreate(savedInstanceState);

  • 設置布局layoutsetContentView(R.layout.activity_main);

  • 获取各种数字按钮、操作符按钮、结果显示区域的实例(findViewById(R.id.xxx)

  • 設置实例的监听器监听点击了按钮之后执行相应的操作,比如,输出运算结果,将点击的按钮数字输出到显示区

  • 编写update方法,更新结果显示区内容

//遍历集合 转化为String类型方便显示
        String str = "";
        for(char c : strs){
            str +=c;
        }
        //str!=''是因为Double.valueof不是转化“”这个字符串
        if (x=='0'&&str!="") {
            textView.setText(str);
            current = Double.valueOf(str);
        }
        //第一次输入的赋值,不这样做下面的last = sum 会产生错误结果
        if (isFirst){sum = current;}
        //进行符号判断并在textview显示符号
        if (x == '-'){
            textView.setText("-");
            strs = new ArrayList<>();isFirst = false;
        }else if (x == '+'){
            textView.setText("+");
            strs = new ArrayList<>();isFirst = false;
        }else if (x == '×'){
            textView.setText("×");
            strs = new ArrayList<>();isFirst = false;
        }else if (x == '÷'){
            textView.setText("÷");
            strs = new ArrayList<>();isFirst = false;
        }

        /**
         * lastChar!=‘1’是为了保证在获得符号才进入计算
         * isYuansuan 比如要输入11x11 这个运算  因为我们这个函数是每次输入一个char(数字)就会更新一次,我们希望
         *            不会再输入到11x1 的时候 就进入这个运算判断,而是等到我们输入到11x11 后面再接一个符号才运算,
         *            isYunsuan也是在这个时候为true的,这样才能保证运算正确
         */
        if (lastChar!='1'&&isYunsuan&&x!='0'){
            //计算值
            if (lastChar=='-'){
                sum = last - current;
            }else if (lastChar=='+'){
                sum =  last + current;
            }else if (lastChar=='×'){
                sum = (last * current);
            }else if (lastChar=='÷'){
                sum = (last / current);
            }
            isYunsuan = false;//运算完成后置位false

        }

        last = sum;//保存当前计算结果到last 用于下一次的计算
        if (x!='0') {
            lastChar = x;
            isYunsuan = true;
        }
        //当按‘=’的时候,进行输出结果
        if (x=='='){
            textView.setText(sum+"");
            lastChar = '1';
            strs = new ArrayList<>();
        }
    }
编写监听函数的逻辑,实现计算功能,并输出到显示区(TextView)中

点击数字时:

  1. 更新存储的字符串;

  2. 调用update方法;

点击±*/操作符时

调用updateView方法

你可能感兴趣的:(Android)