国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

Android入門程序開發(fā)—BMI計(jì)算器

2018-01-06 01:06:24董明華李宏偉
電腦知識與技術(shù) 2017年35期
關(guān)鍵詞:輸入框源代碼控件

董明華+李宏偉

摘要:AndroidStudio已經(jīng)代替了Eclipse,成為Android官方集成開發(fā)工具。文章基于AndroidStudio設(shè)計(jì)了一款身高體重計(jì)算器,通過介紹常見布局控件的用法,使初學(xué)者能夠快速入門Android APP開發(fā),了解APP界面設(shè)計(jì),用戶輸入值的獲取等知識。

關(guān)鍵詞:AndroidStudio;BMI;APP

中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2017)35-0136-03

1 背景

BMI指數(shù),即身體質(zhì)量指數(shù),是用體重公斤數(shù)除以身高米數(shù)平方得出的數(shù)字,是目前國際上常用的衡量人體胖瘦程度以及是否健康的一個(gè)標(biāo)準(zhǔn)。體質(zhì)指數(shù)(BMI)=體重(kg)÷身高^2(m)。文章根據(jù)BMI指數(shù)開發(fā)一款簡易身高體重計(jì)算器,通過分析用戶的身高體重值,判斷其身材是否標(biāo)準(zhǔn)。

2 APP展示

最終APP效果如圖1所示,用戶輸入身高體重值后,通過單擊計(jì)算按鈕,可得出身體胖瘦程度的一個(gè)提示。

3 知識點(diǎn)分析

項(xiàng)目涉及知識點(diǎn)較為簡單,界面布局為LinearLayout,控件為EditText和Button,java源代碼部分主要是控件的初始化,取得文本輸入框的輸入值,并轉(zhuǎn)換為數(shù)值類型,然后計(jì)算出BMI指數(shù)值,并通過Toast給出提示。

4 界面設(shè)計(jì)

界面從上向下依次為身高輸入框、體重輸入框和按鈕,輸入框?qū)?yīng)Android中的EditText控件,按鈕對應(yīng)Button控件,垂直排列的布局適合用線性布局LinearLayout。布局主要作用是設(shè)置控件在屏幕上的位置,線性布局LinearLayout可以讓其中的控件水平排列或者垂直排列。

首先,在res/layout文件夾中找到自動(dòng)生成的布局文件activity_main.xml。在此文件中聲明父布局LinearLayout的排版方向?yàn)榇怪迸帕?,通過設(shè)置android:orientation的屬性值為vertical實(shí)現(xiàn)。

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical">

其次,設(shè)置文本輸入框EditText的寬填滿父布局,高自適應(yīng),并通過android:hint屬性設(shè)置提示語,提示語定義在res/values/strings.xml文件中。

android:id="@+id/height"

android:layout_width="match_parent"

android:layout_height="wrap_content"

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

strings.xml中提示語定義格式如下所示,提示語內(nèi)容需要根據(jù)項(xiàng)目要求設(shè)置,BMI指數(shù)對應(yīng)體重單位kg,身高單位m。

BMI

請輸入您的身高,單位:m

請輸入您的體重,單位:kg

最后,完成計(jì)算按鈕部分。按鈕有兩個(gè)屬性需要設(shè)置,一是設(shè)置按鈕水平居中的屬性android:layout_gravity,屬性值為center_horizontal;二是注冊按鈕事件監(jiān)聽屬性android:onClick,屬性值由開發(fā)人員自定義一個(gè)方法名。假設(shè)自定義的方法名為compute,那么在對應(yīng)的java源文件中必須自定義一個(gè)如下形式的方法:

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

5 java源代碼實(shí)現(xiàn)

創(chuàng)建BMI對應(yīng)Module的時(shí)候,自動(dòng)在src文件夾中生成MainActivity.java源文件,并實(shí)現(xiàn)Activity的onCreate生命周期方法。

