Android实验三事件

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="zhku.edu.exp3_1.MainActivity"
    android:orientation="vertical"
    android:background="#000000"
    >
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="120dp"
    android:orientation="horizontal"
    >
    <TextView
        android:id="@+id/tv_show"
        android:layout_width="match_parent"
        android:layout_height="170dp"
        android:layout_marginRight="18dp"
        android:layout_marginTop="10dp"
        android:layout_marginLeft="10dp"
        android:textSize="40sp"
        android:hint="0"
        android:gravity="end"
        android:background="@drawable/white_bg"
        />
</LinearLayout>
    <LinearLayout
        android:id="@+id/linearlayout1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <Button
            android:id="@+id/btn_7"
            style="@style/ButtonBaseStyle"
            android:text="7"
            android:background="@drawable/white_bg"/>
        <Button
            android:id="@+id/btn_8"
            style="@style/ButtonBaseStyle"
            android:text="8"
            android:background="@drawable/white_bg"
            />
        <Button
            android:id="@+id/btn_9"
            style="@style/ButtonBaseStyle"
            android:text="9"
            android:background="@drawable/white_bg"/>
        <Button
            android:id="@+id/btn_clear"
            style="@style/ButtonBaseStyle"
            android:text="C"
            android:background="@drawable/white_bg"/>
        </LinearLayout>
    <LinearLayout
        android:id="@+id/linearlayout2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <Button
            android:id="@+id/btn_4"
            style="@style/ButtonBaseStyle"
            android:text="4"
            android:background="@drawable/white_bg"/>
        <Button
            android:id="@+id/btn_5"
            style="@style/ButtonBaseStyle"
            android:text="5"
            android:background="@drawable/white_bg"/>
        <Button
            android:id="@+id/btn_6"
            style="@style/ButtonBaseStyle"
            android:text="6"
            android:background="@drawable/white_bg"/>
        <Button
            android:id="@+id/btn_plus"
            style="@style/ButtonBaseStyle"
            android:text="+"
            android:background="@drawable/white_bg"/>
    </LinearLayout>
    <LinearLayout
        android:id="@+id/linearlayout3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <Button
            android:id="@+id/btn_1"
            style="@style/ButtonBaseStyle"
            android:text="1"
            android:background="@drawable/white_bg"/>
        <Button
            android:id="@+id/btn_2"
            style="@style/ButtonBaseStyle"
            android:text="2"
            android:background="@drawable/white_bg"/>
        <Button
            android:id="@+id/btn_3"
            style="@style/ButtonBaseStyle"
            android:text="3"
            android:background="@drawable/white_bg"/>
        <Button
            android:id="@+id/btn_minus"
            style="@style/ButtonBaseStyle"
            android:text="-"
            android:background="@drawable/white_bg"/>
    </LinearLayout>
    <LinearLayout
        android:id="@+id/linearlayout4"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <Button
            android:id="@+id/btn_0"
            style="@style/ButtonBaseStyle"
            android:text="0"
            android:background="@drawable/white_bg"/>
        <Button
            android:id="@+id/btn_equal"
            style="@style/ButtonBaseStyle"
            android:text="="
            android:background="@drawable/pink_bg"/>
        <Button
            android:id="@+id/btn_divide"
            style="@style/ButtonBaseStyle"
            android:text="÷"
            android:background="@drawable/white_bg"/>
        <Button
            android:id="@+id/btn_multiply"
            style="@style/ButtonBaseStyle"
            android:text="×"
            android:background="@drawable/white_bg"/>
    </LinearLayout>
</LinearLayout>

style.xml

<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>
    <style name="ButtonBaseStyle">
        <item name="android:layout_width">50dp</item>
        <item name="android:layout_height">50dp</item>
        <item name="android:layout_margin">10dp</item>
        <item name="android:textSize">30sp</item>
    </style>
    <style name="ButtonStyle" parent="ButtonBaseStyle">
        <item name="android:background">@drawable/white_bg</item>
        <item name="android:layout_weight">1</item>
    </style>

    <style name="ButtonEqualStyle" parent="ButtonBaseStyle">
        <item name="android:background">@drawable/pink_bg</item>
        <item name="android:layout_weight">1</item>
    </style>
</resources>

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>
pink_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="#ee82ee"/>
</shape>

bg_selector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/white_bg"/>
    <item android:drawable="@drawable/pink_bg"
          android:state_pressed="true"/> <!--表示点击状态时采用粉红色-->
</selector>


MainActivity.java

