大家好,我是执念。本博文源于安卓基础,主要介绍如何实现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代码
  • 点击运行,收获喜悦

很高兴博文能帮助到大家!

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