개발자가 Android 12의 Material You 테마 시스템을 재현했습니다.

ProtonAOSP ROM의 개발자인 kdrag0n은 Android 12의 새로운 배경 화면 기반 테마 시스템인 "monet"의 자체 버전을 출시했습니다.

Material You의 배경화면 기반 테마 시스템인 코드명 "monet"이 마침내 출시되었습니다. 안드로이드 12 베타 2. 테마 시스템은 배경화면의 주요 색상 구성을 기반으로 색상 팔레트를 생성하고 이를 빠른 설정 타일, 잠금 화면, 설정, 팝업 및 앱에 적용합니다. 그러나 현재 구현에서는 시스템 UI의 테마 부분 그리고 시스템 앱 선택. Google이 아직 Material You에 대한 문서를 게시하지 않았기 때문에 대부분의 타사 앱은 이 동적 테마를 지원하지 않습니다. Google이 언제 Material You에 리소스와 라이브러리를 게시할지는 알 수 없지만 ProtonAOSP ROM의 개발자인 Danny Lin(kdrag0n)은 "monet"을 기반으로 하는 자신의 테마 엔진을 내놓았습니다.

kdrag0n의 테마 엔진 'monet'과 동일하게 작동하며 Android 12 및 일부 이전 Android 버전을 실행하는 모든 기기에 Pixel 전용 동적 테마를 제공합니다. kdrag0n은 초기 Android 12 개발자 프리뷰 빌드에서 처음으로 "monet"을 작동시킨 개발자였습니다. 그 이후로 그는 Google 구현을 리버스 엔지니어링했으며 Google SystemUI 팀 구성원들에게 피드백을 주기도 했습니다. 제임스 오리어리 (Google에서 "monet"을 개발한 팀의 일원인 것 같습니다).

kdrag0n에 따르면 그의 구현은 Google 또는 Android 12의 코드나 API를 사용하지 않으므로 그의 모델을 사용하기 위해 Android 12를 실행하는 기기에 종속되지 않습니다. kdrag0n의 테마 엔진은 Material You 색상 목표를 따릅니다. 그러면 이러한 목표는 “@bjornornorn의 Oklab 지각 색상 공간에서 색상과 색조를 조정하여 다시 칠했습니다. 결과 색상은 Oklab 공간의 영역 교차를 사용하여 sRGB에 영역 매핑됩니다." 사용자는 색상을 변경하고 정확한 음영보다 색상을 우선시하도록 할 수도 있습니다.

kdrag0n의 테마 엔진은 MIT 라이센스에 따른 오픈 소스이므로 맞춤형 ROM 개발자(심지어 OEM도)가 원할 경우 이를 구현할 수 있습니다. 사실 개발자 자신의 양성자AOSP ROM은 Android 12 소스 코드가 게시되면 이를 가장 먼저 구현하는 것 중 하나가 될 것입니다. 맞춤형 ROM 개발자라면 체리픽을 선택할 수 있습니다. 이 커밋 빌드에 병합하세요.

개발자는 또한 Android 11용으로 빌드된 앱에서도 동적 색상을 지원할 수 있도록 하는 Jetpack Compose 및 Flutter 라이브러리를 개발하고 있습니다. 이전 Android 버전을 타겟팅하는 앱은 다음을 수행할 수 있습니다. 청취자를 등록하다 배경 화면 색상이 변경될 때 알림을 받으려면 kdrag0n의 코드가 새로운 배경 화면 색상을 기반으로 테마를 생성하는 데 더 많은 의미가 있습니다.

Android 11을 대상으로 하는 앱에서 작동하는 그의 모델의 예로 개발자는 90fps에서 프레임마다 테마를 변경하는 앱을 시연하는 동영상을 우리와 공유했습니다. 이 데모는 수행할 수 있는 작업의 예일 뿐이며 표시된 대로 정확하게 재생성하는 것은 권장되지 않습니다.

개발자의 Pixel 4는 더 간단한 보기를 위해 90fps로 테마 변경을 렌더링할 수 있지만 이는 성능과 배터리에 큰 타격을 줄 수 있습니다. 개발자에 따르면 Jetpack Compose는 성능에 그다지 최적화되지 않았으며 Flutter 라이브러리가 더 나을 수도 있습니다. 어쨌든 그의 엔진이 테마를 생성하는 데는 0.05ms밖에 걸리지 않지만 그럼에도 불구하고 프레임마다 UI 테마를 변경하는 것은 성능에 부담을 줍니다.


Mishaal Rahman이 이 기사에 기고했습니다.