패턴 및 구성요소

Android 8.0에서는 설정 메뉴에 일반적인 용도를 아우르는 여러 구성요소와 위젯이 추가됩니다. 기기 제조업체 및 개발자는 새로운 사용자 인터페이스가 기존 설정 UI와 일관성을 유지하도록 설정 앱 확장 시 일반 구성요소를 사용하는 것이 좋습니다.

아래에는 개선사항이 요약되어 있습니다.

  • 지원 라이브러리 환경설정 프레임워크의 구분선 동작 변경 이제 구분선이 카테고리 사이에 표시됩니다.
  • ActionBar 테마 변경 이제 ActionBar에서 밝은 색상의 테마와 강조 색상 텍스트 사용합니다.
  • 새로운 환경설정 레이아웃 환경설정에 아이콘이 없는 경우에도 아이콘 공간이 유지됩니다.

새 위젯:

  • 애플리케이션 세부정보와 관련된 헤더 위젯입니다. 앱 아이콘, 앱 라벨 및 기타 정보가 표시됩니다.
  • 일부 페이지의 펼치기 버튼 페이지를 접힌 상태로 시작할 수 있으며 사용자가 펼치기 버튼을 클릭할 때까지 덜 중요한 항목을 숨길 수 있습니다.
  • 기본 앱 선택 UI:
    • 기본 브라우저, 기본 휴대전화 앱 등을 선택하기 위한 UI입니다.
    • 이전에는 대화상자 였지만 지금은 전체화면 라디오 버튼에 기반한 UI입니다.
  • 'MasterSwitch' 스타일의 환경설정입니다. 이 환경설정에는 두 개의 클릭 타겟이 있습니다. 왼쪽 타겟은 하위 설정 프래그먼트 또는 인텐트로 이어집니다. 오른쪽 타겟은 전체 페이지의 켜기/끄기를 제어하는 전환 토글입니다.

예시 및 소스

  • 구분선 동작
    • 설정의 모든 페이지가 새로운 구분선 동작을 사용하도록 수정됩니다.
    • 구분선 동작이 다음의 ThemeOverlay로 정의됨:
      packages/apps/Settings/res/values/styles_preference.xml
  • ActionBar 테마 변경
    • 새 ActionBar 테마를 사용하도록 설정의 모든 페이지가 수정됩니다.
    • 테마는 Theme.DeviceDefault.Settings에 정의되어 있습니다.
  • 새 환경설정 레이아웃
    • 이제 설정의 다수 페이지에서 새로운 환경설정 레이아웃을 사용합니다.
    • 코드 위치:
      packages/apps/Settings/res/values/styles_preference.xml
  • 앱 헤더 위젯
    • 설정의 애플리케이션 정보 페이지 대부분이 이미 새 앱 헤더를 구현하고 있습니다.
    • 예외 코드 위치:
      packages/apps/Settings/src/com/android/settings/applications/AppHeaderController.java
  • 펼치기 버튼
    • 예시 및 코드 위치:
      packages/apps/Settings/src/com/android/settings/dashboard/ProgressiveDisclosureMixin.java

      참고: 이 구성요소는 DashboardFragment와 함께 사용해야 합니다. DashboardFragment에 대한 자세한 내용은 업데이트된 정보 아키텍처를 참조하세요.)

  • 기본 앱 선택 도구
    • 기본 클래스의 코드 위치:
      packages/apps/Settings/src/com/android/settings/applications/defaultapps/DefaultAppPickerFragment.java
    • DefaultAppPickerFragment의 여러 하위 클래스가 있으며 각 하위 클래스는 다양한 인텐트의 선택기를 구현합니다.
  • MasterSwitch 스타일 환경설정
    • 코드 위치: packages/apps/Settings/src/com/android/settings/widget/MasterSwitchPreference.java
    • 사용 사례 예시는 Wi-Fi 마스터 스위치입니다. 예시 위치: packages/apps/Settings/src/com/android/settings/wifi/WifiMasterSwitchPreferenceController.java

구현

기기 제조업체는 모든 새로운 구성요소를 바로 사용할 수 있습니다. 새로운 'MasterSwitch' 스타일 환경설정이나 기본 앱 선택기를 구현하기로 결정한 OEM은 이 문서의 예시, 그리고 추가적인 세부정보를 위해 각 구성요소에 대해 작성된 참조 파일(Javadoc)을 따라야 합니다.

맞춤설정

  • 구분선 동작입니다. 구분선이 표시되는 방식을 변경하려면 설정 구분선의 스타일을 업데이트하고 다음의 값을 변경합니다.
    • allowDividerAbove
    • allowDividerBelow
    • allowDividerAfterLastItem
  • ActionBar 테마 색상입니다. 활동에 Theme.DeviceDefault.Settings를 테마로 사용하거나 Theme.DeviceDefault.Settings를 상위 요소로 사용하여 맞춤 테마를 생성해야 합니다.
  • 앱 헤더 위젯입니다. AppHeaderControllerㅇ에 설정자를 사용하여 각 필드를 맞춤설정하고 모든 필드가 설정되면 build()를 호출합니다.
  • 펼치기 버튼:
    • 기능을 완전히 사용 중지하려면 ProgressiveDisclosureMixin의 구성자를 재정의하고 keepExpanded를 true로 설정합니다.
    • 처음에 몇 개의 항목을 표시할지 맞춤설정하려면 프래그먼트의 onAttach(Context) 메소드 도중 ProgressiveDisclosureMixin.setTileLimit() 메소드를 호출합니다.