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 스타일 환경설정
- 코드 위치:
https://cs.android.com/android/platform/superproject/+/main:packages/apps/Settings/src/com/android/settings/wifi/WifiPrimarySwitchPreferenceController.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에 setter를 사용하여 각 필드를 맞춤설정하고 모든 필드가 설정되면 build()를 호출합니다.
- 펼치기 버튼:
- 기능을 완전히 사용 중지하려면 ProgressiveDisclosureMixin의 생성자를 재정의하고 keepExpanded를 true로 설정합니다.
- 처음에 몇 개의 항목을 표시할지 맞춤설정하려면 프래그먼트의
onAttach(Context)
메서드 도중ProgressiveDisclosureMixin.setTileLimit()
메서드를 호출합니다.