Dev/Android
Android (이미지뷰, 이미지버튼, 속성, drawable, 애완동물 사진 앱, 연습문제, 라디오버튼 이벤트 등록, 이미지 출력, 안드로이드 버전 이미지 앱)
Walker_
2024. 4. 18. 17:06
1. 이미지뷰, 이미지버튼
- 속성
- fitXY : 가로세로 상관없이 레이아웃의 각면의 꽉 차게 출력
- fitCenter : 가로세로 길이 중간에 맞게 출력
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:background="#ffffff"
android:src="@drawable/q10"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:src="@drawable/q10"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:background="#ffffff"
android:scaleType="fitXY"
android:src="@drawable/q10"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:background="#ffffff"
android:scaleType="fitCenter"
android:src="@drawable/q10"/>
</LinearLayout>
2. 애완동물 사진 보기 앱 만들기
- cat, dog, rabbit 이미지 drawable 폴더에 추가
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="#F2F6ED"
android:padding="30dp"
tools:context=".MainActivity">
<TextView
android:id="@+id/textView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="선택을 시작하겠습니까?"
/>
<CheckBox
android:id="@+id/checkBoxAgree"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="시작함"/>
<TextView
android:id="@+id/textView02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="invisible"
android:text="좋아하는 애완동물은?" />
<RadioGroup
android:id="@+id/radioGroup"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="invisible">
<RadioButton
android:id="@+id/radioButtonDog"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="강아지"/>
<RadioButton
android:id="@+id/radioButtonCat"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="고양이"/>
<RadioButton
android:id="@+id/radioButtonRabbit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="토끼"/>
</RadioGroup>
<Button
android:id="@+id/btnOK"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="선택완료"
android:visibility="invisible"
/>
<ImageView
android:id="@+id/imgPet"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="invisible"
/>
</LinearLayout>
1) 변수 선언
lateinit var textView01: TextView
lateinit var checkBoxAgree : CheckBox
lateinit var textView02: TextView
lateinit var radioGroup: RadioGroup
lateinit var radioButtonDog : RadioButton
lateinit var radioButtonCat : RadioButton
lateinit var radioButtonRabbit : RadioButton
lateinit var btnOK : Button
lateinit var imgPet : ImageView
2) 변수 ID 할당
textView01 = findViewById(R.id.textView01)
checkBoxAgree = findViewById(R.id.checkBoxAgree)
textView02 = findViewById(R.id.textView02)
radioGroup = findViewById(R.id.radioGroup)
radioButtonDog = findViewById(R.id.radioButtonDog)
radioButtonCat = findViewById(R.id.radioButtonCat)
radioButtonRabbit = findViewById(R.id.radioButtonRabbit)
btnOK = findViewById(R.id.btnOK)
imgPet = findViewById(R.id.imgPet)
3) 시작 체크 여부에 따라 요소 출력 이벤트 등록
// 시작 체크 켜짐 안 켜짐 이벤트 등록
checkBoxAgree.setOnCheckedChangeListener { buttonView, isChecked ->
if (isChecked) {
textView02.visibility = View.VISIBLE
radioGroup.visibility = View.VISIBLE
btnOK.visibility = View.VISIBLE
imgPet.visibility = View.VISIBLE
} else {
textView02.visibility = View.INVISIBLE
radioGroup.visibility = View.INVISIBLE
btnOK.visibility = View.INVISIBLE
imgPet.visibility = View.INVISIBLE
}
}
4) '선택완료'를 클릭하면 동작하는 리스너를 정의
// '선택완료'를 클릭하면 동작하는 리스너를 정의
btnOK.setOnClickListener {
when (radioGroup.checkedRadioButtonId) {
R.id.radioButtonDog -> imgPet.setImageResource(R.drawable.dog)
R.id.radioButtonCat -> imgPet.setImageResource(R.drawable.cat)
R.id.radioButtonRabbit -> imgPet.setImageResource(R.drawable.rabbit)
else -> Toast.makeText(applicationContext,
"동물을 먼저 선택하세요", Toast.LENGTH_SHORT).show()
}
}
5) 전체 코드
package kr.jeongmo.animal_project
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.*
class MainActivity : AppCompatActivity() {
// 변수 선언
lateinit var textView01: TextView
lateinit var checkBoxAgree : CheckBox
lateinit var textView02: TextView
lateinit var radioGroup: RadioGroup
lateinit var radioButtonDog : RadioButton
lateinit var radioButtonCat : RadioButton
lateinit var radioButtonRabbit : RadioButton
lateinit var btnOK : Button
lateinit var imgPet : ImageView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
title = "Animal Gallery"
// 변수 Id 할당
textView01 = findViewById(R.id.textView01)
checkBoxAgree = findViewById(R.id.checkBoxAgree)
textView02 = findViewById(R.id.textView02)
radioGroup = findViewById(R.id.radioGroup)
radioButtonDog = findViewById(R.id.radioButtonDog)
radioButtonCat = findViewById(R.id.radioButtonCat)
radioButtonRabbit = findViewById(R.id.radioButtonRabbit)
btnOK = findViewById(R.id.btnOK)
imgPet = findViewById(R.id.imgPet)
// 시작 체크 켜짐 안 켜짐 이벤트 등록
checkBoxAgree.setOnCheckedChangeListener { buttonView, isChecked ->
if (isChecked) {
textView02.visibility = View.VISIBLE
radioGroup.visibility = View.VISIBLE
btnOK.visibility = View.VISIBLE
imgPet.visibility = View.VISIBLE
} else {
textView02.visibility = View.INVISIBLE
radioGroup.visibility = View.INVISIBLE
btnOK.visibility = View.INVISIBLE
imgPet.visibility = View.INVISIBLE
}
}
// '선택완료'를 클릭하면 동작하는 리스너를 정의
btnOK.setOnClickListener {
when (radioGroup.checkedRadioButtonId) {
R.id.radioButtonDog -> imgPet.setImageResource(R.drawable.dog)
R.id.radioButtonCat -> imgPet.setImageResource(R.drawable.cat)
R.id.radioButtonRabbit -> imgPet.setImageResource(R.drawable.rabbit)
else -> Toast.makeText(applicationContext,
"동물을 먼저 선택하세요", Toast.LENGTH_SHORT).show()
}
}
}
}
3. 연습문제
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="30dp"
android:background="#F2F6ED"
tools:context=".Switch_MainActivity">
<TextView
android:id="@+id/textView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="선택을 시작하겠습니까?"
/>
<Switch
android:id="@+id/switchAgree"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="시작함"/>
<TextView
android:id="@+id/textView02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="invisible"
android:text="좋아하는 안드로이드 버전은?" />
<RadioGroup
android:id="@+id/radioGroup02"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="invisible">
<RadioButton
android:id="@+id/androidOreo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="OREO"/>
<RadioButton
android:id="@+id/androidPie"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="PIE"/>
<RadioButton
android:id="@+id/androidQ10"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Q10"/>
</RadioGroup>
<ImageView
android:id="@+id/imgAndroid"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="invisible"
/>
<Button
android:id="@+id/btnEnd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="종료"
android:visibility="invisible"
/>
<Button
android:id="@+id/btnRe"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="처음으로"
android:visibility="invisible"
/>
</LinearLayout>
package kr.jeongmo.animal_project
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.*
class Switch_MainActivity : AppCompatActivity() {
// 변수 선언
lateinit var textView01 : TextView
lateinit var switchAgree : Switch
lateinit var textView02 : TextView
lateinit var radioGroup02 : RadioGroup
lateinit var androidOreo : RadioButton
lateinit var androidPie : RadioButton
lateinit var androidQ10 : RadioButton
lateinit var imgAndroid : ImageView
lateinit var btnEnd : Button
lateinit var btnRe : Button
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_switch_main)
title = "Android Favorite Version"
// 변수 Id 할당
textView01 = findViewById(R.id.textView01)
switchAgree = findViewById(R.id.switchAgree)
textView02 = findViewById(R.id.textView02)
radioGroup02 = findViewById(R.id.radioGroup02)
androidOreo = findViewById(R.id.androidOreo)
androidPie = findViewById(R.id.androidPie)
androidQ10 = findViewById(R.id.androidQ10)
imgAndroid = findViewById(R.id.imgAndroid)
btnEnd = findViewById(R.id.btnEnd)
btnRe = findViewById(R.id.btnRe)
// 스위치로 요소 출력 이벤트 등록
switchAgree.setOnCheckedChangeListener { buttonView, isChecked ->
if (isChecked) {
textView02.visibility = View.VISIBLE
radioGroup02.visibility = View.VISIBLE
imgAndroid.visibility = View.VISIBLE
btnEnd.visibility = View.VISIBLE
btnRe.visibility = View.VISIBLE
} else{
textView02.visibility = View.INVISIBLE
radioGroup02.visibility = View.INVISIBLE
imgAndroid.visibility = View.INVISIBLE
btnEnd.visibility = View.INVISIBLE
btnRe.visibility = View.INVISIBLE
}
}
// 라디오 버튼 이벤트 등록 (클릭 시 해당 이미지 출력함)
androidOreo.setOnClickListener {
imgAndroid.setImageResource(R.drawable.oreo)
}
androidPie.setOnClickListener {
imgAndroid.setImageResource(R.drawable.pie)
}
androidQ10.setOnClickListener {
imgAndroid.setImageResource(R.drawable.q10)
}
btnEnd.setOnClickListener {
finish()
}
btnRe.setOnClickListener {
switchAgree.isChecked = false
imgAndroid.setImageResource(0)
radioGroup02.clearCheck()
}
}
}
공부 과정을 정리한 것이라 내용이 부족할 수 있습니다.
부족한 내용은 추가 자료들로 보충해주시면 좋을 것 같습니다.
읽어주셔서 감사합니다 :)