一共只用了两个文件:布局文件activity_main.xml和代码逻辑实现文件MainActivity.java
布局文件边写边看右边的布局视图,注意每一个视图都要写长度和宽度,编译成功后logout也要看一眼,可能在build那边是成功的,但是logout那里又有错误提示,不处理的话打开APP会闪退
代码运行在模拟器上效果如图:
在这里插入图片描述
布局代码:
<?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:layout_weight="1"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="80dp"
android:layout_weight="3"
android:orientation="horizontal">
<TextView
android:id="@+id/input"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
android:text=""
android:textSize="30sp"></TextView>
<TextView
android:id="@+id/result"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
android:text=""
android:textSize="30sp"></TextView>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="80dp"
android:orientation="horizontal"
android:layout_weight="1.5">
<TextView
android:id="@+id/C"
android:onClick="oneOnClick"
android:layout_width="20dp"
android:layout_weight="1"
android:layout_height="match_parent"
android:gravity="center"
android:text="C"
android:textSize="30sp">
</TextView>
<TextView
android:id="@+id/plus"
android:onClick="oneOnClick"
android:layout_width="20dp"
android:layout_weight="1"
android:layout_height="match_parent"
android:gravity="center"
android:text="+"
android:textSize="30sp">
</TextView>
<TextView
android:id="@+id/minus"
android:onClick="oneOnClick"
android:layout_width="20dp"
android:layout_weight="1"
android:layout_height="match_parent"
android:gravity="center"
android:text="-"
android:textSize="30sp">
</TextView>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="80dp"
android:orientation="horizontal"
android:layout_weight="1.5">
<TextView
android:id="@+id/seven"
android:onClick="oneOnClick"
android:layout_width="20dp"
android:layout_weight="1"
android:layout_height="match_parent"
android:gravity="center"
android:text="7"
android:textSize="30sp">
</TextView>
<TextView
android:id="@+id/eight"
android:onClick="oneOnClick"
android:layout_width="20dp"
android:layout_weight="1"
android:layout_height="match_parent"
android:gravity="center"
android:text="8"
android:textSize="30sp">
</TextView>
<TextView
android:id="@+id/nine"
android:onClick="oneOnClick"
android:layout_width="20dp"
android:layout_weight="1"
android:layout_height="match_parent"
android:gravity="center"
android:text="9"
android:textSize="30sp">
</TextView>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="80dp"
android:orientation="horizontal"
android:layout_weight="1.5">
<TextView
android:id="@+id/four"
android:onClick="oneOnClick"
android:layout_width="20dp"
android:layout_weight="1"
android:layout_height="match_parent"
android:gravity="center"
android:text="4"
android:textSize="30sp">
</TextView>
<TextView
android:id="@+id/fine"
android:onClick="oneOnClick"
android:layout_width="20dp"
android:layout_weight="1"
android:layout_height="match_parent"
android:gravity="center"
android:text="5"
android:textSize="30sp">
</TextView>
<TextView
android:id="@+id/six"
android:onClick="oneOnClick"
android:layout_width="20dp"
android:layout_weight="1"
android:layout_height="match_parent"
android:gravity="center"
android:text="6"
android:textSize="30sp">
</TextView>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="80dp"
android:orientation="horizontal"
android:layout_weight="1.5">
<TextView
android:id="@+id/one"
android:onClick="oneOnClick"
android:layout_width="20dp"
android:layout_weight="1"
android:layout_height="match_parent"
android:gravity="center"
android:text="1"
android:textSize="30sp">
</TextView>
<TextView
android:id="@+id/two"
android:onClick="oneOnClick"
android:layout_width="20dp"
android:layout_weight="1"
android:layout_height="match_parent"
android:gravity="center"
android:text="2"
android:textSize="30sp">
</TextView>
<TextView
android:id="@+id/three"
android:onClick="oneOnClick"
android:layout_width="20dp"
android:layout_weight="1"
android:layout_height="match_parent"
android:gravity="center"
android:text="3"
android:textSize="30sp">
</TextView>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="80dp"
android:orientation="horizontal"
android:layout_weight="1.5">
<TextView
android:id="@+id/zero"
android:onClick="oneOnClick"
android:layout_width="20dp"
android:layout_weight="2"
android:layout_height="match_parent"
android:gravity="center"
android:text="0"
android:textSize="30sp">
</TextView>
<TextView
android:id="@+id/equal"
android:onClick="oneOnClick"
android:layout_width="20dp"
android:layout_weight="1"
android:layout_height="match_parent"
android:gravity="center"
android:text="="
android:textSize="30sp">
</TextView>
</LinearLayout>
</LinearLayout>
逻辑代码
package com.example.littlecal;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
private TextView input;
private TextView result;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
input = this.findViewById(R.id.input);
result = this.findViewById(R.id.result);
}
String input1 = "";
String input2 = "";
String operation = "";
boolean input1flag = true;
public void oneOnClick(View view){
if (view instanceof TextView){
String onetext = ((TextView)view).getText().toString();
switch (onetext){
case "C":
input.setText("");
result.setText("");
input1 = "";
input2 = "";
operation = "";
input1flag = true;
break;
case "1":
if(input1flag){
input1 += "1";
input.setText(input1);
}else {
input2 += "1";
input.setText(input1+operation+input2);
}
break;
case "2":
if(input1flag){
input1 += "2";
input.setText(input1);
}else {
input2 += "2";
input.setText(input1+operation+input2);
}
break;
case "3":
if(input1flag){
input1 += "3";
input.setText(input1);
}else {
input2 += "3";
input.setText(input1+operation+input2);
}
break;
case "4":
if(input1flag){
input1 += "4";
input.setText(input1);
}else {
input2 += "4";
input.setText(input1+operation+input2);
}
break;
case "5":
if(input1flag){
input1 += "5";
input.setText(input1);
}else {
input2 += "5";
input.setText(input1+operation+input2);
}
break;
case "6":
if(input1flag){
input1 += "6";
input.setText(input1);
}else {
input2 += "6";
input.setText(input1+operation+input2);
}
break;
case "7":
if(input1flag){
input1 += "7";
input.setText(input1);
}else {
input2 += "7";
input.setText(input1+operation+input2);
}
break;
case "8":
if(input1flag){
input1 += "8";
input.setText(input1);
}else {
input2 += "8";
input.setText(input1+operation+input2);
}
break;
case "9":
if(input1flag){
input1 += "9";
input.setText(input1);
}else {
input2 += "9";
input.setText(input1+operation+input2);
}
break;
case "0":
if(input1flag){
input1 += "0";
input.setText(input1);
}else {
input2 += "0";
input.setText(input1+operation+input2);
}
break;
case "+":
input1flag = false;
operation += "+";
input.setText(input1+operation+input2);
break;
case "-":
input1flag = false;
operation += "-";
input.setText(input1+operation+input2);
break;
case "=":
input.setText(input1+operation+input2+"="); // 加个等于号更美观友好
int num1 = Integer.parseInt(input1);
int num2 = Integer.parseInt(input2);
if(operation.equals("+")){
result.setText(String.valueOf(num1+num2));
}
if(operation.equals("-")){
result.setText(String.valueOf(num1-num2));
}
break;
}
}
}
}