网络资源模板--基于Android Studio 实现的计算器App

发布于:2025-08-05 ⋅ 阅读:(10) ⋅ 点赞:(0)

目录

一、测试环境说明

二、项目简介

三、项目演示

四、部设计详情(部分)

科学计算器

五、项目源码 


一、测试环境说明

电脑环境

Windows 11

编写语言

JAVA

开发软件

Android Studio  (2020)

开发软件只要大于等于测试版本即可(近几年官网直接下载也可以),若是版本低于测试版本请自行测试。项目需要根据你的软件自行适配

二、项目简介

该项目简介来自网络,具体内容需要自行测试

本项目是一款基于Android平台的科学计算器应用,采用Java开发,支持基础运算和高级科学计算功能。

核心算法通过递归解析实现复杂表达式的运算,确保正确的计算顺序和优先级处理。界面采用LinearLayout与TableLayout结合,提供清晰的操作面板,适配不同屏幕尺寸。

主要功能包括四则运算、三角函数(sin/cos/tan)、反三角函数、对数运算(ln/lg)、幂运算(x²、√x、x^y)、阶乘、百分比等,并支持π和e常数的快捷输入。

具备错误检测机制,对非法表达式(如除零、负数开方)进行提示。通过Bundle保存计算状态,防止屏幕旋转时数据丢失。

适用于学生、工程师等需要进行科学计算的场景,兼具易用性和功能性,未来可扩展更多高级计算模块。

三、项目演示

网络资源模板--基于Android studio 计算器App

四、部设计详情(部分)

科学计算器

1. 页面的结构

这个科学计算器采用垂直线性布局,分为上下两部分。上半部分是显示区域,包含两个横向滚动文本框,分别显示历史表达式和当前输入内容。

下半部分是操作区域,采用表格布局排列各种功能按钮,共5行7列。按钮按照功能分组排列,第一行是高级运算符号,中间三行是数字和基础运算符,最后一行是特殊功能键。

整体布局清晰合理,充分利用屏幕空间,操作区域占比较大便于触控操作。

2. 使用到的技术

该计算器采用Android原生开发技术,使用Java语言编写业务逻辑。

核心算法通过递归方式实现表达式解析和计算,支持括号嵌套和运算符优先级处理。界面使用XML定义,包含TextView、Button、ToggleButton等多种控件。

采用了HorizontalScrollView实现文本横向滚动,TableLayout规整排列按钮。通过状态保存机制处理屏幕旋转等配置变更,使用Toast显示临时提示信息。

整体技术方案成熟稳定,兼顾功能性和用户体验。

3. 页面详细介绍

这个科学计算器页面功能丰富,支持基本四则运算和高级科学计算。包含三角函数(sin/cos/tan)及其反函数、对数运算(ln/lg)、幂运算(平方/开方)、阶乘、百分比等科学功能。

特别设计了Shift切换键实现函数反变换,π和e常数一键输入。界面采用圆角矩形设计,按钮大小均匀,操作反馈直观。输入区支持长表达式显示和编辑,错误输入会提示"错误"信息。

整体设计兼顾美观性和实用性,适合需要进行复杂科学计算的场景使用。

