Triển khai các biểu tượng thích ứng

Biểu tượng thích ứng duy trì hình dạng nhất quán trong nội bộ thiết bị nhưng thay đổi tùy theo thiết bị chỉ với một nội dung biểu tượng do nhà phát triển cung cấp. Ngoài ra, các biểu tượng hỗ trợ hai lớp (nền trước và nền sau) có thể được sử dụng cho chuyển động nhằm mang lại sự thích thú về mặt thị giác cho người dùng.

Người triển khai thiết bị cung cấp mặt nạ thiết bị sẽ quyết định hình dạng của tất cả các biểu tượng trên thiết bị. Biểu tượng này sẽ được sử dụng trên mọi bề mặt giao diện người dùng hệ thống sử dụng Biểu tượng trình khởi chạy (ví dụ: trình khởi chạy, tổng quan, cài đặt và trang chia sẻ).

Ví dụ và nguồn

Ví dụ về mã:

  • platform/development/samples/AdaptiveIconSample/

Tài liệu dành cho nhà phát triển:

Mã nguồn:

  • platform/frameworks/base/graphics/java/android/graphics/drawable/AdaptiveIconDrawable.java

Thực hiện

Để thay đổi hình dạng của biểu tượng trên nền tảng, hãy phủ một chuỗi trong framework/base/core/res/res/values/config.xml , như sau:

<!-- Specifies the path that is used by AdaptiveIconDrawable class to crop launcher icons. -->
    <string name="config_icon_mask" translatable="false">"M50,0L100,0 100,100 0,100 0,0z"</string>

Định dạng và cú pháp của chuỗi tuân theo tiêu chuẩn W3, SVG cho định nghĩa đường dẫn . Định dạng này cho PathData cũng là định dạng mà vectơ vẽ được của Android cũng hỗ trợ.

Đường dẫn này phải lồi và phải tôn trọng vùng an toàn (66/71 = 91%) trong giới hạn chế độ xem. Điều này được thực thi trong một trong các bài kiểm tra CTS.

Nếu bạn quyết định sử dụng hình tròn làm mặt nạ nền tảng, hãy đảm bảo phủ cả config_useRoundIcon = true. Nếu không, hãy đặt giá trị cấu hình này sai hoặc không chỉ định giá trị cấu hình này.

API biểu tượng thích ứng

API cho lớp AdaptiveIconDrawable được hiển thị bên dưới:

package  android.graphics.drawable;
    public class AdaptiveIconDrawable extends Drawable implements Drawable.Callback {
    method public Drawable getBackground();
    method public Drawable getForeground();
    method public Path getIconMask();
    method public Region getSafeZone();
    method public float getExtraInsetFraction();
    method public int getOpacity();
    method public void invalidateDrawable(Drawable);
    method public void scheduleDrawable(Drawable, Runnable, long);
    method public void setAlpha(int);
    method public void setColorFilter(ColorFilter);
    method public void setOpacity(int);
    method public void unscheduleDrawable(android.graphics.drawable.Drawable, java.lang.Runnable);
    }
public class Icon extends Parceleable {
    method public Bitmap createWithAdaptiveBitmap();
    }

Thực hiện tham khảo

Không cần phải làm gì để hiển thị các biểu tượng thích ứng tĩnh trên bất kỳ bề mặt UI hệ thống nào. Khi PackageManager trả về một đối tượng có thể vẽ, chỉ cần liên kết đối tượng đó với ImageView. Đây là cách các biểu tượng đã được hiển thị trong nền tảng Pre-O.

Về việc hiển thị hiệu ứng chuyển động động, Launcher3 (nền tảng/gói/ứng dụng/Launcher3) sẽ có triển khai tham chiếu cho biết cách đạt được hiệu ứng trong O-MR1.

Thẩm định

Để xác thực việc triển khai, sau khi ghi đè mặt nạ theo ý thích của họ, hãy xem liệu các biểu tượng có được hiển thị chính xác trong Launcher3, Cài đặt, Tổng quan và Cài đặt hay không. Bạn cũng có thể chạy AdaptiveIconDrawableTest.java và AdaptiveIconMaskTest.java bên trong CTS TestCase đồ họa để kiểm tra việc triển khai.

Bạn có thể tìm thấy trường hợp kiểm thử thủ công được đề xuất tại: platform/development/samples/AdaptiveIconSample/.

Các vấn đề đã biết

Các vấn đề đã biết bao gồm:

  • Biểu tượng mờ, tùy thuộc vào cách xác định đường dẫn mặt nạ.
  • Biểu tượng phím tắt được phóng to nếu nhà phát triển ứng dụng không sử dụng phương thức Icon.createWithAdaptiveBitmap() hoặc không sử dụng phương pháp này đúng cách. Để phương thức này hoạt động bình thường, phần được truyền trong Bitmap phải được đệm 25% ở cả bốn phía.

Những vấn đề này có thể được giải quyết như sau:

  • Mặt nạ phải được xác định theo hệ tọa độ [0, 100] x [0, 100].
  • Đảm bảo rằng hình ảnh được sử dụng cho các biểu tượng thích ứng (biểu tượng trình khởi chạy, phím tắt) có đủ khoảng đệm (25%) ở cả bốn cạnh.