在BMI項(xiàng)目中,java源代碼主要工作包括初始化文本輸入框控件,實(shí)現(xiàn)按鈕事件監(jiān)聽器注冊方法,獲取文本輸入框的輸入值并轉(zhuǎn)換為數(shù)值類型,計(jì)算BMI指數(shù)并給出提示等,下面對這些功能依次進(jìn)行講解。

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方法指定當(dāng)前java源文件對應(yīng)的布局文件,只有在指定的布局文件中存在某個(gè)控件,已知此控件的id值,才可以通過上述方法進(jìn)行初始化工作。

5.2 Button事件監(jiān)聽器處理方法

按鈕的事件監(jiān)聽器注冊有多種處理方法,如果布局文件中已經(jīng)通過android:onClick="compute"指定了當(dāng)前按鈕的事件監(jiān)聽器處理方法,則在對應(yīng)的java源代碼文件中必須實(shí)現(xiàn)此方法。具體實(shí)現(xiàn)方式為定義一個(gè)方法,方法名必須和android:onClick的屬性值一致,方法修飾符必須是public,返回值是void,形參只有一個(gè)View類型。

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

定義了上述方法后,只要用戶單擊了按鈕,就會(huì)回調(diào)此方法。

5.3 獲取EditText輸入值

獲取EditText輸入值必須在EditText初始化之后,同時(shí)注意獲取時(shí)機(jī),本項(xiàng)目在用戶單擊計(jì)算按鈕的時(shí)候才獲取輸入值。下面以獲取用戶身高值為例,講解其獲取步驟,獲取體重值采用同樣的步驟。

1) 調(diào)用EditText對象的getText()方法獲取Editable對象。

Editable editable = heightEditText.getText();

2) 把Editable對象轉(zhuǎn)換為字符串類型。

heightString = editable.toString();

上述兩步操作經(jīng)常合為一步執(zhí)行。

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

3) 根據(jù)項(xiàng)目要求把字符串轉(zhuǎn)換為其他數(shù)據(jù)類型,本項(xiàng)目設(shè)置成double數(shù)據(jù)類型,通過調(diào)用包裝類的parseXXX方法把字符串轉(zhuǎn)換為基本數(shù)據(jù)類型。

double heightDouble = Double.parseDouble(heightString);

5.4 計(jì)算BMI指數(shù)

獲取到用戶輸入的身高體重值后,就可以計(jì)算BMI指數(shù)值了。BMI指數(shù)值為體重除以身高的平方,需要注意體重單位kg,身高單位m。為了計(jì)算的方便,設(shè)置BMI值小于18.5時(shí),表示體型偏瘦,大于23.9時(shí)偏胖,在兩者之間表示體型標(biāo)準(zhǔn)。

double result = heightDouble/(weightDouble*weightDouble);

if (result > 23.9){

消息提示

} else if(result < 18.5){

消息提示

} else {

消息提示

}

5.5 消息提示

Toast是Android中用來顯示信息的一種機(jī)制,主要用于向用戶顯示提示消息。和Dialog不一樣的是,Toast是沒有焦點(diǎn)的,而且Toast顯示的時(shí)間有限,過一定的時(shí)間就會(huì)自動(dòng)消失。

Toast的創(chuàng)建步驟如下所述:

1) 調(diào)用靜態(tài)方法makeText創(chuàng)建Toast對象。

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

方法接收三個(gè)形參。第一個(gè)參數(shù)Context表示消息提示在哪個(gè)Activity中,一般用this表明在當(dāng)前Activity中;第二個(gè)參數(shù)CharSequence代表提示語內(nèi)容,接收字符串?dāng)?shù)據(jù)類型;第三個(gè)參數(shù)int表示消息顯示時(shí)長,系統(tǒng)提供了兩個(gè)值,Toast.LENGTH_SHORT和Toast.LENGTH_LONG,分別表示短時(shí)間顯示和長時(shí)間顯示。

