WindowManager

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

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

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

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

Groovy

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

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

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

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

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

Kotlin

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

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

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

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

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

ความคิดเห็น

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

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

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

รุ่น 1.5

เวอร์ชัน 1.5.0-beta01

2 กรกฎาคม 2025

androidx.window:window-*:1.5.0-beta01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.5.0-beta01 มีการเปลี่ยนแปลงเหล่านี้

เวอร์ชัน 1.5.0-alpha02

7 พฤษภาคม 2025

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

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

  • เพิ่มเบรกพอยท์ WindowSizeClass สำหรับขนาดใหญ่และใหญ่พิเศษ (I40d85)
  • ขยายการคำนวณ WindowMetrics ไปยังบริบทของแอปพลิเคชัน (I8eeeb, b/360934048)
  • Provider a Getter to enable direct access to WindowLayoutInfo (Ie9513)
  • เปิดตัว API เพื่อบันทึกสถานะการฝังโดยอัตโนมัติและเพื่อคืนค่าสถานะการฝังโดยอัตโนมัติเมื่อรีสตาร์ทกระบวนการของแอป (Ie0295)
  • นำ WindowInsets API เวอร์ชันทดลองออก (I68a71)
  • ซ่อนผู้ผลิตบางราย (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

20 พฤษภาคม 2025

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

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

  • การฝังกิจกรรม
    • API สำหรับปรับแต่งภาพเคลื่อนไหวการเปิดตัว
    • ตัวแบ่งแบบอินเทอร์แอกทีฟ
    • ActivityStack การปักหมุด
    • การหรี่กล่องโต้ตอบแบบเต็มหน้าจอ
    • การเรียกกลับข้อมูลหน้าต่างกิจกรรมที่ฝัง
    • ActivityStackการจัดการที่ปรับปรุงแล้ว
    • เปิดใช้กิจกรรมใน ActivityStack ที่ระบุ
  • WindowMetricsCalculator
    • ปรับปรุงการรองรับการทดสอบ
  • WindowMetrics
    • วิธีการคำนวณ withDp และ heightDp อย่างสะดวก
    • อัปเดตการตรวจสอบขอบเขตเป็น isAtLeast และใช้ขอบเขตล่างเพื่อรองรับการเพิ่มค่าใหม่
  • WindowSizeClass
    • เพิ่มวิธีคำนวณจาก WindowMetrics
  • WindowInfoTracker
    • เพิ่ม API เพื่อตรวจหาท่าทางที่รองรับในอุปกรณ์

เวอร์ชัน 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
  • การอัปเดต API การฝังกิจกรรม

เวอร์ชัน 1.4.0-beta02

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

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

ฟีเจอร์ใหม่

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

เวอร์ชัน 1.4.0-beta01

15 มกราคม 2025

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

ฟีเจอร์ใหม่

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

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

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

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

  • ตอนนี้ไลบรารีนี้ใช้คำอธิบายประกอบเกี่ยวกับค่า Null ของ JSpecify ซึ่งเป็นแบบใช้ประเภท นักพัฒนาซอฟต์แวร์ 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 โดยใช้ Float (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 สำหรับตรวจสอบว่าอุปกรณ์รองรับโหมด TableTop สำหรับอุปกรณ์พับได้หรือไม่ เพิ่ม 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 ต่อไปนี้มีความเสถียรและไม่ใช่เวอร์ชันทดลองอีกต่อไป

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

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

  • แก้ไขข้อบกพร่องในอุปกรณ์บางรุ่นซึ่งจะแสดง UNAVAILABLE แทน ACTIVE เมื่อเซสชันทำงานอยู่
  • เลิกรองรับ 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)
  • เปิดตัว Callback Adapter สำหรับ embeddedActivityWindowInfo Flow API (Ida77f)
  • เพิ่ม Callback Adapter สำหรับ 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)
  • - เพิ่ม API สำหรับปักหมุด/เลิกปักหมุดที่ด้านบนActivityStack androidx.Window
    • อัปเดตแอปเดโมเพื่อให้ปักหมุด/เลิกปักหมุดด้านบนได้ 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 เพื่อปรับปรุงความยืดหยุ่นสำหรับนักพัฒนาแอปที่ต้องการใช้ Size Class ของตนเอง

