【安卓】Android Studio简易计算器(实现加减乘除,整数小数运算,正数负数运算)
目录
前言
运算效果
一、创建一个新的项目
二、编写xml文件(计算器显示页面)
三、实现Java运算逻辑
编辑
完整代码
xml文件代码:
Java文件代码:
注:
前言
随着移动互联网的普及,手机应用程序已经成为人们生活中不可或缺的一部分。计算器是一类被广泛使用的应用程序之一,因此学习如何开发一款简易的计算器应用程序是学习Android Studio开发的一个很好的开始。
Android Studio是一款Google开发的用于创建安卓应用的集成开发环境(IDE), 它可以帮助开发者快速设计、开发和测试应用程序。接下来我将为大家介绍如何使用Android Studio创建一个简易的计算器应用程序。
运算效果
一、创建一个新的项目
完成上面步骤以后,点击Finish,等待加载好项目就可以继续下面的步骤了
二、编写xml文件(计算器显示页面)
打开activity_main.xml文件: res --> layout --> activity_main.xml
可以模仿主流计算器或者自己手机上面的计算器的版式来设计你的计算页面样式。
xml文件代码附到最后啦,根据自己需要自行截取复制。
然后页面显示的样子就是下面这样的:
三、实现Java运算逻辑
写好基本的显示页面后,咱就得来完成逻辑运算和点击事件了
点开MainActivity.java文件:
Java逻辑要完成的主要是如何设计点击事件以及如何实现加减乘除的逻辑
完整代码
xml文件代码:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"app:circularflow_angles="20"tools:context=".MainActivity">
<!--csdn 波士顿o泡果奶 版权所有 --><androidx.constraintlayout.widget.ConstraintLayoutandroid:id="@+id/constraintLayout"android:layout_width="match_parent"android:layout_height="80dp"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"><ImageViewandroid:id="@+id/imageView"android:layout_width="29dp"android:layout_height="25dp"android:layout_marginTop="18dp"android:layout_marginEnd="10dp"app:layout_constraintEnd_toStartOf="@+id/imageView2"app:layout_constraintTop_toTopOf="parent"app:srcCompat="@drawable/img" /><ImageViewandroid:id="@+id/imageView2"android:layout_width="32dp"android:layout_height="29dp"android:layout_marginTop="16dp"android:layout_marginEnd="16dp"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintTop_toTopOf="parent"app:srcCompat="@drawable/img_1" /><TextViewandroid:id="@+id/textView"android:layout_width="65dp"android:layout_height="41dp"android:layout_marginStart="16dp"android:layout_marginTop="7dp"android:text="计算"android:textColor="#010101"android:textSize="31dp"android:textStyle="bold"app:autoSizeTextType="none"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /><TextViewandroid:id="@+id/textView2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginStart="9dp"android:layout_marginTop="14dp"android:text="汇率"android:textColor="#B2B2B2"android:textSize="25dp"android:textStyle="bold"app:layout_constraintStart_toEndOf="@+id/textView"app:layout_constraintTop_toTopOf="parent" /><androidx.constraintlayout.widget.ConstraintLayoutandroid:layout_width="57dp"android:layout_height="3dp"android:layout_marginStart="19dp"android:background="#FF0101"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/textView"></androidx.constraintlayout.widget.ConstraintLayout></androidx.constraintlayout.widget.ConstraintLayout><androidx.constraintlayout.widget.ConstraintLayoutandroid:id="@+id/constraintLayout2"android:layout_width="410dp"android:layout_height="178dp"android:background="#FFFFFF"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/constraintLayout"><EditTextandroid:id="@+id/editTextText2"android:layout_width="409dp"android:layout_height="83dp"android:layout_marginStart="2dp"android:layout_marginTop="76dp"android:ems="10"android:inputType="text"android:textSize="50sp"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /></androidx.constraintlayout.widget.ConstraintLayout><androidx.constraintlayout.widget.ConstraintLayoutandroid:layout_width="match_parent"android:layout_height="466dp"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/constraintLayout2"><androidx.constraintlayout.widget.ConstraintLayoutandroid:id="@+id/constraintLayout51"android:layout_width="409dp"android:layout_height="89.8dp"android:background="#FFFFFF"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"><androidx.cardview.widget.CardViewandroid:id="@+id/cardView2"android:layout_width="80dp"android:layout_height="80dp"android:layout_marginTop="5dp"app:cardBackgroundColor="#F2F1F1"app:cardCornerRadius="45dp"app:layout_constraintEnd_toStartOf="@+id/cardView"app:layout_constraintHorizontal_bias="0.5"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"><androidx.constraintlayout.widget.ConstraintLayoutandroid:id="@+id/AC"android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:id="@+id/textView12"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginStart="18dp"android:layout_marginTop="16dp"android:text="AC"android:textSize="35sp"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /></androidx.constraintlayout.widget.ConstraintLayout></androidx.cardview.widget.CardView><androidx.cardview.widget.CardViewandroid:id="@+id/cardView"android:layout_width="80dp"android:layout_height="80dp"android:layout_marginTop="5dp"app:cardBackgroundColor="#F2F1F1"app:cardCornerRadius="45dp"app:layout_constraintEnd_toStartOf="@+id/cardView3"app:layout_constraintHorizontal_bias="0.5"app:layout_constraintStart_toEndOf="@+id/cardView2"app:layout_constraintTop_toTopOf="parent"><androidx.constraintlayout.widget.ConstraintLayoutandroid:id="@+id/dl"android:layout_width="match_parent"android:layout_height="match_parent"><ImageViewandroid:id="@+id/imageView3"android:layout_width="48dp"android:layout_height="30dp"android:layout_marginStart="14dp"android:layout_marginTop="28dp"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"app:srcCompat="@drawable/img_4" /></androidx.constraintlayout.widget.ConstraintLayout></androidx.cardview.widget.CardView><androidx.cardview.widget.CardViewandroid:id="@+id/cardView3"android:layout_width="80dp"android:layout_height="80dp"android:layout_marginTop="5dp"android:background="#F2F1F1"app:cardBackgroundColor="#F2F1F1"app:cardCornerRadius="45dp"app:layout_constraintEnd_toStartOf="@+id/cardView4"app:layout_constraintHorizontal_bias="0.5"app:layout_constraintStart_toEndOf="@+id/cardView"app:layout_constraintTop_toTopOf="parent"><androidx.constraintlayout.widget.ConstraintLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:id="@+id/textView14"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginStart="16dp"android:layout_marginTop="16dp"android:text="+/-"android:textSize="35sp"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /></androidx.constraintlayout.widget.ConstraintLayout></androidx.cardview.widget.CardView><androidx.cardview.widget.CardViewandroid:id="@+id/cardView4"android:layout_width="80dp"android:layout_height="80dp"android:layout_marginTop="5dp"android:background="#F2F1F1"app:cardBackgroundColor="#F6E9E8"app:cardCornerRadius="45dp"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.5"app:layout_constraintStart_toEndOf="@+id/cardView3"app:layout_constraintTop_toTopOf="parent"><androidx.constraintlayout.widget.ConstraintLayoutandroid:id="@+id/D"android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:id="@+id/textView15"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginStart="30dp"android:layout_marginTop="10dp"android:text="÷ "android:textSize="42sp"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /></androidx.constraintlayout.widget.ConstraintLayout></androidx.cardview.widget.CardView></androidx.constraintlayout.widget.ConstraintLayout><androidx.constraintlayout.widget.ConstraintLayoutandroid:id="@+id/constraintLayout54"android:layout_width="409dp"android:layout_height="89.8dp"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/constraintLayout51"><androidx.cardview.widget.CardViewandroid:id="@+id/cardView2"android:layout_width="80dp"android:layout_height="80dp"android:layout_marginTop="5dp"app:cardBackgroundColor="#F2F1F1"app:cardCornerRadius="45dp"app:layout_constraintEnd_toStartOf="@+id/cardView"app:layout_constraintHorizontal_bias="0.5"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"><androidx.constraintlayout.widget.ConstraintLayoutandroid:id="@+id/seven"android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:id="@+id/textView16"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginStart="30dp"android:layout_marginTop="17dp"android:text="7"android:textSize="35sp"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /></androidx.constraintlayout.widget.ConstraintLayout></androidx.cardview.widget.CardView><androidx.constraintlayout.widget.ConstraintLayoutandroid:layout_width="match_parent"android:layout_height="match_parent" /><androidx.cardview.widget.CardViewandroid:id="@+id/cardView"android:layout_width="80dp"android:layout_height="80dp"android:layout_marginTop="5dp"app:cardBackgroundColor="#F2F1F1"app:cardCornerRadius="45dp"app:layout_constraintEnd_toStartOf="@+id/cardView3"app:layout_constraintHorizontal_bias="0.5"app:layout_constraintStart_toEndOf="@+id/cardView2"app:layout_constraintTop_toTopOf="parent"><androidx.constraintlayout.widget.ConstraintLayoutandroid:id="@+id/eight"android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:id="@+id/textView17"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginStart="30dp"android:layout_marginTop="17dp"android:text="8"android:textSize="35sp"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /></androidx.constraintlayout.widget.ConstraintLayout></androidx.cardview.widget.CardView><androidx.constraintlayout.widget.ConstraintLayoutandroid:layout_width="match_parent"android:layout_height="match_parent" /><androidx.cardview.widget.CardViewandroid:id="@+id/cardView3"android:layout_width="80dp"android:layout_height="80dp"android:layout_marginTop="5dp"android:background="#F2F1F1"app:cardBackgroundColor="#F2F1F1"app:cardCornerRadius="45dp"app:layout_constraintEnd_toStartOf="@+id/cardView4"app:layout_constraintHorizontal_bias="0.5"app:layout_constraintStart_toEndOf="@+id/cardView"app:layout_constraintTop_toTopOf="parent"><androidx.constraintlayout.widget.ConstraintLayoutandroid:id="@+id/nine"android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:id="@+id/textView18"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginStart="30dp"android:layout_marginTop="17dp"android:text="9"android:textSize="35sp"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /></androidx.constraintlayout.widget.ConstraintLayout></androidx.cardview.widget.CardView><androidx.constraintlayout.widget.ConstraintLayoutandroid:layout_width="match_parent"android:layout_height="match_parent" /><androidx.cardview.widget.CardViewandroid:id="@+id/cardView4"android:layout_width="80dp"android:layout_height="80dp"android:layout_marginTop="5dp"android:background="#F2F1F1"app:cardBackgroundColor="#F6E9E8"app:cardCornerRadius="45dp"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.5"app:layout_constraintStart_toEndOf="@+id/cardView3"app:layout_constraintTop_toTopOf="parent"><androidx.constraintlayout.widget.ConstraintLayoutandroid:id="@+id/X"android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:id="@+id/textView19"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginStart="31dp"android:layout_marginTop="14dp"android:text="x"android:textSize="35sp"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /></androidx.constraintlayout.widget.ConstraintLayout></androidx.cardview.widget.CardView><androidx.constraintlayout.widget.ConstraintLayoutandroid:layout_width="match_parent"android:layout_height="match_parent" /></androidx.constraintlayout.widget.ConstraintLayout><androidx.constraintlayout.widget.ConstraintLayoutandroid:id="@+id/constraintLayout52"android:layout_width="409dp"android:layout_height="89.8dp"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/constraintLayout54"><androidx.cardview.widget.CardViewandroid:id="@+id/cardView2"android:layout_width="80dp"android:layout_height="80dp"android:layout_marginTop="5dp"app:cardBackgroundColor="#F2F1F1"app:cardCornerRadius="45dp"app:layout_constraintEnd_toStartOf="@+id/cardView"app:layout_constraintHorizontal_bias="0.5"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"><androidx.constraintlayout.widget.ConstraintLayoutandroid:id="@+id/four"android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:id="@+id/textView20"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginStart="30dp"android:layout_marginTop="16dp"android:text="4"android:textSize="35sp"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /></androidx.constraintlayout.widget.ConstraintLayout></androidx.cardview.widget.CardView><androidx.constraintlayout.widget.ConstraintLayoutandroid:layout_width="match_parent"android:layout_height="match_parent" /><androidx.cardview.widget.CardViewandroid:id="@+id/cardView"android:layout_width="80dp"android:layout_height="80dp"android:layout_marginTop="5dp"app:cardBackgroundColor="#F2F1F1"app:cardCornerRadius="45dp"app:layout_constraintEnd_toStartOf="@+id/cardView3"app:layout_constraintHorizontal_bias="0.5"app:layout_constraintStart_toEndOf="@+id/cardView2"app:layout_constraintTop_toTopOf="parent"><androidx.constraintlayout.widget.ConstraintLayoutandroid:id="@+id/five"android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:id="@+id/textView21"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginStart="30dp"android:layout_marginTop="16dp"android:text="5"android:textSize="35sp"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /></androidx.constraintlayout.widget.ConstraintLayout></androidx.cardview.widget.CardView><androidx.constraintlayout.widget.ConstraintLayoutandroid:layout_width="match_parent"android:layout_height="match_parent" /><androidx.cardview.widget.CardViewandroid:id="@+id/cardView3"android:layout_width="80dp"android:layout_height="80dp"android:layout_marginTop="5dp"android:background="#F2F1F1"app:cardBackgroundColor="#F2F1F1"app:cardCornerRadius="45dp"app:layout_constraintEnd_toStartOf="@+id/cardView4"app:layout_constraintHorizontal_bias="0.5"app:layout_constraintStart_toEndOf="@+id/cardView"app:layout_constraintTop_toTopOf="parent"><androidx.constraintlayout.widget.ConstraintLayoutandroid:id="@+id/six"android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:id="@+id/textView22"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginStart="30dp"android:layout_marginTop="16dp"android:text="6"android:textSize="35sp"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /></androidx.constraintlayout.widget.ConstraintLayout></androidx.cardview.widget.CardView><androidx.constraintlayout.widget.ConstraintLayoutandroid:layout_width="match_parent"android:layout_height="match_parent" /><androidx.cardview.widget.CardViewandroid:id="@+id/cardView4"android:layout_width="80dp"android:layout_height="80dp"android:layout_marginTop="5dp"android:background="#F6E9E8"app:cardBackgroundColor="#F6E9E8"app:cardCornerRadius="45dp"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.5"app:layout_constraintStart_toEndOf="@+id/cardView3"app:layout_constraintTop_toTopOf="parent"><androidx.constraintlayout.widget.ConstraintLayoutandroid:id="@+id/sub"android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:id="@+id/textView23"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginStart="35dp"android:layout_marginTop="16dp"android:text="-"android:textSize="35sp"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /></androidx.constraintlayout.widget.ConstraintLayout></androidx.cardview.widget.CardView><androidx.constraintlayout.widget.ConstraintLayoutandroid:layout_width="match_parent"android:layout_height="match_parent" /></androidx.constraintlayout.widget.ConstraintLayout><androidx.constraintlayout.widget.ConstraintLayoutandroid:id="@+id/constraintLayout53"android:layout_width="409dp"android:layout_height="89.8dp"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/constraintLayout52"><androidx.cardview.widget.CardViewandroid:id="@+id/cardView2"android:layout_width="80dp"android:layout_height="80dp"android:layout_marginTop="5dp"app:cardBackgroundColor="#F2F1F1"app:cardCornerRadius="45dp"app:layout_constraintEnd_toStartOf="@+id/cardView"app:layout_constraintHorizontal_bias="0.5"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"><androidx.constraintlayout.widget.ConstraintLayoutandroid:id="@+id/one"android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:id="@+id/textView24"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginStart="30dp"android:layout_marginTop="16dp"android:text="1"android:textSize="35sp"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /></androidx.constraintlayout.widget.ConstraintLayout></androidx.cardview.widget.CardView><androidx.constraintlayout.widget.ConstraintLayoutandroid:layout_width="match_parent"android:layout_height="match_parent" /><androidx.cardview.widget.CardViewandroid:id="@+id/cardView"android:layout_width="80dp"android:layout_height="80dp"android:layout_marginTop="5dp"app:cardBackgroundColor="#F2F1F1"app:cardCornerRadius="45dp"app:layout_constraintEnd_toStartOf="@+id/cardView3"app:layout_constraintHorizontal_bias="0.5"app:layout_constraintStart_toEndOf="@+id/cardView2"app:layout_constraintTop_toTopOf="parent"><androidx.constraintlayout.widget.ConstraintLayoutandroid:id="@+id/two"android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:id="@+id/textView25"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginStart="30dp"android:layout_marginTop="16dp"android:text="2"android:textSize="35sp"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /></androidx.constraintlayout.widget.ConstraintLayout></androidx.cardview.widget.CardView><androidx.constraintlayout.widget.ConstraintLayoutandroid:layout_width="match_parent"android:layout_height="match_parent" /><androidx.cardview.widget.CardViewandroid:id="@+id/cardView3"android:layout_width="80dp"android:layout_height="80dp"android:layout_marginTop="5dp"android:background="#F2F1F1"app:cardBackgroundColor="#F2F1F1"app:cardCornerRadius="45dp"app:layout_constraintEnd_toStartOf="@+id/cardView4"app:layout_constraintHorizontal_bias="0.5"app:layout_constraintStart_toEndOf="@+id/cardView"app:layout_constraintTop_toTopOf="parent"><androidx.constraintlayout.widget.ConstraintLayoutandroid:id="@+id/three"android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:id="@+id/textView26"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginStart="30dp"android:layout_marginTop="16dp"android:text="3"android:textSize="35sp"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /></androidx.constraintlayout.widget.ConstraintLayout></androidx.cardview.widget.CardView><androidx.constraintlayout.widget.ConstraintLayoutandroid:layout_width="match_parent"android:layout_height="match_parent" /><androidx.cardview.widget.CardViewandroid:id="@+id/cardView4"android:layout_width="80dp"android:layout_height="80dp"android:layout_marginTop="5dp"android:background="#F2F1F1"app:cardBackgroundColor="#F6E9E8"app:cardCornerRadius="45dp"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.5"app:layout_constraintStart_toEndOf="@+id/cardView3"app:layout_constraintTop_toTopOf="parent"><androidx.constraintlayout.widget.ConstraintLayoutandroid:id="@+id/add"android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:id="@+id/textView27"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginStart="30dp"android:layout_marginTop="16dp"android:text="+"android:textSize="35sp"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /></androidx.constraintlayout.widget.ConstraintLayout></androidx.cardview.widget.CardView><androidx.constraintlayout.widget.ConstraintLayoutandroid:layout_width="match_parent"android:layout_height="match_parent" /></androidx.constraintlayout.widget.ConstraintLayout><androidx.constraintlayout.widget.ConstraintLayoutandroid:layout_width="409dp"android:layout_height="89.8dp"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/constraintLayout53"><androidx.cardview.widget.CardViewandroid:id="@+id/cardView2"android:layout_width="80dp"android:layout_height="80dp"android:layout_marginTop="5dp"app:cardBackgroundColor="#F2F1F1"app:cardCornerRadius="45dp"app:layout_constraintEnd_toStartOf="@+id/cardView"app:layout_constraintHorizontal_bias="0.5"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"><androidx.constraintlayout.widget.ConstraintLayoutandroid:id="@+id/yu"android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:id="@+id/textView28"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginStart="27dp"android:layout_marginTop="17dp"android:text="%"android:textSize="35sp"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /></androidx.constraintlayout.widget.ConstraintLayout></androidx.cardview.widget.CardView><androidx.constraintlayout.widget.ConstraintLayoutandroid:layout_width="match_parent"android:layout_height="match_parent" /><androidx.cardview.widget.CardViewandroid:id="@+id/cardView"android:layout_width="80dp"android:layout_height="80dp"android:layout_marginTop="5dp"app:cardBackgroundColor="#F2F1F1"app:cardCornerRadius="45dp"app:layout_constraintEnd_toStartOf="@+id/cardView3"app:layout_constraintHorizontal_bias="0.5"app:layout_constraintStart_toEndOf="@+id/cardView2"app:layout_constraintTop_toTopOf="parent"><androidx.constraintlayout.widget.ConstraintLayoutandroid:id="@+id/zero"android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:id="@+id/textView29"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginStart="30dp"android:layout_marginTop="17dp"android:text="0"android:textSize="35sp"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /></androidx.constraintlayout.widget.ConstraintLayout></androidx.cardview.widget.CardView><androidx.constraintlayout.widget.ConstraintLayoutandroid:layout_width="match_parent"android:layout_height="match_parent" /><androidx.cardview.widget.CardViewandroid:id="@+id/cardView3"android:layout_width="80dp"android:layout_height="80dp"android:layout_marginTop="5dp"android:background="#F2F1F1"app:cardBackgroundColor="#F2F1F1"app:cardCornerRadius="45dp"app:layout_constraintEnd_toStartOf="@+id/cardView4"app:layout_constraintHorizontal_bias="0.5"app:layout_constraintStart_toEndOf="@+id/cardView"app:layout_constraintTop_toTopOf="parent"><androidx.constraintlayout.widget.ConstraintLayoutandroid:id="@+id/point"android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:id="@+id/textView30"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginStart="36dp"android:layout_marginTop="17dp"android:text="."android:textSize="35sp"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /></androidx.constraintlayout.widget.ConstraintLayout></androidx.cardview.widget.CardView><androidx.constraintlayout.widget.ConstraintLayoutandroid:layout_width="match_parent"android:layout_height="match_parent" /><androidx.cardview.widget.CardViewandroid:id="@+id/cardView4"android:layout_width="80dp"android:layout_height="80dp"android:layout_marginTop="5dp"android:background="#F2F1F1"app:cardBackgroundColor="#F85955"app:cardCornerRadius="45dp"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.5"app:layout_constraintStart_toEndOf="@+id/cardView3"app:layout_constraintTop_toTopOf="parent"><androidx.constraintlayout.widget.ConstraintLayoutandroid:id="@+id/equal"android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:id="@+id/textView32"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginStart="31dp"android:layout_marginTop="16dp"android:text="="android:textSize="35sp"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /></androidx.constraintlayout.widget.ConstraintLayout></androidx.cardview.widget.CardView><androidx.constraintlayout.widget.ConstraintLayoutandroid:layout_width="match_parent"android:layout_height="match_parent" /></androidx.constraintlayout.widget.ConstraintLayout></androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
Java文件代码:
import androidx.appcompat.app.AppCompatActivity;
import androidx.constraintlayout.widget.ConstraintLayout;import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;public class MainActivity extends AppCompatActivity {private StringBuilder show=new StringBuilder();private ArrayList calculate_equation;private int signal=0;//为0 时表示刚输入状态;为1时表示当前在输出结果上继续输入@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);show=new StringBuilder();calculate_equation=new ArrayList<>();
//李木ConstraintLayout AC = findViewById(R.id.AC);ConstraintLayout Divide = findViewById(R.id.D);ConstraintLayout Multiplication = findViewById(R.id.X);ConstraintLayout Sub = findViewById(R.id.sub);ConstraintLayout Add = findViewById(R.id.add);ConstraintLayout Equal = findViewById(R.id.equal);ConstraintLayout Point = findViewById(R.id.point);ConstraintLayout one = findViewById(R.id.one);ConstraintLayout two = findViewById(R.id.two);ConstraintLayout three = findViewById(R.id.three);ConstraintLayout four = findViewById(R.id.four);ConstraintLayout five = findViewById(R.id.five);ConstraintLayout six = findViewById(R.id.six);ConstraintLayout seven = findViewById(R.id.seven);ConstraintLayout eight = findViewById(R.id.eight);ConstraintLayout nine = findViewById(R.id.nine);ConstraintLayout zero = findViewById(R.id.zero);EditText result=findViewById(R.id.editTextText2);AC.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {show.delete(0,show.length());show.append("");result.setText(show);result.setSelection(result.getText().length());signal=0;}});zero.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v){if(!(show.toString().equals("0"))){if(signal==0){show.append("0");result.setText(show);result.setSelection(result.getText().length());}else{show.delete(0,show.length());show.append("0");result.setText(show);result.setSelection(result.getText().length());signal=0;}}}});one.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if(signal==0){show.append("1");result.setText(show);result.setSelection(result.getText().length());}else{show.delete(0,show.length());show.append("1");result.setText(show);result.setSelection(result.getText().length());signal=0;}}});two.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if(signal==0){show.append("2");result.setText(show);result.setSelection(result.getText().length());}else{show.delete(0,show.length());show.append("2");result.setText(show);result.setSelection(result.getText().length());signal=0;}}});three.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if(signal==0){show.append("3");result.setText(show);result.setSelection(result.getText().length());}else{show.delete(0,show.length());show.append("3");result.setText(show);result.setSelection(result.getText().length());signal=0;}}});four.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if(signal==0){show.append("4");result.setText(show);result.setSelection(result.getText().length());}else{show.delete(0,show.length());show.append("4");result.setText(show);result.setSelection(result.getText().length());signal=0;}}});five.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if(signal==0){show.append("5");result.setText(show);result.setSelection(result.getText().length());}else{show.delete(0,show.length());show.append("5");result.setText(show);result.setSelection(result.getText().length());signal=0;}}});six.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if(signal==0){show.append("6");result.setText(show);result.setSelection(result.getText().length());}else{show.delete(0,show.length());show.append("6");result.setText(show);result.setSelection(result.getText().length());signal=0;}}});seven.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if(signal==0){show.append("7");result.setText(show);result.setSelection(result.getText().length());}else{show.delete(0,show.length());show.append("7");result.setText(show);result.setSelection(result.getText().length());signal=0;}}});eight.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if(signal==0){show.append("8");result.setText(show);result.setSelection(result.getText().length());}else{show.delete(0,show.length());show.append("8");result.setText(show);result.setSelection(result.getText().length());signal=0;}}});nine.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if(signal==0){show.append("9");result.setText(show);result.setSelection(result.getText().length());}else{show.delete(0,show.length());show.append("9");result.setText(show);result.setSelection(result.getText().length());signal=0;}}});Point.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if(signal==0){String a=show.toString();if(a.equals("")){show.append(".");result.setText(show);result.setSelection(result.getText().length());}else{int i;char t='0';for(i=a.length();i>0;i--){t=a.charAt(i-1);if(t=='.'||t=='+'||t=='-'||t=='*'||t=='/')break;}if(i==0){show.append(".");result.setText(show);result.setSelection(result.getText().length());}else if(t=='+'||t=='-'||t=='*'||t=='/'){show.append(".");result.setText(show);result.setSelection(result.getText().length());}}}else{show.delete(0,show.length());show.append(".");result.setText(".");result.setSelection(result.getText().length());signal=0;}}});Equal.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//判断用户是否输入了内容if(!show.toString().equals("")){signal=1;char temp=show.charAt(show.length()-1);if(show.charAt(0)=='-')show.insert(0,"0");if(temp=='+'||temp=='-')show.append("0");if(temp=='*'||temp=='/')show.append("1");StringBuilder temp1=new StringBuilder();for(int i=0;i<show.length();i++){if(show.charAt(i)>='0'&&show.charAt(i)<='9'||show.charAt(i)=='.'){temp1.append(String.valueOf(show.charAt(i)));}else if(show.charAt(i)=='N'){calculate_equation.add("NaN");i=i+2;}else if(show.charAt(i)=='∞'){calculate_equation.add("∞");}else{if(temp1.length()!=0){calculate_equation.add(temp1.toString());temp1.delete(0,temp1.length());}calculate_equation.add(String.valueOf(show.charAt(i)));}}if(temp1.length()!=0){calculate_equation.add(temp1.toString());}calculate_equation.add("#");String temp8=calculate(calculate_equation);result.setText(temp8);result.setSelection(result.getText().length());show.delete(0,show.length());calculate_equation.clear();show.append(temp8);}}});Add.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//判断用户是否输入了内容if(!(show.toString().equals(""))) {signal=0;char temp=show.charAt(show.length()-1);if(temp=='+'||temp=='-'||temp=='*'||temp=='/'){show.deleteCharAt(show.length()-1);show.append("+");}elseshow.append("+");result.setText(show);result.setSelection(result.getText().length());}}});Sub.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//判断用户是否输入了内容if(!(show.toString().equals(""))) {signal=0;char temp=show.charAt(show.length()-1);if(temp=='+'||temp=='-'||temp=='*'||temp=='/'){show.deleteCharAt(show.length()-1);show.append("-");}elseshow.append("-");result.setText(show);result.setSelection(result.getText().length());}}});Multiplication.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//判断用户是否输入了内容if(!(show.toString().equals(""))) {signal=0;char temp=show.charAt(show.length()-1);if(temp=='+'||temp=='-'||temp=='*'||temp=='/'){show.deleteCharAt(show.length()-1);show.append("*");}elseshow.append("*");result.setText(show);result.setSelection(result.getText().length());}}});Divide.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//判断用户是否输入了内容if(!(show.toString().equals(""))) {signal=0;char temp=show.charAt(show.length()-1);if(temp=='+'||temp=='-'||temp=='*'||temp=='/'){show.deleteCharAt(show.length()-1);show.append("/");}elseshow.append("/");result.setText(show);result.setSelection(result.getText().length());}}});}protected boolean operatorPriorityCompare(char operator1,char operator2){int o1=0;int o2=0;switch (operator1){case '+':{o1=0;break;}case '-':{o1=0;break;}case '*':{o1=1;break;}case '/':{o1=1;break;}}switch (operator2){case '+':{o2=0;break;}case '-':{o2=0;break;}case '*':{o2=1;break;}case '/':{o2=1;break;}}if(o1<=o2){return false;}elsereturn true;}//相加public static Double Add(Double d1,Double d2) {if(d1==Double.NEGATIVE_INFINITY||d1==Double.POSITIVE_INFINITY||d2==Double.NEGATIVE_INFINITY||d2==Double.POSITIVE_INFINITY){return d1+d2;}if(String.valueOf(d1).equals("NaN")||String.valueOf(d1).equals("NaN")){return d1+d2;}BigDecimal b1 = new BigDecimal(Double.toString(d1));BigDecimal b2 = new BigDecimal(Double.toString(d2));return b1.add(b2).doubleValue();}//相减public static Double Sub(Double d1,Double d2){if(d1==Double.NEGATIVE_INFINITY||d1==Double.POSITIVE_INFINITY||d2==Double.NEGATIVE_INFINITY||d2==Double.POSITIVE_INFINITY){return d1-d2;}if(String.valueOf(d1).equals("NaN")||String.valueOf(d1).equals("NaN")){return d1-d2;}if(String.valueOf(d1).equals("NaN")||String.valueOf(d1).equals("NaN")){return d1*d2;}BigDecimal b1=new BigDecimal(Double.toString(d1));BigDecimal b2=new BigDecimal(Double.toString(d2));return b1.subtract(b2).doubleValue();}//相乘public static Double Mul(Double d1,Double d2){if(d1==Double.NEGATIVE_INFINITY||d1==Double.POSITIVE_INFINITY||d2==Double.NEGATIVE_INFINITY||d2==Double.POSITIVE_INFINITY){return d1*d2;}if(String.valueOf(d1).equals("NaN")||String.valueOf(d1).equals("NaN")){return d1*d2;}BigDecimal b1=new BigDecimal(Double.toString(d1));BigDecimal b2=new BigDecimal(Double.toString(d2));return b1.multiply(b2).setScale(8).doubleValue();}//相除public static Double Div(Double d1,Double d2){if(d1==Double.NEGATIVE_INFINITY||d1==Double.POSITIVE_INFINITY||d2==Double.NEGATIVE_INFINITY||d2==Double.POSITIVE_INFINITY){return d1/d2;}if(String.valueOf(d1).equals("NaN")||String.valueOf(d1).equals("NaN")){return d1/d2;}if(d1==0.0&&d2==0.0){return Double.NaN;}if(d2==0.0){return d1/d2;}BigDecimal b1=new BigDecimal(Double.toString(d1));BigDecimal b2=new BigDecimal(Double.toString(d2));return b1.divide(b2,8,BigDecimal.ROUND_HALF_UP).doubleValue();}protected String calculate(ArrayList equation){Double temp2;Double temp3;Double result;List operator=new ArrayList();List<Double> operand=new ArrayList();for(int i=0;i<equation.size();i++){String temp4=(String) equation.get(i);if(temp4.equals("+")||temp4.equals("-")||temp4.equals("*")||temp4.equals("/")){if(operator.size()>0){String temp5=operator.get(operator.size()-1).toString();while(!(operatorPriorityCompare(temp4.charAt(0),temp5.charAt(0)))&&operator.size()>0){operator.remove(operator.size()-1);temp3=operand.get(operand.size()-1);operand.remove(operand.size()-1);temp2=operand.get(operand.size()-1);operand.remove(operand.size()-1);switch (temp5.charAt(0)){case '+':{result=Add(temp2,temp3);operand.add(result);break;}case '-':{result=Sub(temp2,temp3);operand.add(result);break;}case '*':{result=Mul(temp2,temp3);operand.add(result);break;}case '/':{result=Div(temp2,temp3);operand.add(result);break;}}if(operator.size()>0){temp5=operator.get(operator.size()-1).toString();}elsebreak;}operator.add(temp4);}elseoperator.add(temp4);}else if(temp4.equals("#")){while(operator.size()>0){String temp6=(String)operator.get(operator.size()-1);operator.remove(operator.size()-1);temp3=operand.get(operand.size()-1);operand.remove(operand.size()-1);temp2=operand.get(operand.size()-1);operand.remove(operand.size()-1);switch (temp6.charAt(0)){case '+':{result=Add(temp2,temp3);operand.add(result);break;}case '-':{result=Sub(temp2,temp3);operand.add(result);break;}case '*':{result=Mul(temp2,temp3);operand.add(result);break;}case '/':{result=Div(temp2,temp3);operand.add(result);break;}}}}else{if(temp4.equals("NaN")){operand.add(Double.NaN);}else if(temp4.equals("∞")){operand.add(Double.POSITIVE_INFINITY);}else{operand.add(Double.parseDouble(temp4));}}}if(operand.get(0)==Double.NEGATIVE_INFINITY) return "-∞";if(operand.get(0)==Double.POSITIVE_INFINITY) return "∞";return operand.get(0).toString();}
}/*
* csdn 波士顿o泡果奶 版权所有 */
注:
xml文件中有一些图片,若完全粘贴xml代码,可将图片换成自己的图片,图片资源放到哪里,这里我就不多说了,可以参考下面的那些博客安卓studio图片资源放到哪里- CSDN搜索https://so.csdn.net/so/search?q=%E5%AE%89%E5%8D%93studio%E5%9B%BE%E7%89%87%E8%B5%84%E6%BA%90%E6%94%BE%E5%88%B0%E5%93%AA%E9%87%8C&t=&u=&urw=
相关文章:

