iT邦幫忙

2023 iThome 鐵人賽

DAY 12
0

目錄

  1. 專案需求
  2. 外觀處理
  3. 程式撰寫

正文

不知道大家猜到了嗎!今天要來做 BMI 博士,其實就是正常的計算 BMI 的功能,但為什麼叫 Dr. BMI 這個就要說到我大學的程式老師,這個老師每次上機考都考很難,所以就有一次考試前我們求老師能不能考一題 BMI,老師說可以,結果題目是 BMI 博士在做最短路徑的星際旅行,看到題目差點哭出來QwQ。

專案需求

好的,這是我們第一次製作一個專案!這個專案叫做選號機,以下是功能介紹:

  1. 希望可以透過這個 APP 計算 BMI
  2. 畫面要有兩個 Plain Text 、一個 TextView 和一個 Button
  3. 畫面 Plain Text 初始字樣分別是身高、體重
  4. 畫面 TextView 初始字樣為請輸入身體與體重
  5. 畫面 Button 初始字樣為計算 BMI
  6. 當按下按鈕後 TextView 就會顯示 BMI 以及是否過輕、過胖
    1. 若 BMI 小於18.5 要顯示過輕
    2. 若 BMI 大於 24 要顯示過胖

外觀處理

  1. 這邊我沿用昨天的兩個 Plain Text 和一個 Button
    https://ithelp.ithome.com.tw/upload/images/20230927/201623874GCt0pdV0x.png

  2. 新增一個 TextView,使用昨天的技巧把它放在一個舒服的位置
    https://ithelp.ithome.com.tw/upload/images/20230927/20162387kMqOLM0opL.png

  3. 加入 textSize 修改字體大小並且修改 text 的參數為請輸入身高體重

    <TextView
            android:id="@+id/textView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="5dp"
            android:text="請輸入身高體重"
            android:textSize="24sp"
            app:layout_constraintBottom_toTopOf="@+id/editTextText"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent" />
    
  4. 修改 Plain Text 的 Text
    https://ithelp.ithome.com.tw/upload/images/20230927/20162387qNt9Q013rY.png

  5. 這些提及一個小事情,大家應該有注意到 Plain Text 有紅色的驚嘆號,上面寫著 Touch target size too small,這邊要提到一個名詞叫觸控目標大小,也就是說這個警告的意思是使用者可以點到這個輸入框的面積小時輸入框實際的面積大小,因此我們需要修改 minHeight 這個參數,數值可以自己調整

    <EditText
    		android:id="@+id/editTextText"
    		android:layout_width="0dp"
    		android:layout_height="wrap_content"
    		android:layout_marginTop="290dp"
    		android:minHeight="50dp"
    		android:ems="10"
    		android:inputType="text"
    		android:text="身高(cm)"
    		app:layout_constraintEnd_toEndOf="parent"
    		app:layout_constraintStart_toStartOf="parent"
    		app:layout_constraintTop_toTopOf="parent" />
    
    <EditText
    		android:id="@+id/editTextText2"
    		android:layout_width="0dp"
    		android:layout_height="wrap_content"
    		android:layout_marginTop="11dp"
    		android:minHeight="50dp"
    		android:ems="10"
    		android:inputType="text"
    		android:text="體重(kg)"
    		app:layout_constraintEnd_toEndOf="parent"
    		app:layout_constraintStart_toStartOf="@+id/editTextText"
    		app:layout_constraintTop_toBottomOf="@+id/editTextText" />
    
  6. 點擊 RUN app 檢查排版有沒有跑掉,沒有的話就可以開始寫程式囉

程式撰寫

還是要聲明一下,程式僅供參考。

  1. 這次我是用 class 的方式撰寫程式,我們先寫一個 BMI 的 class,然後想想這個 BMI 計算器應該要有甚麼 methon

    class Bmi(val height: Double, val weight: Double){
        private var _height: Double = height
        private var _weight: Double = weight
    
        /.../
    }
    
  2. 按照邏輯來說肯定要有一個 calculate 的 methon 用來計算 BMI

    public fun calculate(): Double{
        _height = pow(changeUnit(_height))
        return _weight/_height
    }
    
  3. 由於要將轉換身高的單位以及次方,所以我另外寫個兩個 methon 處理這件事情

    public fun changeUnit(value: Double): Double{
        return value/100
    }
    
    public fun pow(value: Double): Double{
        return value*value
    }
    

總結

下集待續,抱歉啦今天內容有點少,為了趕 C# 的作業寫到腦袋有點痛,所以今天的程式先寫到這邊,剩下的明天再說!

下一篇會把 BMI 博士做完,並且會加一些酷炫的功能上去。

參考資料

書籍:深入淺出 Kotlin


上一篇
Day.11 學習 XML 中級練習班 - 簡易排版
下一篇
Day.13 小專案練習(BMI 博士)- 2
系列文
剛學Kotlin的我想要玩安卓開發,自學 Android Studio 30 天31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言