WindowManager

ไลบรารี WindowManager ของ Jetpack ช่วยให้นักพัฒนาแอปพลิเคชันรองรับรูปแบบของอุปกรณ์ใหม่ๆ และสภาพแวดล้อมแบบหลายหน้าต่าง เวอร์ชันแรกจะมุ่งเน้นที่อุปกรณ์แบบพับได้ แต่เวอร์ชันในอนาคตจะขยายการให้บริการไปยังจอแสดงผลประเภทต่างๆ และฟีเจอร์หน้าต่างเพิ่มเติม
อัปเดตล่าสุด รุ่นที่เสถียร รุ่นที่อาจได้รับการเผยแพร่ รุ่นเบต้า เวอร์ชันอัลฟ่า
7 พฤษภาคม 2025 1.3.0 1.4.0-rc02 - 1.5.0-alpha02

การประกาศทรัพยากร Dependency

หากต้องการเพิ่มทรัพยากร Dependency ของ WindowManager คุณต้องเพิ่มที่เก็บ Maven ของ Google ลงในโปรเจ็กต์ อ่านข้อมูลเพิ่มเติมในที่เก็บ Maven ของ Google

เพิ่มการอ้างอิงสำหรับอาร์ติแฟกต์ที่คุณต้องการในไฟล์ build.gradle สำหรับแอปหรือโมดูล

Groovy

dependencies {
    implementation "androidx.window:window:1.3.0"

    // For Java-friendly APIs to register and unregister callbacks
    implementation "androidx.window:window-java:1.3.0"

    // For RxJava2 integration
    implementation "androidx.window:window-rxjava2:1.3.0"

    // For RxJava3 integration
    implementation "androidx.window:window-rxjava3:1.3.0"

    // For testing
    implementation "androidx.window:window-testing:1.3.0"
}

Kotlin

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

    // For Java-friendly APIs to register and unregister callbacks
    implementation("androidx.window:window-java:1.3.0")

    // For RxJava2 integration
    implementation("androidx.window:window-rxjava2:1.3.0")

    // For RxJava3 integration
    implementation("androidx.window:window-rxjava3:1.3.0")

    // For testing
    implementation("androidx.window:window-testing:1.3.0")
}

ความคิดเห็น

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

สร้างปัญหาใหม่

ดูข้อมูลเพิ่มเติมได้ที่เอกสารประกอบของเครื่องมือติดตามปัญหา

รุ่น 1.5

เวอร์ชัน 1.5.0-alpha02

7 พฤษภาคม 2025

androidx.window:window-*:1.5.0-alpha02 ได้รับการปล่อยแล้ว เวอร์ชัน 1.5.0-alpha02 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • เพิ่มเบรกพอยต์ WindowSizeClass สำหรับขนาดใหญ่และขนาดใหญ่พิเศษ (I40d85)
  • ขยายการคำนวณ WindowMetrics ไปยังบริบทแอปพลิเคชัน (I8eeeb, b/360934048)
  • ระบุ Getter ของผู้ให้บริการเพื่อเปิดใช้การเข้าถึง WindowLayoutInfo โดยตรง (Ie9513)
  • เปิดตัว API เพื่อบันทึกสถานะการฝังโดยอัตโนมัติและเพื่อกู้คืนสถานะการฝังโดยอัตโนมัติเมื่อกระบวนการของแอปเริ่มขึ้นใหม่ (Ie0295)
  • นํา WindowInsets API เวอร์ชันทดลองออก (I68a71)
  • ซ่อนตัวสร้าง 2-3 ตัว (I87b8d)

การแก้ไขข้อบกพร่อง

  • แก้ไข EmbeddingRule ที่แสดง hashCode แตกต่างกันในบางกรณี (I748cc)

เวอร์ชัน 1.5.0-alpha01

12 มีนาคม 2025

androidx.window:window-*:1.5.0-alpha01 ได้รับการปล่อยแล้ว เวอร์ชัน 1.5.0-alpha01 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • การเปิดตัวครั้งแรกของ 1.5.0 เวอร์ชันถัดไป

เวอร์ชัน 1.4

เวอร์ชัน 1.4.0-rc02

23 เมษายน 2025

androidx.window:window-*:1.4.0-rc02 ได้รับการปล่อยแล้ว เวอร์ชัน 1.4.0-rc02 มีการคอมมิตเหล่านี้

การแก้ไขข้อบกพร่อง

  • แก้ไขข้อขัดข้องของ ProGuard สำหรับ ActivityEmbedding

เวอร์ชัน 1.4.0-rc01

12 มีนาคม 2025

androidx.window:window-*:1.4.0-rc01 ได้รับการปล่อยแล้ว เวอร์ชัน 1.4.0-rc01 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • การอัปเดต WindowSizeClass API
  • การอัปเดต Activity Embedding API

เวอร์ชัน 1.4.0-beta02

12 กุมภาพันธ์ 2025

androidx.window:window-*:1.4.0-beta02 ได้รับการปล่อยแล้ว เวอร์ชัน 1.4.0-beta02 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • แก้ไขคำอธิบายประกอบที่อยู่ในพร็อพเพอร์ตี้เท่านั้น แต่ไม่ได้อยู่ในตัวรับ

เวอร์ชัน 1.4.0-beta01

15 มกราคม 2025

androidx.window:window-*:1.4.0-beta01 ได้รับการปล่อยแล้ว เวอร์ชัน 1.4.0-beta01 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • เพิ่ม API เพื่ออนุญาตให้ปรับแต่งActivityEmbeddingภาพเคลื่อนไหว
  • ขยาย WindowMetricsCalculator test API เพื่ออนุญาตให้จำลองเมตริกกรอบเวลา

การเปลี่ยนแปลง API

  • ซ่อนตัวสร้าง 2-3 ตัว (I87b8d)
  • อนุญาตให้แอปปรับแต่งActivityEmbeddingภาพเคลื่อนไหว (If31a8)
  • เพิ่มการรองรับเป้าหมาย watchosDeviceArm64 KMP และเป้าหมาย Kotlin 1.9 (Icf15d, b/364652024)
  • แสดง WindowMetricsCalculator API (I1cebf)

การแก้ไขข้อบกพร่อง

  • ตอนนี้ไลบรารีนี้ใช้แอตทริบิวต์ JSpecify nullness ซึ่งเป็นการใช้ประเภท นักพัฒนาซอฟต์แวร์ Kotlin ควรใช้อาร์กิวเมนต์คอมไพเลอร์ต่อไปนี้เพื่อบังคับใช้การใช้งานที่ถูกต้อง -Xjspecify-annotations=strict (นี่เป็นค่าเริ่มต้นที่เริ่มตั้งแต่คอมไพเลอร์ Kotlin เวอร์ชัน 2.1.0) (Ie69ac, b/326456246)

เวอร์ชัน 1.4.0-alpha05

16 ตุลาคม 2024

androidx.window:window-*:1.4.0-alpha05 ได้รับการปล่อยแล้ว เวอร์ชัน 1.4.0-alpha05 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • เพิ่มฟังก์ชันอำนวยความสะดวกเพื่อรับ widthDp และ heightDp จาก WindowMetrics

การเปลี่ยนแปลง API

  • เพิ่ม widthDp และ heightDp ลงใน WindowMetrics (Ide026)
  • นํา WindowInsets API เวอร์ชันทดลองออก (I68a71)
  • อัปเดตชื่อเมธอดการตรวจสอบขอบเขตเป็น isAtLeast (Ib0ab7)

เวอร์ชัน 1.4.0-alpha04

2 ตุลาคม 2024

androidx.window:window-*:1.4.0-alpha04 ได้รับการปล่อยแล้ว เวอร์ชัน 1.4.0-alpha04 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • เพิ่มวิธีการคํานวณ WindowSizeClass จาก WindowMetrics (874dba)
  • เปลี่ยนวิธีการ WindowSizeClass เป็น containsWidthDp, containsHeightDp และ containsWindowSizeDp เพื่อให้ชัดเจน (fa760d)
  • แปลง WindowAreaController เป็นคลาสฐานแบบนามธรรม (I90893)

การแก้ไขข้อบกพร่อง

  • เพิ่มการรองรับขอบเขตแบบสัมพัทธ์เมื่อสร้างการทดสอบ FoldingFeature (2e6b3e)
  • แก้ไขข้อบกพร่องทั่วไปเมื่อเลือก WindowSizeClass

เวอร์ชัน 1.4.0-alpha03

18 กันยายน 2024

androidx.window:window-*:1.4.0-alpha03 ได้รับการปล่อยแล้ว เวอร์ชัน 1.4.0-alpha03 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • เพิ่มเมธอดยูทิลิตีเพื่อรับ WindowSizeClass จาก WindowMetrics (I83f1f)
  • เปลี่ยนชื่อ isAtLeast เป็น containsBreakpoint (I85b47)
  • เพิ่มการโอเวอร์โหลดใน computeWindowSizeClass โดยใช้ตัวเลขทศนิยม (I3dcb2, b/364677934, b/364677802, b/364680886)

การแก้ไขข้อบกพร่อง

  • เพิ่มเบรกพอยต์ที่ขาดหายไปลงในชุดเบรกพอยต์ WindowSizeClass เริ่มต้น
  • แก้ไขข้อบกพร่องที่ระบบเลือกขนาดกะทัดรัดไม่ถูกต้องในบางกรณี

เวอร์ชัน 1.4.0-alpha02

4 กันยายน 2024

androidx.window:window-*:1.4.0-alpha02 ได้รับการปล่อยแล้ว เวอร์ชัน 1.4.0-alpha02 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

เพิ่มการรองรับ WindowSizeClass ที่กําหนดเอง

  • เปิดคอนสตรัคเตอร์สําหรับ WindowSizeClass เพื่อให้นักพัฒนาซอฟต์แวร์ใช้คอนสตรัคเตอร์ของตัวเองได้
  • เพิ่มเมธอดยูทิลิตี isAtLeast เพื่อให้นักพัฒนาซอฟต์แวร์ประมวลผลช่วงค่า WindowSizeClass ได้
  • เพิ่มฟังก์ชันส่วนขยายใน Set<WindowSizeClass> เพื่อคํานวณรายการที่ตรงกันที่สุดจากชุด
  • เพิ่มค่าคงที่สำหรับเบรกพอยต์ที่แนะนำของ Android
  • เพิ่มชุดเบรกพอยต์ที่สอดคล้องกับเบรกพอยต์ที่ Android แนะนำ

การเปลี่ยนแปลง API

  • อัปเดตชื่อเมธอดขอบเขตสำหรับ WindowSizeClass (If89a6)
  • อัปเดต WindowSizeClass API เพื่อรองรับการเพิ่มค่าจุดหยุดพักใหม่ในอนาคต เราใช้ขอบเขตล่างแทนขอบเขตสัมบูรณ์ และขอแนะนำให้นักพัฒนาซอฟต์แวร์ใช้การตรวจสอบขอบเขตล่างเมื่อประมวลผล WindowSizeClass เราจะเลิกใช้งาน WindowWidthSizeClass และ WindowHeightSizeClass ที่มีอยู่เนื่องจากจะไม่พัฒนาต่อไป (I014ce)

