Material You Design

Kể 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 nhất quán, nhất quán đáp ứng nhu cầu của họ. Là đối tác Android, bạn nên tích hợp Material You thiết kế vào thiết bị Android ở những khía cạnh sau:

  • Màu động
  • Chuyển động
  • Tiện ích

Màu động

Màu động là trung 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 đến cho người dùng khả năng tuỳ chỉnh đơn giản và sâu sắc hơn theo cách mà không thiết bị nào khác có thể làm được. Material You cung cấp:

  • Người dùng và nhà phát triển có thể trải nghiệm tính năng cá nhân hoá phong phú và nhất quán trên mọi thiết bị Android.

  • Các nhà sản xuất thiết bị gốc (OEM) Android có cơ hội tiếp tục cải tiến giao diện người dùng hệ thống và ứng dụng của bên thứ nhất theo cách phù hợp với màu sắc, thương hiệu, nhà sản xuất và hình dạng phần cứng của họ.

Để tận dụng màu động, hãy sử dụng tính năng trích xuất màu Material You của Android 12 làm một phần quan trọng trong phần 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 có trong AOSP, đặc biệt là logic lấy một hình nền hoặc màu nguồn giao diện và xuất ra thông qua 65 API màu. Để biết các yêu cầu về màu động, hãy xem phần Sử dụng màu động.

Quy trình màu động đầy đủ bao gồm 4 bước, như minh hoạ dưới đây:

Luồng màu của Material You

Hình 1. Luồng màu động Material You

  1. Người dùng thay đổi hình nền hoặc giao diện thông qua bộ chọn OEM.

  2. Người dùng chọn một trong những mục sau:

    • Giao diện thiết bị. Khi được chọn, Android sẽ tự động chọn một màu nguồn đáp ứng các yêu cầu.

    • Hình nền + giao diện 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.

  3. AOSP mở rộng một màu nguồn thành 5 bảng sắc độ, mỗi bảng có 13 biến thể màu sắc độ, theo logic AOSP, sau đó điền sẵn 65 thuộc tính màu.

  4. Giao diện người dùng của ứng dụng sử dụng 65 thuộc tính màu sắc một cách nhất quán trong hệ sinh thái ứng dụng Android. Bạn nên 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 (Nhà sản xuất thiết bị gốc).

Bản vá Android 12

Để 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 các API 65 màu theo cách nhất quán với hệ sinh thái, hãy đưa các bản vá sau đây vào quá trình triển khai Android 12:

Chỉ định màu tuỳ chỉnh trên ThemePicker

Nếu bạn đang dùng ứng dụng AOSP ThemePicker, thì ứng dụng WallpaperPicker sẽ hiển thị mục màu nếu đáp ứng cả hai điều kiện sau:

  • flag_monet trên frameworks/base/packages/SystemUI/res/values/flags.xmltrue.
  • Tệp APK gốc của hệ thống có tên gói được xác định trong themes_stub_package trong tệp packages/apps/ThemePicker/res/values/override.xml.

Định dạng APK của mô-đun giả lập

Bạn có thể tìm thấy phiên bản mẫu của tệp APK này trong packages/apps/ThemePicker/themes.

Tệp APK này chỉ được chứa tài nguyên, nêu chi tiết về các màu cơ bản có sẵn và tên của các màu đó.

Tệp giả lập phải chứa một tệp XML trong res/xml theo đị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 đều có tên riêng, miễn là các chuỗi bên dưới được đặt tên là bundle_name_item.

Mỗi màu nên có một chuỗi bundle_name_item, kèm theo tên mô tả cho mỗi màu. Bạn có thể dịch các chuỗi này 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, cần có một mục color_primary_item và một mục color_secondary_item (và cả hai màu phải cùng màu). Giá trị của các mục color này là mã màu thực tế của từng màu hiển thị trong phần màu cơ bản.

Bước 1: Tạo trải nghiệm giao diện người dùng

