오늘은 ToggleButton에 대해서 알아 보겠습니다.
ToggleButton은 Button의 한 종류로 전기 스위치처럼 on/off 두가지 속성이 있어서 Button을 클릭 할때 마다 on/off 속성이 바뀌고 이 바뀐 상태에 따라 효과를 줄 수 있는 UI 입니다.
실제 예를 통해 ToggleButton에 대해 더 자세히 알아보겠습니다.
1. Project 생성
2. activity_main.xml 에서 ToggleButton 생성
Toggle 버튼 속성에 대해 설명하면
android:textOff - Toggle이 off인 상태일 때 Button에 나타날 text ( Toggle Off) / off가 default 상태임
android:textOn - Toggle이 on인 상태일 때 Button에 나타날 text ( Toggle On)
3. MainActivity.java로 이동하여 ToggleButton에 setOnCheckedChangeListener 생성
* setOnCheckedChangeListerner은 ToggleButton의 변화를 감지하는 Listerner이다.
위 그림 소스에 대한 설명
(1) MainActivity.java 소스 안에 있는 Oncreate() 메소드 안에서 ToggleButton 생성 ( id 활용 )
ToggleButton alarmToggle = findViewById(R.id.alarm)
(2) ToggleButton에 setOnCheckedChangeListerner 달기
alarmToggle.setOnCheckedChangeListener(
(3) setOnChecedChangeListerner 안에 CompoundButton(Toggle)에 대한 Listerner 생성
alarmToggle.setOnCheckedChangeListerner( new CompoundButton.OnCheckedChangeListerner(){
(4) Compound.OnCheckedChangeListerner() 안에 onCheckedChange() 메소드 Override 하기
//onCheckedChange()가 가장 toggle 클릭과 밀접한 메소드 --> 이곳에 클릭에 대한 action 정의
new CompoundButton.OnCheckedChange(){
@Override
public void onCheckedChange(){
위 그림에서는 toggle이 on되면 'Toggle On!' 문구가 Toast Message로 뜨게 했다 (off는 'Toggle Off')
4. 결과
이상으로 ToggleButton과 SetOnCheckedChangeListerner에 대해서 알아봤습니다.
감사합니다.
++
참고 소스
-activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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">
<ToggleButton
android:id="@+id/alarmToggle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textOff="Toggle Off"
android:textOn="Toggle On"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
-MainActivity.java
package android.example.ToggleButton;
import androidx.appcompat.app.AppCompatActivity;
import android.example.standup.R;
import android.os.Bundle;
import android.widget.CompoundButton;
import android.widget.Toast;
import android.widget.ToggleButton;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// toggle 버튼은 id로 찾아서 변수에 지정
ToggleButton alarmToggle = findViewById(R.id.alarmToggle);
// toggle에 setOnCheckedChangeListener 달아주기
alarmToggle.setOnCheckedChangeListener(
//CompundButton.OnCheckedChangedListener을 새로 선언
new CompoundButton.OnCheckedChangeListener() {
@Override
// 첫번째 인자는 ToggleButton, 두번째 인자는 on/off에 대한 boolean값
public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
String toastMessage;
//toggle 버튼이 on된 경우
if(isChecked){
toastMessage = "Toggle On!";
}else{
toastMessage = "Toggel Off!";
}
Toast.makeText(MainActivity.this,toastMessage,Toast.LENGTH_SHORT).show();
}
}
);
}
}
참고
'Android developer codelabs' https://developer.android.com/courses/fundamentals-training
[Android] AppBar에 Option menu 추가하기 (0) | 2020.05.28 |
---|---|
[Android] ImageView로 클릭 가능한 이미지 만들기 (2) | 2020.05.26 |
[Android] res 폴더에 접근 하는 방법 ( R class / @ ) (0) | 2020.05.13 |
[Android] Notification에 Intent 추가하기 ( Action 추가 ) (5) | 2020.05.08 |
[Android] 기본 Notification 생성 ( ft. NotificationCompat ) (0) | 2020.05.07 |