เวอร์ชัน 1.4.0-alpha01

7 สิงหาคม 2024

androidx.window:window-*:1.4.0-alpha01 ได้รับการปล่อยแล้ว เวอร์ชัน 1.4.0-alpha01 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • การปักหมุด ActivityStack ช่วยให้แอปปักหมุดเนื้อหาในคอนเทนเนอร์หนึ่งและแยกการนําทางออกจากคอนเทนเนอร์อื่นได้
  • ตัวแบ่งแบบอินเทอร์แอกทีฟช่วยให้แอปแสดงตัวแบ่งแบบคงที่หรือแบบลากไปมาได้ระหว่างกิจกรรม 2 รายการในงานนำเสนอแบบแยก
  • การลดแสงกล่องโต้ตอบแบบเต็มหน้าจอช่วยให้แอประบุพื้นที่การลดแสงของกล่องโต้ตอบได้ เพื่อลดแสงทั้งหน้าต่างงานหรือลดแสงเฉพาะคอนเทนเนอร์ที่แสดงกล่องโต้ตอบ
  • การเรียกกลับข้อมูลกรอบเวลากิจกรรมที่ฝังช่วยให้แอปได้รับการอัปเดตกรอบเวลากิจกรรมที่ฝังอย่างต่อเนื่อง
  • การฝังพื้นหลังภาพเคลื่อนไหวช่วยให้แอประบุพื้นหลังของภาพเคลื่อนไหวได้ ซึ่งจะช่วยปรับปรุงคุณภาพของภาพเคลื่อนไหวการเปลี่ยนเมื่อใช้ ActivityEmbedding
  • การจัดการ ActivityStack ที่ปรับปรุงแล้วช่วยให้แอปควบคุม ActivityStacks ได้มากขึ้นเมื่อใช้ ActivityEmbedding ซึ่งรวมถึงการดำเนินการต่อไปนี้
  • การเริ่มกิจกรรมใน ActivityStack ที่ระบุ
  • การทำ ActivityStack ให้เสร็จ

การเปลี่ยนแปลง API

  • API ใหม่ WindowInfoTracker#supportedPostures

    • API เพื่อระบุว่าอุปกรณ์รองรับโหมดตั้งโต๊ะสำหรับอุปกรณ์แบบพับได้หรือไม่ เพิ่ม WindowAreaSessionPresenter#getWindow
  • เพิ่ม API เพื่อรองรับActivityStackการปักหมุด

    • ชั้นเรียน SplitPinRule
    • SplitController#pinTopActivityStack
    • SplitController#unpinTopActivityStack
  • เพิ่ม API เพื่อเปิดใช้และกําหนดค่าตัวแบ่งแบบอินเทอร์แอกทีฟ

    • ชั้นเรียน DividerAttributes
    • SplitAttributes.Builder#setDividerAttributes
  • เพิ่ม API เพื่อตั้งค่า EmbeddingConfiguration และ DimAreaBehavior สำหรับกล่องโต้ตอบ

    • ชั้นเรียน EmbeddingConfiguration
    • ชั้นเรียน DimAreaBehavior
    • ActivityEmbeddingController#setEmbeddingConfiguration
  • เพิ่ม API เพื่อรับการอัปเดตข้อมูลกรอบเวลากิจกรรมที่ฝัง

    • ชั้นเรียน EmbeddedActivityWindowInfo
    • ActivityEmbeddingController#embeddedActivityWindowInfo
  • เพิ่ม API เพื่อตั้งค่าพื้นหลังของภาพเคลื่อนไหวที่ฝัง

    • EmbeddingAnimationBackground
    • SplitAttributes.Builder#setAnimationBackground
  • เพิ่ม API เพื่อดำเนินการให้เสร็จสิ้น ActivityStacks

    • ActivityEmbeddingController#finishActivityStacks
  • เพิ่ม API เพื่อตั้งค่าการเปิดตัว ActivityStack

    • ActivityEmbeddingOptions#setLaunchingActivityStack
  • API ต่อไปนี้เป็น API ที่เสถียรและไม่ใช่ API เวอร์ชันทดลองอีกต่อไป

    • ActivityEmbeddingController#invalidateVisibleActivityStacks (ย้ายมาจาก SplitController#invalidateTopVisibleSplitAttributes)
    • ActivityEmbeddingController#getActivityStack
    • SplitController#updateSplitAttributes
  • เพิ่ม API สำหรับ 1.4 (I56774)

การแก้ไขข้อบกพร่อง

  • แก้ไขข้อบกพร่องในอุปกรณ์บางรุ่นที่ระบบจะแสดงผลเป็น "ไม่พร้อมใช้งาน" แทน "ใช้งานอยู่" เมื่อเซสชันทำงานอยู่
  • นำการรองรับ transferActivityToWindowArea ในอุปกรณ์ที่มี vendorApiLevel เป็น 2 ออกเนื่องจากการรองรับ API ไม่เสถียร
  • เปิดตัว API เพื่อเปิดใช้การลากเพื่อขยายเป็นโหมดเต็มหน้าจอสำหรับตัวแบ่งที่ลากได้ของการฝังกิจกรรม (I645c9)
  • อนุญาตให้แอปปิดใช้ภาพเคลื่อนไหว ActivityEmbedding ผ่านพารามิเตอร์ภาพเคลื่อนไหวสำหรับ SplitAttributes (Idc01a)
  • นำการระบุการเข้าถึง API ของแพลตฟอร์มใหม่ด้วยตนเองออกแล้ว เนื่องจากการดำเนินการนี้จะทําโดยอัตโนมัติผ่านโมเดล API เมื่อใช้ R8 กับ AGP 7.3 ขึ้นไป (เช่น R8 เวอร์ชัน 3.3) และสำหรับบิลด์ทั้งหมดเมื่อใช้ AGP 8.1 ขึ้นไป (เช่น D8 เวอร์ชัน 8.1) เราขอแนะนำให้ลูกค้าที่ไม่ได้ใช้ AGP อัปเดตเป็น D8 เวอร์ชัน 8.1 ขึ้นไป ดูบทความนี้สำหรับรายละเอียดเพิ่มเติม (Ia60e0, b/345472586)
  • อนุญาตให้ส่วนขยายใช้พารามิเตอร์ภาพเคลื่อนไหวสําหรับ SplitAttributes เพื่อให้อุปกรณ์ใช้พารามิเตอร์ดังกล่าวสําหรับการเปลี่ยนภาพเคลื่อนไหวได้ (Iede00)
  • ซ่อน API การวางซ้อน (Ic4251)
  • แนะนำ API เพื่อกำหนดค่าตัวแบ่งแบบคงที่หรือแบบลากได้สำหรับการแยก (Ia7a78)
  • เพิ่มความหนาแน่นลงใน WindowMetrics (Id6723)
  • เพิ่ม API เพื่อรับ SupportedPostures (If557a)
  • นำ setLaunchingActivityStack ออกจาก API เวอร์ชันทดลอง (I191cf)
  • แนะนำ ActivityEmbeddingController#embeddedActivityWindowInfo (I24312)
  • เลิกใช้งาน #getToken และเพิ่ม #getActivityStackToken (Ie0471)
  • เปิดตัวอะแดปเตอร์การเรียกกลับสําหรับ embeddedActivityWindowInfo flow API (Ida77f)
  • เพิ่มอะแดปเตอร์การเรียกกลับสําหรับ API เวิร์กโฟลว์ overlayInfo (I7264f)
  • แนะนำ WindowSdkExtensionsRule เพื่อลบล้าง extensionsVersion สำหรับการทดสอบ (Ifb928)
  • - ย้ายข้อมูล #setLaunchingActivityStack ไปยัง Bundle เพื่อให้ใช้งานร่วมกับ ActivityOptionsCompat ได้
    • ผู้ใช้ควรส่ง activityOptions.toBundle แทน ActvityOptions
    • นำ #setLaunchingActivityStack(Activity) ออก ผู้ใช้ควรย้ายข้อมูลเพื่อใช้ ActivityEmbeddingController#getActivityStac(Activity) เพื่อรับ ActivityStack และส่ง ActivityStack ไปยัง #setLaunchingActivityStack (Ie0ccc)
  • - แนะนำ ActivityStack.Token และ SpltInfo.Token เป็นตัวระบุเพื่อสื่อสารระหว่าง WM Jetpack กับส่วนขยาย
    • เลิกใช้งาน/แทนที่ API เพื่อรับ/แสดงผลโทเค็นแทน IBinder (I12b24)
  • - แนะนำ ActivityEmbeddingController#invalidateVisibleActivityStacks
    • นํา SplitController#invalidateTopVisibleSplitAttributes ออกเนื่องจากฟีเจอร์นี้รวมเข้ากับ #invalidateVisibleActivityStacks แล้ว (I02ef5)
  • - การเพิ่ม API เพื่อกำหนดค่าการฝัง (I59a4a)
  • - เพิ่ม/เลิกปักหมุด ActivityStack androidx.Window API ยอดนิยม
    • การอัปเดตแอปเดโมเพื่ออนุญาตให้ปักหมุด/เลิกปักหมุดรายการยอดนิยม ActivityStack (I24dd3)
  • เพิ่ม #finishActivityStacks และ ActivityEmbeddingOptions อีกครั้ง (Ic1ab3)
  • นำ API ที่ไม่เสถียรออก (Ibc534, b/302380585)

เวอร์ชัน 1.3

เวอร์ชัน 1.3.0

29 พฤษภาคม 2024

androidx.window:window-*:1.3.0 ได้รับการปล่อยแล้ว เวอร์ชัน 1.3.0 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 1.2.0

  • การรองรับ Kotlin Multiplatform สำหรับคลาสขนาดหน้าต่าง

เวอร์ชัน 1.3.0-rc01

14 พฤษภาคม 2024

WindowManager Jetpack 1.3 รองรับ Kotlin Multiplatform สำหรับฟีเจอร์ WindowSizeClass รวมถึงการแก้ไขข้อบกพร่องหลายรายการ

androidx.window:window-*:1.3.0-rc01 ได้รับการปล่อยแล้ว เวอร์ชัน 1.3.0-rc01 มีการคอมมิตเหล่านี้

เวอร์ชัน 1.3.0-beta02

1 พฤษภาคม 2024

androidx.window:window-*:1.3.0-beta02 ได้รับการปล่อยแล้ว เวอร์ชัน 1.3.0-beta02 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • นำการรองรับการสร้างและใช้ WindowSizeClass ที่กําหนดเองออก (Id1143)

การแก้ไขข้อบกพร่อง

  • แก้ไข KotlinReflectionInternalError ที่เกิดจาก ProGuard ตัดไฟล์บางไฟล์ออกในการใช้งานอุปกรณ์บางรุ่น (I01b02)

เวอร์ชัน 1.3.0-beta01

3 เมษายน 2024

androidx.window:window-*:1.3.0-beta01 ได้รับการปล่อยแล้ว เวอร์ชัน 1.3.0-beta01 มีการคอมมิตเหล่านี้

เวอร์ชัน 1.3.0-alpha03

6 มีนาคม 2024

