Bắt đầu từ Android 12, thiết kế Material You tập trung vào sự thể hiện và tính linh hoạt trong hệ điều hành Android, với mục tiêu giúp người dùng tạo và sở hữu một trải nghiệm duy nhất, gắn kết đáp ứng nhu cầu của họ. Với tư cách là đối tác của Android, bạn được khuyến khích kết hợp Material You thiết kế vào thiết bị Android của mình trong các lĩnh vực sau:
- Màu động
- Cử động
- Widget
Màu động
Màu sắc sống động là trọng tâm của thiết kế Material You và là một phần quan trọng trong chiến lược nhiều năm của Android nhằm mang lại khả năng tùy chỉnh đơn giản và sâu hơn cho người dùng theo cách mà không có thiết bị nào khác làm được. Tài liệu bạn cung cấp:
Người dùng và nhà phát triển có một câu chuyện cá nhân hóa phong phú, nhất quán có sẵn trên mọi thiết bị Android.
Các OEM Android có cơ hội tiếp tục đổi mới giao diện người dùng hệ thống và các ứng dụng của bên thứ nhất theo cách phù hợp với phần cứng và màu sắc thương hiệu, kiểu dáng và hình thức của họ.
Để tận dụng màu sắc động, hãy sử dụng câu chuyện trích xuất màu của Android 12 Material You như một phần quan trọng trong việc cung cấp phần mềm cho người dùng. Trên thiết bị, hãy sử dụng logic trích xuất màu trong AOSP, đặc biệt là logic lấy màu nguồn của một hình nền hoặc chủ đề duy nhất và xuất màu đó thông qua 65 API màu. Để biết các yêu cầu về màu động, hãy xem Sử dụng Màu động .
Luồng màu động đầy đủ bao gồm bốn bước, như minh họa bên dưới:
Hình 1. Chất liệu của dòng màu động
Người dùng thay đổi hình nền hoặc chủ đề thông qua bộ chọn OEM.
Người dùng chọn một trong các tùy chọn sau:
Chủ đề thiết bị. Khi được chọn, Android sẽ tự động chọn một màu nguồn duy nhất đáp ứng yêu cầu.
Hình nền + chủ đề mới. Khi được chọn, logic AOSP sẽ tự động chọn một màu nguồn duy nhất từ hình nền đã chọn.
AOSP mở rộng màu nguồn đơn thành 5 bảng tông màu với 13 biến thể tông màu mỗi bảng, theo logic AOSP, sau đó điền vào 65 thuộc tính màu.
Giao diện người dùng ứng dụng sử dụng 65 thuộc tính màu theo cách nhất quán trên hệ sinh thái ứng dụng Android. Bạn được khuyến khích sử dụng cùng một bảng màu cho giao diện người dùng hệ thống của thiết bị và các ứng dụng dành riêng cho OEM.
Bản vá Android 12
Để có được logic toàn diện cho việc trích xuất màu hình nền và cho phép thiết bị điền API 65 màu theo cách phù hợp với hệ sinh thái, hãy đưa các bản vá sau vào quá trình triển khai Android 12 của bạn:
Bắt buộc
Khuyến khích mạnh mẽ
- Khắc phục tình trạng chạy đua khi cài đặt sysprops màu khởi động.
- Cho phép lớp phủ được thông báo về thay đổi chủ đề
- Khắc phục tình trạng đua khi cài đặt sysprops màu khởi động (vòng 2)
- Di chuyển FeatureFlags sang gói flags.
- Triển khai chính xác hỗ trợ chủ đề nhiều người dùng
- Sửa lỗi tùy chọn màu hình nền được chỉ định bị thiếu sau khi khởi động lại
- Sửa lỗi tính toán bậc ba màu sắc
- Không cho phép ứng dụng nền thay đổi chủ đề
Chỉ định màu tùy chỉnh trên ThemePicker
Nếu bạn đang sử dụng ứng dụng AOSP ThemePicker, ứng dụng WallpaperPicker sẽ hiển thị phần màu nếu đáp ứng cả hai điều kiện sau:
-
flag_monet
trênframeworks/base/packages/SystemUI/res/values/flags.xml
làtrue
. - APK sơ khai hệ thống có tên gói được xác định trong
themes_stub_package
trongpackages/apps/ThemePicker/res/values/override.xml
.
Định dạng APK sơ khai
Bạn có thể tìm thấy phiên bản mẫu của APK này trong packages/apps/ThemePicker/themes
.
APK này chỉ được chứa tài nguyên, nêu chi tiết các màu cơ bản có sẵn và tên của chúng.
Sơ khai phải chứa tệp XML dưới res/xml
với định dạng sau:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<array name="color_bundles">
<item>color1</item>
<item>color2</item>
<item>color3</item>
<item>color4</item>
</array>
<string name="bundle_name_color1">Blue</string>
<string name="bundle_name_color2">Red</string>
<string name="bundle_name_color3">Yellow</string>
<string name="bundle_name_color4">Green</string>
</resources>
Trong tệp này, mỗi item
trong color_bundles
có một tên riêng biệt, miễn là các chuỗi bên dưới được đặt tên là bundle_name_ item
.
Phải có chuỗi bundle_name_ item
cho mỗi màu, kèm theo tên mô tả cho mỗi màu. Chúng có thể được dịch bằng cách thêm các chuỗi đã dịch tương ứng vào thư mục res/values- language code
.
Các giá trị màu thực tế có thể nằm trên cùng một XML hoặc trên một tệp XML tài nguyên riêng biệt có định dạng sau:
<resources>
<color name="color_primary_color1">#0000FF</color>
<color name="color_secondary_color1">#0000FF</color>
<color name="color_primary_color2">#ff0000</color>
<color name="color_secondary_color2">#ff0000</color>
<color name="color_primary_color3">#ffff00</color>
<color name="color_secondary_color3">#ffff00</color>
<color name="color_primary_color4">#00ff00</color>
<color name="color_secondary_color4">#00ff00</color>
</resources>
Đối với mỗi mục trong mảng gói màu, phải có color_primary_ item
và color_secondary_ item
(và cả hai màu phải có cùng màu). Giá trị cho các mục color
này là mã màu thực tế cho từng màu sẽ hiển thị trong phần màu cơ bản .
Bước 1: Xây dựng trải nghiệm theo chủ đề người dùng
Bộ chọn chủ đề là nơi người dùng tương tác với các khả năng cá nhân hóa Material You mới và có thể chọn giữa các tùy chọn màu sắc hoặc cài đặt trước. Vì nó phù hợp với sản phẩm và nhân khẩu học của người dùng, bạn có thể cung cấp cho người dùng trải nghiệm màu sắc và cá nhân hóa phong phú hơn thông qua việc sử dụng bộ chọn chủ đề hoặc bộ chọn hình nền .
- Khi sử dụng bộ chọn hình nền, tính năng trích xuất màu hình nền được bật theo mặc định. Tuy nhiên, bạn có thể thực hiện một số tùy chỉnh đối với bộ chọn để cung cấp nhiều tùy chọn hơn cho người dùng.
Bước 2: Tách màu giấy dán tường thành màu nguồn
Để bật trích xuất màu hình nền, hãy chọn các bản vá Android 12 được liệt kê ở trên (chức năng này sẽ được bật theo mặc định trong bản phát hành AOSP trong tương lai). Logic AOSP kích hoạt trích xuất hình nền bắt đầu tại frameworks/base/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayController.java
, trên ThemeOverlayController#mOnColorsChangedListener
, thông qua WallpaperManager#onWallpaperColorsChanged
. Chúng tôi khuyên bạn nên sử dụng logic AOSP chưa sửa đổi để đảm bảo trải nghiệm phát triển nhất quán.
Theo mặc định, logic chọn màu có tần số cao nhất phù hợp để sử dụng. Để tận dụng các màu nguồn khác được thuật toán trả về và hiển thị các màu đó cho người dùng trong bộ chọn chủ đề, hãy sử dụng ColorScheme#getSeedColors(wallpaperColors: WallpaperColors)
.
Để phù hợp để sử dụng, màu nguồn (dù được trích xuất từ hình nền hoặc giá trị đặt trước do người dùng chọn) phải có giá trị sắc độ CAM16 tối thiểu là 5; điều này đảm bảo rằng màu nguồn không bị ảnh hưởng bởi các tông màu tối tinh tế khi nó được chuyển đổi từ một màu thành 65 màu sắc và vẫn đại diện cho sự lựa chọn của người dùng. Để đọc và sửa đổi màu trong CAM16, hãy sử dụng Cam#fromInt
hoặc Cam#getInt
.
Sử dụng bảng màu không động Đối với các thiết bị không hỗ trợ trích xuất màu hình nền, bạn vẫn có thể đảm bảo rằng các ứng dụng của Google và ứng dụng bên thứ ba hỗ trợ màu động trông đẹp mắt bằng cách thực hiện như sau:
- Sử dụng bảng Material mặc định bằng cách tắt
flag_monet
trênframeworks/base/packages/SystemUI/res/values/flags.xml
.- Đảm bảo người dùng vẫn có thể cá nhân hóa hệ điều hành của mình bằng cách sử dụng bộ chọn chủ đề cài sẵn.
Bước 3: Mở rộng màu nguồn thành API màu
Bằng cách sử dụng màu nguồn duy nhất lấy từ bước trước, Android tạo ra 5 bảng màu riêng biệt (dấu 1-3, màu trung tính 1-2), mỗi bảng màu bao gồm 13 màu và mỗi màu bao gồm các giá trị độ sáng khác nhau (0 đến 1000), cho một tổng cộng 65 màu. Logic được cung cấp trong các bản vá Android 12 triển khai tính năng mở rộng màu này một cách chính xác; các chi tiết được cung cấp dưới đây mô tả việc thực hiện.
Để đảm bảo tính nhất quán cho nhà phát triển, 5 bảng màu (accent1, Accent2, Accent3, Neutral1, Neutral2) và 13 màu tương ứng của chúng phải dựa trên một màu nguồn duy nhất với các thay đổi tương ứng đối với giá trị sắc độ và sắc độ CAM16 như được viết bên dưới:
- Sắc độ: sử dụng "16"
- Huế: giống như nguồn
- Sắc độ: sử dụng "32"
- Huế: xoay 60 độ dương
- Sắc độ: sử dụng "4"
- Huế: giống như nguồn
- Sắc độ: sử dụng "8"
- Huế: giống như nguồn
CTS bao gồm các thử nghiệm để xác thực các lệnh gọi API độ chói và màu sắc. Để chạy, hãy sử dụng atest SystemPalette
.
Bước 4: Sử dụng màu động trong ứng dụng và Giao diện người dùng hệ thống
Sau khi màu động được đặt trên thiết bị, các ứng dụng sẽ tuân theo nguyên tắc Material để sử dụng màu. Nguyên tắc quan trọng sẽ được phát hành trên Material.io trước ngày 26 tháng 10 năm 2021 để các ứng dụng của bên thứ ba áp dụng. Đối với Giao diện người dùng hệ thống và ứng dụng của bên thứ nhất, chúng tôi thực sự khuyên bạn nên tích hợp màu sắc động trong suốt trải nghiệm người dùng theo cách phù hợp với phần cứng và thương hiệu của bạn, đồng thời giúp bạn phân biệt các thiết bị của mình.
Để biết hướng dẫn chung về màu động, hãy xem phần sau:
Sử dụng màu nhấn cho các thành phần nền trước trong ứng dụng và Giao diện người dùng hệ thống:
@android:color/system_accent1_0 … 1000 // most-used foreground color group @android:color/system_accent2_0 … 1000 // alternate accent, used for surfaces @android:color/system_accent3_0 … 1000 // playful, analogous color
Sử dụng màu trung tính cho các thành phần nền trong ứng dụng và Giao diện người dùng hệ thống:
@android:color/system_neutral1_0 … 1000 // most-used background color group @android:color/system_neutral2_0 … 1000 // used for higher-elevation surfaces
Để biết thêm thông tin về cách Material You ánh xạ màu sắc và cách sử dụng API trong SysUI, hãy xem Tài nguyên bổ sung .
Bước 5: Thêm tùy chọn màu động trong triển khai AOSP WallpaperPicker của bạn
Bản dựng cho Android 13 trở lên
Kể từ Android 13, android.theme.customization.accent_color
không được dùng nữa. Một thuộc tính mới android.theme.customization.theme_style
được thêm vào để hỗ trợ các biến thể màu khác nhau. Chúng tôi hiện có bốn biến thể trong cơ sở mã như sau:
TONAL_SPOT = Default Material You theme since Android S.
VIBRANT = Theme where accent 2 and 3 are analogous to accent 1.
EXPRESSIVE = Highly chromatic theme.
SPRITZ = Desaturated theme, almost grayscale.
Chúng được gửi đến Settings.Secure.THEME_CUSTOMIZATION_OVERLAY_PACKAGES
, như được hiển thị trong JSON bên dưới:
{
"android.theme.customization.system_palette":"B1611C",
"android.theme.customization.theme_style":"EXPRESSIVE"
}
Bản dựng dành cho Android 12 trở xuống
Khi sử dụng bộ chọn chủ đề tùy chỉnh, thiết bị phải gửi màu nguồn hợp lệ tới Settings.Secure.THEME_CUSTOMIZATION_OVERLAY_PACKAGES
bằng cách cung cấp tệp JSON ở định dạng sau (trong đó 746BC1
là màu nguồn hợp lệ mẫu):
{
"android.theme.customization.system_palette":"746BC1",
"android.theme.customization.accent_color":"746BC1"
}
Việc thực hiện này sẽ bỏ qua việc trích xuất màu hình nền (Bước 2) và trực tiếp mở rộng màu nguồn được cung cấp thành 65 thuộc tính màu (Bước 3).
Bước 6: Gửi yêu cầu
Bên cạnh việc tích hợp hệ thống, bạn cần gửi yêu cầu và cho chúng tôi biết tên thương hiệu của bạn ( Build.MANUFACTURER
). Vì hầu hết các ứng dụng của bên thứ 3 đều sử dụng Thành phần Material dành cho Android để hiển thị màu sắc động nên chúng tôi đang sử dụng danh sách cho phép được mã hóa cứng để cho biết thiết bị nào đã tích hợp tính năng Bảng tông màu động .
Cử động
Chuyển động mượt mà khiến thiết bị có cảm giác hiện đại và cao cấp. Để xây dựng và duy trì niềm tin cũng như sự hài lòng của nhà phát triển, cuộn quá mức và gợn sóng là hai phần quan trọng của chuyển động linh hoạt cần có vẻ ngoài và cảm giác nhất quán.
Sử dụng tính năng ghi đè trong hệ điều hành của bạn
Android 12 bao gồm chuyển động cuộn quá mức linh hoạt, phản hồi nhanh hơn dưới dạng kéo dài chế độ xem, hiển thị khi người dùng cố gắng cuộn qua mép danh sách. Một ví dụ đã được biểu diễn ở dưới:
Hình 2. Hiệu ứng cuộn quá mức của Android 12, như trong Cài đặt
Để đảm bảo tính nhất quán cho nhà phát triển, hãy đảm bảo rằng hiệu ứng cuộn quá mức tổng thể trên thiết bị của bạn tương tự như sau:
Trên các thiết bị trả về giá trị true cho
ActivityManager.isHighEndGfx()
, hiệu ứng cuộn quá mức là độ giãn phi tuyến tính của màn hình (như minh họa ở trên).Trên các thiết bị có hiệu suất thấp hơn, hiệu ứng kéo dài được đơn giản hóa thành kéo dài tuyến tính (để giảm tải cho hệ thống).
Sử dụng tính năng cuộn quá mức trong ứng dụng của bên thứ nhất
Khi sử dụng chế độ xem tùy chỉnh, bạn có thể cần điều chỉnh một số ứng dụng và giao diện người dùng hệ thống sử dụng hiệu ứng kéo dài.
Để hỗ trợ kéo dài quá mức, hãy nâng cấp lên các thư viện mới nhất:
-
androidx.recyclerview:recyclerview:1.3.0-alpha01
choRecyclerView
-
androidx.core:core:1.7.0-alpha01
choNestedScrollView
vàEdgeEffectCompat
-
androidx.viewpager:viewpager:1.1-alpha01
choViewPager
-
Đối với bố cục tùy chỉnh sử dụng
EdgeEffect
, hãy xem xét các thay đổi UX sau:Với tính năng cuộn quá mức kéo dài, người dùng không nên tương tác với nội dung của bố cục khi bố cục đang bị kéo dài. Người dùng chỉ nên tự thao tác với phần kéo dài và không thể nhấn nút trong nội dung.
Khi người dùng chạm vào nội dung trong khi hoạt ảnh
EdgeEffect
đang diễn ra, họ sẽ bắt được hoạt ảnh và được phép thao tác kéo dài. Giá trị kéo hiện tại có sẵn từEdgeEffectCompat.getDistance()
.Để thao tác giá trị kéo và trả về số tiền đã tiêu thụ, hãy sử dụng
onPullDistance()
. Điều này cho phép các nhà phát triển chuyển đổi mượt mà từ kéo dài sang cuộn khi ngón tay kéo nội dung qua vị trí bắt đầu.Khi làm việc với thao tác cuộn lồng nhau, nếu nội dung bị kéo giãn, thao tác kéo dài sẽ thực hiện chuyển động chạm trước nội dung được lồng nhau, nếu không, thao tác lồng nhau có thể cuộn khi ngón tay thay đổi hướng thay vì nhả thao tác kéo giãn.
Để biết chi tiết về cuộn quá mức, hãy tham khảo Tạo hiệu ứng cho cử chỉ cuộn .
Sử dụng gợn sóng (phản hồi chạm) trong hệ điều hành của bạn
Android 12 bao gồm cảm ứng gợn nhẹ nhàng hơn, tinh tế hơn để cung cấp phản hồi cho người dùng khi nhấn xuống.
Hình 3. Hiệu ứng gợn sóng của Android 12, với hoạt ảnh lấp đầy nhẹ nhàng hơn
Để nhà phát triển có thể dự đoán và mang lại trải nghiệm tuyệt vời cho người dùng, hãy đảm bảo rằng hiệu ứng lan truyền trên thiết bị của bạn tương tự như ví dụ được hiển thị ở trên. Mặc dù không cần thực hiện bất kỳ bước tích hợp cụ thể nào để hỗ trợ hiệu ứng gợn sóng, nhưng bạn nên kiểm tra hiệu ứng trên thiết bị của mình để kiểm tra xem có bất kỳ sự hồi quy ngoài ý muốn nào được đưa ra trong quá trình triển khai của bạn hay không.
Widget
Widget là thành phần chính của thiết bị Android. Android 12 bao gồm các API mới và khả năng API mà tất cả các OEM đều phải hỗ trợ.
Trong hệ điều hành của bạn, hãy hỗ trợ các API của nhà phát triển liên quan đến bố cục tiện ích, kích thước và thông số phần mềm (ví dụ: kích thước góc tròn). Việc triển khai của bạn phải hỗ trợ chính xác các tiện ích trong việc cung cấp tham số thông qua API và đảm bảo các tiện ích có kích thước lớn và có thể định cấu hình được bởi người dùng.
Trong ứng dụng của bạn, hãy tận dụng các khả năng API mới để cập nhật hoặc xây dựng các tiện ích mới của bên thứ nhất nếu có thể. Đối với tất cả tiện ích ứng dụng của bên thứ nhất trong tầm nhìn của bạn, hãy xem qua danh sách kiểm tra dành cho nhà phát triển bên dưới.
- Mức độ ưu tiên dựa trên các khuyến nghị từ nền tảng.
- Để biết chi tiết về đề xuất, hãy nhấp vào liên kết trong cột Thay đổi.
Khu vực Thay đổi Ưu tiên thực hiện Cải thiện trải nghiệm tại nhà Thêm bản xem trước có thể mở rộng P1 Thêm mô tả tiện ích P1 Giúp việc cá nhân hóa các widget dễ dàng hơn P2 (tùy chọn) Cho phép chuyển tiếp mượt mà hơn P0 Tránh các tấm bạt lò xo phát sóng P0 Áp dụng các nguyên tắc về tiện ích Cải thiện kích thước và bố cục tiện ích P2 Áp dụng màu sắc năng động P0 Thực hiện các góc bo tròn P0 Thêm các nút ghép mới P2 Đơn giản hóa mã widget hiện có Đơn giản hóa bộ sưu tập RemoteView P2 Đơn giản hóa thời gian chạy RemoteView P2
Tài nguyên bổ sung
Sử dụng màu SysUI
(giọng1 = A1, giọng2 = A2, giọng3 = A3, trung tính1 = N1, trung tính2 = N2)
Hình 4. Sử dụng màu động trong Giao diện người dùng hệ thống
Cập nhật thuộc tính màu của thư viện vật liệu
Material sẽ cập nhật các thuộc tính chủ đề trong bản phát hành sắp tới bằng cách tạo các vai trò màu dùng để cung cấp màu cho các chế độ xem cụ thể.
Vai trò màu sắc | Thuộc tính chủ đề Android | Chủ đề nhẹ nhàng Màu động | Chủ đề tối Màu động |
---|---|---|---|
Sơ đẳng | màuChính | system_accent1_600 | system_accent1_200 |
Trên Chính | colorOnPrimary | system_accent1_0 | system_accent1_800 |
Sơ trung | màu sắcTrung học | system_accent2_600 | system_accent2_200 |
Trên Trung học | colorOnTrung học | system_accent2_0 | system_accent2_800 |
Lỗi | lỗi màu sắc | Không áp dụng (red_600) | Không áp dụng (đỏ_200) |
Có lỗi | colorOnError | Không áp dụng (màu trắng) | Không áp dụng (red_900) |
Lý lịch | android:màuNền | hệ thống_trung lập1_10 | system_neutral1_900 |
Trên nền | màu sắc trên nền | system_neutral1_900 | hệ thống_trung lập1_100 |
Bề mặt | màu sắcBề mặt | hệ thống_trung tính1_10 | system_neutral1_900 |
Trên bề mặt | màu sắcOnSurface | system_neutral1_900 | hệ thống_trung tính1_100 |
Material sẽ cập nhật các thuộc tính trạng thái của nó với các con trỏ sau:
Vai trò màu sắc | Thuộc tính chủ đề Android | Chủ đề nhẹ nhàng Màu động | Chủ đề tối Màu động |
---|---|---|---|
Nội dung trạng thái chính | màuPrimaryStateNội dung | system_accent1_700 | system_accent1_200 |
Lớp trạng thái chính | màuPrimaryStateLayer | system_accent1_600 | system_accent1_300 |
Nội dung trạng thái thứ cấp | màuThứ cấpTrạng tháiNội dung | system_accent2_700 | system_accent2_200 |
Lớp trạng thái thứ cấp | màuThứ cấpStateLayer | system_accent2_600 | system_accent2_300 |
Về nội dung trạng thái chính | colorOnPrimaryStateNội dung | system_accent1_0 | system_accent1_800 |
Trên lớp trạng thái chính | colorOnPrimaryStateLayer | system_accent1_900 | system_accent1_800 |
Về nội dung trạng thái thứ cấp | colorOnSecondaryStateNội dung | system_accent2_0 | system_accent2_800 |
Trên lớp trạng thái thứ cấp | colorOnSecondaryStateLayer | system_accent2_900 | system_accent2_800 |
Về nội dung trạng thái vùng chứa chính | colorOnPrimaryContainerStateContent | system_accent1_900 | system_accent1_900 |
Trên lớp trạng thái vùng chứa chính | colorOnPrimaryContainerStateLayer | system_accent1_900 | system_accent1_900 |
Về nội dung trạng thái vùng chứa thứ cấp | colorOnSecondaryContainerStateContent | system_accent2_900 | system_accent2_900 |
Trên lớp trạng thái vùng chứa thứ cấp | colorOnSecondaryContainerStateLayer | system_accent2_900 | system_accent2_900 |
Về nội dung trạng thái vùng chứa cấp ba | colorOnTertiaryContainerStateContent | system_accent3_900 | system_accent3_900 |
Trên lớp trạng thái vùng chứa cấp ba | colorOnTertiaryContainerStateLayer | system_accent3_900 | system_accent3_900 |
Nội dung trạng thái bề mặt | colorOnSurfaceStateNội dung | system_neutral1_900 | hệ thống_trung tính1_100 |
Trên lớp trạng thái bề mặt | colorOnSurfaceStateLayer | system_neutral1_900 | hệ thống_trung tính1_100 |
Nội dung trạng thái biến thể trên bề mặt | colorOnSurfaceVariantStateContent | system_neutral2_700 | system_neutral2_200 |
Trên lớp trạng thái biến thể bề mặt | colorOnSurfaceVariantStateLayer | system_neutral2_700 | system_neutral2_200 |
Nội dung trạng thái lỗi | màuErrorStateNội dung | đỏ800 | đỏ200 |
Câu hỏi thường gặp
Chiết xuất màu
Khi người dùng thay đổi hình nền, quá trình trích xuất màu có tự động được thực hiện hay nó cần được kích hoạt từ đâu đó?
Với các bản vá Android 12 , tính năng trích xuất màu hình nền được bật theo mặc định .
ThemeOverlayController.java
kích hoạt logic bằng ThemeOverlayController#mOnColorsChangedListener
và WallpaperManager#onWallpaperColorsChanged
.
Đối với Hình nền động hoặc Hình nền video , chúng ta có thể biết khi nào Trích xuất màu lấy màu từ màn hình không? Một số người dùng có thể muốn màu sắc từ khung hình cuối cùng vì nó hiển thị nhiều nhất.
Trích xuất màu được kích hoạt khi người dùng đặt hình nền hoặc sau một chu kỳ bật nguồn màn hình (để phản hồi WallpaperEngine#notifyColorsChanged
). Sự kiện WallpaperColors
cuối cùng (từ hình nền động) được áp dụng sau khi người dùng tắt màn hình và bật lại.
Bộ chọn chủ đề/hình nền
Làm cách nào để bật bộ chọn chủ đề hiển thị nhiều màu nguồn để người dùng chọn ngoài màu có tần suất cao nhất? Có cách nào để lấy những màu đó từ logic trích xuất không?
Đúng. Trong bộ chọn chủ đề, bạn có thể sử dụng ColorScheme#getSeedColors(wallpaperColors: WallpaperColors)
.
Có một tính năng trên tên Pixel là Biểu tượng theo chủ đề . Nó có được bao gồm trong ba bản vá bạn đã chia sẻ không? Làm thế nào các OEM có thể thực hiện điều đó?
Không. Các biểu tượng theo chủ đề đang ở giai đoạn Beta và không có sẵn trong Android 12.
Có cách nào để sử dụng ứng dụng Google Wallpaper khi bật tính năng chọn lọc và trích xuất màu không?
Đúng. Các tính năng này có thể được triển khai trong phiên bản mới nhất của ứng dụng Hình nền Google bằng cách thực hiện theo các bước tích hợp được mô tả trước đó trên trang này.
Hãy liên hệ với TAM của bạn để biết thêm chi tiết.
Google có thể chia sẻ ứng dụng hoặc mã nguồn để các OEM có thể triển khai phiên bản xem trước màu động của riêng họ trên menu cài đặt của họ, trông giống như phần xem trước được hiển thị trên ứng dụng Bộ chọn hình nền của Google không?
Các lớp chính hiển thị bản xem trước là WallpaperPicker2
và Launcher3
.
Màn hình xem trước hình nền là WallpaperSectionController
.
Làm cách nào để triển khai Bản xem trước sau khi thay đổi màu sắc, như được hiển thị trong ứng dụng Hình nền Google?
Ứng dụng Bộ chọn hình nền yêu cầu ContentProvider
có sẵn từ Trình khởi chạy (trình khởi chạy dựa trên Launcher3
có nó). Bản xem trước được GridCustomizationsProvider
cung cấp trong Trình khởi chạy. Bản xem trước này phải được tham chiếu trong siêu dữ liệu của Hoạt động chính của Trình khởi chạy để ứng dụng hình nền và kiểu đọc được. Tất cả điều này được triển khai trong Launcher3 của AOSP và có sẵn cho các OEM.