iT邦幫忙

2023 iThome 鐵人賽

DAY 10
0
Mobile Development

Android studio使用過程與開發說明系列 第 10

Day10 - 製作一個簡單身高和體重BMI的計算器

  • 分享至 

  • xImage
  •  

前言
如今越來越重視健康與健身的時代,我們意識到了身體質量指數(BMI)的重要性。BMI不僅是健康狀態的一個重要指標,也是我們了解自己體重與身高關係的一個重要工具。基於這個想法,我們帶來了這款簡單易用的身高和體重BMI計算器,幫助您更清晰地了解自己的身體狀況。


功能
這裡我們會做出一個簡單的BMI計算器,功能會如同畫面顯示一樣,不過在這邊聲明一下因為沒有做防呆,所以書入數字以外的字的話是會散退的喔

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
    tools:context=".MainActivity">

    <LinearLayout
        android:layout_width="404dp"
        android:layout_height="551dp"
        android:layout_marginTop="88dp"
        android:orientation="vertical"
        android:gravity="center"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.428"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <TextView
            android:id="@+id/textView3"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:text="計算BMI"
            android:textColor="@color/black"
            android:gravity="center"
            android:textSize="34sp" />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:orientation="horizontal">

            <TextView
                android:id="@+id/textView4"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:text="身高(cm)"
                android:gravity="center"
                android:textColor="@color/black"
                android:textSize="24sp" />

            <EditText
                android:id="@+id/editTextTextPersonName"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:ems="10"
                android:inputType="textPersonName" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:orientation="horizontal">

            <TextView
                android:id="@+id/textView2"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:text="體重(kg)"
                android:gravity="center"
                android:textColor="@color/black"
                android:textSize="24sp" />

            <EditText
                android:id="@+id/editTextTextPersonName2"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:ems="10"
                android:inputType="textPersonName" />
        </LinearLayout>

        <Button
            android:id="@+id/button"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:text="計算" />

        <TextView
            android:id="@+id/textView5"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="2"
            android:gravity="center"
            android:text="您的BMI"
            android:textColor="@color/black"
            android:textSize="24sp" />

        <TextView
            android:id="@+id/textView7"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="2"
            android:gravity="center"
            android:textSize="24sp" />

        <TextView
            android:id="@+id/textView6"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="2"
            android:gravity="center"
            android:textSize="24sp" />

    </LinearLayout>

</androidx.constraintlayout.widget.ConstraintLayout>

Java 程式碼(code)

package com.example.demo;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import java.math.BigDecimal;
import java.text.DecimalFormat;

public class MainActivity extends AppCompatActivity {

    EditText editText;
    EditText editText2;
    TextView textView7; //輸出文字 適中 過胖等.....
    TextView textView6;
    Button button;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ById();//綁定元件
        confirm_button();//計算按鈕
    }
    //綁定元件
    public void ById(){
        editText = findViewById(R.id.editTextTextPersonName);  //身高
        editText2 = findViewById(R.id.editTextTextPersonName2);//體重
        textView7 = findViewById(R.id.textView7); //輸出文字 適中 過胖等.....
        textView6 = findViewById(R.id.textView6); //輸出BMI數值
        button = findViewById(R.id.button);
    }
    //計算按鈕
    public void confirm_button(){
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                float number_high = Float.parseFloat(editText.getText().toString())/100;
                float number_weight =  Float.parseFloat(editText2.getText().toString());
                float BMI = number_weight / (number_high * number_high);
                DecimalFormat decimalFormat = new DecimalFormat("#.##");
                String result = decimalFormat.format(BMI);

                if(BMI < 18.5){
                    textView7.setText("過輕");
                }
                else if(18.5 <= BMI && BMI < 24){
                    textView7.setText("適中");
                }
                else if(24 <= BMI && BMI < 27){
                    textView7.setText("過重");
                }
                else{
                    textView7.setText("肥胖");
                }
                textView6.setText(result);
            }
        });
    }
}

函式
在這裡我用到了我自定義的函式,包含了ById()和confirm_button它們的功能介紹如下

  • 注意(Notice):這函式的寫法是我個人習慣,不是說一定要這樣寫,大家可以按自己的習慣去寫code。
  1. confirm_button():它是用來做BMI計算使用的
public void confirm_button(){
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                float number_high = Float.parseFloat(editText.getText().toString())/100;
                float number_weight =  Float.parseFloat(editText2.getText().toString());
                float BMI = number_weight / (number_high * number_high);
                DecimalFormat decimalFormat = new DecimalFormat("#.##");
                String result = decimalFormat.format(BMI);

                if(BMI < 18.5){
                    textView7.setText("過輕");
                }
                else if(18.5 <= BMI && BMI < 24){
                    textView7.setText("適中");
                }
                else if(24 <= BMI && BMI < 27){
                    textView7.setText("過重");
                }
                else{
                    textView7.setText("肥胖");
                }
                textView6.setText(result);
            }
        });
    }
  • 在這裡我們可以看到宣告用到的變數和BMI的計算公式是 BMI = 體重(kg)/身高(m)^2 ,要注意的是因為是取到小數點第二位,所以特別用了這個方法,它是可以將小數抓到第二位的方式。
                DecimalFormat decimalFormat = new DecimalFormat("#.##");
                String result = decimalFormat.format(BMI);
  • 這是判斷BMI是否過重過輕或適中的判斷條件
                if(BMI < 18.5){
                    textView7.setText("過輕");
                }
                else if(18.5 <= BMI && BMI < 24){
                    textView7.setText("適中");
                }
                else if(24 <= BMI && BMI < 27){
                    textView7.setText("過重");
                }
                else{
                    textView7.setText("肥胖");
                }
  1. ById():用來綁定元件
//綁定元件
    public void ById(){
        editText = findViewById(R.id.editTextTextPersonName);  //身高
        editText2 = findViewById(R.id.editTextTextPersonName2);//體重
        textView7 = findViewById(R.id.textView7); //輸出文字 適中 過胖等.....
        textView6 = findViewById(R.id.textView6); //輸出BMI數值
        button = findViewById(R.id.button);
    }

上一篇
Day9 - Tosta 和 AlertDialog使用方法
下一篇
Day11 - Spinner的新增方式
系列文
Android studio使用過程與開發說明30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言