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