标题 | Android入门程序开发—BMI计算器 |
范文 | 董明华+李宏伟 摘要: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。 最后,完成计算按钮部分。按钮有两个属性需要设置,一是设置按钮水平居中的属性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. |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。