用Android studio实现简易计算器功能
作者:晴笑歌 发布时间:2021-07-31 21:06:13
标签:Android,studio,计算器
用Android studio做一个简易计算器,供大家参考,具体内容如下
长话短说,先建立一个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"
>
<!--文本标签-->
<EditText
android:id="@+id/edit"
android:layout_width="350dp"
android:layout_height="wrap_content"
android:layout_columnSpan="4"
android:layout_marginLeft="4px"
android:gravity="left"
android:textSize="50dp" />
<Button
android:id="@+id/clear"
android:layout_width="353dp"
android:layout_height="wrap_content"
android:layout_columnSpan="4"
android:text="清除"
android:textSize="26sp" />
<Button
android:id="@+id/btn1"
android:text="1"
android:textSize="26sp" />
<Button
android:id="@+id/btn2"
android:text="2"
android:textSize="26sp" />
<Button
android:id="@+id/btn3"
android:text="3"
android:textSize="26sp" />
<Button
android:id="@+id/jia"
android:text="+"
android:textSize="26sp" />
<Button
android:id="@+id/btn4"
android:text="4"
android:textSize="26sp" />
<Button
android:id="@+id/btn5"
android:text="5"
android:textSize="26sp" />
<Button
android:id="@+id/btn6"
android:text="6"
android:textSize="26sp" />
<Button
android:id="@+id/jian"
android:text="-"
android:textSize="26sp" />
<Button
android:id="@+id/btn7"
android:text="7"
android:textSize="26sp" />
<Button
android:id="@+id/btn8"
android:text="8"
android:textSize="26sp" />
<Button
android:id="@+id/btn9"
android:text="9"
android:textSize="26sp" />
<Button
android:id="@+id/cheng"
android:text="*"
android:textSize="26sp" />
<Button
android:id="@+id/dian"
android:text="."
android:textSize="26sp" />
<Button
android:id="@+id/btn0"
android:text="0"
android:textSize="26sp" />
<Button
android:id="@+id/sum"
android:text="="
android:textSize="26sp" />
<Button
android:id="@+id/chu"
android:text="/"
android:textSize="26sp" />
完成后再找到Mainactivity.java,输入以下代码:
package com.example.a00_ff_59_7f_7e_dc_54_3;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
Button btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9, btn0; // 数字按钮
Button jia, jian, cheng, chu, dian, sum, clear;// +号
EditText edit; // 显示文本
private String ss = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 获取页面上的控件
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);
btn0 = (Button) findViewById(R.id.btn0);
jia = (Button) findViewById(R.id.jia);
jian = (Button) findViewById(R.id.jian);
cheng = (Button) findViewById(R.id.cheng);
chu = (Button) findViewById(R.id.chu);
sum = (Button) findViewById(R.id.sum);
dian = (Button) findViewById(R.id.dian);
clear = (Button) findViewById(R.id.clear);
edit = (EditText) findViewById(R.id.edit);
// 按钮的单击事件
btn1.setOnClickListener(new Click());
btn2.setOnClickListener((View.OnClickListener) new Click());
btn3.setOnClickListener(new Click());
btn4.setOnClickListener(new Click());
btn5.setOnClickListener(new Click());
btn6.setOnClickListener(new Click());
btn7.setOnClickListener(new Click());
btn8.setOnClickListener(new Click());
btn9.setOnClickListener(new Click());
btn0.setOnClickListener(new Click());
jia.setOnClickListener(new Click());
jian.setOnClickListener(new Click());
cheng.setOnClickListener(new Click());
chu.setOnClickListener(new Click());
sum.setOnClickListener(new Click());
dian.setOnClickListener(new Click());
clear.setOnClickListener(new Click());
edit.setOnClickListener(new Click());
}
// 设置按钮点击后的监听
class Click implements View.OnClickListener {
public void onClick(View v) {
switch (v.getId()) { //switch循环获取点击按钮后的值
case R.id.clear: {
ss = "";
edit.setText(ss);
}
break;
case R.id.btn0: {
ss += "0";
edit.setText(ss);
}
break;
case R.id.btn1: {
ss += "1";
edit.setText(ss);
}
break;
case R.id.btn2: {
ss += "2";
edit.setText(ss);
}
break;
case R.id.btn3: {
ss += "3";
edit.setText(ss);
}
break;
case R.id.btn4: {
ss += "4";
edit.setText(ss);
}
break;
case R.id.btn5: {
ss += "5";
edit.setText(ss);
}
break;
case R.id.btn6: {
ss += "6";
edit.setText(ss);
}
break;
case R.id.btn7: {
ss += "7";
edit.setText(ss);
}
break;
case R.id.btn8: {
ss += "8";
edit.setText(ss);
}
break;
case R.id.btn9: {
ss += "0";
edit.setText(ss);
}
break;
case R.id.dian: {
if (ss.length() == 0 || ss.indexOf(" ") == ss.length() - 3 || ss.lastIndexOf(".") > ss.indexOf(" ")) {
break;
} else {
ss += ".";
edit.setText(ss);
}
}
break;
case R.id.jia: {
if (ss.length() == 0) {
break;
}
if (ss.contains(" ")) {
if (ss.indexOf(" ") == ss.length() - 3 || ss.indexOf(" ") == ss.length() - 2 || ss.indexOf(" ") == ss.length() - 1)
break;
getResult();
}
ss += " + ";
edit.setText(ss);
}
break;
case R.id.jian: {
if (ss.length() == 0) {
break;
}
if (ss.contains(" ")) {
if (ss.indexOf(" ") == ss.length() - 3 || ss.indexOf(" ") == ss.length() - 2 || ss.indexOf(" ") == ss.length() - 1)
break;
getResult();
}
ss += " - ";
edit.setText(ss);
}
break;
case R.id.cheng: {
if (ss.length() == 0) {
break;
}
if (ss.contains(" ")) {
if (ss.indexOf(" ") == ss.length() - 3 || ss.indexOf(" ") == ss.length() - 2 || ss.indexOf(" ") == ss.length() - 1)
break;
getResult();
}
ss += " × ";
edit.setText(ss);
}
break;
case R.id.chu: {
if (ss.length() == 0) {
break;
}
if (ss.contains(" ")) {
if (ss.indexOf(" ") == ss.length() - 3 || ss.indexOf(" ") == ss.length() - 2 || ss.indexOf(" ") == ss.length() - 1)
break;
getResult();
}
ss += " / ";
edit.setText(ss);
}
break;
case R.id.sum:
getResult();
break;
}
}
private void getResult() {
double result = 0;
if (ss == null || ss.equals("")) return;
if (!ss.contains(" ")) return;
String s1 = ss.substring(0, ss.indexOf(" "));
String op = ss.substring(ss.indexOf(" ") + 1, ss.indexOf(" ") + 2);
String s2 = ss.substring(ss.indexOf(" ") + 3);
if (!s1.equals("") && !s2.equals("")) {
double d1 = Double.parseDouble(s1);
double d2 = Double.parseDouble(s2);
switch (op) {
case "+":
result = d1 + d2;
break;
case "-":
result = d1 - d2;
break;
case "×":
result = d1 * d2;
break;
case "÷": {
if (d2 == 0) {
edit.setText("不能除以零");
break;
}
result = d1 / d2 * 1.0;
}
break;
}
int r = (int) result;
if (r == result) {
edit.setText("" + r);
ss = "" + r;
} else {
edit.setText(result + "");
ss = "" + result;
}
}
}
}
}
这时我们可以预览应用程序运行时的界面:
接下来就可以用虚拟设备运行一下我们的应用:
依次检查上面三个地方,没问题后点击运行:
这是我们做好应用的图标,打开运行一下:
接下来进行真机运行,将手机连接到电脑,Android studio显示手机型号后点击运行:
打开安装到手机上的应用程序:
成功运行。
来源:https://blog.csdn.net/weixin_43717037/article/details/111163303


