这次Android作业主要实现一个计算器
activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:rowCount="6"
android:columnCount="4"
>
//利用网格布局声明6行4列的计算器布局
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_columnSpan="4"
android:layout_marginLeft="4px"
android:text="0"
android:textSize="50dip"
android:id="@+id/result"
/>
//输入框
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_columnSpan="4"
android:text="清楚"
android:textSize="26sp"
android:id="@+id/clean"
/>
//清空按钮
//各种数字按钮
<Button android:text="1" android:textSize="40sp" android:id="@+id/btn1"/>
<Button android:text="2" android:textSize="40sp" android:id="@+id/btn2"/>
<Button android:text="3" android:textSize="40sp" android:id="@+id/btn3"/>
<Button android:text="+" android:textSize="40sp" android:id="@+id/btnPlus"/>
<Button android:text="4" android:textSize="40sp" android:id="@+id/btn4"/>
<Button android:text="5" android:textSize="40sp" android:id="@+id/btn5"/>
<Button android:text="6" android:textSize="40sp" android:id="@+id/btn6"/>
<Button android:text="-" android:textSize="40sp" android:id="@+id/btnReduce"/>
<Button android:text="7" android:textSize="40sp" android:id="@+id/btn7"/>
<Button android:text="8" android:textSize="40sp" android:id="@+id/btn8"/>
<Button android:text="9" android:textSize="40sp" android:id="@+id/btn9"/>
<Button android:text="*" android:textSize="40sp" android:id="@+id/btnMultiply"/>
<Button android:text="." android:textSize="40sp" android:id="@+id/btnPoint"/>
<Button android:text="0" android:textSize="40sp" android:id="@+id/btn0"/>
<Button android:text="=" android:textSize="40sp" android:id="@+id/btnSum"/>
<Button android:text="/" android:textSize="40sp" android:id="@+id/btnDivide"/>
</GridLayout>
MainActivity.java:
package com.example.administrator.calculator;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.TextView;
import android.view.View;
import android.view.View.OnClickListener;
//导入需要用到的包
public class MainActivity extends AppCompatActivity{
public Button btn0,btn1,btn2,btn3,btn4,btn5,btn6,btn7,btn8,btn9,btnPlus,btnReduce,btnMultiply,btnPoint,btnSum,btnDivide,clean;//声明各个按钮
public TextView txt;//声明文本输入框
public String str = "";//声明一个空字符串用作显示文本输入框的内容
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txt = (TextView)findViewById(R.id.result);//建立文本输入框与各个按钮与XML的连接
btn0 = (Button)findViewById(R.id.btn0);
btn1 = (Button)findViewById(R.id.btn1);
btn2 = (Button)findViewById(R.id.btn2);
btn3 = (Button)findViewById(R.id.btn3);
btn4 = (Button)findViewById(R.id.btn4);
btn5 = (Button)findViewById(R.id.btn5);
btn6 = (Button)findViewById(R.id.btn6);
btn7 = (Button)findViewById(R.id.btn7);
btn8 = (Button)findViewById(R.id.btn8);
btn9 = (Button)findViewById(R.id.btn9);
btnPlus = (Button)findViewById(R.id.btnPlus);
btnReduce = (Button)findViewById(R.id.btnReduce);
btnMultiply = (Button)findViewById(R.id.btnMultiply);
btnPoint = (Button)findViewById(R.id.btnPoint);
btnSum = (Button)findViewById(R.id.btnSum);
btnDivide = (Button)findViewById(R.id.btnDivide);
clean = (Button)findViewById(R.id.clean);
btn0.setOnClickListener(new OnClick());//注册监听器
btn1.setOnClickListener(new OnClick());
btn2.setOnClickListener(new OnClick());
btn3.setOnClickListener(new OnClick());
btn4.setOnClickListener(new OnClick());
btn5.setOnClickListener(new OnClick());
btn6.setOnClickListener(new OnClick());
btn7.setOnClickListener(new OnClick());
btn8.setOnClickListener(new OnClick());
btn9.setOnClickListener(new OnClick());
btnPlus.setOnClickListener(new OnClick());
btnReduce.setOnClickListener(new OnClick());
btnMultiply.setOnClickListener(new OnClick());
btnPoint.setOnClickListener(new OnClick());
btnSum.setOnClickListener(new OnClick());
btnDivide.setOnClickListener(new OnClick());
clean.setOnClickListener(new OnClick());
}
class OnClick implements OnClickListener{
public void onClick(View v){
double first,res,second;
String [] arr;
switch(v.getId()){
//编写监听事件,如果按钮为数字则直接显示在文本框上
case R.id.btn0:
txt.setText(str=str+"0" );
break;
case R.id.btn1:
txt.setText(str=str+"1" );
break;
case R.id.btn2:
txt.setText(str=str+"2" );
break;
case R.id.btn3:
txt.setText(str=str+"3" );
break;
case R.id.btn4:
txt.setText(str=str+"4" );
break;
case R.id.btn5:
txt.setText(str=str+"5" );
break;
case R.id.btn6:
txt.setText(str=str+"6" );
break;
case R.id.btn7:
txt.setText(str=str+"7" );
break;
case R.id.btn8:
txt.setText(str=str+"8" );
break;
case R.id.btn9:
txt.setText(str=str+"9" );
break;
case R.id.btnPlus:
txt.setText(str=str+"+" );
break;
case R.id.btnReduce:
txt.setText(str=str+"-" );
break;
case R.id.btnMultiply:
txt.setText(str=str+"*" );
break;
case R.id.btnDivide:
txt.setText(str=str+"/" );
break;
case R.id.btnSum:
//点击等于按钮,利用正则把文本框中的运算符提取出来,再利用parseDouble将剩下的字符转为数字,最后进行运算
if(str.contains("+")) {arr=str.split("\\+");
first=Double.parseDouble(arr[0]); second=Double.parseDouble(arr[1]);res=first+second;
txt.setText(String.valueOf(res));}
if(str.contains("-")) {arr=str.split("-");
first=Double.parseDouble(arr[0]); second=Double.parseDouble(arr[1]);res=first-second;
txt.setText(String.valueOf(res));}
if(str.contains("*")) {arr=str.split("\\*");
first=Double.parseDouble(arr[0]); second=Double.parseDouble(arr[1]);res=first*second;
txt.setText(String.valueOf(res));}
if(str.contains("/")) {arr=str.split("/");
first=Double.parseDouble(arr[0]); second=Double.parseDouble(arr[1]);res=first/second;
txt.setText(String.valueOf(res));}
break;
case R.id.clean:
//点击清除按钮,将str置空,再替换到输入文本框上
str="";
txt.setText(str);
}
}
}
}
效果图:


本次Android作业的主要内容是实现一个计算器,涉及activity_main.xml和MainActivity.java,还展示了效果图。
1647

被折叠的 条评论
为什么被折叠?