androidx.window:window-*:1.3.0-alpha03 ได้รับการปล่อยแล้ว เวอร์ชัน 1.3.0-alpha03 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • แยก WindowSizeClassUtil ออกเป็นวิธีการที่มุ่งเน้นมากขึ้น (Ie9292)
  • กู้คืน WindowSizeClass#compute (I21355, b/324293374)

การแก้ไขข้อบกพร่อง

  • แก้ไขข้อขัดข้องเมื่อระบบเปิดบริบทที่ระบุไม่ถูกต้อง (94d10ce , b/318787482)

เวอร์ชัน 1.3.0-alpha02

7 กุมภาพันธ์ 2024

androidx.window:window-*:1.3.0-alpha02 ได้รับการปล่อยแล้ว เวอร์ชัน 1.3.0-alpha02 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • การอัปเดตที่ดำเนินการกับอินเทอร์เฟซ API ของ Window Size Class API เพื่อเพิ่มความยืดหยุ่นให้กับนักพัฒนาแอปที่ต้องการใช้คลาสขนาดของตนเอง

การเปลี่ยนแปลง API

  • เพิ่มข้อจำกัดความสูงลงในตัวเลือกความกว้าง (I23393)
  • เพิ่มฟังก์ชันยูทิลิตีสําหรับเลือก WindowSizeClass จากชุด เพิ่มฟังก์ชันการให้คะแนนเวอร์ชันทดลองเพื่อให้นักพัฒนาแอปเขียนตัวเลือกของตนเองได้ เพิ่มฟังก์ชันส่วนขยายตัวเลือกเพื่อเลือก WindowSizeClass ที่กว้างที่สุดภายในขอบเขตที่ระบุ (I0c944)
  • เปิดคอนสตรัคเตอร์ WindowSizeClass เพื่อให้เพิ่มเบรกพอยต์ที่กำหนดเองได้ (Ic1ff3)
  • เพิ่มฟังก์ชันอำนวยความสะดวกเพื่อสร้างคลาสขนาดจากความกว้าง ความสูง และค่าความหนาแน่น (If67f4)

การแก้ไขข้อบกพร่อง

  • แก้ไขข้อยกเว้นเมื่อมีการตัดค่าทศนิยมให้เหลือ 0 (272ffac)

เวอร์ชัน 1.3.0-alpha01

15 พฤศจิกายน 2023

androidx.window:window-*:1.3.0-alpha01 ได้รับการปล่อยแล้ว เวอร์ชัน 1.3.0-alpha01 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • แสดง API หน้าต่างทดลองสำหรับการเข้าถึงหน้าจอด้านหลัง
  • API การทดสอบสําหรับการสร้าง FoldingFeature ทำงานได้อย่างเสถียรแล้ว
  • ตอนนี้ API การทดสอบสําหรับการตั้งค่าค่า ActivityEmbedding จําลองมีความเสถียรแล้ว
  • ตอนนี้ WindowLayoutInfoPublisherRule จะรายงานการลบล้างเมื่อได้รับค่าจาก UiContext
  • WindowInfoTracker รายงานการรวมข้อมูลฟีเจอร์ไปยังพารามิเตอร์ UiContext
  • แสดงเวอร์ชันของส่วนขยายในอุปกรณ์
  • WindowProperties ค่าคงที่สำหรับการลบล้างระดับผู้ใช้ต่อแอปมีดังนี้
    • PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE — แจ้งให้ระบบทราบว่าแอปไม่ได้เลือกใช้การลบล้างความเข้ากันได้ของขนาดหน้าจอที่แสดงต่อผู้ใช้
    • PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE - แจ้งให้ระบบทราบว่าแอปไม่ได้เลือกใช้ตัวเลือกแบบเต็มหน้าจอของการตั้งค่าการลบล้างความเข้ากันได้ของอัตราส่วนภาพสำหรับผู้ใช้

เวอร์ชัน 1.2

เวอร์ชัน 1.2.0

15 พฤศจิกายน 2023

androidx.window:window-*:1.2.0 ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0 มีคอมมิตเหล่านี้

การเปลี่ยนแปลงที่สําคัญตั้งแต่เวอร์ชัน 1.1.0

  • แสดง API หน้าต่างทดลองสำหรับการเข้าถึงหน้าจอด้านหลัง
  • API การทดสอบสําหรับการสร้าง FoldingFeature ทำงานได้อย่างเสถียรแล้ว
  • ตอนนี้ API การทดสอบสําหรับการตั้งค่าค่า ActivityEmbedding จําลองมีความเสถียรแล้ว
  • ตอนนี้ WindowLayoutInfoPublisherRule จะรายงานการลบล้างเมื่อได้รับค่าจาก UiContext
  • WindowInfoTracker รายงานการรวมข้อมูลฟีเจอร์ไปยังพารามิเตอร์ UiContext
  • แสดงเวอร์ชันของส่วนขยายในอุปกรณ์

เวอร์ชัน 1.2.0-rc01

1 พฤศจิกายน 2023

androidx.window:window-*:1.2.0-rc01 ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0-rc01 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • แสดง API หน้าต่างทดลองสำหรับการเข้าถึงหน้าจอด้านหลัง
  • API การทดสอบสําหรับการสร้าง FoldingFeature ทำงานได้อย่างเสถียรแล้ว
  • ตอนนี้ API การทดสอบสําหรับการตั้งค่าค่า ActivityEmbedding จําลองมีความเสถียรแล้ว
  • ตอนนี้ WindowLayoutInfoPublisherRule จะรายงานการลบล้างเมื่อได้รับค่าจาก UiContext
  • WindowInfoTracker รายงานการรวมข้อมูลฟีเจอร์ไปยังพารามิเตอร์ UiContext
  • แสดงเวอร์ชันของส่วนขยายในอุปกรณ์

เวอร์ชัน 1.2.0-beta04

18 ตุลาคม 2023

androidx.window:window-*:1.2.0-beta04 ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0-beta04 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลง API

เวอร์ชัน 1.2.0-beta03

20 กันยายน 2023

androidx.window:window-*:1.2.0-beta03 ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0-beta03 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • เพิ่มRequiresApiการตรวจสอบ API ที่ต้องมีส่วนขยายเวอร์ชันที่เฉพาะเจาะจงจึงจะทํางานได้อย่างถูกต้อง
  • เพิ่ม API เพื่อแสดงเวอร์ชันของส่วนขยายในอุปกรณ์

การเปลี่ยนแปลง API

  • กำกับเนื้อหาเกี่ยวกับเวอร์ชันส่วนขยาย SDK ของกรอบเวลาที่จำเป็นใน API สาธารณะ
    • นํา isXXXSupported ออกจากคอมโพเนนต์การฝังกิจกรรม (Ie3dae)
  • แนะนำ WindowSdkExtensions เพื่อรายงานเวอร์ชันส่วนขยายในอุปกรณ์
    • แนะนำ RequiresWindowSdkExtension เพื่อกำกับเนื้อหาเกี่ยวกับเวอร์ชันส่วนขยายขั้นต่ำที่จำเป็น (I05fd4)
  • ทำให้ WindowAreaInfo#getCapability เป็นค่าที่ไม่อนุญาตให้เป็นค่าว่าง (I17048)

เวอร์ชัน 1.2.0-beta01

26 กรกฎาคม 2023

androidx.window:window-*:1.2.0-beta01 ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0-beta01 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • แสดง API หน้าต่างทดลองสำหรับการเข้าถึงหน้าจอด้านหลัง
  • API การทดสอบสําหรับการสร้าง FoldingFeature ทำงานได้อย่างเสถียรแล้ว
  • ตอนนี้ API การทดสอบสําหรับการตั้งค่าค่า ActivityEmbedding จําลองมีความเสถียรแล้ว
  • ตอนนี้ WindowLayoutInfoPublisherRule จะรายงานการลบล้างเมื่อได้รับค่าจาก UiContext
  • WindowInfoTracker รายงานการรวมข้อมูลฟีเจอร์ไปยังพารามิเตอร์ UiContext

การเปลี่ยนแปลง API

  • ทำเครื่องหมาย WindowArea API เป็นเวอร์ชันทดลองเพื่อให้การเปลี่ยนแปลง API ต่อไปสำหรับรุ่นที่เสถียรใน 1.3 (I857f5)
  • อัปเดตไฟล์ API เพื่อกำกับเนื้อหาการระงับความเข้ากันได้ (I8e87a, b/287516207)

เวอร์ชัน 1.2.0-alpha03

21 มิถุนายน 2023

androidx.window:window-*:1.2.0-alpha03 ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0-alpha03 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • นำ API ที่เลิกใช้งานแล้วออกจากแพลตฟอร์ม API
  • เพิ่ม API เพื่อรองรับการแสดงผลพร้อมกัน
  • เพิ่มพร็อพเพอร์ตี้เพื่อเลือกไม่ใช้การลบล้างการปรับขนาดแบบบังคับ
  • เพิ่มพร็อพเพอร์ตี้เพื่อเลือกไม่ใช้การลบล้างสัดส่วนภาพขั้นต่ำ
  • ปรับปรุง ActivityEmbeddingRule ให้รองรับการทดสอบหน่วยเกี่ยวกับการฝังกิจกรรม

การเปลี่ยนแปลง API

  • นำ API ที่เลิกใช้งานแล้วออก (I18d39)
  • เพิ่มการรองรับการแสดงผลพร้อมกัน (Ifcbb0)

