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 | 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만 올리겠습니다.
'프로그래밍 > Java, Android' 카테고리의 다른 글
(안드로이드) 업그레이드된 계산기 프로그램 (0) | 2016.07.10 |
---|---|
(Eclipse) Class Diagram 사용하기 (0) | 2016.07.10 |
(안드로이드) 방향 센서(Orientation Sensor)을 이용한 Simple Application (2) (0) | 2016.07.10 |
(안드로이드) 방향 센서 값 알아보기위한 Simple Application (0) | 2016.07.10 |
(안드로이드) Bluetooth를 이용한 Image 파일 전송하는 Simple Application (0) | 2016.07.10 |