无聊写了个硬核计算器练练手
思路:
在这里我是使用了四个TextView,其中第一个TextView是用来显示我们进行计算的第一个数,第二个TextView是用来显示计算符号,第三个是进行计算的第二个数,第四个是来显示计算的等号,而最后一个是用来显示计算答案的

首先布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="match_parent"
              android:layout_height="match_parent">
    <LinearLayout
            android:layout_width="fill_parent"
            android:background="#ffff8080"
            android:orientation="horizontal"
            android:layout_height="wrap_content">
    <TextView
            android:textSize="50sp"
            android:id="@+id/et_input"
            android:layout_width="wrap_content"
            android:layout_height="60dp"
            android:layout_marginRight="20dp" />
    <TextView
            android:textSize="50sp"
            android:id="@+id/et_option"
            android:layout_width="wrap_content"
            android:layout_height="60dp"
            android:layout_marginRight="20dp" />
        <TextView
                android:textSize="50sp"
                android:id="@+id/et_input2"
                android:layout_width="wrap_content"
                android:layout_height="60dp"
                android:layout_marginRight="20dp" />
        <TextView
                android:textSize="50sp"
                android:id="@+id/et_eq"
                android:layout_width="wrap_content"
                android:layout_gravity="center"
                android:layout_height="wrap_content"
                android:layout_marginRight="20dp" />
    </LinearLayout>

    <LinearLayout
            android:gravity="center_horizontal"
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="30dp">
        <Button
                android:textSize="30sp"
                android:id="@+id/btn_clr"
                android:paddingRight="15sp"
                android:paddingBottom="15sp"
                android:layout_width="80dp"
                android:layout_height="80dp"
                android:text="C" />
        <Button
                android:textSize="30sp"
                android:id="@+id/btn_del"
                android:paddingRight="15sp"
                android:paddingBottom="15sp"
                android:layout_width="80dp"
                android:layout_height="80dp"
                android:layout_marginLeft="10dp"
                android:text="D"/>
        <Button
                android:textSize="30sp"
                android:id="@+id/btn_div"
                android:paddingRight="15sp"
                android:paddingBottom="15sp"
                android:layout_width="80dp"
                android:layout_height="80dp"
                android:layout_marginLeft="10dp"
                android:text="÷" />
        <Button
                android:textSize="30sp"
                android:id="@+id/btn_mul"
                android:paddingRight="15sp"
                android:paddingBottom="15sp"
                android:layout_width="80dp"
                android:layout_height="80dp"
                android:layout_marginLeft="10dp"
                android:text="×" />
    </LinearLayout>
    <LinearLayout
            android:gravity="center_horizontal"
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp">
        <Button
                android:textSize="30sp"
                android:id="@+id/btn_7"
                android:paddingRight="15sp"
                android:paddingBottom="15sp"
                android:layout_width="80dp"
                android:layout_height="80dp"
                android:text="7" />
        <Button
                android:textSize="30sp"
                android:id="@+id/btn_8"
                android:paddingRight="15sp"
                android:paddingBottom="15sp"
                android:layout_width="80dp"
                android:layout_height="80dp"
                android:layout_marginLeft="10dp"
                android:text="8" />
        <Button
                android:textSize="30sp"
                android:id="@+id/btn_9"
                android:paddingRight="15sp"
                android:paddingBottom="15sp"
                android:layout_width="80dp"
                android:layout_height="80dp"
                android:layout_marginLeft="10dp"
                android:text="9" />
        <Button
                android:textSize="30sp"
                android:id="@+id/btn_sub"
                android:paddingRight="15sp"
                android:paddingBottom="15sp"
                android:layout_width="80dp"
                android:layout_height="80dp"
                android:layout_marginLeft="10dp"
                android:text="-" />
    </LinearLayout>
    <LinearLayout
            android:gravity="center_horizontal"
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp">
        <Button
                android:textSize="30sp"
                android:id="@+id/btn_4"
                android:paddingRight="15sp"
                android:paddingBottom="15sp"
                android:layout_width="80dp"
                android:layout_height="80dp"
                android:text="4" />
        <Button
                android:textSize="30sp"
                android:id="@+id/btn_5"
                android:paddingRight="15sp"
                android:paddingBottom="15sp"
                android:layout_width="80dp"
                android:layout_height="80dp"
                android:layout_marginLeft="10dp"
                android:text="5" />
        <Button
                android:textSize="30sp"
                android:id="@+id/btn_6"
                android:paddingRight="15sp"
                android:paddingBottom="15sp"
                android:layout_width="80dp"
                android:layout_height="80dp"
                android:layout_marginLeft="10dp"
                android:text="6" />
        <Button
                android:textSize="30sp"
                android:id="@+id/btn_add"
                android:paddingRight="15sp"
                android:paddingBottom="15sp"
                android:layout_width="80dp"
                android:layout_height="80dp"
                android:layout_marginLeft="10dp"
                android:text="+" />
    </LinearLayout>
    <LinearLayout
            android:gravity="center_horizontal"
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp">
        <LinearLayout
                android:orientation="vertical"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">
            <LinearLayout
                    android:orientation="horizontal"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content">
                <Button
                        android:textSize="30sp"
                        android:id="@+id/btn_1"
                        android:paddingRight="15sp"
                        android:paddingBottom="15sp"
                        android:layout_width="80dp"
                        android:layout_height="80dp"
                        android:text="1" />
                <Button
                        android:textSize="30sp"
                        android:id="@+id/btn_2"
                        android:paddingRight="15sp"
                        android:paddingBottom="15sp"
                        android:layout_width="80dp"
                        android:layout_height="80dp"
                        android:layout_marginLeft="10dp"
                        android:text="2" />
                <Button
                        android:textSize="30sp"
                        android:id="@+id/btn_3"
                        android:paddingRight="15sp"
                        android:paddingBottom="15sp"
                        android:layout_width="80dp"
                        android:layout_height="80dp"
                        android:layout_marginLeft="10dp"
                        android:text="3" />
            </LinearLayout>
            <LinearLayout
                    android:orientation="horizontal"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="10dp">
                <Button
                        android:textSize="30sp"
                        android:id="@+id/btn_0"
                        android:paddingRight="15sp"
                        android:paddingBottom="15sp"
                        android:layout_width="170dp"
                        android:layout_height="80dp"
                        android:text="0" />
                <Button
                        android:textSize="30sp"
                        android:id="@+id/btn_pt"
                        android:paddingRight="15sp"
                        android:paddingBottom="15sp"
                        android:layout_width="80dp"
                        android:layout_height="80dp"
                        android:layout_marginLeft="10dp"
                        android:text="." />
            </LinearLayout>
        </LinearLayout>
        <Button
                android:textSize="30sp"
                android:id="@+id/btn_eq"
                android:paddingRight="15sp"
                android:paddingBottom="15sp"
                android:layout_width="80dp"
                android:layout_height="170dp"
                android:layout_marginLeft="10dp"
                android:text="=" />
    </LinearLayout>