การแก้ไขข้อบกพร่อง

  • การเพิ่มพร็อพเพอร์ตี้ความเข้ากันได้ในการเลือกไม่ใช้สำหรับการลบล้างการปรับขนาดแบบบังคับ (Ie7ab1)
  • นำ SESSION_STATE_CONTENT_INVISIBLE ออกจากอินเทอร์เฟซส่วนขยาย (I6ed19)
  • ปรับปรุง ActivityEmbeddingRule ให้รองรับการทดสอบหน่วยเกี่ยวกับแทรกกิจกรรม (I8d6b6)
  • การเพิ่มพร็อพเพอร์ตี้ความเข้ากันได้แบบไม่บังคับสำหรับการลบล้างสัดส่วนภาพขั้นต่ำ (I66390)
  • นำ WindowArea API ที่เลิกใช้งานแล้วออก (Ieb67c)
  • เปลี่ยนชื่อพร็อพเพอร์ตี้ลูปคำขอการวางแนวเป็น PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED (Ie2fbd)
  • อัปเดตชื่อคงที่ของเซสชันพื้นที่หน้าต่าง (I83675)
  • การเพิ่มพร็อพเพอร์ตี้ความเข้ากันได้ในการเลือกไม่ใช้ซึ่งละเว้นการวนคำขอการวางแนวเมื่อตรวจพบ (I0a7a2)
  • เพิ่ม WindowAreaComponent#STATUS_ACTIVE เพื่อระบุว่าฟีเจอร์ใช้งานได้แล้ว (I62bc3)
  • เพิ่ม RearDisplayPresentationMode API (I0401c)
  • นำ API สีพื้นหลังออกสำหรับเวอร์ชันเสถียร (I34c3e)
  • ซ่อน Window Area API (I39de0)
  • เพิ่มวิธีการลบล้าง SplitInfo ใน SplitController เพิ่มวิธีการทดสอบเพื่อสร้างรายการแบบคู่สําหรับ SplitInfo และ ActivityStack (Icd69f)
  • กำหนดให้แท็กสำหรับ ActivityRule.Builder เป็นแบบไม่บังคับ (Ib0b44)
  • นำ RatioSplitType, ExpandContainersSplit และ HingeSplitType ออก ตอนนี้มีจำนวน SplitType
    • แทนที่ #splitEqually(), #expandContainers() และ #splitByHinge ด้วยค่าคงที่ SplitType SPLIT_TYPE_EQUAL, SPLIT_TYPE_EXPAND และ SPLIT_TYPE_HINGE
    • นำฟังก์ชันการทำงานในการตั้งค่าประเภทสำรองของประเภทการแยกแบบบานพับออก หากใช้การแยกแบบบานพับไม่ได้เนื่องจากสถานะอุปกรณ์หรือหน้าต่างปัจจุบัน ระบบจะเปลี่ยนไปใช้การแยกคอนเทนเนอร์งานหลักอย่างเท่าๆ กัน ใช้ SplitController#setSplitAttributesCalculator เพื่อปรับแต่งประเภทการแยกสำรอง (Ifcc59)
  • เลิกใช้งาน add/removeSplitCallback
    • ย้าย add/removeSplitCallback ไปยัง SplitControllerCallbackAdapter
    • เพิ่มการสนับสนุน Flow เพื่อดูรายการ SplitInfo (I7f1b6)
  • เพิ่มกฎทดสอบสำหรับ ActivityEmbeddingController (I42e9b)
  • เปลี่ยนชื่อ ActivityOptionsCompat เป็น ActivityEmbeddingOptions (I89301)
  • เพิ่ม splitSupportStatus เพื่อระบุว่าการฝังกิจกรรมพร้อมใช้งานหรือไม่ (I10024)
  • แนะนำ SplitAttributes.BackgroundColor เพื่อแสดงค่า DEFAULT ได้ดียิ่งขึ้น ชี้แจงว่าระบบไม่รองรับสีพื้นหลังของภาพเคลื่อนไหวที่ไม่ทึบแสง ระบบจึงจะถือว่าสีที่ไม่ทึบแสงเป็นค่าเริ่มต้น ซึ่งหมายความว่าจะใช้สีพื้นหลังของหน้าต่างธีมปัจจุบัน (Ic6b95)
  • แทนที่ alwaysAllow() และ alwaysDisallow() ด้วย ALWAYS_ALLOW และ ALWAYS_DISALLOW (I3057b)
  • เพิ่ม API สำหรับ SplitRule, SplitAttributes, SplitAttributesCalculator (I92d23)
  • เพิ่ม TestActivityStack เพื่อสร้าง ActivityStack สำหรับการทดสอบ
    • เพิ่ม TestSplitInfo เพื่อสร้าง SplitInfo สำหรับการทดสอบ (I8e779)
  • เพิ่มวิธีสร้าง SplitAttributesCalculatorParams จำลองเพื่อให้นักพัฒนาแอปยืนยัน SplitAttributesCalculator ที่กําหนดเองได้ (Id4a6e)
  • เพิ่ม WindowMetricsCalculator#computeCurrentWindowMetrics(@UiContext context: Context) และ WindowMetricsCalculator#computeMaximumWindowMetrics(@UiContext context: Context) (I66c7f)

เวอร์ชัน 1.2.0-alpha02

7 มิถุนายน 2023

androidx.window:window-*:1.2.0-alpha02 ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0-alpha02 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • อัปเดต API การทดสอบให้มีค่าคงที่สำหรับฟีเจอร์การพับที่ไม่ระบุ
  • การลบล้างด้วย WindowLayoutInfoPublishRule จะลบล้างค่าทั้งหมดของ windowLayoutInfo รวมถึง API ตามบริบท

การเปลี่ยนแปลง API

  • เพิ่มค่าคงที่สำหรับฟีเจอร์การพับตรงกลางที่ไม่ได้ระบุ (I7530c)

การแก้ไขข้อบกพร่อง

  • อัปเดต WindowLayoutInfoPublishRule เพื่อรองรับการลบล้างใน WindowLayoutInfo ของ Context (I2037a)

เวอร์ชัน 1.2.0-alpha01

24 พฤษภาคม 2023

androidx.window:window-*:1.2.0-alpha01 ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0-alpha01 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

เพิ่มความเสถียรให้กับการทดสอบ API เกี่ยวกับการฝังกิจกรรมและ WindowLayoutInfoTracker ActivityEmbeddingRule ได้รับการโปรโมตเป็นเวอร์ชันเสถียรแล้ว WindowMetricsCalculatorRule ได้รับการโปรโมตเป็นเวอร์ชันเสถียรแล้ว ฟังก์ชันยูทิลิตีในการสร้าง FoldingFeature สำหรับการทดสอบได้รับการโปรโมตเป็นเวอร์ชันเสถียรแล้ว

การเปลี่ยนแปลง API

  • ปรับปรุง ActivityEmbeddingRule ให้รองรับการทดสอบหน่วยเกี่ยวกับแทรกกิจกรรม (I8d6b6)
  • WindowMetrisCalculatorTestRule เสถียรและอนุญาตให้ใช้เมตริกสแต็บสําหรับการทดสอบ JVM เราขอแนะนำให้ใช้โปรแกรมจำลองเพื่อให้ได้ผลลัพธ์ที่ถูกต้อง
  • เพิ่มความเสถียรของ API การทดสอบสําหรับ WindowLayoutInfo เพื่อรองรับการทดสอบ JVM (Ie036e)
  • เพิ่ม IntRange สำหรับค่าฟีเจอร์การทดสอบการพับ (I69f7d)

เวอร์ชัน 1.1

เวอร์ชัน 1.1.0

7 มิถุนายน 2023

androidx.window:window-*:1.1.0 ได้รับการปล่อยแล้ว เวอร์ชัน 1.1.0 มีคอมมิตเหล่านี้

การเปลี่ยนแปลงที่สําคัญนับตั้งแต่เวอร์ชัน 1.0.0

การฝังกิจกรรม

  • เพิ่ม PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED เป็นพร็อพเพอร์ตี้บูลีนของแท็ก <application> ในไฟล์ Manifest ของแอป
  • เลิกใช้งาน isSplitSupported และแทนที่ด้วย splitSupportStatus เพื่อแสดงข้อมูลที่ละเอียดยิ่งขึ้นเกี่ยวกับสาเหตุที่ฟีเจอร์แยกไม่พร้อมใช้งาน
  • เพิ่มคลาสที่ฝัง SplitController.SplitSupportStatus เพื่อระบุค่าคงที่สถานะสำหรับพร็อพเพอร์ตี้ splitSupportStatus
  • แยก SplitController ออกเป็นหลายโมดูล ดังนี้
    • โมดูล ActivityEmbeddingController สำหรับ API ที่เกี่ยวข้องกับ Activity หรือ ActivityStack
    • ย้าย isActivityEmbedded จาก SplitController ไป ActivityEmbeddingController แล้ว
    • โมดูล RuleController สำหรับการดำเนินการที่เกี่ยวข้องกับ EmbeddingRule
    • API SplitController ที่ถูกนำออก
    • clearRegisteredRules()
    • getSplitRules()
    • initialize()
    • registerRule()
    • unregisterRule()
    • API RuleController ที่เพิ่มเข้ามา
    • addRule() — เพิ่มกฎหรืออัปเดตกฎที่มีแท็กเดียวกัน
    • removeRule() — นำกฎออกจากคอลเล็กชันกฎที่ลงทะเบียน
    • setRules() — สร้างคอลเล็กชันกฎ
    • clearRules() — นำกฎที่ลงทะเบียนไว้ทั้งหมดออก
    • parseRules() — แยกวิเคราะห์กฎจากคําจํากัดความของกฎ XML
  • โมดูลทั้งหมดต้องมีการเริ่มต้นบริบทด้วยเมธอด #getInstance() ซึ่งรวมถึง
    • ActivityEmbeddingController#getInstance(Context)
    • SplitController#getInstance(Context)
    • RuleController#getInstance(Context)
  • เพิ่มคลาส EmbeddingAspectRatio เพื่อกําหนดค่าคงที่ของลักษณะการทํางานแบบ Enum ที่เกี่ยวข้องกับสัดส่วนการแสดงผล
  • เพิ่มคลาส SplitAttributes เพื่อกำหนดเลย์เอาต์แบบแยก
  • เพิ่มฟังก์ชันเครื่องคิดเลข SplitAttributes ลงใน SplitController เพื่อปรับแต่งเลย์เอาต์แบบแยก ดังนี้
    • setSplitAttributesCalculator(Function)
    • clearSplitAttributesCalculator()
    • isSplitAttributesCalculatorSupported() เพื่อตรวจสอบว่าอุปกรณ์รองรับ SplitAttributesCalculator API หรือไม่
  • เพิ่มช่อง EmbeddingRule#tag แล้ว
  • การอัปเดต API ใน SplitRule
    • เพิ่ม defaultSplitAttributes — กําหนดเลย์เอาต์การแยกเริ่มต้นของการแยก แทนที่ splitRatio และ layoutDirection
    • เพิ่มการแปลพร็อพเพอร์ตี้ XML splitRatio และ splitLayoutDirection เป็น defaultSplitAttributes
    • เปลี่ยนคำจำกัดความของขนาดขั้นต่ำให้ใช้ความหนาแน่นของพิกเซลอิสระ (dp) แทนพิกเซล
    • เพิ่ม minHeightDp ที่มีค่าเริ่มต้น 600dp
    • เปลี่ยน minWidth เป็น minWidthDp ที่มีค่าเริ่มต้น 600dp
    • เปลี่ยน minSmallestWidth เป็น minSmallestWidthDp ที่มีค่าเริ่มต้น 600dp
    • เพิ่ม maxAspectRatioInHorizontal ที่มีค่าเริ่มต้น ALWAYS_ALLOW
    • เพิ่ม maxAspectRatioInPortrait ที่มีค่าเริ่มต้น 1.4
    • กำหนดคลาสที่ฝัง FinishBehavior เพื่อแทนที่ค่าคงที่ของลักษณะการทำงานที่เสร็จสิ้น
    • ใช้การเปลี่ยนแปลงพร็อพเพอร์ตี้กับคลาสที่ฝังของ SplitPairRule และ SplitPlaceholderRule ของ Builder
  • แทนที่ SplitInfo#getSplitRatio() ด้วย SplitInfo#getSplitAttributes() เพื่อให้ข้อมูลเพิ่มเติมเกี่ยวกับการแยก

WindowLayout

  • เพิ่มการรองรับบริบท UI ที่ไม่เกี่ยวข้องกับกิจกรรมเวอร์ชันทดลองลงใน WindowInfoTracker
  • เพิ่มบริบท UI เวอร์ชันทดลองที่ไม่ใช่กิจกรรมลงใน WindowMetricsCalculator

