ใน Android 7.0 ขึ้นไป อุปกรณ์จะแสดงแอปหลายแอป พร้อมกันได้โดยใช้ฟีเจอร์หลายหน้าต่าง Android รองรับการกำหนดค่าหลายหน้าต่าง 3 แบบ ดังนี้
- Freeform: ช่วยให้ผู้ใช้ปรับขนาดบานหน้าต่างกิจกรรมแบบไดนามิกและแสดงแอปมากกว่า 2 แอปบนหน้าจอได้ สำหรับการแสดงหน้าต่างบนเดสก์ท็อป ผู้ใช้สามารถสร้างหน้าต่าง Freeform บนเดสก์ท็อปที่มีการโต้ตอบสไตล์เดสก์ท็อปได้
- แยกหน้าจอ: การใช้งานฟีเจอร์หลายหน้าต่างเริ่มต้น ซึ่ง มีบานหน้าต่างกิจกรรม 2 บานที่ผู้ใช้สามารถวางแอปได้
- การแสดงภาพซ้อนภาพ (PiP): ช่วยให้อุปกรณ์ ที่ใช้ Android เล่นเนื้อหาวิดีโอในหน้าต่างขนาดเล็กขณะที่ผู้ใช้โต้ตอบ กับแอปอื่นๆ
ข้อกำหนดของอุปกรณ์สำหรับฟีเจอร์หลายหน้าต่าง
ระบบจะเปิดใช้การรองรับฟีเจอร์หลายหน้าต่างโดยค่าเริ่มต้นใน Android 7.0 ขึ้นไป
หากต้องการปิดใช้ ให้ตั้งค่าแฟล็ก config_supportsMultiWindow เป็น
false ในไฟล์
config.xml ของอุปกรณ์
ระบบจะปิดใช้ฟีเจอร์หลายหน้าต่างโดยค่าเริ่มต้นในอุปกรณ์ที่มี RAM ต่ำทั้งหมด (อุปกรณ์ที่
ประกาศ ActivityManager.isLowRam) อุปกรณ์ที่มี RAM ต่ำ
จะข้ามค่าของแฟล็ก config_supportsMultiWindow
Freeform
การแสดงหน้าต่าง Freeform ช่วยให้ผู้ใช้สร้างหน้าต่างที่ปรับขนาดได้อย่างอิสระ การแสดงหน้าต่าง Freeform เป็นข้อกำหนดเบื้องต้นสำหรับ หน้าต่างเดสก์ท็อป ข้อกำหนดของอุปกรณ์สำหรับการ เปิดใช้การแสดงหน้าต่าง Freeform มีดังนี้
-
เปิดใช้แฟล็ก
config_supportsMultiWindow -
เปิดใช้การจัดการหน้าต่าง Freeform ด้วยวิธีใดวิธีหนึ่งต่อไปนี้
-
เปิดใช้แฟล็ก
config_freeformWindowManagementในconfig.xml<feature name="android.software.freeform_window_management" /> -
รวมรายการต่อไปนี้ในไฟล์ makefile ของอุปกรณ์
PRODUCT_COPY_FILES += \ frameworks/native/data/etc/android.software.freeform_window_management.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/permissions/android.software.freeform_window_management.xml
-
เปิดใช้แฟล็ก
ใน Android 16, OEM สามารถรองรับหน้าต่างเดสก์ท็อปในอุปกรณ์สำหรับการกำหนดค่าหลายหน้าต่าง Freeform ได้โดยใช้การเปิดใช้หน้าต่างเดสก์ท็อป
หน้าต่างเดสก์ท็อป
การแสดงหน้าต่างบนเดสก์ท็อปมีพื้นที่ทำงานสำหรับการทำงานหลายอย่างพร้อมกันบนหน้าจอขนาดใหญ่ ซึ่งสร้างขึ้นบนหน้าต่าง Freeform พื้นที่ทำงานจะอยู่ข้างๆ โหมดเต็มหน้าจอ โดยมี UI และลักษณะการทำงานเพิ่มเติมที่ช่วยให้ผู้ใช้ได้รับประสบการณ์การทำงานหลายอย่างพร้อมกันที่ยืดหยุ่นมากขึ้น
- การโต้ตอบด้วยแป้นพิมพ์หรือเมาส์: รองรับการโต้ตอบแบบสัมผัสก่อนและแบบแป้นพิมพ์หรือเมาส์ก่อน
- หน้าต่าง Freeform: เรียกใช้แอปในหน้าต่างที่ปรับขนาดและเคลื่อนย้ายได้ โดยมีแถบคำอธิบายและตัวควบคุมหน้าต่าง
- แถบงานที่ปรับปรุงแล้ว: ช่วยให้เข้าถึงแอปที่กำลังทำงานและแอปที่ปักหมุดไว้ได้ง่าย
- การเพิ่มประสิทธิภาพจอแสดงผลภายนอก: เปลี่ยนจอภาพที่เชื่อมต่อให้เป็นสภาพแวดล้อมเดสก์ท็อปสำหรับอุปกรณ์ที่รองรับ
- เดสก์เสมือน: ช่วยให้ผู้ใช้จัดระเบียบแอปในพื้นที่ทำงานหลายพื้นที่
ทำตามข้อกำหนดเบื้องต้นต่อไปนี้เพื่อกำหนดค่าอุปกรณ์สำหรับการแสดงหน้าต่างบนเดสก์ท็อป
-
เปิดใช้แฟล็กต่อไปนี้
- ข้อกำหนดเบื้องต้นทั้งหมดสำหรับการแสดงหน้าต่าง Freeform
- แฟล็กหน้าต่างเดสก์ท็อปส่วนกลาง
config_isDesktopModeSupported
- UI ของระบบต้องใช้จอแสดงผลที่มีความกว้างอย่างน้อย 600 dp การแสดงหน้าต่างเดสก์ท็อป อาจไม่ทำงานตามที่คาดไว้ในหน้าจอขนาดเล็ก
-
อุปกรณ์ต้องไม่ใช่ อุปกรณ์ที่มี RAM ต่ำ
ActivityManager.isLowRamต้องแสดงผลเป็นfalseเนื่องจากอุปกรณ์ที่มี RAM ต่ำไม่มีสิทธิ์ใช้ฟีเจอร์ หลายหน้าต่าง
ตารางต่อไปนี้แสดงการกำหนดค่าที่สามารถกำหนดค่าอุปกรณ์สำหรับการแสดงหน้าต่างเดสก์ท็อปได้ โดยขึ้นอยู่กับขนาดหน้าจอและวิธีที่ต้องการใช้อุปกรณ์
| โหมด | อุปกรณ์พกพาแบบเต็มหน้าจอเท่านั้น | อุปกรณ์พกพาแบบเต็มหน้าจอเป็นหลักที่แสดงผลไปยังจอแสดงผลที่เชื่อมต่อ | หน้าจอขนาดใหญ่แบบเต็มหน้าจอเป็นหลักที่ขยายไปยังจอแสดงผลที่เชื่อมต่อ | หน้าจอขนาดใหญ่แบบแสดงหน้าต่างบนเดสก์ท็อปเป็นหลัก |
|---|---|---|---|---|
| ตัวอย่างรูปแบบของอุปกรณ์ | โทรศัพท์แบบพกพา | โทรศัพท์แบบพกพาที่รองรับ HDMI สำหรับจอแสดงผลภายนอก | แท็บเล็ตที่รองรับ HDMI สำหรับจอแสดงผลภายนอก | แท็บเล็ตที่มีแป้นพิมพ์ที่รองรับ HDMI สำหรับจอแสดงผลภายนอก |
| ประสบการณ์การใช้งานจอแสดงผลภายใน | รองรับแบบเต็มหน้าจอ แยกหน้าจอ PiP และ Freeform ที่ไม่ใช่เดสก์ท็อป | รองรับแบบเต็มหน้าจอ แยกหน้าจอ และ PiP | รองรับหน้าต่างเดสก์ท็อปแบบเต็มหน้าจอ แยกหน้าจอ และ PIP ผ่านเดสก์แยก | หน้าต่างเดสก์ท็อปเป็นโหมดการแสดงหน้าต่างเริ่มต้น (รองรับเดสก์แยก) ผู้ใช้สามารถเข้าสู่หน้าต่างเดสก์ท็อปแบบเต็มหน้าจอหรือโหมดสัมผัสผ่านเดสก์แยกได้ |
| ประสบการณ์การใช้งานจอแสดงผลที่เชื่อมต่อ | การมิเรอร์จอแสดงผลภายในเท่านั้น | การแสดงหน้าต่างบนเดสก์ท็อปในจอแสดงผลที่เชื่อมต่อเท่านั้น | หน้าต่างเดสก์ท็อปขยายเดสก์ และพร้อมใช้งานในจอแสดงผลภายใน | หน้าต่างเดสก์ท็อปขยายเดสก์ และพร้อมใช้งานในจอแสดงผลภายใน |
| การตั้งค่า Config | ||||
config_supportsMultiWindow |
true |
true |
true |
true |
config_freeformWindowManagement |
true |
true |
true |
true |
config_isDesktopModeSupported |
false |
true |
true |
true |
config_canInternalDisplayHostDesktops |
ละเว้น | false |
true |
true |
config_enterDesktopByDefaultOnFreeformDisplay |
ละเว้น | false |
false |
true |
config_isDesktopModeSupported
แฟล็กการวางซ้อน Config config_isDesktopModeSupported เป็นแฟล็กระดับบนสุดสำหรับการเปิดใช้หน้าต่างเดสก์ท็อป หากไม่ได้เปิดใช้ ระบบจะข้ามการตั้งค่า Config อื่นๆ ทั้งหมด
ตั้งค่าเป็น true ใน config.xml ดังนี้
<!-- Globally enable Desktop windowing logic -->
<bool name="config_isDesktopModeSupported">true</bool>
เมื่อ config_isDesktopModeSupported เป็น true ระบบจะถือว่าจอแสดงผลภายนอกที่มีสิทธิ์ (เช่น จอแสดงผลที่เชื่อมต่อด้วย DisplayPort หรือ HDMI) เป็นจอแสดงผลที่อาจใช้สำหรับหน้าต่างเดสก์ท็อปโดยอัตโนมัติ
จอแสดงผลต้องได้รับการพิจารณาว่ามีสิทธิ์โดย Window Manager (อย่างน้อยต้องเป็นจอแสดงผลสาธารณะและเชื่อถือได้ โปรดดูหน้าต่างเดสก์ท็อป)
ระบบจะพยายามเปิดใช้ฟีเจอร์ต่างๆ ในโหมด Freeform บนจอแสดงผลเหล่านี้โดยค่าเริ่มต้น
config_canInternalDisplayHostDesktops
แฟล็กการวางซ้อน Config config_canInternalDisplayHostDesktops จะเปิดใช้การแสดงหน้าต่างบนเดสก์ท็อป
ในจอแสดงผลภายในของอุปกรณ์ ตั้งค่าเป็น true ใน
config.xml ดังนี้
<!-- Allow the primary internal display to host desktop sessions -->
<bool name="config_canInternalDisplayHostDesktops">true</bool>การแสดงหน้าต่างบนเดสก์ท็อปจะทำงานได้ดีที่สุดในอุปกรณ์หน้าจอขนาดใหญ่ เช่น แท็บเล็ต เมื่อเทียบกับโทรศัพท์แบบพกพาขนาดเล็ก หากไม่ได้เปิดใช้ ระบบจะรองรับหน้าต่างเดสก์ท็อปในจอแสดงผลภายนอกเท่านั้น (โดยถือว่าอุปกรณ์รองรับ HDMI)
config_enterDesktopByDefaultOnFreeformDisplay
แฟล็กการวางซ้อน Config config_enterDesktopByDefaultOnFreeformDisplay จะตั้งค่าหน้าต่างเดสก์ท็อปเป็นโหมดการแสดงหน้าต่างเริ่มต้นในจอแสดงผลภายในของอุปกรณ์ หากไม่ได้เปิดใช้ โหมดเต็มหน้าจอจะเป็นโหมดการแสดงหน้าต่างเริ่มต้น โดยเดสก์
อยู่ร่วมกัน ตั้งค่าเป็น true ใน config.xml ดังนี้
<!-- Enable Desktop windowing as the default windowing mode on the internal display -->
<bool name="config_enterDesktopByDefaultOnFreeformDisplay">true</bool>เปิดใช้ขีดจำกัดของงาน
หากต้องการกำหนดค่าจำนวนงานสูงสุดที่รองรับในการแสดงหน้าต่างบนเดสก์ท็อป ให้ตั้งค่า
แฟล็กการวางซ้อน Config config_maxDesktopWindowingActiveTasks ใน config.xml
เป็นจำนวนงานสูงสุดที่รองรับ หากต้องการรองรับงานจำนวนไม่จำกัด ให้ตั้งค่า
แฟล็กเป็น 0 ดังนี้
<!-- Maximum number of tasks supported in desktop windowing -->
<integer name="config_maxDesktopWindowingActiveTasks">4</integer>เปิดใช้ขีดจำกัดของเดสก์
หากต้องการกำหนดค่าจำนวนเดสก์เสมือนสูงสุดที่รองรับในการแสดงหน้าต่างบนเดสก์ท็อป ให้ตั้งค่า
แฟล็กการวางซ้อน Config config_maxDesktopWindowingDesks ใน config.xml
เป็นจำนวนเดสก์สูงสุดที่รองรับ หากต้องการรองรับเดสก์จำนวนไม่จำกัด ให้ตั้งค่า
แฟล็กเป็น 0 ดังนี้
<!-- Maximum number of virtual desks supported in desktop windowing -->
<integer name="config_maxDesktopWindowingDesks">4</integer>แยกหน้าจอ
ประสบการณ์การใช้งานเริ่มต้นของฟีเจอร์หลายหน้าต่างคือโหมดแยกหน้าจอ ซึ่ง UI ของระบบ จะแบ่งออกเป็น 2 ส่วนตรงกลางอุปกรณ์ในแนวตั้งหรือแนวนอน ผู้ใช้สามารถปรับขนาดหน้าต่างได้โดยการลากเส้นแบ่งจากด้านหนึ่งไปอีกด้านหนึ่ง หรือจากบนลงล่าง ทั้งนี้ขึ้นอยู่กับการวางแนวของอุปกรณ์
หลังจากเปิดใช้การแยกหน้าจอแล้ว ผู้ผลิตอุปกรณ์สามารถเลือกเปิดใช้ Freeform หรือ PiP ได้
Android 8.0 ขึ้นไปปรับปรุงการแยกหน้าจอโดยการบีบอัด Launcher เมื่อผู้ใช้แตะ หน้าแรก โปรดดูรายละเอียดการใช้งานที่ การโต้ตอบแบบแยกหน้าจอ
การแสดงภาพซ้อนภาพ
หลังจากเปิดใช้โหมดหลายหน้าต่างด้วยแฟล็ก
config_supportsMultiWindow แล้ว ผู้ผลิตอุปกรณ์สามารถ
รองรับ
การแสดงภาพซ้อนภาพ ซึ่งช่วยให้ผู้ใช้ดู
วิดีโอขณะเรียกดูกิจกรรมอื่นๆ ได้ แม้ว่าฟีเจอร์นี้จะมุ่งเป้าไปที่
อุปกรณ์ Android TV แต่อุปกรณ์ประเภทอื่นๆ ก็อาจรองรับฟีเจอร์นี้เช่นกัน
หากต้องการรองรับ PiP ให้เปิดใช้ฟีเจอร์ระบบ
PackageManager#FEATURE_PICTURE_IN_PICTURE ใน
/android/frameworks/base/core/java/android/content/pm/PackageManager.java
โปรดดูรายละเอียดการใช้งาน PiP เพิ่มเติมสำหรับอุปกรณ์ที่ใช้ Android 8.0 ขึ้นไปที่การแสดงภาพซ้อนภาพ
UI ของระบบ
รองรับ UI ของระบบมาตรฐานทั้งหมดตาม การตรวจสอบโหมดหลายหน้าต่าง
แอป
หากต้องการรองรับโหมดหลายหน้าต่างสำหรับแอปที่โหลดไว้ล่วงหน้า โปรดดู หัวข้อการรองรับโหมดหลายหน้าต่าง
การตรวจสอบ
หากต้องการตรวจสอบการใช้งานฟีเจอร์หลายหน้าต่าง ให้เรียกใช้การทดสอบ CTS ที่เกี่ยวข้องและทำตาม การตรวจสอบโหมดหลายหน้าต่าง