</LinearLayout>

主代码

因为计算器的功能比较少,所以这里就只有一个活动。我们在活动中的第一步就是为每一个按钮注册监听,这里我们让主活动继承自View.OnClickListener会更加的方便:

获取id并添加监听

        findViewById(R.id.btn_0).setOnClickListener(this);
        findViewById(R.id.btn_1).setOnClickListener(this);
        findViewById(R.id.btn_2).setOnClickListener(this);
        findViewById(R.id.btn_3).setOnClickListener(this);
        findViewById(R.id.btn_4).setOnClickListener(this);
        findViewById(R.id.btn_5).setOnClickListener(this);
        findViewById(R.id.btn_6).setOnClickListener(this);
        findViewById(R.id.btn_7).setOnClickListener(this);
        findViewById(R.id.btn_8).setOnClickListener(this);
        findViewById(R.id.btn_9).setOnClickListener(this);
        findViewById(R.id.btn_add).setOnClickListener(this);
        findViewById(R.id.btn_clr).setOnClickListener(this);
        findViewById(R.id.btn_eq).setOnClickListener(this);
        findViewById(R.id.btn_del).setOnClickListener(this);

        et_input=(TextView)findViewById(R.id.et_input);
        et_input2=(TextView)findViewById(R.id.et_input2);
        et_option=(TextView)findViewById(R.id.et_option);
        et_eq=(TextView)findViewById(R.id.et_eq);

第二步就是为每一个按钮添加具体的操作了,首先我先来讲解我的数字按钮。我具体的实现思路是在开始创建三个String对象分别来存储第一个运算数(str1)、运算符(option)和第二个运算数(str2)。当我们点击数字按钮时先判断运算符是否为空,如果为空则说明此时我们要输入的是第一个运算数,否则说明我们要输入的是第二个运算数。在输入时我让运算数=之前的数+按钮输入的数(注意这里我们定义的运算数为String类型),然后再把运算数显示在其想要的TextView当中。所以具体的代码是:

  @Override
    public void onClick(View v) {
        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:
                if(et_option.getText().toString()=="") {//判断输入是否是输入的第一个数
                    if(et_eq.getText()=="") {
                        Str1 = Str1 + ((Button) v).getText().toString();
                        et_input.setText(Str1 + "");
                        System.out.println(Str1);
                    }else {
                   Clean();
                    }
                }else {
                    if (et_eq.getText() == "") {
                        Str2 = Str2 + ((Button) v).getText().toString();
                        et_input2.setText(Str2);
                        System.out.println("正在输入第二个数:" + Str2);
                    }else {
                   Clean();
                    }
                }
                break;
            case R.id.btn_add:
                if(Option=="") {
                    Option = "+";
                   et_option.setText("+");
                    System.out.println("输入运算符+````````" + Str1);

                }
                break;
            case R.id.btn_clr://清空
             Clean();
                break;
            case R.id.btn_eq:
                number=Double.parseDouble(Str1);
                number2=Double.parseDouble(Str2);
              et_eq.setText("= "+(int)(number+number2)+"");
              System.out.println("结果为:"+(int)(number+number2));
                break;
            case R.id.btn_del:
                if(Option==""){
                    if(Str1.length()!=0 && et_eq.getText()=="") {

                        Str1 = Str1.substring(0, Str1.length() - 1);
                        et_input.setText(Str1);
                    }
                }else{
                    if(Str2.length()!=0 && et_eq.getText()=="") {
                        Str2 = Str2.substring(0, Str2.length() - 1);
                        et_input2.setText(Str2);
                    }
                }
                break;
        }
    }

    public void Clean(){
        Str1="";
        Str2="";
        et_eq.setText("");
        Option="";
        et_input2.setText("");
        et_option.setText("");
        et_input.setText("");
    }
最后修改:2020 年 03 月 09 日
如果觉得我的文章对你有用,请随意赞赏