ขั้นตอนการย้ายข้อมูล

  • หากต้องการเปิดใช้การฝังกิจกรรมเพื่อแสดงกิจกรรมแบบแยก แอปต้องเพิ่มพร็อพเพอร์ตี้ PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED ลงในแท็ก <application> ของไฟล์ Manifest ดังนี้ xml <property android:name="android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED" android:value="true" /> วิธีนี้ช่วยให้ระบบเพิ่มประสิทธิภาพลักษณะการแยกสําหรับแอปพลิเคชันล่วงหน้าได้
  • SplitInfo ratio
    • ตรวจสอบว่ามีการซ้อนการแยกปัจจุบันหรือไม่ โดยทำดังนี้ kotlin SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.ExpandContainersSplitType
    • ตรวจสอบอัตราส่วนปัจจุบัน kotlin if (SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.RatioSplitType) { val ratio = splitInfo.splitAttributes.splitType.ratio } else { // Ratio is meaningless for other types. }
  • การย้ายข้อมูล SplitController
    • SplitController.getInstance() เปลี่ยนเป็น SplitController.getInstance(Context)
    • SplitController.initialize(Context, @ResId int) เปลี่ยนเป็น RuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int))
    • SplitController.getInstance().isActivityEmbedded(Activity) เปลี่ยนเป็น ActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity)
    • SplitController.getInstance().registerRule(rule) เปลี่ยนเป็น RuleController.getInstance(Context).addRule(rule)
    • SplitController.getInstance().unregisterRule(rule) เปลี่ยนเป็น RuleController.getInstance(Context).removeRule(rule)
    • SplitController.getInstance().clearRegisteredRules() เปลี่ยนเป็น RuleController.getInstance(Context).clearRules()
    • SplitController.getInstance().getSplitRules() เปลี่ยนเป็น RuleController.getInstance(Context).getRules()
  • การย้ายข้อมูลพร็อพเพอร์ตี้ SplitRule
    • ตอนนี้ minWidth และ minSmallestWidth ใช้หน่วย dp แทนพิกเซล แอปสามารถใช้การเรียกใช้ต่อไปนี้ kotlin TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics ) หรือเพียงแค่หาร minWith เป็นพิกเซลด้วย displayMetrics#density
  • ต้องย้ายข้อมูลค่าคงที่ของลักษณะการทำงาน "เสร็จสิ้น" ไปยังFinishBehaviorค่าคงที่ของคลาสที่คล้ายกับ enum ดังนี้
    • FINISH_NEVER เปลี่ยนเป็น FinishBehavior.NEVER
    • FINISH_ALWAYS เปลี่ยนเป็น FinishBehavior.ALWAYS
    • FINISH_ADJACENT เปลี่ยนเป็น FinishBehavior.ADJACENT
  • คุณต้องย้ายข้อมูลการวางแนวเลย์เอาต์เป็น SplitAttributes.LayoutDirection โดยทำดังนี้
    • ltr เปลี่ยนเป็น SplitAttributes.LayoutDirection.LEFT_TO_RIGHT
    • rtl เปลี่ยนเป็น SplitAttributes.LayoutDirection.RIGHT_TO_LEFT
    • locale เปลี่ยนเป็น SplitAttributes.LayoutDirection.LOCALE
    • คุณต้องย้ายข้อมูล splitRatio ไปยัง SplitAttributes.SplitType.ratio(splitRatio)
  • SplitPairRule.Builder migrations:
    • SplitPairRule.Builder(filters, minWidth, minSmallestWidth) เปลี่ยนเป็น kotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.
    • setLayoutDirection(layoutDirection) และ setSplitRatio(ratio) เปลี่ยนเป็น kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • setFinishPrimaryWithSecondary และ setFinishSecondaryWithPrimary ใช้ค่าคงที่แบบ FinishBehavior ดูรายละเอียดได้ที่ "การย้ายข้อมูล SplitRule"
    • ใช้ setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) เพื่อแสดงการแยกในอุปกรณ์แนวตั้ง
  • SplitPlaceholder.Builder migrations:
    • มีเฉพาะพารามิเตอร์ filters และ placeholderIntent พร็อพเพอร์ตี้อื่นๆ จะย้ายไปยังตัวเซ็ตเตอร์ ดูรายละเอียดได้ที่ "การย้ายข้อมูล SplitPairRule.Builder"
    • setFinishPrimaryWithPlaceholderใช้ค่าคงที่แบบ FinishBehavior ที่เป็น Enum ดูรายละเอียดได้ที่ "การย้ายข้อมูล SplitRule"
    • setLayoutDirection(layoutDirection) และ setSplitRatio(ratio) เปลี่ยนเป็น kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • ใช้ setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) เพื่อแสดงการแยกในอุปกรณ์แนวตั้ง

เวอร์ชัน 1.1.0-rc01

10 พฤษภาคม 2023

androidx.window:window-*:1.1.0-rc01 ได้รับการปล่อยแล้ว เวอร์ชัน 1.1.0-rc01 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • เผยแพร่ ActivityEmbedding เป็น API ที่เสถียร
  • การแก้ไขข้อบกพร่องหลายรายการ

เวอร์ชัน 1.1.0-beta02

5 เมษายน 2023

androidx.window:window-*:1.1.0-beta02 ได้รับการปล่อยแล้ว เวอร์ชัน 1.1.0-beta02 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • การแก้ไขและล้างข้อมูลภายใน

เวอร์ชัน 1.1.0-beta01

22 มีนาคม 2023

androidx.window:window-*:1.1.0-beta01 ได้รับการปล่อยแล้ว เวอร์ชัน 1.1.0-beta01 มีการคอมมิตเหล่านี้

การฝังกิจกรรม

  • เพิ่ม PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED เป็นพร็อพเพอร์ตี้บูลีนของแท็ก <application> ในไฟล์ Manifest ของแอป
  • เลิกใช้งาน isSplitSupported และแทนที่ด้วย splitSupportStatus เพื่อแสดงข้อมูลที่ละเอียดยิ่งขึ้นเกี่ยวกับสาเหตุที่ฟีเจอร์แยกไม่พร้อมใช้งาน
  • เพิ่มคลาสที่ฝัง SplitController.SplitSupportStatus เพื่อระบุค่าคงที่สถานะสำหรับพร็อพเพอร์ตี้ splitSupportStatus
  • แยก SplitController ออกเป็นหลายโมดูล ดังนี้
    • โมดูล ActivityEmbeddingController สำหรับ API ที่เกี่ยวข้องกับ Activity หรือ ActivityStack
    • ย้าย isActivityEmbedded จาก SplitController ไป ActivityEmbeddingController แล้ว
    • โมดูล RuleController สำหรับการดำเนินการที่เกี่ยวข้องกับ EmbeddingRule
    • API SplitController ที่ถูกนําออกมีดังนี้
      • clearRegisteredRules()
      • getSplitRules()
      • initialize()
      • registerRule()
      • unregisterRule()
    • เพิ่ม RuleController API ต่อไปนี้
      • addRule() — เพิ่มกฎหรืออัปเดตกฎที่มีแท็กเดียวกัน
      • removeRule() — นำกฎออกจากคอลเล็กชันกฎที่ลงทะเบียน
      • setRules() — สร้างคอลเล็กชันกฎ
      • clearRules() — นำกฎที่ลงทะเบียนไว้ทั้งหมดออก
      • `parseRules() — แยกวิเคราะห์กฎจากคําจํากัดความของกฎ XML
  • โมดูลทั้งหมดต้องมีการเริ่มต้นบริบทด้วยเมธอด #getInstance() ซึ่งรวมถึง
    • ActivityEmbeddingController#getInstance(Context)
    • SplitController#getInstance(Context)
    • RuleController#getInstance(Context)
  • เพิ่มคลาส EmbeddingAspectRatio เพื่อกําหนดค่าคงที่ของลักษณะการทํางานแบบ Enum ที่เกี่ยวข้องกับสัดส่วนการแสดงผล
  • เพิ่มคลาส SplitAttributes เพื่อกำหนดเลย์เอาต์แบบแยก
  • เพิ่มฟังก์ชันเครื่องคิดเลข SplitAttributes ลงใน SplitController เพื่อปรับแต่งเลย์เอาต์แบบแยก ดังนี้
    • setSplitAttributesCalculator(Function)
    • clearSplitAttributesCalculator()
    • isSplitAttributesCalculatorSupported() เพื่อตรวจสอบว่าอุปกรณ์รองรับ SplitAttributesCalculator API หรือไม่
  • เพิ่มช่อง EmbeddingRule#tag แล้ว
  • การอัปเดต API ใน SplitRule
    • เพิ่ม defaultSplitAttributes — กําหนดเลย์เอาต์การแยกเริ่มต้นของการแยก แทนที่ splitRatio และ layoutDirection
    • เพิ่มการแปลพร็อพเพอร์ตี้ XML splitRatio และ splitLayoutDirection เป็น defaultSplitAttributes
    • เปลี่ยนคำจำกัดความของขนาดขั้นต่ำให้ใช้ความหนาแน่นของพิกเซลอิสระ (dp) แทนพิกเซล
    • เพิ่ม minHeightDp ที่มีค่าเริ่มต้น 600dp
    • เปลี่ยน minWidth เป็น minWidthDp ที่มีค่าเริ่มต้น 600dp
    • เปลี่ยน minSmallestWidth เป็น minSmallestWidthDp ที่มีค่าเริ่มต้น 600dp
    • เพิ่ม maxAspectRatioInHorizontal ที่มีค่าเริ่มต้น ALWAYS_ALLOW
    • เพิ่ม maxAspectRatioInPortrait ที่มีค่าเริ่มต้น 1.4
    • กำหนดคลาสที่ฝัง FinishBehavior เพื่อแทนที่ค่าคงที่ของลักษณะการทำงานที่เสร็จสิ้น
    • ใช้การเปลี่ยนแปลงพร็อพเพอร์ตี้กับคลาสที่ฝัง Builder ของ SplitPairRule และ SplitPlaceholderRule
  • แทนที่ SplitInfo#getSplitRatio() ด้วย SplitInfo#getSplitAttributes() เพื่อให้ข้อมูลเพิ่มเติมเกี่ยวกับการแยก

WindowLayout

  • เพิ่มการรองรับบริบท UI ที่ไม่ใช่กิจกรรมลงใน WindowInfoTracker
  • เพิ่มบริบท UI ที่ไม่ใช่กิจกรรมลงใน WindowMetricsCalculator

ขั้นตอนการย้ายข้อมูล

  • หากต้องการเปิดใช้การฝังกิจกรรมเพื่อแสดงกิจกรรมแบบแยก แอปต้องเพิ่มพร็อพเพอร์ตี้ PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED ลงในแท็ก <application> ของไฟล์ Manifest ดังนี้ xml <property android:name="android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED" android:value="true" /> วิธีนี้ช่วยให้ระบบเพิ่มประสิทธิภาพลักษณะการแยกสําหรับแอปพลิเคชันล่วงหน้าได้
  • SplitInfo ratio
    • ตรวจสอบว่ามีการซ้อนการแยกปัจจุบันหรือไม่ โดยทำดังนี้ kotlin SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.ExpandContainersSplitType
    • ตรวจสอบอัตราส่วนปัจจุบัน kotlin if (SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.RatioSplitType) { val ratio = splitInfo.splitAttributes.splitType.ratio } else { // Ratio is meaningless for other types. }
  • SplitController migrations:
    • SplitController.getInstance() เปลี่ยนเป็น SplitController.getInstance(Context)
    • SplitController.initialize(Context, @ResId int) เปลี่ยนเป็น RuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int))
    • SplitController.getInstance().isActivityEmbedded(Activity) เปลี่ยนเป็น ActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity)
    • SplitController.getInstance().registerRule(rule) เปลี่ยนเป็น RuleController.getInstance(Context).addRule(rule)
    • SplitController.getInstance().unregisterRule(rule) เปลี่ยนเป็น RuleController.getInstance(Context).removeRule(rule)
    • SplitController.getInstance().clearRegisteredRules() เปลี่ยนเป็น RuleController.getInstance(Context).clearRules()
    • SplitController.getInstance().getSplitRules() เปลี่ยนเป็น RuleController.getInstance(Context).getRules()
  • การย้ายข้อมูลพร็อพเพอร์ตี้ SplitRule
    • ตอนนี้ minWidth และ minSmallestWidth ใช้หน่วย dp แทนพิกเซล แอปสามารถใช้การเรียกใช้ต่อไปนี้ kotlin TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics ) หรือเพียงแค่หาร minWith เป็นพิกเซลด้วย displayMetrics#density
  • ต้องย้ายข้อมูลค่าคงที่ของลักษณะการทำงาน "เสร็จสิ้น" ไปยังFinishBehaviorค่าคงที่ของคลาสที่คล้ายกับ enum ดังนี้
    • FINISH_NEVER เปลี่ยนเป็น FinishBehavior.NEVER
    • FINISH_ALWAYS เปลี่ยนเป็น FinishBehavior.ALWAYS
    • FINISH_ADJACENT เปลี่ยนเป็น FinishBehavior.ADJACENT
  • คุณต้องย้ายข้อมูลการวางแนวเลย์เอาต์เป็น SplitAttributes.LayoutDirection โดยทำดังนี้
    • ltr เปลี่ยนเป็น SplitAttributes.LayoutDirection.LEFT_TO_RIGHT
    • rtl เปลี่ยนเป็น SplitAttributes.LayoutDirection.RIGHT_TO_LEFT
    • locale เปลี่ยนเป็น SplitAttributes.LayoutDirection.LOCALE
    • คุณต้องย้ายข้อมูล splitRatio ไปยัง SplitAttributes.SplitType.ratio(splitRatio)
  • SplitPairRule.Builder migrations:
    • SplitPairRule.Builder(filters, minWidth, minSmallestWidth) เปลี่ยนเป็น kotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.
    • setLayoutDirection(layoutDirection) และ setSplitRatio(ratio) เปลี่ยนเป็น kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • setFinishPrimaryWithSecondary และ setFinishSecondaryWithPrimary ใช้ค่าคงที่แบบ FinishBehavior ดูรายละเอียดได้ที่ "การย้ายข้อมูล SplitRule"
    • ใช้ setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) เพื่อแสดงการแยกในอุปกรณ์แนวตั้ง
  • SplitPlaceholder.Builder migrations:
    • มีเฉพาะพารามิเตอร์ filters และ placeholderIntent พร็อพเพอร์ตี้อื่นๆ จะย้ายไปยังตัวเซ็ตเตอร์ ดูรายละเอียดได้ที่ "การย้ายข้อมูล SplitPairRule.Builder"
    • setFinishPrimaryWithPlaceholderใช้ค่าคงที่แบบ FinishBehavior ที่เป็น Enum ดูรายละเอียดได้ที่ "การย้ายข้อมูล SplitRule"
    • setLayoutDirection(layoutDirection) และ setSplitRatio(ratio) เปลี่ยนเป็น kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • ใช้ setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) เพื่อแสดงการแยกในอุปกรณ์แนวตั้ง

เวอร์ชัน 1.1.0-alpha06

22 กุมภาพันธ์ 2023

androidx.window:window-*:1.1.0-alpha06 ได้รับการปล่อยแล้ว เวอร์ชัน 1.1.0-alpha06 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • แสดงเวอร์ชันทดลองของการรับ WindowLayoutInfo จากบริบท UI

การเปลี่ยนแปลง API

  • เพิ่ม splitSupportStatus เพื่อระบุว่าการฝังกิจกรรมพร้อมใช้งานหรือไม่ (I10024)
  • ตั้งค่า UI Context WindowLayoutInfo API เป็นเวอร์ชันทดลอง (I58ee0)
  • แนะนำ WindowAreaController และ API เพื่อเปิดใช้โหมด RearDisplay เพื่อย้ายหน้าต่างปัจจุบันไปยังจอแสดงผลที่สอดคล้องกับกล้องหลัง (Iffcbf)
  • อัปเดตสีพื้นหลังเริ่มต้น (I1ac1b)
  • เพิ่มพารามิเตอร์ SplitAttributes (I18bdd)
  • เพิ่ม API สำหรับ SplitRule, SplitAttributes, SplitAttributesCalculator (I92d23)
  • ปรับปรุง API ที่เกี่ยวข้องกับ maxAspectRatio ดังนี้
    1. แทนที่ alwaysAllow() และ alwaysDisallow() ด้วย ALWAYS_ALLOW และ ALWAYS_DISALLOW
    2. อัปเดตเอกสารประกอบ API ของ @see ด้วยเอกสารประกอบแบบสแตนด์อโลน (I3057b)
  • ระบบนำตัวสร้างต่อไปนี้ออกจาก API สาธารณะเนื่องจากแอปไม่ควรเรียกใช้
    • SplitInfo constructor
    • ActivityStack constructor (Ide534)
  • ตอนนี้ SplitRule ใช้เวลา maxAspectRatioInPortrait/Landscape โดยจะอนุญาตให้แยกกิจกรรมก็ต่อเมื่อสัดส่วนภาพของขอบเขตหลักเล็กกว่าหรือเท่ากับ maxAspectRatio ที่ขอ (Ia5990)
  • เปลี่ยน RuleController#parseRules เป็นแบบคงที่ (I785df)
  • ปรับปรุง API ที่เกี่ยวข้องกับ ActivityEmbedding
    1. ปรับชื่อ API ให้สอดคล้องกัน - ใช้เพิ่ม/นําออกสําหรับอินสแตนซ์หลายรายการ
    2. registerRule เปลี่ยนเป็น addRule
    3. unregisterRule เปลี่ยนเป็น removeRule
    4. แทนที่ getSplitRules ด้วย getRules เนื่องจาก ActivityRule ไม่ใช่กฎการแยก
    5. เพิ่ม RuleController#setRules เพื่อตั้งค่ากฎหลายรายการ
    6. ดึงข้อมูล API ที่เกี่ยวข้องกับกฎจาก SplitController ไปยัง RuleController แบบเดี่ยว ปัจจัยต่างๆ มีดังนี้
    7. addRule
    8. removeRule
    9. getRules
    10. setRules
    11. clearRules
    12. parseRules
    13. ดึงข้อมูล #isActivityEmbedded จาก SplitController ไปยัง ActivityEmbeddingController แบบ Singleton ปัจจัยต่างๆ มีดังนี้
    14. isActivityEmbedded
    15. นำ SplitController#initialize ออก หากต้องการตั้งค่ากฎจากไฟล์ XML โปรดใช้ RuleController#parseRules และ #setRules การเปลี่ยนแปลงก่อนนี้ SplitController.initialize(context, R.xml.static_rules) การเปลี่ยนแปลงหลังจากนี้ val ruleController = RuleController.getInstance(context) val rules = ruleController.parseRules(R.xml.static_rules) ruleController.setRules(rules)
    16. เราไม่ได้แยกความแตกต่างระหว่างกฎแบบคงที่กับกฎรันไทม์อีกต่อไป อย่างไรก็ตาม การเรียกใช้ #clearRules จะล้างกฎทั้งหมด ไม่ว่าจะลงทะเบียนกับคําจํากัดความกฎ XML แบบคงที่หรือที่รันไทม์ หากต้องการใช้ลักษณะการทำงานเดิมของ SplitController#clearRegisteredRules โปรดเรียกใช้ RuleController#parseRules ด้วยรหัสแหล่งข้อมูล XML และเรียกใช้ RuleController#setRules เพื่อตั้งค่ากฎอีกครั้ง การเปลี่ยนแปลงก่อนนี้ SplitController.getInstance(context).clearRegisteredRules() การเปลี่ยนแปลงหลังจากนี้ val ruleController = RuleController.getInstance(context) val rules = ruleController.parseRules(R.xml.static_rules) ruleController.setRules(rules) (Ib3967)
  • ปรับปรุง SplitRule API ดังนี้
    1. ใช้ขนาดขั้นต่ำเป็น DP แทนพิกเซลสำหรับ SplitRule
    2. ปรับโครงสร้างสำหรับ SplitRule Builder ให้ใช้มิติข้อมูลขั้นต่ำเป็นตัวเลือก (I95f17)
  • ส่งบริบทเพื่อเริ่มต้น SplitController (I42549)
  • เปลี่ยนชื่อ SplitRule#layoutDir เป็น #layoutDirection และ SplitRule Builder#setLayoutDir เป็น Builder#setLayoutDirection (I3f6d1)

เวอร์ชัน 1.1.0-alpha04

9 พฤศจิกายน 2022

androidx.window:window-*:1.1.0-alpha04 ได้รับการปล่อยแล้ว เวอร์ชัน 1.1.0-alpha04 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • แสดงเมธอดเพื่อระบุว่า ActivityStack ว่างเปล่าสำหรับ ActivityEmbedding หรือไม่
  • นําแท็ก API เวอร์ชันทดลองออกจาก ActivityEmbedding API
  • ซ่อนตัวสร้าง ActivityRule เนื่องจาก Builder เป็นวิธีที่แนะนำในการสร้าง
  • เพิ่มวิธีการทดลองเพื่อรับ WindowInsets ใน WindowMetrics
  • อัปเดต SplitPlaceholderFinishBehavior เพื่อป้องกันไม่ให้ตัวยึดตำแหน่งเสร็จสมบูรณ์ การสิ้นสุดตัวยึดตําแหน่งทําให้เกิดลักษณะการทํางานที่ทําให้สับสน

การเปลี่ยนแปลง API

  • ทำให้ val isEmpty เป็นสาธารณะเพื่อแทนที่ fun isEmpty
  • เปลี่ยนชื่อกิจกรรมพารามิเตอร์ ActivityStack เป็น activitiesInProcess (Ia5055)
  • นำ ActivityFilter#matchesClassName และ ActivityFilter#matchesClassNameOrWildCard ออกเนื่องจากทำให้สับสน
  • เพิ่ม ActivityFilter#componentName และ ActivityFilter#intentAction เพื่อให้ผู้เรียกใช้แยกแยะตัวกรองต่างๆ ได้ (I41f22)
  • นํา @Deprecated API ออกจาก API เวอร์ชันทดลอง (I216b3)
  • นํา @ExperimentalWindowApi สําหรับ Activity Embedding API ออก (I69ebe)
  • ซ่อนตัวสร้าง ActivityRule และใช้ Builder แทน (If4eb6)
  • เพิ่ม API เพื่อตรวจสอบว่ากิจกรรมเป็นส่วนหนึ่งของ ActivityFilter หรือไม่ (Ia43cf)
  • อัปเดตไฟล์ API ให้สอดคล้องกับการเปลี่ยนแปลงในคลาส WindowMetrics และ WindowMetricsCalculatorCompat (I667fe)
  • อัปเดต Javadoc ของพร็อพเพอร์ตี้ ActivityEmbedding และชื่อคลาส (Ia1386)
  • การเพิ่มชื่อแท็กพร็อพเพอร์ตี้ ActivityEmbedding เพื่อใช้ใน AndroidManifest.xml (Id1ad4)
  • เพิ่ม API SplitPlaceholderFinishBehavior และ SplitPlaceholderRule.finishPrimaryWithPlaceholder ใหม่ ซึ่งจะแทนที่ SplitPlaceholderRule.finishPrimaryWithSecondary ที่มีอยู่ ซึ่งจะกําหนดว่ากิจกรรมตัวยึดตําแหน่งจะสิ้นสุดเมื่อใด กิจกรรมที่เชื่อมโยงในการฝังกิจกรรมควรทํางานอย่างไร (I64647)

การแก้ไขข้อบกพร่อง

  • แนะนำ WindowAreaController และ API เพื่อเปิดใช้โหมด RearDisplay เพื่อย้ายหน้าต่างปัจจุบันไปยังจอแสดงผลที่สอดคล้องกับกล้องหลัง (I388ab)

เวอร์ชัน 1.1.0-alpha03

27 กรกฎาคม 2022

androidx.window:window-*:1.1.0-alpha03 ได้รับการปล่อยแล้ว เวอร์ชัน 1.1.0-alpha03 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • อัปเดตค่าเริ่มต้นสำหรับกฎการฝัง

การเปลี่ยนแปลง API

  • อัปเดตค่าเริ่มต้นสำหรับพร็อพเพอร์ตี้กฎการฝัง (Ic4d35)

เวอร์ชัน 1.1.0-alpha02

11 พฤษภาคม 2022

androidx.window:window-*:1.1.0-alpha02 ได้รับการปล่อยแล้ว เวอร์ชัน 1.1.0-alpha02 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • เผยแพร่ไลบรารีอะแดปเตอร์เพื่อรองรับ Java และ RxJava

เวอร์ชัน 1.1.0-alpha01

11 พฤษภาคม 2022

androidx.window:window-*:1.1.0-alpha01 ได้รับการปล่อยแล้ว เวอร์ชัน 1.1.0-alpha01 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • เผยแพร่อะแดปเตอร์เพื่อรองรับ Java และ RxJava

เวอร์ชัน 1.1.0-alpha01

20 เมษายน 2022

androidx.window:window:1.1.0-alpha01 ได้รับการปล่อยแล้ว เวอร์ชัน 1.1.0-alpha01 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • แก้ไขข้อบกพร่องที่ทำให้แอปที่ทำงานอยู่เบื้องหลังหยุดแสดงฟีเจอร์การพับ
  • ขยายการใช้งาน ActivityEmbedding API เวอร์ชันทดลอง

การเปลี่ยนแปลง API

  • API สาธารณะสำหรับตรวจสอบว่ามีการฝังกิจกรรมหรือไม่ (I39eb7)

การแก้ไขข้อบกพร่อง

  • เพิ่ม API ที่ปรับแต่งลักษณะการทำงานเมื่อสิ้นสุดสําหรับคอนเทนเนอร์ในการแยกกิจกรรม (I1a1e4)
  • เพิ่มตัวเลือกการกําหนดค่าใหม่สําหรับกฎการแยกกิจกรรม (Iec6af)

รุ่น 1.0

เวอร์ชัน 1.0.0

26 มกราคม 2022

androidx.window:window-*:1.0.0 ได้รับการปล่อยแล้ว เวอร์ชัน 1.0.0 มีคอมมิตเหล่านี้

ฟีเจอร์หลักของ 1.0.0

  • รองรับโทรศัพท์แบบพับได้ตั้งแต่ WindowInfoTracker ถึง FoldingFeature WindowMetricsCalculator เพื่อช่วยคํานวณ WindowMetrics ปัจจุบัน

เวอร์ชัน 1.0.0-rc01

15 ธันวาคม 2021

androidx.window:window-*:1.0.0-rc01 ได้รับการปล่อยแล้ว เวอร์ชัน 1.0.0-rc01 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • เพิ่มการรองรับโทรศัพท์แบบพับผ่าน WindowInfoTracker
  • เพิ่มวิธีการคํานวณ WindowMetrics ปัจจุบันและสูงสุด
  • เพิ่ม API การทดสอบที่รองรับ

เวอร์ชัน 1.0.0-beta04

17 พฤศจิกายน 2021

androidx.window:window-*:1.0.0-beta04 ได้รับการปล่อยแล้ว เวอร์ชัน 1.0.0-beta04 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • เปลี่ยนชื่อ WindowInfoRepository เป็น WindowInfoTracker
  • ทําให้ Activity เป็นวิธีการที่ต้องใช้อย่างชัดแจ้งสําหรับ WindowInfoTracker
  • เพิ่ม TestRule ง่ายๆ สําหรับ WindowMetricsCalculator เพื่อรองรับนักพัฒนาซอฟต์แวร์ที่ใช้ Robolectric

การเปลี่ยนแปลง API

  • ดึงข้อมูลส่วนขยาย (I25a5f)
  • เพิ่ม isEmpty ใน ActivityStack (I5a4e6)
  • เปลี่ยนชื่อ WindowInfoRepository เป็น WindowInfoTracker
    • อัปเดต Dependency ของ java/rxjava/testing ให้ตรงกัน (I0da63)
  • เพิ่มกฎการทดสอบสําหรับ WindowMetricsCalculator ง่ายๆ (Ibacdb)

เวอร์ชัน 1.0.0-beta03

27 ตุลาคม 2021

androidx.window:window-*:1.0.0-beta03 ได้รับการปล่อยแล้ว เวอร์ชัน 1.0.0-beta03 มีคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • เพิ่ม API การฝังกิจกรรมเวอร์ชันทดลอง เลย์เอาต์เวอร์ชันเริ่มต้นนี้ช่วยให้แสดงกิจกรรม 2 รายการควบคู่กันได้

การเปลี่ยนแปลง API

  • นํา currentWindowMetrics API ออกเนื่องจากเราไม่สามารถระบุข้อมูลได้อย่างถูกต้อง โปรดใช้ WindowMetricsCalculator แทน (Icda5f)
  • อัปเดต Extensions API แล้ว (Ica92b)
  • เพิ่มอินเทอร์เฟซสำหรับฟีเจอร์ใหม่ที่อนุญาตให้ฝังกิจกรรมและแสดงกิจกรรมควบคู่กันภายในหน้าต่างงานหลัก (I5711d)
  • ซ่อนตัวสร้างสำหรับ WindowMetrics และ WindowLayoutInfo โปรดใช้ API การทดสอบแทน (I5a1b5)
  • เพิ่ม API เพื่อสร้างออบเจ็กต์ WindowLayoutInfo ปลอม (I4a2fd)

การแก้ไขข้อบกพร่อง

  • แก้ไขปัญหาหน่วยความจำรั่วไหล (I3fc79, b/202989046)

เวอร์ชัน 1.0.0-beta02

1 กันยายน 2021

androidx.window:window-*:1.0.0-beta02 ได้รับการปล่อยแล้ว เวอร์ชัน 1.0.0-beta02 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • เพิ่มคำอธิบายประกอบเวอร์ชันทดลองเพื่อกำกับเนื้อหา API เวอร์ชันทดลอง (I9f1b6)
  • เพิ่มวิธีการทดสอบเพื่อสร้าง FoldingFeature ทดสอบที่ยอมรับ Rect วิธีนี้จะช่วยให้ทดสอบได้ง่ายขึ้นเมื่อใช้ Robolectric แทน Activity จริง (Id1cca)

เวอร์ชัน 1.0.0-beta01

18 สิงหาคม 2021

androidx.window:window-*:1.0.0-beta01 ได้รับการปล่อยแล้ว เวอร์ชัน 1.0.0-beta01 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • นำค่าคงที่เดิมออกและทำให้ FoldingFeature เป็นอินเทอร์เฟซ

การเปลี่ยนแปลง API

  • นำค่าคงที่เก่าออกและทําให้ FoldFeature เป็นอินเทอร์เฟซ (I9a2d5)

การแก้ไขข้อบกพร่อง

  • ไลบรารีที่ขึ้นอยู่กับไลบรารี Test Core ได้รับการอัปเกรดเป็นเวอร์ชัน 1.4.0 แล้ว และจะทำงานร่วมกับแพลตฟอร์ม Android เวอร์ชัน S ได้ (I88b72, b/189353863)

เวอร์ชัน 1.0.0-alpha10

4 สิงหาคม 2021

androidx.window:window-*:1.0.0-alpha10 ได้รับการปล่อยแล้ว เวอร์ชัน 1.0.0-alpha10 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • เปลี่ยนชื่อ WindowInfoRepo เป็น WindowInfoRepository และปรับคลาส / ไฟล์ที่เกี่ยวข้อง
  • แปลงเมตริกกรอบเวลาปัจจุบันเป็นโฟลว์ใน WindowInfoRepository เนื่องจากค่ามีการเปลี่ยนแปลงเมื่อเวลาผ่านไป
  • เปลี่ยนชื่อ WindowInfoRepoJavaAdapter เป็น WindowInfoRepoCallbackAdapter
  • เพิ่มเมธอดตัวช่วยเพื่อสร้างออบเจ็กต์ FoldingFeature ทดสอบ
  • อัปเดตแพ็กเกจเพื่อจัดกลุ่มคลาสตามฟีเจอร์ที่รองรับ

การเปลี่ยนแปลง API

  • เปลี่ยนชื่อ ActivityExt เป็น ActivityExtensions เปลี่ยนจาก Repo เป็น Repository (I61a16)
  • อัปเดตแพ็กเกจสำหรับชั้นเรียน (I23ae2)
  • นํา WindowMetrics ออกจาก WindowInfoRepo (I24663)
  • นำ WindowManager ออกและใช้ WindowInfoRepo
    • ทำให้ WindowBackend เป็นภายใน (I06d9a)
  • แปลงเมตริกกรอบเวลาเป็น FLow
    • เปลี่ยนชื่ออะแดปเตอร์ Java เป็น WindowInfoRepoCallbackAdapter
    • นํา callbackFlow ออกเพื่อไม่ให้มีการใช้ API เวอร์ชันทดลองอีก (Ia4d15)
  • เพิ่มเมธอดตัวช่วยเพื่อสร้างฟีเจอร์การแสดงผลทดสอบ
    • เปลี่ยนจาก occlusionMode เป็น occlusionType (If4cff)

การแก้ไขข้อบกพร่อง

  • แก้ไขข้อผิดพลาด ProGuard ที่มีการนําคลังหลักออก
  • แก้ไขข้อผิดพลาดที่ระบบไม่ได้ส่ง WindowLayoutInfo ไปยังผู้ติดตามเพิ่มเติม
  • แก้ไขข้อผิดพลาดที่การเปลี่ยนแปลงการกําหนดค่าจะไม่ทริกเกอร์การอัปเดตฟีเจอร์การพับ

เวอร์ชัน 1.0.0-alpha09

30 มิถุนายน 2021

androidx.window:window-*:1.0.0-alpha09 ได้รับการปล่อยแล้ว เวอร์ชัน 1.0.0-alpha09 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • เปลี่ยนจากค่าคงที่จำนวนเต็มเป็นลิสต์แบบไม่จำกัด
  • เพิ่มยูทิลิตีการทดสอบเพื่อสร้างฟีเจอร์การทดสอบการพับ

การเปลี่ยนแปลง API

  • เพิ่มเมธอดตัวช่วยเพื่อสร้างฟีเจอร์การแสดงผลทดสอบ (I3cf54)
    • เปลี่ยนจาก occlusionMode เป็น occlusionType

การแก้ไขข้อบกพร่อง

  • ส่งค่าเริ่มต้นเมื่อเพิ่มผู้ใช้งานสตรีมข้อมูลหลายราย

เวอร์ชัน 1.0.0-alpha08

16 มิถุนายน 2021

androidx.window:window-*:1.0.0-alpha08 ได้รับการปล่อยแล้ว เวอร์ชัน 1.0.0-alpha08 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • เผยแพร่อาร์ติแฟกต์การทดสอบเพื่อให้ทดสอบได้ง่ายขึ้นเมื่อใช้ WindowInfoRepository ใช้ WindowInfoRepository เพื่อรับข้อมูลเกี่ยวกับ DisplayFeatures และ WindowMetrics (I57f66, Ida620)

เวอร์ชัน 1.0.0-alpha07

2 มิถุนายน 2021

androidx.window:window-*:1.0.0-alpha07 ได้รับการปล่อยแล้ว เวอร์ชัน 1.0.0-alpha07 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • ย้ายข้อมูลไลบรารีหน้าต่างหลักไปยัง Kotlin จะใช้โคโริวทีนและฟังก์ชันการระงับเพื่อแสดงข้อมูลแบบไม่พร้อมกันนับจากนี้ไป
  • เพิ่ม WindowInfoRepo เป็นแหล่งที่มาของการโต้ตอบหลักสําหรับรับ WindowMetrics และกระแส WindowLayoutInfo
  • อาร์ติแฟกต์ window-java ใหม่เพื่อแสดง API ที่ใช้งานง่ายกับ Java เพื่อลงทะเบียนและยกเลิกการลงทะเบียนการเรียกกลับ
  • อาร์ติแฟกต์ window-rxjava2 และ window-rxjava3 ใหม่เพื่อแสดง API ที่ปรับให้เข้ากับ RxJava

การเปลี่ยนแปลง API

  • เพิ่ม WindowServices เพื่อระบุการพึ่งพาอย่างสม่ำเสมอ
    • เพิ่ม API ที่อิงตาม coroutine เพื่อใช้ข้อมูลเลย์เอาต์หน้าต่าง (Iab70f)
  • ย้ายข้อมูลไลบรารีการจัดการหน้าต่างหลักไปยัง Kotlin (Icca34)

การแก้ไขข้อบกพร่อง

  • เพิ่มคลาสข้อมูลใหม่เพื่อแสดงขอบขององค์ประกอบ (I6dcd1)

เวอร์ชัน 1.0.0-alpha06

5 พฤษภาคม 2021

androidx.window:window:1.0.0-alpha06 ได้รับการปล่อยแล้ว เวอร์ชัน 1.0.0-alpha06 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • เราได้เริ่มย้ายข้อมูลไปยัง Kotlin แล้ว และจะเสร็จสิ้นในรุ่นถัดไป
  • DeviceState ถูกนําออกจาก API สาธารณะแล้ว โปรดใช้ FoldingFeature แทน
  • เราได้นํา STATE_FLIPPED ออกจากสถานะ FoldingFeature แล้วเนื่องจากยังไม่มี Use Case ที่รองรับในขณะนี้
  • นอกจากนี้ เรายังได้นํา API อื่นๆ ที่เลิกใช้งานออกด้วย

การเปลี่ยนแปลง API

  • การเพิ่ม Kotlin เป็นข้อกําหนด
    • ย้ายข้อมูลไลบรารีหลักไปยัง Kotlin (Idd995)
  • นำเครื่องมือสร้าง DisplayFeature ออกแล้ว (I61fa4)
  • นํา DeviceState ออกจาก Public API แล้ว ให้ใช้ FoldingFeature แทน (Id6079)
  • นำการเรียกกลับสถานะอุปกรณ์ออกจากส่วนขยาย (I5ea83)
  • นำ STATE_FLIPPED ออกจาก FoldingFeature (I9c4e1)
  • นำวิธีการลงทะเบียนที่เลิกใช้งานแล้วออก (Ib381b)

เวอร์ชัน 1.0.0-alpha05

24 มีนาคม 2021

androidx.window:window:1.0.0-alpha05 ได้รับการปล่อยแล้ว เวอร์ชัน 1.0.0-alpha05 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

เราได้เพิ่มเมธอดที่สะดวกให้กับ FoldingFeature เพื่อให้แอปบอกได้ว่าฟีเจอร์แยกออกจากกัน บดบัง และระบุการวางแนวของบานพับหรือไม่ นอกจากนี้ เรายังซ่อนประเภทบานพับไว้ด้วยเพื่อให้

เราจะนําวิธีการอ่านแบบซิงค์ออกจาก WindowManager เมธอดการอ่านแบบซิงค์มีแนวโน้มที่จะเกิดข้อผิดพลาดเนื่องจากมีเงื่อนไขการแข่งขันโดยนัย ลงทะเบียน Listeners และ Callbacks เพื่อรับข้อมูลอัปเดตเกี่ยวกับ WindowLayoutInfo

การเปลี่ยนแปลง API

  • เพิ่มเมธอดที่สะดวกสำหรับการทำงานกับ FoldingFeatures (Ie733f)
  • นำเมธอดการอ่านแบบพร้อมกันออกจาก WindowManager (I96fd4)

เวอร์ชัน 1.0.0-alpha04

10 มีนาคม 2021

androidx.window:window:1.0.0-alpha04 ได้รับการปล่อยแล้ว เวอร์ชัน 1.0.0-alpha04 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • แก้ไขข้อบกพร่องที่ไม่มีการออก WindowLayoutInfo หากไม่มีการใช้งาน OEM ตอนนี้เราส่ง WIndowLayoutInfo ที่ว่างเปล่า
  • แก้ไขข้อบกพร่องที่สถานะจะไม่อัปเดตอย่างถูกต้องหากสถานะบานพับเปลี่ยนแปลงไปขณะที่แอปทำงานอยู่เบื้องหลัง ตอนนี้สถานะควรสอดคล้องกัน
  • อัปเดตไฟล์ ProGuard เพื่อละเว้นคําเตือนจากข้อกําหนดในรันไทม์

การแก้ไขข้อบกพร่อง

  • ส่งค่าว่างเมื่อไม่มีคลัง OEM (Ide935)

เวอร์ชัน 1.0.0-alpha03

18 กุมภาพันธ์ 2021

androidx.window:window:1.0.0-alpha03 ได้รับการปล่อยแล้ว เวอร์ชัน 1.0.0-alpha03 มีคอมมิตเหล่านี้

ฟีเจอร์ใหม่

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

การแก้ไขข้อบกพร่อง

  • ส่งค่าว่างเมื่อไม่มีคลัง OEM (Ide935)

เวอร์ชัน 1.0.0-alpha02

27 มกราคม 2021

androidx.window:window:1.0.0-alpha02 ได้รับการปล่อยแล้ว เวอร์ชัน 1.0.0-alpha02 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • เราได้เลิกใช้งาน API บางรายการเพื่อปรับปรุงประสิทธิภาพของ API และลดข้อผิดพลาด ตัวอย่างที่เห็นได้ชัด ได้แก่ การนําการดำเนินการอ่านแบบซิงค์ออกจาก WindowManager และการเลิกใช้งาน DeviceState การดำเนินการอ่านแบบซิงค์อาจทำให้เกิดเงื่อนไขการแข่งขันและมี UI ที่ไม่ถูกต้อง

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

  • WindowMetrics เปิดตัวใน Android 11 เพื่อให้นักพัฒนาแอปมีวิธีง่ายๆ ในการค้นหาเมตริกเกี่ยวกับหน้าต่าง เช่น ตำแหน่งและขนาดบนหน้าจอ รวมถึงส่วนแทรกของระบบ เราได้พอร์ต API นี้ไปยังเวอร์ชันเก่าในรุ่นนี้เพื่อให้นักพัฒนาแอปใช้ประโยชน์จาก WindowMetrics และรองรับ Android เวอร์ชันเก่าต่อไปได้ คุณดู WindowMetrics ได้จาก WindowManager#getCurrentWindowMetrics() และ WindowManager#getMaximumWindowMetrics() API

การเปลี่ยนแปลง API

  • เลิกใช้งาน API ที่จะนําออกในรุ่นอัลฟ่าถัดไป (Ib7cc4)
  • อัปเดต ExtensionInterface เพื่อยอมรับการอ้างอิงกิจกรรมที่ชัดเจน (I07ded)
  • แนะนํา WindowMetrics API (I3ccee)
  • นําวิธีการอ่านแบบซิงค์ออกจาก WindowManager (I69983)
  • ทําให้แพ็กเกจ ExtensionWindowBackend ได้รับการปกป้อง (Ied208)

การแก้ไขข้อบกพร่อง

  • อัปเดต ExtensionInterface API เพื่อยอมรับบริบทภาพ (I8e827)

การมีส่วนร่วมจากภายนอก

  • ผสาน DeviceState และ WindowLayoutInfo เพื่อให้เข้าถึงข้อมูลได้ง่ายขึ้น (Id34f4)

เวอร์ชัน 1.0.0-alpha01

27 กุมภาพันธ์ 2020

androidx.window:window:1.0.0-alpha01 และ androidx.window:window-extensions:1.0.0-alpha01 เผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha01 มีการคอมมิตเหล่านี้ นี่เป็นรุ่นแรกของไลบรารีตัวจัดการหน้าต่าง

ฟีเจอร์ใหม่

  • DisplayFeature: API ใหม่นี้จะระบุการหยุดชะงักบนพื้นผิวหน้าจอแบบแบนต่อเนื่อง เช่น ข้อต่อหรือรอยพับ
  • DeviceState: API ใหม่นี้จะระบุลักษณะการวางโทรศัพท์ปัจจุบันจากรายการลักษณะการวางที่กําหนด (เช่น CLOSED, OPENED, HALF_OPENED เป็นต้น)