iT邦幫忙

2023 iThome 鐵人賽

DAY 7
0
Mobile Development

Android Studio開發過程和介紹系列 第 7

【DAY 07】 怎麼製作屬於你的BMI計算機!

  • 分享至 

  • xImage
  •  

前言

上一篇提到要將TextView、EditText、Button,這三個物件做結合製做出屬於自己的BMI計算機,這邊也歡迎各位可以先自己製作,之後再來參考看看我的寫法,我認為像這樣有個目標可以做,可以更加有效的增加寫程式的熟練度,事不宜遲下面就開始介紹怎麼做吧~

執行結果:

  • 開始設計

這邊附上這次的Github,我將java檔跟布局檔都放那裡了去尋找吧!

  • 布局檔位置 : BMI > app > src > main > res > layout
  • java檔位置 : BMI > app > src > main > java/com/example/bmidemo

這次的設計我有簡單引用了Drawble資源,做一個簡單的外框稍微區分一下各個物件的位置,下面會大概介紹一下怎麼寫:
首先要新建一個Drawble資源https://ithelp.ithome.com.tw/upload/images/20230904/20161500BOXYquXhO7.png
找到你的drawble,按右鍵點選New,選取Drawble Resource File
之後會跳出這個畫面
https://ithelp.ithome.com.tw/upload/images/20230904/20161500pBT90SQQWX.png
File name:填上檔案的名稱,這邊我是取border,取完名後就可以按下OK
再來附上我的設定

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape>
            <stroke android:color="@color/black"
                android:width="1dp"/>
            <corners android:radius="3dp"/>
            <size android:height="50dp"/>
        </shape>
    </item>
</selector>
  • item定義了一個物件元素,其中有不少參數可以使用,例如之後實作中會使用到的state_selected,這個可以設定物件在被選擇時以及未被選擇時的樣式,比如我可以讓一個物件選擇前是藍底黃字,選擇後變黃底藍字。
  • shape定義了一個物件的形狀,在這個定義之下有一些方法可供使用,這邊列舉幾個比較常看到的:
  1. solid,可以設定物件背景填充顏色。
  2. stroke,可以設定物件的邊框,有寬度、顏色、虛線可以使用。
  3. corners,可以設定物件邊框的弧度,預設是設定四周,但是也可以選擇只設定一角。
  4. size,可以調整這個框線的大小。

引用的方法是在要引用的物件屬性那裡加上background = "@drawable/border",接著就可以看到你的物件多了一個外框囉~

java檔

這邊我就將我主要的部份貼上來,其他細節(宣告變數)就自己去Github翻吧。

calculate.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                height = Float.valueOf(String.valueOf(editTextHeight.getText())) / 100;
                weight = Float.valueOf(String.valueOf(editTextWeight.getText()));

                sum = (float) (Math.round((weight / (height*height))*100)/100.0);
                if(sum<18.5){
                    result.setText("體重過輕\n"+String.valueOf(sum));
                } else if (sum >= 18.5 && sum < 24) {
                    result.setText("體重正常\n"+String.valueOf(sum));
                }
                else{
                    result.setText("體重過重\n"+String.valueOf(sum));
                }
            }
        });

我的calculate就是我的Button,所以這就是按鈕的點擊事件,我在按鈕內寫入抓取高度、重量,然後用sum來存取根據高度和重量計算出的BMI

  • editTextHeight.getText()這裡我將高度的那欄EditText的值取出,最後經過一震型態的轉換,僵直轉換成浮點數型態,後面我除以了100,是因為一般輸入身高時單位通常都是公分,而BMI的計算方式身高是公尺,這邊就將值先轉成浮點數再除以一個100,達到換成公尺的效果,下面的重量也是差不多的寫法。
  • sum這裡我將高度跟重量根據BMI計算的方式計算出來,再用Math的四捨五入的方法取到小數點第二位。
  • 最後if判斷的部分,就是根據網路上定義的範圍去寫,例如:當計算出的值低於18.5時就是過輕,再將訊息丟給TextView去顯示。

今天的實作就到這邊,之後應該也是差不多的模式,先介紹一些物件使用方法或程式的寫法,然後在更後面就將前面所講的結合在一起變成一個小實作,下一篇我會叫紹RecyclerView,這是在使用上很廣泛的一種顯示大量資料的方法。


上一篇
【DAY 06】 TextView、EditText、Button 介紹 (下)
下一篇
【DAY 08】 RecyclerView介紹
系列文
Android Studio開發過程和介紹30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言