Biểu tượng thích ứng

Biểu tượng thích ứng hoặc AdaptiveIconDrawable có thể thay đổi tuỳ thuộc vào khả năng của từng thiết bị và giao diện của người dùng. Biểu tượng thích ứng chủ yếu được trình chạy dùng trên màn hình chính, nhưng cũng có thể được dùng trong các phím tắt, ứng dụng Cài đặt, hộp thoại chia sẻ và màn hình tổng quan. Biểu tượng thích ứng được dùng trên tất cả hệ số hình dạng của Android.

Khác với hình ảnh bitmap, biểu tượng thích ứng có thể thích ứng với nhiều trường hợp sử dụng:

  • Nhiều hình dạng: biểu tượng thích ứng có thể hiển thị nhiều hình dạng trên các mẫu thiết bị khác nhau. Ví dụ: biểu tượng này có thể hiển thị hình tròn trên một thiết bị OEM và hiển thị hình vuông tròn (hình dạng giữa hình vuông và hình tròn) trên một thiết bị khác. Mỗi nhà sản xuất thiết bị gốc phải cung cấp một mặt nạ mà hệ thống dùng để hiển thị tất cả biểu tượng thích ứng có cùng hình dạng.

    Ảnh GIF cho thấy ảnh động lặp lại của cùng một biểu tượng mẫu Android, cho thấy các hình dạng khác nhau tuỳ thuộc vào mặt nạ được dùng – một hình tròn rồi đến hai loại hình vuông tròn khác nhau
    Hình 1. Biểu tượng thích ứng hỗ trợ nhiều loại mặt nạ, tuỳ theo từng thiết bị.
  • Hiệu ứng hình ảnh: biểu tượng thích ứng hỗ trợ nhiều hiệu ứng hình ảnh hấp dẫn. Những hiệu ứng này xuất hiện khi người dùng đặt hoặc di chuyển biểu tượng xung quanh màn hình chính.

    Ảnh GIF minh hoạ ví dụ về 2 biểu tượng mẫu hình tròn của Android, được tạo hiệu ứng động để cho thấy phản hồi của người dùng. Biểu tượng đầu tiên cho thấy biểu trưng Android lắc lư sang trái rồi sang phải, sau đó lên và xuống bên trong vòng tròn. Biểu tượng thứ hai sẽ mở rộng rồi thu nhỏ lại.
    Hình 2. Ví dụ về hiệu ứng hình ảnh do biểu tượng thích ứng hiển thị.
  • Thiết lập giao diện cho người dùng: từ Android 13 (API cấp 33), người dùng có thể thiết lập giao diện cho biểu tượng thích ứng. Nếu người dùng bật biểu tượng ứng dụng theo giao diện bằng cách bật nút Biểu tượng theo giao diện trong phần cài đặt hệ thống và trình chạy có hỗ trợ tính năng này, thì hệ thống sẽ sử dụng màu của hình nền và giao diện mà người dùng chọn để xác định sắc thái màu.

    Hình ảnh minh hoạ ví dụ về 3 thiết bị Android, mỗi thiết bị cho thấy một giao diện người dùng khác nhau với các sắc thái khác nhau: thiết bị đầu tiên cho thấy một hình nền có sắc thái tối; thiết bị thứ hai cho thấy một hình nền có sắc thái vàng; thiết bị thứ ba cho thấy một hình nền có sắc thái xám nhạt pha chút xanh dương. Trong mỗi ví dụ, các biểu tượng đều kế thừa màu của hình nền và hoà trộn một cách hoàn hảo.
    Hình 3. Biểu tượng thích ứng kế thừa từ hình nền và giao diện của người dùng.

    Trong các trường hợp sau, màn hình chính không hiển thị biểu tượng ứng dụng theo chủ đề mà thay vào đó hiển thị biểu tượng ứng dụng thích ứng hoặc tiêu chuẩn:

    • Nếu người dùng không bật biểu tượng ứng dụng theo giao diện.
    • Nếu ứng dụng của bạn không cung cấp biểu tượng ứng dụng đơn sắc.
    • Nếu trình chạy không hỗ trợ biểu tượng ứng dụng theo giao diện.

Thiết kế biểu tượng thích ứng

Để đảm bảo biểu tượng thích ứng hỗ trợ nhiều hình dạng, hiệu ứng hình ảnh và giao diện mà người dùng chọn, thì thiết kế phải đáp ứng các yêu cầu sau:

  • Bạn phải cung cấp hai lớp cho phiên bản biểu tượng đa sắc: một lớp cho nền trước và một lớp cho nền sau. Các lớp có thể là vectơ hoặc bitmap, mặc dù vectơ được ưu tiên hơn.

    Hình ảnh minh hoạ ví dụ về lớp nền trước (hình ảnh bên trái) và lớp nền sau (hình ảnh bên phải). Nền trước cho thấy biểu tượng 16 cạnh của một biểu trưng Android mẫu được căn giữa trong vùng an toàn 66x66. Vùng an toàn nằm ở chính giữa vùng chứa 108x108. Nền cho thấy các kích thước đo lường giống nhau cho vùng an toàn và vùng chứa, nhưng chỉ có nền màu xanh dương và không có biểu trưng.
    Hình 4. Biểu tượng thích ứng được xác định bằng các lớp nền trước và nền sau. Vùng an toàn 66x66 được mô tả là vùng không bao giờ bị cắt bớt bởi lớp phủ do OEM xác định.
    Hình ảnh cho thấy biểu tượng trong hình ảnh trước đó được phủ lên một mặt nạ hình tròn.
    Hình 5. Ví dụ về cách lớp nền trước và lớp nền xuất hiện cùng nhau khi áp dụng mặt nạ tròn.
  • Nếu bạn muốn hỗ trợ giao diện mà người dùng chọn cho biểu tượng ứng dụng, hãy cung cấp một lớp duy nhất cho phiên bản đơn sắc của biểu tượng.

    Hình ảnh minh hoạ ví dụ về một lớp biểu tượng đơn sắc (hình ảnh bên trái) và bản xem trước màu (hình ảnh bên phải). Lớp đơn sắc cho thấy biểu tượng 16 cạnh của một biểu trưng Android mẫu được căn giữa trong vùng an toàn 66x66. Vùng an toàn được căn giữa bên trong vùng chứa 108x108. Bản xem trước màu cho thấy lớp này hiển thị khi được áp dụng cho các giao diện người dùng có màu khác nhau (cam, hồng, vàng và xanh lục).
    Hình 6. Một lớp biểu tượng đơn sắc (trái) với các ví dụ về bản xem trước màu (phải).
  • Điều chỉnh kích thước tất cả các lớp thành 108x108 dp.

  • Sử dụng biểu tượng có các cạnh rõ ràng. Các lớp không được có mặt nạ hoặc bóng nền xung quanh đường viền của biểu tượng.

  • Sử dụng biểu trưng có kích thước tối thiểu là 48x48 dp. Kích thước này không được vượt quá 66x66 dp, vì kích thước trong 66x66 dp của biểu tượng sẽ xuất hiện trong cửa sổ xem có mặt nạ.