Công cụ chọn giao diện là nơi người dùng tương tác với các tính năng cá nhân hoá mới của Material You và có thể chọn giữa các tuỳ chọn màu hoặc tuỳ chọn đặt trước. Vì màu sắc phù hợp với sản phẩm và thông tin nhân khẩu học của người dùng, bạn có thể mang đến cho người dùng trải nghiệm cá nhân hoá và màu sắc phong phú hơn thông qua việc sử dụng bộ chọn giao diện hoặc bộ chọn hình nền.

  • Khi sử dụng công cụ chọn hình nền, tính năng trích xuất màu hình nền sẽ bật theo mặc định. Tuy nhiên, bạn có thể tuỳ chỉnh bộ chọn để cung cấp thêm nhiều tuỳ chọn cho người dùng.

Bước 2: Trích xuất màu hình nền thành màu nguồn

Để bật tính năng trích xuất màu hình nền, hãy chọn các bản vá Android 12 nêu 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 việc 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. 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 sẽ chọn màu có tần suất cao nhất phù hợp để sử dụng. Để tận dụng các màu nguồn khác do thuật toán trả về và trình bày các màu đó cho người dùng trong bộ chọn giao diện, hãy sử dụng ColorScheme#getSeedColors(wallpaperColors: WallpaperColors).

