Android Studio 计算器开发


Posted in Java/Android onMay 20, 2022

本文实例为大家分享了Android Studio实现简单计算器开的具体代码,供大家参考,具体内容如下

效果展示:

Android Studio 计算器开发

Android Studio 计算器开发

Android Studio 计算器开发

路径和文件:

Android Studio 计算器开发

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.calculator">
 
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
 
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
 
</manifest>

MainActivity.java

package com.example.calculator; 
 
import android.os.Bundle;
 
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
 
import androidx.appcompat.app.AppCompatActivity;
 
import java.lang.reflect.Method;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
 
public class MainActivity extends AppCompatActivity {
 
    private  StringBuilder show_equation=new StringBuilder();//显示运算式
    private  ArrayList calculate_equation;//计算式
    private  int signal=0;//为0 时表示刚输入状态;为1 时表示当前在输出结果上继续输入
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //初始化
        show_equation=new StringBuilder();
        calculate_equation=new ArrayList<>();
        Button zero=(Button)findViewById(R.id.zero);
        Button one=(Button)findViewById(R.id.one);
        Button two=(Button)findViewById(R.id.two);
        Button three=(Button)findViewById(R.id.three);
        Button four=(Button)findViewById(R.id.four);
        Button five=(Button)findViewById(R.id.five);
        Button six=(Button)findViewById(R.id.six);
        Button seven=(Button)findViewById(R.id.seven);
        Button eight=(Button)findViewById(R.id.eight);
        Button nine=(Button)findViewById(R.id.nine);
        Button cls=(Button)findViewById(R.id.cls);
        Button div=(Button)findViewById(R.id.div);
        Button mul=(Button)findViewById(R.id.mul);
        Button backspace=(Button)findViewById(R.id.Backspace);
        Button sub=(Button)findViewById(R.id.sub);
        Button add=(Button)findViewById(R.id.add);
        final Button equal=(Button)findViewById(R.id.equal);
        final Button point=(Button)findViewById(R.id.spot);
        final EditText result=(EditText)findViewById(R.id.result);
        result.setCursorVisible(true);
        disableShowInput(result);
        //点击文本框时光标始终在文本末尾
        result.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                result.setSelection(result.getText().length());
            }
        });
        zero.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v){
                if(!(show_equation.toString().equals("0"))){
                    if(signal==0){
                        show_equation.append("0");
                        //显示运算式
                        result.setText(show_equation);
                        //将光标定位到文本末尾
                        result.setSelection(result.getText().length());
                    }else{
                        show_equation.delete(0,show_equation.length());
                        show_equation.append("0");
                        result.setText(show_equation);
                        result.setSelection(result.getText().length());
                        signal=0;
                    }
                }
            }
        });
        //接下来1到9每个控件依次进行此设置
        //保证若是在结果上进行输入时清除结果然后显示点击的数字
        //若是正常输入则直接在运算式末尾加上点击的数字并显示
        one.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(signal==0){
                    show_equation.append("1");
                    result.setText(show_equation);
                    result.setSelection(result.getText().length());
                }else{
                    show_equation.delete(0,show_equation.length());
                    show_equation.append("1");
                    result.setText(show_equation);
                    result.setSelection(result.getText().length());
                    signal=0;
                }
            }
        });
        two.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(signal==0){
                    show_equation.append("2");
                    result.setText(show_equation);
                    result.setSelection(result.getText().length());
                }else{
                    show_equation.delete(0,show_equation.length());
                    show_equation.append("2");
                    result.setText(show_equation);
                    result.setSelection(result.getText().length());
                    signal=0;
                }
            }
        });
        three.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(signal==0){
                    show_equation.append("3");
                    result.setText(show_equation);
                    result.setSelection(result.getText().length());
                }else{
                    show_equation.delete(0,show_equation.length());
                    show_equation.append("3");
                    result.setText(show_equation);
                    result.setSelection(result.getText().length());
                    signal=0;
                }
            }
        });
        four.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(signal==0){
                    show_equation.append("4");
                    result.setText(show_equation);
                    result.setSelection(result.getText().length());
                }else{
                    show_equation.delete(0,show_equation.length());
                    show_equation.append("4");
                    result.setText(show_equation);
                    result.setSelection(result.getText().length());
                    signal=0;
                }
            }
        });
        five.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(signal==0){
                    show_equation.append("5");
                    result.setText(show_equation);
                    result.setSelection(result.getText().length());
                }else{
                    show_equation.delete(0,show_equation.length());
                    show_equation.append("5");
                    result.setText(show_equation);
                    result.setSelection(result.getText().length());
                    signal=0;
                }
            }
        });
        six.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(signal==0){
                    show_equation.append("6");
                    result.setText(show_equation);
                    result.setSelection(result.getText().length());
                }else{
                    show_equation.delete(0,show_equation.length());
                    show_equation.append("6");
                    result.setText(show_equation);
                    result.setSelection(result.getText().length());
                    signal=0;
                }
            }
        });
        seven.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(signal==0){
                    show_equation.append("7");
                    result.setText(show_equation);
                    result.setSelection(result.getText().length());
                }else{
                    show_equation.delete(0,show_equation.length());
                    show_equation.append("7");
                    result.setText(show_equation);
                    result.setSelection(result.getText().length());
                    signal=0;
                }
            }
        });
        eight.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(signal==0){
                    show_equation.append("8");
                    result.setText(show_equation);
                    result.setSelection(result.getText().length());
                }else{
                    show_equation.delete(0,show_equation.length());
                    show_equation.append("8");
                    result.setText(show_equation);
                    result.setSelection(result.getText().length());
                    signal=0;
                }
            }
        });
        nine.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(signal==0){
                    show_equation.append("9");
                    result.setText(show_equation);
                    result.setSelection(result.getText().length());
                }else{
                    show_equation.delete(0,show_equation.length());
                    show_equation.append("9");
                    result.setText(show_equation);
                    result.setSelection(result.getText().length());
                    signal=0;
                }
            }
        });
        //清屏
        cls.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                show_equation.delete(0,show_equation.length());
                calculate_equation.clear();
                signal=0;
                result.setText("");
            }
        });
        //后退键
        //若在结果上使用,则直接清屏
        //正常输入时使用,后退一格
        backspace.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(!(show_equation.toString().equals(""))) {
                    if(signal==0){
                        show_equation.deleteCharAt(show_equation.length() - 1);
                        result.setText(show_equation);
                        result.setSelection(result.getText().length());
                    }else{
                        show_equation.delete(0,show_equation.length());
                        result.setText("");
                        signal=0;
                    }
                }
            }
        });
        //小数点的点击事件
        point.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //正常输入时点击小数点的处理逻辑
                if(signal==0){
                    //把运算式赋给字符串a
                    String a=show_equation.toString();
                    //运算式为空,直接加一个小数点并显示
                    if(a.equals("")){
                        show_equation.append(".");
                        result.setText(show_equation);
                        result.setSelection(result.getText().length());
                    }
                    //运算式不为空
                    else{
                        int i;
                        char t='0';
                        //从运算式末尾向前遍历,碰到'.''+''-''*''/'后结束遍历退出
                        for(i=a.length();i>0;i--){
                            t=a.charAt(i-1);
                            if(t=='.'||t=='+'||t=='-'||t=='*'||t=='/')
                                break;
                        }
                        //i==0表示遍历运算式没有发现'.''+''-''*''/',则直接在运算式末尾加小数点
                        if(i==0){
                            show_equation.append(".");
                            result.setText(show_equation);
                            result.setSelection(result.getText().length());
                        }
                        //在碰到小数点前碰到了'+''-''*''/',也直接在运算式末尾加小数点
                        else if(t=='+'||t=='-'||t=='*'||t=='/'){
                            show_equation.append(".");
                            result.setText(show_equation);
                            result.setSelection(result.getText().length());
                        }
                        //以上条件均不满足,若说明遍历碰到了小数点,因为一个数不能同时有两个小数点,所以此次点击小数点不做处理
                    }
                }
                //在结果上点击小数点,直接清屏然后加上小数点并显示
                else{
                    show_equation.delete(0,show_equation.length());
                    show_equation.append(".");
                    result.setText(".");
                    result.setSelection(result.getText().length());
                    signal=0;
                }
            }
        });
 
        equal.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //判断用户是否输入了内容
                if(!show_equation.toString().equals("")&&!(show_equation.toString().equals("错误"))){
                    signal = 1;//表示在输入结果上
                    char temp = show_equation.charAt(show_equation.length() - 1);//把运算式的最后一个字符赋给temp
                    if (show_equation.charAt(0) == '-')//如果运算式的第一个字符是'-',说明用户是想输入一个负数
                        show_equation.insert(0, "0");//此时在运算式的最前面加一个0,用'0-运算数'表示负数
                    if (temp == '+' || temp == '-')//若为加减
                        show_equation.append("0");//则结尾默认加减零
                    if (temp == '*' || temp == '/')//若为乘除
                        show_equation.append("1");//则结尾默认乘除1
                    StringBuilder temp1=new StringBuilder();
                    //从头遍历运算式
                    for(int i=0;i<show_equation.length();i++){
                        if(show_equation.charAt(i)>='0'&&show_equation.charAt(i)<='9'||show_equation.charAt(i)=='.'){
                            //如果是连着的数字和小数点,那就一个一个的拼到temp1中,作为一个完整的运算数
                            temp1.append(String.valueOf(show_equation.charAt(i)));
                        }else if(show_equation.charAt(i)=='N'){
                            //如果是NaN就直接把'NaN'加进计算式里
                            calculate_equation.add("NaN");
                            //跳过2个字符
                            i=i+2;
                        }else if(show_equation.charAt(i)=='∞'){
                            //如果是∞就直接把'∞'加进计算式里
                            calculate_equation.add("∞");
                        }
                        else//这种就是遍历到'+''-''*''/'这四种运算符的情况
                        {
                            //如果temp1长度不为0,说明运算符前有运算数,则把该运算数添加进计算式中并清空temp1中的内容
                            if(temp1.length()!=0){
                                calculate_equation.add(temp1.toString());
                                temp1.delete(0,temp1.length());
                            }
                            //把运算符添加进去
                            calculate_equation.add(String.valueOf(show_equation.charAt(i)));
                        }
                    }
                    //把最后一个运算数加进运算式里
                    if(temp1.length()!=0){
                        calculate_equation.add(temp1.toString());
                    }
                    calculate_equation.add("#");
                    //调用calculate计算出结果返回给temp8
                    String temp8=calculate(calculate_equation);
                    result.setText(temp8);
                    result.setSelection(result.getText().length());
                    //清空运算式和计算式
                    show_equation.delete(0,show_equation.length());
                    calculate_equation.clear();
                    //将结果赋给运算式
                    show_equation.append(temp8);
                }
            }
        });
        add.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //判断用户是否输入了内容
                if(!(show_equation.toString().equals(""))&&!(show_equation.toString().equals("错误"))) {
                    signal=0;
                    char temp=show_equation.charAt(show_equation.length()-1);
                    if(temp=='+'||temp=='-'||temp=='*'||temp=='/')
                    {
                        show_equation.deleteCharAt(show_equation.length()-1);
                        show_equation.append("+");
                    }
                    else
                        show_equation.append("+");
                    result.setText(show_equation);
                    result.setSelection(result.getText().length());
                }
            }
        });
        sub.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //判断用户是否输入了内容
                if(!(show_equation.toString().equals(""))&&!(show_equation.toString().equals("错误"))) {
                    signal=0;
                    char temp=show_equation.charAt(show_equation.length()-1);
                    if(temp=='+'||temp=='-'||temp=='*'||temp=='/')
                    {
                        show_equation.deleteCharAt(show_equation.length()-1);
                        show_equation.append("-");
                    }
                    else
                        show_equation.append("-");
                    result.setText(show_equation);
                    result.setSelection(result.getText().length());
                }
                else if(!(show_equation.toString().equals("错误"))){
                    signal=0;
                    show_equation.append("-");
                    result.setText(show_equation);
                    result.setSelection(result.getText().length());
                }
            }
        });
 
        mul.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //判断用户是否输入了内容
                if(!(show_equation.toString().equals(""))&&!(show_equation.toString().equals("错误"))) {
                    signal=0;
                    char temp=show_equation.charAt(show_equation.length()-1);
                    if(temp=='+'||temp=='-'||temp=='*'||temp=='/')
                    {
                        show_equation.deleteCharAt(show_equation.length()-1);
                        show_equation.append("*");
                    }
                    else
                        show_equation.append("*");
                    result.setText(show_equation);
                    result.setSelection(result.getText().length());
                }
            }
        });
 
        div.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //判断用户是否输入了内容
                if(!(show_equation.toString().equals(""))&&!(show_equation.toString().equals("错误"))) {
                    signal=0;
                    char temp=show_equation.charAt(show_equation.length()-1);
                    if(temp=='+'||temp=='-'||temp=='*'||temp=='/')
                    {
                        show_equation.deleteCharAt(show_equation.length()-1);
                        show_equation.append("/");
                    }
                    else
                        show_equation.append("/");
                    result.setText(show_equation);
                    result.setSelection(result.getText().length());
                }
            }
        });
    }
    protected boolean operatorPriorityCompare(char operator1,char operator2)
    {
        int o1=0;
        int o2=0;
        switch (operator1){
            case '+':{o1=0;break;}
            case '-':{o1=0;break;}
            case '*':{o1=1;break;}
            case '/':{o1=1;break;}
        }
        switch (operator2){
            case '+':{o2=0;break;}
            case '-':{o2=0;break;}
            case '*':{o2=1;break;}
            case '/':{o2=1;break;}
        }
        if(o1<=o2)
        {
            return false;
        }
        else
            return true;
    }
    //相加
    public static Double Add(Double d1,Double d2) {
        if(d1==Double.NEGATIVE_INFINITY||d1==Double.POSITIVE_INFINITY||d2==Double.NEGATIVE_INFINITY||d2==Double.POSITIVE_INFINITY){
            return d1+d2;
        }
        if(String.valueOf(d1).equals("NaN")||String.valueOf(d1).equals("NaN")){
            //如果两个运算数只要有一个是非数'NaN',就直接运算即可
            return d1+d2;
        }
        //BigDecimal为精确计算的一个数据类型,你可以理解为使用它进行计算结果将更准确
        BigDecimal b1 = new BigDecimal(Double.toString(d1));
        BigDecimal b2 = new BigDecimal(Double.toString(d2));
        //进行计算并将结果转为double返回
        return b1.add(b2).doubleValue();
    }
    //相减
    public static Double Sub(Double d1,Double d2){
        if(d1==Double.NEGATIVE_INFINITY||d1==Double.POSITIVE_INFINITY||d2==Double.NEGATIVE_INFINITY||d2==Double.POSITIVE_INFINITY){
            return d1-d2;
        }
        if(String.valueOf(d1).equals("NaN")||String.valueOf(d1).equals("NaN")){
            return d1-d2;
        }
        if(String.valueOf(d1).equals("NaN")||String.valueOf(d1).equals("NaN")){
            return d1*d2;
        }
        BigDecimal b1=new BigDecimal(Double.toString(d1));
        BigDecimal b2=new BigDecimal(Double.toString(d2));
        return b1.subtract(b2).doubleValue();
    }
    //相乘
    public static Double Mul(Double d1,Double d2){
        if(d1==Double.NEGATIVE_INFINITY||d1==Double.POSITIVE_INFINITY||d2==Double.NEGATIVE_INFINITY||d2==Double.POSITIVE_INFINITY){
            return d1*d2;
        }
        if(String.valueOf(d1).equals("NaN")||String.valueOf(d1).equals("NaN")){
            return d1*d2;
        }
        BigDecimal b1=new BigDecimal(Double.toString(d1));
        BigDecimal b2=new BigDecimal(Double.toString(d2));
        return b1.multiply(b2).setScale(8).doubleValue();
    }
    //相除
    public static Double Div(Double d1,Double d2){
        if(d1==Double.NEGATIVE_INFINITY||d1==Double.POSITIVE_INFINITY||d2==Double.NEGATIVE_INFINITY||d2==Double.POSITIVE_INFINITY){
            return d1/d2;
        }
        if(String.valueOf(d1).equals("NaN")||String.valueOf(d1).equals("NaN")){
            return d1/d2;
        }
        if(d1==0.0&&d2==0.0){
            return Double.NaN;
        }
        if(d2==0.0){
            return d1/d2;
        }
        BigDecimal b1=new BigDecimal(Double.toString(d1));
        BigDecimal b2=new BigDecimal(Double.toString(d2));
        return b1.divide(b2,8,BigDecimal.ROUND_HALF_UP).doubleValue();
    }
    //这个方法就是用来计算结果的,在344行被调用,参数为计算式
    //里面过程比较复杂,你需先弄懂后缀表达式,然后可对照理解大概流程意思即可
    protected String calculate(ArrayList equation){
        Double temp2;
        Double temp3;
        Double result;
        List operator=new ArrayList();
        List<Double> operand=new ArrayList();
        for(int i=0;i<equation.size();i++)
        {
            String temp4=(String) equation.get(i);
            if(temp4.equals("+")||temp4.equals("-")||temp4.equals("*")||temp4.equals("/"))
            {
                if(operator.size()>0)
                {
                    String temp5=operator.get(operator.size()-1).toString();
                    while(!(operatorPriorityCompare(temp4.charAt(0),temp5.charAt(0)))&&operator.size()>0)
                    {
                        operator.remove(operator.size()-1);
                        temp3=operand.get(operand.size()-1);
                        operand.remove(operand.size()-1);
                        temp2=operand.get(operand.size()-1);
                        operand.remove(operand.size()-1);
                        switch (temp5.charAt(0)){
                            case '+':{result=Add(temp2,temp3);operand.add(result);break;}
                            case '-':{result=Sub(temp2,temp3);operand.add(result);break;}
                            case '*':{result=Mul(temp2,temp3);operand.add(result);break;}
                            case '/':{result=Div(temp2,temp3);operand.add(result);break;}
                        }
                        if(operator.size()>0)
                        {
                            temp5=operator.get(operator.size()-1).toString();
                        }
                        else
                            break;
                    }
                    operator.add(temp4);
                }
                else
                    operator.add(temp4);
            }
            else if(temp4.equals("#"))
            {
                while(operator.size()>0)
                {
                    String temp6=(String)operator.get(operator.size()-1);
                    operator.remove(operator.size()-1);
                    temp3=operand.get(operand.size()-1);
                    operand.remove(operand.size()-1);
                    temp2=operand.get(operand.size()-1);
                    operand.remove(operand.size()-1);
                    switch (temp6.charAt(0)){
                        case '+':{result=Add(temp2,temp3);operand.add(result);break;}
                        case '-':{result=Sub(temp2,temp3);operand.add(result);break;}
                        case '*':{result=Mul(temp2,temp3);operand.add(result);break;}
                        case '/':{result=Div(temp2,temp3);operand.add(result);break;}
                    }
                }
            }
            else
            {
                if(temp4.equals("NaN")){
                    operand.add(Double.NaN);
                }else if(temp4.equals("∞")){
                    operand.add(Double.POSITIVE_INFINITY);
                }else if(temp4.equals(".")){
                    return "错误";
                }else{
                    operand.add(Double.parseDouble(temp4));
                }
            }
        }
        if(operand.get(0)==Double.NEGATIVE_INFINITY) return "-∞";
        if(operand.get(0)==Double.POSITIVE_INFINITY) return "∞";
        return operand.get(0).toString();
    }
    //当API最低版小于21时使用这个函数实现点击文本框不弹出键盘
    public void disableShowInput(EditText et) {
        Class<EditText> cls = EditText.class;
        Method method;
        try {
            method = cls.getMethod("setShowSoftInputOnFocus", boolean.class);
            method.setAccessible(true);
            method.invoke(et, false);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

buttonstytle.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <!-- 主体背景颜色值 -->
    <solid android:color="#666666" />
    <!-- 连框宽度和颜色值 -->
    <stroke
        android:width="0.01dp"
        android:color="#FFFFFF" />
</shape>

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
 
    <!--镶嵌一个标题栏-->
 
    <EditText
        android:id="@+id/result"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:singleLine="true"
        android:textSize="40sp" />
 
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="horizontal">
 
        <Button
            android:id="@+id/cls"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@drawable/buttonstytle"
            android:text="C"
            android:textColor="#ffffff"
            android:textSize="20sp" />
 
        <Button
            android:id="@+id/div"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@drawable/buttonstytle"
            android:text="/"
            android:textColor="#ffffff"
            android:textSize="20sp" />
 
        <Button
            android:id="@+id/mul"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@drawable/buttonstytle"
            android:text="*"
            android:textColor="#ffffff"
            android:textSize="20sp" />
 
        <Button
            android:id="@+id/Backspace"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@drawable/buttonstytle"
            android:text="Backspace"
            android:textAllCaps="false"
            android:textColor="#ffffff"
            android:textSize="20sp" />
    </LinearLayout>
 
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="horizontal">
 
        <Button
            android:id="@+id/seven"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@drawable/buttonstytle"
            android:text="7"
            android:textColor="#ffffff"
            android:textSize="20sp" />
 
        <Button
            android:id="@+id/eight"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@drawable/buttonstytle"
            android:text="8"
            android:textColor="#ffffff"
            android:textSize="20sp" />
 
        <Button
            android:id="@+id/nine"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@drawable/buttonstytle"
            android:text="9"
            android:textColor="#ffffff"
            android:textSize="20sp" />
 
        <Button
            android:id="@+id/sub"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@drawable/buttonstytle"
            android:text="-"
            android:textColor="#ffffff"
            android:textSize="20sp" />
    </LinearLayout>
 
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="horizontal">
 
        <Button
            android:id="@+id/four"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@drawable/buttonstytle"
            android:text="4"
            android:textColor="#ffffff"
            android:textSize="20sp" />
 
        <Button
            android:id="@+id/five"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@drawable/buttonstytle"
            android:text="5"
            android:textColor="#ffffff"
            android:textSize="20sp" />
 
        <Button
            android:id="@+id/six"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@drawable/buttonstytle"
            android:text="6"
            android:textColor="#ffffff"
            android:textSize="20sp" />
 
        <Button
            android:id="@+id/add"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@drawable/buttonstytle"
            android:text="+"
            android:textColor="#ffffff"
            android:textSize="20sp" />
    </LinearLayout>
 
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="2"
        android:orientation="horizontal">
 
        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:orientation="vertical">
 
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="1dp"
                android:layout_weight="1"
                android:orientation="horizontal">
 
                <Button
                    android:id="@+id/one"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:background="@drawable/buttonstytle"
                    android:text="1"
                    android:textColor="#ffffff"
                    android:textSize="20sp" />
 
                <Button
                    android:id="@+id/two"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:background="@drawable/buttonstytle"
                    android:text="2"
                    android:textColor="#ffffff"
                    android:textSize="20sp" />
            </LinearLayout>
 
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="1dp"
                android:layout_weight="1">
 
                <Button
                    android:id="@+id/zero"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:background="@drawable/buttonstytle"
                    android:text="0"
                    android:textColor="#ffffff"
                    android:textSize="20sp" />
            </LinearLayout>
        </LinearLayout>
 
        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:orientation="horizontal">
 
            <LinearLayout
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:orientation="vertical">
 
                <Button
                    android:id="@+id/three"
                    android:layout_width="match_parent"
                    android:layout_height="1dp"
                    android:layout_weight="1"
                    android:background="@drawable/buttonstytle"
                    android:text="3"
                    android:textColor="#ffffff"
                    android:textSize="20sp" />
 
                <Button
                    android:id="@+id/spot"
                    android:layout_width="match_parent"
                    android:layout_height="1dp"
                    android:layout_weight="1"
                    android:background="@drawable/buttonstytle"
                    android:text="."
                    android:textColor="#ffffff"
                    android:textSize="20sp" />
            </LinearLayout>
 
            <LinearLayout
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1">
 
                <Button
                    android:id="@+id/equal"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:background="@drawable/buttonstytle"
                    android:text="="
                    android:textColor="#ffffff"
                    android:textSize="20sp" />
            </LinearLayout>
        </LinearLayout>
    </LinearLayout>
</LinearLayout>

Tags in this post...

Java/Android 相关文章推荐
Java Dubbo框架知识点梳理
Jun 26 Java/Android
每日六道java新手入门面试题,通往自由的道路
Jun 30 Java/Android
java基础——多线程
Jul 03 Java/Android
Java生成读取条形码和二维码的简单示例
Jul 09 Java/Android
Spring Cloud Gateway去掉url前缀
Jul 15 Java/Android
浅谈sql_@SelectProvider及使用注意说明
Aug 04 Java/Android
Java org.w3c.dom.Document 类方法引用报错
Aug 07 Java/Android
关于springboot配置druid数据源不生效问题(踩坑记)
Sep 25 Java/Android
mybatis源码解读之executor包语句处理功能
Feb 15 Java/Android
正则表达式拆分url实例代码
Feb 24 Java/Android
SpringBoot整合minio快速入门教程(代码示例)
Apr 03 Java/Android
Android Studio 计算器开发
May 20 Java/Android
Android Studio实现简易进制转换计算器
May 20 #Java/Android
Spring 使用注解开发
May 20 #Java/Android
MyBatis核心源码深度剖析SQL语句执行过程
Java 轮询锁使用时遇到问题
May 11 #Java/Android
Java 死锁解决方案
May 11 #Java/Android
JAVA springCloud项目搭建流程
May 11 #Java/Android
Java死锁的排查
May 11 #Java/Android
You might like
针对初学PHP者的疑难问答(2)
2006/10/09 PHP
带密匙的php加密解密示例分享
2014/01/29 PHP
Destoon模板制作简明教程
2014/06/20 PHP
Zend Framework教程之模型Model基本规则和使用方法
2016/03/04 PHP
php实现批量上传数据到数据库(.csv格式)的案例
2017/06/18 PHP
jquery中ajax学习笔记一
2011/10/16 Javascript
JQuery 常用方法和事件详细介绍
2013/04/18 Javascript
js函数名与form表单元素同名冲突的问题
2014/03/07 Javascript
jQuery实现灰蓝风格标准二级下拉菜单效果代码
2015/08/31 Javascript
jQuery实现单击弹出Div层窗口效果(可关闭可拖动)
2015/09/19 Javascript
跟我学习javascript的Date对象
2015/11/19 Javascript
js Canvas绘制圆形时钟教程
2017/02/06 Javascript
Canvas实现放射线动画效果
2017/02/15 Javascript
jQuery实现贪吃蛇小游戏(附源码下载)
2017/03/04 Javascript
Angular组件化管理实现方法分析
2017/03/17 Javascript
关于Vue.nextTick()的正确使用方法浅析
2017/08/25 Javascript
微信禁止下拉查看URL的处理方法
2017/09/28 Javascript
Vue.js devtool插件安装后无法使用的解决办法
2017/11/27 Javascript
javaScript中的空值和假值
2017/12/18 Javascript
vue v-for循环重复数据无法添加问题解决方法【加track-by='索引'】
2019/03/15 Javascript
Vue快速实现通用表单验证的示例代码
2020/01/09 Javascript
[53:15]2018DOTA2亚洲邀请赛3月29日 小组赛A组 LGD VS TNC
2018/03/30 DOTA
python从入门到精通(DAY 1)
2015/12/20 Python
Python分支结构(switch)操作简介
2018/01/17 Python
Django继承自带user表并重写的例子
2019/11/18 Python
Python多线程获取返回值代码实例
2020/02/17 Python
Python txt文件常用读写操作代码实例
2020/08/03 Python
Visual Studio code 配置Python开发环境
2020/09/11 Python
CSS3的新特性介绍
2008/10/31 HTML / CSS
html5自动播放mov格式视频的实例代码
2020/01/14 HTML / CSS
德国最大的拼图在线商店:Puzzle.de
2016/12/17 全球购物
BookOutlet加拿大:在网上书店购买廉价折扣图书和小说
2018/10/05 全球购物
2014年圣诞节寄语
2014/12/08 职场文书
大班下学期个人总结
2015/02/13 职场文书
会议主持人开场白台词
2015/05/28 职场文书
详解JVM系列之内存模型
2021/06/10 Javascript