ข่าวสารเกี่ยวกับผลิตภัณฑ์

Jetpack WindowManager 1.5 พร้อมให้ใช้งานอย่างเสถียรแล้ว

อ่าน 2 นาที
ดูโปรไฟล์ของ Francesco Romano
Francesco Romano วิศวกรนักพัฒนาซอฟต์แวร์สัมพันธ์ของ Android

เรายินดีที่จะประกาศให้ทราบว่า Jetpack WindowManager 1.5.0 พร้อมให้ใช้งานอย่างเสถียรแล้ว

การเปิดตัวนี้ต่อยอดจากรากฐานที่แข็งแกร่งของความสามารถในการปรับตัวใน WindowManager ซึ่งช่วยให้สร้าง UI ที่ปรับเปลี่ยนได้และดูดีในทุกขนาดหน้าจอได้ง่ายยิ่งขึ้น เมื่อระบบนิเวศของ Android เติบโตขึ้นเรื่อยๆ ผู้ใช้ก็มีส่วนร่วมกับแอปในอุปกรณ์ที่หลากหลายมากขึ้นกว่าที่เคย ตั้งแต่โทรศัพท์และอุปกรณ์พับได้ไปจนถึงแท็บเล็ต จอแสดงผลที่เชื่อมต่ออินเทอร์เน็ต Chromebook และแม้แต่จอแสดงผลในรถยนต์ในโหมดจอด

WindowManager 1.5 มุ่งเน้นการจัดหาเครื่องมือที่ดีขึ้นสำหรับสภาพแวดล้อมของอุปกรณ์ที่หลากหลายนี้

มีอะไรใหม่ใน WindowManager 1.5

การเผยแพร่เวอร์ชันเสถียรนี้จะเปิดตัวเบรกพอยต์ใหม่สำหรับหน้าจอขนาดใหญ่มาก ปรับปรุง API การฝังกิจกรรม และเพิ่มความยืดหยุ่นในการคำนวณเมตริกหน้าต่าง

คลาสขนาดหน้าต่างใหม่: ใหญ่และใหญ่พิเศษ

การอัปเดตที่สำคัญที่สุดใน 1.5 คือการเพิ่มคลาสขนาดหน้าต่างความกว้างใหม่ 2 คลาส ได้แก่ ขนาดใหญ่และขนาดใหญ่พิเศษ

คลาสขนาดหน้าต่างคือชุดเบรกพอยต์วิวพอร์ตอย่างเป็นทางการของเรา ซึ่งช่วยให้คุณออกแบบและพัฒนาเลย์เอาต์ที่ปรับเปลี่ยนตามอุปกรณ์ได้ ในเวอร์ชัน 1.5 เราจะขยายคำแนะนำนี้สำหรับหน้าจอที่ใหญ่กว่าแท็บเล็ตทั่วไป

เบรกพอยท์ความกว้างใหม่มีดังนี้

  • ใหญ่: สำหรับความกว้างระหว่าง 1200dp ถึง 1600dp
  • ใหญ่พิเศษ: สำหรับความกว้าง ≥1600dp
window_size_classes_width.png

คลาสขนาดหน้าต่างต่างๆ ตามความกว้างของจอแสดงผล 

ทำไมจึงมีความสำคัญ

ตั้งแต่ Android 16 QPR1 เบต้า 2 เป็นต้นไป Android จะรองรับจอแสดงผลที่เชื่อมต่อ ซึ่งช่วยให้ผู้ใช้ต่อจอแสดงผลภายนอกกับอุปกรณ์และเปลี่ยนให้เป็นเครื่องมือที่มีหน้าจอขนาดใหญ่คล้ายเดสก์ท็อปได้

ADB_5350_asset.gif

โทรศัพท์เชื่อมต่อกับจอแสดงผลภายนอก โดยมีเซสชันเดสก์ท็อปบนจอแสดงผลภายนอก 

เมื่อมีฟีเจอร์ใหม่นี้แล้ว คำแนะนำที่ชัดเจนในการรวมจอแสดงผลขนาดใหญ่จึงมีความสำคัญ 

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

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

คุณสามารถคำนวณคลาสขนาดหน้าต่างได้โดยใช้ computeWindowSizeClass() ซึ่งเป็นฟังก์ชันส่วนขยายของไลบรารี androidx.window.core.layout ที่ขยายประเภท Set<WindowSizeClass> 

หากต้องการรวมคลาสขนาดหน้าต่างใหม่ไว้ในโปรเจ็กต์ เพียงเรียกใช้ฟังก์ชันจากชุด WindowSizeClass.BREAKPOINTS_V2 แทน WindowSizeClass.BREAKPOINTS_V1

val currentWindowMetrics =

    WindowMetricsCalculator.getOrCreate()

    .computeCurrentWindowMetrics(LocalContext.current)


val sizeClass = WindowSizeClass.BREAKPOINTS_V2

    .computeWindowSizeClass(currentWindowMetrics)


จากนั้นใช้เลย์เอาต์ที่ถูกต้องเมื่อแน่ใจว่าแอปมีพื้นที่อย่างน้อยตามที่ระบุ

if(sizeClass.isWidthAtLeastBreakpoint(

    WindowSizeClass.WIDTH_DP_LARGE_LOWER_BOUND)){

    ...

    // window is at least 1200 dp wide


}

ไลบรารีแบบปรับอัตโนมัติ

ไลบรารี Compose Material 3 Adaptive ช่วยให้คุณสร้าง UI แบบปรับได้ซึ่งจะปรับตัวเองโดยอัตโนมัติตามการกำหนดค่าหน้าต่างปัจจุบัน เช่น คลาสขนาดหน้าต่างหรือท่าทางของอุปกรณ์ 

ข่าวดีคือไลบรารีอัปเดตเบรกพอยต์ใหม่เรียบร้อยแล้ว ตั้งแต่เวอร์ชัน 1.2 (ปัจจุบันอยู่ในขั้นตอนการเผยแพร่) เป็นต้นไป คำสั่งโครงร่างของแผงเริ่มต้นจะรองรับคลาสขนาดความกว้างของหน้าต่างขนาดใหญ่และใหญ่พิเศษ

คุณเพียงแค่ต้องเลือกใช้โดยประกาศในไฟล์ Gradle Build ว่าต้องการใช้เบรกพอยต์ใหม่

currentWindowAdaptiveInfo(

    supportLargeAndXLargeWidth = true)

การปรับปรุงเพิ่มเติม

  • การฝังกิจกรรม - บันทึกและกู้คืนอัตโนมัติ: ตอนนี้ WindowManager สามารถบันทึกและกู้คืนสถานะของการแยกการฝังกิจกรรมโดยอัตโนมัติได้แล้ว ซึ่งจะช่วยรักษาเลย์เอาต์ของผู้ใช้เมื่อมีการสร้างกระบวนการใหม่ ส่งผลให้ได้รับประสบการณ์การใช้งานที่เสถียรและสอดคล้องกันมากขึ้น นักพัฒนาแอปไม่ต้องบันทึกและกู้คืนสถานะด้วยตนเองอีกต่อไป แต่สามารถเลือกใช้การบันทึกอัตโนมัติได้โดยการตั้งค่าพร็อพเพอร์ตี้ EmbeddingConfiguration#isAutoSaveEmbeddingState
  • WindowMetrics ที่ขยาย: ตอนนี้คุณสามารถคำนวณ WindowMetrics จากบริบทของแอปพลิเคชันได้แล้ว ไม่ใช่แค่บริบทของกิจกรรม ซึ่งจะช่วยให้คุณเข้าถึงข้อมูลหน้าต่างจากส่วนต่างๆ ของแอปได้อย่างยืดหยุ่นมากขึ้น

วิธีเริ่มต้นใช้งาน

หากต้องการเริ่มใช้คลาสขนาดใหญ่และขนาดใหญ่พิเศษใหม่ รวมถึงฟีเจอร์อื่นๆ ของ 1.5 ในโปรเจ็กต์ Android ให้อัปเดตทรัพยากร Dependency ของแอปใน build.gradle.kts เป็นเวอร์ชันเสถียรล่าสุด

dependencies {
    implementation("androidx.window:window:1.5.0") 

    // or, if you're using the WindowManager testing library:

    testImplementation("androidx.window:window-testing:1.5.0")

}

WindowManager 1.5 เป็นอีกก้าวหนึ่งในการสร้างแอปที่ปรับเปลี่ยนได้อย่างเต็มที่ซึ่งทำงานในรูปแบบของอุปกรณ์ Android ดูรายการการเปลี่ยนแปลงและการแก้ไขข้อบกพร่องทั้งหมดได้ในหมายเหตุประจำรุ่นอย่างเป็นทางการ

ขอให้สนุกกับการเขียนโค้ด

เขียนโดย
อ่านต่อ