
imageView에 사진을 추가하기위해 원하는 사진들을
res\drawable 경로에 저장하였다.
<ImageView
android:id="@+id/imageView2"
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_marginTop="20dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView7"
android:src="@drawable/emo1" />
기본 아바타 사진을 삭제하고 drawable 경로의 사진으로 변경하였다.
android:src="@drawable/사진경로"
프로퍼티를 수정하였다.
layout_width: 가로길이 설정
layout_height: 세로길이 설정

화면을 완성하였으나 아이템들의 아이디가 @+id/textView와 같이 default로 설정되어있다.
모든 아이템 id를 식별하기 좋은 이름으로 설정해보자.
@+id/tv_main_title 와 같이 id를 변경하면
xml 파일에서 textView id를 사용하는 모든곳에서 값들을 수정해주어야한다.
findViewById<View클래스>(View아이디)
코틀린 코드에서 원하는 View에 접근하기위해 findViewById 메소드를 사용한다.
val heightEditText = findViewById<EditText>(R.id.et_height)
val weightEditText = findViewById<EditText>(R.id.et_weight)
val checkButton = findViewById<Button>(R.id.btn_check)
checkButton.setOnClickListener {
// 클릭시 하는 동작설정 (OnClickListener 설정)
}
버튼 클릭 이벤트가 발생하는 경우 버튼 클래스 내부에 정의되어있는 OnClickListener 메소드가 호출된다.
버튼 컴포넌트의 setOnClickListener 메소드를 통해 구체적인 동작을 지정할 수 있다.
btn_back.setOnClickListener {
finish()
}
예를 들어 Result화면에서 finish() 메소드를 호출하면
화면이 종료되고 Main화면으로 이동한다.
if(heightEditText.text.isEmpty())
{
Toast.makeText(this, "신장을 입력해주세요.", Toast.LENGTH_SHORT).show()
return@setOnClickListener
}
사용자 입력이 잘못되었을 경우에 대한 예외처리 코드를 작성하였다.
토스트 메세지를 띄우고 해당 Listener를 종료한다.
return@setOnClickListener
@은 return 대상을 구분해준다. setOnClickListener 함수가 종료된다.
Toast.makeText(this, "메시지", 지속시간).show()
makeText().show() 메소드로 토스트 메세지를 지정하고 화면에 보여줄 수 있다.
Intent(this, Activity클래스이름::class.java)
MainActivity에서 ResultActivity로 전환을 하고자 하면 Intent를 생성해준다. this는 현재 context를 의미한다.
<MainActivity.kt>
val height: Int = heightEditText.text.toString().toInt()
val weight: Int = weightEditText.text.toString().toInt()
val intent = Intent(this, ResultActivity::class.java)
intent.putExtra("height", height)
intent.putExtra("weight", weight)
startActivity(intent)
putExtra 메소드로 다음 Activity에 전달하고자 하는 값들을 (Key, Value)쌍으로 저장해준다.
startActivity(intent객체) 메소드를 호출하면 화면이 전환되는 것을 확인할 수 있다.
<ResultActivity.kt>
val height = intent.getIntExtra("height", 0)
val weight = intent.getIntExtra("weight", 0)
전환된 화면에서는 getExtra 메소드에 Key를 입력하여 데이터 값들을 받아올 수 있다.
val tv_resValue = findViewById<TextView>(R.id.tv_res_value)
val tv_resText = findViewById<TextView>(R.id.tv_res_text)
val iv_image = findViewById<ImageView>(R.id.iv_image)
tv_resValue.text = value.toString()
tv_resText.text = resultText
tv_resText.setTextColor(resColor)
iv_image.setImageResource(resImage)
findViewById로 View 객체들을 불러온 후에
원하는 텍스트, 사진 데이터 값으로 View 객체를 설정했다.
TextView
.text 프로퍼티
.setTextColor(color값) 메소드
ImageView
.setImageResource(image값) 메소드