Thiết kế Material You

Kể từ Android 12, thiết kế Material You tập trung vào tính biểu cảm 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 liền mạch, phù hợp với nhu cầu của họ. Là đối tác của Android, bạn nên tích hợp thiết kế Material You vào các thiết bị Android của mình ở 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á nhất quán, phong phú 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 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 theo cách nhất quán trên 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 nhà sản xuất thiết bị gốc (OEM).

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 sử dụng ứng dụng ThemePicker của AOSP, thì ứng dụng WallpaperPicker sẽ hiển thị phần màu nếu cả hai điều kiện sau đây đều được đáp ứng:

  • 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 hiện có 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 có đị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 phải có một chuỗi bundle_name_item, với 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.

Giá trị màu thực tế có thể nằm trên cùng một tệp 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, bạn phải có mục nhập color_primary_itemcolor_secondary_item (và cả hai màu phải giống nhau). Giá trị của các mục nhập 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: 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ì 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 trình chọn giao diện hoặc trình 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 lựa 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 quá trình trích xuất hình nền bắt đầu từ 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 chế độ cài đặ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 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 này; thông tin chi tiết được cung cấp bên dưới mô tả cách triển khai.

Để nhà phát triển có thể sử dụng nhất quán, 5 bảng sắc độ (accent1, accent2, accent3, trung tính 1, trung tính 2) và 13 màu tương ứ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 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"
    • Tông màu: giống với 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 độ sáng và các lệnh gọi API 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:

  • Sử dụng màu nhấn cho các thành phần 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

Xây 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"
}

Xây 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 bướ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 cũng như sự 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 chính của chuyển động linh hoạt cần phải 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 quá mức 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ạ:

Cuộn xuống cuối cùng trong Material You

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 cho hệ thống).

Sử dụng tính năng cuộn xuống dưới cùng trong ứ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 cảm ứng) trong hệ điều hành

Android 12 có hiệu ứng gợn sóng khi chạm mềm mại và tinh tế hơn để cung cấp 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 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à các 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)

Sử dụng màu sắc trong Material You

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 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 colorPrimary system_accent1_600 system_accent1_200
Trên màu chính colorOnPrimary 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 colorOnError Không áp dụng (màu trắng) Không áp dụng (red_900)
Thông tin khái quát android:colorBackground system_neutral1_10 system_neutral1_900
Trên nền colorOnBackground system_neutral1_900 system_neutral1_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 colorPrimaryStateContent system_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ụ colorSecondaryStateContent system_accent2_700 system_accent2_200
Lớp trạng thái phụ colorSecondaryStateLayer system_accent2_600 system_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 system_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 vùng chứa chính colorOnPrimaryContainerStateLayer system_accent1_900 system_accent1_900
Nội dung trạng thái vùng chứa phụ colorOnSecondaryContainerStateContent system_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 cấp ba colorOnTertiaryContainerStateLayer system_accent3_900 system_accent3_900
Về nội dung trạng thái trên nền tảng colorOnSurfaceStateContent system_neutral1_900 system_neutral1_100
Lớp trạng thái On Surface colorOnSurfaceStateLayer system_neutral1_900 system_neutral1_100
Nội dung trạng thái biến thể trên nền tảng colorOnSurfaceVariantStateContent system_neutral2_700 system_neutral2_200
Lớp trạng thái biến thể trên nền tảng colorOnSurfaceVariantStateLayer system_neutral2_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 có được thực hiện tự động hay cần được kích hoạt từ đâu đó không?

Với các bản vá Android 12, tính năng trích xuất màu hình nền sẽ 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 sắc từ khung hình cuối cùng vì khung hình này hiển thị nhiều 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 các 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).

Có một tính năng trên tên Pixel là Biểu tượng theo chủ đề. Lỗi 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à không có trong Android 12.

Có cách nào để sử dụng ứng dụng Google Hình nền khi bật tính năng chọn và trích xuất màu 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ước đó 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 để các nhà sản xuất thiết bị gốc (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, tương tự như 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 (một 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 Launcher3 của AOSP và được cung cấp cho các nhà sản xuất thiết bị gốc (OEM).