android:
layout_width=”wrap_content”
android:
layout_height="wrap_content"
android:
layout_x=”200px”
android:
layout_y="235px"
android:
textSize=”20sp"
android:
text=”kg"
/>
〈Button
android:
id=”@+id/compute"
android:
layout_width=”wrap_content"
android:
layout_height=”wrap_content"
android:
layout_x=”100px"
android:
layout_y="280px”
android:
textSize="20sp"
android:
text=”@string/compute"
/〉
3。
1。
2源代码文件:
MainActivity。
java
使用main。
xml布局文件,为计算按钮(Button)注册事件监听,添加事件响应代码;
实现未填身高提示:
Toast.makeText(MainActivity。
this,R.string。
tall_hint,Toast.LENGTH_SHORT).show();
实现Activity之间跳转设置:
intent.setClass(MainActivity。
this,ResultActivity。
class);
实现Activity之间数据封装传输:
bundle.putDouble("height”,height);
bundle.putString(”sex",sex);
bundle。
putString("real",real);
intent。
putExtras(bundle);
MainActivity.java完整代码如下:
packagecom。
halcyon;
importandroid。
app.Activity;
importandroid.content.Intent;
importandroid。
os。
Bundle;
importandroid。
view。
View;
importandroid.view.View。
OnClickListener;
importandroid.widget.Button;
importandroid。
widget.EditText;
importandroid。
widget。
RadioButton;
importandroid.widget。
Toast;
publicclassMainActivityextendsActivityimplementsOnClickListener{
privateRadioButtonrb1=null;
privateRadioButtonrb2=null;
privateEditTextet=null;
privateEditTextet_real=null;
privateButtonbt=null;
publicvoidonCreate(BundlesavedInstanceState){
super。
onCreate(savedInstanceState);
setContentView(R。
layout.main);
rb1=(RadioButton)findViewById(R.id.rb_male);
rb2=(RadioButton)findViewById(R.id。
rb_female);
rb1。
setChecked(true);//默认为男性选中
et=(EditText)findViewById(R.id。
et_tall);
et_real=(EditText)findViewById(R.id.et_real);
bt=(Button)findViewById(R。
id。
compute);
bt。
setOnClickListener(this);//注册点击事件监听
}
@Override
publicvoidonClick(Viewv){
//TODOAuto—generatedmethodstub
/**事件响应代码,获取性别、身高,判断是否输入了实际体重
*新建Intent对象用于Activity之间跳转,及传输输入的数据
***/
if(et。
getText().toString()。
length()==0){//身高未填提示
Toast。
makeText(MainActivity。
this,R。
string。
tall_hint,Toast。
LENGTH_SHORT)。
show();
}
else{
doubleheight=Double.parseDouble(et。
getText().toString());
Stringreal=et_real.getText().toString();
Stringsex=””;
if(rb1.isChecked()){
sex="M";
}
else{
sex="F";
}
Intentintent=newIntent();
intent.setClass(MainActivity。
this,ResultActivity。
class);
Bundlebundle=newBundle();//存放数据,以封装传输
bundle.putDouble("height”,height);
bundle。
putString(”sex",sex);
bundle。
putString("real”,real);
intent.putExtras(bundle);
this.startActivity(intent);
}
}
}
3。
2第二个Activity
3。
2.1布局文件:
result.xml
绝对布局,三个TextView,内容用紫色显示,提示标号用绿色显示,以达到较醒目的感觉。
result.xml完整代码如下:
〈?
xmlversion="1。
0”encoding="utf—8"?
〉
xmlns:
android=”http:
//schemas。
android:
layout_width=”fill_parent”
android:
layout_height=”fill_parent”
android:
layout_margin="10px">
〈TextView
android:
id="@+id/tv_1”
android:
layout_width="wrap_content”
android:
layout_height=”wrap_content"
android:
layout_x="20px”
android:
layout_y="100px"
android:
textSize=”20sp”
android:
textColor=”#8855ff"
/>
android:
id="@+id/tv_2"
android:
layout_width="wrap_content"
android:
layout_height="wrap_content”
android:
layout_x=”20px"
android:
layout_y=”200px”
android:
textSize="20sp”
android:
textColor="#00ff00"
/〉
〈TextView
android:
id=”@+id/tv_3"
android:
layout_width=”wrap_content”
android:
layout_height="wrap_content”
android:
layout_x="20px”
android:
layout_y="240px”
android:
textSize=”20sp"
android:
textColor=”#8855ff”
/>
3。
2.2源代码文件:
ResultActivity.java
使用result.xml布局文件,获取intent,取得传入的数据信息,以
男性:
(身高cm-80)×70﹪=标准体重
女性:
(身高cm-70)×60﹪=标准体重
的标准来计算标准体重,方法
privateStringgetWeight(doubleheight,Stringsex)
实现此功能;
可根据用户是否输入了实际体重,来选择是否显示健康提示信息,方法
privatevoidhealthHint(doubleweight)
实现此功能;
方法privateStringform(doubled)实现数据格式化。
ResultActivity。
java完整代码如下:
packagecom.halcyon;
importjava。
text.NumberFormat;
importandroid.app.Activity;
importandroid。
content。
Intent;
importandroid。
os。
Bundle;
importandroid.widget.TextView;
publicclassResultActivityextendsActivity{
privateTextViewtv_1=null;
privateTextViewtv_2=null;
privateTextViewtv_3=null;
privateIntentintent=null;
privateBundlebundle=null;
privatedoubleheight=0;
privateStringsex=””;
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.result);
tv_1=(TextView)findViewById(R。
id.tv_1);
tv_2=(TextView)findViewById(R。
id。
tv_2);
tv_3=(TextView)findViewById(R。
id。
tv_3);
intent=this。
getIntent();
bundle=intent。
getExtras();
height=bundle.getDouble("height”);
sex=bundle.getString(”sex”);
tv_1。
setText(this.getWeight(height,sex));
}
/**男性:
(身高cm-80)¡Á70﹪=标准体重
*女性:
(身高cm-70)¡Á60﹪=标准体重
***/
privateStringgetWeight(doubleheight,Stringsex){
doubleweight=0;
Stringresult=”";
if(sex。
equals("M”)){
weight=(height-80)*0.7;
result=”这位先生,\n你的标准体重为”+form(weight)+”公斤。
\n";
}
else{
weight=(height—70)*0。
6;
result="这位女士,\n妳的标准体重为"+form(weight)+”公斤。
\n";
}
healthHint(weight);
returnresult;
}
privatevoidhealthHint(doubleweight){
/*根据用户是否输入了实际体重来判断是否添加显示提示信息
*如果输入了实际体重,按以下原则给用户以健康提示
*标准体重正负10﹪为正常体重
*标准体重正负10﹪~20﹪为体重过重或过轻
*标准体重正负20﹪以上为肥胖或体重不足
**/
Stringresult=””;
Stringreal=bundle。
getString(”real”);
if(real。
equals("")){
result="";
}
else{
doubler=Double.parseDouble(real);
doublerate=(r-weight)/weight;
if(rate〉0。
2){//过胖
result=this.getString(R.string.very_fat);
}
elseif(rate>=0。
1&&rate〈=0。
2){//胖
result=this。
getString(R.string.fat);
}
elseif(rate〉-0。
1&&rate〈0。
1){//正常
result=this.getString(R。
string。
normal);
}
elseif(rate>=-0。
2&&rate<=—0.1){//瘦
result=this.getString(R.string。
thin);
}
elseif(rate<-0。
2){//过瘦
result=this.getString(R。
string.very_thin);
}