Android趣味课程:简易BMI健康分析APP

既然说到了设计趣味课程,就把之间讲过的能够提起同学兴趣的简单案例整理一下,本篇博客描述的是使用Android的超基础控件和简单逻辑,结合bmi健康检测公式,完成的健康分析APP。

需求如下:

完成BMI健康测试分析APP:
BMI指数(即身体质量指数,简称体质指数又称体重,英文为Body Mass Index,简称BMI),
是用体重公斤数除以身高米数平方得出的数字,是目前国际上常用的衡量人体胖瘦程度以及是否健康的一个标准。
主要用于统计用途,当我们需要比较及分析一个人的体重对于不同高度的人所带来的健康影响时,
BMI值是一个中立而可靠的指标。

BMI计算方法:
体质指数(BMI)=体重(kg)÷身高^2(m)
EX:70kg÷(1.75×1.75)=22.86

结果判断标准:
男性:
  BMI<18:偏瘦状态
  18<=BMI<22:健康状态
  22<=BMI<25:肥胖状态
  BMI>=25   :重度肥胖

女性:
  BMI<16:偏瘦状态
  16<=BMI<20:健康状态
  20<=BMI<23:肥胖状态
  BMI>=23   :重度肥胖

按照应用绘制布局。并编写逻辑代码。

 完成效果图如下:

Android趣味课程:简易BMI健康分析APP_第1张图片

涉及到的知识点分析:

此案例属于很简单的Android基础案例,适于任何Android初学者,在经过简单控件和activity的学习后,可以综合以学习的内容完成此案例。此案例需求知识点包括:

1.基本控件TextView,EditText,RadioGroup,RadioButton,Button,ImageView等控件的基本操作。

2.活动界面Activity之间的跳转与传值。

 针对于逻辑我不再做过多的分析,可通过书本或者Android API对于其进行学习。直接贴代码:

输入基本信息界面的xml布局代码   activity_bmiinput.xml




    
    
    
    
    
        
        
    
    

通过公式计算,展示健康信息界面的xml布局代码   activity_bmiresult.xml



    
    
    

    

然后是这两个布局对应的JAVA逻辑代码,首先是输入基本信息界面的JAVA逻辑代码。

package com.animee.day01.bmi;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;
import com.animee.day01.R;
public class BMIInputActivity extends AppCompatActivity  implements View.OnClickListener {
    EditText heightEt, weightEt;
    Button start, restart;
    float bmi = 0;
    RadioGroup sexchoose;
    String sex_Str;  //被选中的性别
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_bmiinput);
        heightEt = (EditText) findViewById(R.id.bmi_input_et_sg);
        weightEt = (EditText) findViewById(R.id.bmi_input_et_tz);
        start = (Button) findViewById(R.id.bmi_input_btn_start);
        restart = (Button) findViewById(R.id.bmi_input_btn_reset);
        sexchoose = (RadioGroup) findViewById(R.id.bmi_input_rg);
        start.setOnClickListener(this);
        restart.setOnClickListener(this);
    }
    @Override
    public void onClick(View view) {
        int i = view.getId();
        Intent intent = new Intent();
        // 获取被选中的单选按钮
        int checkedId = sexchoose.getCheckedRadioButtonId();
        RadioButton checkRb = (RadioButton)findViewById(checkedId);
        sex_Str = checkRb.getText().toString();
        if(R.id.bmi_input_btn_start == i){
            if (TextUtils.isEmpty(heightEt.getText().toString().trim())
                    || TextUtils.isEmpty(weightEt.getText().toString().trim())) {
                Toast.makeText(this, "身高或体重不能为空", Toast.LENGTH_SHORT).show();
                return;
            } else {
                // 将身高体重的信息转换成整数类型
                float height_num = Float.parseFloat(heightEt.getText().toString().trim());
                float weight_num = Float.parseFloat(weightEt.getText().toString().trim());
                bmi =(float) weight_num/(height_num*height_num/10000);

                Toast.makeText(
                        this,
                        "身高:" + heightEt.getText().toString().trim() + ","
                                + "体重:" + weightEt.getText().toString().trim()
                                + "," + "性别:" + sex_Str + "," + "BMI:" + bmi,
                        Toast.LENGTH_SHORT).show();
                intent.setClass(this, BMIResultActivity.class);
                intent.putExtra("BMI", bmi);
                intent.putExtra("sex", sex_Str);
                intent.putExtra("height", height_num);
                startActivity(intent);
            }
        }
        if(R.id.bmi_input_btn_reset == i){
            heightEt.setText("");
            weightEt.setText("");
        }
    }
}

