일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- ClearEditText
- 산전수전겪으니체감된다
- 안드로이드
- 뷰모델
- ViewModel
- 산전수전 겪어보니 체감함
- 2023년 회고록
- LiveData
- 연간 회고록
- 라이브데이터
- lifecycle
- Copose 장점
- x버튼에디트텍스트
- Kotlin
- 클리어에디트텍스트
- Android
- 옵저빙
- 이제 느껴본 신세계
- compose
- 코틀린
- 옵저버패턴
- 회고록
- 커스텀뷰
- jetpack compose
- EditText
- Today
- Total
SANDY
토글 버튼에 대한 고찰) 토글 버튼을 이용해 좋아요, 북마크 추가 기능 구현 시 중요하게 고려 해야 하는 것 본문
토글 버튼에 대한 고찰) 토글 버튼을 이용해 좋아요, 북마크 추가 기능 구현 시 중요하게 고려 해야 하는 것
SANDY-9 2024. 2. 17. 18:03토글 버튼(Toggle Button)
토글 버튼은 사용자가 두 상태(Check ON, Check OFF)간 설정을 서로 전환할 수 있는 UI 컴포넌트이다. 사용자에게 두가지 상태 중 하나의 옵션만 제공해야 하는 경우 토글 버튼을 커스텀해서 구현하면 Check ON/ Check OFF라는 Check 상태의 Change에 대한 이벤트를 구현할 수 있다.
토글 버튼은 위의 이미지처럼 토글 버튼은 주로 옵션을 ON/OFF하는 스위치 형태로 흔히 볼 수 있다. 이외에도 좋아요, 북마크 버튼 등 여러가지 기능에 활용되고 있다.
토글 버튼(Toggle Button)의 특징
- ON / OFF 두 개의 상태를 가지고 있다.
- OFF 상태의 버튼을 누르면 ON으로 전환되고, ON 상태의 버튼을 누르면 OFF로 전환된다.
- 사용자가 ON / OFF 상태를 자유롭게 변경할 수 있다. 그래서 ON / OFF 전환이 딜레이 없이 작동한다.
토글류 이벤트
토글 버튼, 스위치 등 토글류 UI는 Check 상태가 변경되면 setOnCheckedChangeListener가 실행되어 변경된 Check 상태를 Boolean값으로 콜백해준다. setOnCheckedChangeListener를 통해 Check 상태 변경에 대한 이벤트 동작을 처리할 수 있다.
toggleButton.setOnCheckedChangeListener { v: CompoundButton, isChecked: Boolean ->
}
만약 토글 버튼을 커스텀하여 좋아요 버튼을 구현하고, 버튼의 Check 상태에 따라 좋아요 기능을 구현한다고 하면
likeButton.setOnCheckedChangeListener { _: CompoundButton, isChecked: Boolean ->
if(isChecked) addLiked() else deleteLiked()
}
이런 식으로 좋아요 기능에 대한 로직을 구현할 수 있을 것이다.
이렇게 토글 버튼을 이용하면 토글버튼의 체크 상태 변화 이벤트 리스너 함수를 이용해 '좋아요' 기능의 추가/제거 대한 로직을 쉽게 구현할 수 있다.
좋아요 기능을 구현할 때, setOnCheckedChangeListener를 이용해 구현 후 끝내도 될까?
간과해버린 중요한 한 가지가 있다.
사용자가 토글 버튼을 여러번 누를 수 있음을 인지해야한다.
주의사항
토글 버튼은 사용자가 ON / OFF 상태를 자유롭게 변경할 수 있고, ON / OFF 전환이 딜레이 없이 작동한다. 그리고 ON / OFF 전환이 이루어질 때마다 check 상태가 true -> false로 바뀌면서 check 상태 값(Boolean)에 대한 콜백 함수가 계속 실행된다.
좋아요 버튼을 누르는 이벤트가 발생 했을 때 어떤 일이 일어나는지 시나리오를 생각해보자.
- 버튼의 상태가 ON(true) → OFF(false)로 바뀌거나 OFF(false) → ON(true)로 변경된다.
- 버튼의 상태가 변경되면 변경된 상태에 따라 서버에서 비즈니스 로직을 수행한다.
- 서버와의 비즈니스 로직을 수행하기 위해 네트워크 통신을 비동기적으로 수반하게 된다.
이 과정에서, 좋아요 버튼을 누를 때마다 네트워크 통신이 버튼을 누른 횟수만큼 호출된다.