网络资源模板--Android Studio 实现简易计算器App

目录

一、项目演示

二、项目测试环境

三、项目详情

四、完整的项目源码 


一、项目演示

网络资源模板--基于Android studio 实现的简易计算器

二、项目测试环境

三、项目详情

  1. 动态绑定按钮

    • 使用循环遍历 buttons 数组,根据动态生成的按钮 ID (btn_0btn_1 等) 通过 getResources().getIdentifier 方法绑定按钮。
    • 将绑定的按钮设置为当前活动的点击监听器。
  2. 绑定其他特定按钮

    • 绑定一组其他特定功能的按钮(如加、减、乘、除等),确保它们在界面上可用。
  3. 设置统一的点击监听器

    • 创建一个统一的 OnClickListener,将所有功能按钮的点击事件指向同一个处理方法 handleButtonClick,从而简化事件处理的逻辑。
  // 绑定按钮和设置监听器private void bindAndSetListener() {for (int i = 0; i < buttons.length; i++) {String buttonID = "btn_" + i; // 动态生成按钮IDbuttons[i] = findViewById(getResources().getIdentifier(buttonID, "id", getPackageName())); // 绑定按钮buttons[i].setOnClickListener(this); // 设置监听器}// 绑定其他按钮btnPlus = findViewById(R.id.btn_plus);btnMinus = findViewById(R.id.btn_minus);btnMultiply = findViewById(R.id.btn_mutiply);btnDivide = findViewById(R.id.btn_divide);btnClear = findViewById(R.id.btn_clear);btnDel = findViewById(R.id.btn_del);btnDot = findViewById(R.id.btn_dot);btnEqual = findViewById(R.id.btn_equal);etInput = findViewById(R.id.et_input);// 设置统一的监听器View.OnClickListener listener = v -> handleButtonClick(v);btnPlus.setOnClickListener(listener);btnMinus.setOnClickListener(listener);btnMultiply.setOnClickListener(listener);btnDivide.setOnClickListener(listener);btnClear.setOnClickListener(listener);btnDel.setOnClickListener(listener);btnDot.setOnClickListener(listener);btnEqual.setOnClickListener(listener);}
  1. 加载布局
    • 在 onCreateView 方法中,使用 LayoutInflater 加载 fragment_main 布局并返回相应的视图。
  public static class PlaceholderFragment extends Fragment {@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {return inflater.inflate(R.layout.fragment_main, container, false); // 加载Fragment的布局}}

  1. TableLayout

    • 设置为垂直方向(android:orientation="vertical"),并且可以自动伸展列以适应内容(android:stretchColumns="*")。
    • 宽度为填充父级(fill_parent),高度为自适应内容(wrap_content)。
  2. TableRow

    • 每个 TableRow 包含一组按钮,按行排列,方便用户点击。
  3. 按钮

    • 功能按钮:如清除(C)、删除(DEL)、基本运算符(加、减、乘、除)等。
    • 数字按钮:数字 1 到 9 和 0(未显示在提供的代码中)以及小数点(.)按钮,用于输入数字。
  4. 样式

    • 按钮的高度设置为 80dp,文字大小为 25sp,保持一致的视觉风格。
    • 使用不同的背景选择器(@drawable/origin_selctor 和 @drawable/while_selector)来区分运算按钮和数字按钮。

 <TableLayoutandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_marginTop="20dp"android:orientation="vertical"android:stretchColumns="*"><TableRowandroid:layout_width="wrap_content"android:layout_height="wrap_content"><Buttonandroid:id="@+id/btn_clear"android:layout_height="80dp"android:background="@drawable/origin_selctor"android:text="C"android:textSize="25.0sp" /><Buttonandroid:id="@+id/btn_del"android:layout_height="80dp"android:background="@drawable/origin_selctor"android:text="DEL"android:textSize="25.0sp" /><Buttonandroid:id="@+id/btn_divide"android:layout_height="80dp"android:background="@drawable/origin_selctor"android:text="÷"android:textSize="25.0sp" /><Buttonandroid:id="@+id/btn_mutiply"android:layout_height="80dp"android:background="@drawable/origin_selctor"android:text="X"android:textSize="25.0sp" /></TableRow><TableRowandroid:layout_width="wrap_content"android:layout_height="wrap_content"><Buttonandroid:id="@+id/btn_7"android:layout_height="80dp"android:background="@drawable/while_selector"android:text="7"android:textSize="25.0sp" /><Buttonandroid:id="@+id/btn_8"android:layout_height="80dp"android:background="@drawable/while_selector"android:text="8"android:textSize="25.0sp" /><Buttonandroid:id="@+id/btn_9"android:layout_height="80dp"android:background="@drawable/while_selector"android:text="9"android:textSize="25.0sp" /><Buttonandroid:id="@+id/btn_minus"android:layout_height="80dp"android:background="@drawable/origin_selctor"android:text="@string/minus"android:textSize="25.0sp" /></TableRow><TableRowandroid:layout_width="wrap_content"android:layout_height="wrap_content"><Buttonandroid:id="@+id/btn_4"android:layout_height="80dp"android:background="@drawable/while_selector"android:text="4"android:textSize="25.0sp" /><Buttonandroid:id="@+id/btn_5"android:layout_height="80dp"android:background="@drawable/while_selector"android:text="5"android:textSize="25.0sp" /><Buttonandroid:id="@+id/btn_6"android:layout_height="80dp"android:background="@drawable/while_selector"android:text="6"android:textSize="25.0sp" /><Buttonandroid:id="@+id/btn_plus"android:layout_height="80dp"android:background="@drawable/origin_selctor"android:text="+"android:textSize="25.0sp" /></TableRow><TableRowandroid:layout_width="wrap_content"android:layout_height="wrap_content"><Buttonandroid:id="@+id/btn_1"android:layout_height="80dp"android:background="@drawable/while_selector"android:text="1"android:textSize="25.0sp" /><Buttonandroid:id="@+id/btn_2"android:layout_height="80dp"android:background="@drawable/while_selector"android:text="2"android:textSize="25.0sp" /><Buttonandroid:id="@+id/btn_3"android:layout_height="80dp"android:background="@drawable/while_selector"android:text="3"android:textSize="25.0sp" /><Buttonandroid:id="@+id/btn_dot"android:layout_height="80dp"android:background="@drawable/origin_selctor"android:text="."android:textSize="25.0sp" /></TableRow></TableLayout>

四、完整的项目源码 

👇👇👇👇👇快捷获取方式👇👇👇👇👇

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

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

相关文章

SQL进阶技巧:如何删除第N次连续出现NULL值所存在的行?

目录 0 场景描述 1 数据准备 2 问题分析 问题拓展:如何删除第2次、第3次、第N次连续出现NULL值所在的行? 3 小结 0 场景描述 有下面的场景: 我们希望删除某id中连续存在NULL值的所有行,但是保留第一次出现不为NULL值的以下所有存在NULL值的行。具体如下图所示: 如…

iframe的使用详解

目录 一、基本概念和语法 二、优点 1.内容整合与复用&#xff1a; 2.独立的浏览环境&#xff1a; 3.跨域数据展示&#xff1a; 三、缺点 1.可访问性问题&#xff1a; 2.性能问题&#xff1a; 3.安全风险&#xff1a; 四、替代方案 1.使用JavaScript框架进行组件化开…

Unity开发Hololens项目

Unity打包Hololens设备 目录Visual Studio2019 / Visual Studio2022 远端部署设置Visual Studio2019 / Visual Studio2022 USB部署设置Hololens设备如何查找自身IPHololens设备门户Unity工程内的打包设置 目录 记录下自己做MR相关&#xff1a;Unity和HoloLens设备的历程。 Vi…

大规模多传感器滑坡检测数据集,利用landsat,哨兵2,planet,无人机图像等多种传感器采集数据共2w余副图像,mask准确标注滑坡位置

大规模多传感器滑坡检测数据集&#xff0c;利用landsat&#xff0c;哨兵2&#xff0c;planet&#xff0c;无人机图像等多种传感器采集数据共2w余副图像&#xff0c;mask准确标注滑坡位置 大规模多传感器滑坡检测数据集介绍 数据集概述 名称&#xff1a;大规模多传感器滑坡检测…

Python | Leetcode Python题解之第491题非递减子序列

题目&#xff1a; 题解&#xff1a; class Solution:def findSubsequences(self, nums: List[int]) -> List[List[int]]:def dfs(i, tmp):if i len(nums):if len(tmp) > 2:res.append(tmp[:]) # 拷贝&#xff0c;tmp[:]而非tmpreturn# 选 nums[i]if not tmp or nu…

2d 数字人实时语音聊天对话使用案例;支持asr、llm、tts实时语音交互

参考: https://github.com/lyz1810/live2dSpeek 下载live2dSpeek项目 ## 下载live2dSpeek git clone https://github.com/lyz1810/live2dSpeek cd live2dSpeek-main ## 运行live2dSpeek npm install -g http-server http-server .更改新的index.html页面 index.html

【SQL Server】数据库在新建查询后闪退——解决方案:以管理员的身份运行

我的SQLServer2022之前都是可以用的&#xff0c;隔了好久没有使用&#xff0c;今天要用到去写一些SQL 语句 结果在点击新建查询后闪退了&#xff0c; 经过查询后&#xff0c;解决方案&#xff1a; 以管理员的身份运行后点击新建查询&#xff0c;发现正常了 总结&#xff1a;以…

记一次库版本升级引起程序自动停止

记一次库版本升级引起程序自动停止 最近我们的应用升级了jedis 版本,版本从 2.10.2 升级 到3.8.0。发现我们的任务应用启动后立马自动关闭了。 这就奇怪了&#xff0c;为什么升级个版本&#xff0c;会导致程序启动后自动关闭呢。带着这个疑问我们看下代码。 表现如下&#x…

C语言_指针_进阶

引言&#xff1a;在前面的c语言_指针初阶上&#xff0c;我们了解了简单的指针类型以及使用&#xff0c;下面我们将进入更深层次的指针学习&#xff0c;对指针的理解会有一个极大的提升。从此以后&#xff0c;指针将不再是难点&#xff0c;而是学习底层语言的一把利器。 本章重点…

vr体验馆计时收银软件试用版下载 佳易王VR游戏厅计时计费管理系统使用操作教程

一、前言 【软件试用版资源文件下载可以点击文章最后卡片了解】 vr体验馆计时收银软件试用版下载 佳易王VR游戏厅计时计费管理系统使用操作教程 VR体验馆计时计费软件是专门为VR体验馆设计的管理工具&#xff0c;旨在提高服务效率和客户的满意度。软件能够记录客户使用设备的…

vue组件调用生命周期

《vue基础学习-组件》提到组件传递数据方式&#xff1a; 1. props/$emit 父传子&#xff1a;子组件通过 props 显式声明 自定义 属性&#xff0c;接收父组件的传值。子传父&#xff1a;子组件通过 $emit() 显式声明 自定义 事件&#xff0c;父组件调用自定义事件接收子组件返…

Docker-compose提示specified IP address..configured subnets问题以及Docker容器相关操作记录保存

一、Docker-compose提示user specified IP address is supported only when connecting to networks with user configured subnets 在网上下载的一些docker-compose.yml在执行的时碰到过多次如下报错&#xff1a; ERROR: for 5307e2acb....user specified IP address is supp…

2024.10.17 软考学习笔记

刷题网站&#xff1a; 软考中级软件设计师在线试题、软考解析及答案-51CTO题库-软考在线做题备考工具

vue2项目 实现上边两个下拉框,下边一个输入框 输入框内显示的值为[“第一个下拉框选中值“ -- “第二个下拉框选中的值“]

效果: 思路: 采用vue中 [computed:] 派生属性的方式实现联动效果,上边两个切换时,下边的跟随变动 demo代码: <template><div><!-- 第一个下拉框 --><select v-model"firstValue"><option v-for"option in options" :key&q…

Github优质项目推荐 - 第六期

文章目录 Github优质项目推荐 - 第六期一、【WiFiAnalyzer】&#xff0c;3.4k stars - WiFi 网络分析工具二、【penpot】&#xff0c;33k stars - UI 设计与原型制作平台三、【Inpaint-Anything】&#xff0c;6.4k stars - 修复图像、视频和3D 场景中的任何内容四、【Malware-P…

适用于 Windows 的 4 个最佳免费数据恢复软件

计算机最重要的是用户数据。除了您的数据之外&#xff0c;关于计算机的其他一切都是可替换的。这三个是数据丢失的最常见原因&#xff1a; 文件/文件夹删除 丢失分区 损坏的分区 文件/文件夹删除是最常见的数据丢失类型。大多数时候&#xff0c;由于不小心删除文件/文件夹而…

限流是什么?如何限流?怎么限流?

概述 什么是限流 对某一时间窗口内的请求数进行限制,保持系统的可用性和稳定性,防止因流量暴增而导致的系统运行缓慢或宕机 为什么要限流 因为互联网系统通常都要面对大并发大流量的请求,在突发情况下(最常见的场景就是秒杀、抢购),瞬时大流量会直接将系统打垮,无法…

html和css实现页面

任务4 html文件 任务5 htm文件 css文件 任务6 html文件 css文件 任务7 html文件 css文件

Java【多线程】synchronized关键字

目录 synchronized的特性 1.互斥 2.可重入 如何自己实现一个可重入锁&#xff1f; 关于死锁 死锁的第三种情况 N个线程M把锁 构成死锁的四个必要条件 java标准库中的线程安全类 线程不安全 线程安全 synchronized关键字-监视器锁monitor locker synchronized的特性 …

Tailscale自建中转服务器derper搭建笔记(基于docker)

自己搭建derper服务器&#xff0c;让Tailscale中转更流畅。 Tailscale是很好的远程组网工具&#xff0c;在两台机器P2P打洞成功的情况下可以实现网络直连&#xff0c;但如果打洞失败就会进行数据中转&#xff0c;我们的数据要跑到国外再跑回来&#xff0c;这样速度就很慢了。 …