ใช้ไอคอนแบบปรับอัตโนมัติ

ไอคอนแบบปรับอัตโนมัติจะรักษารูปทรงให้สอดคล้องกันภายในอุปกรณ์ แต่จะแตกต่างกันไปตามแต่ละอุปกรณ์ อุปกรณ์ที่มีเนื้อหาไอคอนจากนักพัฒนาซอฟต์แวร์เพียง 1 รายการเท่านั้น นอกจากนี้ ไอคอน รองรับเลเยอร์ 2 ชั้น (พื้นหน้าและพื้นหลัง) ที่ใช้เคลื่อนไหวเพื่อ มอบรูปลักษณ์ที่น่าตื่นตาแก่ผู้ใช้

ผู้ให้บริการอุปกรณ์จะมีมาสก์อุปกรณ์ซึ่งจะเลือกรูปร่างของไอคอนทั้งหมดบน อุปกรณ์ ไอคอนนี้จะใช้ในแพลตฟอร์ม UI ของระบบที่ใช้ไอคอน Launcher (เช่น Launcher, ภาพรวม, การตั้งค่า และชีตการแชร์)

ตัวอย่างและแหล่งที่มา

ตัวอย่างโค้ด

  • platform/development/samples/AdaptiveIconSample/

เอกสารประกอบสำหรับนักพัฒนาซอฟต์แวร์:

ซอร์สโค้ด:

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

การใช้งาน

หากต้องการเปลี่ยนรูปร่างของไอคอนบนแพลตฟอร์ม ให้วางซ้อน 1 สตริง framework/base/core/res/res/values/config.xml ดังนี้

<!-- 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>

รูปแบบและไวยากรณ์ของสตริงเป็นไปตามมาตรฐาน W3, SVG สำหรับเส้นทาง คำจำกัดความ รูปแบบสำหรับ PathData คือสิ่งที่วาดได้แบบเวกเตอร์ของ Android ของ Google ได้ด้วยเช่นกัน

เส้นทางนี้ควรนูนและควรเป็นไปตาม Safezone (66/71 = 91%) ภายใน ขอบเขตของการดู มีการบังคับใช้ในการทดสอบ CTS รายการหนึ่ง

หากคุณเลือกที่จะใช้วงกลมเป็นมาสก์แพลตฟอร์ม ให้ตรวจสอบว่าได้วางซ้อน config_useRoundIcon = true หากไม่ได้ตั้งค่าไว้ ให้ตั้งค่าการกำหนดค่านี้เป็น "เท็จ" หรือไม่ตั้งค่า ระบุค่าการกำหนดค่านี้

API ไอคอนแบบปรับอัตโนมัติ

API สำหรับคลาส AdaptiveIconDrawable แสดงอยู่ด้านล่าง

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();
    }

การใช้งานข้อมูลอ้างอิง

คุณไม่จำเป็นต้องดำเนินการใดๆ เพื่อแสดงไอคอนแบบปรับอัตโนมัติแบบคงที่บน แพลตฟอร์ม UI ของระบบ เมื่อ PackageManager แสดงผลโฆษณาที่ถอนออกได้ ให้เชื่อมโยงกับ ImageView นี่คือลักษณะที่ไอคอนจะแสดงผลในแพลตฟอร์ม Pre-O อยู่แล้ว

สำหรับการแสดงภาพเอฟเฟกต์การเคลื่อนไหวแบบไดนามิก Launcher3 (platform/packages/apps/Launcher3) จะมีการใช้งานการอ้างอิงที่แสดง วิธีให้เกิดผลใน O-MR1

การตรวจสอบความถูกต้อง

หากต้องการตรวจสอบการติดตั้งใช้งาน หลังจากลบล้างมาสก์ที่ชอบแล้ว โปรดดู หากไอคอนแสดงผลอย่างถูกต้องใน Launcher3, การตั้งค่า, ภาพรวม และการตั้งค่า นอกจากนี้ คุณอาจเรียกใช้ AdaptiveIconDrawableTest.java และ AdaptiveIconMaskTest.java ด้วย ภายใน CTS TestCase แบบกราฟิกเพื่อทดสอบการใช้งาน

คุณสามารถดูกรอบการทดสอบด้วยตนเองที่แนะนำได้ที่ แพลตฟอร์ม/การพัฒนา/ตัวอย่าง/AdaptiveIconSample/

ปัญหาที่ทราบ

ปัญหาที่ทราบมีดังนี้

  • ไอคอนเบลอ ขึ้นอยู่กับเส้นทางการมาสก์
  • ไอคอนทางลัดแบบซูมเข้าหากนักพัฒนาแอปไม่ได้ใช้ Icon.createWithAdaptiveBitmap() หรือไม่ใช้วิธีนี้ อย่างเหมาะสม เพื่อให้เมธอดนี้ทำงานได้อย่างถูกต้อง ข้อมูลที่ผ่านในบิตแมป บุ 25% ทั้ง 4 ด้าน

ปัญหาเหล่านี้สามารถแก้ไขได้ดังต่อไปนี้

  • กำบังควรกำหนดในระบบพิกัด [0, 100] x [0, 100]
  • ตรวจสอบว่ารูปภาพที่ใช้สำหรับไอคอนแบบปรับอัตโนมัติ (ไอคอน Launcher ทางลัด) มีระยะห่างจากขอบเพียงพอ (25%) ทั้ง 4 ด้าน