APP下载

Android入门程序开发—BMI计算器

2018-01-06董明华李宏伟

电脑知识与技术 2017年35期
关键词:输入框源代码控件

董明华+李宏伟

摘要:AndroidStudio已经代替了Eclipse,成为Android官方集成开发工具。文章基于AndroidStudio设计了一款身高体重计算器,通过介绍常见布局控件的用法,使初学者能够快速入门Android APP开发,了解APP界面设计,用户输入值的获取等知识。

关键词:AndroidStudio;BMI;APP

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2017)35-0136-03

1 背景

BMI指数,即身体质量指数,是用体重公斤数除以身高米数平方得出的数字,是目前国际上常用的衡量人体胖瘦程度以及是否健康的一个标准。体质指数(BMI)=体重(kg)÷身高^2(m)。文章根据BMI指数开发一款简易身高体重计算器,通过分析用户的身高体重值,判断其身材是否标准。

2 APP展示

最终APP效果如图1所示,用户输入身高体重值后,通过单击计算按钮,可得出身体胖瘦程度的一个提示。

3 知识点分析

项目涉及知识点较为简单,界面布局为LinearLayout,控件为EditText和Button,java源代码部分主要是控件的初始化,取得文本输入框的输入值,并转换为数值类型,然后计算出BMI指数值,并通过Toast给出提示。

4 界面设计

界面从上向下依次为身高输入框、体重输入框和按钮,输入框对应Android中的EditText控件,按钮对应Button控件,垂直排列的布局适合用线性布局LinearLayout。布局主要作用是设置控件在屏幕上的位置,线性布局LinearLayout可以让其中的控件水平排列或者垂直排列。

首先,在res/layout文件夹中找到自动生成的布局文件activity_main.xml。在此文件中声明父布局LinearLayout的排版方向为垂直排列,通过设置android:orientation的属性值为vertical实现。

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical">

其次,设置文本输入框EditText的宽填满父布局,高自适应,并通过android:hint属性設置提示语,提示语定义在res/values/strings.xml文件中。

android:id="@+id/height"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:hint="@string/heighthint"/>

strings.xml中提示语定义格式如下所示,提示语内容需要根据项目要求设置,BMI指数对应体重单位kg,身高单位m。

BMI

请输入您的身高,单位:m

请输入您的体重,单位:kg

最后,完成计算按钮部分。按钮有两个属性需要设置,一是设置按钮水平居中的属性android:layout_gravity,属性值为center_horizontal;二是注册按钮事件监听属性android:onClick,属性值由开发人员自定义一个方法名。假设自定义的方法名为compute,那么在对应的java源文件中必须自定义一个如下形式的方法:

public void compute(View view){...}

5 java源代码实现

创建BMI对应Module的时候,自动在src文件夹中生成MainActivity.java源文件,并实现Activity的onCreate生命周期方法。

在BMI项目中,java源代码主要工作包括初始化文本输入框控件,实现按钮事件监听器注册方法,获取文本输入框的输入值并转换为数值类型,计算BMI指数并给出提示等,下面对这些功能依次进行讲解。

5.1 初始化EditText

首先,在MainActivity中声明EditText成员变量。

EditText heightEditText,weightEditText;

然后,在onCreate方法中通过findViewById方法初始化控件。

heightEditText = (EditText) findViewById(R.id.height);

weightEditText = (EditText) findViewById(R.id.weight);

其中,R.id.height表示身高输入框的id是height,这是由布局文件中的id值决定的,android:id="@+id/height"。

需要注意的是,控件的初始化需要在setContentView(R.layout.XXX)之后,setContentView方法指定当前java源文件对应的布局文件,只有在指定的布局文件中存在某个控件,已知此控件的id值,才可以通过上述方法进行初始化工作。

5.2 Button事件监听器处理方法

按钮的事件监听器注册有多种处理方法,如果布局文件中已经通过android:onClick="compute"指定了当前按钮的事件监听器处理方法,则在对应的java源代码文件中必须实现此方法。具体实现方式为定义一个方法,方法名必须和android:onClick的属性值一致,方法修饰符必须是public,返回值是void,形参只有一个View类型。

public void compute(View view){...}

定义了上述方法后,只要用户单击了按钮,就会回调此方法。

5.3 获取EditText输入值

获取EditText输入值必须在EditText初始化之后,同时注意获取时机,本项目在用户单击计算按钮的时候才获取输入值。下面以获取用户身高值为例,讲解其获取步骤,获取体重值采用同样的步骤。

