비만도 계산을 한 후 결과가 정상인지 비만인지 등에 대한 결과가 나오는 간단한 앱이다.

bmi 지수는 Toast 메세지로 짧게 나온다.

//MainActivity.kt
package com.example.bmicalculator

import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.EditText

class MainActivity : AppCompatActivity() {
    lateinit var resultButton : Button
    lateinit var nameEditText: EditText
    lateinit var heightEditText : EditText
    lateinit var weightEditText : EditText

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        resultButton = findViewById<Button>(R.id.resultButton)
        nameEditText = findViewById<EditText>(R.id.nameEditText)
        heightEditText = findViewById<EditText>(R.id.heightEditText)
        weightEditText = findViewById<EditText>(R.id.weightEditText)

        loadData()

        resultButton.setOnClickListener {
            saveData(nameEditText.text.toString(),
                    heightEditText.text.toString().toInt(),
                    weightEditText.text.toString().toInt())

            var intent = Intent(this, ResultActivity::class.java)

            intent.putExtra("name",nameEditText.text.toString())
            intent.putExtra("height",heightEditText.text.toString())
            intent.putExtra("weight",weightEditText.text.toString())

            startActivity(intent)

        }
    }

    private fun saveData(name: String,height: Int, weight: Int){
        var pref = this.getPreferences(0)
        var editor = pref.edit()

        editor.putString("KEY_NAME",nameEditText.text.toString()).apply()
        editor.putInt("KEY_HEIGHT", heightEditText.text.toString().toInt()).apply() //apply 시 KEY_HEIGHT 키가 선언됨
        editor.putInt("KEY_WEIGHT", weightEditText.text.toString().toInt()).apply()
    }

    private fun loadData(){
        var pref = this.getPreferences(0)
        var name = pref.getString("KEY_NAME","")
        var height = pref.getInt("KEY_HEIGHT",0)
        var weight = pref.getInt("KEY_WEIGHT",0)

        if(height != 0 && weight != 0){ //최초에는 실행하지 않음. 값이 있을 때 실행
            nameEditText.setText(name.toString())
            heightEditText.setText(height.toString())
            weightEditText.setText(weight.toString())
        }
    }
}

 

//ResultActivity.kt
package com.example.bmicalculator

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.ImageView
import android.widget.TextView
import android.widget.Toast

class ResultActivity : AppCompatActivity() {
    lateinit var resultTextView : TextView
    lateinit var imageView : ImageView

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_result)

        resultTextView = findViewById(R.id.resultTextView)
        imageView = findViewById(R.id.imageView)

        var name = intent.getStringExtra("name").toString()
        var height = intent.getStringExtra("height")!!.toInt()
        var weight = intent.getStringExtra("weight")!!.toInt()

        var bmi = weight / Math.pow(height/100.0 , 2.0)

        when{
            bmi >= 35 -> resultTextView.text = "고도 비만"
            bmi >= 30 -> resultTextView.text = "2단계 비만"
            bmi >= 25 -> resultTextView.text = "1단계 비만"
            bmi >= 23 -> resultTextView.text = "과제중"
            bmi >= 18.5 -> resultTextView.text = "정상"
            else -> resultTextView.text = "저체중"
        }

        when{
            bmi >= 23 -> imageView.setImageResource(R.drawable.ic_baseline_mood_bad_24)
            bmi >= 18.5 ->  imageView.setImageResource(R.drawable.ic_baseline_sentiment_satisfied_alt_24)
            else -> imageView.setImageResource(R.drawable.ic_baseline_sentiment_very_dissatisfied_24)
        }

        Toast.makeText(this,"$name's bmi : $bmi",Toast.LENGTH_SHORT).show()

    }
}

 

'Project > Android App' 카테고리의 다른 글

<TeenGü>, 2021 Programming Guru2(Android) 대상 수상작  (0) 2021.08.19
TimerApp  (0) 2021.07.13
StopwatchApp  (0) 2021.07.12

+ Recent posts