当前位置: 首页 > news >正文

移动应用开发 实验二:标准身高计算器

文章目录

  • 准备工作
  • 一,创建Android Studio项目
  • 二,创建活动模块
  • 三,设计用户界面
    • (一)设置页面布局
    • (二)添加标题文本控件
    • (三)设计体重输入框
    • (四)设计性别选项
    • (五)设计按钮和结果存放区
    • (六)运行查看效果
  • 四,编写活动代码
  • 五,运行项目


准备工作

  • 搭建开发环境
    JDK1.8,Android Studio

  • UI界面效果
    在这里插入图片描述

一,创建Android Studio项目

1,新建Android Studio项目,单击new Project。

在这里插入图片描述
2,选择phone and tablet——empty activity。

在这里插入图片描述

3,输入项目名称:HeightCalculator,语言选择Java,单击Finish。

在这里插入图片描述
4,等待下载全局配置依赖。

在这里插入图片描述5,下载完成,页面效果。
在这里插入图片描述6,单击运行按钮,启动项目,如下效果,成功创建项目。
在这里插入图片描述

二,创建活动模块

1,在项目目录右击选择——new——Activity——empty Activity。
在这里插入图片描述

2,输入名称:HeightCalculatorActivity,单击finish按钮,创建活动。
在这里插入图片描述
3,创建完成。
在这里插入图片描述

三,设计用户界面

(一)设置页面布局

1,进入code页,编写代码。
在这里插入图片描述
2,进入design页,可以使用拖动的方式添加布局方式和控件。
在这里插入图片描述
3,添加线性布局,根据效果图,页面整体布局为垂直;这里设置为垂直:android:orientation="vertical"
在这里插入图片描述

(二)添加标题文本控件

在这里插入图片描述源码:

<TextViewandroid:layout_width="410dp"android:layout_height="100dp"android:gravity="center"android:text="标准身高计算器"android:textAlignment="center"android:textSize="30sp"android:textStyle="bold" />

(三)设计体重输入框

1,根据下面效果图,这是一个水平布局,包含三个控件。
在这里插入图片描述
2,首先,先添加一个水平布局,android:orientation="horizontal",表示水平布局。
在这里插入图片描述

3,在水平布局下添加文本视图控件(相当于标签,显示文本)。
在这里插入图片描述
4,添加一个输入框控件,用于接收用户输入的数据,并且给上一个id值,后续编写Java代码接收信息。
在这里插入图片描述5,最后再添加一个文本视图控件,用于显示最后的单位。
在这里插入图片描述

(四)设计性别选项

1,分析:从下图中也可发现这是一个水平布局,并且两个单选按钮是绑定在一起的(如不是共同,则性别就可以全选,就失去了单选按钮的特点,出现逻辑错误)。
在这里插入图片描述
2,根据分析,此时再添加一个水平布局,二级的布局方式,与体重输入框布局属于同级。
在这里插入图片描述

<LinearLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:orientation="horizontal"></LinearLayout>

3,添加文本视图控件。
在这里插入图片描述

<TextViewandroid:layout_width="150.0dip"android:layout_height="wrap_content"android:layout_gravity="center"android:text="请选择你的性别:"android:textSize="18sp" />

4,添加单选控件组,将两个单选按钮绑定到一起。
在这里插入图片描述

<RadioGroupandroid:id="@+id/RadioGroup01"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal"></RadioGroup>

5,在控件组中添加两个单选按钮控件。
在这里插入图片描述

<RadioButton                       android:id="@+id/man"          android:layout_width="50.0dip" android:layout_height="70.0dip"android:checked="true"         android:text="" />            <RadioButton                       android:id="@+id/woman"        android:layout_width="50.0dip" android:layout_height="70.0dip"android:text="" />            

(五)设计按钮和结果存放区

1,添加水平布局,在布局下添加按钮控件。
在这里插入图片描述