Để phù hợp với việc sử dụng, màu nguồn (dù được trích xuất từ hình nền hay 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 được chuyển đổi từ một màu duy nhất thành 65 màu sắc độ và vẫn thể hiện lựa chọn của người dùng. Để đọc và sửa đổi màu sắc 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ợ tính năng 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 của bên thứ ba hỗ trợ màu động trông rất đẹp bằng cách làm như sau:

  • Sử dụng bảng màu Material mặc định bằng cách tắt flag_monet trên frameworks/base/packages/SystemUI/res/values/flags.xml.
  • Đảm bảo người dùng vẫn có thể cá nhân hoá hệ điều hành của họ bằng cách sử dụng bộ chọn giao diện đặt trước.

Bước 3: Mở rộng màu nguồn thành API màu

Bằng cách sử dụng một màu nguồn duy nhất lấy từ bước trước, Android sẽ tạo 5 bảng sắc độ riêng biệt (màu nhấn 1-3, trung tính 1-2), mỗi bảng bao gồm 13 màu và mỗi màu bao gồm các giá trị độ chói khác nhau (từ 0 đến 1000), tổng cộng 65 màu. Logic được cung cấp trong các bản vá Android 12 triển khai chính xác việc mở rộng màu sắc này; thông tin chi tiết được cung cấp bên dưới mô tả cách triển khai.

Để đảm bảo tính nhất quán cho nhà phát triển, 5 bảng sắc độ màu (accent1, nhấn2, trọng âm3, trung tính1, trung tính2) và 13 màu tương ứng phải dựa trên màu nguồn duy nhất có các thay đổi tương ứng đối với các giá trị sắc độ và màu sắc của CAM16 như được ghi dưới đây:

  • system_accent1

    • Độ sắc độ: sử dụng "40" cho các biến thể màu kết thúc bằng 0, 10, 50100, nếu không thì sử dụng "48"
    • Hue: giống như nguồn
  • system_accent2

    • Sắc độ: sử dụng "16"
    • Tông màu: giống với nguồn
  • system_accent3

    • Độ sắc độ: sử dụng "32"
    • Hue (Màu sắc): xoay 60 độ theo chiều dương
  • system_neutral1

    • Sắc độ: sử dụng "4"
    • Tông màu: giống với nguồn
  • system_neutral2

    • Độ sắc độ: sử dụng "8"
    • Tông màu: giống với nguồn

CTS bao gồm các bài kiểm thử để xác thực các lệnh gọi API độ sáng và 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 bạn đặt màu động trên thiết bị, các ứng dụng sẽ tuân theo nguyên tắc của Material để sử dụng màu sắc. Nguyên tắc Material sẽ được phát hành trên material.io muộn nhất vào ngày 26 tháng 10 năm 2021 để các ứng dụng bên thứ ba áp dụng. Đối với Giao diện người dùng của hệ thống và ứng dụng của bên thứ nhất, bạn nên tích hợp màu độ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 mình, đồng thời giúp bạn tạo sự khác biệt cho thiết bị.

Để biết hướng dẫn chung về màu động, hãy xem những nội dung sau:

  • Dùng màu nhấn cho các phần tử trê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 liên kết màu sắc và cách sử dụng API trong SysUI, hãy xem phần Tài nguyên bổ sung.

Bước 5: Thêm các tuỳ chọn màu động trong quá trình triển khai AOSP WallpaperPicker

Bản dựng cho Android 13 trở lên

Kể từ Android 13, android.theme.customization.accent_color không còn được dùng nữa. Thêm một thuộc tính mới android.theme.customization.theme_style để hỗ trợ nhiều biến thể màu. 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.

Các thông tin này được gửi đến Settings.Secure.THEME_CUSTOMIZATION_OVERLAY_PACKAGES, như minh hoạ trong JSON bên dưới:

{
    "android.theme.customization.system_palette":"B1611C",
    "android.theme.customization.theme_style":"EXPRESSIVE"
}

Bản dựng cho Android 12 trở xuống

Khi sử dụng bộ chọn giao diện tuỳ chỉnh, thiết bị phải gửi một màu nguồn hợp lệ đến Settings.Secure.THEME_CUSTOMIZATION_OVERLAY_PACKAGES bằng cách cung cấp tệp JSON ở định dạng sau (trong đó 746BC1 là ví dụ về màu nguồn hợp lệ):

{
      "android.theme.customization.system_palette":"746BC1",
      "android.theme.customization.accent_color":"746BC1"
}

Thao tác 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 phiếu yêu cầu hỗ trợ

Ngoài việc tích hợp hệ thống, bạn cần gửi phiếu yêu cầu hỗ trợ 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 bên thứ ba đều sử dụng Thành phần Material cho Android để hiển thị màu động, nên chúng tôi đang sử dụng danh sách cho phép được mã hoá cứng để cho biết thiết bị nào đã tích hợp tính năng Bảng sắc độ màu động.

Chuyển động

Chuyển động mượt mà giúp thiết bị trở nên hiện đại và cao cấp. Để xây dựng và duy trì niềm tin và mức độ hài lòng của nhà phát triển, hiệu ứng 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 giao diện nhất quán.

Sử dụng tính năng cuộn xuống dưới cùng trong hệ điều hành

Android 12 có một chuyển động cuộn xuống dưới linh hoạt, nhạy hơn ở dạng kéo giãn khung hiển thị, hiển thị khi người dùng cố gắng cuộn qua cạnh của danh sách. Sau đây là ví dụ minh hoạ:

Chất liệu mà bạn cuộn quá mức

Hình 2. Hiệu ứng cuộn quá mức trên Android 12, như trong phần Cài đặt

Để đảm bảo tính nhất quán cho nhà phát triển, hãy đảm bảo hiệu ứng cuộn xuống dưới cùng trên thiết bị của bạn tương tự như sau:

  • Trên các thiết bị trả về true cho ActivityManager.isHighEndGfx(), hiệu ứng cuộn quá mức là độ giãn không tuyến tính của màn hình (như minh hoạ ở trên).

  • Trên các thiết bị có hiệu suất thấp hơn, hiệu ứng kéo giãn được đơn giản hoá thành hiệu ứng kéo giãn tuyến tính (để giảm tải trên hệ thống).

Sử dụng chế độ cuộn quá mức trong các ứng dụng của bên thứ nhất

Khi sử dụng thành phần hiển thị tuỳ 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 giãn.

  • Để hỗ trợ tính năng kéo giãn khi cuộn, hãy nâng cấp lên các thư viện mới nhất:

    • androidx.recyclerview:recyclerview:1.3.0-alpha01 cho RecyclerView
    • androidx.core:core:1.7.0-alpha01 cho NestedScrollViewEdgeEffectCompat
    • androidx.viewpager:viewpager:1.1-alpha01 cho ViewPager
  • Đối với các bố cục tuỳ chỉnh sử dụng EdgeEffect, hãy xem xét những thay đổi sau đây về trải nghiệm người dùng:

    • Với tính năng cuộn kéo giãn, người dùng không nên tương tác với nội dung của bố cục trong khi bố cục đó đang được kéo giãn. Người dùng chỉ nên thao tác với chính phần kéo giãn, chẳng hạn như 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 ảnh động EdgeEffect đang diễn ra, họ sẽ nắm bắt được ảnh động và được phép thao tác với tính năng kéo giãn. Bạn có thể sử dụng giá trị kéo hiện tại từ EdgeEffectCompat.getDistance().

    • Để thao tác với giá trị kéo và trả về lượng đã tiêu thụ, hãy sử dụng onPullDistance(). Điều này cho phép nhà phát triển chuyển đổi liền mạch từ việc kéo giãn sang cuộn khi ngón tay kéo giãn nội dung ra khỏi vị trí bắt đầu.

    • Khi làm việc với tính năng cuộn lồng nhau, nếu nội dung bị kéo giãn, thì thao tác kéo giãn sẽ sử dụng chuyển động chạm trước nội dung 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ì thả thao tác kéo giãn.

Để biết thông tin chi tiết về tính năng cuộn quá mức, hãy tham khảo phần Tạo ảnh động cho cử chỉ cuộn.

Sử dụng hiệu ứng gợn sóng (phản hồi chạm) trong hệ điều hành

Android 12 có một hiệu ứng gợn sóng khi chạm nhẹ nhàng, tinh tế hơn để đưa ra ý kiến phản hồi cho người dùng khi nhấn xuống.

Gợn sóng Material You

Hình 3. Hiệu ứng gợn sóng của Android 12, với ảnh động tô màu mềm mại 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 hiệu ứng gợn sóng trên thiết bị của bạn tương tự như ví dụ ở 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 thử hiệu ứng này trên các thiết bị để kiểm tra xem có bất kỳ sự hồi quy ngoài ý muốn nào được đưa vào quá trình triển khai hay không.

Tiện ích

Tiện ích là thành phần chính của thiết bị Android. Android 12 bao gồm các API mới và chức năng API mà tất cả nhà sản xuất thiết bị gốc (OEM) đều phải hỗ trợ.

Tài nguyên khác

Sử dụng màu SysUI

(accent1 = A1, accent2 = A2, accent3 = A3, neutral1 = N1, neutral2 = N2)

Chất liệu bạn sử dụng màu sắc

Hình 4. Sử dụng màu động trong Giao diện người dùng hệ thống

Thông tin cập nhật về thuộc tính màu trong thư viện Material

Material sẽ cập nhật các thuộc tính giao diện trong bản phát hành sắp tới bằng cách tạo vai trò màu dùng để cung cấp màu cho các thành phần hiển thị cụ thể.

Vai trò của màu sắc Thuộc tính giao diện Android Giao diện sáng
Màu động
Giao diện tối
Màu động
Chính màu chính system_accent1_600 hệ thống_accent1_200
Trên màu chính colorOnPrimary (màu nền chính) system_accent1_0 system_accent1_800
Cấp hai colorSecondary system_accent2_600 system_accent2_200
Trên màu cấp hai colorOnSecondary system_accent2_0 system_accent2_800
Lỗi colorError Không áp dụng (red_600) Không áp dụng (red_200)
Trên màu của lỗi Lỗi colorOnError Không áp dụng (màu trắng) Không áp dụng (màu đỏ_900)
Thông tin khái quát android:colorBackground system_neutral1_10 hệ thống_trung_bình1_900
Trên nền colorOnBackground hệ thống_trung_bình1_900 hệ thống_trung_bình1_100
Bề mặt colorSurface system_neutral1_10 system_neutral1_900
Trên khu vực colorOnSurface system_neutral1_900 system_neutral1_100

Material sẽ cập nhật các thuộc tính trạng thái bằng các con trỏ sau:

Vai trò của màu Thuộc tính giao diện Android Giao diện sáng
Màu động
Giao diện tối
Màu động
Nội dung trạng thái chính colorPrimaryStateNội dung hệ thống_accent1_700 system_accent1_200
Lớp trạng thái chính colorPrimaryStateLayer system_accent1_600 system_accent1_300
Nội dung trạng thái phụ trạng thái thứ haiNội dung system_accent2_700 system_accent2_200
Lớp trạng thái phụ colorsecondaryStateLayer (lớp) system_accent2_600 hệ thống_accent2_300
Trên nội dung trạng thái chính colorOnPrimaryStateContent system_accent1_0 system_accent1_800
Trên Lớp trạng thái chính colorOnPrimaryStateLayer hệ thống_accent1_900 system_accent1_800
Nội dung về trạng thái phụ colorOnSecondaryStateContent system_accent2_0 system_accent2_800
Trên Lớp trạng thái phụ colorOnSecondaryStateLayer system_accent2_900 system_accent2_800
Nội dung về 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 của vùng chứa chính colorOnPrimaryContainerStateLayer system_accent1_900 hệ thống_accent1_900
Trên nội dung trạng thái vùng chứa phụ colorOnSecondaryContainerStateContent hệ thống_accent2_900 system_accent2_900
Trên Lớp trạng thái vùng chứa phụ colorOnSecondaryContainerStateLayer system_accent2_900 system_accent2_900
Nội dung về 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 thứ ba colorOnTertiaryContainerStateLayer system_accent3_900 system_accent3_900
Trên nội dung ở trạng thái hiển thị colorOnSurfaceStateContent system_neutral1_900 system_neutral1_100
Trên lớp trạng thái bề mặt colorOnSurfaceStateLayer system_neutral1_900 system_neutral1_100
Nội dung trạng thái biến thể trên nền tảng colorOnSurfaceVariantStateContent hệ thống_trung_bình2_700 hệ_thống_trung_bình2_200
Lớp trạng thái biến thể trên nền tảng colorOnSurfaceVariantStateLayer hệ thống_trung_bình2_700 system_neutral2_200
Nội dung trạng thái lỗi colorErrorStateContent red800 red200

Câu hỏi thường gặp

Trích xuất màu

Sau khi người dùng thay đổi hình nền, quá trình trích xuất màu sẽ tự động được thực hiện hay cần được kích hoạt từ một nơi nào đó?

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#mOnColorsChangedListenerWallpaperManager#onWallpaperColorsChanged.

Đối với Hình nền động hoặc Hình nền video, chúng ta có thể biết thời điểm tính năng 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 của khung hình cuối cùng vì khung này hiển thị nhiều lần nhất.

Quá trình 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ỳ nguồn điệ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 và bật lại màn hình.

Bộ chọn giao diện/hình nền

Làm cách nào để bật bộ chọn giao diện hiển thị nhiều màu nguồn để người dùng chọn thay vì 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?

Có. Trong bộ chọn giao diện, bạn có thể sử dụng ColorScheme#getSeedColors(wallpaperColors: WallpaperColors).

Tên điện thoại Pixel có một tính năng là Biểu tượng theo chủ đề. API này có nằm trong 3 bản vá mà bạn đã chia sẻ không? OEM có thể triển khai điều đó bằng cách nào?

Không. Biểu tượng theo chủ đề đang ở giai đoạn thử nghiệm và sẽ không có trên Android 12.

Có cách nào để sử dụng ứng dụng Google Wallpaper khi đã bật các tính năng trích xuất màu và chọn không?

Có. Bạn có thể triển khai các tính năng này trong phiên bản mới nhất của ứng dụng Google Hình nền bằng cách làm theo các bước tích hợp được mô tả ở trên trang này.

Hãy liên hệ với Nhà quản lý tài khoản của bạn để biết thêm thông tin.

Google có thể chia sẻ ứng dụng hoặc mã nguồn để OEM có thể triển khai phiên bản xem trước màu động của riêng họ trên trình đơn cài đặt (giống với phần xem trước hiển thị trên ứng dụng Công cụ 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à WallpaperPicker2Launcher3.

Màn hình xem trước hình nền là WallpaperSectionController.

Làm cách nào để triển khai tính năng Xem trước sau khi thay đổi màu sắc, như hiển thị trong ứng dụng Hình nền của Google?

Ứng dụng Trình chọn hình nền dự kiến sẽ có ContentProvider từ Trình chạy (trình chạy dựa trên Launcher3 có ứng dụng này). Bản xem trước do GridCustomizationsProvider cung cấp trong Trình chạy. Bạn nên tham chiếu bản xem trước này trong thuộc tính siêu dữ liệu của Hoạt động chính của Trình chạy để ứng dụng hình nền và kiểu đọc được bản xem trước. Tất cả những tính năng này được triển khai trong Trình chạy 3 của AOSP và có sẵn cho các OEM.