1) 调用EditText对象的getText()方法获取Editable对象。

Editable editable = heightEditText.getText();

2) 把Editable对象转换为字符串类型。

heightString = editable.toString();

上述两步操作经常合为一步执行。

heightString = heightEditText.getText().toString();

3) 根据项目要求把字符串转换为其他数据类型,本项目设置成double数据类型,通过调用包装类的parseXXX方法把字符串转换为基本数据类型。

double heightDouble = Double.parseDouble(heightString);

5.4 计算BMI指数

获取到用户输入的身高体重值后,就可以计算BMI指数值了。BMI指数值为体重除以身高的平方,需要注意体重单位kg,身高单位m。为了计算的方便,设置BMI值小于18.5时,表示体型偏瘦,大于23.9时偏胖,在两者之间表示体型标准。

double result = heightDouble/(weightDouble*weightDouble);

if (result > 23.9){

消息提示

} else if(result < 18.5){

消息提示

} else {

消息提示

}

5.5 消息提示

Toast是Android中用来显示信息的一种机制,主要用于向用户显示提示消息。和Dialog不一样的是,Toast是没有焦点的,而且Toast显示的时间有限,过一定的时间就会自动消失。

Toast的创建步骤如下所述:

1) 调用静态方法makeText创建Toast对象。

Toast toast = Toast.makeText(Context context, CharSequence text, int duration);

方法接收三個形参。第一个参数Context表示消息提示在哪个Activity中,一般用this表明在当前Activity中;第二个参数CharSequence代表提示语内容,接收字符串数据类型;第三个参数int表示消息显示时长,系统提供了两个值,Toast.LENGTH_SHORT和Toast.LENGTH_LONG,分别表示短时间显示和长时间显示。

2) 调用Toast对象的show方法显示消息。

toast.show();

以上两个步骤经常合成一步。

Toast.makeText(this,text,Toast.LENGTH_SHORT).show();

6 代码优化

6.1 控件初始化优化

本项目比较简单,控件只有两个EditText需要初始化,直接在onCreate方法中操作也显得清晰。如果控件的初始化操作较多,onCreate方法就会显得臃肿,此时建议自定义初始化控件方法,在onCreate中调用自定义方法。

private void initViews() {

heightEditText = (EditText) findViewById(R.id.height);

weightEditText = (EditText) findViewById(R.id.weight);

……}

6.2 消息显示优化

上述计算BMI指数中,要写三次Toast提示代码,而常用的BMI指数分为五六种情形,有没有一种方式可以简化消息显示代码呢?分析Toast提示代码,除了提示语不同外,其他代码完全相同,因而可以把消息显示代码封装为一个方法,接收一个消息提示语参数。

public void show(String text){

Toast.makeText(this,text,Toast.LENGTH_SHORT).show();}

需要用到消息显示的时候,调用show方法,传入一个提示语即可。

6.3 BMI数值计算优化

按钮监听方法中大量代码被用来求解BMI数值,可以把这部分代码封装到一个单独的方法中,用来计算BMI数值。

public double getBMI(){

heightString = heightEditText.getText().toString();

weightString = weightEditText.getText().toString();

heightDouble = Double.parseDouble(heightString);

weightDouble = Double.parseDouble(weightString);

result = heightDouble/(weightDouble*weightDouble);

return result;}

7 结束语

APP的开发主要分为界面设计和java源代码实现两个部分,采用的是MVC设计模式。应用开发完成后,需要通过测试发现bug并加以改正。只有经过大量的开发实战,才可以快速发现bug并改正。

参考文献:

[1] 刘剑桥. 基于Android的房贷计算器开发与测试[J]. 电脑编程技巧与维护, 2016(5).

[2] 吴立勇, 丁作文. 基于Android系统的手机计算器的设计与实现[J]. 电子技术, 2014(4).

[3] 刘正. Android项目驱动式开发教程[M]. 北京: 机械工业出版社, 2014.

猜你喜欢

输入框源代码控件
人工智能下复杂软件源代码缺陷精准校正
基于TXL的源代码插桩技术研究
拍一拍,图片识文字
软件源代码非公知性司法鉴定方法探析
输入框设计中需注意的9个细节
揭秘龙湖产品“源代码”
ASP.NET服务器端验证控件的使用
Spreadsheet控件在Delphi数据库系统中的编程与应用