아티클

안드로이드 레거시 뷰에서 Snackbar 구현 시 접근성 고려 사항

엔비전스 접근성 2023-11-02 17:03:32

안녕하세요, 엔비전스입니다. 오랜만에 안드로이드 레거시 뷰 시스템 접근성 구현 관련 글을 작성하게 되었습니다.

오늘은 안드로이드 레거시 뷰 시스템에서 많이 사용되고 있는 Snackbar 클래스 사용 시 고려해야 할 사항에 대해 살펴보고자 합니다.

Snackbar

Snackbar는 사용자에게 간단한 피드백이나 액션을 제공하는 데 이상적인 컴포넌트입니다. 화면 하단에 일시적으로 나타나며, 필요에 따라 사용자 액션을 트리거 할 수 있는 액션 버튼을 포함할 수 있습니다. Snackbar는 일반적으로 사용자의 현재 활동에 방해가 되지 않도록 한다는 콘셉트를 가지고 있으며 자동으로 사라지거나 사용자의 액션에 의해 사라지도록 구현할 수 있습니다.

작업 확인:
사용자가 특정 작업을 완료했을 때 (예: 이메일 전송, 파일 저장 등) 그 작업이 성공적으로 완료되었음을 알리기 위해 스낵바를 사용할 수 있습니다.
오류 메시지:
네트워크 연결이 끊어졌거나, 작업 실패 등의 오류 상황을 사용자에게 알릴 때 스낵바를 사용할 수 있습니다.
추가 작업 제안:
사용자에게 다음 단계의 작업을 제안하거나, 추가 정보를 제공할 때 스낵바를 사용할 수 있습니다. 예를 들어, "항목이 삭제되었습니다. (되돌리기)"와 같은 메시지를 제공하여 사용자에게 삭제 작업을 취소할 기회를 제공할 수 있습니다.
설정 변경 알림:
앱의 설정이 변경되었을 때 사용자에게 알리기 위해 스낵바를 사용할 수 있습니다.
저작권 또는 권한 요청:
앱이 특정 권한을 요청할 때 스낵바를 사용하여 사용자에게 알리고, 설정으로 이동할 수 있는 버튼을 제공할 수 있습니다.

API에서 기본적으로 제공하는 접근성

  1. 스낵바가 표시되면 톡백에서 자동으로 스낵바 전체 메시지 내용을 읽어줍니다.
  2. 레거시 뷰 시스템의 스낵바는 기본적으로 스와이프 해서 닫을 수 있는 dismiss 액션을 포함하는데 이를 톡백의 커스텀 액션 기능을 통해 수행할 수 있도록 지원합니다. 즉 스낵바에 초점을 맞춘 상태에서 최신 톡백 기준 한 손가락 위 또는 아래 쓸기를 통해 닫기 작업 메뉴를 호출할 수 있습니다.
  3. 스낵바 구현 시에는 스낵바가 표시되는 시간을 설정할 수 있는데 접근성 고급 설정에서 액션 취하기 전 대기 시간을 10초 이상으로 설정하면 개발자가 설정한 시간보다 접근성에서 설정한 시간이 우선 적용되어 스낵바가 빠르게 사라지는 것을 막을 수 있습니다. 단 스낵바 구현 시 스낵바가 살아지는 시간을 스낵바에서 기본적으로 제공하는 setDuration이 아닌 handler.postDelay 메서드를 사용하는 경우에는 액션 취하기 전 대기 시간을 설정해도 적용이 되지 않습니다. 이는 스낵바가 사라지도록 하는 방법을 커스텀으로 구현했기 때문입니다.

추가 접근성 구현

톡백에서는 스낵바가 표시되었을 때 스낵바의 내용은 읽어주지만 스낵바가 화면 하단에 표시되었음은 알려주지 않습니다. 그런데 스낵바로 무조건 초점을 보내는 것은 기본적인 작업 흐름을 방해하게 됩니다. 따라서 특별한 경우가 아니라면 announceForAccessibility 메서드를 통해 화면 하단에 알림이 표시되었음을 알려주는 것이 좋습니다. 물론 기획에 따라서는 스낵바에 초점을 보내야 할 경우도 있을 것입니다. 따라서 해당 두 가지 방법에 대해 널리 포럼 팁으로 방법을 공유하였으니 상황에 따라 활용하시면 되겠습니다.

스낵바가 사라지는 것을 postDelay 메서드로 구현한 경우

위에서 설명한 것처럼 스낵바 구현 시에 Snackbar.LENGTH_SHORT, LONG, INDEFINITE, setDuration을 사용하지 않는 경우에는 반드시 스낵바가 사라지는 것과 관련하여 추가 접근성 구현을 해 주어야 합니다. 가장 간단한 것은 톡백이 켜져 있을 때에는 postDelay를 사용하지 않고 LENGTH_LONG 컨스턴트를 사용하는 것입니다. 이렇게 하면 톡백 사용자의 접근성 설정의 액션 취하기 전 대기 시간 옵션에 따라서, 즉 사용자의 기호에 따라 스낵바 알림이 사라질 것입니다. 이와 관련하여 톡백 탐지 조건문 설정을 쉽게 할 수 있는 isTalkBackOn 유틸 클래스를 업데이트 하였습니다. 1차 배포 당시에는 액티비티 실행 시에만 톡백이 켜지는 것을 감지했었는데 현재는 액티비티 실행 후에도 톡백이 켜지거나 꺼지는 것을 탐지할 수 있도록 수정했습니다. 관련 팁을 참고하여 톡백이 켜졌을 때의 스낵바 사라짐, 꺼졌을 때의 사라짐 두 핸들러를 적용시켜 주면 이슈는 쉽게 해결이 될 것입니다.

지금까지 레거시 뷰 시스템에서 스낵바 구현 시 기본적으로 적용되는 접근성과 추가 구현 가능한 접근성 기능에 대해 살펴보았습니다. 다음 시간에는 젯팩 컴포즈 스낵바의 접근성 적용에 대해 살펴보도록 하겠습니다.

댓글 0
댓글을 작성하려면 해주세요.