package zhku.edu.exp3_1;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private TextView tv_show;
    private double num1;
    private double num2;
    private String str_oper="+";//运算符
    private StringBuffer str_display=new StringBuffer();
    private String str_result;//结果显示
    private boolean b_add,b_sub,b_mul,b_div;//运算符开关控制
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv_show=(TextView)findViewById(R.id.tv_show);
        tv_show.setText("0");

        int []ids={R.id.btn_0,R.id.btn_1,R.id.btn_2,R.id.btn_3,R.id.btn_4,
                R.id.btn_4,R.id.btn_5,R.id.btn_6,R.id.btn_7,R.id.btn_8,R.id.btn_9,
                R.id.btn_clear,R.id.btn_divide,R.id.btn_equal,R.id.btn_minus,R.id.btn_multiply,
                R.id.btn_plus};
        for(int i=0;i<ids.length;i++){
            ((Button)findViewById(ids[i])).setOnClickListener(this);
        }

    }
    public void onClick(View v){
        switch (v.getId()){
            case R.id.btn_0:
                str_display.append("0");
                tv_show.setText(str_display.toString());
                break;
            case R.id.btn_1:
                str_display.append("1");
                tv_show.setText(str_display.toString());
                break;
            case R.id.btn_2:
                str_display.append("2");
                tv_show.setText(str_display.toString());
                break;
            case R.id.btn_3:
                str_display.append("3");
                tv_show.setText(str_display.toString());
                break;
            case R.id.btn_4:
                str_display.append("4");
                tv_show.setText(str_display.toString());
                break;
            case R.id.btn_5:
                str_display.append("5");
                tv_show.setText(str_display.toString());
                break;
            case R.id.btn_6:
                str_display.append("6");
                tv_show.setText(str_display.toString());
                break;
            case R.id.btn_7:
                str_display.append("7");
                tv_show.setText(str_display.toString());
                break;
            case R.id.btn_8:
                str_display.append("8");
                tv_show.setText(str_display.toString());
                break;
            case R.id.btn_9:
                str_display.append("9");
                tv_show.setText(str_display.toString());
                break;
            case R.id.btn_plus:
                str_oper="+";
                if(!(str_display.toString()=="")){
                    num1+=Double.parseDouble(str_display.toString());
                    str_display=new StringBuffer("");
                    b_add=true;
                }
                if(!(str_result==null)){
                    num1=Double.parseDouble(str_result);
                    str_result=null;
                }
                tv_show.setText(String.valueOf(num1));
                break;
            case R.id.btn_minus:
                str_oper="-";
                if(!b_sub&&!(str_display.toString()=="")){
                    num1=Double.parseDouble(str_display.toString());
                    tv_show.setText(String.valueOf(num1));
                    str_display=new StringBuffer("");
                    b_sub=true;
                }else{
                    if(!(str_display.toString()=="")){
                        num1-=Double.parseDouble(str_display.toString());
                        str_display=new StringBuffer("");
                    }
                    if(!(str_result==null)){
                        num1=Double.parseDouble(str_result);
                        str_result=null;
                    }
                    tv_show.setText(String.valueOf(num1));
                }

                break;
            case R.id.btn_multiply:
                str_oper="×";
                if(!b_mul&&!(str_display.toString()=="")){
                    num1=Double.parseDouble(str_display.toString());
                    tv_show.setText(String.valueOf(num1));
                    str_display=new StringBuffer("");
                    b_mul=true;
                }else{
                    if(!(str_display.toString()=="")){
                        num1*=Double.parseDouble(str_display.toString());
                        str_display=new StringBuffer("");
                    }
                    if(!(str_result==null)){
                        num1=Double.parseDouble(str_result);
                        str_result=null;
                    }
                    tv_show.setText(String.valueOf(num1));
                }

                break;

            case R.id.btn_divide:
            str_oper="÷";
                if(!b_div&&!(str_display.toString()=="")){
                    num1=Double.parseDouble(str_display.toString());
                    tv_show.setText(String.valueOf(num1));
                    str_display=new StringBuffer("");
                    b_div=true;
                }else {
                    if (!(str_display.toString() == "")) {
                        if (Double.parseDouble(str_display.toString())==0) {
                            Toast.makeText(MainActivity.this, "除数不能为零", Toast.LENGTH_LONG).show();
                        } else {
                            num1 /= Double.parseDouble(str_display.toString());
                            str_display = new StringBuffer("");
                        }
                    }
                    if(!(str_result==null)){
                        num1=Double.parseDouble(str_result);
                        str_result=null;
                    }
                    tv_show.setText(String.valueOf(num1));
                }

                break;

            case R.id.btn_clear:
                str_oper="+";
                str_display=new StringBuffer("");
                str_result=null;
                num1=0;
                num2=0;
                b_add=false;
                b_sub=false;
                b_mul=false;
                b_div=false;
                tv_show.setText("0");

            case R.id.btn_equal:
                if(str_oper.equals("+")){
                    num2=Double.parseDouble(str_display.toString());
                    str_result=String.valueOf(num1+num2);
                    tv_show.setText(num1+"+"+num2+"="+str_result);
                    str_display=new StringBuffer("");
                }
                if(str_oper.equals("-")){
                    num2=Double.parseDouble(str_display.toString());
                    str_result=String.valueOf(num1-num2);
                    tv_show.setText(num1+"-"+num2+"="+str_result);
                    str_display=new StringBuffer("");
                }
                if(str_oper.equals("×")){
                    num2=Double.parseDouble(str_display.toString());
                    str_result=String.valueOf(num1*num2);
                    tv_show.setText(num1+"×"+num2+"="+str_result);
                    str_display=new StringBuffer("");
                }
                if(str_oper.equals("÷")){
                    num2=Double.parseDouble(str_display.toString());
                    if(!(num2==0)){
                    str_result=String.valueOf(num1/num2);
                    tv_show.setText(num1+"÷"+num2+"="+str_result);
                    }else{
                        Toast.makeText(MainActivity.this, "除数不能为零", Toast.LENGTH_LONG).show();
                }
                    str_display=new StringBuffer("");
                }
                break;

            default:
                break;
        }

    }
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值