WindowManager
อัปเดตล่าสุด | รุ่นที่เสถียร | รุ่นที่อาจได้รับการเผยแพร่ | รุ่นเบต้า | เวอร์ชันอัลฟ่า |
---|---|---|---|---|
7 พฤษภาคม 2025 | 1.3.0 | 1.4.0-rc02 | - | 1.5.0-alpha02 |
การประกาศทรัพยากร Dependency
หากต้องการเพิ่มทรัพยากร Dependency ของ WindowManager คุณต้องเพิ่มที่เก็บ Maven ของ Google ลงในโปรเจ็กต์ อ่านข้อมูลเพิ่มเติมในที่เก็บ Maven ของ Google
เพิ่มการอ้างอิงสำหรับอาร์ติแฟกต์ที่คุณต้องการในไฟล์ build.gradle
สำหรับแอปหรือโมดูล
Groovy
dependencies { implementation "androidx.window:window:1.3.0" // For Java-friendly APIs to register and unregister callbacks implementation "androidx.window:window-java:1.3.0" // For RxJava2 integration implementation "androidx.window:window-rxjava2:1.3.0" // For RxJava3 integration implementation "androidx.window:window-rxjava3:1.3.0" // For testing implementation "androidx.window:window-testing:1.3.0" }
Kotlin
dependencies { implementation("androidx.window:window:1.3.0") // For Java-friendly APIs to register and unregister callbacks implementation("androidx.window:window-java:1.3.0") // For RxJava2 integration implementation("androidx.window:window-rxjava2:1.3.0") // For RxJava3 integration implementation("androidx.window:window-rxjava3:1.3.0") // For testing implementation("androidx.window:window-testing:1.3.0") }
ความคิดเห็น
ความคิดเห็นของคุณช่วยปรับปรุง Jetpack ได้ โปรดแจ้งให้เราทราบหากพบปัญหาใหม่หรือมีแนวคิดในการปรับปรุงคลังนี้ โปรดดูปัญหาที่มีอยู่ในคลังนี้ก่อนสร้างปัญหาใหม่ คุณสามารถเพิ่มการโหวตให้กับปัญหาที่มีอยู่ได้โดยคลิกปุ่มดาว
ดูข้อมูลเพิ่มเติมได้ที่เอกสารประกอบของเครื่องมือติดตามปัญหา
รุ่น 1.5
เวอร์ชัน 1.5.0-alpha02
7 พฤษภาคม 2025
androidx.window:window-*:1.5.0-alpha02
ได้รับการปล่อยแล้ว เวอร์ชัน 1.5.0-alpha02 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มเบรกพอยต์
WindowSizeClass
สำหรับขนาดใหญ่และขนาดใหญ่พิเศษ (I40d85) - ขยายการคำนวณ
WindowMetrics
ไปยังบริบทแอปพลิเคชัน (I8eeeb, b/360934048) - ระบุ Getter ของผู้ให้บริการเพื่อเปิดใช้การเข้าถึง
WindowLayoutInfo
โดยตรง (Ie9513) - เปิดตัว API เพื่อบันทึกสถานะการฝังโดยอัตโนมัติและเพื่อกู้คืนสถานะการฝังโดยอัตโนมัติเมื่อกระบวนการของแอปเริ่มขึ้นใหม่ (Ie0295)
- นํา
WindowInsets
API เวอร์ชันทดลองออก (I68a71) - ซ่อนตัวสร้าง 2-3 ตัว (I87b8d)
การแก้ไขข้อบกพร่อง
- แก้ไข
EmbeddingRule
ที่แสดงhashCode
แตกต่างกันในบางกรณี (I748cc)
เวอร์ชัน 1.5.0-alpha01
12 มีนาคม 2025
androidx.window:window-*:1.5.0-alpha01
ได้รับการปล่อยแล้ว เวอร์ชัน 1.5.0-alpha01 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- การเปิดตัวครั้งแรกของ 1.5.0 เวอร์ชันถัดไป
เวอร์ชัน 1.4
เวอร์ชัน 1.4.0-rc02
23 เมษายน 2025
androidx.window:window-*:1.4.0-rc02
ได้รับการปล่อยแล้ว เวอร์ชัน 1.4.0-rc02 มีการคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขข้อขัดข้องของ ProGuard สำหรับ
ActivityEmbedding
เวอร์ชัน 1.4.0-rc01
12 มีนาคม 2025
androidx.window:window-*:1.4.0-rc01
ได้รับการปล่อยแล้ว เวอร์ชัน 1.4.0-rc01 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- การอัปเดต
WindowSizeClass
API - การอัปเดต Activity Embedding API
เวอร์ชัน 1.4.0-beta02
12 กุมภาพันธ์ 2025
androidx.window:window-*:1.4.0-beta02
ได้รับการปล่อยแล้ว เวอร์ชัน 1.4.0-beta02 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- แก้ไขคำอธิบายประกอบที่อยู่ในพร็อพเพอร์ตี้เท่านั้น แต่ไม่ได้อยู่ในตัวรับ
เวอร์ชัน 1.4.0-beta01
15 มกราคม 2025
androidx.window:window-*:1.4.0-beta01
ได้รับการปล่อยแล้ว เวอร์ชัน 1.4.0-beta01 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เพิ่ม API เพื่ออนุญาตให้ปรับแต่ง
ActivityEmbedding
ภาพเคลื่อนไหว - ขยาย
WindowMetricsCalculator
test API เพื่ออนุญาตให้จำลองเมตริกกรอบเวลา
การเปลี่ยนแปลง API
- ซ่อนตัวสร้าง 2-3 ตัว (I87b8d)
- อนุญาตให้แอปปรับแต่ง
ActivityEmbedding
ภาพเคลื่อนไหว (If31a8) - เพิ่มการรองรับเป้าหมาย
watchosDeviceArm64
KMP และเป้าหมาย Kotlin 1.9 (Icf15d, b/364652024) - แสดง
WindowMetricsCalculator
API (I1cebf)
การแก้ไขข้อบกพร่อง
- ตอนนี้ไลบรารีนี้ใช้แอตทริบิวต์ JSpecify nullness ซึ่งเป็นการใช้ประเภท นักพัฒนาซอฟต์แวร์ Kotlin ควรใช้อาร์กิวเมนต์คอมไพเลอร์ต่อไปนี้เพื่อบังคับใช้การใช้งานที่ถูกต้อง
-Xjspecify-annotations=strict
(นี่เป็นค่าเริ่มต้นที่เริ่มตั้งแต่คอมไพเลอร์ Kotlin เวอร์ชัน 2.1.0) (Ie69ac, b/326456246)
เวอร์ชัน 1.4.0-alpha05
16 ตุลาคม 2024
androidx.window:window-*:1.4.0-alpha05
ได้รับการปล่อยแล้ว เวอร์ชัน 1.4.0-alpha05 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เพิ่มฟังก์ชันอำนวยความสะดวกเพื่อรับ
widthDp
และheightDp
จากWindowMetrics
การเปลี่ยนแปลง API
- เพิ่ม
widthDp
และheightDp
ลงในWindowMetrics
(Ide026) - นํา
WindowInsets
API เวอร์ชันทดลองออก (I68a71) - อัปเดตชื่อเมธอดการตรวจสอบขอบเขตเป็น
isAtLeast
(Ib0ab7)
เวอร์ชัน 1.4.0-alpha04
2 ตุลาคม 2024
androidx.window:window-*:1.4.0-alpha04
ได้รับการปล่อยแล้ว เวอร์ชัน 1.4.0-alpha04 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มวิธีการคํานวณ
WindowSizeClass
จากWindowMetrics
(874dba) - เปลี่ยนวิธีการ
WindowSizeClass
เป็นcontainsWidthDp
,containsHeightDp
และcontainsWindowSizeDp
เพื่อให้ชัดเจน (fa760d) - แปลง
WindowAreaController
เป็นคลาสฐานแบบนามธรรม (I90893)
การแก้ไขข้อบกพร่อง
- เพิ่มการรองรับขอบเขตแบบสัมพัทธ์เมื่อสร้างการทดสอบ
FoldingFeature
(2e6b3e) - แก้ไขข้อบกพร่องทั่วไปเมื่อเลือก
WindowSizeClass
เวอร์ชัน 1.4.0-alpha03
18 กันยายน 2024
androidx.window:window-*:1.4.0-alpha03
ได้รับการปล่อยแล้ว เวอร์ชัน 1.4.0-alpha03 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เพิ่มเมธอดยูทิลิตีเพื่อรับ
WindowSizeClass
จากWindowMetrics
(I83f1f) - เปลี่ยนชื่อ
isAtLeast
เป็นcontainsBreakpoint
(I85b47) - เพิ่มการโอเวอร์โหลดใน
computeWindowSizeClass
โดยใช้ตัวเลขทศนิยม (I3dcb2, b/364677934, b/364677802, b/364680886)
การแก้ไขข้อบกพร่อง
- เพิ่มเบรกพอยต์ที่ขาดหายไปลงในชุดเบรกพอยต์
WindowSizeClass
เริ่มต้น - แก้ไขข้อบกพร่องที่ระบบเลือกขนาดกะทัดรัดไม่ถูกต้องในบางกรณี
เวอร์ชัน 1.4.0-alpha02
4 กันยายน 2024
androidx.window:window-*:1.4.0-alpha02
ได้รับการปล่อยแล้ว เวอร์ชัน 1.4.0-alpha02 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
เพิ่มการรองรับ WindowSizeClass
ที่กําหนดเอง
- เปิดคอนสตรัคเตอร์สําหรับ
WindowSizeClass
เพื่อให้นักพัฒนาซอฟต์แวร์ใช้คอนสตรัคเตอร์ของตัวเองได้ - เพิ่มเมธอดยูทิลิตี
isAtLeast
เพื่อให้นักพัฒนาซอฟต์แวร์ประมวลผลช่วงค่าWindowSizeClass
ได้ - เพิ่มฟังก์ชันส่วนขยายใน
Set<WindowSizeClass>
เพื่อคํานวณรายการที่ตรงกันที่สุดจากชุด - เพิ่มค่าคงที่สำหรับเบรกพอยต์ที่แนะนำของ Android
- เพิ่มชุดเบรกพอยต์ที่สอดคล้องกับเบรกพอยต์ที่ Android แนะนำ
การเปลี่ยนแปลง API
- อัปเดตชื่อเมธอดขอบเขตสำหรับ
WindowSizeClass
(If89a6) - อัปเดต
WindowSizeClass
API เพื่อรองรับการเพิ่มค่าจุดหยุดพักใหม่ในอนาคต เราใช้ขอบเขตล่างแทนขอบเขตสัมบูรณ์ และขอแนะนำให้นักพัฒนาซอฟต์แวร์ใช้การตรวจสอบขอบเขตล่างเมื่อประมวลผลWindowSizeClass
เราจะเลิกใช้งานWindowWidthSizeClass
และWindowHeightSizeClass
ที่มีอยู่เนื่องจากจะไม่พัฒนาต่อไป (I014ce)
เวอร์ชัน 1.4.0-alpha01
7 สิงหาคม 2024
androidx.window:window-*:1.4.0-alpha01
ได้รับการปล่อยแล้ว เวอร์ชัน 1.4.0-alpha01 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- การปักหมุด ActivityStack ช่วยให้แอปปักหมุดเนื้อหาในคอนเทนเนอร์หนึ่งและแยกการนําทางออกจากคอนเทนเนอร์อื่นได้
- ตัวแบ่งแบบอินเทอร์แอกทีฟช่วยให้แอปแสดงตัวแบ่งแบบคงที่หรือแบบลากไปมาได้ระหว่างกิจกรรม 2 รายการในงานนำเสนอแบบแยก
- การลดแสงกล่องโต้ตอบแบบเต็มหน้าจอช่วยให้แอประบุพื้นที่การลดแสงของกล่องโต้ตอบได้ เพื่อลดแสงทั้งหน้าต่างงานหรือลดแสงเฉพาะคอนเทนเนอร์ที่แสดงกล่องโต้ตอบ
- การเรียกกลับข้อมูลกรอบเวลากิจกรรมที่ฝังช่วยให้แอปได้รับการอัปเดตกรอบเวลากิจกรรมที่ฝังอย่างต่อเนื่อง
- การฝังพื้นหลังภาพเคลื่อนไหวช่วยให้แอประบุพื้นหลังของภาพเคลื่อนไหวได้ ซึ่งจะช่วยปรับปรุงคุณภาพของภาพเคลื่อนไหวการเปลี่ยนเมื่อใช้
ActivityEmbedding
- การจัดการ ActivityStack ที่ปรับปรุงแล้วช่วยให้แอปควบคุม
ActivityStacks
ได้มากขึ้นเมื่อใช้ActivityEmbedding
ซึ่งรวมถึงการดำเนินการต่อไปนี้ - การเริ่มกิจกรรมใน
ActivityStack
ที่ระบุ - การทำ
ActivityStack
ให้เสร็จ
การเปลี่ยนแปลง API
API ใหม่
WindowInfoTracker#supportedPostures
- API เพื่อระบุว่าอุปกรณ์รองรับโหมดตั้งโต๊ะสำหรับอุปกรณ์แบบพับได้หรือไม่ เพิ่ม WindowAreaSessionPresenter#getWindow
เพิ่ม API เพื่อรองรับ
ActivityStack
การปักหมุด- ชั้นเรียน
SplitPinRule
SplitController#pinTopActivityStack
SplitController#unpinTopActivityStack
- ชั้นเรียน
เพิ่ม API เพื่อเปิดใช้และกําหนดค่าตัวแบ่งแบบอินเทอร์แอกทีฟ
- ชั้นเรียน
DividerAttributes
SplitAttributes.Builder#setDividerAttributes
- ชั้นเรียน
เพิ่ม API เพื่อตั้งค่า
EmbeddingConfiguration
และDimAreaBehavior
สำหรับกล่องโต้ตอบ- ชั้นเรียน
EmbeddingConfiguration
- ชั้นเรียน
DimAreaBehavior
ActivityEmbeddingController#setEmbeddingConfiguration
- ชั้นเรียน
เพิ่ม API เพื่อรับการอัปเดตข้อมูลกรอบเวลากิจกรรมที่ฝัง
- ชั้นเรียน
EmbeddedActivityWindowInfo
ActivityEmbeddingController#embeddedActivityWindowInfo
- ชั้นเรียน
เพิ่ม API เพื่อตั้งค่าพื้นหลังของภาพเคลื่อนไหวที่ฝัง
EmbeddingAnimationBackground
SplitAttributes.Builder#setAnimationBackground
เพิ่ม API เพื่อดำเนินการให้เสร็จสิ้น
ActivityStacks
ActivityEmbeddingController#finishActivityStacks
เพิ่ม API เพื่อตั้งค่าการเปิดตัว
ActivityStack
ActivityEmbeddingOptions#setLaunchingActivityStack
API ต่อไปนี้เป็น API ที่เสถียรและไม่ใช่ API เวอร์ชันทดลองอีกต่อไป
ActivityEmbeddingController#invalidateVisibleActivityStacks
(ย้ายมาจาก SplitController#invalidateTopVisibleSplitAttributes)ActivityEmbeddingController#getActivityStack
SplitController#updateSplitAttributes
เพิ่ม API สำหรับ 1.4 (I56774)
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องในอุปกรณ์บางรุ่นที่ระบบจะแสดงผลเป็น "ไม่พร้อมใช้งาน" แทน "ใช้งานอยู่" เมื่อเซสชันทำงานอยู่
- นำการรองรับ
transferActivityToWindowArea
ในอุปกรณ์ที่มีvendorApiLevel
เป็น 2 ออกเนื่องจากการรองรับ API ไม่เสถียร - เปิดตัว API เพื่อเปิดใช้การลากเพื่อขยายเป็นโหมดเต็มหน้าจอสำหรับตัวแบ่งที่ลากได้ของการฝังกิจกรรม (I645c9)
- อนุญาตให้แอปปิดใช้ภาพเคลื่อนไหว
ActivityEmbedding
ผ่านพารามิเตอร์ภาพเคลื่อนไหวสำหรับSplitAttributes
(Idc01a) - นำการระบุการเข้าถึง API ของแพลตฟอร์มใหม่ด้วยตนเองออกแล้ว เนื่องจากการดำเนินการนี้จะทําโดยอัตโนมัติผ่านโมเดล API เมื่อใช้ R8 กับ AGP 7.3 ขึ้นไป (เช่น R8 เวอร์ชัน 3.3) และสำหรับบิลด์ทั้งหมดเมื่อใช้ AGP 8.1 ขึ้นไป (เช่น D8 เวอร์ชัน 8.1) เราขอแนะนำให้ลูกค้าที่ไม่ได้ใช้ AGP อัปเดตเป็น D8 เวอร์ชัน 8.1 ขึ้นไป ดูบทความนี้สำหรับรายละเอียดเพิ่มเติม (Ia60e0, b/345472586)
- อนุญาตให้ส่วนขยายใช้พารามิเตอร์ภาพเคลื่อนไหวสําหรับ
SplitAttributes
เพื่อให้อุปกรณ์ใช้พารามิเตอร์ดังกล่าวสําหรับการเปลี่ยนภาพเคลื่อนไหวได้ (Iede00) - ซ่อน API การวางซ้อน (Ic4251)
- แนะนำ API เพื่อกำหนดค่าตัวแบ่งแบบคงที่หรือแบบลากได้สำหรับการแยก (Ia7a78)
- เพิ่มความหนาแน่นลงใน
WindowMetrics
(Id6723) - เพิ่ม API เพื่อรับ
SupportedPostures
(If557a) - นำ
setLaunchingActivityStack
ออกจาก API เวอร์ชันทดลอง (I191cf) - แนะนำ
ActivityEmbeddingController#embeddedActivityWindowInfo
(I24312) - เลิกใช้งาน
#getToken
และเพิ่ม#getActivityStackToken
(Ie0471) - เปิดตัวอะแดปเตอร์การเรียกกลับสําหรับ
embeddedActivityWindowInfo
flow API (Ida77f) - เพิ่มอะแดปเตอร์การเรียกกลับสําหรับ API เวิร์กโฟลว์ overlayInfo (I7264f)
- แนะนำ
WindowSdkExtensionsRule
เพื่อลบล้างextensionsVersion
สำหรับการทดสอบ (Ifb928) - - ย้ายข้อมูล
#setLaunchingActivityStack
ไปยัง Bundle เพื่อให้ใช้งานร่วมกับActivityOptionsCompat
ได้- ผู้ใช้ควรส่ง
activityOptions.toBundle
แทนActvityOptions
- นำ
#setLaunchingActivityStack(Activity)
ออก ผู้ใช้ควรย้ายข้อมูลเพื่อใช้ActivityEmbeddingController#getActivityStac(Activity)
เพื่อรับActivityStack
และส่งActivityStack
ไปยัง#setLaunchingActivityStack
(Ie0ccc)
- ผู้ใช้ควรส่ง
- - แนะนำ
ActivityStack.Token
และSpltInfo.Token
เป็นตัวระบุเพื่อสื่อสารระหว่าง WM Jetpack กับส่วนขยาย- เลิกใช้งาน/แทนที่ API เพื่อรับ/แสดงผลโทเค็นแทน IBinder (I12b24)
- - แนะนำ
ActivityEmbeddingController#invalidateVisibleActivityStacks
- นํา
SplitController#invalidateTopVisibleSplitAttributes
ออกเนื่องจากฟีเจอร์นี้รวมเข้ากับ#invalidateVisibleActivityStacks
แล้ว (I02ef5)
- นํา
- - การเพิ่ม API เพื่อกำหนดค่าการฝัง (I59a4a)
- - เพิ่ม/เลิกปักหมุด
ActivityStack
androidx.Window
API ยอดนิยม- การอัปเดตแอปเดโมเพื่ออนุญาตให้ปักหมุด/เลิกปักหมุดรายการยอดนิยม
ActivityStack
(I24dd3)
- การอัปเดตแอปเดโมเพื่ออนุญาตให้ปักหมุด/เลิกปักหมุดรายการยอดนิยม
- เพิ่ม
#finishActivityStacks
และActivityEmbeddingOptions
อีกครั้ง (Ic1ab3) - นำ API ที่ไม่เสถียรออก (Ibc534, b/302380585)
เวอร์ชัน 1.3
เวอร์ชัน 1.3.0
29 พฤษภาคม 2024
androidx.window:window-*:1.3.0
ได้รับการปล่อยแล้ว เวอร์ชัน 1.3.0 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 1.2.0
- การรองรับ Kotlin Multiplatform สำหรับคลาสขนาดหน้าต่าง
เวอร์ชัน 1.3.0-rc01
14 พฤษภาคม 2024
WindowManager
Jetpack 1.3 รองรับ Kotlin Multiplatform สำหรับฟีเจอร์ WindowSizeClass
รวมถึงการแก้ไขข้อบกพร่องหลายรายการ
androidx.window:window-*:1.3.0-rc01
ได้รับการปล่อยแล้ว เวอร์ชัน 1.3.0-rc01 มีการคอมมิตเหล่านี้
เวอร์ชัน 1.3.0-beta02
1 พฤษภาคม 2024
androidx.window:window-*:1.3.0-beta02
ได้รับการปล่อยแล้ว เวอร์ชัน 1.3.0-beta02 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- นำการรองรับการสร้างและใช้
WindowSizeClass
ที่กําหนดเองออก (Id1143)
การแก้ไขข้อบกพร่อง
- แก้ไข
KotlinReflectionInternalError
ที่เกิดจาก ProGuard ตัดไฟล์บางไฟล์ออกในการใช้งานอุปกรณ์บางรุ่น (I01b02)
เวอร์ชัน 1.3.0-beta01
3 เมษายน 2024
androidx.window:window-*:1.3.0-beta01
ได้รับการปล่อยแล้ว เวอร์ชัน 1.3.0-beta01 มีการคอมมิตเหล่านี้
เวอร์ชัน 1.3.0-alpha03
6 มีนาคม 2024
androidx.window:window-*:1.3.0-alpha03
ได้รับการปล่อยแล้ว เวอร์ชัน 1.3.0-alpha03 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- แยก
WindowSizeClassUtil
ออกเป็นวิธีการที่มุ่งเน้นมากขึ้น (Ie9292) - กู้คืน
WindowSizeClass#compute
(I21355, b/324293374)
การแก้ไขข้อบกพร่อง
- แก้ไขข้อขัดข้องเมื่อระบบเปิดบริบทที่ระบุไม่ถูกต้อง (94d10ce , b/318787482)
เวอร์ชัน 1.3.0-alpha02
7 กุมภาพันธ์ 2024
androidx.window:window-*:1.3.0-alpha02
ได้รับการปล่อยแล้ว เวอร์ชัน 1.3.0-alpha02 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- การอัปเดตที่ดำเนินการกับอินเทอร์เฟซ API ของ Window Size Class API เพื่อเพิ่มความยืดหยุ่นให้กับนักพัฒนาแอปที่ต้องการใช้คลาสขนาดของตนเอง
การเปลี่ยนแปลง API
- เพิ่มข้อจำกัดความสูงลงในตัวเลือกความกว้าง (I23393)
- เพิ่มฟังก์ชันยูทิลิตีสําหรับเลือก
WindowSizeClass
จากชุด เพิ่มฟังก์ชันการให้คะแนนเวอร์ชันทดลองเพื่อให้นักพัฒนาแอปเขียนตัวเลือกของตนเองได้ เพิ่มฟังก์ชันส่วนขยายตัวเลือกเพื่อเลือกWindowSizeClass
ที่กว้างที่สุดภายในขอบเขตที่ระบุ (I0c944) - เปิดคอนสตรัคเตอร์
WindowSizeClass
เพื่อให้เพิ่มเบรกพอยต์ที่กำหนดเองได้ (Ic1ff3) - เพิ่มฟังก์ชันอำนวยความสะดวกเพื่อสร้างคลาสขนาดจากความกว้าง ความสูง และค่าความหนาแน่น (If67f4)
การแก้ไขข้อบกพร่อง
- แก้ไขข้อยกเว้นเมื่อมีการตัดค่าทศนิยมให้เหลือ 0 (272ffac)
เวอร์ชัน 1.3.0-alpha01
15 พฤศจิกายน 2023
androidx.window:window-*:1.3.0-alpha01
ได้รับการปล่อยแล้ว เวอร์ชัน 1.3.0-alpha01 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- แสดง API หน้าต่างทดลองสำหรับการเข้าถึงหน้าจอด้านหลัง
- API การทดสอบสําหรับการสร้าง
FoldingFeature
ทำงานได้อย่างเสถียรแล้ว - ตอนนี้ API การทดสอบสําหรับการตั้งค่าค่า
ActivityEmbedding
จําลองมีความเสถียรแล้ว - ตอนนี้
WindowLayoutInfoPublisherRule
จะรายงานการลบล้างเมื่อได้รับค่าจากUiContext
WindowInfoTracker
รายงานการรวมข้อมูลฟีเจอร์ไปยังพารามิเตอร์UiContext
- แสดงเวอร์ชันของส่วนขยายในอุปกรณ์
WindowProperties
ค่าคงที่สำหรับการลบล้างระดับผู้ใช้ต่อแอปมีดังนี้PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE
— แจ้งให้ระบบทราบว่าแอปไม่ได้เลือกใช้การลบล้างความเข้ากันได้ของขนาดหน้าจอที่แสดงต่อผู้ใช้PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE
- แจ้งให้ระบบทราบว่าแอปไม่ได้เลือกใช้ตัวเลือกแบบเต็มหน้าจอของการตั้งค่าการลบล้างความเข้ากันได้ของอัตราส่วนภาพสำหรับผู้ใช้
เวอร์ชัน 1.2
เวอร์ชัน 1.2.0
15 พฤศจิกายน 2023
androidx.window:window-*:1.2.0
ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0 มีคอมมิตเหล่านี้
การเปลี่ยนแปลงที่สําคัญตั้งแต่เวอร์ชัน 1.1.0
- แสดง API หน้าต่างทดลองสำหรับการเข้าถึงหน้าจอด้านหลัง
- API การทดสอบสําหรับการสร้าง
FoldingFeature
ทำงานได้อย่างเสถียรแล้ว - ตอนนี้ API การทดสอบสําหรับการตั้งค่าค่า
ActivityEmbedding
จําลองมีความเสถียรแล้ว - ตอนนี้
WindowLayoutInfoPublisherRule
จะรายงานการลบล้างเมื่อได้รับค่าจากUiContext
WindowInfoTracker
รายงานการรวมข้อมูลฟีเจอร์ไปยังพารามิเตอร์UiContext
- แสดงเวอร์ชันของส่วนขยายในอุปกรณ์
เวอร์ชัน 1.2.0-rc01
1 พฤศจิกายน 2023
androidx.window:window-*:1.2.0-rc01
ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0-rc01 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- แสดง API หน้าต่างทดลองสำหรับการเข้าถึงหน้าจอด้านหลัง
- API การทดสอบสําหรับการสร้าง
FoldingFeature
ทำงานได้อย่างเสถียรแล้ว - ตอนนี้ API การทดสอบสําหรับการตั้งค่าค่า
ActivityEmbedding
จําลองมีความเสถียรแล้ว - ตอนนี้
WindowLayoutInfoPublisherRule
จะรายงานการลบล้างเมื่อได้รับค่าจากUiContext
WindowInfoTracker
รายงานการรวมข้อมูลฟีเจอร์ไปยังพารามิเตอร์UiContext
- แสดงเวอร์ชันของส่วนขยายในอุปกรณ์
เวอร์ชัน 1.2.0-beta04
18 ตุลาคม 2023
androidx.window:window-*:1.2.0-beta04
ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0-beta04 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- นำ 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
จะรายงานการลบล้างเมื่อได้รับค่าจากUiContext
WindowInfoTracker
รายงานการรวมข้อมูลฟีเจอร์ไปยังพารามิเตอร์UiContext
การเปลี่ยนแปลง API
- ทำเครื่องหมาย
WindowArea
API เป็นเวอร์ชันทดลองเพื่อให้การเปลี่ยนแปลง API ต่อไปสำหรับรุ่นที่เสถียรใน 1.3 (I857f5) - อัปเดตไฟล์ API เพื่อกำกับเนื้อหาการระงับความเข้ากันได้ (I8e87a, b/287516207)
เวอร์ชัน 1.2.0-alpha03
21 มิถุนายน 2023
androidx.window:window-*:1.2.0-alpha03
ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0-alpha03 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- นำ API ที่เลิกใช้งานแล้วออกจากแพลตฟอร์ม API
- เพิ่ม API เพื่อรองรับการแสดงผลพร้อมกัน
- เพิ่มพร็อพเพอร์ตี้เพื่อเลือกไม่ใช้การลบล้างการปรับขนาดแบบบังคับ
- เพิ่มพร็อพเพอร์ตี้เพื่อเลือกไม่ใช้การลบล้างสัดส่วนภาพขั้นต่ำ
- ปรับปรุง
ActivityEmbeddingRule
ให้รองรับการทดสอบหน่วยเกี่ยวกับการฝังกิจกรรม
การเปลี่ยนแปลง API
การแก้ไขข้อบกพร่อง
- การเพิ่มพร็อพเพอร์ตี้ความเข้ากันได้ในการเลือกไม่ใช้สำหรับการลบล้างการปรับขนาดแบบบังคับ (Ie7ab1)
- นำ
SESSION_STATE_CONTENT_INVISIBLE
ออกจากอินเทอร์เฟซส่วนขยาย (I6ed19) - ปรับปรุง
ActivityEmbeddingRule
ให้รองรับการทดสอบหน่วยเกี่ยวกับแทรกกิจกรรม (I8d6b6) - การเพิ่มพร็อพเพอร์ตี้ความเข้ากันได้แบบไม่บังคับสำหรับการลบล้างสัดส่วนภาพขั้นต่ำ (I66390)
- นำ WindowArea API ที่เลิกใช้งานแล้วออก (Ieb67c)
- เปลี่ยนชื่อพร็อพเพอร์ตี้ลูปคำขอการวางแนวเป็น
PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED
(Ie2fbd) - อัปเดตชื่อคงที่ของเซสชันพื้นที่หน้าต่าง (I83675)
- การเพิ่มพร็อพเพอร์ตี้ความเข้ากันได้ในการเลือกไม่ใช้ซึ่งละเว้นการวนคำขอการวางแนวเมื่อตรวจพบ (I0a7a2)
- เพิ่ม
WindowAreaComponent#STATUS_ACTIVE
เพื่อระบุว่าฟีเจอร์ใช้งานได้แล้ว (I62bc3) - เพิ่ม
RearDisplayPresentationMode
API (I0401c) - นำ API สีพื้นหลังออกสำหรับเวอร์ชันเสถียร (I34c3e)
- ซ่อน Window Area API (I39de0)
- เพิ่มวิธีการลบล้าง
SplitInfo
ในSplitController
เพิ่มวิธีการทดสอบเพื่อสร้างรายการแบบคู่สําหรับSplitInfo
และActivityStack
(Icd69f) - กำหนดให้แท็กสำหรับ
ActivityRule.Builder
เป็นแบบไม่บังคับ (Ib0b44) - นำ
RatioSplitType
,ExpandContainersSplit
และHingeSplitType
ออก ตอนนี้มีจำนวนSplitType
- แทนที่
#splitEqually()
,#expandContainers()
และ#splitByHinge
ด้วยค่าคงที่SplitType SPLIT_TYPE_EQUAL
,SPLIT_TYPE_EXPAND
และSPLIT_TYPE_HINGE
- นำฟังก์ชันการทำงานในการตั้งค่าประเภทสำรองของประเภทการแยกแบบบานพับออก หากใช้การแยกแบบบานพับไม่ได้เนื่องจากสถานะอุปกรณ์หรือหน้าต่างปัจจุบัน ระบบจะเปลี่ยนไปใช้การแยกคอนเทนเนอร์งานหลักอย่างเท่าๆ กัน ใช้
SplitController#setSplitAttributesCalculator
เพื่อปรับแต่งประเภทการแยกสำรอง (Ifcc59)
- แทนที่
- เลิกใช้งาน
add
/removeSplitCallback
- ย้าย
add
/removeSplitCallback
ไปยังSplitControllerCallbackAdapter
- เพิ่มการสนับสนุน
Flow
เพื่อดูรายการSplitInfo
(I7f1b6)
- ย้าย
- เพิ่มกฎทดสอบสำหรับ
ActivityEmbeddingController
(I42e9b) - เปลี่ยนชื่อ
ActivityOptionsCompat
เป็นActivityEmbeddingOptions
(I89301) - เพิ่ม
splitSupportStatus
เพื่อระบุว่าการฝังกิจกรรมพร้อมใช้งานหรือไม่ (I10024) - แนะนำ
SplitAttributes.BackgroundColor
เพื่อแสดงค่าDEFAULT
ได้ดียิ่งขึ้น ชี้แจงว่าระบบไม่รองรับสีพื้นหลังของภาพเคลื่อนไหวที่ไม่ทึบแสง ระบบจึงจะถือว่าสีที่ไม่ทึบแสงเป็นค่าเริ่มต้น ซึ่งหมายความว่าจะใช้สีพื้นหลังของหน้าต่างธีมปัจจุบัน (Ic6b95) - แทนที่
alwaysAllow()
และalwaysDisallow()
ด้วยALWAYS_ALLOW
และALWAYS_DISALLOW
(I3057b) - เพิ่ม API สำหรับ
SplitRule
,SplitAttributes
,SplitAttributesCalculator
(I92d23) - เพิ่ม
TestActivityStack
เพื่อสร้างActivityStack
สำหรับการทดสอบ- เพิ่ม
TestSplitInfo
เพื่อสร้างSplitInfo
สำหรับการทดสอบ (I8e779)
- เพิ่ม
- เพิ่มวิธีสร้าง
SplitAttributesCalculatorParams
จำลองเพื่อให้นักพัฒนาแอปยืนยันSplitAttributesCalculator
ที่กําหนดเองได้ (Id4a6e) - เพิ่ม
WindowMetricsCalculator#computeCurrentWindowMetrics(@UiContext context: Context)
และWindowMetricsCalculator#computeMaximumWindowMetrics(@UiContext context: Context)
(I66c7f)
เวอร์ชัน 1.2.0-alpha02
7 มิถุนายน 2023
androidx.window:window-*:1.2.0-alpha02
ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0-alpha02 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- อัปเดต API การทดสอบให้มีค่าคงที่สำหรับฟีเจอร์การพับที่ไม่ระบุ
- การลบล้างด้วย
WindowLayoutInfoPublishRule
จะลบล้างค่าทั้งหมดของwindowLayoutInfo
รวมถึง API ตามบริบท
การเปลี่ยนแปลง API
- เพิ่มค่าคงที่สำหรับฟีเจอร์การพับตรงกลางที่ไม่ได้ระบุ (I7530c)
การแก้ไขข้อบกพร่อง
- อัปเดต
WindowLayoutInfoPublishRule
เพื่อรองรับการลบล้างในWindowLayoutInfo
ของContext
(I2037a)
เวอร์ชัน 1.2.0-alpha01
24 พฤษภาคม 2023
androidx.window:window-*:1.2.0-alpha01
ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0-alpha01 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
เพิ่มความเสถียรให้กับการทดสอบ API เกี่ยวกับการฝังกิจกรรมและ WindowLayoutInfoTracker
ActivityEmbeddingRule
ได้รับการโปรโมตเป็นเวอร์ชันเสถียรแล้ว
WindowMetricsCalculatorRule
ได้รับการโปรโมตเป็นเวอร์ชันเสถียรแล้ว
ฟังก์ชันยูทิลิตีในการสร้าง FoldingFeature
สำหรับการทดสอบได้รับการโปรโมตเป็นเวอร์ชันเสถียรแล้ว
การเปลี่ยนแปลง API
- ปรับปรุง
ActivityEmbeddingRule
ให้รองรับการทดสอบหน่วยเกี่ยวกับแทรกกิจกรรม (I8d6b6) WindowMetrisCalculatorTestRule
เสถียรและอนุญาตให้ใช้เมตริกสแต็บสําหรับการทดสอบ JVM เราขอแนะนำให้ใช้โปรแกรมจำลองเพื่อให้ได้ผลลัพธ์ที่ถูกต้อง- เพิ่มความเสถียรของ API การทดสอบสําหรับ
WindowLayoutInfo
เพื่อรองรับการทดสอบ JVM (Ie036e) - เพิ่ม
IntRange
สำหรับค่าฟีเจอร์การทดสอบการพับ (I69f7d)
เวอร์ชัน 1.1
เวอร์ชัน 1.1.0
7 มิถุนายน 2023
androidx.window:window-*:1.1.0
ได้รับการปล่อยแล้ว เวอร์ชัน 1.1.0 มีคอมมิตเหล่านี้
การเปลี่ยนแปลงที่สําคัญนับตั้งแต่เวอร์ชัน 1.0.0
การฝังกิจกรรม
- เพิ่ม
PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED
เป็นพร็อพเพอร์ตี้บูลีนของแท็ก<application>
ในไฟล์ Manifest ของแอป - เลิกใช้งาน
isSplitSupported
และแทนที่ด้วยsplitSupportStatus
เพื่อแสดงข้อมูลที่ละเอียดยิ่งขึ้นเกี่ยวกับสาเหตุที่ฟีเจอร์แยกไม่พร้อมใช้งาน - เพิ่มคลาสที่ฝัง
SplitController.SplitSupportStatus
เพื่อระบุค่าคงที่สถานะสำหรับพร็อพเพอร์ตี้splitSupportStatus
- แยก
SplitController
ออกเป็นหลายโมดูล ดังนี้- โมดูล
ActivityEmbeddingController
สำหรับ API ที่เกี่ยวข้องกับActivity
หรือActivityStack
- ย้าย
isActivityEmbedded
จากSplitController
ไปActivityEmbeddingController
แล้ว - โมดูล
RuleController
สำหรับการดำเนินการที่เกี่ยวข้องกับEmbeddingRule
- API
SplitController
ที่ถูกนำออก clearRegisteredRules()
getSplitRules()
initialize()
registerRule()
unregisterRule()
- API
RuleController
ที่เพิ่มเข้ามา addRule()
— เพิ่มกฎหรืออัปเดตกฎที่มีแท็กเดียวกันremoveRule()
— นำกฎออกจากคอลเล็กชันกฎที่ลงทะเบียนsetRules()
— สร้างคอลเล็กชันกฎclearRules()
— นำกฎที่ลงทะเบียนไว้ทั้งหมดออกparseRules()
— แยกวิเคราะห์กฎจากคําจํากัดความของกฎ XML
- โมดูล
- โมดูลทั้งหมดต้องมีการเริ่มต้นบริบทด้วยเมธอด
#getInstance()
ซึ่งรวมถึงActivityEmbeddingController#getInstance(Context)
SplitController#getInstance(Context)
RuleController#getInstance(Context)
- เพิ่มคลาส
EmbeddingAspectRatio
เพื่อกําหนดค่าคงที่ของลักษณะการทํางานแบบ Enum ที่เกี่ยวข้องกับสัดส่วนการแสดงผล - เพิ่มคลาส
SplitAttributes
เพื่อกำหนดเลย์เอาต์แบบแยก - เพิ่มฟังก์ชันเครื่องคิดเลข
SplitAttributes
ลงในSplitController
เพื่อปรับแต่งเลย์เอาต์แบบแยก ดังนี้setSplitAttributesCalculator(Function)
clearSplitAttributesCalculator()
isSplitAttributesCalculatorSupported()
เพื่อตรวจสอบว่าอุปกรณ์รองรับSplitAttributesCalculator
API หรือไม่
- เพิ่มช่อง
EmbeddingRule#tag
แล้ว - การอัปเดต API ใน
SplitRule
- เพิ่ม
defaultSplitAttributes
— กําหนดเลย์เอาต์การแยกเริ่มต้นของการแยก แทนที่splitRatio
และlayoutDirection
- เพิ่มการแปลพร็อพเพอร์ตี้ XML
splitRatio
และsplitLayoutDirection
เป็นdefaultSplitAttributes
- เปลี่ยนคำจำกัดความของขนาดขั้นต่ำให้ใช้ความหนาแน่นของพิกเซลอิสระ (dp) แทนพิกเซล
- เพิ่ม
minHeightDp
ที่มีค่าเริ่มต้น 600dp - เปลี่ยน
minWidth
เป็นminWidthDp
ที่มีค่าเริ่มต้น 600dp - เปลี่ยน
minSmallestWidth
เป็นminSmallestWidthDp
ที่มีค่าเริ่มต้น 600dp - เพิ่ม
maxAspectRatioInHorizontal
ที่มีค่าเริ่มต้นALWAYS_ALLOW
- เพิ่ม
maxAspectRatioInPortrait
ที่มีค่าเริ่มต้น 1.4 - กำหนดคลาสที่ฝัง
FinishBehavior
เพื่อแทนที่ค่าคงที่ของลักษณะการทำงานที่เสร็จสิ้น - ใช้การเปลี่ยนแปลงพร็อพเพอร์ตี้กับคลาสที่ฝังของ
SplitPairRule
และSplitPlaceholderRule
ของ Builder
- เพิ่ม
- แทนที่
SplitInfo#getSplitRatio()
ด้วยSplitInfo#getSplitAttributes()
เพื่อให้ข้อมูลเพิ่มเติมเกี่ยวกับการแยก
WindowLayout
- เพิ่มการรองรับบริบท UI ที่ไม่เกี่ยวข้องกับกิจกรรมเวอร์ชันทดลองลงใน
WindowInfoTracker
- เพิ่มบริบท UI เวอร์ชันทดลองที่ไม่ใช่กิจกรรมลงใน
WindowMetricsCalculator
ขั้นตอนการย้ายข้อมูล
- หากต้องการเปิดใช้การฝังกิจกรรมเพื่อแสดงกิจกรรมแบบแยก แอปต้องเพิ่มพร็อพเพอร์ตี้
PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED
ลงในแท็ก<application>
ของไฟล์ Manifest ดังนี้xml <property android:name="android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED" android:value="true" />
วิธีนี้ช่วยให้ระบบเพิ่มประสิทธิภาพลักษณะการแยกสําหรับแอปพลิเคชันล่วงหน้าได้ SplitInfo
ratio- ตรวจสอบว่ามีการซ้อนการแยกปัจจุบันหรือไม่ โดยทำดังนี้
kotlin SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.ExpandContainersSplitType
- ตรวจสอบอัตราส่วนปัจจุบัน
kotlin if (SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.RatioSplitType) { val ratio = splitInfo.splitAttributes.splitType.ratio } else { // Ratio is meaningless for other types. }
- ตรวจสอบว่ามีการซ้อนการแยกปัจจุบันหรือไม่ โดยทำดังนี้
- การย้ายข้อมูล SplitController
SplitController.getInstance()
เปลี่ยนเป็นSplitController.getInstance(Context)
SplitController.initialize(Context, @ResId int)
เปลี่ยนเป็นRuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int))
SplitController.getInstance().isActivityEmbedded(Activity)
เปลี่ยนเป็นActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity)
SplitController.getInstance().registerRule(rule)
เปลี่ยนเป็นRuleController.getInstance(Context).addRule(rule)
SplitController.getInstance().unregisterRule(rule)
เปลี่ยนเป็นRuleController.getInstance(Context).removeRule(rule)
SplitController.getInstance().clearRegisteredRules()
เปลี่ยนเป็นRuleController.getInstance(Context).clearRules()
SplitController.getInstance().getSplitRules()
เปลี่ยนเป็นRuleController.getInstance(Context).getRules()
- การย้ายข้อมูลพร็อพเพอร์ตี้
SplitRule
- ตอนนี้
minWidth
และminSmallestWidth
ใช้หน่วย dp แทนพิกเซล แอปสามารถใช้การเรียกใช้ต่อไปนี้kotlin TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics )
หรือเพียงแค่หารminWith
เป็นพิกเซลด้วยdisplayMetrics#density
- ตอนนี้
- ต้องย้ายข้อมูลค่าคงที่ของลักษณะการทำงาน "เสร็จสิ้น" ไปยัง
FinishBehavior
ค่าคงที่ของคลาสที่คล้ายกับ enum ดังนี้FINISH_NEVER
เปลี่ยนเป็นFinishBehavior.NEVER
FINISH_ALWAYS
เปลี่ยนเป็นFinishBehavior.ALWAYS
FINISH_ADJACENT
เปลี่ยนเป็นFinishBehavior.ADJACENT
- คุณต้องย้ายข้อมูลการวางแนวเลย์เอาต์เป็น
SplitAttributes.LayoutDirection
โดยทำดังนี้ltr
เปลี่ยนเป็นSplitAttributes.LayoutDirection.LEFT_TO_RIGHT
rtl
เปลี่ยนเป็นSplitAttributes.LayoutDirection.RIGHT_TO_LEFT
locale
เปลี่ยนเป็นSplitAttributes.LayoutDirection.LOCALE
- คุณต้องย้ายข้อมูล
splitRatio
ไปยังSplitAttributes.SplitType.ratio(splitRatio)
SplitPairRule.Builder
migrations:SplitPairRule.Builder(filters, minWidth, minSmallestWidth)
เปลี่ยนเป็นkotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.
setLayoutDirection(layoutDirection)
และsetSplitRatio(ratio)
เปลี่ยนเป็นkotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
setFinishPrimaryWithSecondary
และsetFinishSecondaryWithPrimary
ใช้ค่าคงที่แบบFinishBehavior
ดูรายละเอียดได้ที่ "การย้ายข้อมูล SplitRule"- ใช้
setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW)
เพื่อแสดงการแยกในอุปกรณ์แนวตั้ง
SplitPlaceholder.Builder
migrations:- มีเฉพาะพารามิเตอร์
filters
และplaceholderIntent
พร็อพเพอร์ตี้อื่นๆ จะย้ายไปยังตัวเซ็ตเตอร์ ดูรายละเอียดได้ที่ "การย้ายข้อมูล SplitPairRule.Builder" setFinishPrimaryWithPlaceholder
ใช้ค่าคงที่แบบFinishBehavior
ที่เป็น Enum ดูรายละเอียดได้ที่ "การย้ายข้อมูล SplitRule"setLayoutDirection(layoutDirection)
และsetSplitRatio(ratio)
เปลี่ยนเป็นkotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
- ใช้
setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW)
เพื่อแสดงการแยกในอุปกรณ์แนวตั้ง
- มีเฉพาะพารามิเตอร์
เวอร์ชัน 1.1.0-rc01
10 พฤษภาคม 2023
androidx.window:window-*:1.1.0-rc01
ได้รับการปล่อยแล้ว เวอร์ชัน 1.1.0-rc01 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เผยแพร่
ActivityEmbedding
เป็น API ที่เสถียร - การแก้ไขข้อบกพร่องหลายรายการ
เวอร์ชัน 1.1.0-beta02
5 เมษายน 2023
androidx.window:window-*:1.1.0-beta02
ได้รับการปล่อยแล้ว เวอร์ชัน 1.1.0-beta02 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- การแก้ไขและล้างข้อมูลภายใน
เวอร์ชัน 1.1.0-beta01
22 มีนาคม 2023
androidx.window:window-*:1.1.0-beta01
ได้รับการปล่อยแล้ว เวอร์ชัน 1.1.0-beta01 มีการคอมมิตเหล่านี้
การฝังกิจกรรม
- เพิ่ม
PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED
เป็นพร็อพเพอร์ตี้บูลีนของแท็ก<application>
ในไฟล์ Manifest ของแอป - เลิกใช้งาน
isSplitSupported
และแทนที่ด้วยsplitSupportStatus
เพื่อแสดงข้อมูลที่ละเอียดยิ่งขึ้นเกี่ยวกับสาเหตุที่ฟีเจอร์แยกไม่พร้อมใช้งาน - เพิ่มคลาสที่ฝัง
SplitController.SplitSupportStatus
เพื่อระบุค่าคงที่สถานะสำหรับพร็อพเพอร์ตี้splitSupportStatus
- แยก
SplitController
ออกเป็นหลายโมดูล ดังนี้- โมดูล
ActivityEmbeddingController
สำหรับ API ที่เกี่ยวข้องกับActivity
หรือActivityStack
- ย้าย
isActivityEmbedded
จากSplitController
ไปActivityEmbeddingController
แล้ว - โมดูล
RuleController
สำหรับการดำเนินการที่เกี่ยวข้องกับEmbeddingRule
- API
SplitController
ที่ถูกนําออกมีดังนี้clearRegisteredRules()
getSplitRules()
initialize()
registerRule()
unregisterRule()
- เพิ่ม
RuleController
API ต่อไปนี้addRule()
— เพิ่มกฎหรืออัปเดตกฎที่มีแท็กเดียวกันremoveRule()
— นำกฎออกจากคอลเล็กชันกฎที่ลงทะเบียนsetRules()
— สร้างคอลเล็กชันกฎclearRules()
— นำกฎที่ลงทะเบียนไว้ทั้งหมดออก- `parseRules() — แยกวิเคราะห์กฎจากคําจํากัดความของกฎ XML
- โมดูล
- โมดูลทั้งหมดต้องมีการเริ่มต้นบริบทด้วยเมธอด
#getInstance()
ซึ่งรวมถึงActivityEmbeddingController#getInstance(Context)
SplitController#getInstance(Context)
RuleController#getInstance(Context)
- เพิ่มคลาส
EmbeddingAspectRatio
เพื่อกําหนดค่าคงที่ของลักษณะการทํางานแบบ Enum ที่เกี่ยวข้องกับสัดส่วนการแสดงผล - เพิ่มคลาส
SplitAttributes
เพื่อกำหนดเลย์เอาต์แบบแยก - เพิ่มฟังก์ชันเครื่องคิดเลข
SplitAttributes
ลงในSplitController
เพื่อปรับแต่งเลย์เอาต์แบบแยก ดังนี้setSplitAttributesCalculator(Function)
clearSplitAttributesCalculator()
isSplitAttributesCalculatorSupported()
เพื่อตรวจสอบว่าอุปกรณ์รองรับ SplitAttributesCalculator API หรือไม่
- เพิ่มช่อง
EmbeddingRule#tag
แล้ว - การอัปเดต API ใน
SplitRule
- เพิ่ม
defaultSplitAttributes
— กําหนดเลย์เอาต์การแยกเริ่มต้นของการแยก แทนที่splitRatio
และlayoutDirection
- เพิ่มการแปลพร็อพเพอร์ตี้ XML
splitRatio
และsplitLayoutDirection
เป็นdefaultSplitAttributes
- เปลี่ยนคำจำกัดความของขนาดขั้นต่ำให้ใช้ความหนาแน่นของพิกเซลอิสระ (dp) แทนพิกเซล
- เพิ่ม
minHeightDp
ที่มีค่าเริ่มต้น 600dp - เปลี่ยน
minWidth
เป็นminWidthDp
ที่มีค่าเริ่มต้น 600dp - เปลี่ยน
minSmallestWidth
เป็นminSmallestWidthDp
ที่มีค่าเริ่มต้น 600dp - เพิ่ม
maxAspectRatioInHorizontal
ที่มีค่าเริ่มต้นALWAYS_ALLOW
- เพิ่ม
maxAspectRatioInPortrait
ที่มีค่าเริ่มต้น1.4
- กำหนดคลาสที่ฝัง
FinishBehavior
เพื่อแทนที่ค่าคงที่ของลักษณะการทำงานที่เสร็จสิ้น - ใช้การเปลี่ยนแปลงพร็อพเพอร์ตี้กับคลาสที่ฝัง
Builder
ของSplitPairRule
และSplitPlaceholderRule
- เพิ่ม
- แทนที่
SplitInfo#getSplitRatio()
ด้วยSplitInfo#getSplitAttributes()
เพื่อให้ข้อมูลเพิ่มเติมเกี่ยวกับการแยก
WindowLayout
- เพิ่มการรองรับบริบท UI ที่ไม่ใช่กิจกรรมลงใน
WindowInfoTracker
- เพิ่มบริบท UI ที่ไม่ใช่กิจกรรมลงใน
WindowMetricsCalculator
ขั้นตอนการย้ายข้อมูล
- หากต้องการเปิดใช้การฝังกิจกรรมเพื่อแสดงกิจกรรมแบบแยก แอปต้องเพิ่มพร็อพเพอร์ตี้
PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED
ลงในแท็ก<application>
ของไฟล์ Manifest ดังนี้xml <property android:name="android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED" android:value="true" />
วิธีนี้ช่วยให้ระบบเพิ่มประสิทธิภาพลักษณะการแยกสําหรับแอปพลิเคชันล่วงหน้าได้ SplitInfo
ratio- ตรวจสอบว่ามีการซ้อนการแยกปัจจุบันหรือไม่ โดยทำดังนี้
kotlin SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.ExpandContainersSplitType
- ตรวจสอบอัตราส่วนปัจจุบัน
kotlin if (SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.RatioSplitType) { val ratio = splitInfo.splitAttributes.splitType.ratio } else { // Ratio is meaningless for other types. }
- ตรวจสอบว่ามีการซ้อนการแยกปัจจุบันหรือไม่ โดยทำดังนี้
SplitController
migrations:SplitController.getInstance()
เปลี่ยนเป็นSplitController.getInstance(Context)
SplitController.initialize(Context, @ResId int)
เปลี่ยนเป็นRuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int))
SplitController.getInstance().isActivityEmbedded(Activity)
เปลี่ยนเป็นActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity)
SplitController.getInstance().registerRule(rule)
เปลี่ยนเป็นRuleController.getInstance(Context).addRule(rule)
SplitController.getInstance().unregisterRule(rule)
เปลี่ยนเป็นRuleController.getInstance(Context).removeRule(rule)
SplitController.getInstance().clearRegisteredRules()
เปลี่ยนเป็นRuleController.getInstance(Context).clearRules()
SplitController.getInstance().getSplitRules()
เปลี่ยนเป็นRuleController.getInstance(Context).getRules()
- การย้ายข้อมูลพร็อพเพอร์ตี้
SplitRule
- ตอนนี้
minWidth
และminSmallestWidth
ใช้หน่วย dp แทนพิกเซล แอปสามารถใช้การเรียกใช้ต่อไปนี้kotlin TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics )
หรือเพียงแค่หารminWith
เป็นพิกเซลด้วยdisplayMetrics#density
- ตอนนี้
- ต้องย้ายข้อมูลค่าคงที่ของลักษณะการทำงาน "เสร็จสิ้น" ไปยัง
FinishBehavior
ค่าคงที่ของคลาสที่คล้ายกับ enum ดังนี้FINISH_NEVER
เปลี่ยนเป็นFinishBehavior.NEVER
FINISH_ALWAYS
เปลี่ยนเป็นFinishBehavior.ALWAYS
FINISH_ADJACENT
เปลี่ยนเป็นFinishBehavior.ADJACENT
- คุณต้องย้ายข้อมูลการวางแนวเลย์เอาต์เป็น
SplitAttributes.LayoutDirection
โดยทำดังนี้ltr
เปลี่ยนเป็นSplitAttributes.LayoutDirection.LEFT_TO_RIGHT
rtl
เปลี่ยนเป็นSplitAttributes.LayoutDirection.RIGHT_TO_LEFT
locale
เปลี่ยนเป็นSplitAttributes.LayoutDirection.LOCALE
- คุณต้องย้ายข้อมูล
splitRatio
ไปยังSplitAttributes.SplitType.ratio(splitRatio)
SplitPairRule.Builder
migrations:SplitPairRule.Builder(filters, minWidth, minSmallestWidth)
เปลี่ยนเป็นkotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.
setLayoutDirection(layoutDirection)
และsetSplitRatio(ratio)
เปลี่ยนเป็นkotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
setFinishPrimaryWithSecondary
และsetFinishSecondaryWithPrimary
ใช้ค่าคงที่แบบFinishBehavior
ดูรายละเอียดได้ที่ "การย้ายข้อมูล SplitRule"- ใช้
setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW)
เพื่อแสดงการแยกในอุปกรณ์แนวตั้ง
SplitPlaceholder.Builder
migrations:- มีเฉพาะพารามิเตอร์
filters
และplaceholderIntent
พร็อพเพอร์ตี้อื่นๆ จะย้ายไปยังตัวเซ็ตเตอร์ ดูรายละเอียดได้ที่ "การย้ายข้อมูล SplitPairRule.Builder" setFinishPrimaryWithPlaceholder
ใช้ค่าคงที่แบบFinishBehavior
ที่เป็น Enum ดูรายละเอียดได้ที่ "การย้ายข้อมูล SplitRule"setLayoutDirection(layoutDirection)
และsetSplitRatio(ratio)
เปลี่ยนเป็นkotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
- ใช้
setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW)
เพื่อแสดงการแยกในอุปกรณ์แนวตั้ง
- มีเฉพาะพารามิเตอร์
เวอร์ชัน 1.1.0-alpha06
22 กุมภาพันธ์ 2023
androidx.window:window-*:1.1.0-alpha06
ได้รับการปล่อยแล้ว เวอร์ชัน 1.1.0-alpha06 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- แสดงเวอร์ชันทดลองของการรับ
WindowLayoutInfo
จากบริบท UI
การเปลี่ยนแปลง API
- เพิ่ม
splitSupportStatus
เพื่อระบุว่าการฝังกิจกรรมพร้อมใช้งานหรือไม่ (I10024) - ตั้งค่า UI Context
WindowLayoutInfo
API เป็นเวอร์ชันทดลอง (I58ee0) - แนะนำ
WindowAreaController
และ API เพื่อเปิดใช้โหมดRearDisplay
เพื่อย้ายหน้าต่างปัจจุบันไปยังจอแสดงผลที่สอดคล้องกับกล้องหลัง (Iffcbf) - อัปเดตสีพื้นหลังเริ่มต้น (I1ac1b)
- เพิ่มพารามิเตอร์
SplitAttributes
(I18bdd) - เพิ่ม API สำหรับ
SplitRule
,SplitAttributes
,SplitAttributesCalculator
(I92d23) - ปรับปรุง API ที่เกี่ยวข้องกับ
maxAspectRatio
ดังนี้- แทนที่
alwaysAllow()
และalwaysDisallow()
ด้วยALWAYS_ALLOW
และALWAYS_DISALLOW
- อัปเดตเอกสารประกอบ API ของ @see ด้วยเอกสารประกอบแบบสแตนด์อโลน (I3057b)
- แทนที่
- ระบบนำตัวสร้างต่อไปนี้ออกจาก API สาธารณะเนื่องจากแอปไม่ควรเรียกใช้
SplitInfo
constructorActivityStack
constructor (Ide534)
- ตอนนี้
SplitRule
ใช้เวลาmaxAspectRatioInPortrait/Landscape
โดยจะอนุญาตให้แยกกิจกรรมก็ต่อเมื่อสัดส่วนภาพของขอบเขตหลักเล็กกว่าหรือเท่ากับmaxAspectRatio
ที่ขอ (Ia5990) - เปลี่ยน
RuleController#parseRules
เป็นแบบคงที่ (I785df) - ปรับปรุง API ที่เกี่ยวข้องกับ ActivityEmbedding
- ปรับชื่อ API ให้สอดคล้องกัน - ใช้เพิ่ม/นําออกสําหรับอินสแตนซ์หลายรายการ
registerRule
เปลี่ยนเป็นaddRule
unregisterRule
เปลี่ยนเป็นremoveRule
- แทนที่
getSplitRules
ด้วยgetRules
เนื่องจากActivityRule
ไม่ใช่กฎการแยก - เพิ่ม
RuleController#setRules
เพื่อตั้งค่ากฎหลายรายการ - ดึงข้อมูล API ที่เกี่ยวข้องกับกฎจาก
SplitController
ไปยังRuleController
แบบเดี่ยว ปัจจัยต่างๆ มีดังนี้ addRule
removeRule
getRules
setRules
clearRules
parseRules
- ดึงข้อมูล
#isActivityEmbedded
จากSplitController
ไปยังActivityEmbeddingController
แบบ Singleton ปัจจัยต่างๆ มีดังนี้ 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)
- เราไม่ได้แยกความแตกต่างระหว่างกฎแบบคงที่กับกฎรันไทม์อีกต่อไป อย่างไรก็ตาม การเรียกใช้
#clearRules
จะล้างกฎทั้งหมด ไม่ว่าจะลงทะเบียนกับคําจํากัดความกฎ XML แบบคงที่หรือที่รันไทม์ หากต้องการใช้ลักษณะการทำงานเดิมของSplitController#clearRegisteredRules
โปรดเรียกใช้RuleController#parseRules
ด้วยรหัสแหล่งข้อมูล XML และเรียกใช้RuleController#setRules
เพื่อตั้งค่ากฎอีกครั้ง การเปลี่ยนแปลงก่อนนี้SplitController.getInstance(context).clearRegisteredRules()
การเปลี่ยนแปลงหลังจากนี้val ruleController = RuleController.getInstance(context) val rules = ruleController.parseRules(R.xml.static_rules) ruleController.setRules(rules)
(Ib3967)
- ปรับปรุง SplitRule API ดังนี้
- ใช้ขนาดขั้นต่ำเป็น DP แทนพิกเซลสำหรับ
SplitRule
- ปรับโครงสร้างสำหรับ
SplitRule
Builder ให้ใช้มิติข้อมูลขั้นต่ำเป็นตัวเลือก (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 เวอร์ชันทดลองออกจาก
ActivityEmbedding
API - ซ่อนตัวสร้าง
ActivityRule
เนื่องจากBuilder
เป็นวิธีที่แนะนำในการสร้าง - เพิ่มวิธีการทดลองเพื่อรับ
WindowInsets
ในWindowMetrics
- อัปเดต
SplitPlaceholderFinishBehavior
เพื่อป้องกันไม่ให้ตัวยึดตำแหน่งเสร็จสมบูรณ์ การสิ้นสุดตัวยึดตําแหน่งทําให้เกิดลักษณะการทํางานที่ทําให้สับสน
การเปลี่ยนแปลง API
- ทำให้ val
isEmpty
เป็นสาธารณะเพื่อแทนที่ funisEmpty
- เปลี่ยนชื่อกิจกรรมพารามิเตอร์
ActivityStack
เป็นactivitiesInProcess
(Ia5055) - นำ
ActivityFilter#matchesClassName
และActivityFilter#matchesClassNameOrWildCard
ออกเนื่องจากทำให้สับสน - เพิ่ม
ActivityFilter#componentName
และActivityFilter#intentAction
เพื่อให้ผู้เรียกใช้แยกแยะตัวกรองต่างๆ ได้ (I41f22) - นํา
@Deprecated
API ออกจาก API เวอร์ชันทดลอง (I216b3) - นํา
@ExperimentalWindowApi
สําหรับ Activity Embedding API ออก (I69ebe) - ซ่อนตัวสร้าง
ActivityRule
และใช้ Builder แทน (If4eb6) - เพิ่ม API เพื่อตรวจสอบว่ากิจกรรมเป็นส่วนหนึ่งของ
ActivityFilter
หรือไม่ (Ia43cf) - อัปเดตไฟล์ API ให้สอดคล้องกับการเปลี่ยนแปลงในคลาส
WindowMetrics
และWindowMetricsCalculatorCompat
(I667fe) - อัปเดต Javadoc ของพร็อพเพอร์ตี้
ActivityEmbedding
และชื่อคลาส (Ia1386) - การเพิ่มชื่อแท็กพร็อพเพอร์ตี้
ActivityEmbedding
เพื่อใช้ใน AndroidManifest.xml (Id1ad4) - เพิ่ม API
SplitPlaceholderFinishBehavior
และSplitPlaceholderRule.finishPrimaryWithPlaceholder
ใหม่ ซึ่งจะแทนที่SplitPlaceholderRule.finishPrimaryWithSecondary
ที่มีอยู่ ซึ่งจะกําหนดว่ากิจกรรมตัวยึดตําแหน่งจะสิ้นสุดเมื่อใด กิจกรรมที่เชื่อมโยงในการฝังกิจกรรมควรทํางานอย่างไร (I64647)
การแก้ไขข้อบกพร่อง
- แนะนำ
WindowAreaController
และ API เพื่อเปิดใช้โหมดRearDisplay
เพื่อย้ายหน้าต่างปัจจุบันไปยังจอแสดงผลที่สอดคล้องกับกล้องหลัง (I388ab)
เวอร์ชัน 1.1.0-alpha03
27 กรกฎาคม 2022
androidx.window:window-*:1.1.0-alpha03
ได้รับการปล่อยแล้ว เวอร์ชัน 1.1.0-alpha03 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- อัปเดตค่าเริ่มต้นสำหรับกฎการฝัง
การเปลี่ยนแปลง API
- อัปเดตค่าเริ่มต้นสำหรับพร็อพเพอร์ตี้กฎการฝัง (Ic4d35)
เวอร์ชัน 1.1.0-alpha02
11 พฤษภาคม 2022
androidx.window:window-*:1.1.0-alpha02
ได้รับการปล่อยแล้ว เวอร์ชัน 1.1.0-alpha02 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เผยแพร่ไลบรารีอะแดปเตอร์เพื่อรองรับ Java และ RxJava
เวอร์ชัน 1.1.0-alpha01
11 พฤษภาคม 2022
androidx.window:window-*:1.1.0-alpha01
ได้รับการปล่อยแล้ว เวอร์ชัน 1.1.0-alpha01 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เผยแพร่อะแดปเตอร์เพื่อรองรับ Java และ RxJava
เวอร์ชัน 1.1.0-alpha01
20 เมษายน 2022
androidx.window:window:1.1.0-alpha01
ได้รับการปล่อยแล้ว เวอร์ชัน 1.1.0-alpha01 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- แก้ไขข้อบกพร่องที่ทำให้แอปที่ทำงานอยู่เบื้องหลังหยุดแสดงฟีเจอร์การพับ
- ขยายการใช้งาน ActivityEmbedding API เวอร์ชันทดลอง
การเปลี่ยนแปลง API
- API สาธารณะสำหรับตรวจสอบว่ามีการฝังกิจกรรมหรือไม่ (I39eb7)
การแก้ไขข้อบกพร่อง
- เพิ่ม API ที่ปรับแต่งลักษณะการทำงานเมื่อสิ้นสุดสําหรับคอนเทนเนอร์ในการแยกกิจกรรม (I1a1e4)
- เพิ่มตัวเลือกการกําหนดค่าใหม่สําหรับกฎการแยกกิจกรรม (Iec6af)
รุ่น 1.0
เวอร์ชัน 1.0.0
26 มกราคม 2022
androidx.window:window-*:1.0.0
ได้รับการปล่อยแล้ว เวอร์ชัน 1.0.0 มีคอมมิตเหล่านี้
ฟีเจอร์หลักของ 1.0.0
- รองรับโทรศัพท์แบบพับได้ตั้งแต่
WindowInfoTracker
ถึงFoldingFeature
WindowMetricsCalculator
เพื่อช่วยคํานวณ WindowMetrics ปัจจุบัน
เวอร์ชัน 1.0.0-rc01
15 ธันวาคม 2021
androidx.window:window-*:1.0.0-rc01
ได้รับการปล่อยแล้ว เวอร์ชัน 1.0.0-rc01 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เพิ่มการรองรับโทรศัพท์แบบพับผ่าน
WindowInfoTracker
- เพิ่มวิธีการคํานวณ
WindowMetrics
ปัจจุบันและสูงสุด - เพิ่ม API การทดสอบที่รองรับ
เวอร์ชัน 1.0.0-beta04
17 พฤศจิกายน 2021
androidx.window:window-*:1.0.0-beta04
ได้รับการปล่อยแล้ว เวอร์ชัน 1.0.0-beta04 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เปลี่ยนชื่อ WindowInfoRepository เป็น WindowInfoTracker
- ทําให้ Activity เป็นวิธีการที่ต้องใช้อย่างชัดแจ้งสําหรับ WindowInfoTracker
- เพิ่ม TestRule ง่ายๆ สําหรับ WindowMetricsCalculator เพื่อรองรับนักพัฒนาซอฟต์แวร์ที่ใช้ Robolectric
การเปลี่ยนแปลง API
- ดึงข้อมูลส่วนขยาย (I25a5f)
- เพิ่ม isEmpty ใน ActivityStack (I5a4e6)
- เปลี่ยนชื่อ WindowInfoRepository เป็น WindowInfoTracker
- อัปเดต Dependency ของ java/rxjava/testing ให้ตรงกัน (I0da63)
- เพิ่มกฎการทดสอบสําหรับ WindowMetricsCalculator ง่ายๆ (Ibacdb)
เวอร์ชัน 1.0.0-beta03
27 ตุลาคม 2021
androidx.window:window-*:1.0.0-beta03
ได้รับการปล่อยแล้ว เวอร์ชัน 1.0.0-beta03 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เพิ่ม API การฝังกิจกรรมเวอร์ชันทดลอง เลย์เอาต์เวอร์ชันเริ่มต้นนี้ช่วยให้แสดงกิจกรรม 2 รายการควบคู่กันได้
การเปลี่ยนแปลง API
- นํา currentWindowMetrics API ออกเนื่องจากเราไม่สามารถระบุข้อมูลได้อย่างถูกต้อง โปรดใช้ WindowMetricsCalculator แทน (Icda5f)
- อัปเดต Extensions API แล้ว (Ica92b)
- เพิ่มอินเทอร์เฟซสำหรับฟีเจอร์ใหม่ที่อนุญาตให้ฝังกิจกรรมและแสดงกิจกรรมควบคู่กันภายในหน้าต่างงานหลัก (I5711d)
- ซ่อนตัวสร้างสำหรับ WindowMetrics และ WindowLayoutInfo โปรดใช้ API การทดสอบแทน (I5a1b5)
- เพิ่ม API เพื่อสร้างออบเจ็กต์ WindowLayoutInfo ปลอม (I4a2fd)
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาหน่วยความจำรั่วไหล (I3fc79, b/202989046)
เวอร์ชัน 1.0.0-beta02
1 กันยายน 2021
androidx.window:window-*:1.0.0-beta02
ได้รับการปล่อยแล้ว เวอร์ชัน 1.0.0-beta02 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เพิ่มคำอธิบายประกอบเวอร์ชันทดลองเพื่อกำกับเนื้อหา API เวอร์ชันทดลอง (I9f1b6)
- เพิ่มวิธีการทดสอบเพื่อสร้าง FoldingFeature ทดสอบที่ยอมรับ Rect วิธีนี้จะช่วยให้ทดสอบได้ง่ายขึ้นเมื่อใช้ Robolectric แทน Activity จริง (Id1cca)
เวอร์ชัน 1.0.0-beta01
18 สิงหาคม 2021
androidx.window:window-*:1.0.0-beta01
ได้รับการปล่อยแล้ว เวอร์ชัน 1.0.0-beta01 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- นำค่าคงที่เดิมออกและทำให้
FoldingFeature
เป็นอินเทอร์เฟซ
การเปลี่ยนแปลง API
- นำค่าคงที่เก่าออกและทําให้ FoldFeature เป็นอินเทอร์เฟซ (I9a2d5)
การแก้ไขข้อบกพร่อง
- ไลบรารีที่ขึ้นอยู่กับไลบรารี
Test Core
ได้รับการอัปเกรดเป็นเวอร์ชัน1.4.0
แล้ว และจะทำงานร่วมกับแพลตฟอร์ม Android เวอร์ชัน S ได้ (I88b72, b/189353863)
เวอร์ชัน 1.0.0-alpha10
4 สิงหาคม 2021
androidx.window:window-*:1.0.0-alpha10
ได้รับการปล่อยแล้ว เวอร์ชัน 1.0.0-alpha10 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เปลี่ยนชื่อ WindowInfoRepo เป็น WindowInfoRepository และปรับคลาส / ไฟล์ที่เกี่ยวข้อง
- แปลงเมตริกกรอบเวลาปัจจุบันเป็นโฟลว์ใน WindowInfoRepository เนื่องจากค่ามีการเปลี่ยนแปลงเมื่อเวลาผ่านไป
- เปลี่ยนชื่อ WindowInfoRepoJavaAdapter เป็น WindowInfoRepoCallbackAdapter
- เพิ่มเมธอดตัวช่วยเพื่อสร้างออบเจ็กต์ FoldingFeature ทดสอบ
- อัปเดตแพ็กเกจเพื่อจัดกลุ่มคลาสตามฟีเจอร์ที่รองรับ
การเปลี่ยนแปลง API
- เปลี่ยนชื่อ ActivityExt เป็น ActivityExtensions เปลี่ยนจาก Repo เป็น Repository (I61a16)
- อัปเดตแพ็กเกจสำหรับชั้นเรียน (I23ae2)
- นํา WindowMetrics ออกจาก WindowInfoRepo (I24663)
- นำ WindowManager ออกและใช้ WindowInfoRepo
- ทำให้ WindowBackend เป็นภายใน (I06d9a)
- แปลงเมตริกกรอบเวลาเป็น FLow
- เปลี่ยนชื่ออะแดปเตอร์ Java เป็น WindowInfoRepoCallbackAdapter
- นํา callbackFlow ออกเพื่อไม่ให้มีการใช้ API เวอร์ชันทดลองอีก (Ia4d15)
- เพิ่มเมธอดตัวช่วยเพื่อสร้างฟีเจอร์การแสดงผลทดสอบ
- เปลี่ยนจาก occlusionMode เป็น occlusionType (If4cff)
การแก้ไขข้อบกพร่อง
- แก้ไขข้อผิดพลาด ProGuard ที่มีการนําคลังหลักออก
- แก้ไขข้อผิดพลาดที่ระบบไม่ได้ส่ง WindowLayoutInfo ไปยังผู้ติดตามเพิ่มเติม
- แก้ไขข้อผิดพลาดที่การเปลี่ยนแปลงการกําหนดค่าจะไม่ทริกเกอร์การอัปเดตฟีเจอร์การพับ
เวอร์ชัน 1.0.0-alpha09
30 มิถุนายน 2021
androidx.window:window-*:1.0.0-alpha09
ได้รับการปล่อยแล้ว เวอร์ชัน 1.0.0-alpha09 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เปลี่ยนจากค่าคงที่จำนวนเต็มเป็นลิสต์แบบไม่จำกัด
- เพิ่มยูทิลิตีการทดสอบเพื่อสร้างฟีเจอร์การทดสอบการพับ
การเปลี่ยนแปลง API
- เพิ่มเมธอดตัวช่วยเพื่อสร้างฟีเจอร์การแสดงผลทดสอบ (I3cf54)
- เปลี่ยนจาก
occlusionMode
เป็นocclusionType
- เปลี่ยนจาก
การแก้ไขข้อบกพร่อง
- ส่งค่าเริ่มต้นเมื่อเพิ่มผู้ใช้งานสตรีมข้อมูลหลายราย
เวอร์ชัน 1.0.0-alpha08
16 มิถุนายน 2021
androidx.window:window-*:1.0.0-alpha08
ได้รับการปล่อยแล้ว เวอร์ชัน 1.0.0-alpha08 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เผยแพร่อาร์ติแฟกต์การทดสอบเพื่อให้ทดสอบได้ง่ายขึ้นเมื่อใช้ WindowInfoRepository ใช้ WindowInfoRepository เพื่อรับข้อมูลเกี่ยวกับ DisplayFeatures และ WindowMetrics (I57f66, Ida620)
เวอร์ชัน 1.0.0-alpha07
2 มิถุนายน 2021
androidx.window:window-*:1.0.0-alpha07
ได้รับการปล่อยแล้ว เวอร์ชัน 1.0.0-alpha07 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- ย้ายข้อมูลไลบรารีหน้าต่างหลักไปยัง Kotlin จะใช้โคโริวทีนและฟังก์ชันการระงับเพื่อแสดงข้อมูลแบบไม่พร้อมกันนับจากนี้ไป
- เพิ่ม WindowInfoRepo เป็นแหล่งที่มาของการโต้ตอบหลักสําหรับรับ WindowMetrics และกระแส WindowLayoutInfo
- อาร์ติแฟกต์
window-java
ใหม่เพื่อแสดง API ที่ใช้งานง่ายกับ Java เพื่อลงทะเบียนและยกเลิกการลงทะเบียนการเรียกกลับ - อาร์ติแฟกต์
window-rxjava2
และwindow-rxjava3
ใหม่เพื่อแสดง API ที่ปรับให้เข้ากับ RxJava
การเปลี่ยนแปลง API
- เพิ่ม
WindowServices
เพื่อระบุการพึ่งพาอย่างสม่ำเสมอ- เพิ่ม API ที่อิงตาม coroutine เพื่อใช้ข้อมูลเลย์เอาต์หน้าต่าง (Iab70f)
- ย้ายข้อมูลไลบรารีการจัดการหน้าต่างหลักไปยัง Kotlin (Icca34)
การแก้ไขข้อบกพร่อง
- เพิ่มคลาสข้อมูลใหม่เพื่อแสดงขอบขององค์ประกอบ (I6dcd1)
เวอร์ชัน 1.0.0-alpha06
5 พฤษภาคม 2021
androidx.window:window:1.0.0-alpha06
ได้รับการปล่อยแล้ว เวอร์ชัน 1.0.0-alpha06 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เราได้เริ่มย้ายข้อมูลไปยัง Kotlin แล้ว และจะเสร็จสิ้นในรุ่นถัดไป
- DeviceState ถูกนําออกจาก API สาธารณะแล้ว โปรดใช้ FoldingFeature แทน
- เราได้นํา
STATE_FLIPPED
ออกจากสถานะ FoldingFeature แล้วเนื่องจากยังไม่มี Use Case ที่รองรับในขณะนี้ - นอกจากนี้ เรายังได้นํา API อื่นๆ ที่เลิกใช้งานออกด้วย
การเปลี่ยนแปลง API
- การเพิ่ม Kotlin เป็นข้อกําหนด
- ย้ายข้อมูลไลบรารีหลักไปยัง Kotlin (Idd995)
- นำเครื่องมือสร้าง
DisplayFeature
ออกแล้ว (I61fa4) - นํา
DeviceState
ออกจาก Public API แล้ว ให้ใช้FoldingFeature
แทน (Id6079) - นำการเรียกกลับสถานะอุปกรณ์ออกจากส่วนขยาย (I5ea83)
- นำ
STATE_FLIPPED
ออกจาก FoldingFeature (I9c4e1) - นำวิธีการลงทะเบียนที่เลิกใช้งานแล้วออก (Ib381b)
เวอร์ชัน 1.0.0-alpha05
24 มีนาคม 2021
androidx.window:window:1.0.0-alpha05
ได้รับการปล่อยแล้ว เวอร์ชัน 1.0.0-alpha05 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
เราได้เพิ่มเมธอดที่สะดวกให้กับ FoldingFeature เพื่อให้แอปบอกได้ว่าฟีเจอร์แยกออกจากกัน บดบัง และระบุการวางแนวของบานพับหรือไม่ นอกจากนี้ เรายังซ่อนประเภทบานพับไว้ด้วยเพื่อให้
เราจะนําวิธีการอ่านแบบซิงค์ออกจาก WindowManager เมธอดการอ่านแบบซิงค์มีแนวโน้มที่จะเกิดข้อผิดพลาดเนื่องจากมีเงื่อนไขการแข่งขันโดยนัย ลงทะเบียน Listeners และ Callbacks เพื่อรับข้อมูลอัปเดตเกี่ยวกับ WindowLayoutInfo
การเปลี่ยนแปลง API
- เพิ่มเมธอดที่สะดวกสำหรับการทำงานกับ FoldingFeatures (Ie733f)
- นำเมธอดการอ่านแบบพร้อมกันออกจาก WindowManager (I96fd4)
เวอร์ชัน 1.0.0-alpha04
10 มีนาคม 2021
androidx.window:window:1.0.0-alpha04
ได้รับการปล่อยแล้ว เวอร์ชัน 1.0.0-alpha04 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- แก้ไขข้อบกพร่องที่ไม่มีการออก WindowLayoutInfo หากไม่มีการใช้งาน OEM ตอนนี้เราส่ง WIndowLayoutInfo ที่ว่างเปล่า
- แก้ไขข้อบกพร่องที่สถานะจะไม่อัปเดตอย่างถูกต้องหากสถานะบานพับเปลี่ยนแปลงไปขณะที่แอปทำงานอยู่เบื้องหลัง ตอนนี้สถานะควรสอดคล้องกัน
- อัปเดตไฟล์ ProGuard เพื่อละเว้นคําเตือนจากข้อกําหนดในรันไทม์
การแก้ไขข้อบกพร่อง
- ส่งค่าว่างเมื่อไม่มีคลัง OEM (Ide935)
เวอร์ชัน 1.0.0-alpha03
18 กุมภาพันธ์ 2021
androidx.window:window:1.0.0-alpha03
ได้รับการปล่อยแล้ว เวอร์ชัน 1.0.0-alpha03 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- ส่งค่าว่างสำหรับ WindowLayoutInfo เมื่อการติดตั้งใช้งาน OEM ว่างเปล่า ซึ่งจะช่วยให้ใช้คลังเพลงในอุปกรณ์ต่างๆ ได้ง่ายขึ้น เนื่องจาก API เป็นแบบไม่พร้อมกัน เราจึงยังคงแนะนำให้แอปเขียนโค้ดป้องกันและแสดงค่าเริ่มต้นหลังจากหมดเวลา เราไม่สามารถรับประกันการติดตั้งใช้งาน OEM และค่าเริ่มต้นอาจล่าช้า
การแก้ไขข้อบกพร่อง
- ส่งค่าว่างเมื่อไม่มีคลัง OEM (Ide935)
เวอร์ชัน 1.0.0-alpha02
27 มกราคม 2021
androidx.window:window:1.0.0-alpha02
ได้รับการปล่อยแล้ว เวอร์ชัน 1.0.0-alpha02 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
เราได้เลิกใช้งาน API บางรายการเพื่อปรับปรุงประสิทธิภาพของ API และลดข้อผิดพลาด ตัวอย่างที่เห็นได้ชัด ได้แก่ การนําการดำเนินการอ่านแบบซิงค์ออกจาก WindowManager และการเลิกใช้งาน DeviceState การดำเนินการอ่านแบบซิงค์อาจทำให้เกิดเงื่อนไขการแข่งขันและมี UI ที่ไม่ถูกต้อง
เราได้แปลง DisplayFeature เป็นอินเทอร์เฟซที่ฟีเจอร์อื่นๆ จะใช้ในอนาคต ฟีเจอร์แรกคือ FoldingFeature ซึ่งตอนนี้เป็นการแสดงการพับหน้าจอหรือการบานพับ ข้อมูลนี้ยังมีสถานะของบานพับแทน DeviceState ด้วย
WindowMetrics เปิดตัวใน Android 11 เพื่อให้นักพัฒนาแอปมีวิธีง่ายๆ ในการค้นหาเมตริกเกี่ยวกับหน้าต่าง เช่น ตำแหน่งและขนาดบนหน้าจอ รวมถึงส่วนแทรกของระบบ เราได้พอร์ต API นี้ไปยังเวอร์ชันเก่าในรุ่นนี้เพื่อให้นักพัฒนาแอปใช้ประโยชน์จาก WindowMetrics และรองรับ Android เวอร์ชันเก่าต่อไปได้ คุณดู WindowMetrics ได้จาก
WindowManager#getCurrentWindowMetrics()
และ WindowManager#getMaximumWindowMetrics() API
การเปลี่ยนแปลง API
- เลิกใช้งาน API ที่จะนําออกในรุ่นอัลฟ่าถัดไป (Ib7cc4)
- อัปเดต
ExtensionInterface
เพื่อยอมรับการอ้างอิงกิจกรรมที่ชัดเจน (I07ded) - แนะนํา WindowMetrics API (I3ccee)
- นําวิธีการอ่านแบบซิงค์ออกจาก WindowManager (I69983)
- ทําให้แพ็กเกจ ExtensionWindowBackend ได้รับการปกป้อง (Ied208)
การแก้ไขข้อบกพร่อง
- อัปเดต
ExtensionInterface
API เพื่อยอมรับบริบทภาพ (I8e827)
การมีส่วนร่วมจากภายนอก
- ผสาน DeviceState และ WindowLayoutInfo เพื่อให้เข้าถึงข้อมูลได้ง่ายขึ้น (Id34f4)
เวอร์ชัน 1.0.0-alpha01
27 กุมภาพันธ์ 2020
androidx.window:window:1.0.0-alpha01
และ androidx.window:window-extensions:1.0.0-alpha01
เผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha01 มีการคอมมิตเหล่านี้
นี่เป็นรุ่นแรกของไลบรารีตัวจัดการหน้าต่าง
ฟีเจอร์ใหม่
DisplayFeature
: API ใหม่นี้จะระบุการหยุดชะงักบนพื้นผิวหน้าจอแบบแบนต่อเนื่อง เช่น ข้อต่อหรือรอยพับDeviceState
: API ใหม่นี้จะระบุลักษณะการวางโทรศัพท์ปัจจุบันจากรายการลักษณะการวางที่กําหนด (เช่นCLOSED
,OPENED
,HALF_OPENED
เป็นต้น)