猜你喜欢
- Android 媒体库数据更新方法总结在项目中,我们经常要创建个自己的目录,里面存放一些图片啊文件之类,比如:我在SD卡中刚创建了一个文件夹
- 什么是apllo开源分布式配置中心?apllo开源分布式配置中心是携程框架部门研发的一个能够集中化管理应用的不同环境、不同集群的配置,并且具
- List映射表List列表是一个java集合存储在序列中的元素,并允许重复的元素。此接口的用户可以精确地控制,其中列表中的每个元素插入。用户
- 在早期的Java版本中,如果需要对指定目录下的文件进行遍历,则需要用递归的方法来实现,这种方法有点复杂,而且灵活性也不高。而使用Java7中
- 串口通信(Serial Communications)是指外设和计算机间通过数据信号线、地线等按位(bit)进行传输数据的一种通信方式,属于
- 1.object.toString()方法这种方法要注意的是object不能为null,否则会报NullPointException,一般别
- 项目里一直用的是 spring-security ,不得不说,spring-security 真是东西太多了,学习难度太大(可能我比较菜),
- 开发Android APP微信支付功能,需要完成三个步骤:第一步生成预支付订单、第二步生成微信支付参数、第三步调起微信APP支付。除了需要审
- 递归方法定义本身调用方法本身的现象叫做递归在这之前我们学的东西:例如StringBuffer.append().append().appen
- 每一个应用都是具备一个功能,那就是版本更新,我记得我之前在面试的时候,面试官让我介绍一下应用版本更新的一些具体操作。我当时因为做过这个功能,
- 一. String对象的比较1. ==比较是否引用同一个对象注意:对于内置类型,==比较的是变量中的值;对于引用类型 , == 比较的是引用
- Collections是一个工具类,sort是其中的静态方法,是用来对List类型进行排序的,它有两种参数形式: public static
- 在读《Spring in Action》一书,读到Spring数据访问模板化的内容时,书中以乘坐飞机拖运行李为例,介绍了模板方法这一设计模式
- springboot 异常与重定向在spring中,有两个重定向类型:301,永久性跳转302,暂时性跳转默认调用302。1.下面先通过一个
- 本文实例为大家分享了C#使用NPOI设置Excel下拉选项的具体代码,供大家参考,具体内容如下最近在做一个导出模板的功能,需要限制用户的某些
- JDK8中有双冒号的用法,就是把方法当做参数传到stream内部,使stream的每个元素都传入到该方法里面执行一下。代码其实很简单:以前的
- 一、abstract 抽象的抽象类:被abstract 修饰的类语法: abstract class 类名{}抽象方法 : 被a
- 本文实例讲述了C#从画刷创建画笔的方法。分享给大家供大家参考。具体实现方法如下:using System;using System.Coll
- 这几天开发遇到一个需求:将自定义文件后缀添加默认图标双击自定义的文件后缀可以自动关联到指定的应用程序并自动打开上述第一、二两点其实是一个需求
- map中相同的key保存多个value值在java中,Map集合中只能保存一个相同的key,如果再添加相同的key,则之后添加的key的值会