반응형
안녕하세요 ㅇㅅㅇ 코딩초밥입니다.
요번에는 어플에서 체크 리스트나 선택한 값을 가져오기 위한
compound button 들을을 만든후 그에 따른 활용에 관한 글을 써보겠습니다.
xml에서는 LinearLayout을 사용하였습니다.
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"
android:orientation="vertical"
android:padding="16dp"
tools:context=".MainActivity"
android:layout_margin="15dp">
<CheckBox
android:id="@+id/cb01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Apple"/>
<CheckBox
android:id="@+id/cb02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Banana"/>
<CheckBox
android:id="@+id/cb03"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Orange"/>
<ToggleButton
android:id="@+id/toggle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textOff="꺼짐"
android:textOn="켜짐"/>
<Switch
android:id="@+id/sw"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Sound"/>
<TextView
android:id="@+id/tv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="result"
android:textStyle="bold"
android:textSize="30sp"
android:textColor="#000000"/>
</LinearLayout>
위에코드를 사용을하면 옆에 보이는 checkbox 3개와
togglebutton 한개 switch 버튼까지 가져올수있습니다.
인제 이 버튼들을 눌러서 각 과일의 이름을
result칸에 띄워보도록하겠습니다.
* 이 글은 코딩 고수들이 보는 글이아닐꺼라 생각이 들어서 코딩 한줄한줄에 모두 설명을 달아놨습니다. 자 저는 주석요정이 되어서 코딩안에서 설명 해보겠습니다
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.Switch;
import android.widget.TextView;
import android.widget.ToggleButton;
public class MainActivity extends AppCompatActivity {
//xml에서 만들 뷰들을 참조하는 참조변수를 먼저 만들어줍니다
//onCreate 전에 이렇게 변수로 선언를 해주셔야하는데
// 이렇게 해놔야 어디서든 자신이 사용한 코드안에서 어디서든사용가능합니다.
private CheckBox cb01, cb02, cb03; //cd01,cd02등 이것은 제마음대로 쓸수있습니다!
//무조건 이걸써야하는것이아닙니다. 자유롭지만 관련있는 작명을해봅시다.
private TextView tv;
private ToggleButton toggleButton;
private Switch sw;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// xml에서 같이 id를 만들었었죠? xml과 연결해봅시당 findviewById로
// '이 변수는 xml에서 이것을 뜻하는것입니다~~' 하는 뜻이에용
// id를 이용해서 뷰들을 찾아와서 참조변수에 대입!
cb01= findViewById(R.id.cb01);
cb02= findViewById(R.id.cb02);
cb03= findViewById(R.id.cb03);
tv= findViewById(R.id.tv);
//체크박스의 체크상태가 변경되는 것을 듣는 리스너객체 생성. 코드쓰시다보면 자동완성 될겁니다! 길다고겁내지말기!
CompoundButton.OnCheckedChangeListener changeListener= new CompoundButton.OnCheckedChangeListener() {
//체크상태가 변경될 때 마다 실행되는 메소드
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
//저희가 썼던 과일 이름을 가져온다는 뜻입니다.
String s=""; //문자열을 저장하는 String 변수값을 가져와 s안에 값을 저장해봅시다!
if( cb01.isChecked()) s += cb01.getText().toString();
if( cb02.isChecked()) s += cb02.getText().toString();
if( cb03.isChecked()) s += cb03.getText().toString();
//if는 만약에라는 뜻으로 만약 cd01이눌러졌다면! s에 값을 담아라!라는뜻이에요
tv.setText(s); //담기만하면 안되겠죠? textview의 아이디 tv에 그 값을 담아줍니다.
}
};
//위에 만든건 공용이라 생각하시고 위에서 만든 리스너객체를 각 체크박스에 붙이기!
cb01.setOnCheckedChangeListener(changeListener);
cb02.setOnCheckedChangeListener(changeListener);
cb03.setOnCheckedChangeListener(changeListener);
//토글버튼의 체크상태변경 리스너 생성 해봅시다 토글버튼은 on off를 나타내는 버튼말하는겁니다!
toggleButton= findViewById(R.id.toggle); //아이디를 가져와야 xml이 연결이되겠죠?
toggleButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
tv.setText( isChecked + "" ); // 눌러서 끌것인가 킬것인가를 설정할수있는 Listener입니다
}
});
//Switch에 체크상태변경 리스너 객체 생성 및 설정
sw= findViewById(R.id.sw); //슬라이드 하는거있죠? 그거 말하는거에요 바로그거 on off
sw.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
tv.setText( isChecked +""); //슬라이드해서 글을 넣을껏인가 뺄것인가하는 Listener입니다
}
});
}
}
처음으로 android를 다루시는분들은 복사 붙이기말고 한번 써보시는걸 권장드려요
연습도 연습이지만..가끔 영어울렁증에 코드도 길어 보여서 거부감을 느끼시는분이 계셔서
자동완성으로 금방 완성되는 코딩과 놀아보시길바랍니다.
반응형
'이과 > JAVA 안드로이드' 카테고리의 다른 글
[안드로이드]ViewPaPer (0) | 2021.04.30 |
---|---|
[안드로이드]UI/UX 디자인이란? (0) | 2021.04.27 |
[안드로이드]Thread2 (0) | 2021.04.27 |
[안드로이드]Thread (0) | 2021.04.26 |
[안드로이드]Room (1) | 2021.04.25 |
댓글