체크박스, 스위치, 토글, 라디오
1. LinearLayout
1) Component Tree
[1] 사용할 플랫리스트
- CheckBox = 프로그램 이름
- Switch = 클릭 시 키고 끄기
- ToggleButton = 클릭 시 변화
- RadioGroup = 라디오를 묶는 그룹
- RadioButton = 라디오 버튼
[2] LinearLayout의 속성
2. 각 플랫의 속성
1) CheckBox
- 가장 왼쪽 안드로이드폰만 checked에 체크가 되어있다.
- checked는 시작 시 체크가 된 상태이다.
2) Switch
- textOn에 ON, textOff에 OFF를 적어 ON시 불이 들어오는 것을 확인한다.
3) ToggleButton
- 클릭 시 On, Off 바뀌는 것을 확인 할 수가 있다.
4) RadioGroup, RadioButton
- "남자와 여자" 처럼 중복이 불가능 한 곳에
여러 개의 RadioButton을 하나의 RadioGroup으로 묶어서 사용한다.
3. 내부구현
- 버튼을 클릭 시 동작을 해야하기 때문에
[설치폴더]\app\java\com.example.d4tai1.pro20180903A_2[설치 시 설정한 각자의 도메인]\MainActivity.java 에 구현
1) 구현 소스
package com.example.d4tai1.pro20180903a_2; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.MotionEvent; import android.view.View; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.Toast; import android.widget.RadioGroup; import android.widget.RadioButton; public class MainActivity extends AppCompatActivity { CheckBox chkAndroid, chkIPhone, chkWinPhone; RadioGroup rdoGroup1; RadioButton rdoMan, rdoWoman; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); chkWinPhone = (CheckBox)findViewById(R.id.chkIPhone); chkAndroid = (CheckBox)findViewById(R.id.chkAndroid); chkIPhone = (CheckBox)findViewById(R.id.chkIPhone); rdoGroup1 = (RadioGroup)findViewById(R.id.rGroup1); //R Class 속에 들어있는 id의 값은 integer 타입이다. rdoGroup1.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { switch (group.getCheckedRadioButtonId()) { //라디오그룹의 버튼중에서 체크한 것이 넘어간다. case R.id.rdoMan: Toast.makeText(getApplicationContext(), "남성!", Toast.LENGTH_SHORT).show(); //Toast 메소드는 static 메소드이다. break; case R.id.rdoWoman: Toast.makeText(getApplicationContext(), "여성!", Toast.LENGTH_SHORT).show(); break; } } }); chkIPhone.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { //클릭도 되고, 터치도 될 것 같지만 체크드가 정확히 돌아간다. //즉 이벤트리스너를 사용할 때 정확하게 사용하여야 한다. @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (chkIPhone.isChecked()) { //아이폰이 체크되어 있으면? Toast.makeText(getApplicationContext(), "체크됨(터치)!", Toast.LENGTH_SHORT).show(); //Toast는 static 메소드이기 때문에 new하지 않는다. } } }); chkIPhone.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (chkIPhone.isChecked()) { //아이폰이 체크되어 있으면? Toast.makeText(getApplicationContext(), "체크됨(터치)!", Toast.LENGTH_SHORT).show(); //Toast는 static 메소드이기 때문에 new하지 않는다. } return false; } }); } }
- 실제로 setOnTouch... 메소드나 setOnClick... 메소드는 터치나 클릭 시 구현될 것 같지만
위와 같이 돌아가지 않는 것을 알 수 있고 그래서 setOnChecked... 메소드 내부에 구현했다.
4. 시연
- 여자라디오를 클릭 시 MainActivity.java에서 서술한 "여성!" 이라는
Toast가 show()됨을 알 수 있다.
- 이 외에도 위에서 서술한 아이폰도 클릭 시 "체크됨(터치)!" 가 보여진다.
- 안드로이드폰은 처음부터 checked에 체크했기 때문에 시작시에 체크가 되어있다.
'Programming Language > Android Programming' 카테고리의 다른 글
메뉴버튼 (0) | 2018.10.09 |
---|---|
계산기, 예약 (0) | 2018.09.18 |
레이아웃 (0) | 2018.09.14 |
계산기 (0) | 2018.09.03 |
프로그램 설치 및 기본 사용법 (0) | 2018.08.28 |
댓글