170 likes | 308 Views
第三章. 手機與 PDA 行動裝置平台簡介. 實驗介紹. 實驗目的 撰寫程式 “ EX03_10” 利用簡單 BMI 標準體重計算器,示範如何將資料傳遞到下一個 Activity 。. 實驗步驟. 首先打開 Ec lipse 3.5 File → New→ Android Project. EX03_10. 撰寫“ EX03_10” 程式 在模擬器中執行 情境: 從介面 1 輸入性別、身高, 把資料傳遞到介面 2 會輸出 您的標準體重. 介面 main.xml(1).
E N D
第三章 手機與PDA行動裝置平台簡介
實驗介紹 • 實驗目的 • 撰寫程式 “EX03_10” • 利用簡單BMI標準體重計算器,示範如何將資料傳遞到下一個Activity。
實驗步驟 • 首先打開 Eclipse 3.5 • File → New→ Android Project
EX03_10 • 撰寫“EX03_10”程式 • 在模擬器中執行 • 情境: • 從介面1輸入性別、身高, 把資料傳遞到介面2會輸出 您的標準體重
介面 main.xml(1) • <?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"> • <TextView//加入文字顯示物件 • android:id="@+id/title“ //設定此TextView物件名稱為title • android:layout_width="243px" //設定TextView寬度 • android:layout_height="29px“ //設定TextView高度 • android:text=“@string/title“ //title物件顯示的文字,讀取string.xml的title資串內容 • android:textSize="24sp" //設定TextView文字大小 • android:layout_x="36px" //設定TextView座標x • android:layout_y="32px" /> //設定TextView座標y • <TextView//加入文字顯示物件 • android:id="@+id/text1" //設定此TextView物件名稱為text1 • android:layout_width="wrap_content" //設定TextView寬度 • android:layout_height="37px" //設定TextView高度 • android:text=“@string/text1“ //text1物件顯示的文字,讀取string.xml的text1資串內容 • android:textSize="18sp“ //設定TextView文字大小 • android:layout_x="40px“ //設定TextView座標x • android:layout_y="156px" /> //設定TextView座標y
介面main.xml(2) • <TextView//加入文字顯示物件 • android:id="@+id/text2“ //設定此TextView物件名稱為text2 • android:layout_width="wrap_content" //設定TextView寬度 • android:layout_height="29px" //設定TextView高度 • android:text=“@string/text2“ //text2物件顯示的文字,讀取string.xml的text2字串內容 • android:textSize="18sp" //設定TextView文字大小 • android:layout_x="40px" //設定TextView座標x • android:layout_y="102px" /> //設定TextView座標y • <TextView//加入文字顯示物件 • android:id="@+id/text3" //設定此TextView物件名稱為text3 • android:layout_width="wrap_content" //設定TextView寬度 • android:layout_height="wrap_content" //設定TextView高度 • android:text=“cm” //text2物件顯示的文字為”cm” • android:textSize="18sp" //設定TextView文字大小 • android:layout_x="231px" //設定TextView座標x • android:layout_y="157px" /> //設定TextView座標y • <Button//放入按鈕物件 • android:id="@+id/button1" //設定此按鈕物件名稱為button1 • android:layout_width="70px" //設定按鈕的寬度 • android:layout_height="48px" //設定按鈕的高度 • android:text=“計算” //設定按鈕顯示的文字為” 計算” • android:layout_x="130px" //設定按鈕的座標x • android:layout_y="232px" //設定按鈕的座標y • />
介面main.xml(3) • <RadioGroup//RadioButton的群組物件(當被此物件包覆起來的RadioButton只能單選) • android:id=“@+id/sex“ //RadioGroup物件名稱為sex • android:layout_width=“300px“ // RadioGroup的寬度 • android:layout_height=“100px“ //RadioGroup的高度 • android:layout_x=“97px“ //RadioGroup的座標x • android:layout_y=“98px“ //RadioGroup的座標y • android:orientation=“horizontal“ //RadioGroup的方向(horizontal為水平) • android:checkedButton=“@+id/sex1“ //默認RadioButton的選擇為sex1 • > • <RadioButton//RadioButton(單選鈕)的物件 • android:id="@+id/sex1“ //RadioButton物件名稱為sex1 • android:layout_width="wrap_content" //RadioButton的寬度 • android:layout_height="wrap_content" //RadioButton的高度 • android:text="男的“ //設定sex1顯示的文字為”男的” • /> • <RadioButton //RadioButton(單選鈕)的物件 • android:id="@+id/sex2" //RadioButton物件名稱為sex2 • android:layout_width="wrap_content" //RadioButton的寬度 • android:layout_height="wrap_content" //RadioButton的高度 • android:text="女的" //設定sex1顯示的文字為”女的” • /> • </RadioGroup> • <EditText//EditText(輸入框)的物件 • android:id=“@+id/height“ //EditText物件名稱為height • android:layout_width=“130px“ //EditText的寬度 • android:layout_height=“wrap_content“//EditText的高度 • android:textSize=“18sp“ //EditText的字形大小 • android:layout_x=“96px“ //EditText的座標x • android:layout_y=“142px“ //EditText的座標y • android:numeric=“decimal“ //默認輸入狀態為數字 • /> • </AbsoluteLayout>
介面main.xml(4) • TextView • TextView物件title • TextView物件text1 • TextView物件text2 • TextView物件text3 • Button • Button物件button1 • RadioGroup • RadioGroup物件sex • RadioButton • RadioButton物件sex1 • RadioButton物件sex2 • EditText • EditText物件名稱為height
介面 mylayout.xml(1) • <?xml version="1.0" encoding="utf-8"?> • <AbsoluteLayout //絕對位置版面配置(座標佈局) • android:layout_width="fill_parent" //寬度填滿 • android:layout_height=“fill_parent” //高度填滿 • xmlns:android="http://schemas.android.com/apk/res/android" • > • <TextView //加入文字顯示物件 • android:id="@+id/text1“ //設定此TextView物件名稱為text1 • android:layout_width="wrap_content" //設定TextView寬度 • android:layout_height="wrap_content" //設定TextView高度 • android:textSize=“20sp” //設定TextView字型大小 • android:layout_x=“50px” //設定TextView座標x • android:layout_y=“72px” //設定TextView座標y • /> • </AbsoluteLayout>
介面 mylayout.xml(2) • TextView • TextView物件text1
Android程式碼 EX03_10.java • Import略 • publicclass EX03_10 extends Activity • { • /** Called when the activity is first created. */ • @Override • publicvoid onCreate(Bundle savedInstanceState) • { • super.onCreate(savedInstanceState); • /* 載入main.xml Layout */ • setContentView(R.layout.main); • /* 以findViewById()取得Button物件,並加入onClickListener */ • Button b1 = (Button) findViewById(R.id.button1); • b1.setOnClickListener(new Button.OnClickListener() • { • publicvoid onClick(View v) • { • /*取得輸入的身高*/ • EditText et = (EditText) findViewById(R.id.height); • double height=Double.parseDouble(et.getText().toString()); //取得身高輸入框的值 • /*取得選擇的性別*/ • String sex=""; • RadioButton rb1 = (RadioButton) findViewById(R.id.sex1); //男的RadioButton • if(rb1.isChecked()) //如果選擇的是男的RadioButton • { • sex=“M”; //sex字串內容為”M” • }else{ //否則 • sex="F"; //sex字串內容為”F” • } • /*new一個Intent物件,並指定class*/ • Intent intent = new Intent(); • intent.setClass(EX03_10.this,EX03_10_1.class); • /*new一個Bundle物件,並將要傳遞的資料傳入*/ • Bundle bundle = new Bundle(); • bundle.putDouble(“height”,height); //傳遞height(身高)的值 • bundle.putString(“sex”,sex); //傳遞sex的值(M或F) • /*將Bundle物件assign給Intent*/ • intent.putExtras(bundle); • /*呼叫Activity EX03_10_1*/ • startActivity(intent); • } • }); • } • }
publicvoid onClick(View v) • { • /*取得輸入的身高*/ • EditText et = (EditText) findViewById(R.id.height); • double height=Double.parseDouble(et.getText().toString()); //取得身高輸入框的值 • /*取得選擇的性別*/ • String sex=""; • RadioButton rb1 = (RadioButton) findViewById(R.id.sex1); //男的RadioButton • if(rb1.isChecked()) //如果選擇的是男的RadioButton • { • sex=“M”; //sex字串內容為”M” • }else{ //否則 • sex="F"; //sex字串內容為”F” • }
Intent intent = new Intent(); • intent.setClass(EX03_10.this,EX03_10_1.class); • /*new一個Bundle物件,並將要傳遞的資料傳入*/ • Bundle bundle = new Bundle(); • bundle.putDouble(“height”,height); //傳遞height(身高)的值 • bundle.putString(“sex”,sex); //傳遞sex的值(M或F) • bundle.putString(“name”,”陳瑞樂_99”); • /*將Bundle物件assign給Intent*/ • intent.putExtras(bundle); • /*呼叫Activity EX03_10_1*/ • startActivity(intent);
Activity2 • /* 取得Intent中的Bundle物件 */ • Bundle bunde = this.getIntent().getExtras(); • /* 取得Bundle物件中的資料 */ • String sex = bunde.getString("sex"); • double height = bunde.getDouble("height"); • /* 判斷性別 */ • String sexText=""; • if(sex.equals("M")){ • sexText="男性"; • }else{ • sexText="女性"; • }
/* 設定輸出文字 */ • TextView tv1=(TextView) findViewById(R.id.text1); • tv1.setText("你是一位"+sexText+"\n你的身高是"+height+ • "公分\n你的標準體重是"+weight+"公斤");
Android程式碼 EX03_10_1.java(1) • Import略 • public class EX03_10_1 extends Activity • { • /** Called when the activity is first created. */ • @Override • public void onCreate(Bundle savedInstanceState) { • super.onCreate(savedInstanceState); • /* 載入main.xml Layout */ • setContentView(R.layout.myalyout); • /* 取得Intent中的Bundle物件 */ • Bundle bunde = this.getIntent().getExtras(); • /* 取得Bundle物件中的資料 */ • String sex = bunde.getString("sex"); • double height = bunde.getDouble("height"); • /* 判斷性別 */ • String sexText=""; • if(sex.equals("M")){ • sexText="男性"; • }else{ • sexText="女性"; • } • /* 取得標準體重 */ • String weight=this.getWeight(sex, height); • /* 設定輸出文字 */ • TextView tv1=(TextView) findViewById(R.id.text1); • tv1.setText("你是一位"+sexText+"\n你的身高是"+height+ • "公分\n你的標準體重是"+weight+"公斤"); • }
Android程式碼 EX03_10_1.java(2) • /* 四捨五入的method */ • private String format(double num) • { • NumberFormat formatter = new DecimalFormat("0.00"); • String s=formatter.format(num); • return s; • } • /* 以findViewById()取得Button物件,並加入onClickListener */ • private String getWeight(String sex,double height) • { • String weight=""; • if(sex.equals("M")) • { • weight=format((height-80)*0.7); • }else • { • weight=format((height-70)*0.6); • } • return weight; • } • }