Android开发初体验 - 体质指数BMI.Calc


这两天终于下定决心把书看起来了,在搭好开发环境后接触了第一个除了Hello World的Android初学小例,对基于Eclipse的Android编程有了一个框架性的粗浅认识。

使用的书是人民邮电出版社《Google Android开发入门指南(第二版)》。菜鸟踏出了第一步!

《Google Android开发入门指南(第二版)》源代码下载地址:

免费下载地址在 http://linux.bkjia.com/

用户名与密码都是www.bkjia.com

具体下载目录在 /pub/2011/09/03/Google Android开发入门指南(第二版)源代码/

开发手记:

版本v1.8.6.3.40

功能更新:

1.增加MENU菜单

2.修改关于对话框和一键登录微博功能移至菜单

3.增加菜单中退出程序功能

4.修改计算结果和建议移至下一面板

5.超重时状态栏提示功能





版本v1.8.5.10.52

功能更新:

1.增加输入框为空时用户提示

2.增加按钮呼出关于对话框功能

3.增加一键登录微博功能





版本v1.8.4.21.11

测试平台:Android1.5 HVGA

功能特性:

1.计算常人体质指数并给出建议



JAVA源代码

版本v1.8.6.3.40

 
  1. //Bmi.java  
 
  1. package com.demo.android.bmi;  
  2.   
  3. import java.net.URISyntaxException;  
  4. import java.text.DecimalFormat;  
  5.   
  6. import android.app.Activity;  
  7. import android.app.AlertDialog;  
  8. import android.content.DialogInterface;  
  9. import android.content.Intent;  
  10. import android.net.Uri;  
  11. import android.os.Bundle;  
  12. import android.view.Menu;  
  13. import android.view.MenuItem;  
  14. import android.view.View;  
  15. import android.view.View.OnClickListener;  
  16. import android.widget.Button;  
  17. import android.widget.EditText;  
  18. import android.widget.TextView;  
  19. import android.widget.Toast;  
  20.   
  21. public class Bmi extends Activity {  
  22.     /** Called when the activity is first created. */  
  23.     @Override  
  24.     // 重写函数   
  25.     public void onCreate(Bundle savedInstanceState) {  
  26.         super.onCreate(savedInstanceState);// 原方法调用   
  27.         setContentView(R.layout.main);// 显示在屏幕上   
  28.   
  29.         // Listen for button clicks   
  30.         // findViewById方法取得按钮组件,为保持与XML文件描述类型一致作强制转换   
  31.         Button button = (Button) findViewById(R.id.submit);  
  32.         button.setOnClickListener(calcBMI);  
  33.     }  
  34.   
  35.     private OnClickListener calcBMI = new OnClickListener() {  
  36.         public void onClick(View v) {  
  37.             /* 
  38.              * DecimalFormat nf = new DecimalFormat("0.00");// 定义双精度浮点数  
  39.              * try { 
  40.              * EditText fieldheight = (EditText) findViewById(R.id.height);// 取数 
  41.              * EditText fieldweight = (EditText) findViewById(R.id.weight);// 取数 
  42.              * double height = Double.parseDouble(fieldheight.getText() 
  43.              * .toString()) / 100; double weight = 
  44.              * Double.parseDouble(fieldweight.getText() .toString()); double BMI 
  45.              * = weight / (height * height); 
  46.              *  
  47.              * TextView result = (TextView) findViewById(R.id.result); 
  48.              * result.setText("您的体质指数BMI值为:" + nf.format(BMI)); // 
  49.              * 这里我一开始用"@string/bmi_result",后来用R.string.bmi_result,结果都不行,估计和+号有关系 
  50.              *  
  51.              * TextView fieldsuggest = (TextView) findViewById(R.id.suggest);// 
  52.              * 取得控件 if (BMI > 25) { fieldsuggest.setText(R.string.advice_heavy); 
  53.              * } else if (BMI < 20) { 
  54.              * fieldsuggest.setText(R.string.advice_light); } else { 
  55.              * fieldsuggest.setText(R.string.advice_average); } } catch 
  56.              * (Exception obj) { Toast.makeText(Bmi.this, "真傲娇,两个空都要填满的!", 
  57.              * Toast.LENGTH_LONG) .show(); // 自动隐去型面包板,作用于提示很友好 } } 
  58.              */  
  59.             // 以上第一版第二版点击按钮计算BMI值   
  60.             // 以下第三版点击按钮跳转到报告页面   
  61.               
  62.             EditText field_height = (EditText) findViewById(R.id.height);// 取数   
  63.             EditText field_weight = (EditText) findViewById(R.id.weight);// 取数   
  64.             if("".equals(field_height.getText().toString())||"".equals(field_weight.getText().toString()))  
  65.                 {  
  66.                 Toast.makeText(Bmi.this"别傲娇,两个空都要填满的!",Toast.LENGTH_LONG) .show();  
  67.                 }  
  68.             else{  
  69.             Intent intent = new Intent();  
  70.             intent.setClass(Bmi.this, Report.class);  
  71.             Bundle bundle = new Bundle();  
  72.             bundle.putString("KEY_HEIGHT", field_height.getText().toString());  
  73.             bundle.putString("KEY_WEIGHT", field_weight.getText().toString());  
  74.             intent.putExtras(bundle);  
  75.             startActivity(intent);  
  76.             }  
  77.         }  
  78.     };  
  79.     protected static final int MENU_ABOUT = Menu.FIRST;  
  80.     protected static final int MENU_Quit = Menu.FIRST + 1;  
  81.   
  82.     @Override  
  83.     public boolean onCreateOptionsMenu(Menu menu) {// 创建菜单   
  84.         // TODO Auto-generated method stub   
  85.         super.onCreateOptionsMenu(menu);  
  86.         menu.add(0, MENU_ABOUT, 0"关于...").setIcon(  
  87.                 android.R.drawable.ic_menu_info_details);  
  88.         menu.add(0, MENU_Quit, 0"退出").setIcon(  
  89.                 android.R.drawable.ic_menu_close_clear_cancel);  
  90.         return super.onCreateOptionsMenu(menu);  
  91.     }  
  92.   
  93.     @Override  
  94.     public boolean onOptionsItemSelected(MenuItem item) {// 处理菜单选项动作   
  95.         // TODO Auto-generated method stub   
  96.         switch (item.getItemId()) {  
  97.         case MENU_ABOUT:  
  98.             OpenOptionsDialog();  
  99.             break;  
  100.         case MENU_Quit:  
  101.             finish();  
  102.             break;  
  103.         }  
  104.         return super.onOptionsItemSelected(item);  
  105.     }  
  106.   
  107.     private void OpenOptionsDialog() {  
  108.         new AlertDialog.Builder(Bmi.this).setTitle(R.string.about_title)// 设置标题   
  109.                 .setMessage(R.string.about_msg)// 设置内容   
  110.                 .setPositiveButton(R.string.ok_label,  
  111.                         new DialogInterface.OnClickListener() {  
  112.                             public void onClick(  
  113.                                     DialogInterface dialoginterface, int i) {// 函数体空,点击即关闭   
  114.                             }  
  115.                         })// 添加确认按钮   
  116.                 .setNegativeButton(R.string.homepage_label,  
  117.                         new DialogInterface.OnClickListener() {  
  118.                             public void onClick(  
  119.                                     DialogInterface dialoginterface, int i) {  
  120.                                 Uri uri = Uri  
  121.                                         .parse(getString(R.string.homepage_uri));  
  122.                                 // 注意:这里网址一定要有http://,否则坑爹的FOCUS又来   
  123.                                 Intent intent = new Intent(Intent.ACTION_VIEW,  
  124.                                         uri);  
  125.                                 startActivity(intent);  
  126.                             }  
  127.                         })// 添加去往主页按钮   
  128.                 .show();// 显示   
  129.     }  
  • 1
  • 2
  • 下一页

相关内容