หน้าต่างเดสก์ท็อปช่วยให้ผู้ใช้เรียกใช้แอปหลายแอปพร้อมกันในหน้าต่างแอปที่ปรับขนาดได้เพื่อประสบการณ์การใช้งานที่หลากหลายและเหมือนเดสก์ท็อป
ในรูปที่ 1 คุณจะเห็นการจัดระเบียบหน้าจอที่มีการเปิดใช้หน้าต่างเดสก์ท็อป สิ่งที่ควรทราบ
- ผู้ใช้สามารถเรียกใช้แอปหลายแอปพร้อมกันได้
- แถบงานอยู่ในตำแหน่งคงที่ที่ด้านล่างของจอแสดงผลซึ่งแสดงแอปที่กำลังทำงาน ผู้ใช้สามารถปักหมุดแอปเพื่อการเข้าถึงด่วนได้
- แถบส่วนหัวใหม่ที่ปรับแต่งได้จะตกแต่งที่ด้านบนของแต่ละหน้าต่างด้วยตัวควบคุม เช่น ย่อและขยาย
โดยค่าเริ่มต้น แอปจะเปิดแบบเต็มหน้าจอในแท็บเล็ต Android หากต้องการเปิดแอปในโหมดหน้าต่างเดสก์ท็อป ให้กดแฮนเดิลหน้าต่างที่ด้านบนของหน้าจอค้างไว้ แล้วลากแฮนเดิลภายใน UI ดังที่แสดงในรูปที่ 2
เมื่อแอปหนึ่งเปิดอยู่ในโหมดหน้าต่างเดสก์ท็อป แอปอื่นๆ ก็จะเปิดในหน้าต่างเดสก์ท็อปด้วย
นอกจากนี้ ผู้ใช้ยังเรียกใช้การแบ่งหน้าจอเดสก์ท็อปจากเมนูที่ปรากฏใต้แถบแฮนเดิลของหน้าต่างได้เมื่อแตะหรือคลิกแถบแฮนเดิล หรือใช้แป้นพิมพ์ลัด แป้น Meta (Windows, Command หรือ Search) + Ctrl + Down
ผู้ใช้ออกจากโหมดหน้าต่างเดสก์ท็อปได้โดยปิดหน้าต่างที่ใช้งานอยู่ทั้งหมด หรือจับที่จับหน้าต่างที่ด้านบนของหน้าต่างเดสก์ท็อปแล้วลากแอปไปไว้ที่ด้านบนของหน้าจอ แป้นพิมพ์ลัด Meta + H จะออกจากหน้าต่างของเดสก์ท็อปและเรียกใช้แอปแบบเต็มหน้าจออีกครั้ง
หากต้องการกลับไปใช้โหมดหน้าต่างเดสก์ท็อป ให้แตะหรือคลิกการ์ดพื้นที่ทำงานบนเดสก์ท็อปในหน้าจอ "ล่าสุด"
การปรับขนาดได้และโหมดความเข้ากันได้
ในการแสดงผลแบบหน้าต่างบนเดสก์ท็อป แอปที่มีการวางแนวที่ล็อกไว้จะปรับขนาดได้อย่างอิสระ ซึ่งหมายความว่าแม้ว่ากิจกรรมจะล็อกไว้เป็นแนวตั้ง ผู้ใช้จะยังคงปรับขนาดแอปเป็นหน้าต่างแนวนอนได้
แอปที่ประกาศว่าปรับขนาดไม่ได้ (resizeableActivity = false
) จะมีการปรับขนาด UI ในขณะที่คงสัดส่วนภาพเดิมไว้
แอปกล้องที่ล็อกการวางแนวหรือแจ้งว่าไม่สามารถปรับขนาดได้จะมีการทำงานพิเศษสำหรับช่องมองภาพของกล้อง นั่นคือ หน้าต่างสามารถปรับขนาดได้อย่างสมบูรณ์ แต่ช่องมองภาพจะคงสัดส่วนภาพเดิมไว้ การถือว่าแอปทำงานในแนวตั้งหรือแนวนอนเสมอจะทำให้แอปฮาร์ดโค้ดหรือทำการคาดเดาที่นำไปสู่การคํานวณการวางแนวหรือสัดส่วนการแสดงผลของตัวอย่างหรือรูปภาพที่จับได้ไม่ถูกต้อง ซึ่งส่งผลให้รูปภาพยืดออก วางแนวเอียง หรือกลับหัว
การดูแลเป็นพิเศษจะให้ประสบการณ์ของผู้ใช้ในระดับพื้นฐานที่จะลดผลกระทบจากการสันนิษฐานที่ไม่ถูกต้อง จนกว่าแอปจะพร้อมที่จะใช้ช่องมองภาพของกล้องที่ปรับเปลี่ยนได้เต็มรูปแบบ
ดูข้อมูลเพิ่มเติมเกี่ยวกับโหมดความเข้ากันได้สำหรับแอปกล้องได้ที่ โหมดความเข้ากันได้ของอุปกรณ์
ส่วนหัวที่ฝังที่กำหนดเองได้
แอปทั้งหมดที่ทำงานในโหมดหน้าต่างเดสก์ท็อปจะมีแถบส่วนหัว แม้ในโหมดสมจริง
ตรวจสอบว่าแถบส่วนหัวไม่ได้บดบังเนื้อหาของแอป
แถบส่วนหัวคือแถบคำบรรยายแบบฝัง androidx.compose.foundation.layout.WindowInsets.Companion.captionBar()
ในมุมมอง WindowInsets.Type.captionBar()
ซึ่งเป็นส่วนหนึ่งของแถบระบบ
ดูข้อมูลเพิ่มเติมเกี่ยวกับการจัดการส่วนตัดในแสดงเนื้อหาจากขอบถึงขอบในแอปและจัดการส่วนตัดของหน้าต่างในเครื่องมือเขียน
นอกจากนี้ คุณยังปรับแต่งแถบส่วนหัวได้ด้วย Android 15 ได้เปิดตัวประเภทลักษณะที่ปรากฏ APPEARANCE_TRANSPARENT_CAPTION_BAR_BACKGROUND
เพื่อทำให้แถบส่วนหัวโปร่งใสเพื่อให้แอปวาดเนื้อหาที่กำหนดเองภายในแถบส่วนหัวได้
จากนั้นแอปจะมีหน้าที่รับผิดชอบในการจัดรูปแบบส่วนบนของเนื้อหาให้ดูเหมือนแถบคำบรรยาย (พื้นหลัง เนื้อหาที่กำหนดเอง และอื่นๆ) ยกเว้นองค์ประกอบคำบรรยายของระบบ (ปุ่มปิดและขยาย) ซึ่งระบบจะวาดในแถบคำบรรยายแบบโปร่งใสที่ด้านบนของแอป
แอปจะสลับรูปลักษณ์ขององค์ประกอบระบบภายในคำบรรยายสำหรับธีมสว่างและมืดโดยใช้ APPEARANCE_LIGHT_CAPTION_BARS
ได้เช่นเดียวกับการกดแถบสถานะและแถบนำทาง
นอกจากนี้ Android 15 ยังเปิดตัวเมธอด WindowInsets#getBoundingRects()
ซึ่งช่วยให้แอปตรวจสอบส่วนแทรกของแถบคำบรรยายอย่างละเอียดยิ่งขึ้น
แอปสามารถแยกแยะระหว่างพื้นที่ที่ระบบวาดองค์ประกอบของระบบและพื้นที่ที่ไม่ได้ใช้งานซึ่งแอปสามารถวางเนื้อหาที่กำหนดเองได้โดยไม่ทับซ้อนกับองค์ประกอบของระบบ
รายการออบเจ็กต์ Rect
ที่ API แสดงจะระบุภูมิภาคของระบบที่ควรหลีกเลี่ยง พื้นที่ว่างที่เหลือ (คำนวณโดยการลบสี่เหลี่ยมผืนผ้าจากแถบคำบรรยาย) คือพื้นที่ที่แอปสามารถวาดเนื้อหาโดยไม่ซ้อนทับองค์ประกอบของระบบและสามารถรับอินพุตได้
การรองรับการทำงานหลายอย่างพร้อมกันและอินสแตนซ์หลายรายการ
การทำงานหลายอย่างพร้อมกันเป็นหัวใจสำคัญของการใช้หน้าต่างบนเดสก์ท็อป และการอนุญาตให้ใช้อินสแตนซ์ของแอปหลายรายการจะช่วยเพิ่มประสิทธิภาพของผู้ใช้ได้อย่างมาก
Android 15 เปิดตัว PROPERTY_SUPPORTS_MULTI_INSTANCE_SYSTEM_UI ซึ่งแอปสามารถตั้งค่าเพื่อระบุว่าควรแสดง UI ของระบบเพื่อให้แอปเปิดเป็นหลายอินสแตนซ์ได้
จัดการอินสแตนซ์แอปด้วยท่าทางสัมผัสการลาก
ในโหมดหลายหน้าต่าง ผู้ใช้สามารถเริ่มอินสแตนซ์แอปใหม่ได้โดยการลากองค์ประกอบมุมมองออกจากหน้าต่างของแอป นอกจากนี้ ผู้ใช้ยังย้ายองค์ประกอบระหว่างอินสแตนซ์ของแอปเดียวกันได้ด้วย
Android 15 เปิดตัว Flag 2 รายการสำหรับปรับแต่งลักษณะการลากและวาง ดังนี้
DRAG_FLAG_START_INTENT_SENDER_ON_UNHANDLED_DRAG
: บ่งบอกว่าควรมอบหมายการลากที่ไม่ได้รับการจัดการให้กับระบบเพื่อเริ่มการทำงานหากไม่มีหน้าต่างที่มองเห็นได้จัดการการปล่อย เมื่อใช้ Flag นี้ ผู้เรียกต้องระบุClipData
ด้วยItem
ที่มีIntentSender
ที่ไม่เปลี่ยนแปลงได้สำหรับกิจกรรมที่จะเปิด (ดูClipData.Item.Builder#setIntentSender()
) ระบบจะเปิด Intent ได้หรือไม่นั้นขึ้นอยู่กับปัจจัยต่างๆ เช่น ขนาดหน้าจอปัจจุบันหรือโหมดการแบ่งหน้าจอ หากระบบไม่เปิดใช้งาน Intent ระบบจะยกเลิก Intent โดยใช้ขั้นตอนการลากและวางตามปกติDRAG_FLAG_GLOBAL_SAME_APPLICATION
: บ่งบอกว่าการดำเนินการลากสามารถข้ามขอบเขตของหน้าต่างได้ (สำหรับอินสแตนซ์หลายรายการของแอปพลิเคชันเดียวกัน)เมื่อมีการเรียกใช้
startDragAndDrop()
ด้วยการตั้งค่า Flag นี้ จะมีเพียงหน้าต่างที่ปรากฏที่เป็นของแอปพลิเคชันเดียวกันเท่านั้นที่มีส่วนร่วมในการดำเนินการลากและรับเนื้อหาที่ลากได้
การเพิ่มประสิทธิภาพเพิ่มเติม
ปรับแต่งการเปิดแอปและการเปลี่ยนแอปจากโหมดหน้าต่างบนเดสก์ท็อปเป็นโหมดเต็มหน้าจอ
ระบุขนาดและตำแหน่งเริ่มต้น
แอปบางแอปอาจปรับขนาดไม่ได้ แต่จำเป็นต้องมีหน้าต่างขนาดใหญ่เพื่อนำเสนอคุณค่าต่อผู้ใช้
คุณสามารถใช้เมธอด ActivityOptions#setLaunchBounds()
เพื่อระบุขนาดและตําแหน่งเริ่มต้นเมื่อเปิดใช้งานกิจกรรม
เข้าสู่โหมดเต็มหน้าจอจากพื้นที่ทำงานบนเดสก์ท็อป
แอปจะแสดงแบบเต็มหน้าจอได้โดยการโทรหา Activity#requestFullScreenMode()
วิธีนี้จะแสดงแอปแบบเต็มหน้าจอจากหน้าต่างเดสก์ท็อปโดยตรง