package com.demo.android.bmi; import java.text.DecimalFormat; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; public class Main extends Activity { protected static final int MENU_ABOUT = Menu.FIRST; protected static final int MENU_QUIT = Menu.FIRST+1; private Button button_calc; private EditText field_height; private EditText field_weight; private TextView view_result; private TextView view_good_weight; private TextView view_suggest; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); findviews(); setListensers(); } private void findviews() { button_calc = (Button)findViewById(R.id.submit); field_height=(EditText)findViewById(R.id.height); field_weight=(EditText)findViewById(R.id.weight); view_result=(TextView)findViewById(R.id.result); view_suggest=(TextView)findViewById(R.id.suggest); view_good_weight=(TextView)findViewById(R.id.goodWeight); } private void setListensers() { button_calc.setOnClickListener(calcBMI); } private OnClickListener calcBMI = new OnClickListener(){ public void onClick(View v){ DecimalFormat nf = new DecimalFormat("0.0"); try{ double height = Double.parseDouble( field_height.getText().toString() ) / 100; double weight = Double.parseDouble( field_weight.getText().toString() ); double BMI=weight / ( height * height ); view_result.setText( getText( R.string.bmi_result ) + nf.format(BMI) ); double min_weight=20 * ( height * height ); double max_weight=25 * ( height * height ); view_good_weight.setText( getText( R.string.goodWeight ) + nf.format(min_weight) + "~" + nf.format(max_weight) ); //建議 if(BMI > 25){ view_suggest.setText(R.string.advice_heavy); }else if(BMI < 20){ view_suggest.setText(R.string.advice_light); }else{ view_suggest.setText(R.string.advice_average); } }catch(Exception obj){ //隱現視窗,LENGTH_SHORT短訊息 Toast.makeText(Main.this, R.string.errMsg1, Toast.LENGTH_SHORT).show(); } } }; private void openOptionsDialog() { //建立具名實體,會佔記憶體到關閉程式為止 Main.this 是指建立在目前畫面之上 /* AlertDialog.Builder dialog = new AlertDialog.Builder(Main.this); dialog.setTitle("關於BMI App"); dialog.setMessage("這只是我練習的一個小App啦~"); dialog.show(); */ //建立對話框匿名實體,結束就釋放記憶體,適合短暫秀出 new AlertDialog.Builder(Main.this) .setTitle(R.string.aboutTitle) .setMessage(R.string.aboutContent) .setPositiveButton(R.string.label_ok, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { } }) .setNegativeButton(R.string.label_homepage, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { //連到某個網址,地圖可用 geo: 經度 , 緯度,電話tel:2130669 // Uri.parse不支援資源識別符號,所以用getString()取得實際值 Uri uri = Uri.parse( getString( R.string.label_homepage_url ) ); //"意圖"實體,ACTION_VIEW 根據不同檔案類型,自動執行關聯軟體 //ACTION_DIAL可撥電話 Intent intent = new Intent(Intent.ACTION_VIEW , uri); //執行意圖 startActivity(intent); } }) .show(); } @Override public boolean onCreateOptionsMenu(Menu menu) { // TODO Auto-generated method stub //menu.add(0 , MENU_ABOUT , 0 , R.string.menu_about).setIcon(R.drawable.about); //menu.add(0 , MENU_QUIT , 0 , R.string.menu_quit).setIcon(R.drawable.close); MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu, menu); return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { // TODO Auto-generated method stub switch(item.getItemId()){ //case MENU_ABOUT: case R.id.about: openOptionsDialog(); break; //case MENU_QUIT: case R.id.finish: finish(); break; } return super.onOptionsItemSelected(item); } } ```
進階搜尋
41人線上 (8人在瀏覽線上書籍)
會員: 0
訪客: 41