AndroidStudio设计一个计算器

界面设计

 

activity_calcuator.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:background="#EEEEEE"android:orientation ="vertical"android:padding="5dp"><ScrollViewandroid:layout_width="match_parent"android:layout_height="wrap_content"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical"><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"android:text="@string/simple_calculator"android:textColor="@color/black"android:textSize="20sp" /><TextViewandroid:id="@+id/tv_result"android:layout_width="match_parent"android:layout_height="wrap_content"android:background="@color/white"android:gravity="right|bottom"android:lines="3"android:text="0"android:textColor="@color/black"android:textSize="25sp" /><GridLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:columnCount="4"android:rowCount="5"><Buttonandroid:id="@+id/btn_cancel"android:layout_width="0dp"android:layout_height="75dp"android:layout_columnWeight="1"android:gravity="center"android:text="@string/cancel"android:textColor="@color/black"android:textSize="@dimen/button_font_size" /><Buttonandroid:id="@+id/btn_divide"android:layout_width="0dp"android:layout_height="75dp"android:layout_columnWeight="1"android:gravity="center"android:text="➗"android:textColor="@color/black"android:textSize="30sp" /><Buttonandroid:id="@+id/btn_multiply"android:layout_width="0dp"android:layout_height="75dp"android:layout_columnWeight="1"android:gravity="center"android:text="x"android:textColor="@color/black"android:textSize="30sp" /><Buttonandroid:id="@+id/btn_clear"android:layout_width="0dp"android:layout_height="75dp"android:layout_columnWeight="1"android:gravity="center"android:text="C"android:textColor="@color/black"android:textSize="30sp" /><Buttonandroid:id="@+id/btn_seven"android:layout_width="0dp"android:layout_height="75dp"android:layout_columnWeight="1"android:gravity="center"android:text="7"android:textColor="@color/black"android:textSize="30sp" /><Buttonandroid:id="@+id/btn_eight"android:layout_width="0dp"android:layout_height="75dp"android:layout_columnWeight="1"android:gravity="center"android:text="8"android:textColor="@color/black"android:textSize="30sp" /><Buttonandroid:id="@+id/btn_nine"android:layout_width="0dp"android:layout_height="75dp"android:layout_columnWeight="1"android:gravity="center"android:text="9"android:textColor="@color/black"android:textSize="30sp" /><Buttonandroid:id="@+id/btn_plus"android:layout_width="0dp"android:layout_height="75dp"android:layout_columnWeight="1"android:gravity="center"android:text="+"android:textColor="@color/black"android:textSize="30sp" /><Buttonandroid:id="@+id/btn_four"android:layout_width="0dp"android:layout_height="75dp"android:layout_columnWeight="1"android:gravity="center"android:text="4"android:textColor="@color/black"android:textSize="30sp" /><Buttonandroid:id="@+id/btn_five"android:layout_width="0dp"android:layout_height="75dp"android:layout_columnWeight="1"android:gravity="center"android:text="5"android:textColor="@color/black"android:textSize="30sp" /><Buttonandroid:id="@+id/btn_six"android:layout_width="0dp"android:layout_height="75dp"android:layout_columnWeight="1"android:gravity="center"android:text="6"android:textColor="@color/black"android:textSize="30sp" /><Buttonandroid:id="@+id/btn_minus"android:layout_width="0dp"android:layout_height="75dp"android:layout_columnWeight="1"android:gravity="center"android:text="-"android:textColor="@color/black"android:textSize="30sp" /><Buttonandroid:id="@+id/btn_one"android:layout_width="0dp"android:layout_height="75dp"android:layout_columnWeight="1"android:gravity="center"android:text="1"android:textColor="@color/black"android:textSize="30sp" /><Buttonandroid:id="@+id/btn_two"android:layout_width="0dp"android:layout_height="75dp"android:layout_columnWeight="1"android:gravity="center"android:text="2"android:textColor="@color/black"android:textSize="30sp" /><Buttonandroid:id="@+id/btn_three"android:layout_width="0dp"android:layout_height="75dp"android:layout_columnWeight="1"android:gravity="center"android:text="3"android:textColor="@color/black"android:textSize="30sp" /><ImageButtonandroid:id="@+id/ib_sqrt"android:layout_width="0dp"android:layout_height="@dimen/button_height"android:layout_columnWeight="1"android:scaleType="centerInside"android:src="@drawable/sqtr" /><Buttonandroid:id="@+id/btn_reciprocal"android:layout_width="0dp"android:layout_height="@dimen/button_height"android:layout_columnWeight="1"android:gravity="center"android:text="@string/reciprocal"android:textColor="@color/black"android:textSize="@dimen/button_font_size" /><Buttonandroid:id="@+id/btn_zero"android:layout_width="0dp"android:layout_height="@dimen/button_height"android:layout_columnWeight="1"android:gravity="center"android:text="@string/zero"android:textColor="@color/black"android:textSize="@dimen/button_font_size" /><Buttonandroid:id="@+id/btn_dot"android:layout_width="0dp"android:layout_height="@dimen/button_height"android:layout_columnWeight="1"android:gravity="center"android:text="@string/dot"android:textColor="@color/black"android:textSize="@dimen/button_font_size" /><Buttonandroid:id="@+id/btn_equal"android:layout_width="0dp"android:layout_height="@dimen/button_height"android:layout_columnWeight="1"android:gravity="center"android:text="@string/equal"android:textColor="@color/black"android:textSize="@dimen/button_font_size" /></GridLayout></LinearLayout></ScrollView></LinearLayout>

 

