介绍
初学Android开发,在官方开发者网站https://developer.android.com/guide学完构建简单的应用后就开始尝试实现简单的计算器app。计算器的实现是参照一加手机的计算器设计,这里实现了计算器的表达式输入并输出运算结果,支持小数的四则运算。
工具:IntelliJ IDEA
语言:Java
app效果
界面上面有两个TextView分别显示输入的运算表达式和计算结果;下方20个Button按钮实现按键功能。app中 % 和 ( ) 还未实现。
可以输入数字和+-*/运算符,当为输入数字时不能输入运算符;小数点'.'也算运算符;不允许连续输入运算符(123+*不允许);超过double范围的数自动转为科学计数法显示。
输入要计算的表达式后按'='按钮会显示运算结果。
实现
通过android Activity绘制计算器的界面并设计组件布局
布局的activity_main.xml内容如下
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
android:text="( )"
android:layout_width="80dp"
android:layout_height="60dp" android:id="@+id/sign_bracket"
app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginBottom="16dp" app:layout_constraintStart_toEndOf="@+id/number0"
app:layout_constraintHorizontal_bias="0.5" app:layout_constraintEnd_toStartOf="@+id/sign_equal"
app:layout_constraintTop_toBottomOf="@+id/number3" android:textSize="30sp"
android:fontFamily="sans-serif" android:background="#FFFFFF"/>
android:text="/"
android:layout_width="80dp"
android:layout_height="60dp" android:id="@+id/sign_divide"
app:layout_constraintStart_toEndOf="@+id/sign_rest"
app:layout_constraintHorizontal_bias="0.5" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/num_result"
app:layout_constraintBottom_toTopOf="@+id/sign_multiply" android:textSize="30sp"
android:fontFamily="sans-serif" android:background="#FFFFFF" android:textColor="#FF9800"
/>
android:text="%"
android:layout_width="80dp"
android:layout_height="60dp" android:id="@+id/sign_rest"
app:layout_constraintStart_toEndOf="@+id/sign_del"
app:layout_constraintHorizontal_bias="0.5" app:layout_constraintEnd_toStartOf="@+id/sign_divide"
app:layout_constraintTop_toBottomOf="@+id/num_result"
app:layout_constraintBottom_toTopOf="@+id/number9" android:textSize="30sp"
android:fontFamily="sans-serif" android:background="#FFFFFF"/>
android:text="DEL"
android:layout_width="80dp"
android:layout_height="60dp" android:id="@+id/sign_del"
app:layout_constraintStart_toEndOf="@+id/sign_ac"
app:layout_constraintHorizontal_bias="0.5" app:layout_constraintEnd_toStartOf="@+id/sign_rest"
app:layout_constraintTop_toBottomOf="@+id/num_result"
app:layout_constraintBottom_toTopOf="@+id/number8" android:textSize="30sp"
android:fontFamily="sans-serif" android:background="#FFFFFF"/>
android:text="AC"
android:layout_width="80dp"
android:layout_height="60dp" android:id="@+id/sign_ac"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintEnd_toStartOf="@+id/sign_del" app:layout_constraintTop_toBottomOf="@+id/num_result"
app:layout_constraintBottom_toTopOf="@+id/number7"
android:textSize="30sp" android:fontFamily="sans-serif" android:background="#FFFFFF"/>
android:text="."
android:layout_width="80dp"
android:layout_height="60dp" android:id="@+id/sign_point"
app:layout_constraintBottom_toBottomOf="parent"
android:layout_margi