<LinearLayout                               android:layout_width="fill_parent"      android:layout_height="wrap_content"    android:gravity="center_horizontal"     android:orientation="horizontal">       <Button                                 android:id="@+id/calculator"        android:layout_width="200.0dip"     android:layout_height="wrap_content"android:layout_marginTop="20.0dip"  android:text="运算 " />               
</LinearLayout>                             

2,添加水平布局,在其中添加文本视图控件用于存放结果(添加id)。
在这里插入图片描述

<LinearLayout                                android:layout_width="fill_parent"       android:layout_height="wrap_content"     android:gravity="center_horizontal"      android:orientation="horizontal">        <TextView                                android:id="@+id/result"             android:layout_width="wrap_content"  android:layout_height="wrap_content" android:layout_marginTop="10.0dip" />
</LinearLayout>                              

(六)运行查看效果

1,右击身高计算器的Java文件,单击运行按钮。
在这里插入图片描述
2,弹出如下提示,无法运行(原因是没有配置运行配置文件:AndroidManifest.xml)。
在这里插入图片描述
3,打开AndroidManifest.xml,设置android:exported="true",在单击运行按钮。
在这里插入图片描述
4,模拟器显示出正常页面,没有什么问题。
在这里插入图片描述

四,编写活动代码

编写HeightCalculatorActivity.java,实现计算标准身高。
在这里插入图片描述