18 dp bên ngoài trên mỗi trong số 4 mặt của các lớp được dành riêng cho việc che phủ và tạo hiệu ứng hình ảnh như thị sai hoặc rung động.

Để tìm hiểu cách tạo biểu tượng thích ứng bằng Android Studio, hãy xem mẫu biểu tượng Ứng dụng Android trên Figma hoặc tài liệu về Android Studio để tạo biểu tượng trình chạy. Ngoài ra, hãy xem bài đăng trên blog Thiết kế biểu tượng thích ứng.

Thêm biểu tượng thích ứng vào ứng dụng

Giống như biểu tượng không thích ứng, biểu tượng thích ứng được chỉ định bằng thuộc tính android:icon trong tệp kê khai ứng dụng.

Một thuộc tính không bắt buộc, android:roundIcon, được trình chạy dùng để biểu thị các ứng dụng có biểu tượng hình tròn và có thể hữu ích nếu biểu tượng của ứng dụng có một nền hình tròn làm phần cốt lõi trong thiết kế. Các trình chạy như vậy phải tạo biểu tượng ứng dụng bằng cách áp dụng một lớp phủ hình tròn cho android:roundIcon và đảm bảo này có thể cho phép bạn tối ưu hoá giao diện của biểu tượng ứng dụng bằng cách, chẳng hạn như phóng to biểu trưng một chút và đảm bảo rằng khi bị cắt, nền hình tròn sẽ tràn viền.

Đoạn mã sau minh hoạ cả hai thuộc tính này, nhưng hầu hết các ứng dụng chỉ chỉ định android:icon:

<application
    ...
    android:icon="@mipmap/ic_launcher"
    android:roundIcon="@mipmap/ic_launcher_round"
    ...>
</application>

Tiếp theo, hãy lưu biểu tượng thích ứng vào res/mipmap-anydpi-v26/ic_launcher.xml. Sử dụng phần tử <adaptive-icon> để xác định các tài nguyên lớp đơn sắc, nền và nền trước cho biểu tượng. Các phần tử bên trong <foreground>, <background><monochrome> đều hỗ trợ cả hình ảnh vectơ và bitmap.

Ví dụ sau đây cho thấy cách xác định các phần tử <foreground>, <background><monochrome> bên trong <adaptive-icon>:

<?xml version="1.0" encoding="utf-8"?>
...
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
    <background android:drawable="@drawable/ic_launcher_background" />
    <foreground android:drawable="@drawable/ic_launcher_foreground" />
    <monochrome android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon>
...

Các lớp nền trước và đơn sắc đang sử dụng cùng một đối tượng có thể vẽ. Tuy nhiên, bạn có thể tạo các đối tượng có thể vẽ riêng cho từng lớp nếu cần.

Bạn cũng có thể xác định các mục có thể kéo làm phần tử bằng cách nội tuyến các mục đó vào phần tử <foreground>, <background><monochrome>. Đoạn mã sau đây cho thấy ví dụ về cách thực hiện việc này bằng drawable ở nền trước.

<?xml version="1.0" encoding="utf-8"?>
...
<foreground>
   <inset
       android:insetBottom="18dp"
       android:insetLeft="18dp"
       android:insetRight="18dp"
       android:insetTop="18dp">
       <shape android:shape="oval">
           <solid android:color="#0000FF" />
       </shape>
   </inset>
</foreground>
...

Nếu bạn muốn áp dụng cùng một mặt nạ và hiệu ứng hình ảnh cho lối tắt dưới dạng biểu tượng thích ứng thông thường, hãy dùng một trong các kỹ thuật sau:

  • Đối với các lối tắt tĩnh, hãy dùng phần tử <adaptive-icon>.
  • Đối với các lối tắt động, hãy gọi phương thức createWithAdaptiveBitmap() khi bạn tạo lối tắt.

Để biết thêm thông tin về cách triển khai biểu tượng thích ứng, hãy xem bài viết Triển khai biểu tượng thích ứng. Để biết thêm thông tin về lối tắt, hãy xem bài viết Tổng quan về lối tắt ứng dụng.

Tài nguyên khác

Hãy xem các tài nguyên sau để biết thêm thông tin về cách thiết kế và triển khai biểu tượng thích ứng.