网络资源模板--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框架进行组件化开…

开源模型应用落地-Qwen2.5-7B-Instruct与vllm实现推理加速的正确姿势-Docker-Tools助力(四)

一、前言 目前,大语言模型已升级至Qwen2.5版本。无论是语言模型还是多模态模型,均在大规模多语言和多模态数据上进行预训练,并通过高质量数据进行后期微调以贴近人类偏好。 另外,使用 Docker 实现便捷测试成为一种高效的解决方案。通过将模型及其运行环境封装在 Docker 容器…

Unity开发Hololens项目

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

《C++之美:简洁与功能的完美平衡》

在 C编程的世界里&#xff0c;追求代码的审美效果不仅仅是一种艺术追求&#xff0c;更是提高代码质量、增强可读性和可维护性的关键。而在众多考量因素中&#xff0c;代码的简洁性与功能性之间的平衡成为了一个核心问题。那么&#xff0c;究竟如何在 C中实现这种平衡&#xff0…

大规模多传感器滑坡检测数据集,利用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

Vue.js 组件化开发:从入门到进阶

Vue.js 组件化开发&#xff1a;从入门到进阶 &#x1f44b; 大家好&#xff0c;今天我们来聊一聊 Vue.js 的 “组件化开发”。目前 Vue 开发已经相对成熟了&#xff0c;相信很多朋友对组件化开发并不陌生。 如果你对组件化开发已经非常熟悉&#xff0c;看到我的文章&#xff…

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

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

H5对接海康硬盘录像机视频简单说明

开发过程中使用HTML5(通常是通过Web技术栈,如HTML、CSS、JavaScript)与海康威视(Hikvision)的硬盘录像机(DVR)进行视频对接,通常涉及以下步骤: 获取DVR的RTSP流地址:海康威视DVR支持RTSP协议,你可以通过DVR的管理界面获取每个摄像头的RTSP流地址。 使用视频播放器库…

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

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

数据结构编程实践20讲(Python版)—18哈希表

本文目录 18 哈希表(Hash Table)S1 说明特征解决问题S2 示例示例 1示例 2S3 应用应用1: LRU 缓存机制应用2:高级拼写检查器应用3:DNA 序列的 K-mer 计数往期链接 01 数组02 链表03 栈04 队列05 二叉树06 二叉搜索树07 AVL树08 红黑树09 B树10 B+树11 线段树12 树状数组13 …

C语言_指针_进阶

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

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

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

Java线程说明

在 Java 中&#xff0c;synchronized关键字可以用来实现同步&#xff0c;它可以接收不同的参数&#xff0c;主要有以下两种常见用法&#xff1a;以对象作为参数和以类作为参数。 一、synchronized关键字的作用 synchronized关键字用于确保在同一时刻只有一个线程可以访问被它…

vue组件调用生命周期

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

【如何获取股票数据10】Python、Java等多种主流语言实例演示获取股票行情api接口之沪深A股历史分时KDJ数据获取实例演示及接口API说明文档

最近一两年内&#xff0c;股票量化分析逐渐成为热门话题。而从事这一领域工作的第一步&#xff0c;就是获取全面且准确的股票数据。因为无论是实时交易数据、历史交易记录、财务数据还是基本面信息&#xff0c;这些数据都是我们进行量化分析时不可或缺的宝贵资源。我们的主要任…

C++ ----Qt

1.什么是QT Qt是一个跨平台的C应用程序开发框架。 用于开发图形用户界面、嵌入式系统、以及其他应用程序&#xff08;嵌入式&#xff0c;桌面&#xff0c;汽车中控&#xff09;&#xff0c;支持Windows、macOS、Linux、Android和iOS等多个操作系统。 Qt框架提供了丰富的功能…

【ChatGPT】如何让 ChatGPT 理解多步骤指令

如何让 ChatGPT 理解多步骤指令 在与 ChatGPT 交互时&#xff0c;多步骤指令能够帮助模型更准确地理解复杂任务并逐步执行每个步骤。然而&#xff0c;如果多步骤指令没有清晰组织&#xff0c;可能会导致输出混乱或不完整。本文将介绍如何有效编写多步骤指令&#xff0c;使 Cha…