可选择的谷歌安卓开发语言有多种,这里选择的是Java
如何安装AndroidStudio,请看:小白使用Android Studio开发安卓app_来自喵星的博客-CSDN博客_android studio 开发安卓Android Studio入门到放弃经过一系列的折磨,终于创建出来Android项目了下面说说我从零创建app程序的Android Studio配置安装SDK版本SDK Tools的Android SDK Build-Tools 30-rC2版本,有什么用什么,要和那个对应同样的也是版本对应...https://blog.csdn.net/qq_27577113/article/details/105371477如何安装安卓开发环境最主要的就是解决环境兼容性问题,我下载的环境是在安装扩展硬盘之后把Android相关环境全部下载了,下载了30GB左右环境文件,每一个安卓版本大概有1GB~2GB相关配置,如果只用安卓某几个版本,倒是不用下这么多,因为安卓版本实在太多了(2022年5月12日,谷歌举办I/O 2022开发者大会,并正式发布Android 13。),每个版本基本都有很大改动,特别是低版本,一个小版本不兼容最终都可能导致整个项目无法正常运行,这一点特别要注意
点击项目结构为Android,整个项目结构如下
文件介绍:
MainActivity:app创建时执行的一个主要类,里面会对页面的一些按钮或文本进行初始化,这里的初始化有两种方式,一个是通过findViewById选择页面中的某个组件进行初始化,有点类似JavaScript中的document.getElementById这个方法,只不过这个的id都是放到R.id这个map中的,另一个就是创建页面组件时,通过android:onClick属性手动添加触发事件
activity_main.xml:页面布局主要文件,这里我弄了一个简单的类似于手机上的计算器的布局,只不过这个计算器能力有限,只能进行逆波兰表达式的计算,并且还是单数字的哈哈哈
波兰表达式介绍:波兰表示法_百度百科
MainActivity代码如下:
- package com.example.mycalculate;
-
- import androidx.appcompat.app.AppCompatActivity;
-
- import android.content.DialogInterface;
- import android.os.Bundle;
- import android.util.Log;
- import android.view.View;
- import android.widget.Button;
- import android.widget.TextView;
-
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Stack;
-
- public class MainActivity extends AppCompatActivity {
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- findViewById(R.id.btnClear).setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- ((TextView) findViewById(R.id.txtMsg)).setText("");
- }
- });
- findViewById(R.id.btnDelete).setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- String text = ((TextView) findViewById(R.id.txtMsg)).getText().toString();
- if (text.length() > 0) {
- ((TextView) findViewById(R.id.txtMsg)).setText(text.substring(0, text.length() - 1));
- }
- }
- });
- //计算结果
- findViewById(R.id.btnCalc).setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- //逆波兰表达式求值
- String expStr = ((TextView) findViewById(R.id.txtMsg)).getText().toString();
- String[] exp = new String[expStr.length()];
- for (int i = 0; i < expStr.length(); i++) {
- exp[i] = expStr.charAt(i) + "";
- }
- int result = evalRPN(exp);
- TextView txtMsg = findViewById(R.id.txtMsg);
- txtMsg.setText(txtMsg.getText().toString().concat("=" + result + ""));
-
- }
- });
- }
-
- public void myClick(View view) {
- Button btn = (Button) view;
- TextView txtMsg = findViewById(R.id.txtMsg);
- CharSequence btn0Txt = btn.getText();
- txtMsg.setText(txtMsg.getText().toString().concat(btn0Txt.toString()));
-
- }
-
- public void execCalc(View view) {
- Button btn = (Button) view;
- TextView txtMsg = findViewById(R.id.txtMsg);
- CharSequence btn0Txt = btn.getText();
- txtMsg.setText(txtMsg.getText().toString().concat(btn0Txt.toString()));
- }
-
- public int evalRPN(String[] tokens) {
- Stack stack = new Stack();
- for (String s : tokens) {
- if (isNumber(s)) {
- stack.push(s);
- } else {
- Integer num1 = Integer.parseInt(stack.pop() + "");
- Integer num2 = Integer.parseInt(stack.pop() + "");
- Integer t = mathMath(num2, num1, s);
- stack.push(t);
- }
- }
- return Integer.parseInt(stack.pop() + "");
- }
-
- //执行数学运算
- public static Integer mathMath(Integer num1, Integer num2, String operator) {
- if ("+".equals(operator))
- return Math.addExact(num1, num2);
- if ("-".equals(operator))
- return Math.subtractExact(num1, num2);
- if ("*".equals(operator))
- return Math.multiplyExact(num1, num2);
- if ("/".equals(operator))
- return num1 / num2;
- return 0;
- }
-
- //判断是否是数字,如果是数字则返回true,否则返回false
- public static boolean isNumber(String str) {
- if (str == null || str.length() == 0)
- return false;
- if (str.length() == 1) {
- if (!(str.charAt(0) >= '0' && str.charAt(0) <= '9')) {
- return false;
- }
- }
- for (int i = 0; i < str.length(); i++) {
- if (str.charAt(0) == '+' || str.charAt(0) == '-') {
- continue;
- }
- if (!(str.charAt(i) >= '0' && str.charAt(i) <= '9')) {
- return false;
- }
- }
- return true;
- }
-
- //计算两个符号的优先级 返回小等于零的数表示后面优先级高 否则前面优先级高
- public static int maxOperator(String operator1, String operator2) {
- int weight1 = getPriority(operator1);//符号一权重
- int weight2 = getPriority(operator2);//符号二权重
- return weight1 - weight2;
- }
-
- //获取符号权重
- public static int getPriority(String operator) {
- if ("+".equals(operator) || "-".equals(operator))
- return 1;
- else if ("*".equals(operator) || "/".equals(operator) || "%".equals(operator))
- return 2;
- else
- return 0;
- }
-
- }
activity_main.xml页面布局文件代码
- "1.0" encoding="utf-8"?>
"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"
- tools:context=".MainActivity">
-
- android:id="@+id/btn0"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:onClick="myClick"
- android:text="0"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintHorizontal_bias="0.321"
- app:layout_constraintLeft_toLeftOf="parent"
- app:layout_constraintRight_toRightOf="parent"
- app:layout_constraintTop_toTopOf="parent"
- app:layout_constraintVertical_bias="0.339" />
-
-
- android:id="@+id/btn1"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:onClick="myClick"
- android:text="1"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintHorizontal_bias="0.027"
- app:layout_constraintLeft_toLeftOf="parent"
- app:layout_constraintRight_toRightOf="parent"
- app:layout_constraintTop_toTopOf="parent"
- app:layout_constraintVertical_bias="0.128" />
-
-
- android:id="@+id/btn2"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:onClick="myClick"
- android:text="2"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintHorizontal_bias="0.321"
- app:layout_constraintLeft_toLeftOf="parent"
- app:layout_constraintRight_toRightOf="parent"
- app:layout_constraintTop_toTopOf="parent"
- app:layout_constraintVertical_bias="0.128" />
-
-
- android:id="@+id/btn3"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:onClick="myClick"
- android:text="3"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintHorizontal_bias="0.616"
- app:layout_constraintLeft_toLeftOf="parent"
- app:layout_constraintRight_toRightOf="parent"
- app:layout_constraintTop_toTopOf="parent"
- app:layout_constraintVertical_bias="0.128" />
-
-
- android:id="@+id/btn4"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:onClick="myClick"
- android:text="4"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintHorizontal_bias="0.027"
- app:layout_constraintLeft_toLeftOf="parent"
- app:layout_constraintRight_toRightOf="parent"
- app:layout_constraintTop_toTopOf="parent"
- app:layout_constraintVertical_bias="0.199" />
-
-
- android:id="@+id/btn5"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="5"
- android:onClick="myClick"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintHorizontal_bias="0.321"
- app:layout_constraintLeft_toLeftOf="parent"
- app:layout_constraintRight_toRightOf="parent"
- app:layout_constraintTop_toTopOf="parent"
- app:layout_constraintVertical_bias="0.199" />
-
- android:id="@+id/btn6"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="6"
- android:onClick="myClick"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintHorizontal_bias="0.616"
- app:layout_constraintLeft_toLeftOf="parent"
- app:layout_constraintRight_toRightOf="parent"
- app:layout_constraintTop_toTopOf="parent"
- app:layout_constraintVertical_bias="0.199" />
-
-
- android:id="@+id/btn7"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:onClick="myClick"
- android:text="7"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintHorizontal_bias="0.027"
- app:layout_constraintLeft_toLeftOf="parent"
- app:layout_constraintRight_toRightOf="parent"
- app:layout_constraintTop_toTopOf="parent"
- app:layout_constraintVertical_bias="0.269" />
-
-
- android:id="@+id/btn8"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:onClick="myClick"
- android:text="8"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintHorizontal_bias="0.321"
- app:layout_constraintLeft_toLeftOf="parent"
- app:layout_constraintRight_toRightOf="parent"
- app:layout_constraintTop_toTopOf="parent"
- app:layout_constraintVertical_bias="0.269" />
-
-
- android:id="@+id/btn9"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="9"
- android:onClick="myClick"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintHorizontal_bias="0.616"
- app:layout_constraintLeft_toLeftOf="parent"
- app:layout_constraintRight_toRightOf="parent"
- app:layout_constraintTop_toTopOf="parent"
- app:layout_constraintVertical_bias="0.269" />
-
-
-
- android:id="@+id/btnDot"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="."
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintHorizontal_bias="0.616"
- app:layout_constraintLeft_toLeftOf="parent"
- app:layout_constraintRight_toRightOf="parent"
- app:layout_constraintTop_toTopOf="parent"
- app:layout_constraintVertical_bias="0.339" />
-
-
- android:id="@+id/btnDivide"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="/"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintHorizontal_bias="0.934"
- app:layout_constraintLeft_toLeftOf="parent"
- app:layout_constraintRight_toRightOf="parent"
- app:layout_constraintTop_toTopOf="parent"
- app:layout_constraintVertical_bias="0.058" />
-
-
- android:id="@+id/btnMultiply"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:onClick="execCalc"
- android:text="*"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintHorizontal_bias="0.934"
- app:layout_constraintLeft_toLeftOf="parent"
- app:layout_constraintRight_toRightOf="parent"
- app:layout_constraintTop_toTopOf="parent"
- app:layout_constraintVertical_bias="0.128" />
-
- android:id="@+id/button13"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="-"
- android:onClick="execCalc"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintHorizontal_bias="0.934"
- app:layout_constraintLeft_toLeftOf="parent"
- app:layout_constraintRight_toRightOf="parent"
- app:layout_constraintTop_toTopOf="parent"
- app:layout_constraintVertical_bias="0.199" />
-
- android:id="@+id/button14"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="+"
- android:onClick="execCalc"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintHorizontal_bias="0.934"
- app:layout_constraintLeft_toLeftOf="parent"
- app:layout_constraintRight_toRightOf="parent"
- app:layout_constraintTop_toTopOf="parent"
- app:layout_constraintVertical_bias="0.269" />
-
- android:id="@+id/btnMo"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="%"
- android:onClick="execCalc"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintHorizontal_bias="0.616"
- app:layout_constraintLeft_toLeftOf="parent"
- app:layout_constraintRight_toRightOf="parent"
- app:layout_constraintTop_toTopOf="parent"
- app:layout_constraintVertical_bias="0.058" />
-
- android:id="@+id/btnDelete"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="删除"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintHorizontal_bias="0.321"
- app:layout_constraintLeft_toLeftOf="parent"
- app:layout_constraintRight_toRightOf="parent"
- app:layout_constraintTop_toTopOf="parent"
- app:layout_constraintVertical_bias="0.058" />
-
-
- android:id="@+id/btnClear"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="C"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintHorizontal_bias="0.027"
- app:layout_constraintLeft_toLeftOf="parent"
- app:layout_constraintRight_toRightOf="parent"
- app:layout_constraintTop_toTopOf="parent"
- app:layout_constraintVertical_bias="0.058" />
-
-
- android:id="@+id/btnBlank"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text=" "
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintHorizontal_bias="0.027"
- app:layout_constraintLeft_toLeftOf="parent"
- app:layout_constraintRight_toRightOf="parent"
- app:layout_constraintTop_toTopOf="parent"
- app:layout_constraintVertical_bias="0.339" />
-
-
- android:id="@+id/btnCalc"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="="
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintHorizontal_bias="0.934"
- app:layout_constraintLeft_toLeftOf="parent"
- app:layout_constraintRight_toRightOf="parent"
- app:layout_constraintTop_toTopOf="parent"
- app:layout_constraintVertical_bias="0.339" />
-
-
- android:id="@+id/txtMsg"
- android:layout_width="381dp"
- android:layout_height="26dp"
- android:text=""
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintHorizontal_bias="0.303"
- app:layout_constraintLeft_toLeftOf="parent"
- app:layout_constraintRight_toRightOf="parent"
- app:layout_constraintTop_toTopOf="parent"
- app:layout_constraintVertical_bias="0.422" />
-
-
- android:id="@+id/textView2"
- android:layout_width="202dp"
- android:layout_height="40dp"
- android:text="逆波兰表达式求值"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintHorizontal_bias="0.045"
- app:layout_constraintLeft_toLeftOf="parent"
- app:layout_constraintRight_toRightOf="parent"
- app:layout_constraintTop_toTopOf="parent"
- app:layout_constraintVertical_bias="0.536" />
通过配置的虚拟机环境,点击运行进行测试,点击数字99*然后点击等于计算一下结果,可以看到正常进行9*9的计算了
有时候安卓模拟器启动后不能正常显示,这里是解决办法:
-
相关阅读:
平平淡淡、坚守初心、砥砺前行
【SwiftUI项目】0011、SwiftUI项目-费用跟踪-记账App项目-第3/3部分 -日期指定选定-新增费用页面
【ACWing】3627. 最大差值
8月份补丁更新:微软修补了121个安全漏洞
【广州华锐互动】利用AR远程指导系统进行机械故障排查,实现远程虚拟信息互动
【UML】类图Class Diagram
nlp模型训练接口
Desthiobiotin-PEG4-Azide_脱硫生物素-叠氮化物 100mg
Leetcode 40. 组合总和 II
电压提前/滞后电路 —— 电赛综测备赛
-
原文地址:https://blog.csdn.net/qq_27577113/article/details/127757014