2) 調(diào)用Toast對象的show方法顯示消息。

toast.show();

以上兩個(gè)步驟經(jīng)常合成一步。

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

6 代碼優(yōu)化

6.1 控件初始化優(yōu)化

本項(xiàng)目比較簡單,控件只有兩個(gè)EditText需要初始化,直接在onCreate方法中操作也顯得清晰。如果控件的初始化操作較多,onCreate方法就會(huì)顯得臃腫,此時(shí)建議自定義初始化控件方法,在onCreate中調(diào)用自定義方法。

private void initViews() {

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

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

……}

6.2 消息顯示優(yōu)化

上述計(jì)算BMI指數(shù)中,要寫三次Toast提示代碼,而常用的BMI指數(shù)分為五六種情形,有沒有一種方式可以簡化消息顯示代碼呢?分析Toast提示代碼,除了提示語不同外,其他代碼完全相同,因而可以把消息顯示代碼封裝為一個(gè)方法,接收一個(gè)消息提示語參數(shù)。

public void show(String text){

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

需要用到消息顯示的時(shí)候,調(diào)用show方法,傳入一個(gè)提示語即可。

6.3 BMI數(shù)值計(jì)算優(yōu)化

按鈕監(jiān)聽方法中大量代碼被用來求解BMI數(shù)值,可以把這部分代碼封裝到一個(gè)單獨(dú)的方法中,用來計(jì)算BMI數(shù)值。

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 結(jié)束語

APP的開發(fā)主要分為界面設(shè)計(jì)和java源代碼實(shí)現(xiàn)兩個(gè)部分,采用的是MVC設(shè)計(jì)模式。應(yīng)用開發(fā)完成后,需要通過測試發(fā)現(xiàn)bug并加以改正。只有經(jīng)過大量的開發(fā)實(shí)戰(zhàn),才可以快速發(fā)現(xiàn)bug并改正。

參考文獻(xiàn):

[1] 劉劍橋. 基于Android的房貸計(jì)算器開發(fā)與測試[J]. 電腦編程技巧與維護(hù), 2016(5).

[2] 吳立勇, 丁作文. 基于Android系統(tǒng)的手機(jī)計(jì)算器的設(shè)計(jì)與實(shí)現(xiàn)[J]. 電子技術(shù), 2014(4).

[3] 劉正. Android項(xiàng)目驅(qū)動(dòng)式開發(fā)教程[M]. 北京: 機(jī)械工業(yè)出版社, 2014.

猜你喜歡
輸入框源代碼控件
人工智能下復(fù)雜軟件源代碼缺陷精準(zhǔn)校正
基于GGB的拖動(dòng)交互式練習(xí)題
基于TXL的源代碼插樁技術(shù)研究
拍一拍,圖片識文字
關(guān)于.net控件數(shù)組的探討
軟件(2018年7期)2018-08-13 09:44:42
軟件源代碼非公知性司法鑒定方法探析
輸入框設(shè)計(jì)中需注意的9個(gè)細(xì)節(jié)
揭秘龍湖產(chǎn)品“源代碼”
自編翻譯程序
CHIP新電腦(2015年10期)2015-10-15 12:48:23
就這樣玩會(huì)VBA中常見的自定義控件
電腦迷(2012年24期)2012-04-29 00:44:03
封丘县| 灌阳县| 安塞县| 盐城市| 济阳县| 铜山县| 云南省| 固镇县| 东乡族自治县| 绵阳市| 五寨县| 松潘县| 竹北市| 双辽市| 丹凤县| 西畴县| 阿鲁科尔沁旗| 聂荣县| 花莲县| 绥阳县| 凤凰县| 肥城市| 简阳市| 正安县| 高密市| 监利县| 安吉县| 白朗县| 西峡县| 互助| 开江县| 东城区| 博白县| 威宁| 扶余县| 东莞市| 东乌珠穆沁旗| 广元市| 洛川县| 梁河县| 铜梁县|