这两天终于下定决心把书看起来了,在搭好开发环境后接触了第一个除了Hello World的Android初学小例,对基于Eclipse的Android编程有了一个框架性的粗浅认识。
使用的书是人民邮电出版社《Google Android开发入门指南(第二版)》。菜鸟踏出了第一步!
《Google Android开发入门指南(第二版)》源代码下载地址:
用户名与密码都是
具体下载目录在 /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
//Bmi.java
package com.demo.android.bmi; import java.net.URISyntaxException; 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.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 Bmi extends Activity { /** Called when the activity is first created. */ @Override // 重写函数 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);// 原方法调用 setContentView(R.layout.main);// 显示在屏幕上 // Listen for button clicks // findViewById方法取得按钮组件,为保持与XML文件描述类型一致作强制转换 Button button = (Button) findViewById(R.id.submit); button.setOnClickListener(calcBMI); } private OnClickListener calcBMI = new OnClickListener() { public void onClick(View v) { /* * DecimalFormat nf = new DecimalFormat("0.00");// 定义双精度浮点数 * try { * EditText fieldheight = (EditText) findViewById(R.id.height);// 取数 * EditText fieldweight = (EditText) findViewById(R.id.weight);// 取数 * double height = Double.parseDouble(fieldheight.getText() * .toString()) / 100; double weight = * Double.parseDouble(fieldweight.getText() .toString()); double BMI * = weight / (height * height); * * TextView result = (TextView) findViewById(R.id.result); * result.setText("您的��质指数BMI值为:" + nf.format(BMI)); // * 这里我一开始用"@string/bmi_result",后来用R.string.bmi_result,结果都不行,估计和+号有关系 * * TextView fieldsuggest = (TextView) findViewById(R.id.suggest);// * 取得控件 if (BMI > 25) { fieldsuggest.setText(R.string.advice_heavy); * } else if (BMI < 20) { * fieldsuggest.setText(R.string.advice_light); } else { * fieldsuggest.setText(R.string.advice_average); } } catch * (Exception obj) { Toast.makeText(Bmi.this, "真傲娇,两个空都要填满的!", * Toast.LENGTH_LONG) .show(); // 自动隐去型面包板,作用于提示很友好 } } */ // 以上第一版第二版点击按钮计算BMI值 // 以下第三版点击按钮跳转到报告页面 EditText field_height = (EditText) findViewById(R.id.height);// 取数 EditText field_weight = (EditText) findViewById(R.id.weight);// 取数 if("".equals(field_height.getText().toString())||"".equals(field_weight.getText().toString())) { Toast.makeText(Bmi.this, "别傲娇,两个空都要填满的!",Toast.LENGTH_LONG) .show(); } else{ Intent intent = new Intent(); intent.setClass(Bmi.this, Report.class); Bundle bundle = new Bundle(); bundle.putString("KEY_HEIGHT", field_height.getText().toString()); bundle.putString("KEY_WEIGHT", field_weight.getText().toString()); intent.putExtras(bundle); startActivity(intent); } } }; protected static final int MENU_ABOUT = Menu.FIRST; protected static final int MENU_Quit = Menu.FIRST + 1; @Override public boolean onCreateOptionsMenu(Menu menu) {// 创建菜单 // TODO Auto-generated method stub super.onCreateOptionsMenu(menu); menu.add(0, MENU_ABOUT, 0, "关于...").setIcon( android.R.drawable.ic_menu_info_details); menu.add(0, MENU_Quit, 0, "退出").setIcon( android.R.drawable.ic_menu_close_clear_cancel); return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) {// 处理菜单选项动作 // TODO Auto-generated method stub switch (item.getItemId()) { case MENU_ABOUT: OpenOptionsDialog(); break; case MENU_Quit: finish(); break; } return super.onOptionsItemSelected(item); } private void OpenOptionsDialog() { new AlertDialog.Builder(Bmi.this).setTitle(R.string.about_title)// 设置标题 .setMessage(R.string.about_msg)// 设置内容 .setPositiveButton(R.string.ok_label, new DialogInterface.OnClickListener() { public void onClick( DialogInterface dialoginterface, int i) {// 函数体空,点击即关闭 } })// 添加确认按钮 .setNegativeButton(R.string.homepage_label, new DialogInterface.OnClickListener() { public void onClick( DialogInterface dialoginterface, int i) { Uri uri = Uri .parse(getString(R.string.homepage_uri)); // 注意:这里网址一定要有,否则坑爹的FOCUS又来 Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent); } })// 添加去往主页按钮 .show();// 显示 } }