通过公式计算,展示健康信息界面的JAVA逻辑代码如下:

package com.animee.day01.bmi;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.TextView;
import com.animee.day01.R;
import java.text.DecimalFormat;
public class BMIResultActivity extends AppCompatActivity {

    int[] pic = { R.mipmap.bmi_1, R.mipmap.bmi_2, R.mipmap.bmi_3,
            R.mipmap.bmi_4 };
    ImageView img ;
    TextView BMI,zhaungtai,num1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_bmiresult);
        img = (ImageView) findViewById(R.id.bmi_res_iv);
        BMI = (TextView) findViewById(R.id.bmi_res_tv1);
        zhaungtai = (TextView) findViewById(R.id.bmi_res_tv2);
        num1 = (TextView)findViewById(R.id.bmi_res_tv3);

        //接受上一个界面的传值
        Intent intent = getIntent();
        String sex = intent.getStringExtra("sex");
        float num = intent.getFloatExtra("BMI", 0);
        float height = intent.getFloatExtra("height", 0);  //160cm
        DecimalFormat df = new DecimalFormat("#.##");
        if(sex.equals("女")){
            //体重区间计算
            String fe_w1 = df.format(height*height*16/10000);
            String fe_w2 = df.format(height*height*20/10000);
            num1.setText("您正常体重区间为:\n"+fe_w1+"kg--"+fe_w2+"kg");
            if(num<16){
                img.setImageResource(pic[0]);
                BMI.setText("您的bmi值为:"+df.format(num)+"");
                zhaungtai.setText("您目前的状态为:偏瘦状态");
            }else if(num>=16 && num<20){
                img.setImageResource(pic[1]);
                BMI.setText("您的bmi值为:"+df.format(num)+"");
                zhaungtai.setText("您目前的状态为:健康状态");
            }else if(num>=20 && num<23){
                img.setImageResource(pic[2]);
                BMI.setText("您的bmi值为:"+df.format(num)+"");
                zhaungtai.setText("您目前的状态为:肥胖状态");
            }else{
                img.setImageResource(pic[3]);
                BMI.setText("您的bmi值为:"+df.format(num)+"");
                zhaungtai.setText("您目前的状态为:重度肥胖");
            }
        }else{
            //体重区间计算
            String fe_w1 = df.format(height*height*18/10000);
            String fe_w2 = df.format(height*height*22/10000);
            num1.setText( df.format(height*height*20/10000));
            num1.setText("您正常体重区间为:\n"+fe_w1+"kg--"+fe_w2+"kg");
            if(num<18){
                img.setImageResource(pic[0]);
                BMI.setText("您的bmi值为:"+df.format(num)+"");
                zhaungtai.setText("您目前的状态为:偏瘦状态");
            }else if(num>=18 && num<22){
                img.setImageResource(pic[1]);
                BMI.setText("您的bmi值为:"+df.format(num)+"");
                zhaungtai.setText("您目前的状态为:健康状态");
            }else if(num>=22 && num<25){
                img.setImageResource(pic[2]);
                BMI.setText("您的bmi值为:"+df.format(num)+"");
                zhaungtai.setText("您目前的状态为:肥胖状态");
            }else{
                img.setImageResource(pic[3]);
                BMI.setText("您的bmi值为:"+df.format(num)+"");
                zhaungtai.setText("您目前的状态为:重度肥胖");
            }
        }
    }
}

按照控件基本操作和计算逻辑依次顺序编写,就能够完成这个APP了,难度不大。

有兴趣的同学可以编写一下,尝试运行,就可以制作出属于你自己的健康APP了!

感谢您的阅读~

点击下载:案例配套代码

你可能感兴趣的:(Android学习笔记)