การเปลี่ยนแปลง 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 Surface
  • เพิ่ม 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)
  • ซ่อน API พื้นที่หน้าต่าง (I39de0)
  • เพิ่มวิธีการลบล้าง SplitInfo ใน SplitController เพิ่มวิธีการทดสอบเพื่อสร้าง Double สำหรับ 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 เพื่อรองรับการลบล้างใน Context ตาม WindowLayoutInfo (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 มีความเสถียรซึ่งอนุญาตให้ใช้เมตริก Stub สำหรับการทดสอบ 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 โมดูลสำหรับ Activity หรือ API ที่เกี่ยวข้องกับ 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 class เพื่อกำหนดค่าคงที่ของลักษณะการทำงานที่คล้ายกับ 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
    • 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
  • ต้องย้ายข้อมูลค่าคงที่ของลักษณะการทำงานของฟินิชไปยังค่าคงที่ของคลาสที่คล้ายกับ Enum FinishBehavior
    • 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 การย้ายข้อมูล:
    • 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ค่าคงที่ที่คล้ายกับ Enum ดูรายละเอียดได้ที่ "การย้ายข้อมูล SplitRule"
    • ใช้ setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) เพื่อแสดงการแยกหน้าจอในอุปกรณ์แนวตั้ง
  • SplitPlaceholder.Builder การย้ายข้อมูล:
    • มีเฉพาะพารามิเตอร์ filters และ placeholderIntent พร็อพเพอร์ตี้อื่นๆ จะย้ายไปที่ตัวตั้งค่า ดูรายละเอียดได้ที่ "การย้ายข้อมูล SplitPairRule.Builder"
    • setFinishPrimaryWithPlaceholderใช้ค่าคงที่ที่คล้ายกับ Enum ของ FinishBehavior ดูรายละเอียดได้ที่ "การย้ายข้อมูล 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 โมดูลสำหรับ Activity หรือ API ที่เกี่ยวข้องกับ 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 class เพื่อกำหนดค่าคงที่ของลักษณะการทำงานที่คล้ายกับ 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 การย้ายข้อมูล:
    • 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
  • ต้องย้ายข้อมูลค่าคงที่ของลักษณะการทำงานของฟินิชไปยังค่าคงที่ของคลาสที่คล้ายกับ Enum FinishBehavior
    • 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 การย้ายข้อมูล:
    • 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ค่าคงที่ที่คล้ายกับ Enum ดูรายละเอียดได้ที่ "การย้ายข้อมูล SplitRule"
    • ใช้ setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) เพื่อแสดงการแยกหน้าจอในอุปกรณ์แนวตั้ง
  • SplitPlaceholder.Builder การย้ายข้อมูล:
    • มีเฉพาะพารามิเตอร์ filters และ placeholderIntent พร็อพเพอร์ตี้อื่นๆ จะย้ายไปที่ตัวตั้งค่า ดูรายละเอียดได้ที่ "การย้ายข้อมูล SplitPairRule.Builder"
    • setFinishPrimaryWithPlaceholderใช้ค่าคงที่ที่คล้ายกับ Enum ของ FinishBehavior ดูรายละเอียดได้ที่ "การย้ายข้อมูล 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)
  • ทําให้ WindowLayoutInfo API บริบท UI เป็นเวอร์ชันทดลอง (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 เครื่องมือสร้าง
    • ActivityStack constructor (Ide534)
  • ตอนนี้ SplitRule รับ maxAspectRatioInPortrait/Landscape แล้ว โดยจะอนุญาตให้แยกกิจกรรมได้ก็ต่อเมื่อสัดส่วนภาพของขอบเขตหลักมีขนาดเล็กกว่าหรือเท่ากับ maxAspectRatio ที่ขอ (Ia5990)
  • เปลี่ยน RuleController#parseRules ให้เป็นแบบคงที่ (I785df)
  • ปรับปรุง API เกี่ยวกับ ActivityEmbedding
    1. ตั้งชื่อ API ให้สอดคล้องกัน - ใช้ add/remove สำหรับหลายอินสแตนซ์
    2. registerRule เปลี่ยนเป็น addRule
    3. unregisterRule เปลี่ยนเป็น removeRule
    4. แทนที่ getSplitRules ด้วย getRules เนื่องจาก ActivityRule ไม่ใช่กฎการแยก
    5. เพิ่ม RuleController#setRules เพื่อตั้งค่ากฎหลายข้อ
    6. แยก API ที่เกี่ยวข้องกับกฎจาก SplitController ไปยัง Singleton RuleController ปัจจัยต่างๆ มีดังนี้
    7. addRule
    8. removeRule
    9. getRules
    10. setRules
    11. clearRules
    12. parseRules
    13. ดึงข้อมูล #isActivityEmbedded จาก SplitController ไปยัง ActivityEmbeddingController รายการเดียว ปัจจัยต่างๆ มีดังนี้
    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 results จะล้างกฎทั้งหมดไม่ว่าจะลงทะเบียนด้วยคำจำกัดความกฎ 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 constructor เนื่องจาก 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 ของพร็อพเพอร์ตี้และชื่อคลาส (Ia1386)ActivityEmbedding
  • การเพิ่มชื่อแท็กพร็อพเพอร์ตี้ 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

  • นำ API currentWindowMetrics ออกเนื่องจากเราไม่สามารถระบุได้อย่างถูกต้อง โปรดใช้ WindowMetricsCalculator แทน (Icda5f)
  • อัปเดต API ของส่วนขยาย (Ica92b)
  • เพิ่มอินเทอร์เฟซสำหรับฟีเจอร์ใหม่ที่ช่วยให้ฝังกิจกรรมและแสดงกิจกรรมแบบเคียงข้างกันภายในหน้าต่างงานหลักได้ (I5711d)
  • ซ่อนตัวสร้างสำหรับ WindowMetrics และ WindowLayoutInfo โปรดใช้ Test 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 และปรับคลาส / ไฟล์ที่เกี่ยวข้อง
  • แปลงเมตริกหน้าต่างปัจจุบันเป็น Flow ใน WindowInfoRepository เนื่องจากค่าจะเปลี่ยนแปลงไปตามเวลา
  • เปลี่ยนชื่อ WindowInfoRepoJavaAdapter เป็น WindowInfoRepoCallbackAdapter
  • เพิ่มเมธอดตัวช่วยเพื่อสร้างออบเจ็กต์ FoldingFeature สำหรับการทดสอบ
  • อัปเดตแพ็กเกจเพื่อจัดกลุ่มคลาสตามฟีเจอร์ที่รองรับ

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

  • เปลี่ยนชื่อ ActivityExt เป็น ActivityExtensions เปลี่ยนจาก Repo เป็น Repository (I61a16)
  • อัปเดตแพ็กเกจสำหรับชั้นเรียน (I23ae2)
  • นำ WindowMetrics ออกจาก WindowInfoRepo (I24663)
  • นำ WindowManager ออกและใช้ WindowInfoRepo
    • ทำให้ WindowBackend เป็นภายใน (I06d9a)
  • แปลงเมตริกหน้าต่างเป็น Flow
    • เปลี่ยนชื่อ Java Adapter เป็น 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 มีคอมมิตต่อไปนี้

ฟีเจอร์ใหม่

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

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

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

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

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

เวอร์ชัน 1.0.0-alpha08

16 มิถุนายน 2021

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

ฟีเจอร์ใหม่

  • เผยแพร่ Artifact สำหรับการทดสอบเพื่อให้ทดสอบได้ง่ายขึ้นเมื่อใช้ 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 ที่อิงตามโครูทีนเพื่อใช้ข้อมูลเลย์เอาต์หน้าต่าง (Iab70f)
  • ย้ายข้อมูลไลบรารีหลักของ Window Manager ไปยัง 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 ออกจาก 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 เมธอดการอ่านแบบซิงโครนัสมีแนวโน้มที่จะเกิดข้อผิดพลาดเนื่องจากมีเงื่อนไขการแข่งขันโดยนัย ลงทะเบียน Listener และ Callback เพื่อรับข้อมูลอัปเดตเกี่ยวกับ 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 เพื่อไม่สนใจคำเตือนจากทรัพยากร Dependency ของรันไทม์

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

  • ส่งค่าว่างเมื่อไม่มีไลบรารี 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)

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

  • อัปเดต API ExtensionInterface เพื่อยอมรับบริบทภาพ (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 มีคอมมิตต่อไปนี้ นี่คือไลบรารี Window Manager รุ่นแรก

ฟีเจอร์ใหม่

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