ไอคอนแบบปรับอัตโนมัติจะรักษารูปทรงให้สอดคล้องกันภายในอุปกรณ์ แต่จะแตกต่างกันไปตามแต่ละอุปกรณ์ อุปกรณ์ที่มีเนื้อหาไอคอนจากนักพัฒนาซอฟต์แวร์เพียง 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 ด้าน