<?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:layout_margin="8dp"
    android:orientation="vertical"
    tools:context="brookelovesummer.MainActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0"
        android:background="@drawable/bg_corner"
        android:orientation="vertical"
        android:paddingHorizontal="12dp"
        android:paddingVertical="6dp">

        <HorizontalScrollView
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <TextView
                android:id="@+id/text_last"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="end"
                android:singleLine="true"
                android:text="2000+233"
                android:textAppearance="@style/TextAppearance.AppCompat.Medium"
                android:textIsSelectable="true" />

        </HorizontalScrollView>

        <HorizontalScrollView
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <TextView
                android:id="@+id/text_input"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="end"
                android:singleLine="true"
                android:text="2233"
                android:textAppearance="@style/TextAppearance.AppCompat.Large"
                android:textIsSelectable="true" />

        </HorizontalScrollView>

    </LinearLayout>

    <TableLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1">

        <TableRow
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:paddingHorizontal="4dp">

            <Button
                android:id="@+id/button_factorial"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_marginHorizontal="4dp"
                android:layout_weight="1"
                android:onClick="onClick"
                android:text="!"
                android:textAppearance="@style/TextAppearance.AppCompat.Medium" />

            <Button
                android:id="@+id/button_lbracket"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_marginHorizontal="4dp"
                android:layout_weight="1"
                android:onClick="onClick"
                android:text="("
                android:textAppearance="@style/TextAppearance.AppCompat.Medium" />

            <Button
                android:id="@+id/button_rbracket"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_marginHorizontal="4dp"
                android:layout_weight="1"
                android:onClick="onClick"
                android:text=")"
                android:textAppearance="@style/TextAppearance.AppCompat.Medium" />

            <Button
                android:id="@+id/button_clear"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_marginHorizontal="4dp"
                android:layout_weight="1"
                android:onClick="onClick"
                android:text="C"
                android:textAppearance="@style/TextAppearance.AppCompat.Medium" />

            <Button
                android:id="@+id/button_div"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_marginHorizontal="4dp"
                android:layout_weight="1"
                android:onClick="onClick"
                android:text="÷"
                android:textAppearance="@style/TextAppearance.AppCompat.Medium" />

            <Button
                android:id="@+id/button_mul"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_marginHorizontal="4dp"
                android:layout_weight="1"
                android:onClick="onClick"
                android:text="×"
                android:textAppearance="@style/TextAppearance.AppCompat.Medium" />

            <ImageButton
                android:id="@+id/button_del"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_marginHorizontal="4dp"
                android:layout_weight="1"
                android:contentDescription="Delete"
                android:onClick="onClick"
                app:srcCompat="@drawable/ic_backspace_24" />
        </TableRow>

        <TableRow
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:paddingHorizontal="4dp">

            <Button
                android:id="@+id/button_square"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_marginHorizontal="4dp"
                android:layout_weight="1"
                android:onClick="onClick"
                android:text="x²"
                android:textAppearance="@style/TextAppearance.AppCompat.Medium" />

            <Button
                android:id="@+id/button_sqrt"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_marginHorizontal="4dp"
                android:layout_weight="1"
                android:onClick="onClick"
                android:text="√"
                android:textAppearance="@style/TextAppearance.AppCompat.Medium" />

            <Button
                android:id="@+id/button_pow"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_marginHorizontal="4dp"
                android:layout_weight="1"
                android:onClick="onClick"
                android:text="^"
                android:textAppearance="@style/TextAppearance.AppCompat.Medium" />

            <Button
                android:id="@+id/button_7"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_marginHorizontal="4dp"
                android:layout_weight="1"
                android:onClick="onClick"
                android:text="7"
                android:textAppearance="@style/TextAppearance.AppCompat.Medium" />

            <Button
                android:id="@+id/button_8"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_marginHorizontal="4dp"
                android:layout_weight="1"
                android:onClick="onClick"
                android:text="8"
                android:textAppearance="@style/TextAppearance.AppCompat.Medium" />

            <Button
                android:id="@+id/button_9"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_marginHorizontal="4dp"
                android:layout_weight="1"
                android:onClick="onClick"
                android:text="9"
                android:textAppearance="@style/TextAppearance.AppCompat.Medium" />

            <Button
                android:id="@+id/button_sub"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_marginHorizontal="4dp"
                android:layout_weight="1"
                android:onClick="onClick"
                android:text="-"
                android:textAppearance="@style/TextAppearance.AppCompat.Medium" />
        </TableRow>

        <TableRow
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:paddingHorizontal="4dp">

            <Button
                android:id="@+id/button_ln"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_marginHorizontal="4dp"
                android:layout_weight="1"
                android:onClick="onClick"
                android:text="ln"
                android:textAppearance="@style/TextAppearance.AppCompat.Medium" />

            <Button
                android:id="@+id/button_lg"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_marginHorizontal="4dp"
                android:layout_weight="1"
                android:onClick="onClick"
                android:text="lg"
                android:textAppearance="@style/TextAppearance.AppCompat.Medium" />

            <Button
                android:id="@+id/button_e"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_marginHorizontal="4dp"
                android:layout_weight="1"
                android:onClick="onClick"
                android:text="e"
                android:textAppearance="@style/TextAppearance.AppCompat.Medium" />

            <Button
                android:id="@+id/button_4"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_marginHorizontal="4dp"
                android:layout_weight="1"
                android:onClick="onClick"
                android:text="4"
                android:textAppearance="@style/TextAppearance.AppCompat.Medium" />

            <Button
                android:id="@+id/button_5"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_marginHorizontal="4dp"
                android:layout_weight="1"
                android:onClick="onClick"
                android:text="5"
                android:textAppearance="@style/TextAppearance.AppCompat.Medium" />

            <Button
                android:id="@+id/button_6"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_marginHorizontal="4dp"
                android:layout_weight="1"
                android:onClick="onClick"
                android:text="6"
                android:textAppearance="@style/TextAppearance.AppCompat.Medium" />

            <Button
                android:id="@+id/button_add"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_marginHorizontal="4dp"
                android:layout_weight="1"
                android:onClick="onClick"
                android:text="+"
                android:textAppearance="@style/TextAppearance.AppCompat.Medium" />
        </TableRow>

        <TableRow
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:paddingHorizontal="4dp">

            <Button
                android:id="@+id/button_sin"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_marginHorizontal="4dp"
                android:layout_weight="1"
                android:onClick="onClick"
                android:text="sin"
                android:textAppearance="@style/TextAppearance.AppCompat.Medium" />

            <Button
                android:id="@+id/button_cos"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_marginHorizontal="4dp"
                android:layout_weight="1"
                android:onClick="onClick"
                android:text="cos"
                android:textAppearance="@style/TextAppearance.AppCompat.Medium" />

            <Button
                android:id="@+id/button_tan"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_marginHorizontal="4dp"
                android:layout_weight="1"
                android:onClick="onClick"
                android:text="tan"
                android:textAppearance="@style/TextAppearance.AppCompat.Medium" />

            <Button
                android:id="@+id/button_1"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_marginHorizontal="4dp"
                android:layout_weight="1"
                android:onClick="onClick"
                android:text="1"
                android:textAppearance="@style/TextAppearance.AppCompat.Medium" />

            <Button
                android:id="@+id/button_2"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_marginHorizontal="4dp"
                android:layout_weight="1"
                android:onClick="onClick"
                android:text="2"
                android:textAppearance="@style/TextAppearance.AppCompat.Medium" />

            <Button
                android:id="@+id/button_3"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_marginHorizontal="4dp"
                android:layout_weight="1"
                android:onClick="onClick"
                android:text="3"
                android:textAppearance="@style/TextAppearance.AppCompat.Medium" />

            <Button
                android:id="@+id/button_percent"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_marginHorizontal="4dp"
                android:layout_weight="1"
                android:onClick="onClick"
                android:text="%"
                android:textAppearance="@style/TextAppearance.AppCompat.Medium" />
        </TableRow>

        <TableRow
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:paddingHorizontal="4dp">

            <ToggleButton
                android:id="@+id/button_shift"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_marginHorizontal="4dp"
                android:layout_weight="1"
                android:textAppearance="@style/TextAppearance.AppCompat.Medium"
                android:textOff="Shift"
                android:textOn="Shift" />

            <Button
                android:id="@+id/button_rad"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_marginHorizontal="4dp"
                android:layout_weight="1"
                android:onClick="onClick"
                android:text="Rad"
                android:textAppearance="@style/TextAppearance.AppCompat.Medium" />

            <Button
                android:id="@+id/button_pi"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_marginHorizontal="4dp"
                android:layout_weight="1"
                android:onClick="onClick"
                android:text="π"
                android:textAppearance="@style/TextAppearance.AppCompat.Medium" />

            <Button
                android:id="@+id/button_E"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_marginHorizontal="4dp"
                android:layout_weight="1"
                android:onClick="onClick"
                android:text="10^"
                android:textAppearance="@style/TextAppearance.AppCompat.Medium" />

            <Button
                android:id="@+id/button_0"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_marginHorizontal="4dp"
                android:layout_weight="1"
                android:onClick="onClick"
                android:text="0"
                android:textAppearance="@style/TextAppearance.AppCompat.Medium" />

            <Button
                android:id="@+id/button_point"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_marginHorizontal="4dp"
                android:layout_weight="1"
                android:onClick="onClick"
                android:text="."
                android:textAppearance="@style/TextAppearance.AppCompat.Medium" />

            <Button
                android:id="@+id/button_equal"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_marginHorizontal="4dp"
                android:layout_weight="1"
                android:onClick="onClick"
                android:text="="
                android:textAppearance="@style/TextAppearance.AppCompat.Medium" />
        </TableRow>

    </TableLayout>

</LinearLayout>

五、项目源码 

👇👇👇👇👇快捷方式👇👇👇👇👇


网站公告

今日签到

点亮在社区的每一天
去签到