2010年5月20日 星期四

開始動手修改你的專案吧!

開始動手修改你的專案吧!

話先說在前頭


接下來我們依照gasolin的方向繼續前進吧!現在我們要為程式的畫面加上可以輸入身高體重的欄位。

  1. 首先,先把程式預設的TextView刪除吧!如圖所示!

  2. 刪除的時候會問你是不是要刪除[LinearLayout>TextView?],二話不說[Yes]給他按下去吧!
  3. 接著再畫面的左邊選取[TextView]把它拖曳到主畫面上吧!

  4. 然後選畫面的右手邊的[Properties]視窗,選[Text]屬性,然後右邊的按鈕給他按下去!記得要選到[TextView]的物件喔!

  5. 按下去後會出現[Resource Chooser]視窗,[New String...]再給他按下去吧!

  6. 按下去後會跳出一個[Create New Android String]的視窗,在[String]的後面輸入[身高:],[New R.string.]後面輸入[height],然後按下[OK]。按下[OK]之後就會跳回去剛剛的[Resource Chooser]視窗,這時候你會發現多了一個[height]可以選擇。

  7. 但是選完之後你應該會發現畫面上並沒有出現你預期的[身高:],這時候要去修改[Properties]的[Layout width],將他從[wrap_content]改成[fill_parent],改完之後記得點一下別的屬性,這樣才看的到你修改後的變化。

  8. 接下來依序擺上[TextEdit][TextView][TextEdit][Button][TextView]如圖,屬性如下。
    • [TextEdit]
      • Id:@+id/etHeight
      • Input type:number
      • Text:
      • Layout width:fill_parent
    • [TextView]
      • Text:體重:
      • Layout width:fill_parent
    • [TextEdit]
      • Id:@+id/etWeight
      • Input type:number
      • Text:
      • Layout width:fill_parent
    • [Button]
      • Id:@+id/btnCalc
      • Text:計算BMI值
      • Layout width:fill_parent
    • [TextView]
      • Id:@+id/tvResult
      • Text:
      • Layout width:fill_parent
    • [TextView]
        • Id:@+id/tvSuggest
        • Text:
        • Layout width:fill_parent


接下來我們要先新增計算完BMI之後的建議。所以我們要先新增一個advice.xml在values下面。

  1. 在左邊的[Package Explorer]點滑鼠右鍵,如圖。

  2. 在[File]的地方輸入[advice.xml],然後按下[Finish]之後你就會在右邊的[Package Explorer]看到你新增的[advice.xml]了。

  3. 接下來選擇剛剛新增的[advice.xml],然後在畫面的中央選擇[Add...]。

  4. 直接在跳出來的視窗上面double click [String]。

  5. 之後你應該會看到畫面上的右邊有[Name*]跟[Value*]可以輸入,請輸入[advice_light]跟[你該多吃點]。

  6. 依序在新增[advice_avg/體型很棒喔]跟[advice_heavy/你該節食了],打完記得存檔喔。

接下來該寫些程式了,不過我已經在打哈欠、流眼淚了,所以直接把程式貼上吧!如果希望說明的,可以去gasolin大大的AndroidLogicBmiLogic看。


    1. package com.demo.android.bmi2;
    2.  
    3. import android.app.Activity;
    4. import android.os.Bundle;
    5. import android.widget.Button;
    6. import android.widget.EditText;
    7. import android.widget.TextView;
    8. import android.view.View;
    9. import android.view.View.OnClickListener;
    10. import java.text.DecimalFormat;
    11.  
    12. public class Bmi2 extends Activity {
    13.     /** Called when the activity is first created. */
    14.     @Override
    15.     public void onCreate(Bundle savedInstanceState) {
    16.         super.onCreate(savedInstanceState);
    17.         setContentView(R.layout.main);
    18.        
    19.         //Listen for button clicks
    20.         Button button = (Button)findViewById(R.id.btnCalc);
    21.         button.setOnClickListener(calcBMI);
    22.     }
    23.    
    24.     private OnClickListener calcBMI = new OnClickListener()
    25.     {
    26.         public void onClick(View v)
    27.         {
    28.             DecimalFormat nf = new DecimalFormat("0.00");
    29.             EditText fieldHeight = (EditText)findViewById(R.id.etHeight);
    30.             EditText fieldWeight = (EditText)findViewById(R.id.etWeight);
    31.             double height = Double.parseDouble(fieldHeight.getText().toString())/100;
    32.             double weight = Double.parseDouble(fieldWeight.getText().toString());
    33.             double bmi = weight / (height * height);
    34.            
    35.             TextView result = (TextView)findViewById(R.id.tvResult);
    36.             result.setText("Your BMI is " + nf.format(bmi));
    37.            
    38.             TextView fieldSuggest = (TextView)findViewById(R.id.tvSuggest);
    39.             if(bmi>25)
    40.             {
    41.                 fieldSuggest.setText(R.string.advice_heavy);
    42.             }
    43.             else if(bmi<20)
    44.             {
    45.                 fieldSuggest.setText(R.string.advice_light);
    46.             }
    47.             else
    48.             {
    49.                 fieldSuggest.setText(R.string.advice_avg);
    50.             }
    51.         }
    52.     };
    53. }

沒有留言:

張貼留言