dimens.xml

<resources><dimen name="fab_margin">16dp</dimen><dimen name="button_font_size">30sp</dimen><dimen name="button_height">75dp</dimen>
</resources>

 strings.xml

<resources><string name="app_name">chapter03</string><string name="action_settings">Settings</string><!-- Strings used for fragments for navigation --><string name="first_fragment_label">First Fragment</string><string name="second_fragment_label">Second Fragment</string><string name="next">Next</string><string name="previous">Previous</string><string name="hello">你好,世界</string><string name="simple_calculator">牛逼算器</string><string name="cancel">CE</string><string name="divide">➗</string><string name="multiply">x</string><string name="clear">C</string><string name="seven">7</string><string name="eight">8</string><string name="nine">9</string><string name="plus">+</string><string name="four">4</string><string name="five">5</string><string name="six">6</string><string name="minus">-</string><string name="one">1</string><string name="two">2</string><string name="three">3</string><string name="reciprocal">1/x</string><string name="zero">0</string><string name="dot">.</string><string name="equal">=</string>
</resources>

CalcuatorActivity.java逻辑代码:
package com.example.myapplication;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.TextView;public class CalcuatorActivity extends AppCompatActivity {private TextView tv_result;//第一个操作数private String firstNum = "";//运算符private String operator = "";//第二个操作数private String secondNum = "";//当前的计算结果private String result = "";//显示的文本内容private String showText = "";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);Log.d("CalcuatorActiviy","onCreat() method called");setContentView(R.layout.activity_calcuator);//从布局中获取名交tv_result的文本视图tv_result = findViewById(R.id.tv_result);//下面每个按钮控件都组册了点击监听findViewById(R.id.btn_cancel).setOnClickListener((View.OnClickListener) this);findViewById(R.id.btn_divide).setOnClickListener((View.OnClickListener) this);findViewById(R.id.btn_multiply).setOnClickListener((View.OnClickListener) this);findViewById(R.id.btn_clear).setOnClickListener((View.OnClickListener) this);findViewById(R.id.btn_seven).setOnClickListener((View.OnClickListener) this);findViewById(R.id.btn_eight).setOnClickListener((View.OnClickListener) this);findViewById(R.id.btn_nine).setOnClickListener((View.OnClickListener) this);findViewById(R.id.btn_plus).setOnClickListener((View.OnClickListener) this);findViewById(R.id.btn_four).setOnClickListener((View.OnClickListener) this);findViewById(R.id.btn_five).setOnClickListener((View.OnClickListener) this);findViewById(R.id.btn_six).setOnClickListener((View.OnClickListener) this);findViewById(R.id.btn_minus).setOnClickListener((View.OnClickListener) this);findViewById(R.id.btn_one).setOnClickListener((View.OnClickListener) this);findViewById(R.id.btn_two).setOnClickListener((View.OnClickListener) this);findViewById(R.id.btn_three).setOnClickListener((View.OnClickListener) this);findViewById(R.id.btn_reciprocal).setOnClickListener((View.OnClickListener) this);findViewById(R.id.btn_zero).setOnClickListener((View.OnClickListener) this);findViewById(R.id.btn_dot).setOnClickListener((View.OnClickListener) this);findViewById(R.id.btn_equal).setOnClickListener((View.OnClickListener) this);findViewById(R.id.ib_sqrt).setOnClickListener((View.OnClickListener) this);}//@Overridepublic void onClick(View v){String inputText;//如果是开根号按钮if(v.getId() == R.id.ib_sqrt){inputText = "√";}else{//除了开根号之外的其他按钮inputText = ((TextView) v).getText().toString();}switch(v.getId()){//点击了清除按钮case R.id.btn_clear:clear();break;//点击了取消按钮case R.id.btn_cancel:break;//点击了加减乘除case R.id.btn_plus:case R.id.btn_minus:case R.id.btn_multiply:case R.id.btn_divide:operator = inputText;//运算符refreshText(showText + operator);break;//等号按钮case R.id.btn_equal://加减乘除四则运算double calculate_result = calculateFour();refreshOperate(String.valueOf(calculate_result));refreshText(showText + "=" + result);// 开根号按钮case R.id.ib_sqrt:double sqrt_result = Math.sqrt(Double.parseDouble(firstNum));refreshOperate(String.valueOf(sqrt_result));refreshText(showText + "√=" + result);break;//点击了求倒数按钮case R.id.btn_reciprocal:double reciprocal_result = 1.0/Double.parseDouble(firstNum);refreshOperate(String.valueOf(reciprocal_result));refreshText(showText + "/=" + result);break;default://上次结果已经出来了if(result.length()>0&&operator.equals("")){clear();}//无运算符,则继续拼接第一个操作数if(operator.equals("")){firstNum = firstNum + inputText;}else{//有运算符,则继续拼接第二个操作符secondNum = secondNum + inputText;}if(showText.equals("0")&&!inputText.equals(".")){refreshText(inputText);}else {refreshText(showText + inputText);}break;}}//四则运算,返回计算结果private double calculateFour(){switch (operator){case "+":return Double.parseDouble(firstNum) + Double.parseDouble(secondNum);case "-":return Double.parseDouble(firstNum) - Double.parseDouble(secondNum);case "8":return Double.parseDouble(firstNum) * Double.parseDouble(secondNum);default:return Double.parseDouble(firstNum) / Double.parseDouble(secondNum);}}private  void clear(){refreshOperate("");refreshText("");}//刷新运算结果private void refreshOperate(String new_result){result = new_result;firstNum = result;secondNum = "";operator = "";}//刷新文本显示private void refreshText(String text){showText = text;tv_result.setText(showText);}}

这完全是前端的领域我觉得

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/10971.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3ds Max图文教程: 创建致命的冠状病毒动画

推荐&#xff1a; NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 1. 病毒建模 步骤 1 打开 3ds Max。 打开 3ds Max 步骤 2 在透视视口中创建一个半径为 50&#xff0c;线段为 20 的 GeoSphere。 创建地球 步骤 3 打开修改器列表并将置换修改器应用于地理 球。 置换…

【STL】模拟实现反向迭代器

目录 1. 读源码 2. 搭建框架 3. 迭代器的操作 operator*() operator->() operator() operator--() operator!() 4. 实现 list 的反向迭代器 5. 实现 vector 的反向迭代器 6. 源码分享 写在最后&#xff1a; 1. 读源码 我们之前实现的 vector&#xff0c;list…

类加载机制,类加载顺序

类加载顺序 ①类加载从上往下执行&#xff0c;依次执行静态的初始化语句和初始化块&#xff0c;而且类加载优先于对象创建。&#xff08;静态初始化语句和初始化块只加载一次&#xff09; ②创建本类的对象时&#xff0c;从上往下执行一次非静态的初始化语句和初始化块&#…

Unity《勇士传说》开发日记:如何制作可互动标识

要实现的需求&#xff1a; 在游戏当中&#xff0c;我们的主角走到宝箱前&#xff0c;可以将宝箱打开&#xff0c;走到洞穴口可以进入下一个场景&#xff0c;此时需要有个互动标识来提示用户。如图所示&#xff1a; 当角色走到宝箱前&#xff0c;弹出互动标识提示用户按下E键可…

关于idea如何成功运行web项目

导入项目 如图 依次选择 file - new - Project from Existing Sources 选择存放的项目目录地址 如图 导入完成 点击ok 如图 依次选择 Create project from existing sources 点击next如图 &#xff0c;此处默认即可 点击 next如图 点击next有该提示 是因为之前导入过…

jmeter接口测试、压力测试简单实现

jmeter测试的组件执行顺序&#xff1a; 测试计划—>线程组—>配置元件—>前置处理器—>定时器—>逻辑控制器—>取样器—>后置处理器—>断言—>监听器 组件的作用范围&#xff1a; 同级组件同级组件下的子组件父组件 目前市面上的三类接口 1、基…

10分钟带你实现一个Android自定义View:带动画的等级经验条

先展示一下静态效果图 介绍一下我们的实现流程&#xff1a; 首先整个经验条有一个圆角边框的背景打底&#xff1b;然后给经验条绘制一条轨道&#xff0c;让用户比较直观地看到总进度的长度&#xff1b;在轨道的上层绘制我们的渐变色经验条&#xff1b;在经验条的上层绘制等级…

用html+javascript打造公文一键排版系统8:附件及标题排版

最近工作有点忙&#xff0c;所 以没能及时完善公文一键排版系统&#xff0c;现在只好熬夜更新一下。 有时公文有包括附件&#xff0c;招照公文排版规范&#xff1a; 附件应当另面编排&#xff0c;并在版记之前&#xff0c;与公文正文一起装订。“附件”二字及附件顺序号用3号黑…

Python(四十六)列表

❤️ 专栏简介&#xff1a;本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中&#xff0c;我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 &#xff1a;本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…

【Java基础教程】(四十八)集合体系篇 · 上:全面解析 Collection、List、Set常用子接口及集合元素迭代遍历方式~【文末送书】

Java基础教程之集合体系 上 &#x1f539;本章学习目标1️⃣ 类集框架介绍2️⃣ 单列集合顶层接口&#xff1a;Collection3️⃣ List 子接口3.1 ArrayList 类&#x1f50d; 数组&#xff08;Array&#xff09;与列表&#xff08;ArrayList&#xff09;有什么区别?3.2 LinkedL…

在 ArcGIS Pro 中使用 H3 创建蜂窝六边形

H3是Uber开发的分层索引系统,它使用六边形来平铺地球表面。H3在二十面体(一个具有20个三角形面和12个顶点的形状)上构建其六边形网格。由于仅用六边形不可能平铺二十面体,因此每个分辨率需要12个五边形来完成网格。分层索引网格意味着每个六边形都可以细分为子单元六边形。…

给jupter设置新环境

文章目录 给jupternotebook设置新环境遇到的报错添加路径的方法 给jupternotebook设置新环境 # 先在anaconda界面新建环境 conda env list # 查看conda prompt下的有的环境变量 带星号的是当前活跃的 activate XXXX pip install ipykernel ipython ipython kernel install --u…

如何安装mmcv?官网解答

pip install -U openmim mim install mmcv

【高分论文密码】大尺度空间模拟预测与数字制图教程

详情点击链接&#xff1a;【高分论文密码】大尺度空间模拟预测与数字制图 一&#xff0c;R语言空间数据及数据挖掘关键技术 1、R语言空间数据及应用特点 1)R语言基础与数据科学 2)R空间矢量数据 3)R栅格数据 2、R语言空间数据挖掘关键技术 二&#xff0c;R语言空间数据高…

素描基础知识

素描基础入门 1.基础线条 1.1 握笔姿势及长线条 2.排线 2.1 不同姿势画排线 2.1.1 姿势画排线 2.1.2 用手腕画排线 2.1.3 小拇指画排线 2.1.4 叠加排线 2.1.5交叉排线 2.2 纸张擦法 2.3 排线学习榜样 2.4 四种常见的排线 3、定向连线 4、一点透视 4.1 透视的规律 4.2 焦点透视…

SpringCloudAlibaba:服务网关之Gateway的cors跨域问题

目录 一&#xff1a;解决问题 二&#xff1a;什么是跨域 三&#xff1a;cors跨域是什么&#xff1f; 一&#xff1a;解决问题 遇到错误&#xff1a; 前端请求时报错 解决&#xff1a; 网关中添加配置文件&#xff0c;注意springboot版本&#xff0c;添加配置。 springboo…

Hive 调优集锦(1)

一、前言 1.1 概念 Hive 依赖于 HDFS 存储数据&#xff0c;Hive 将 HQL 转换成 MapReduce 执行&#xff0c;所以说 Hive 是基于Hadoop 的一个数据仓库工具&#xff0c;实质就是一款基于 HDFS 的 MapReduce 计算框架&#xff0c;对存储在HDFS 中的数据进行分析和管理。 1.2 架…

删除每行中的最大值

给你一个 m x n 大小的矩阵 grid &#xff0c;由若干正整数组成。 执行下述操作&#xff0c;直到 grid 变为空矩阵&#xff1a; 从每一行删除值最大的元素。如果存在多个这样的值&#xff0c;删除其中任何一个。 将删除元素中的最大值与答案相加。 注意 每执行一次操作&…

HBase有写入数据,页面端显示无数据量

写了一个测试类&#xff0c;插入几条数据&#xff0c;测试HBase的数据量。很简单的功能&#xff0c;这就出现问题了。。网页端可以看到&#xff0c;能够看到读写请求&#xff0c;但是不管是内存、还是磁盘&#xff0c;都没有数据。 于是就想到去HDFS查看&#xff0c;也是有数据…