레쭈고 코틀린

Kotlin 6차시

정땅미 2024. 9. 27. 02:13

코틀린은 매일 배우는 걸 복습하며 새로운 걸 조금씩 배워가는 방식으로 진행되는데용

오늘은 무엇을 배웠냐면!!!!!! 버튼을 눌렀을 때 이벤트에 대해서 더 배웠습니당.

 

우선 xml 코드에서 매일 하던대로 2 개의 버튼과 하나의 TextView 를 만듭니다.

<Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="버튼1"
        android:id="@+id/btn1" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="버튼2"
        android:onClick="click2"
        android:id="@+id/btn2" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="처리 결과"
        android:id="@+id/txtResult" />

 

이렇게 xml 파일에 작성을 해주셨으면, kt 코드로 넘어가서 이벤트 처리를 해줍니다.

lateinit var btn1 : Button
    lateinit var btn2 : Button
    lateinit var txtResult : TextView
    var cnt : Int = 0

 btn1 = findViewById<Button>(R.id.btn1)
        txtResult = findViewById<TextView>(R.id.txtResult)

        btn1.setOnClickListener {
            cnt++
            txtResult.setText("버튼 1이 클릭~~" + cnt)
        }
    }
    public fun click2(view : View) {
        btn2 = findViewById<Button>(R.id.btn2)
        cnt++
        btn2.text = "버튼 2가 클릭~~"
        txtResult.text = "버튼 2가 클릭~~" + cnt

 

처음에는 기존에 배운대로 변수 지정을 해줍니다!

var btn1 = findViewById<Button>(R.id.btn1) 코드에서 이 부분은

<Button> 타입의 R.id.btn1 의 아이디를 가진 요소를 btn1 에 넣어라 라는 의미입니당.

btn1.setOnClickListener { txtResult.setText("버튼 1이 클릭~~") } 이 부분은 btn1 이 클릭되었을 때의 이벤트를 처리를 해주는 코드입니다.
txtResult 가 가지고 있는 속성 중 Text 를 "버튼 1이 클릭!!" 으로 바꿔주기 위해 이러한 코드를 씁니다.
바로 그 텍스트를 바꿔주는 게 setText 입니닷.

 

public fun click2(view : View) {
        var btn2 = findViewById<Button>(R.id.btn2)
        btn2.text = "버튼 2가 클릭~~"
    }
이  function 은 제가 public 으로 지정해 줬기 때문에 모두가 사용할 수 있습니다.

btn2.text 를 해줄 수 있는 이유는 xml 에서 android:onClick="click2" 이것을 해주었기 때문입니다.

함수의 이름은 onClick 의 이름과 같아야 한다는 것을 꼭 기억해 주세요!!
그리고 cnt 변수는 count 를 측정하기 위해서 그냥 추가한 코드입니닷ㅎ.ㅎ

 

그리고 오늘은 RadioButton 중 뭘 누르냐에 따라서 이미지를 바꿔주었는데유

나머지 코드는 거의 비슷하고, 새로운 코드만 삽입하자면 

// xml
<RadioGroup
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/Rgroup1">
        <RadioButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/gang"
            android:text = "강아지" />
        <RadioButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/go"
            android:text = "고양이" />
        <RadioButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/to"
            android:text = "토끼" />
    </RadioGroup>

<ImageView
        android:src="@drawable/gang"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/img" />
           
// kt
btnOk.setOnClickListener {
            if (rdoDog.isChecked)
                imgPet.setImageResource(R.drawable.gang)
            if (rdoGo.isChecked)
                imgPet.setImageResource(R.drawable.go)
            if (rdoTo.isChecked)
                imgPet.setImageResource(R.drawable.to)
        }

 

이렇게 RadioButton 을 RadioGroup 으로 묶은 것과 이미지를 가져오는 부분이었어요!

우선 Radio 버튼을 그룹으로 묶어주지 않으면 만드는 RadioButton 중에서 하나 밖에 선택을 못 합니다.
즉 남녀에서 한 개 선택, 학년에서 한 개 선택을 해야 하면 남녀를 하나의 그룹, 학년을 하나의 그룹으로 만들어 줘야 해요!

그렇지 않으면 저 중에서 한 개 밖에 선택이 안 됩니당. 그래서 그룹으로 묶어주는 게 아주아주 중요합니닷.

 

그리고 저는 이미지 확장자를 jpg 밖에 지원을 안 해주더라구요... 그래서 jpg 로 확장자를 변경해 준 이미지를 drawable 폴더에 넣었씁니닷!

그래서 이미지를 불러올 땐

android:src="@drawable/gang"

 

이런 식으로 가져옵니당.

 

이제 kt 부분의 코드를 보면,

btnOk.setOnClickListener {
    if (rdoDog.isChecked)
        imgPet.setImageResource(R.drawable.gang)
    if (rdoGo.isChecked)
        imgPet.setImageResource(R.drawable.go)
    if (rdoTo.isChecked)
        imgPet.setImageResource(R.drawable.to)
}

 

이 부분이 가장 새로웠는데요!

 isChecked 로 만약 ~ 가 체크되어 있으면 이라는 의미라고 합니닷.

이때의 결괏값을 true 또는 false 인 boolean 값이 나와요!!

체크가 되어 있다면 즉, true 라면 setImageResource 를 통해(이것은 src 의 풀명칭) 해당하는 이미지를 가져오시면 됩니다!

 

오늘은 코틀린 수업을 꽉 차게 많이 해서 진도를 많이 나간 줄 알았는데 복습까지 하다 보니 엄청 많이 나간 것 아니었네요!!

그래도 오늘 새로 안 게 많아서 너무너무 좋습니당.

이를 이용한 아주 작은 프로젝트도 시험이 끝나면 만들어보고 싶어요! 이제 진짜 시험 공부를 해야 하므로.... 이만..... 여기서 마무리하겠습니당.

읽어주셔서 감사해요 (* ̄3 ̄)╭

'레쭈고 코틀린' 카테고리의 다른 글

Kotlin 8차시  (3) 2024.10.23
Kotlin 7차시  (3) 2024.10.21
Kotlin 5차시  (0) 2024.09.26
Kotlin 4차시  (3) 2024.09.13
Kotlin 3차시  (1) 2024.09.06