CheckBox의 변화는 setOnCheckedChangeListner를 통해 리스너에 등록하여 변화를 감지하고

xml에서 RadioButton을 사용할 땐 RadioGroup 안에 넣어서 그룹핑을 해줘야 한다.


'시작함'의 체크에 변화가 있을 때 isChecked()메소드를 통하여 체크가 되있는지 확인하고

체크가 되있다면 RadioGroup, Button, ImageView를 setVisibility(View.VISIBLE))을 통해 Visible 시키고,

체크가 안되있다면 setVisibility(View.INVISIBLE)을 통해 Invisible 한다.

(Invisible은 공간을 차지하지만 화면에 뜨지 않는 것, visible이 일반적인 상태, 공간도 차지하지않고 화면에도 안뜨게 하고 싶을 땐 gone을 사용하면된다)


선택완료 버튼을 눌렀을 때 RadioGroup 내에 선택된 id값과 RadioButton들의 id값을 Switch~Case문으로 비교하여 그에 맞는 이미지를 setImageResource(R.drawable.이미지이름) 메소드를 통해 ImageView의 그림을 바꾸는데

매개변수로 0을 입력하면 null처리가 되면서 빈공간이 된다.


RadioGroup또한 clearCheck() 메소드를 통해 체크 부분을 해제할 수 있는데

이를 이용하여 초기화 버튼을 눌렀을 때 체크된 RadioButton과 ImageView를 초기화 할 수 있다.


안드로이드 스튜디오 프로젝트의 drawable폴더에 그림을 넣을 땐

원하는 그림을 복사(Ctrl + C 맥은 Command + C)하고 drawable 폴더를 클릭 후 붙여넣기 (Ctrl + v 맥은 Command + v)를 하면 창이 하나 뜬다.

OK버튼을 누르면 바로 넣어지며 그림의 첫글자는 소문자로 해야 잘 작동한다.


MainActivity.java

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
package com.imageselector;
 
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.ImageView;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.Toast;
 
public class MainActivity extends Activity {
    CheckBox chkStart;
    TextView tvInfo;
    RadioGroup rdoGroupPetName;
    RadioButton rdoDog, rdoCat,rdoRabbit;
    Button btnSelected,btnClear;
    ImageView ivPet;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        chkStart=(CheckBox)findViewById(R.id.chkStart);
        tvInfo = (TextView)findViewById(R.id.tvInfo);
        rdoGroupPetName = (RadioGroup)findViewById(R.id.rdoGroup1);
        rdoDog = (RadioButton)findViewById(R.id.rdoDog);
        rdoCat = (RadioButton)findViewById(R.id.rdoCat);
        rdoRabbit = (RadioButton)findViewById(R.id.rdoRabbit);
        btnSelected=(Button)findViewById(R.id.btnSelected);
        btnClear=(Button)findViewById(R.id.btnClear);
        ivPet=(ImageView)findViewById(R.id.ivPet);
 
        chkStart.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
                if(compoundButton.isChecked()){
                    rdoGroupPetName.setVisibility(View.VISIBLE);
                    btnSelected.setVisibility(View.VISIBLE);
                    tvInfo.setVisibility(View.VISIBLE);
                    ivPet.setVisibility(View.VISIBLE);
                    btnClear.setVisibility(View.VISIBLE);
                }
                else{
                    rdoGroupPetName.setVisibility(View.INVISIBLE);
                    btnSelected.setVisibility(View.INVISIBLE);
                    tvInfo.setVisibility(View.INVISIBLE);
                    ivPet.setVisibility(View.INVISIBLE);
                    btnClear.setVisibility(View.INVISIBLE);
                }
            }
        });
        btnSelected.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                switch (rdoGroupPetName.getCheckedRadioButtonId()) {
                    case R.id.rdoDog:
                        ivPet.setImageResource(R.drawable.dog);
                        break;
                    case R.id.rdoCat:
                        ivPet.setImageResource(R.drawable.cat);
                        break;
                    case R.id.rdoRabbit:
                        ivPet.setImageResource(R.drawable.rabbit);
                        break;
                    default:
                        Toast.makeText(getApplicationContext(), "동물을 먼저 선택하세요.", Toast.LENGTH_SHORT).show();
                }
            }
        });
        btnClear.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                rdoGroupPetName.clearCheck();
                chkStart.setChecked(false);
                ivPet.setImageResource(0); //zero is null!
            }
        });
 
    }
 
}
 
 
 
cs


activity_main.xml

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity">
 
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="선택을 시작하겠습니까?" />
 
    <CheckBox
        android:id="@+id/chkStart"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="시작함" />
 
    <TextView
        android:id="@+id/tvInfo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="좋아하는 애완동물은?"
        android:visibility="invisible" />
 
    <RadioGroup
        android:id="@+id/rdoGroup1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:visibility="">
 
        <RadioButton
            android:id="@+id/rdoDog"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="강아지" />
 
        <RadioButton
            android:id="@+id/rdoCat"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="고양이" />
 
        <RadioButton
            android:id="@+id/rdoRabbit"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="토끼" />
 
    </RadioGroup>
 
    <Button
        android:id="@+id/btnSelected"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="선택완료"
        android:visibility="invisible" />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/btnClear"
        android:text="Clear!"
        android:visibility="invisible"/>
    <ImageView
        android:id="@+id/ivPet"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:visibility="invisible" />
 
</LinearLayout>
 
 
 
cs


사진때문에 용량이 많아서 코드와 apk만 올리겠습니다.


app-debug (2).apk


+ Recent posts