이미지,컴파운드버튼 실습

suyeon lee·2021년 3월 31일

안드로이드

목록 보기
5/10

xml화면 만들기

<?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"
    tools:context=".MainActivity"
    android:orientation="vertical"
    android:padding="20dp"
    >

    <TextView
        android:id="@+id/Text1"
        android:text="선택을 시작하겠습니까?"
        android:layout_height="wrap_content"
        android:layout_width="match_parent" />

    <Switch
        android:id="@+id/ChkAgree"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="시작함"/>
    <TextView
        android:id="@+id/Text2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="좋아하는 안드로이드 버전은?"
        android:visibility="invisible"
        />
    <RadioGroup
        android:id="@+id/Rgroup1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:visibility="invisible">
        <RadioButton
            android:id="@+id/RdoOreo"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="오레오(8.0)"/>

        <RadioButton
            android:id="@+id/RdoPie"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="파이(9.0)"/>

        <RadioButton
            android:id="@+id/RdoQ"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Q(10.0)"/>
    </RadioGroup>
    <ImageView
        android:id="@+id/ImgPet"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:visibility="invisible"/>
    <Button
        android:id="@+id/btn1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:visibility="invisible"
        android:text="종료"/>

    <Button
        android:id="@+id/btn2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:visibility="invisible"
        android:text="처음으로"/>

</LinearLayout>

1단계 코틀린 객체 만들기

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        //1.코틀린 객체 만들기
        var text1 : TextView
        var text2 : TextView
        var ChkAgree : Switch
        var rGroup1 : RadioGroup
        var rdoOreo : RadioButton
        var rdoPie : RadioButton
        var rdoQ : RadioButton
        var imgPet : ImageView

        var btn1 : Button
        var btn2 : Button

2단계 xml객체를 코틀린 객체에 연결(바인딩)

text1 = findViewById<TextView>(R.id.Text1)
        ChkAgree = findViewById<Switch>(R.id.ChkAgree)

        text2 = findViewById<TextView>(R.id.Text2)
        rGroup1 = findViewById<RadioGroup>(R.id.Rgroup1)
        rdoOreo = findViewById<RadioButton>(R.id.RdoOreo)
        rdoPie = findViewById<RadioButton>(R.id.RdoPie)
        rdoQ = findViewById<RadioButton>(R.id.RdoQ)

        imgPet = findViewById<ImageView>(R.id.ImgPet)

        btn1 = findViewById(R.id.btn1)
        btn2 = findViewById(R.id.btn2)

3단계 작업 ->이벤트 처리
3.1단계 Switch 누르면 이벤트 일어남
//isCecked는 Boolean이기 때문에 isCecked = true 임

ChkAgree.setOnCheckedChangeListener{ buttonView, isChecked ->
	if(isChecked){// checked 상태이면
    	text2.visibility = android.view.View.VISIBLE
                rGroup1.visibility = android.view.View.VISIBLE
                imgPet.visibility = android.view.View.VISIBLE
                btn1.visibility = android.view.View.VISIBLE
                btn2.visibility = android.view.View.VISIBLE
    }
    else{//checked가 해지된 상태이면
    	        text2.visibility = android.view.View.INVISIBLE
                rGroup1.visibility = android.view.View.INVISIBLE
                imgPet.visibility = android.view.View.INVISIBLE
                btn1.visibility = android.view.View.INVISIBLE
                btn2.visibility = android.view.View.INVISIBLE
    }
}

3.2단계 라디오 버튼 눌렀을때 이벤트 일어남

첫번째 방식

rGroup1.setOnCheckedChangeListener { group, checkedId ->
        when(rGroup1.checkedRadioButtonId){
               R.id.RdoOreo ->imgPet.setImageResource(R.drawable.oreo)
               R.id.RdoPie ->imgPet.setImageResource(R.drawable.pie)
               R.id.RdoQ ->imgPet.setImageResource(R.drawable.q10)
           }
        }

두번째 방식

        rdoOreo.setOnClickListener {
            imgPet.setImageResource(R.drawable.oreo)
        }
        rdoPie.setOnClickListener {
            imgPet.setImageResource(R.drawable.pie)
        }
        rdoQ.setOnClickListener {
            imgPet.setImageResource(R.drawable.q10)
        }

3.3단계 종류 클릭시 응용프로그램 종료

  • 난 검색해서 System.exit(0) 사용했는데
    강제 종료처럼 프로그램 종료됨
    finish()사용하면 뭔가 부드럽게 종료되는 느낌..?
btn1.setOnClickListener{
	finish()
}

3.4단계 처음으로 클릭시 초기화

  • 이미지 초기화 못하고있었는데 간단쓰~!~!
    setImageResource(0) = 이미지가 없다
  btn2.setOnClickListener {
            ChkAgree.isChecked = false
            rGroup1.clearCheck()
            imgPet.setImageResource(0)
        }

0개의 댓글