Android移动开发实现简单计算器功能,供大家参考,具体内容如下
前言
android 开发小实验
android 移动开发实现 简易计算器功能
小白也能轻松上手,复制粘贴就可使用
使用工具
Android Studio 或者 intellij idea
首先体验一下结果
预览图
源码
前端页面布局
activity_calculator.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
android:background="@drawable/bg2"
> <TextView
android:layout_width="410dp"
android:layout_height="60dp"
android:text="计算器"
android:textSize="35dp"
android:gravity="center"
android:background="#A6EFEF"
>
</TextView>
<TextView
android:id="@+id/text_show"
android:layout_width="410dp"
android:layout_height="80dp"
android:background="#EAB9B9"
android:textSize="30dp"
/>
<EditText
android:id="@+id/ediText"
android:layout_width="410dp"
android:layout_height="70dp"
android:layout_marginBottom="10dp"
android:background="#EAB9B9"
android:editable="false"
android:gravity="right|center_vertical"
android:paddingRight="20dp"
android:hint="请输入数字"
android:textSize="30sp"
/>
<GridLayout
android:layout_width="410dp"
android:layout_height="400dp"
android:columnCount="5"
android:rowCount="6">
<Button
android:id="@+id/button6"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:text="←"
android:background="#87F4F8"
android:layout_margin="2dp"
android:textSize="20dp"
/>
<Button
android:id="@+id/button7"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:text="CE"
android:background="#87F4F8"
android:layout_margin="2dp"
android:textSize="20dp"
/>
<Button
android:id="@+id/button8"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:text="C"
android:background="#87F4F8"
android:layout_margin="2dp"
android:textSize="20dp"
/>
<Button
android:id="@+id/button9"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:text="±"
android:background="#87F4F8"
android:layout_margin="2dp"
android:textSize="20dp"
/>
<Button
android:id="@+id/button10"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:text="√"
android:background="#87F4F8"
android:layout_margin="2dp"
android:textSize="20dp"
/>
<Button
android:id="@+id/nine"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:text="9"
android:background="#87F4F8"
android:layout_margin="2dp"
android:textSize="20dp"
/>
<Button
android:id="@+id/eight"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:text="8"
android:background="#87F4F8"
android:layout_margin="2dp"
android:textSize="20dp"
/>
<Button
android:id="@+id/seven"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:text="7"
android:background="#87F4F8"
android:layout_margin="2dp"
android:textSize="20dp"
/>
<Button
android:id="@+id/divider"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:text="/"
android:background="#87F4F8"
android:layout_margin="2dp"
android:textSize="20dp"
/>
<Button
android:id="@+id/button15"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:text="%"
android:background="#87F4F8"
android:layout_margin="2dp"
android:textSize="20dp"
/>
<Button
android:id="@+id/four"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:text="4"
android:background="#87F4F8"
android:layout_margin="2dp"
android:textSize="20dp"
/>
<Button
android:id="@+id/five"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:text="5"
android:background="#87F4F8"
android:layout_margin="2dp"
android:textSize="20dp"
/>
<Button
android:id="@+id/six"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:text="6"
android:background="#87F4F8"
android:layout_margin="2dp"
android:textSize="20dp"
/>
<Button
android:id="@+id/multiply"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:text="*"
android:background="#87F4F8"
android:layout_margin="2dp"
android:textSize="20dp"
/>
<Button
android:id="@+id/button20"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:text="1/X"
android:background="#87F4F8"
android:layout_margin="2dp"
android:textSize="20dp"
/>
<Button
android:id="@+id/one"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:text="1"
android:background="#87F4F8"
android:layout_margin="2dp"
android:textSize="20dp"
/>
<Button
android:id="@+id/two"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:text="2"
android:background="#87F4F8"
android:layout_margin="2dp"
android:textSize="20dp"
/>
<Button
android:id="@+id/three"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:text="3"
android:background="#87F4F8"
android:layout_margin="2dp"
android:textSize="20dp"
/>
<Button
android:id="@+id/minus"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:text="-"
android:background="#87F4F8"
android:layout_margin="2dp"
android:textSize="20dp"
/>
<Button
android:id="@+id/equal"
android:layout_width="80dp"
android:layout_height="100dp"
android:layout_rowSpan="2"
android:text="="
android:background="#87F4F8"
android:layout_margin="2dp"
android:textSize="20dp"
/>
<Button
android:id="@+id/zero"
android:layout_width="160dp"
android:layout_height="wrap_content"
android:layout_columnSpan="2"
android:text="0"
android:background="#87F4F8"
android:layout_margin="2dp"
android:textSize="20dp"
/>
<Button
android:id="@+id/point"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:text="."
android:background="#87F4F8"
android:layout_margin="2dp"
android:textSize="20dp"
/>
<Button
android:id="@+id/add"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:text="+"
android:background="#87F4F8"
android:layout_margin="2dp"
android:textSize="20dp"
/>
</GridLayout>
</LinearLayout>
后端源码
CalculatorActivity.java
package com.example.myappch5;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class CalculatorActivity extends Activity implements View.OnClickListener{
//数字0-9
Button number_0;
Button number_1;
Button number_2;
Button number_3;
Button number_4;
Button number_5;
Button number_6;
Button number_7;
Button number_8;
Button number_9;
//运算符
Button add; //+
Button minus; //-
Button mul; //*
Button divide; //除
Button equal; //=
Button point; //小数点
//清除
Button det;
boolean clean; //清空标识
EditText editText; //结果显示集
TextView text_show; //显示计算器文本控件
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_calculator);
//数字0——9实例化
number_0=findViewById(R.id.zero);
number_1=findViewById(R.id.one);
number_2=findViewById(R.id.two);
number_3=findViewById(R.id.three);
number_4=findViewById(R.id.four);
number_5=findViewById(R.id.five);
number_6=findViewById(R.id.six);
number_7=findViewById(R.id.seven);
number_8=findViewById(R.id.eight);
number_9=findViewById(R.id.nine);
//运算符实例化
add=findViewById(R.id.add); //加
minus=findViewById(R.id.minus); //减
mul=findViewById(R.id.multiply); //乘
divide=findViewById(R.id.divider); //除
equal=findViewById(R.id.equal); //等
point=findViewById(R.id.point); //小数点
det=findViewById(R.id.button8); //清除
//结果显示集
text_show = findViewById(R.id.text_show);
editText=findViewById(R.id.ediText);
//添加事件点击事件
// 数字点击事件
number_0.setOnClickListener( this);
number_1.setOnClickListener(this);
number_2.setOnClickListener( this);
number_3.setOnClickListener( this);
number_4.setOnClickListener(this);
number_5.setOnClickListener( this);
number_6.setOnClickListener( this);
number_7.setOnClickListener(this);
number_8.setOnClickListener( this);
number_9.setOnClickListener( this);
// 符号点击事件
add.setOnClickListener( this);
minus.setOnClickListener( this);
mul.setOnClickListener( this);
divide.setOnClickListener( this);
point.setOnClickListener( this);
equal.setOnClickListener( this);
det.setOnClickListener( this);
}
//读取每个按钮内容
public void onClick(View view){
//获取文本内容
String input=editText.getText().toString();
switch (view.getId()){
case R.id.zero: // 0
case R.id.one: // 1
case R.id.two: // 2
case R.id.three: // 3
case R.id.four: // 4
case R.id.five: // 5
case R.id.six: // 6
case R.id.seven: // 7
case R.id.eight: // 8
case R.id.nine: // 9
case R.id.point: //小数点
if(clean){
clean=false;
editText.setText(""); //赋值为空
}
editText.setText(input+((Button)view).getText()+""); //结果集就是本身
break;
case R.id.add:
case R.id.minus: // 减
case R.id.multiply: // 乘
case R.id.divider: // 除
if(clean){
clean=false;
input="";
editText.setText("");
}
editText.setText(input+" "+((Button)view).getText()+" ");
break;
case R.id.button8: //清除
if(clean){
clean=false;
input="";
editText.setText("");
}else if(input!=null || !input.equals("")){
//如果获取内容为空
editText.setText(input.substring(0,input.length() - 1 ));//结果集为空
break;
}
break;
case R.id.equal: //运算结果=
getResult(); //调用处理结果方法
break;
}
}
//运算结果方法
private void getResult(){
String exp=editText.getText().toString(); //获取文本框内容
if(exp==null||exp.equals("")){
return;
}
if(!exp.contains("")){
return;
}
if(clean){
clean=false;
return;
}
clean=true;
double result=0;
//进行截取
// 运算符前的数字
String s1=exp.substring(0,exp.indexOf(" "));
//运算符
String op=exp.substring(exp.indexOf(" ")+1,exp.indexOf(" ")+2);
//运算符后的数字
String s2=exp.substring(exp.indexOf(" ")+3);
if(!s1.equals("")&&!s2.equals("")){
//如果包含小数点的运算
double d1=Double.parseDouble(s1);//则数字都是double类型
double d2=Double.parseDouble(s2);
if(op.equals("+")){
// 如果是+
result=d1+d2;
text_show.setText(d1+ "+" +d2+"=");
}else if(op.equals("-")){
//如果是-
result=d1-d2;
text_show.setText(d1+ "-" +d2+"=");
}else if(op.equals("*")){
//如果是*
result=d1*d2;
text_show.setText(d1+ "*" +d2+"=");
}else if(op.equals("/")){
if(d2==0){
//如果被除数是0
result=0;//则结果为0
}
else {
//否则执行正常运算
result=d1/d2;
text_show.setText(d1+ "/" +d2+"=");
}
}
if(!s1.contains(".") &&!s2.contains(".")&&!op.equals("/")){
//如果是整数类型
int r=(int)result;//都是整形
editText.setText(r+"");
}else {
editText.setText(result+"");
}
}else if(!s1.equals("")&& s2.equals("")){
//如果只输入运算符前的数字
editText.setText(exp);//直接返回当前输入内容
}else if (s1.equals("")&& !s2.equals("")){
//如果是只输入运算符后面的数
double d2 =Double.parseDouble(s2);
//运算符当前没有输入数字
if(op.equals("+")){
result= 0 + d2;
text_show.setText(d2+"=");
}else if(op.equals("-")){
result= 0 - d2;
text_show.setText(d2+"=");
}else if (op.equals("*")){
result= 0;
}else if(op.equals("/")){
result= 0;
}
if(!s1.contains(".")&&!s2.contains(".")){
int r=(int) result;
editText.setText(r+"");
}else {
editText.setText(result+"");
}
}else {
editText.setText("");
}
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。