상세 컨텐츠

본문 제목

코틀린 사용한 안드로이드 앱2

안드로이드+드론 제작

by 김일국 2019. 11. 15. 13:02

본문

지난번 안드로이드 앱 기술보완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")
}
}

작업한 소스:

TimeCalculator.zip

코틀린 공부:

- 온라인 작업툴URL: https://play.kotlinlang.org/

- 유투브 강좌: https://www.youtube.com/playlist?list=PLQdnHjXZyYadiw5aV3p6DwUdXV2bZuhlN

TimeCalculator.zip
0.67MB

관련글 더보기

댓글 영역