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

ไอคอนแบบปรับอัตโนมัติหรือ AdaptiveIconDrawable สามารถแสดงผลแตกต่างกันไป ตามความสามารถของอุปกรณ์แต่ละเครื่องและการปรับแต่งธีมของผู้ใช้ โดยส่วนใหญ่แล้ว Launcher ในหน้าจอหลักจะใช้ไอคอนแบบปรับอัตโนมัติ แต่ก็สามารถใช้ในทางลัด แอปการตั้งค่า กล่องโต้ตอบการแชร์ และหน้าจอภาพรวมได้ด้วย ไอคอนแบบปรับอัตโนมัติใช้ได้กับอุปกรณ์ Android ทุกรูปแบบ

ไอคอนแบบปรับอัตโนมัติสามารถปรับให้เข้ากับกรณีการใช้งานต่างๆ ได้ ซึ่งแตกต่างจากรูปภาพบิตแมป ดังนี้

  • รูปร่างต่างๆ: ไอคอนแบบปรับอัตโนมัติสามารถแสดงรูปร่างได้หลากหลายในอุปกรณ์รุ่นต่างๆ เช่น อาจแสดงเป็นรูปร่างวงกลมในอุปกรณ์ OEM หนึ่งและแสดงเป็นรูปร่างกึ่งสี่เหลี่ยมกึ่งวงกลมในอุปกรณ์อื่น อุปกรณ์ OEM แต่ละรุ่นต้องมีมาสก์ซึ่งระบบจะใช้เพื่อแสดงไอคอนแบบปรับอัตโนมัติทั้งหมดที่มีรูปร่างเหมือนกัน

    GIF แสดงภาพเคลื่อนไหวซ้ำของไอคอน Android ตัวอย่างเดียวกัน
ซึ่งแสดงรูปร่างต่างๆ ตามมาสก์ที่ใช้ ได้แก่ วงกลมและ
สี่เหลี่ยมจัตุรัสขอบโค้ง 2 แบบ
    รูปที่ 1 ไอคอนแบบปรับอัตโนมัติรองรับมาสก์ที่หลากหลายซึ่งแตกต่างไปในอุปกรณ์แต่ละรุ่น
  • เอฟเฟกต์ภาพ: ไอคอนแบบปรับอัตโนมัติรองรับเอฟเฟกต์ภาพที่น่าสนใจต่างๆ ซึ่งจะแสดงเมื่อผู้ใช้วางหรือย้ายไอคอนไปรอบๆ หน้าจอหลัก

    GIF ที่แสดงตัวอย่างไอคอนตัวอย่าง Android 2 รายการรูปวงกลม
เคลื่อนไหวเพื่อแสดงการตอบสนองของผู้ใช้ ไอคอนแรกแสดงโลโก้ Android
ส่ายไปทางซ้ายและขวา จากนั้นขึ้นและลงภายในวงกลม ไอคอนที่ 2
จะขยายและหดกลับ
    รูปที่ 2 ตัวอย่างเอฟเฟกต์ภาพที่ไอคอนแบบปรับอัตโนมัติแสดง
  • การปรับแต่งธีมของผู้ใช้: ตั้งแต่ Android 13 (ระดับ API 33) เป็นต้นไป ผู้ใช้สามารถปรับแต่งธีมไอคอนแบบปรับอัตโนมัติได้ หากผู้ใช้เปิดใช้ไอคอนแอปตามธีมในการตั้งค่าระบบและ Launcher รองรับฟีเจอร์นี้ ระบบจะใช้สีของวอลเปเปอร์และธีมที่ผู้ใช้เลือกเพื่อกำหนดสีของไอคอนแอปสำหรับแอปที่มีเลเยอร์ monochrome ในไอคอนแบบปรับอัตโนมัติ ตั้งแต่ Android 16 QPR 2 เป็นต้นไป Android จะปรับแต่งธีมไอคอนแอปโดยอัตโนมัติสำหรับแอปที่ไม่ได้ระบุไอคอนของตัวเอง

    ตัวอย่างอุปกรณ์ Android 3 เครื่อง โดยแต่ละเครื่องแสดงธีมผู้ใช้ที่แตกต่างกันพร้อมเฉดสีที่ต่างกัน เครื่องแรกแสดงวอลเปเปอร์ที่มีเฉดสีเข้ม เครื่องที่ 2 แสดงวอลเปเปอร์ที่มีเฉดสีทอง และเครื่องที่ 3 แสดงวอลเปเปอร์ที่มีเฉดสีเทาอ่อนพร้อมเฉดสีน้ำเงิน ในแต่ละตัวอย่าง ไอคอนจะรับค่าการปรับสีของวอลเปเปอร์และกลมกลืนกันอย่างลงตัว
    รูปที่ 3 ไอคอนแบบปรับอัตโนมัติที่ใช้สีจากวอลเปเปอร์และธีมของผู้ใช้

    ในสถานการณ์ต่อไปนี้ หน้าจอหลักจะไม่แสดงไอคอนแอปตามธีม แต่จะแสดงไอคอนแอปแบบปรับอัตโนมัติหรือไอคอนแอปมาตรฐานแทน

    • หากผู้ใช้ไม่ได้เปิดใช้ไอคอนแอปตามธีม
    • หากแอปของคุณไม่ได้ระบุไอคอนแอปสีเดียวและอุปกรณ์ของผู้ใช้ใช้ Android เวอร์ชันก่อนหน้า Android 16 QPR 2
    • หาก Launcher ไม่รองรับไอคอนแอปตามธีม

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

