Compose에서 포커스

사용자는 앱과 상호작용할 때 터치하지 않는 입력 메커니즘을 사용하는 경우가 많습니다.

  • 데스크톱 환경: 사용자는 실제 하드웨어 키보드와 트랙패드로 데이터를 탐색하고 입력합니다.
  • Android TV: 사용자가 D패드를 사용하여 인터페이스를 탐색합니다.
  • 자동차: 운전자와 승객이 로터리 컨트롤러를 사용하여 상호작용합니다.
  • 폴더블 및 태블릿: 사용자가 키보드 커버와 외부 입력 액세서리를 연결합니다.

이러한 모든 시나리오에서 앱은 화면에 활성 상태인 대화형 요소를 추적해야 합니다. 이 활성 상태를 포커스라고 합니다.

직관적인 키보드 탐색을 위한 주요 요소

대형 화면과 터치하지 않는 기기에서 우수한 사용자 환경을 제공하려면 다음 원칙에 따라 앱을 설계하세요.

  1. 논리적 초기 포커스: 사용자가 화면에 진입할 때 상호작용할 가능성이 가장 높은 요소에 초기 포커스를 배치합니다.
  2. 일관된 탐색 순서: 예측 가능한 1차원 (Tab) 및 2차원 (화살표 키 또는 D패드) 포커스 순회를 제공합니다.
  3. 지속적인 포커스: 중단, 대화상자 닫기 또는 구성 변경 후 포커스를 원활하게 복원합니다.
  4. 명확한 포커스 상태: 현재 포커스가 있는 요소를 나타내는 눈에 띄고 접근 가능한 시각적 신호 (예: 포커스 링 또는 물결)를 표시합니다.
  5. 직관적인 스크롤: 포커스가 있는 요소와 주변 컨텍스트가 표시되는 뷰포트로 원활하게 스크롤되도록 합니다.

집중 가이드

다음 가이드에서 Compose의 포커스를 관리하고 맞춤설정하는 방법을 알아보세요.

  • 포커스 타겟: 대화형 구성요소가 포커스 타겟이 되는 방법과 맞춤 컴포저블을 포커스 가능하게 만드는 방법을 알아봅니다.
  • 포커스 순회 순서: 1D 모양 순서와 2D 공간 탐색, 순회 경로를 맞춤설정하는 방법을 이해합니다.
  • 텍스트 필드에 포커스: 한 줄 및 여러 줄 텍스트 필드에서 Tab 및 화살표 키를 처리하는 방법과 TV IME 상호작용이 작동하는 방식을 알아봅니다.
  • 포커스 타겟 그룹화: focusGroup로 구성요소를 그룹화하고 진입 또는 종료 리디렉션을 가로챕니다.
  • 포커스 복원: 컨테이너에서 이전에 활성 상태였던 하위 요소로 포커스를 복원하고, 탐색 구성요소를 처리하고, 화면 전환 전반에서 포커스를 관리합니다.
  • 포커스 상태 표시: 시각적 단서와 맞춤 표시를 적용하여 포커스가 있는 구성요소를 강조합니다.
  • 포커스에 반응: onFocusChanged를 사용하여 포커스 변경사항을 관찰하고 포커스 상태 속성을 쿼리합니다.
  • 프로그래매틱 방식으로 포커스 요청: 사용자 작업 또는 유효성 검사 오류에 대한 응답으로 포커스를 명시적으로 이동합니다.
  • 포커스 이동 및 지우기: FocusManager를 사용하여 프로그래매틱 방식으로 포커스를 이동하거나 지웁니다.
  • 포커스 캡처 및 해제: 모달 하위 상호작용의 포커스를 캡처하고 안전하게 해제합니다.
  • 테스트 포커스 탐색: 1D, 2D, 텍스트 필드 키보드 상호작용을 확인하는 자동 Compose 테스트를 작성합니다.