2013年10月31日 星期四

BMI 簡易計算 APP

剛好有些空閒時間
快速的寫一個 BMI 的APP
已盡量將程式分解作為解釋

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="身高" />
    
    <EditText
        android:id="@+id/layout_edit_height"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        />
    
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="體重" />
    
    <EditText 
        android:id="@+id/layout_edit_weight"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        />
    
    <Button 
        android:id="@+id/layout_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="計算"
        />
    
    <TextView 
        android:id="@+id/layout_show_bmi"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Your BMI :"
        />

</LinearLayout>


MainActivity.java
package com.example.bmi;

import java.text.DecimalFormat;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends Activity {
 
  //宣告類別 EditText 兩個名稱為 edit_height 與 edit_weight (輸入身高體重用)
  private EditText edit_height,edit_weight;
  //宣告類別 Button 名稱為 bt (開始計算用)
  private Button bt;
  //宣告類別 TextView 名稱為 showBMI (顯示計算結果用)
  private TextView showBMI;
  //宣告浮點數 三個 (取得資料計算之用)
  private float getheight,getweight,MyBMI;

  @Override
  //onCreate程式起始點
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //指定載入的layout
    setContentView(R.layout.activity_main);
  
    //定義物件
    edit_height = (EditText)findViewById(R.id.layout_edit_height);
    edit_weight = (EditText)findViewById(R.id.layout_edit_weight);
  
    showBMI = (TextView)findViewById(R.id.layout_show_bmi);
  
    bt = (Button)findViewById(R.id.layout_button);
    bt.setOnClickListener(new OnClickListener() {
      @Override
      //button按下時 觸發事件
      public void onClick(View v) {
    
        //EditText取得的資料是String,定義String來接收它
        //取得輸入的身高
        String TmpHeight = edit_height.getText().toString();
        //取得輸入的體重
        String TmpWeight = edit_weight.getText().toString();
    
        //String 轉換成 浮點數
        getheight = Float.parseFloat(TmpHeight);
        getweight = Float.parseFloat(TmpWeight);
    
        //因輸入的身高為公分,BMI計算身高為公尺,所以要除於100
        getheight = getheight/100;
        //計算BMI值
        MyBMI = getweight / (getheight * getheight);
        //顯示計算後的BMI
        showBMI.setText("Your BMI : "+MyBMI);
        //將EditText清空
        edit_height.setText("");
        edit_weight.setText("");
      }
    });
  }
}

此程式仍有bug,因為沒過濾輸入的資料但流程是沒問題的。
因我在程式碼中有加註解了,所以也不知道要再講解什麼了XD
附上程式碼 Source Code
下載後 解壓縮
打開eclipse -> File -> Import...  -> Android -> Existing Android Code Into Workspace
在 Root Directory: 按 Browse... 找到BMI資料夾路徑
可將Copy projects into workspace 打勾

ps:如果在@Override 出現錯誤時,直接刪掉此行即可。

沒有留言:

張貼留言