เพื่อให้ไอคอนแบบปรับอัตโนมัติรองรับรูปร่าง เอฟเฟกต์ภาพ และการปรับแต่งธีมของผู้ใช้ที่หลากหลาย การออกแบบต้องเป็นไปตามข้อกำหนดต่อไปนี้

  • คุณต้องระบุไอคอนเวอร์ชันสี 2 เลเยอร์ ได้แก่ เลเยอร์พื้นหน้าและเลเยอร์พื้นหลัง โดยเลเยอร์อาจเป็นเวกเตอร์หรือบิตแมปก็ได้ แต่เราแนะนำให้ใช้เวกเตอร์

    ตัวอย่างเลเยอร์เบื้องหน้า (ซ้าย) และเลเยอร์พื้นหลัง (ขวา) ส่วนหน้าแสดงไอคอน 16 ด้านของโลโก้ Android ตัวอย่างซึ่งอยู่ตรงกลางภายในโซนปลอดภัยขนาด 66x66 โซนปลอดภัยอยู่ตรงกลางของคอนเทนเนอร์ขนาด 108x108 พื้นหลังจะแสดงขนาดที่วัดได้เหมือนกัน
สำหรับโซนปลอดภัยและคอนเทนเนอร์ แต่จะมีเพียงพื้นหลังสีน้ำเงิน
และไม่มีโลโก้
    รูปที่ 4 ไอคอนแบบปรับอัตโนมัติที่กำหนดโดยใช้เลเยอร์พื้นหน้าและพื้นหลัง โซนปลอดภัย ขนาด 66x66 dp ที่แสดงคือพื้นที่ที่มาสก์รูปร่างซึ่งกำหนดโดย OEM จะไม่ตัดออก
    ตัวอย่างที่แสดงไอคอนจากรูปที่อยู่ก่อนหน้าซ้อนทับบนมาสก์วงกลม
    รูปที่ 5 ตัวอย่างลักษณะที่เลเยอร์เบื้องหน้าและพื้นหลังจะปรากฏเมื่อใช้มาสก์วงกลม
  • หากต้องการรองรับการปรับแต่งธีมไอคอนแอปของผู้ใช้ ให้ระบุไอคอนเวอร์ชันสีเดียว 1 เลเยอร์

    ตัวอย่างเลเยอร์ไอคอนสีเดียว (ซ้าย)
และตัวอย่างสี (ขวา) เลเยอร์สีเดียวแสดงไอคอน 16 ด้านของโลโก้ Android ตัวอย่างที่อยู่ตรงกลางภายในโซนปลอดภัยขนาด 66x66 โดยโซนปลอดภัยจะอยู่ตรงกลางภายในคอนเทนเนอร์ขนาด 108x108 ตัวอย่างสีแสดง
การแสดงเลเยอร์นี้เมื่อใช้กับธีมของผู้ใช้ที่มีสีต่างกัน (ส้ม
ชมพู เหลือง และเขียว)
    รูปที่ 6 เลเยอร์ไอคอนสีเดียว (ซ้าย) พร้อมตัวอย่างการแสดงตัวอย่างสี (ขวา)
  • ปรับขนาดเลเยอร์ทั้งหมดเป็น 108x108 dp

  • ใช้ไอคอนที่มีขอบคมชัด เลเยอร์ต้องไม่มีมาสก์หรือเงาพื้นหลังรอบๆ ขอบไอคอน

  • ใช้โลโก้ที่มีขนาดอย่างน้อย 48x48 dp และต้องไม่เกิน 66x66 dp เนื่องจากพื้นที่ขนาด 66x66 dp ที่ด้านในของไอคอนจะปรากฏภายในวิวพอร์ตที่มีมาสก์

