Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 開發入門 >> Android之完成 BMI 程序

Android之完成 BMI 程序

日期:2016/3/13 17:12:53      編輯:開發入門

 

至此,我們已經完成了 bmi 程序的界面設計,並且理解了了新建立的程序。剩下我們要做的,只剩下為 BMI 程序加上程序邏輯。 
很幸運的是, BMI 程序中用到的並不是什麼神秘的演算法,你甚至可以透過搜尋引擎找到中文的范例。 
完整的程序如下: 
代碼 : 
1  package com.demo.android.bmi;

2

3  import Java.text.DecimalFormat;

4

5  import android.app.Activity;

6  import android.os.Bundle;

7  import android.view.VIEw;

8  import android.view.VIEw.OnClickListener;

9  import android.widget.Button;

10 import android.widget.EditText;

11 import android.widget.TextVIEw;

12

13 public class Bmi extends Activity {

14     /** Called when the activity is first created. */

15     @Override

16     public void onCreate(Bundle savedInstanceState) {

17         super.onCreate(savedInstanceState);

18         setContentVIEw(R.layout.main);

19

20         //Listen for button clicks

21         Button button = (Button)findVIEwById(R.id.submit);

22         button.setOnClickListener(calcBMI);

23     }

24

25     private OnClickListener calcBMI = new OnClickListener()

26     {

27         public void onClick(VIEw v)

28         {

29             DecimalFormat nf = new DecimalFormat("0.00");

30             EditText fieldheight = (EditText)findVIEwById(R.id.height);

31             EditText fieldweight = (EditText)findVIEwById(R.id.weight);

32             double height = Double.parseDouble(fIEldheight.getText().toString())/100;

33             double weight = Double.parseDouble(fIEldweight.getText().toString());

34             double BMI = weight / (height * height);

35

36             TextView result = (TextView)findVIEwById(R.id.result);

37             result.setText("Your BMI is "+nf.format(BMI));

38

39             //Give health advice

40             TextView fieldsuggest = (TextView)findVIEwById(R.id.suggest);

41             if(BMI>25){

42                 fIEldsuggest.setText(R.string.advice_heavy);

43             }else if(BMI<20){

44                 fIEldsuggest.setText(R.string.advice_light);

45             }else{

46                 fIEldsuggest.setText(R.string.advice_average);

47             }

48         }

49     };

50 }

 

我們會學到:導入其他用到的模組、如何取得界面元件、如何對按鈕設定動作。 
從上面的完整程序中,我們看到上面介紹到的程序主體都還在,不過也增加了一些內容。這些內容即我們的主要程序邏輯。 
講解 
//Listen for button clicks


兩個反斜線是 Java 語言所支援的另一種注解方式。 
按鈕 
代碼 : 
Button button = (Button)findVIEwById(R.id.submit);

宣告一個 button 實體,透過 findVIEwById 方法,從資源檔中取得對應的界面元件 ( 按鈕 ) 。這邊取出的是 "R.id.submit" 按鈕元件。 
"R.id.submit" 對應到 XML 描述檔的資源是 
代碼 : 
<Button id="@+id/submit"/>

 

為了確保宣告的型別跟 XML 描述檔中描述的界面元件型別一致,好使程序運作正常,我們在 "findVIEwById" 方法前加上 "(Button)" 修飾,強制將取得的資源型別設成 "button" 型別。 
代碼 : 
button.setOnClickListener(new OnClickListener(){});

這句包含了 " button.setOnClickListener" 與其中的 "OnClickListener" 兩個類別。 "setOnClickListener" 是 button (按鈕)實體的方法。 
編輯欄位 
代碼 : 
EditText fieldheight = (EditText)findVIEwById(R.id.height);

EditText fieldweight = (EditText)findVIEwById(R.id.weight);

與上面 button 的宣告類似,只是改成宣告 EditText 實體,透過 findVIEwById 方法,從資源檔中取得對應的文字欄位元件。這邊取出的是 "R.id.height" 和 "R.id.weight" 文字欄位元件。 
運算 
代碼 : 
double height = Double.parseDouble(fIEldheight.getText().toString())/100;

double weight = Double.parseDouble(fIEldweight.getText().toString());

double BMI = weight / (height * height);

BMI 值的算法是 " 體重除以身高的平方 " 。 用計算式來表示,就是 
體重 (weight) / 身高 (height)* 身高 (height)

這麽看來,上面的程序碼就很清晰了。我們先從身高欄位 (fieldheight) 、體重欄位 (fIEldweight) 中取得使用者輸入的身高體重數字,再 定義一個雙倍精度幅點數 (double) 型態的變數 BMI 來儲存運算的結果,因此, BMI 變數中儲存了運算出來的實際 BMI 值。 
顯示結果 
 

我們把 BMI 值運算出來了,接著要將結果顯示回屏幕上。 
代碼 : 
TextView result = (TextView)findVIEwById(R.id.result);

 

為了將結果顯示到屏幕上,在之前 XML 定義檔中我們已經預留了一個名為 "result" 的 TextView 欄位。在程序碼中,我們再宣告一個 TextView 實體,透過 findVIEwById 方法,從資源檔中取得對應的界面元件 ( 文字顯示 ) 。這邊取出的就是 "R.id.result" 界面元件。 
代碼 : 
DecimalFormat nf = new DecimalFormat("0.00");

result.setText("Your BMI is "+nf.format(BMI));

透過 Java 內建的 DecimalFormat 函式,我們可以將運算結果,以適當的格式顯示。透過 "setText" 方法,我們可以將指定的字串,顯示在屏幕上文字類型的界面元件中。 
顯示建議 
" 顯示建議 " 的方式與 " 顯示結果 " 完全相同,只有多加了幾個 "if" 判斷式:當 BMI 值大於 25 顯示過重,小於 20 顯示過輕。程序碼留給讀者自習。 
代碼 : 
//Give health advice
TextView fieldsuggest = (TextView)findVIEwById(R.id.suggest);

if(BMI>25){

fIEldsuggest.setText(R.string.advice_heavy);}

else if(BMI<20){

    fIEldsuggest.setText(R.string.advice_light);

}else{

    fIEldsuggest.setText(R.string.advice_average);

}

完整的 BMI 程序動作流程,就是使用者在身高體重欄位中輸入好身高體重後,按下 " 計算 BMI 值 " 按鈕,程序根據識別符號,從對應的身高體重欄位讀取輸入的值,並做計算,最後將計算的結果與建議顯示到屏幕上。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved