Android|BMI体质计算器实现(附测试源码)
大家好,我是执念。本博文源于安卓基础,主要介绍如何实现BMI体质计算器。先讲规则后讲实现
·
大家好,我是执念。本博文源于安卓基础,主要介绍如何实现BMI体质计算器。先讲规则后讲实现
体质计算规则
胖瘦程度 | 体质指数 |
---|---|
过轻 | 男性低于20,女性低于19 |
适中 | 男性20-25,女性19-24 |
超重 | 男性25-30,女性24-29 |
肥胖 | 男性30-35,女性29-34 |
严重肥胖 | 男性高于35,女性高于34 |
测试效果
案例打印出保留两位BMI指数,并且对于身高体重小于0,异常不处理!
实例步骤
创建项目My eleApplication
点进Project—>Empty Activity—>然后名字改下,finish即可。成功之后,点击箭头运行程序。
程序正常可以跑成功hello world字样,下面我们继续
布局activity_main.xml
大家从实验效果可以看出,这里用了不少控件。三个TextView,两个EditText,两个单选按钮控件,一个按钮控件,代码下方对内容作进一步分析!
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="身高(cm)"
android:id="@+id/txt1"/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/edX"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="体重(kg)"
android:id="@+id/txt2"/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/edY"/>
<RadioGroup
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:id="@+id/rg">
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="男"
android:id="@+id/rb1"
android:layout_marginRight="30dp"
android:checked="true"/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="女"
android:id="@+id/rb2"
/>
</RadioGroup>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btn"
android:text="计算BMI值"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tvResult"/>
</LinearLayout>
LinearLayout详解
这是基础的线性布局,只需要配置width与height。水平方向即可
TextView详解
我们用了三个,其中一个是输出结果,另外两个只是为了代码更友好。具体的也是基础设置。
RadioButton详解
要想使用单选按钮必须要设置按钮组,然后一些基本的配置,包括text,id,width与height。id是后期获得操作的。必须设置
EditText详解
很多时候,编辑文本是在初学者时期需要用到的。因此id必须设置
搭建MainActivity.java代码
java代码在完成这个案例时只需要三步,这也是翁恺老师经常说的三步:“输入-处理–输出”。输入就是指获取View种的所有对象。处理就是指能根据输入值找出判断依据,输出就是把答案抛出来。
package com.example.myeleapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.TextView;
import org.w3c.dom.Text;
public class MainActivity extends Activity implements View.OnClickListener {
RadioButton rb1;
RadioButton rb2;
TextView tvResult;
EditText txt1;
EditText txt2;
Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setViews();
}
public void setViews() {
rb1 = (RadioButton) findViewById(R.id.rb1);
rb2 = (RadioButton) findViewById(R.id.rb2);//判断男女
tvResult = (TextView) findViewById(R.id.tvResult);
txt1 = (EditText)findViewById(R.id.edX);
txt2 = (EditText)findViewById(R.id.edY);
btn = (Button)findViewById(R.id.btn);
btn.setOnClickListener(this);
}
@Override
public void onClick(View v) {
double x = Double.parseDouble(txt1.getText().toString());//身高
double y = Double.parseDouble(txt2.getText().toString());//体重//体重除以身高的平方
double res;
String str = "Your BMI is";
if(x<=0 || y<=0) {
tvResult.setText("值异常,不计算");
return ;
}
x = x/100;
res = y / (x*x);
String str1 = String.format("%.2f",res);
str = str + str1;
if(rb1.isChecked())
res -= 1;//以女性为标准进行比较
//仅以女性作为评价标准
str += "体型:";
if(res < 19)
str += "过轻";
else if(res < 24)
str += "适中";
else if(res<29)
str += "超重";
else if(res<34)
str += "肥胖";
else
str += "严重肥胖";
tvResult.setText(str);
}
}
点击运行,获取结果
总结
执念并在此总结了实例的步骤:
- 创建项目,跑通hello world
- 搭建界面
- 配置java代码
- 点击运行,收获喜悦
很高兴博文能帮助到大家!
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献6条内容
所有评论(0)