ระบบจะเก็บพื้นที่ขนาด 18 dp ที่ด้านนอกของทั้ง 4 ด้านของเลเยอร์ไว้สำหรับมาสก์และสร้างเอฟเฟกต์ภาพ เช่น พารัลแลกซ์หรือการกะพริบ

ดูวิธีสร้างไอคอนแบบปรับอัตโนมัติโดยใช้ Android Studio ได้ที่ เทมเพลต Figma ของไอคอนแอป Android หรือ เอกสารประกอบของ Android Studio สำหรับการสร้างไอคอน Launcher นอกจากนี้ โปรดอ่าน บล็อกโพสต์ เรื่องการออกแบบไอคอนแบบปรับอัตโนมัติ

เพิ่มไอคอนแบบปรับอัตโนมัติลงในแอป

ไอคอนแบบปรับอัตโนมัติจะระบุโดยใช้แอตทริบิวต์ using the android:icon ในไฟล์ Manifest ของแอป เช่นเดียวกับไอคอนที่ไม่ใช่แบบปรับอัตโนมัติ

Launcher ที่แสดงแอปด้วยไอคอนวงกลมจะใช้แอตทริบิวต์ android:roundIcon ซึ่งเป็นแอตทริบิวต์ที่ไม่บังคับ และอาจมีประโยชน์หากไอคอนของแอปมีพื้นหลังวงกลมเป็นส่วนหลักของการออกแบบ Launcher ดังกล่าวต้องสร้างไอคอนแอปโดยใช้มาสก์วงกลมกับ android:roundIcon และการรับประกันนี้อาจช่วยให้คุณเพิ่มประสิทธิภาพลักษณะที่ปรากฏของไอคอนแอปได้ เช่น ขยายโลโก้เล็กน้อยและตรวจสอบว่าเมื่อครอบตัดแล้ว พื้นหลังวงกลมจะเต็มพื้นที่

ข้อมูลโค้ดต่อไปนี้แสดงแอตทริบิวต์ทั้ง 2 รายการ แต่แอปส่วนใหญ่จะระบุเฉพาะ android:icon

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

จากนั้นบันทึกไอคอนแบบปรับอัตโนมัติลงใน res/mipmap-anydpi-v26/ic_launcher.xml ใช้องค์ประกอบ <adaptive-icon> เพื่อกำหนดแหล่งข้อมูลเลเยอร์พื้นหน้า พื้นหลัง และ สีเดียวสำหรับไอคอน องค์ประกอบภายใน <foreground>, <background> และ <monochrome> รองรับทั้ง รูปภาพเวกเตอร์และบิตแมป

ตัวอย่างต่อไปนี้แสดงวิธีกำหนดองค์ประกอบ <foreground>, <background> และ <monochrome> ภายใน <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>
...

เลเยอร์เบื้องหน้าและสีเดียวใช้เนื้อหาที่ถอนออกได้เดียวกัน อย่างไรก็ตาม คุณสามารถสร้างเนื้อหาที่ถอนออกได้แยกต่างหากสำหรับแต่ละเลเยอร์ได้หากต้องการ

นอกจากนี้ คุณยังกำหนดเนื้อหาที่ถอนออกได้เป็นองค์ประกอบได้โดย อินไลน์ เนื้อหาดังกล่าวลงในองค์ประกอบ <foreground>, <background>, และ <monochrome> ข้อมูลโค้ดต่อไปนี้แสดงตัวอย่างการดำเนินการนี้กับเนื้อหาที่ถอนออกได้ของพื้นหน้า

<?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>
...

หากต้องการใช้มาสก์และเอฟเฟกต์ภาพเดียวกันกับทั้งทางลัดและไอคอนแบบปรับอัตโนมัติปกติ ให้ใช้เทคนิคใดเทคนิคหนึ่งต่อไปนี้

  • สำหรับทางลัดแบบคงที่ ให้ใช้องค์ประกอบ <adaptive-icon>
  • สำหรับทางลัดแบบไดนามิก ให้เรียกใช้ createWithAdaptiveBitmap() เมธอดเมื่อสร้างทางลัด

ดูข้อมูลเพิ่มเติมเกี่ยวกับการนำไอคอนแบบปรับอัตโนมัติไปใช้ได้ที่ การนำไอคอนแบบปรับอัตโนมัติ ไปใช้ ดูข้อมูลเพิ่มเติมเกี่ยวกับทางลัดได้ที่ ภาพรวมของทางลัดของแอป

แหล่งข้อมูลเพิ่มเติม

ดูแหล่งข้อมูลต่อไปนี้เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับการออกแบบและการนำไอคอนแบบปรับอัตโนมัติไปใช้