WindowManager
| อัปเดตล่าสุด | รุ่นที่เสถียร | รุ่นที่อาจได้รับการเผยแพร่ | รุ่นเบต้า | รุ่นอัลฟ่า |
|---|---|---|---|---|
| 24 กันยายน 2025 | 1.5.0 | - | - | - |
การประกาศทรัพยากร Dependency
หากต้องการเพิ่มทรัพยากร Dependency ใน WindowManager คุณต้องเพิ่มที่เก็บ Maven ของ Google ลงในโปรเจ็กต์ อ่านข้อมูลเพิ่มเติมได้ที่ที่เก็บ Maven ของ Google
เพิ่มทรัพยากร Dependency สำหรับอาร์ติแฟกต์ที่ต้องการในไฟล์ build.gradle สำหรับ
แอปหรือโมดูล
Groovy
dependencies { implementation "androidx.window:window:1.5.0" // For Java-friendly APIs to register and unregister callbacks implementation "androidx.window:window-java:1.5.0" // For RxJava2 integration implementation "androidx.window:window-rxjava2:1.5.0" // For RxJava3 integration implementation "androidx.window:window-rxjava3:1.5.0" // For testing implementation "androidx.window:window-testing:1.5.0" }
Kotlin
dependencies { implementation("androidx.window:window:1.5.0") // For Java-friendly APIs to register and unregister callbacks implementation("androidx.window:window-java:1.5.0") // For RxJava2 integration implementation("androidx.window:window-rxjava2:1.5.0") // For RxJava3 integration implementation("androidx.window:window-rxjava3:1.5.0") // For testing implementation("androidx.window:window-testing:1.5.0") }
ความคิดเห็น
ความคิดเห็นของคุณช่วยเราปรับปรุง Jetpack ให้ดียิ่งขึ้น โปรดแจ้งให้เราทราบหากพบปัญหาใหม่หรือมี ไอเดียในการปรับปรุงไลบรารีนี้ โปรดดูปัญหาที่มีอยู่ ในไลบรารีนี้ก่อนสร้างปัญหาใหม่ คุณสามารถโหวตปัญหาที่มีอยู่ได้โดย คลิกปุ่มดาว
ดูข้อมูลเพิ่มเติมได้ในเอกสารประกอบของเครื่องมือติดตามปัญหา
รุ่น 1.5
เวอร์ชัน 1.5.0
24 กันยายน 2025
androidx.window:window-*:1.5.0 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.5.0 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 1.4.0:
- เพิ่มเบรกพอยท์
WindowSizeClassสำหรับขนาดใหญ่และใหญ่พิเศษ (I40d85) - ขยายการคำนวณ
WindowMetricsไปยังบริบทของแอปพลิเคชัน (I8eeeb, b/360934048) - Provider a Getter to enable direct access to
WindowLayoutInfo(Ie9513) - เปิดตัว API เพื่อบันทึกสถานะการฝังโดยอัตโนมัติและเพื่อคืนค่าสถานะการฝังโดยอัตโนมัติเมื่อรีสตาร์ทกระบวนการของแอป (Ie0295)
- นำ
WindowInsetsAPI เวอร์ชันทดลองออก (I68a71)
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาที่
EmbeddingRuleแสดงhashCodeที่แตกต่างกันในบางกรณี (I748cc) - แก้ไขกรณีที่
NullPointerExceptionอาจเกิดขึ้นเนื่องจากข้อผิดพลาดในการติดตั้งใช้งานอุปกรณ์ - แก้ไขกรณีที่การตรวจสอบความปลอดภัยของ
ActivityEmbeddingไม่สำเร็จเนื่องจาก Proguard นำคลาสที่ไม่ได้ใช้ออก
การมีส่วนร่วมภายนอก
- เพิ่มแพลตฟอร์ม KMP ทั้งหมดไปยัง
window-core(If3d7c)
เวอร์ชัน 1.5.0-rc01
27 สิงหาคม 2025
androidx.window:window-*:1.5.0-rc01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.5.0-rc01 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขกรณีที่
NullPointerExceptionอาจเกิดขึ้นเนื่องจากข้อผิดพลาดในการติดตั้งใช้งานอุปกรณ์ - แก้ไขกรณีที่การตรวจสอบความปลอดภัยของ
ActivityEmbeddingไม่สำเร็จเนื่องจาก Proguard นำคลาสที่ไม่ได้ใช้ออก
เวอร์ชัน 1.5.0-beta02
13 สิงหาคม 2025
androidx.window:window-*:1.5.0-beta02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.5.0-beta02 มีการเปลี่ยนแปลงเหล่านี้
ฟีเจอร์ใหม่
- แก้ไขข้อบกพร่องเล็กน้อย
การมีส่วนร่วมภายนอก
- เพิ่มแพลตฟอร์ม KMP ทั้งหมดไปยัง
window-core(If3d7c)
เวอร์ชัน 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)
- นำ
WindowInsetsAPI เวอร์ชันทดลองออก (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 มีการเปลี่ยนแปลงเหล่านี้
ฟีเจอร์ใหม่
- การอัปเดต
WindowSizeClassAPI - การอัปเดต 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ภาพเคลื่อนไหว - ขยาย
WindowMetricsCalculatorAPI การทดสอบเพื่ออนุญาตให้จำลองเมตริกหน้าต่าง
การเปลี่ยนแปลง API
- ซ่อนผู้ผลิตบางราย (I87b8d)
- อนุญาตให้แอปปรับแต่ง
ActivityEmbeddingภาพเคลื่อนไหว (If31a8) - เพิ่มการรองรับเป้าหมาย
watchosDeviceArm64KMP และ Kotlin 1.9 (Icf15d, b/364652024) - เปิดเผย
WindowMetricsCalculatorAPI (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) - นำ
WindowInsetsAPI เวอร์ชันทดลองออก (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) - อัปเดต
WindowSizeClassAPI เพื่อรองรับการเพิ่มค่าเบรกพอยต์ใหม่ในอนาคต เราใช้ขอบเขตล่างแทนที่จะใช้ขอบเขตสัมบูรณ์ และแนะนำให้นักพัฒนาแอปใช้การตรวจสอบขอบเขตล่างเมื่อประมวลผล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 เพื่อรองรับการปักหมุด
ActivityStackSplitPinRuleชั้นเรียนSplitController#pinTopActivityStackSplitController#unpinTopActivityStack
เพิ่ม API เพื่อเปิดใช้และกำหนดค่าตัวคั่นแบบอินเทอร์แอกทีฟ
DividerAttributesชั้นเรียนSplitAttributes.Builder#setDividerAttributes
เพิ่ม API เพื่อตั้งค่า
EmbeddingConfigurationและDimAreaBehaviorสำหรับกล่องโต้ตอบEmbeddingConfigurationชั้นเรียนDimAreaBehaviorชั้นเรียนActivityEmbeddingController#setEmbeddingConfiguration
เพิ่ม API เพื่อรับข้อมูลอัปเดตเกี่ยวกับหน้าต่างกิจกรรมที่ฝัง
EmbeddedActivityWindowInfoชั้นเรียนActivityEmbeddingController#embeddedActivityWindowInfo
เพิ่ม API เพื่อตั้งค่าพื้นหลังของภาพเคลื่อนไหวการฝัง
EmbeddingAnimationBackgroundSplitAttributes.Builder#setAnimationBackground
เพิ่ม API เพื่อดำเนินการให้เสร็จสิ้น
ActivityStacksActivityEmbeddingController#finishActivityStacks
เพิ่ม API เพื่อตั้งค่าการเปิดตัว
ActivityStackActivityEmbeddingOptions#setLaunchingActivityStack
API ต่อไปนี้มีความเสถียรและไม่ใช่เวอร์ชันทดลองอีกต่อไป
ActivityEmbeddingController#invalidateVisibleActivityStacks(ย้ายจาก SplitController#invalidateTopVisibleSplitAttributes)ActivityEmbeddingController#getActivityStackSplitController#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 สำหรับ
embeddedActivityWindowInfoFlow 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 สำหรับปักหมุด/เลิกปักหมุดด้านบน
ActivityStackandroidx.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 Surface ของ 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จะรายงานการลบล้างเมื่อได้รับค่าจากUiContextWindowInfoTrackerจะรายงานข้อมูลฟีเจอร์การพับไปยังพารามิเตอร์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จะรายงานการลบล้างเมื่อได้รับค่าจากUiContextWindowInfoTrackerจะรายงานข้อมูลฟีเจอร์การพับไปยังพารามิเตอร์UiContext- แสดงเวอร์ชันส่วนขยายในอุปกรณ์
เวอร์ชัน 1.2.0-rc01
1 พฤศจิกายน 2023
androidx.window:window-*:1.2.0-rc01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.2.0-rc01 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เปิดเผย API หน้าต่างทดลองเพื่อเข้าถึงหน้าจอด้านหลัง
- ตอนนี้ API สำหรับการทดสอบการสร้าง
FoldingFeatureเสถียรแล้ว - ตอนนี้ API สำหรับการทดสอบการตั้งค่าค่า
ActivityEmbeddingปลอมเสถียรแล้ว WindowLayoutInfoPublisherRuleจะรายงานการลบล้างเมื่อได้รับค่าจากUiContextWindowInfoTrackerจะรายงานข้อมูลฟีเจอร์การพับไปยังพารามิเตอร์UiContext- แสดงเวอร์ชันส่วนขยายในอุปกรณ์
เวอร์ชัน 1.2.0-beta04
18 ตุลาคม 2023
androidx.window:window-*:1.2.0-beta04 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.2.0-beta04 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- นำ API ที่ไม่เสถียรออก (Ibc534, b/302380585)
เวอร์ชัน 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จะรายงานการลบล้างเมื่อได้รับค่าจากUiContextWindowInfoTrackerจะรายงานข้อมูลฟีเจอร์การพับไปยังพารามิเตอร์UiContext
การเปลี่ยนแปลง API
- ทำเครื่องหมาย
WindowAreaAPI เป็นเวอร์ชันทดลองเพื่อให้สามารถเปลี่ยนแปลง 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
การแก้ไขข้อบกพร่อง
- เพิ่มพร็อพเพอร์ตี้ความเข้ากันได้ในการเลือกไม่ใช้สำหรับการลบล้างการบังคับปรับขนาด (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) - เพิ่ม
RearDisplayPresentationModeAPI (I0401c) - นำ API สีพื้นหลังออกสำหรับเวอร์ชันที่เสถียร (I34c3e)
- ซ่อน API พื้นที่หน้าต่าง (I39de0)
- เพิ่มวิธีการลบล้าง
SplitInfoในSplitControllerเพิ่มวิธีการทดสอบเพื่อสร้าง Double สำหรับSplitInfoและActivityStack(Icd69f) - กำหนดให้แท็กเป็นแบบไม่บังคับสำหรับ
ActivityRule.Builder(Ib0b44) - นำ
RatioSplitTypeExpandContainersSplitและ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สำหรับ 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()เพื่อตรวจสอบว่าอุปกรณ์รองรับSplitAttributesCalculatorAPI หรือไม่
- เพิ่มช่อง
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>ของไฟล์ Manifestxml <property android:name="android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED" android:value="true" />ซึ่งจะช่วยให้ระบบเพิ่มประสิทธิภาพลักษณะการทำงานของโหมดแยกหน้าจอสำหรับแอปพลิเคชันได้ล่วงหน้า SplitInforatio- ตรวจสอบว่าการแยกปัจจุบันซ้อนกันอยู่หรือไม่ โดยทำดังนี้
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
FinishBehaviorFINISH_NEVERเปลี่ยนเป็นFinishBehavior.NEVERFINISH_ALWAYSเปลี่ยนเป็นFinishBehavior.ALWAYSFINISH_ADJACENTเปลี่ยนเป็นFinishBehavior.ADJACENT
- ต้องย้ายข้อมูลทิศทางเลย์เอาต์ไปยัง
SplitAttributes.LayoutDirection:ltrเปลี่ยนเป็นSplitAttributes.LayoutDirection.LEFT_TO_RIGHTrtlเปลี่ยนเป็นSplitAttributes.LayoutDirection.RIGHT_TO_LEFTlocaleเปลี่ยนเป็น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ใช้ค่าคงที่ที่คล้ายกับFinishBehaviorenum ดูรายละเอียดได้ที่ "การย้ายข้อมูล 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สำหรับ API ที่เกี่ยวข้องกับActivityหรือActivityStack- ย้าย
isActivityEmbeddedจากSplitControllerไปยังActivityEmbeddingController RuleControllerโมดูลสำหรับการดำเนินการที่เกี่ยวข้องกับEmbeddingRule- เราได้นำ API ต่อไปนี้ออกแล้ว
clearRegisteredRules()getSplitRules()initialize()registerRule()unregisterRule()
SplitController - เพิ่ม
RuleControllerAPI ดังนี้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()เพื่อตรวจสอบว่าอุปกรณ์รองรับ API ของ SplitAttributesCalculator หรือไม่
- เพิ่มช่อง
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>ของไฟล์ Manifestxml <property android:name="android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED" android:value="true" />ซึ่งจะช่วยให้ระบบเพิ่มประสิทธิภาพลักษณะการทำงานของโหมดแยกหน้าจอสำหรับแอปพลิเคชันได้ล่วงหน้า SplitInforatio- ตรวจสอบว่าการแยกปัจจุบันซ้อนกันอยู่หรือไม่ โดยทำดังนี้
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
FinishBehaviorFINISH_NEVERเปลี่ยนเป็นFinishBehavior.NEVERFINISH_ALWAYSเปลี่ยนเป็นFinishBehavior.ALWAYSFINISH_ADJACENTเปลี่ยนเป็นFinishBehavior.ADJACENT
- ต้องย้ายข้อมูลทิศทางเลย์เอาต์ไปยัง
SplitAttributes.LayoutDirection:ltrเปลี่ยนเป็นSplitAttributes.LayoutDirection.LEFT_TO_RIGHTrtlเปลี่ยนเป็นSplitAttributes.LayoutDirection.RIGHT_TO_LEFTlocaleเปลี่ยนเป็น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ใช้ค่าคงที่ที่คล้ายกับFinishBehaviorenum ดูรายละเอียดได้ที่ "การย้ายข้อมูล 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) - ทําให้ UI Context
WindowLayoutInfoAPI เป็นเวอร์ชันทดลอง (I58ee0) - เปิดตัว
WindowAreaControllerและ API เพื่อเปิดใช้โหมดRearDisplayเพื่อย้ายหน้าต่างปัจจุบันไปยังจอแสดงผลที่สอดคล้องกับกล้องหลัง (Iffcbf) - อัปเดตสีพื้นหลังเริ่มต้น (I1ac1b)
- เพิ่มพารามิเตอร์
SplitAttributes(I18bdd) - เพิ่ม API สำหรับ
SplitRule,SplitAttributes,SplitAttributesCalculator(I92d23) - ปรับปรุง API ที่เกี่ยวข้องกับ
maxAspectRatioดังนี้- แทนที่
alwaysAllow()และalwaysDisallow()ด้วยALWAYS_ALLOWและALWAYS_DISALLOW - อัปเดตเอกสารประกอบเกี่ยวกับ API ของ @see ด้วยเอกสารประกอบแบบสแตนด์อโลน (I3057b)
- แทนที่
- เราได้นำตัวสร้างต่อไปนี้ออกจาก API สาธารณะเนื่องจากแอปไม่ควรเรียกใช้
SplitInfoเครื่องมือสร้างActivityStackconstructor (Ide534)
- ตอนนี้
SplitRuleรับmaxAspectRatioInPortrait/Landscapeแล้ว โดยจะอนุญาตให้แยกกิจกรรมได้ก็ต่อเมื่อสัดส่วนภาพของขอบเขตหลักมีขนาดเล็กกว่าหรือเท่ากับmaxAspectRatioที่ขอ (Ia5990) - เปลี่ยน
RuleController#parseRulesให้เป็นแบบคงที่ (I785df) - ปรับปรุง API เกี่ยวกับ ActivityEmbedding
- ตั้งชื่อ API ให้สอดคล้องกัน - ใช้ add/remove สำหรับหลายอินสแตนซ์
registerRuleเปลี่ยนเป็นaddRuleunregisterRuleเปลี่ยนเป็นremoveRule- แทนที่
getSplitRulesด้วยgetRulesเนื่องจากActivityRuleไม่ใช่กฎการแยก - เพิ่ม
RuleController#setRulesเพื่อตั้งค่ากฎหลายข้อ - แยก API ที่เกี่ยวข้องกับกฎจาก
SplitControllerไปยัง SingletonRuleControllerปัจจัยต่างๆ มีดังนี้ addRuleremoveRulegetRulessetRulesclearRulesparseRules- ดึงข้อมูล
#isActivityEmbeddedจากSplitControllerไปยังActivityEmbeddingControllerแบบเดี่ยว ปัจจัยต่างๆ มีดังนี้ isActivityEmbedded- นำ
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) - เราไม่ได้แยกความแตกต่างระหว่างกฎแบบคงที่กับกฎรันไทม์อีกต่อไป อย่างไรก็ตาม การเรียกใช้
#clearRulesresults จะล้างกฎทั้งหมดไม่ว่าจะลงทะเบียนด้วยคำจำกัดความกฎ 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 ดังนี้
- ใช้ขนาดขั้นต่ำใน DP แทนพิกเซลสำหรับ
SplitRule - ปรับโครงสร้างใหม่สำหรับ
SplitRuleBuilder เพื่อให้มิติข้อมูลขั้นต่ำเป็นตัวเลือก (I95f17)
- ใช้ขนาดขั้นต่ำใน DP แทนพิกเซลสำหรับ
- ส่งบริบทเพื่อเริ่มต้น
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 เวอร์ชันทดลองออกจาก API ของ
ActivityEmbedding - ซ่อน
ActivityRuleconstructor เนื่องจากBuilderเป็นวิธีที่แนะนำในการสร้าง - เพิ่มวิธีการทดลองเพื่อรับ
WindowInsetsในWindowMetrics - อัปเดต
SplitPlaceholderFinishBehaviorเพื่อป้องกันไม่ให้ระบบเติมข้อความตัวยึดตำแหน่งให้เสร็จสมบูรณ์ การสิ้นสุดตัวยึดตำแหน่งทำให้เกิดลักษณะการทำงานที่สับสน
การเปลี่ยนแปลง API
- ทำให้ val
isEmptyเป็นแบบสาธารณะเพื่อแทนที่ funisEmpty - เปลี่ยนชื่อกิจกรรมพารามิเตอร์
ActivityStackเป็นactivitiesInProcess(Ia5055) - นำ
ActivityFilter#matchesClassNameและActivityFilter#matchesClassNameOrWildCardออกเนื่องจากทำให้เกิดความสับสน - เพิ่ม
ActivityFilter#componentNameและActivityFilter#intentActionเพื่อให้ผู้โทรแยกแยะตัวกรองต่างๆ ได้ (I41f22) - นำ
@DeprecatedAPI ออกจาก 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และFoldingFeatureWindowMetricsCalculatorเพื่อช่วยคำนวณ 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
- เพิ่มเมธอด Helper เพื่อสร้างออบเจ็กต์ 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 เป็นทรัพยากร Dependency
- ย้ายข้อมูลไลบรารีหลักไปยัง 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ฯลฯ)