package com.example.heightcalculator;import androidx.appcompat.app.AppCompatActivity;import android.app.AlertDialog;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.TextView;public class HeightCalculatorActivity extends AppCompatActivity {private Button calculatorButton;private EditText weightEditText;private RadioButton manRadioButton;private RadioButton womanRadioButton;private TextView resultTextView;private static final int EXIT=1;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_height_calculator);calculatorButton=(Button)findViewById(R.id.calculator);weightEditText=(EditText)findViewById(R.id.weight);manRadioButton=(RadioButton)findViewById(R.id.man);womanRadioButton=(RadioButton)findViewById(R.id.woman);resultTextView=(TextView)findViewById(R.id.result);}@Overrideprotected void onStart() {super.onStart();registerEvent();}private void registerEvent(){calculatorButton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if(!weightEditText.getText().toString().trim().equals("")){double weight=Double.parseDouble(weightEditText.getText().toString());StringBuffer sb=new StringBuffer();sb.append("------------评估结果----------- \n");if(manRadioButton.isChecked()){sb.append("男性标准身高:");double result=evaluateHeight(weight,"男");sb.append((int)result+"(厘米)");}else if(womanRadioButton.isChecked()){sb.append("女性标准身高:");double result=evaluateHeight(weight,"女");sb.append((int)result+"(厘米)");}resultTextView.setText(sb.toString());}else{showMessage("请输入体重!");}}});}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {menu.add(Menu.NONE, EXIT, Menu.NONE, "退出");return super.onCreateOptionsMenu(menu);}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {if(item.getItemId()==EXIT){finish();//退出程序}return super.onOptionsItemSelected(item);}private double evaluateHeight(double weight,String sex){double height;if(sex=="男"){height=170-(62-weight)/0.6;}else{height =158-(52-weight)/0.5;}return height;}private void showMessage(String message){AlertDialog alert = new AlertDialog.Builder(this).create();alert.setTitle("系统信息");alert.setMessage(message);alert.setButton("确定", (dialog, whichButton) -> {});alert.show();}}

五,运行项目

1,单击运行按钮。
在这里插入图片描述
2,启动成功。在这里插入图片描述

3,输入体重,得出结果。
在这里插入图片描述

相关文章:

移动应用开发 实验二:标准身高计算器

文章目录 准备工作一&#xff0c;创建Android Studio项目二&#xff0c;创建活动模块三&#xff0c;设计用户界面&#xff08;一&#xff09;设置页面布局&#xff08;二&#xff09;添加标题文本控件&#xff08;三&#xff09;设计体重输入框&#xff08;四&#xff09;设计性…...

金华迪加现场大屏互动系统 mobile.do.php 任意文件上传漏洞复现

0x01 产品描述&#xff1a; ‌ 金华迪加现场大屏互动系统‌是由金华迪加网络科技有限公司开发的一款专注于增强活动现场互动性的系统。该系统设计用于提供高质量的现场互动体验&#xff0c;支持各种大型活动&#xff0c;如企业年会、产品发布会、展览展示等。其主要功能包…...

使用 pd.ExcelWriter 创建多工作表 Excel 文件的详细教程

with pd.ExcelWriter(...) as writer 可以将多个内容写入一个 Excel 文件中。具体地说&#xff0c;它创建了一个Excel 文件写入器&#xff0c;使得我们可以在一个文件中创建多个工作表&#xff08;Sheet&#xff09;。 with pd.ExcelWriter("模型指标和损失值.xlsx")…...

驱动-----dht11温湿度传感器

单总线&#xff1a;只用一根线。 复位信号&#xff1a;设置为输出模式&#xff0c;低电平20ms&#xff0c;然后再拉高30us。然后设置为输入模式&#xff0c;dht11会先拉低80us&#xff0c;然后拉高80us表示对接成功 数据0&#xff1a;开始先拉低50us&#xff0c;然后拉高26~28u…...

Docker 基础命令简介

目录 Docker 基础命令 1. Docker 版本信息 2. 获取 Docker 帮助 3. 列出所有运行中的容器 4. 运行一个新的容器 5. 查看容器日志 6. 停止容器 7. 启动已停止的容器 8. 删除容器 9. 列出所有镜像 10. 拉取镜像 11. 构建镜像 12. 删除镜像 13. 执行命令 14. 查看容…...

嵌入式开发之静态库和共享库

静态库 静态库的特点: 默认执行库链接的时候,检索的是Linux的/lib、/usr/lib目录下,如果指定gcc -c .... -L 指定路径 -l指定库文件;c语言分为预编译、编译、汇编、链接四个步骤。链接的时候是把依赖库文件函数的代码拷贝到程序里面,即便是删除库文件。拷贝后的程序依旧…...

关于npm源的切换及相关操作

要查看当前配置的 npm 源&#xff08;registry&#xff09;&#xff0c;可以使用以下命令&#xff1a; 查看 npm 源 npm config get registry这个命令会返回目前被设置的 npm registry URL&#xff0c;通常情况下是 https://registry.npmjs.org/。 列出所有 npm 配置项 如果…...

vue前端sku实现

this.value.skuStockList [];let skuList this.value.skuStockList;//只有一个属性时if (this.selectProductAttr.length 1) {let attr this.selectProductAttr[0];for (let i 0; i < attr.values.length; i) {skuList.push({spData: JSON.stringify([{key:attr.name,v…...

使用Vue3和Vue2进行开发的区别

使用Vue3和Vue2进行开发的区别 笔者虽然老早就是用vue3进行开发了&#xff0c;但是上次有人问道使用vue3进行开发跟使用vue2进行开发的区别有哪些这个问题的时候&#xff0c;回答的还是有些琐碎&#xff0c;干脆今天专门整理一下&#xff0c;做个记录。 一、再也不用set了 众所…...

爬虫入门urllib 和 request(二)

文章目录 1、urllib介绍2、urllib的基本方法介绍2.1 urllib.Request2.2 response.read() 3、urllib请求百度首页的完整例子4、小结 1、urllib介绍 除了requests模块可以发送请求之外, urllib模块也可以实现请求的发送,只是操作方法略有不同! urllib在python中分为urllib和url…...

【大数据学习 | HBASE】hbase的整体架构

hbase的region存储原理图 首先我们看到hbase的组成分为两个大的部分&#xff0c;分别是hmaster和hregionserver&#xff0c;主节点用于协调数据&#xff0c;regionserver用于真正的去管理表&#xff0c;其中regionserver存在多个&#xff0c;他们共同协调管理全有的表&#xff…...

群控系统服务端开发模式-应用开发-个人资料

群控系统服务端开发模式后端基础框架现在就差个人资料、及权限验证。下面开发个人资料。 一、获取个人信息 1、添加路由 在根目录下route文件夹下面app.php文件中添加如下代码&#xff1a; Route::post(member/personal_data,permission.Member/personalData);// 获取个人信息…...

openssl生成加密,公钥实现非对称加密

私钥用于加密&#xff0c;公钥用于解密 私钥用于颁发token&#xff0c;公钥用于验证token&#xff0c;公钥不能颁发token 私钥和公钥是一对&#xff0c;不能单独使用&#xff0c;利用私钥生成公钥&#xff0c;利用公钥进行解密 使用openssl来生成一对私钥和公钥&#xff1a;ope…...

[CKS] K8S Admission Set Up

最近准备花一周的时间准备CKS考试&#xff0c;在准备考试中发现有一个题目关于Admission。 Whats Admission Kubernetes Admission是Kubernetes集群中一种机制&#xff0c;用于控制和修改集群中的资源对象。它允许您在Kubernetes资源被创建、更新或删除之前&#xff0c;对资源…...

前端学习Day13 CSS盒子的定位(固定定位篇“附练习”)

一、固定定位 固定定位 &#xff08;position:fixed&#xff09;其实是绝对定位的子类别&#xff0c;一个设置了 position:fixed 的元素是相对于视窗固定的&#xff0c;就算页面文档发生了滚动&#xff0c;它也会一直待在相同的地方。 ⚠️&#xff1a;固定定位会脱离文档流。…...

Tomcat 启动卡住,日志显示 At least one JAR was scanned for TLDs yet contained no TLDs.

现象 Tomcat 启动后&#xff0c;控制台输出卡在了&#xff1a; At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JA…...

计算机网络:网络层 —— 移动 IP 技术

文章目录 IPv6IPv6 的诞生背景主要优势IPv6引进的主要变化 IPv6数据报的基本首部IPv6数据报首部与IPv4数据报首部的对比 IPv6数据报的拓展首部IPv6地址IPv6地址空间大小IPv6地址的表示方法 IPv6地址的分类从IPv4向IPv6过渡使用双协议栈使用隧道技术 网际控制报文协议 ICMPv6ICM…...

useCrudSchemas

摘要&#xff1a; useCrudSchemas 不是一个标准的JavaScript或数据库操作库函数&#xff0c;也不是一个广泛认知的术语。它可能是某个特定项目或应用程序中定义的一个自定义函数或方法&#xff0c;用于简化CRUD&#xff08;创建、读取、更新、删除&#xff09;操作。 在Web开发…...

SpringBoot3集成Junit5

目录 1. 确保项目中包含相关依赖2. 配置JUnit 53. 编写测试类4、Junit5 新增特性4.1 注解4.2 断言4.3 嵌套测试4.4 总结 在Spring Boot 3中集成JUnit 5的步骤相对简单。以下是你可以按照的步骤&#xff1a; 1. 确保项目中包含相关依赖 首先&#xff0c;确保你的pom.xml文件中…...

【EMNLP2024】阿里云人工智能平台 PAI 多篇论文入选 EMNLP2024

近期&#xff0c;阿里云人工智能平台 PAI 的多篇论文在 EMNLP2024 上入选。论文成果是阿里云与华南理工大学金连文教授团队、复旦大学王鹏教授团队共同研发。EMNLP 是人工智能自然语言处理领域的顶级国际会议&#xff0c;聚焦于自然语言处理技术在各个应用场景的学术研究&#…...

Altium Designer新手必看:5分钟搞定PCB封装库创建(附3D模型导入技巧)

Altium Designer新手实战&#xff1a;从零构建PCB封装库与3D模型高效导入 刚接触Altium Designer的工程师常被PCB封装库的创建难住——焊盘尺寸怎么定&#xff1f;丝印如何对齐&#xff1f;3D模型能否可视化验证&#xff1f;这些问题直接关系到后期PCB设计的成功率。本文将用最…...

技术竞赛之道:从创新构想到落地执行的实战心法

技术竞赛之道&#xff1a;从创新构想到落地执行的实战心法 【免费下载链接】A-to-Z-Resources-for-Students ✅ Curated list of resources for college students 项目地址: https://gitcode.com/GitHub_Trending/at/A-to-Z-Resources-for-Students 在当今技术驱动的时…...

5步定制UEFI启动界面:技术爱好者的HackBGRT实战指南

5步定制UEFI启动界面&#xff1a;技术爱好者的HackBGRT实战指南 【免费下载链接】HackBGRT Windows boot logo changer for UEFI systems 项目地址: https://gitcode.com/gh_mirrors/ha/HackBGRT 一、问题发现&#xff1a;启动界面定制的3大痛点 在计算机使用体验中&am…...

工业能量:05.UPS如何救场(啤酒厂断电救命案例)

05.UPS如何救场(啤酒厂断电救命案例) 在工厂里,最昂贵的不是设备,而是“停机一秒的代价”。 前四期咱们把开关电源、浪涌、冗余聊了个遍,今天终于轮到大救星——UPS出场了!直接上个真事儿,啤酒厂的,让你们听完直呼“原来它这么猛”! 你以为啤酒厂停电就是灯黑了,大家…...

LeetCode 1089 复写零:用双指针从后往前填,保姆级图解避坑指南

LeetCode 1089 复写零&#xff1a;双指针逆向填充的视觉化拆解与实战避坑 当你第一次看到LeetCode 1089题时&#xff0c;可能会觉得"复写零"这个操作听起来简单——不就是遇到0就多写一个吗&#xff1f;但真正动手实现时&#xff0c;很多人会在指针移动、边界处理和数…...

如何分析竞争对手的seo关键词

<h2>如何分析竞争对手的SEO关键词</h2> <p>在当今竞争激烈的互联网市场中&#xff0c;了解和分析竞争对手的SEO关键词是提升自己网站排名的关键。SEO关键词分析不仅可以帮助你发现市场上的机会&#xff0c;还能让你更好地了解竞争对手的策略&#xff0c;从而…...

Sentinel-1A极化矩阵处理实战:用SNAP生成C2矩阵的7个关键参数解析与效果对比

Sentinel-1A极化矩阵处理实战&#xff1a;用SNAP生成C2矩阵的7个关键参数解析与效果对比 当处理Sentinel-1A极化SAR数据时&#xff0c;C2矩阵的生成质量直接影响后续地物分类、变化检测等应用的精度。许多初学者在使用SNAP的Polarimetric-Matrices算子时&#xff0c;往往直接采…...

AI-AGENT概念解析 - LLM领域训练

**问题&#xff1a;对于LLM大模型的应用来说&#xff0c;不同的专业需要不同的大模型去进行相应的专业训练吗&#xff1f;同时&#xff0c;不同的大模型训练为不同的专业&#xff0c;那同一个大模型可以为不同的专业进行训练吗&#xff1f;如果可以&#xff0c;那是怎么训练的&…...

Qwen3-VL量化版实测:8bit精度仅降0.13%的奥秘

Qwen3-VL量化版实测&#xff1a;8bit精度仅降0.13%的奥秘 【免费下载链接】Qwen3-VL-8B-Instruct-w8a8s-310 项目地址: https://ai.gitcode.com/Eco-Tech/Qwen3-VL-8B-Instruct-w8a8s-310 导语&#xff1a;阿里云Qwen3-VL视觉语言模型推出8bit量化版本Qwen3-VL-8B-Inst…...

OpenClaw+GLM-4.7-Flash:科研数据收集与处理自动化方案

OpenClawGLM-4.7-Flash&#xff1a;科研数据收集与处理自动化方案 1. 为什么科研需要自动化助手 去年冬天&#xff0c;我在整理一篇跨学科综述论文时&#xff0c;经历了连续三周每天14小时的手动文献筛选和数据提取。当我在凌晨三点对着第237篇PDF文件发呆时&#xff0c;突然…...