android:
id="@+id/suggest"
android:
layout_width="wrap_content"
android:
layout_height="wrap_content"
android:
text="LargeText"
android:
textAppearance="?
android:
attr/textAppearanceLarge"/>
进入图片中的BMI1Activity.java为程序添加代码
BMI1Activity.java代码
packageWU.android.bmi;
importjava.text.DecimalFormat;
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.Button;
importandroid.widget.EditText;
importandroid.widget.TextView;
publicclassBMI1ActivityextendsActivity{
/**Calledwhentheactivityisfirstcreated.*/
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Buttonbutton=(Button)findViewById(R.id.submit);
button.setOnClickListener(calcBMI);
}
OnClickListenercalcBMI=newOnClickListener(){
publicvoidonClick(Viewv){
EditTextfieldHeight=(EditText)findViewById(R.id.height);
EditTextfieldWeight=(EditText)findViewById(R.id.weight);
doubleheight=Double.parseDouble(fieldHeight.getText().toString())/100;
doubleweight=Double.parseDouble(fieldWeight.getText().toString());
doubleBMI=weight/(height*height);
DecimalFormatnf=newDecimalFormat("0.00");
TextViewshow=(TextView)findViewById(R.id.result);
show.setText("你的BMI值是"+nf.format(BMI));
TextViewfieldsuggest=(TextView)findViewById(R.id.suggest);
if(BMI>25){
fieldsuggest.setText(R.string.advice_heavy);
}
elseif(BMI<20){
fieldsuggest.setText(R.string.advice_light);
}
else
fieldsuggest.setText(R.string.advice_average);
}
};
}运行结果:
出入身高和体重,点击Button计算BMI的值
2、实现一个优化后、支持单选项菜和对话框的、单Activity的BMI项目
相关代码:
Menu相关代码:
protectedstaticfinalintMENU_ABOUT=Menu.FIRST;
protectedstaticfinalintMENU_QUIT=Menu.FIRST+1;
@Override
publicbooleanonCreateOptionsMenu(Menumenu){//Menu相关方法
//TODOAuto-generatedmethodstub
menu.add(0,MENU_ABOUT,0,"关于.....").setIcon(android.R.drawable.ic_menu_help);
menu.add(0,MENU_QUIT,Menu.NONE,"结束").setIcon(android.R.drawable.ic_menu_close_clear_cancel);
returnsuper.onCreateOptionsMenu(menu);
}
@Override
publicbooleanonOptionsItemSelected(MenuItemitem){//Menu相关方法
switch(item.getItemId()){//修改onOptionsItemSelected
caseMENU_ABOUT:
openOptionsDialog();
break;
caseMENU_QUIT:
finish();
break;
}
//TODOAuto-generatedmethodstub
returnsuper.onOptionsItemSelected(item);
}
将findViewById独立:
privateButtonbutton_calc;
privateTextViewview_result;
privateTextViewview_suggest;
privatevoidfindViews(){
button_calc=(Button)findViewById(R.id.submit);
view_result=(TextView)findViewById(R.id.result);
view_suggest=(TextView)findViewById(R.id.suggest);
}
将setOnClickListener独立:
privatevoidsetListeners(){
button_calc.setOnClickListener(calcBMI);
}
对话框程序:
privatevoidopenOptionsDialog(){
newAlertDialog.Builder(BMI2.this).setTitle("关于AndroidBMI")
.setMessage("AndroidBMIcalc")//使用匿名的对话框对象
.setPositiveButton("确认",newDialogInterface.OnClickListener(){//加入对话框按钮
publicvoidonClick(DialogInterfacedialog,intwhich){
Uriuri=Uri.parse("tel:
12345678");
Intentintent=newIntent(Intent.ACTION_DIAL,uri);
startActivity(intent);
}
}).show();
}
}
按Android虚拟机中的“MENU”按钮,在虚拟机的显示屏区下方出现菜单。
计算BMI值或者按菜单中的“关于…”后,会弹出一个“关于AndroidBMI”的对话框。
按上面“关于AndroidBMI”的对话框的“确认”后,会自动跳转到拨号界面
3、实现一个支持多Activity的BMI项目
创建新项目BMI2,如下
添加一个类
android.app.Activity
在“layout”中新建“report.xml”,用于输出结果和建议。
在AndroidManifest.xml加入新Activity描述。
name="Report">
BMI2.JAVA代码:
packageWU.android.bmi;
importjava.text.DecimalFormat;
importandroid.app.Activity;
importandroid.app.AlertDialog;
importandroid.content.DialogInterface;
importandroid.content.Intent;
import.Uri;
importandroid.os.Bundle;
importandroid.view.Menu;
importandroid.view.MenuItem;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.Button;
importandroid.widget.EditText;
importandroid.widget.TextView;
publicclassBMI2extendsActivity{
/**Calledwhentheactivityisfirstcreated.*/
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Buttonbutton=(Button)findViewById(R.id.submit);
button.setOnClickListener(calcBMI);
}
OnClickListenercalcBMI=newOnClickListener(){
publicvoidonClick(Viewv){
Intentintent=newIntent();
intent.setClass(BMI2.this,Report.class);
Bundlebundle=newBundle();
EditTextfieldHeight=(EditText)findViewById(R.id.height);
EditTextfieldWeight=(EditText)findViewById(R.id.weight);
bundle.putString("HEIGHT",fieldHeight.getText().toString());
bundle.putString("WEIGHT",fieldWeight.getText().toString());
startActivity(intent);
};
};}
Report.JAVA代码:
packageWU.android.bmi;
importjava.text.DecimalFormat;
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.view.View;
importandroid.widget.TextView;
publicclassReportextendsActivity{
protectedvoidonCreate(BundlesavedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.report);
showResults();
}
privatevoidshowResults(){
Bundlereceive=this.getIntent().getExtras();
Doubleheight=Double.parseDouble(receive.getString("HEIGHT"))/100;
doubleweight=Double.parseDouble(receive.getString("WEIGHT"));
doubleBMI=weight/(height*height);
DecimalFormatnf=newDecimalFormat("0.00");
TextViewfieldsuggest=(TextView)findViewById(R.id.suggest);
fieldsuggest.setText(getText(R.string.result)+nf.format(BMI));
if(BMI>25){
fieldsuggest.setText(R.string.advice_light);
}
elseif(BMI<20){
fieldsuggest.setText(R.string.advice_heavy);
}
else
fieldsuggest.setText(R.string.advice_average);
}
}
运行结果:
点击“计算BMI的值”,跳转到第二页
点击“返回”,跳转到第一页。
五、实验心得与小结
本次实验实现一个身体健康指标计算的Android程序,分三个阶段完善。
通过该实验,我掌握了简单的Android开发,了解了选项菜单、对话框、多Activity等各种简单控件的使用。
第一个阶段:
此时要求比较简单,只要写一个普通的BMI程序,要注意的是控件的Id的设置要准确,否则程序会出错,值传递会出现问题。
做好每一步都要记得保存,如果没保存,可能在另外一个控件操作时可能会没反应。
第二个阶段:
此阶段实验要在原来的BMI程序中加上选项菜单和对话框,难度有所增加,同时也更加富有乐趣。
图标可以自定义,选择自己喜欢的图标加在程序中,让做程序也成为了一种快乐。
按下按钮若程序没有发生跳转,则要注意按钮事件是否定义正确。
第三个阶段:
实现多Activity相对来说步骤比较多,只要仔细执行各个步骤,也不是难点。
要返回“上一页”的“onClickBack()”方法定义好后,不能忘了要在控件的“Onclick”属性处进行修改,否则会发生点击“上一页”没有返回的错误。
另外,点击“上一页”返回只是表观现象,实则是把Report.java这个Activity的页面关闭,显示出第一页的页面内容。
六、指导教师评议
成绩评定:
指导教师签名: