Thiết kế Material You

Kể từ Android 12, thiết kế Material You tập trung vào tính biểu đạt 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, nhất quán, phù hợp với nhu cầu của họ. Là đối tác của Android, bạn nên kết 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à 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 đến cho người dùng khả năng tuỳ chỉnh đơn giản và chuyên sâu hơn theo cách mà không thiết bị nào khác làm được. Material You cung cấp:

  • Người dùng và nhà phát triển có một câu chuyện nhất quán và phong phú về hoạt động cá nhân hoá 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 bên thứ nhất theo cách phù hợp với phần cứng, màu sắc thương hiệu, nhà sản xuất và hình thức của họ.

Để tận dụng màu linh động, hãy sử dụng câu chuyện trích xuất màu Material You của Android 12 làm phần chính trong phần mềm bạn cung cấp 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 nhận một hình nền hoặc màu nguồn giao diện 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 phần Sử dụng màu động.

Luồng 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. Quy trình sử dụng màu động của Material You

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

  2. Người dùng chọn một trong các lựa chọn sau:

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

    • Hình nền và giao diện mới. Khi bạn 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àu nguồn duy nhất thành 5 bảng sắc độ, mỗi bảng có 13 biến thể màu sắc theo logic của AOSP, sau đó điền vào 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 toàn bộ 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.

Bản vá Android 12

Để có được logic từ đầu đến cuối cho quy trình trích xuất màu hình nền và cho phép thiết bị điền 65 API màu theo cách nhất quán 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:

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.
  • Một APK stub 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 stub

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ỉ nên chứa các 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 chúng.

Stub 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ó một tên riêng biệt, miễn là các chuỗi bên dưới có tên là bundle_name_item.

Phải có một chuỗi bundle_name_item cho mỗi màu, kèm theo tên mô tả cho từng 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 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ặt hàng trong mảng gói màu, phải có một mục color_primary_item và một mục color_secondary_item (và cả hai màu phải giống nhau). Các giá trị cho những mục color này là mã màu thực tế cho từng màu sẽ xuất hiện trong phần màu cơ bản.

Bước 1: Xây dựng trải nghiệm tạo giao diện cho 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 chức năng cá nhân hoá mới của Material You và có thể chọn giữa các lựa chọn màu sắc hoặc chế độ cài đặt sẵn. Khi phù hợp với sản phẩm và nhân khẩu học 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 bạn sử dụng một 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 một số thành phần chọn để cung cấp nhiều lựa chọn hơ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 đượ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 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 này 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 những màu đó cho người dùng trong công cụ chọn giao diện, hãy sử dụng ColorScheme#getSeedColors(wallpaperColors: WallpaperColors).

Để phù hợp với mục đích sử dụng, màu nguồn (cho dù được trích xuất từ hình nền hay một màu đặt sẵn 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 đại diện cho lựa chọn của người dùng. Để đọc và sửa đổi màu trong CAM16, hãy dùng Cam#fromInt hoặc Cam#getInt.

Sử dụng bảng màu không động Đối với những thiết bị không hỗ trợ tính năng trích xuất màu từ 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 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 một trình chọn giao diện đặt sẵn.

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

Bằng cách sử dụng màu nguồn duy nhất có được từ bước trước, Android sẽ tạo ra 5 bảng sắc độ riêng biệt (nhấn mạnh 1-3, trung tính 1-2), mỗi bảng có 13 màu và mỗi màu có các giá trị độ chói khác nhau (từ 0 đến 1000), tổng cộng là 65 màu. Logic được cung cấp trong các bản vá Android 12 triển khai đúng cách 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ả quá trình triển khai.

Để đảm bảo tính nhất quán cho nhà phát triển, 5 bảng sắc độ (accent1, accent2, accent3, neutral1, neutral2) 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 về giá trị sắc độ và tông màu CAM16 như được viết bên dưới:

  • system_accent1

    • Độ bão hoà: 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ì dùng "48"
    • Tông màu: giống như nguồn
  • system_accent2

    • Chroma: sử dụng "16"
    • Tông màu: giống như nguồn
  • system_accent3

    • Chroma: sử dụng "32"
    • Sắc độ: xoay 60 độ theo chiều dương
  • system_neutral1

    • Độ bão hoà: sử dụng "4"
    • Tông màu: giống như nguồn
  • system_neutral2

    • Chroma: sử dụng "8"
    • Tông màu: giống như nguồn

CTS bao gồm các kiểm thử để xác thực các lệnh gọi API về độ chói và sắc độ. Để chạy, hãy sử dụng atest SystemPalette.

Bước 4: Sử dụng màu động trong các ứng dụng và giao diện người dùng hệ thống

Sau khi bạn đặt màu động trên một thiết bị, các ứng dụng sẽ tuân theo nguyên tắc của Material để sử dụng các màu đó. 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 hệ thống và các ứng dụng của bên thứ nhất, bạn nên tích hợp màu linh độ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 sắc động, hãy xem những nội dung sau:

  • Sử 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 phần tử 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 và cách các API được dùng trong SysUI, hãy xem phần Tài nguyên bổ sung.

Bước 5: Thêm các lựa chọn về màu động trong quá trình triển khai WallpaperPicker của AOSP

Tạo 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 sắc khác nhau. Chúng tôi hiện có 4 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"
}

Tạo cho Android 12 trở xuống

Khi dùng một 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 một tệp JSON ở định dạng sau (trong đó 746BC1 là một 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à mở rộng trực tiếp màu nguồn đã 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 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 đang sử dụng Các thành phần Material cho Android để hiển thị màu động, nên chúng tôi đang sử dụng một danh sách cho phép được mã hoá cứng để cho biết những thiết bị nào đã tích hợp tính năng Bảng màu sắc thái động.

Chuyển động

Chuyển động mượt mà mang đến cảm giác hiện đại và cao cấp cho thiết bị. Để 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à hiệu ứng gợn sóng là hai phần quan trọng của chuyển động mượt mà cần có giao diện và cảm giác nhất quán.

Sử dụng thao tác kéo quá mức trong hệ điều hành

Android 12 có chuyển động cuộn quá mức linh hoạt và phản hồi nhanh hơn dưới dạng một chế độ xem kéo giãn, xuất hiện khi người dùng cố gắng cuộn qua cạnh của một danh sách. Sau đây là ví dụ minh hoạ:

Hiệu ứng cuộn quá mức của Material You

Hình 2. Hiệu ứng cuộn quá mức của 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 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à hiệu ứng kéo 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, 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 thao tác kéo quá mức trong các ứng dụng bên thứ nhất

Khi sử dụng các 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 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 cho RecyclerView
    • androidx.core:core:1.7.0-alpha01 cho NestedScrollViewEdgeEffectCompat
    • androidx.viewpager:viewpager:1.1-alpha01 cho ViewPager
  • Đối với những bố cục tuỳ chỉnh sử dụng EdgeEffect, hãy cân nhắc những thay đổi sau đây về trải nghiệm người dùng:

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

    • Để thao tác với giá trị kéo và trả về số lượng đã sử dụng, hãy dùng onPullDistance(). Điều này cho phép nhà phát triển chuyển đổi mượt mà từ thao tác kéo giãn sang thao tác cuộn khi ngón tay kéo giãn nội dung vượt quá 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, thì thao tác kéo giãn sẽ tiêu thụ 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ề thao tác cuộn quá mức, hãy tham khảo bài viết Tạo ảnh động cho Cử chỉ cuộn.

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

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

Hiệu ứ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 đổ đầy mượt mà 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ụ minh hoạ ở 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ị của mình để kiểm tra xem có bất kỳ lỗi hồi quy không mong muốn nào xuất hiện trong 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 có các API và chức năng API mới mà tất cả các OEM đều phải hỗ trợ.

Tài nguyên khác

Cách sử dụng màu trong SysUI

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

Sử dụng màu 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 các 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ò về 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 tự độ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 (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 những con trỏ sau:

Vai trò về 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 tự độ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 của tiểu bang thứ hai colorSecondaryStateContent system_accent2_700 system_accent2_200
Lớp trạng thái phụ colorSecondaryStateLayer system_accent2_600 system_accent2_300
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
Trên nội dung 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 về 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
Nội dung về trạng thái của thiết bị colorOnSurfaceStateContent system_neutral1_900 system_neutral1_100
Lớp trạng thái trên bề mặt colorOnSurfaceStateLayer system_neutral1_900 system_neutral1_100
Nội dung trạng thái On Surface Variant colorOnSurfaceVariantStateContent system_neutral2_700 system_neutral2_200
On Surface Variant State Layer 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ó tự động diễn ra 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 từ 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 của khung hình cuối cùng vì khung hình này xuất hiện trong thời gian dài 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 khi màn hình tắt rồi bật lại (để 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 rồi 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 công cụ chọn giao diện nhằm cho phép người dùng chọn nhiều màu nguồ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 trình 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 điện thoại Pixel có tên là biểu tượng theo chủ đề. Bản vá này có nằm trong 3 bản vá mà bạn đã chia sẻ không? Các nhà sản xuất thiết bị gốc (OEM) có thể triển khai tính năng đó 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 để dùng ứng dụng Hình nền của Google khi đã bật tính năng trích xuất và chọn 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 TAM của bạn để biết thêm thông tin 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 trình đơn cài đặt, trông tương tự như phần xem trước xuất hiện trên ứng dụng Bộ chọn hình nền của Google không?

Các lớp chính kết xuất 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 Xem trước sau khi thay đổi màu sắc, như minh hoạ trong ứng dụng Hình nền của Google?

Ứng dụng Bộ chọn hình nền yêu cầu Trình chạy cung cấp một ContentProvider (trình chạy dựa trên Launcher3ContentProvider). Bản xem trước do GridCustomizationsProvider cung cấp trong Trình 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 chạy để ứng dụng hình nền và kiểu đọc được. Tất cả những điều này đều được triển khai trong Launcher3 của AOSP và được cung cấp cho các OEM.