지난번 안드로이드 앱 기술보완1~3 - 웹브라우저앱 만들기에 이어서 코틀린 사용한 안드로이드 앱을 만들어 보았습니다.
- 작업툴: 안드로이드 스튜디오 3.5.1
- 개발언어: 코틀린(kotlin_version = '1.3.41') 이번에 처음 사용해 봅니다.
- 타켓빌드: api버전 29, minSdkVersion 19.
- 타켓 ADB테스트기기: 삼성 캘럭시 S1 (키캣4.4.4, 안드로이드API 19버전)
작업소스: #안드로이드 생존코딩 책(한빛미디어) 참조 https://www.youtube.com/watch?v=p4MBa8PpknA
코틀린앱_비만도계산기(아래)
핵심소스:
MainActivity.kt(아래-Null체크 후 함수를 빠져나갈때 return 사용법이 특이 하네요...)
package biz.time_space.timecalculator
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.preference.PreferenceManager
import android.text.TextUtils
import kotlinx.android.synthetic.main.activity_main.*
import org.jetbrains.anko.toast
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
loadData()
resultButton.setOnClickListener label@{
if (TextUtils.isEmpty(keyEditText.getText()) || TextUtils.isEmpty(weightEditText.getText())) {
toast("빈 값으로 진행 할 수 없습니다.")
return@label //함수명으로 resultButton.setOnClickListener 대체 가능
}
saveData(
keyEditText.text.toString().toInt(),
weightEditText.text.toString().toInt()
)
startActivity(Intent(this, ResultActivity::class.java).apply {
putExtra("height", keyEditText.text.toString())
putExtra("weight", weightEditText.text.toString())
})
}
}
private fun loadData() {
val pref = PreferenceManager.getDefaultSharedPreferences(this)
val height = pref.getInt("KEY",0)
val weight = pref.getInt("WEIGHT",0)
if (height != 0 && weight != 0) {
keyEditText.setText(height.toString())
weightEditText.setText(weight.toString())
}
}
private fun saveData(height: Int, weight: Int) {
val pref = PreferenceManager.getDefaultSharedPreferences(this)
val editor = pref.edit()
editor.putInt("KEY", height)
.putInt("WEIGHT", weight)
.apply()
}
}
코틀린언어에서의 로컬 리턴처리 사용참조: http://blog.naver.com/PostView.nhn?blogId=yuyyulee&logNo=221390355858&parentCategoryNo=&categoryNo=22&viewDate=&isShowPopularPosts=true&from=search
ResultActivity.kt 소스(아래)
class ResultActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_result)
val height = intent.getStringExtra("height").toInt()
val weight = intent.getStringExtra("weight").toInt()
toast("$height, $weight")
//비만도 계산
val 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_sentiment_very_dissatisfied_black_24dp)
bmi >= 18.5 ->
imageView.setImageResource(
R.drawable.ic_sentiment_satisfied_black_24dp)
else ->
imageView.setImageResource(
R.drawable.ic_sentiment_dissatisfied_black_24dp)
}
// 토스트 메시지로 BMI 값 표시
toast("$bmi")
}
}
작업한 소스:
코틀린 공부:
- 온라인 작업툴URL: https://play.kotlinlang.org/
- 유투브 강좌: https://www.youtube.com/playlist?list=PLQdnHjXZyYadiw5aV3p6DwUdXV2bZuhlN
유니티엔진으로 만든 2D게임 분석하기_1 (0) | 2020.11.29 |
---|---|
안드로이드 스튜디오 4.0.1 에서 VCS사용 (0) | 2020.10.14 |
안드로이드 앱 기술보완_3 (0) | 2019.11.06 |
안드로이드 앱 기술보완_2 (0) | 2019.11.04 |
안드로이드 앱 기술보완_1 (0) | 2019.11.03 |
댓글 영역