【安卓】Android Studio简易计算器(实现加减乘除,整数小数运算,正数负数运算)
目录 前言 运算效果 一、创建一个新的项目 二、编写xml文件(计算器显示页面) 三、实现Java运算逻辑 编辑 完整代码 xml文件代码: Java文件代码: 注: 前言 随着移动互联网的普及,手机应用程序已…...
一个vue mixin 小案例,实现等比例缩放
mixin.js /** Author: jinjianwei* Date: 2024-07-24 16:17:16* Description: 等比例缩放,屏幕适配 mixin 函数*/// * 默认缩放值 const scale {width: 1,height: 1, } // * 设计稿尺寸(px) const baseWidth 1920 const baseHeight 1080 …...

【数据结构初阶】单链表经典算法题十二道——得道飞升(中篇)
hi,bro—— 目录 5、 链表分割 6、 链表的回文结构 7、 相交链表 8、 环形链表 【思考】 —————————————— DEAD POOL —————————————— 5、 链表分割 /* struct ListNode {int val;struct ListNode *next;ListNode(int x) : val(x), …...

CTF ssrf 基础入门 (一)
0x01 引言 我发现我其实并不是很明白这个东西,有些微妙,而且记忆中也就记得Gopherus这个工具了,所以重新学习了一下,顺便记录一下吧 0x02 辨别 我们拿到一个题目,他的名字可能就是题目类型,但是也有可能…...
IP地址在后端怎么存才好?
目录 一、地址的区别 二、字符串存取 2.1 IPV4空间大小 2.2 IPV6空间大小 三、整数存取 四、总结 4.1 字符串存取优缺点 4.2 整数存取的优缺点 一、地址的区别 在网络中,IP地址分为IPV4和IPV6,IPV4是一共占32位的,每8位小数点分隔&…...

《通讯世界》是什么级别的期刊?是正规期刊吗?能评职称吗?
问题解答 问:《通讯世界》是不是核心期刊? 答:不是,是知网收录的第一批认定学术期刊。 问:《通讯世界》级别? 答:国家级。主管单位:科学技术部 主办单位:中国科学技…...
go get的原理
1、GOPROXY 可以写在os的环境变量中,也可以写在go的环境变量中 GOPROXYhttps://goproxy.cn,direct 表示先去第一个网址下载,下载不到,就直接下载 也可以配置GOPRIVATE私有仓库,遇到私有仓库中的包,就直接下载 2、go…...

jenkins替换配置文件
1.点击首页的【Manage Jenkins】-【Manage Plugins】,在选项【Available plugins】安装 Config File Provider Plugin ,安装后重启jenkins 2.安装完成后会有这个图标,点进去 3.点击新建,选择自定义,填入要替换的文件…...
C# Web控件与数据感应之 填充 HtmlTable
C# Web控件与数据感应之 填充 HtmlTable 在C#中,特别是在ASP.NET Web Forms应用中,你可能会遇到需要将数据动态填充到HTML表格(HtmlTable)中的场景。这通常涉及到遍历数据源(如数据库查询结果、集合等)&am…...

HAL库源码移植与使用之SPI驱动VS1053音频解码
你可以理解为带着dac adc芯片功能的集成芯片,声音的高低音形成由频率决定,大小声由波峰决定,所以采集时记录时间和电压值就可以确定高低音色和大小声,形成声音波形,再把波形用dac输出给喇叭,让喇叭在对应时…...

RK3568 Linux 平台开发系列讲解(内核入门篇):从内核的角度看外设芯片的驱动
在嵌入式 Linux 开发中,外设芯片的驱动是实现操作系统与硬件之间交互的关键环节。对于 RK3568 这样的处理器平台,理解如何从内核的角度构建和管理外设芯片的驱动程序至关重要。 1. 外设驱动的基础概念 外设驱动(Device Driver)是操作系统与硬件设备之间的桥梁。它负责控…...

初识C++ · AVL树(2)
目录 前言: 1 左右旋 2 右左旋 3 部分细节补充 3.1 单旋和插入 3.2 部分小函数 前言: AVL树作为一种结构,理解树的本身是不大难的,难的在于,树旋转之后的连接问题,写AVL树的代码大部分都是在旋转部分…...

LLM:归一化 总结
一、Batch Normalization 原理 Batch Normalization 是一种用于加速神经网络训练并提高稳定性的技术。它通过在每一层网络的激活值上进行归一化处理,使得每一层的输入分布更加稳定,从而加速训练过程,并且减轻了对参数初始化的依赖。 公式 …...
蓝桥杯 2024 年第十五届省赛真题 —— 最大异或结点
目录 1. 最大异或结点1. 问题描述2. 输入格式3. 输出格式4. 样例输入5. 样例输出6. 样例说明7. 评测用例规模与约定 2. 解题思路1. 解题思路2. AC_Code 1. 最大异或结点 1. 问题描述 小蓝有一棵树,树中包含 N N N 个结点,编号为 0 , 1 , 2 , ⋯ , N − 1 0,1,2,…...

AV1技术学习:Loop Restoration Filter
环路恢复滤波器(restoration filter)适用于64 64、128 128 或 256 256 像素块单元,称为 loop restoration units (LRUs)。每个单元可以独立选择是否跳过滤波、使用维纳滤波器(Wiener filter)或使用自导滤波器&#…...

如何使用python实现自动化办公?干货满满!
Python作为一种简单而强大的编程语言,不仅在数据科学和软件开发领域广受欢迎,还在办公自动化方面发挥了巨大作用。通过Python,我们可以编写脚本来自动执行各种重复性任务,从而提高工作效率并减少错误。在本文中,我们将…...

QT Creator下载安装详细教程(保姆级教程)
qt下载安装 1.下载网址 通过清华大学开源软件镜像站进行下载:链接: https://mirrors.tuna.tsinghua.edu.cn/qt/development_releases/online_installers/ 这里我选的是4.4版本的,也可以选择4.7版本,问题不大。 根据电脑系统选择下载linux…...

无人机公司销售需要什么资质
国家民航局于2024年1月1日实施了《无人驾驶航空器飞行管理暂行条例》,根据这个管理条例里面的 第十一条 使用除微型以外的民用无人驾驶航空器从事飞行活动的单位应当具备下列条件,并向国务院民用航空主管部门或者地区民用航空管理机构申请取得民用无人驾…...
代码自动化重构工具OpenRewrite介绍
OpenRewrite 是一个用于大规模自动化代码重构的开源框架,它极大地提升了开发人员的研发效率,通过自动化地进行代码重构和转换,帮助开发人员消除代码库中的技术债务。 通过 LST、访问器和配方的结合,OpenRewrite 能够实现准确的代…...

Win11安装Docker
下载Docker Desktop for Windows 下载 下载连接:Install Docker Desktop on Windows | Docker Docs 地址在国外,需要科学上网。也可使用我提供的,百度网盘:https://pan.baidu.com/s/1232TTkkzLsoZyFjC3bmgiQ 安装 下载完成之后…...

微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...

高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...

select、poll、epoll 与 Reactor 模式
在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。 一、I…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要: 近期,在使用较新版本的OpenSSH客户端连接老旧SSH服务器时,会遇到 "no matching key exchange method found", "n…...
关于uniapp展示PDF的解决方案
在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项: 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库: npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...

EasyRTC音视频实时通话功能在WebRTC与智能硬件整合中的应用与优势
一、WebRTC与智能硬件整合趋势 随着物联网和实时通信需求的爆发式增长,WebRTC作为开源实时通信技术,为浏览器与移动应用提供免插件的音视频通信能力,在智能硬件领域的融合应用已成必然趋势。智能硬件不再局限于单一功能,对实时…...

uni-app学习笔记二十七--设置底部菜单TabBar的样式
官方文档地址:uni.setTabBarItem(OBJECT) | uni-app官网 uni.setTabBarItem(OBJECT) 动态设置 tabBar 某一项的内容,通常写在项目的App.vue的onLaunch方法中,用于项目启动时立即执行 重要参数: indexnumber是tabBar 的哪一项&…...