首先要一個小觀念 Android將其應用程式的介面稱為View 而負責控制各種動作行為的程式 則稱為Activity
這次的程式 我是參考gasolin大的教學 逐一瞭解之後
實際跑過一次 並且將我瞭解的部分 再寫一次 用來驗證是否熟悉
其實看起來有點像iphone中的MVC架構 但實際此程式並非依照此架構寫成的
gasolin大之後也有改成MVC架構的寫法 明顯的可以看出較為簡潔易懂 剛好也能對應我在iphone中所學到的
main.xml的部分是用來寫介面的部分 但android並不是透過xml儲存介面到手機上 而是自動將 XML 描述檔轉換成資源檔案 而此檔案為R.java
此次的介面包括button,textview,edittext
main.xml
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout
android:id="@+id/widget0"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
>
<EditText
//利用這個識別符號來對應這個元件 之後我們在程式中可以透過R.id.hegiht來調用他
android:id="@+id/height"
android:layout_width="157px"
android:layout_height="wrap_content"
android:textSize="18sp"
//限制此元件內容只能輸入integer
android:numeric="integer"
android:layout_x="100px"
android:layout_y="22px"
>
</EditText>
<EditText
android:id="@+id/weight"
android:layout_width="158px"
android:layout_height="wrap_content"
android:textSize="18sp"
android:numeric="integer"
android:layout_x="100px"
android:layout_y="102px"
>
</EditText>
<TextView
android:id="@+id/widget29"
android:layout_width="wrap_content"
android:layout_height="31px"
android:text="Height(cm)"
android:textSize="18sp"
android:layout_x="10px"
android:layout_y="32px"
>
</TextView>
<TextView
android:id="@+id/widget30"
android:layout_width="wrap_content"
android:layout_height="31px"
android:text="Weight(kg)"
android:textSize="18sp"
android:layout_x="10px"
android:layout_y="112px"
>
</TextView>
<Button
android:id="@+id/submit"
android:layout_width="121px"
android:layout_height="wrap_content"
android:text="Calculate BMI"
android:textSize="18sp"
android:layout_x="100px"
android:layout_y="322px"
>
</Button>
<TextView
android:id="@+id/suggest"
android:layout_width="173px"
android:layout_height="38px"
android:textColor="#ff000000"
android:background="#ffff9900"
android:textSize="16sp"
android:layout_x="70px"
android:layout_y="242px"
>
</TextView>
<TextView
android:id="@+id/result"
android:layout_width="172px"
android:layout_height="42px"
android:textColor="#ff000000"
android:background="#ffff9933"
android:textSize="16sp"
android:layout_x="70px"
android:layout_y="182px"
>
</TextView>
</AbsoluteLayout>
Bmi.java
package com.demo.android.bmi;
import android.app.Activity;
import android.os.Bundle;
import java.text.DecimalFormat;
import android.view.View;
//用來監聽user是否按下button
import android.view.View.OnClickListener;
//因為此程式用到button,edittext,textview 所以需要import以下
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class Bmi extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//宣告一個button 對應至在xml裡面的submit
Button button = (Button)findViewById(R.id.submit);
//監聽user是否按下按鈕 若按下 則執行calcBMI function
button.setOnClickListener(calcBMI);
}
private OnClickListener calcBMI = new OnClickListener()
{
public void onClick(View v)
{
DecimalFormat nf = new DecimalFormat("0.00");
//從height對應的元件中取得user所輸入的數值
EditText fieldheight = (EditText)findViewById(R.id.height);
EditText fieldweight = (EditText)findViewById(R.id.weight);
//將字串轉成double
double height = Double.parseDouble(fieldheight.getText().toString())/100;
double weight = Double.parseDouble(fieldweight.getText().toString());
double BMI = weight / (height * height);
//xml中的result所對應的元件
TextView result = (TextView)findViewById(R.id.result);
//在result所對應的元件中 顯示字串 並且是按照之前所設定的格式
result.setText("Your BMI is "+nf.format(BMI));
TextView fieldsuggest = (TextView)findViewById(R.id.suggest);
if(BMI>25){
fieldsuggest.setText("太胖了 該減肥了!");
}
else if(18.51<BMI&&BMI<24)
{
fieldsuggest.setText("人人稱羨的完美身材!");
}
else{
fieldsuggest.setText("太瘦了多吃點!");
}
}
};
}
沒有留言:
張貼留言