Compose Foundation
androidx.compose.foundation
androidx.compose.foundation.layout
androidx.compose.foundation.gestures
androidx.compose.foundation.selection
androidx.compose.foundation.lazy
androidx.compose.foundation.interaction
androidx.compose.foundation.text
(ดูเอกสารอ้างอิง API สำหรับแพ็กเกจ Compose ทั้งหมด)
| อัปเดตล่าสุด | รุ่นที่เสถียร | รุ่นที่อาจได้รับการเผยแพร่ | รุ่นเบต้า | รุ่นอัลฟ่า |
|---|---|---|---|---|
| 22 ตุลาคม 2025 | 1.9.4 | - | 1.10.0-beta01 | - |
โครงสร้าง
Compose คือการรวมรหัสกลุ่ม Maven 7 รายการภายใน androidx แต่ละกลุ่ม
มีฟังก์ชันการทำงานย่อยที่กำหนดเป้าหมาย ซึ่งแต่ละกลุ่มมีชุดหมายเหตุประจำรุ่นของตัวเอง
ตารางนี้อธิบายกลุ่มและลิงก์ไปยังชุดหมายเหตุประจำรุ่นแต่ละชุด
| กลุ่ม | คำอธิบาย |
|---|---|
| compose.animation | สร้างภาพเคลื่อนไหวในแอปพลิเคชัน Jetpack Compose เพื่อยกระดับประสบการณ์ของผู้ใช้ |
| compose.compiler | แปลงฟังก์ชัน @Composable และเปิดใช้การเพิ่มประสิทธิภาพด้วยปลั๊กอินคอมไพเลอร์ Kotlin |
| compose.foundation | เขียนแอปพลิเคชัน Jetpack Compose ด้วยองค์ประกอบพื้นฐานที่พร้อมใช้งาน และขยายรากฐานเพื่อสร้างชิ้นส่วนระบบการออกแบบของคุณเอง |
| compose.material | สร้าง UI ของ Jetpack Compose ด้วยคอมโพเนนต์ Material Design ที่พร้อมใช้งาน ซึ่งเป็นจุดแรกเข้าของ Compose ในระดับที่สูงขึ้น ออกแบบมาเพื่อจัดหาคอมโพเนนต์ที่ตรงกับคอมโพเนนต์ที่อธิบายไว้ที่ www.material.io |
| compose.material3 | สร้าง UI ของ Jetpack Compose ด้วยคอมโพเนนต์ Material Design 3 ซึ่งเป็นวิวัฒนาการขั้นถัดไปของ Material Design Material 3 มีการอัปเดตธีมและคอมโพเนนต์ รวมถึงฟีเจอร์การปรับเปลี่ยนในแบบของคุณของ Material You เช่น สีแบบเปลี่ยนอัตโนมัติ และออกแบบมาให้สอดคล้องกับสไตล์ภาพและ UI ของระบบ Android 12 ใหม่ |
| compose.runtime | องค์ประกอบพื้นฐานของรูปแบบการเขียนโปรแกรมและการจัดการสถานะของ Compose รวมถึงรันไทม์หลักสำหรับปลั๊กอินคอมไพเลอร์ Compose เพื่อกำหนดเป้าหมาย |
| compose.ui | องค์ประกอบพื้นฐานของ Compose UI ที่จำเป็นต่อการโต้ตอบกับอุปกรณ์ ซึ่งรวมถึงเลย์เอาต์ การวาด และอินพุต |
การประกาศทรัพยากร Dependency
หากต้องการเพิ่มการอ้างอิงใน Compose คุณต้องเพิ่มที่เก็บ Maven ของ Google ลงในโปรเจ็กต์ อ่านข้อมูลเพิ่มเติมได้ที่ที่เก็บ Maven ของ Google
เพิ่มทรัพยากร Dependency สำหรับอาร์ติแฟกต์ที่ต้องการในไฟล์ build.gradle สำหรับ
แอปหรือโมดูล
Groovy
dependencies { implementation "androidx.compose.foundation:foundation:1.9.4" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.foundation:foundation:1.9.4") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
ดูข้อมูลเพิ่มเติมเกี่ยวกับการพึ่งพาได้ที่เพิ่มการพึ่งพาบิลด์
ความคิดเห็น
ความคิดเห็นของคุณช่วยเราปรับปรุง Jetpack ให้ดียิ่งขึ้น โปรดแจ้งให้เราทราบหากพบปัญหาใหม่หรือมี ไอเดียในการปรับปรุงไลบรารีนี้ โปรดดูปัญหาที่มีอยู่ ในไลบรารีนี้ก่อนสร้างปัญหาใหม่ คุณสามารถโหวตปัญหาที่มีอยู่ได้โดย คลิกปุ่มดาว
ดูข้อมูลเพิ่มเติมได้ในเอกสารประกอบของเครื่องมือติดตามปัญหา
เวอร์ชัน 1.10
เวอร์ชัน 1.10.0-beta01
22 ตุลาคม 2025
androidx.compose.foundation:foundation-*:1.10.0-beta01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.10.0-beta01 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- อัปเดต API การแตะโดยอ้อมทั้งหมดให้ใช้ชื่อ API ตัวชี้โดยอ้อมเพื่อให้ตรงกับ API อินพุตตัวชี้ (I238ce, b/451607214)
PagerState.currentPageOffsetFractionที่มีคำอธิบายประกอบพร้อม@FrequentlyChangingValue(Idfaab)
การแก้ไขข้อบกพร่อง
- แก้ไขลักษณะการทำงานของข้อความเลื่อนสำหรับทิศทางการจัดวางขวาไปซ้าย (Ib8be3)
เวอร์ชัน 1.10.0-alpha05
8 ตุลาคม 2025
androidx.compose.foundation:foundation-*:1.10.0-alpha05 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.10.0-alpha05 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
PaddingValuesรองรับการบวกและการลบแล้วเพื่อลดความซับซ้อนของการคำนวณการเว้นวรรคทั่วไป (I327e1, b/244468479)
การแก้ไขข้อบกพร่อง
ComposeFoundationFlags.isPausableCompositionInPrefetchEnabledจะเปิดใช้อยู่โดยค่าเริ่มต้น ซึ่งเป็นการเพิ่มประสิทธิภาพที่ช่วยให้เราสามารถกระจายงานที่ต้องทำระหว่างการดึงข้อมูลล่วงหน้าได้ดียิ่งขึ้น เช่น เราสามารถดำเนินการคอมโพสสำหรับบางส่วนของLazyColumn's next item ในระหว่างเฟรม UI หนึ่งๆ แล้วดำเนินการคอมโพสส่วนที่เหลือต่อในเฟรมถัดไป (I4c7fe)
เวอร์ชัน 1.10.0-alpha04
24 กันยายน 2025
androidx.compose.foundation:foundation-*:1.10.0-alpha04 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.10.0-alpha04 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มการใช้งาน
ScrollIndicatorStateสำหรับPagerStateแล้ว (I113b7) - เพิ่มการใช้งาน
ScrollIndicatorStateสำหรับLazyStaggeredGridStateแล้ว (I1028e) - เพิ่มการใช้งาน
ScrollIndicatorStateสำหรับLazyGridStateแล้ว (I9e50c) - เพิ่มการใช้งาน
ScrollIndicatorStateสำหรับLazyListStateแล้ว (I5ee29) - เพิ่มการใช้งาน
ScrollIndicatorStateสำหรับScrollStateแล้ว (I27f66) - เปิดตัวพร็อพเพอร์ตี้
scrollIndicatorStateในอินเทอร์เฟซScrollableState(Idca93) - นำฟีเจอร์
isWindowInsetsModifierLocalNodeImplementationEnabledออกแล้ว (I15e8f, b/440964232) - แสดงตัวแก้ไข
scrollableArea()ที่ใช้เพื่อทำให้คอมโพเนนต์เลื่อนได้ด้วยลักษณะการทำงานของการตัดเนื้อหาให้อยู่ในขอบเขต และจัดการทิศทางการเลื่อนเนื้อหาโดยอัตโนมัติตามการวางแนว RTL และแฟล็กreverseScrolling(I9471b, b/316559454)
เวอร์ชัน 1.10.0-alpha03
10 กันยายน 2025
androidx.compose.foundation:foundation-*:1.10.0-alpha03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.10.0-alpha03 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- นำ
ComposeFoundationFlags.isNonComposedClickableEnabledออก (I0dfc0, b/406228525) - ย้ายฟังก์ชันของ Factory สำหรับสร้างอินสแตนซ์
FillableDataไปยังออบเจ็กต์เสริม ให้ใช้เมธอดใหม่ของ Factory แทนการเรียกFillableData(value)ซึ่งก็คือFillableData.createFrom(value)(I2e200, b/441719650) - เปิดตัว
BeyondBoundsLayoutModifierNodeโหนดตัวแก้ไขใหม่เพื่อดำเนินการนอกเลย์เอาต์ขอบเขตสำหรับการค้นหาโฟกัส (I39be1, b/416133658) - ทำเครื่องหมาย
ScrollState.valueเป็นพร็อพเพอร์ตี้@FrequentlyChangingValue(I4723d) - เปิดตัว
LazyLayoutKeyIndexMapและ Factory สำหรับการติดตั้งใช้งานเริ่มต้น (I4fd0c, b/415038029)
การแก้ไขข้อบกพร่อง
- ตอนนี้คอลัมน์และแถวจะส่งขนาดจริงของสินค้าไปยัง
Modifier.alignอย่างถูกต้องแล้ว ซึ่งจะช่วยแก้ปัญหาที่การติดตั้งใช้งานModifier.alignที่กำหนดเองได้รับค่า 0 ที่ไม่ถูกต้อง (I8194f, b/439716351)
เวอร์ชัน 1.10.0-alpha02
27 สิงหาคม 2025
androidx.compose.foundation:foundation-*:1.10.0-alpha02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.10.0-alpha02 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- นำธง
isFlingContinuationAtBoundsEnabledออกแล้ว (I6b84f) - นำธง
isAdjustPointerInputChangeOffsetForVelocityTrackerEnabledออกแล้ว (I62380) - นำธง
isOnScrollChangedCallbackEnabledออกแล้ว (I667dc) - นำธง
isAutomaticNestedPrefetchEnabledออกแล้ว (I4f416) - นำธง
DragGesturePickUpEnabledออกแล้ว (Ib8500) - เปิดตัว
ScrollIndicatorStateAPI สำหรับแสดงสถานะแถบเลื่อน (I5e229)
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องที่การใช้
Modifier.anchoredDraggableไม่ได้เรียกใช้confirmValueChange(Iff7cc)
เวอร์ชัน 1.10.0-alpha01
13 สิงหาคม 2025
androidx.compose.foundation:foundation-*:1.10.0-alpha01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.10.0-alpha01 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- อัปเดตกลยุทธ์การดึงข้อมูลล่วงหน้าของ Pager เพื่อใช้หน้าต่างแคชแทนรายการเริ่มต้น 1 รายการในทิศทางการเลื่อน ตอนนี้ Pager จะเปิดใช้การดึงข้อมูลล่วงหน้าเริ่มต้นโดยค่าเริ่มต้น และการดึงข้อมูลล่วงหน้าจะอิงตามขนาดของหน้าต่างที่มีค่าเท่ากับ 1 วิวพอร์ต นั่นคือเราจะพยายามเติมรายการที่ดึงข้อมูลล่วงหน้าในวิวพอร์ตทั้งหมด 1 รายการ และจะเก็บรายการไว้นานขึ้นด้วย (I4d45e, b/292136289)
ComposeFoundationLayoutFlags.isWindowInsetsOptimizationEnabledเพื่อให้ปิดใช้การเพิ่มประสิทธิภาพWindowInsetsได้หากการติดตั้งใช้งานใหม่ทำให้เกิดการเปลี่ยนแปลงด้านพฤติกรรม (I8e912)SnapFlingBehaviorตอนนี้อนุญาตให้ข้อกำหนดภาพเคลื่อนไหวของ Snap เกินค่าที่กำหนดระหว่างการ Snap ซึ่งช่วยให้คุณระบุสปริงที่มีการเด้งเป็นsnapAnimationSpecเพื่อสร้างภาพเคลื่อนไหวการสแนปที่มีการเด้งได้ ระบบจะยังคงไม่สนใจค่าที่เกินเมื่อทำการเข้าใกล้ด้วยข้อกำหนดการสแนป (I373c2)- ตอนนี้การกดเคอร์เซอร์ลงด้วยเมาส์หรือทัชแพดใน
ComposeViewจะล้างโฟกัสโดยอัตโนมัติหากการกดเคอร์เซอร์ลงไม่ได้เกิดขึ้นในขอบเขตของโหนดที่โฟกัส ซึ่งจะส่งผลให้เกิด UX "แตะเพื่อล้างโฟกัส" ที่คาดการณ์ได้มากกว่าลักษณะการทำงานปัจจุบันเมื่อใช้อุปกรณ์ป้อนข้อมูลแบบพอยน์เตอร์ คุณเลือกไม่ใช้ลักษณะการทำงานนี้ได้ด้วยAbstractComposeView.isClearFocusOnPointerDownEnabledAPI ใหม่ (I6322b, b/282963174) - ตอนนี้ Scrollable รองรับเหตุการณ์การเลื่อนล้อเมาส์แบบ 2 มิติได้ดีขึ้นแล้ว เราได้เปิดตัว API สำหรับการทดสอบใหม่เพื่อช่วยทดสอบกรณีการใช้งานใน
MouseInjectionScopeนอกจากนี้ เรายังได้เปิดตัวการโอเวอร์โหลดใหม่สำหรับเมธอดการเลื่อนในMouseInjectionScopeและ Flag เพื่อควบคุมลักษณะการทำงานใหม่ที่เรียกว่าisMouseWheel1DAxisLockingEnabled(I136df) - อัปเดต
DragGestureNodeเพื่อใช้การป้อนข้อมูลเคอร์เซอร์ดิบแทนการระงับการป้อนข้อมูลเคอร์เซอร์เพื่อการเพิ่มประสิทธิภาพ เราได้เพิ่มการเปลี่ยนแปลงไว้หลังฟีเจอร์แฟล็กisNonSuspendingPointerInputInDraggableEnabled(I0fa4b) - ใส่คำอธิบายประกอบใน
AnchoredDraggableAPI บางรายการด้วย@FrequentlyChangingValueoffset,requireOffsetและprogressมีการเปลี่ยนแปลงบ่อยครั้งและไม่ควรอ่านในองค์ประกอบ โปรดเข้าถึงค่าเหล่านี้จากเลย์เอาต์และเฟสการวาด เอฟเฟกต์ หรืออื่นๆ นอกองค์ประกอบแทน (I05539) - นำการแจ้งว่าไม่เหมาะสม
isOnScrollChangedCallbackEnabled,isAdjustPointerInputChangeOffsetForVelocityTrackerEnabled,isFlingContinuationAtBoundsEnabled,isAutomaticNestedPrefetchEnabled,DragGesturePickUpEnabled,isPointerInteropFilterDispatchingFixEnabled,isNestedScrollInteropPostFlingFixEnabled,isNestedScrollDispatcherNodeFixEnabledออกแล้ว (I36c18) - ขอแนะนำ
CompositionLocalที่ใช้แก้ไขแปรงของไฮไลต์การป้อนข้อความอัตโนมัติที่สำเร็จได้ (I52329) - เพิ่มสี่เหลี่ยมผืนผ้าโฟกัสที่ปรับแต่งได้ลงใน
FocusPropertiesตอนนี้คุณกำหนดพื้นที่โฟกัสที่กำหนดเองแทนการใช้กล่องขอบเขตเริ่มต้นของโฟกัสได้แล้ว ระบบการย้ายโฟกัสและตรรกะการคงไว้ในมุมมองของคอนเทนเนอร์ที่เลื่อนได้จะใช้ข้อมูลนี้ (Id6555, b/368378073) - เพิ่ม
LineHeightStyle.Modeใหม่ชื่อTightโหมดนี้ช่วยบังคับใช้ความสูงของบรรทัดที่เล็กลงได้ แม้ว่าอาจตัดกลีฟที่สูงกว่าก็ตาม (Id3849) - เปิดตัวอินเทอร์เฟซ Interpolatable ใหม่ที่ช่วยให้สามารถประมาณค่าระหว่างประเภทต่างๆ ได้โดยอัตโนมัติ โดยสมมติว่าประเภทหนึ่งทราบวิธีแปลงจากอีกประเภทหนึ่ง อินเทอร์เฟซนี้ใช้ในประเภทการเขียนหลายประเภท เช่น แปรงและรูปร่าง แต่ก็ใช้ภายนอกได้เช่นกัน (I58eab)
- เพิ่มเหตุการณ์อินพุตทางอ้อมและวิธีระบุแกนพิกัดที่จะใช้สำหรับการเลื่อน (I58e7c)
- เพิ่ม
WindowInsets.cutoutPathAPI ใหม่เพื่อรับเส้นทางสำหรับการตัดขอบจอแสดงผล (Ib90b1, b/279636456) - เราได้นำแฟล็ก
isWindowInsetsDefaultPassThroughEnabledออกแล้ว โดยค่าเริ่มต้น WindowInsets จะไม่ใช้เพื่อให้ View ย่อยรับWindowInsetsได้โดยค่าเริ่มต้น (I888e0, b/412469666)
การแก้ไขข้อบกพร่อง
- โปรดปิดใช้
isNonSuspendingPointerInputInDraggableEnabledในตอนนี้ (Ia41c4) - ย้าย minSdk เริ่มต้นจาก API 21 ไปยัง API 23 (Ibdfca, b/380448311, b/435705964, b/435705223)
- อัปเดตเอกสารประกอบของ
DraggableAnchors'minPosition/maxPositionเพื่อระบุว่า API เหล่านี้ควรแสดงผล Float.NaN ตามDraggableAnchorsAPI อื่นๆ (I0460a) - แก้ไขข้อบกพร่องที่ทำให้
DraggableAnchors#closestAnchorขัดข้องหากไม่มี Anchor (I4e646) - การปรับปรุงประสิทธิภาพสำหรับ
DraggableAnchors(If4065, I0460a) TextFieldState.edit { }จะไม่ล้างประวัติการเลิกทำอีกต่อไป แต่จะสร้างรายการเลิกทำแบบสแตนด์อโลนแทน หากต้องการให้ล้างสแต็กเลิกทำหลังจากการเรียกใช้editโปรดใช้TextFieldState.undoState.clearHistory()(I12c14)- เพิ่มการรองรับการแตะสองครั้งเพื่อเลือกคำใน
SelectionContainerและBasicTextField(value, onValueChange)ที่โอเวอร์โหลด (Ibb06a) - แก้ไขข้อบกพร่องเล็กน้อยเพื่อให้
AutoboxingStateValuePropertyDetectorใช้งานร่วมกับ K1 และ K2 ได้ (Ie81c1) requestRectangleOnScreenคำขอที่ AndroidViews สร้างขึ้นจะส่งต่อไปยัง Compose อย่างถูกต้องแล้ว ซึ่งจะช่วยให้มุมมองต่างๆ เช่นEditTextแสดงบนหน้าจอต่อไปเมื่อมีการโต้ตอบ (Ibbf4c)- ตอนนี้คอลัมน์และแถวจะส่งขนาดจริงของสินค้าไปยัง
Alignment.Vertical.alignและAlignment.Horizontal.alignอย่างถูกต้องแล้ว ซึ่งจะช่วยแก้ปัญหาที่การติดตั้งใช้งานการจัดแนวที่กำหนดเองได้รับค่า 0 ที่ไม่ถูกต้อง (I3e460, b/349722072)
เวอร์ชัน 1.9
เวอร์ชัน 1.9.4
22 ตุลาคม 2025
androidx.compose.foundation:foundation-*:1.9.4 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.9.4 มีการเปลี่ยนแปลงเหล่านี้
เวอร์ชัน 1.9.3
8 ตุลาคม 2025
androidx.compose.foundation:foundation-*:1.9.3 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.9.3 มีการเปลี่ยนแปลงเหล่านี้
เวอร์ชัน 1.9.2
24 กันยายน 2025
androidx.compose.foundation:foundation-*:1.9.2 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.9.2 มีการเปลี่ยนแปลงเหล่านี้
เวอร์ชัน 1.9.1
10 กันยายน 2025
androidx.compose.foundation:foundation-*:1.9.1 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.9.1 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขข้อขัดข้องที่เกิดขึ้นเมื่อใช้
LazyLayoutCacheWindowในLazyLists(c39f5f3)
เวอร์ชัน 1.9.0
13 สิงหาคม 2025
androidx.compose.foundation:foundation-*:1.9.0 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.9.0 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 1.8.0
- การตรวจสอบ Lint ที่มาพร้อมกับ Compose ต้องใช้ AGP เวอร์ชัน 8.8.2 เป็นอย่างน้อย หากอัปเกรด AGP ไม่ได้ คุณสามารถอัปเกรด Lint แยกต่างหากได้โดยใช้
android.experimental.lint.version=8.8.2(หรือเวอร์ชันที่ใหม่กว่า) ในgradle.propertiesหากต้องการเรียกใช้การตรวจสอบ Lint ของ Compose ภายใน IDE คุณต้องใช้ Android Studio Ladybug หรือเวอร์ชันที่ใหม่กว่า - การเปลี่ยนแปลงที่ทำให้เกิดข้อขัดข้อง: โอเวอร์โหลด
clickable,combinedClickable,selectable,toggleableและtriStateToggleableที่ไม่มีพารามิเตอร์ Indication จะรองรับเฉพาะอินสแตนซ์IndicationNodeFactoryที่ระบุโดยใช้LocalIndicationเท่านั้น การเปลี่ยนแปลงนี้จะมีผลเมื่อคุณคอมไพล์การใช้งานตัวแก้ไขเหล่านี้อีกครั้งโดยใช้ Compose เวอร์ชันนี้ การขึ้นต่อกันแบบไบนารี / การขึ้นต่อกันแบบทรานซิทีฟจะไม่ได้รับผลกระทบ หากคุณใช้การติดตั้งใช้งานการระบุที่เลิกใช้งานแล้วกับLocalIndicationและใช้ API เหล่านี้ จะทำให้เกิดข้อขัดข้องขณะรันไทม์ การเปลี่ยนแปลงลักษณะการทำงานนี้จำเป็นต่อการปรับปรุงประสิทธิภาพ และช่วยให้ฟังก์ชันที่ประกอบกันได้ซึ่งใช้ตัวแก้ไขเหล่านี้ข้ามระหว่างการประกอบใหม่ได้ คุณใช้ComposeFoundationFlags.isNonComposedClickableEnabled=falseเพื่อเลือกไม่ใช้การเปลี่ยนแปลงลักษณะการทำงานนี้ชั่วคราวได้ เพื่อเปิดใช้การอัปเกรด Compose โดยไม่ถูกบล็อกในการย้ายข้อมูลนี้ เราจะนำฟีเจอร์นี้ออกหลังจากเปิดตัวเวอร์ชันเสถียร 1 เวอร์ชัน หากต้องการแก้ไข ให้ย้ายข้อมูลการติดตั้งใช้งานการระบุที่เลิกใช้งานแล้วเพื่อใช้IndicationNodeFactoryแทน นอกจากนี้ คุณยังใช้การโอเวอร์โหลดกับพารามิเตอร์ Indication ที่ชัดเจนได้ด้วย การโอเวอร์โหลดเหล่านี้จะยังคงรองรับอินสแตนซ์ Indication ที่ไม่ใช่IndicationNodeFactoryต่อไป แม้ว่าเราจะไม่แนะนำให้ใช้ด้วยเหตุผลด้านประสิทธิภาพก็ตาม (I6bcdc, b/316914333) - เปิดตัว
isFlingCancellationWithNestedScrollFixEnabledเพื่อแก้ไขปัญหาการแพร่กระจายการปัดในการเลื่อนที่ซ้อนกัน ใน CL นี้ เราจะคืนค่าลักษณะการทำงานของการปัดที่ต่อเนื่องซึ่งนำออกไปใน I9326a เราจะยังคงยกเลิกภาพเคลื่อนไหวการปัดในกรณีที่นำองค์ประกอบของเด็กออก (I467f4, b/405910180, b/419049142, b/416784125) - เพิ่มการใช้งาน
scrollAnimationSpecในContentInViewNodeอีกครั้ง เราได้นำลักษณะการทำงานดังกล่าวออกในระหว่างscrollAnimationSpecการเลิกใช้งาน ซึ่งทำให้กรณีการใช้งานใช้งานไม่ได้ (I1436a, b/403301605) - ลดการสั่นไหวแล้ว
LazyLayout(If5db4),LazyLayoutPrefetchStateและวิธีการกำหนดเวลาschedulePrecompositionและschedulePrecompositionAndPremeasure(I4362f, b/252853717) และLazyLayoutItemProvider(Icce09,b/261565751) - อนุญาตให้ฟีเจอร์เขียนทริกเกอร์
ViewTreeObserver.OnScrollChangedลักษณะการทำงานนี้จะเปิดตัวภายใต้ฟีเจอร์isOnScrollChangedCallbackEnabledนอกจากนี้ เรายังได้เปิดตัวฟังก์ชันส่วนขยายของDelegatableNode dispatchOnScrollChangedด้วย (I34b9d, b/238109286) - เปิดตัว
Modifier.scrollable2D,Scrollable2DStateและ API ที่แสดงร่วมสำหรับการสร้างสถานะ นอกจากนี้ ยังได้เปิดตัวฟังก์ชันส่วนขยายการเลื่อนทั่วไปด้วย (Ic61c8, b/214410040) PrefetchSchedulerและการปรับแต่งได้ถูกเลิกใช้งานแล้วเพื่อรองรับการใช้งานภายในที่ทำงานทั้งหมดโดยอัตโนมัติ (I3a9a6, b/420551535)TextFieldState.edit { }จะไม่ล้างประวัติการเลิกทำอีกต่อไป แต่จะสร้างรายการเลิกทำแบบสแตนด์อโลนแทน หากต้องการให้ล้างสแต็กเลิกทำหลังจากเรียกใช้การแก้ไข โปรดใช้TextFieldState.undoState.clearHistory()(I12c14)- ตอนนี้ทั้งเมนูตามบริบทและแถบเครื่องมือการเลือกรองรับรายการอัจฉริยะ (การเลือกอัจฉริยะ) แล้ว
- เพิ่มข้อความที่มีสไตล์
OutputTransformationเพื่ออนุญาตให้จัดรูปแบบเอาต์พุตของTextFieldโดยใช้การโอเวอร์โหลดstate TextField: รองรับเมนูบริบท (เมนูคลิกขวา)- ตอนนี้ข้อความที่คัดลอกจาก Text Composable หลายรายการใน
SelectionContainerจะมีตัวคั่นบรรทัด \n เพิ่มระหว่างข้อความที่มาจาก Text Composable ที่แยกกัน (I25332, b/285036739) - เปิดตัว API สำหรับสร้างรายการหัวข้อย่อยที่กำหนดเองผ่าน
AnnotatedString(I1d066, b/383269496, b/139326648) stateการโอเวอร์โหลดของBasicTextFieldจะทำให้เคอร์เซอร์เลื่อนเข้าสู่มุมมองเมื่อขนาดของเคอร์เซอร์เปลี่ยนแปลง (I0eb41, b/406187741)- การเปลี่ยนแปลงที่ทำให้เกิดข้อขัดข้อง: ตอนนี้โหนดตัวแก้ไข
backgroundและborderจะใช้SemanticsModifierNodeแล้ว ซึ่งอาจส่งผลให้มีการเพิ่มSemanticsNodesใหม่ลงในแผนผังความหมาย และทำให้การทดสอบที่ตั้งสมมติฐานเกี่ยวกับโครงสร้างแผนผังความหมายล้มเหลว เช่น การทดสอบที่ใช้onChild,onParent,onSiblingและวิธีอื่นๆ ที่คล้ายกันเพื่อยืนยันอาจล้มเหลวหากมีการเพิ่มโหนดใหม่ระหว่างโหนดปัจจุบันและโหนดเป้าหมาย วิธีที่แนะนำในการแก้ไขข้อผิดพลาดเหล่านี้คือการเพิ่มtestTagลงในโหนดเป้าหมายโดยตรง อีกวิธีหนึ่งคือการใช้ตัวเทียบที่ยืดหยุ่นกว่า เช่นonNode(hasAnyAncestor(hasText("ancestor")) and hasText("target"))(I638b5)
เวอร์ชัน 1.9.0-rc01
30 กรกฎาคม 2025
androidx.compose.foundation:foundation-*:1.9.0-rc01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.9.0-rc01 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
TextFieldState.edit { }จะไม่ล้างประวัติการเลิกทำอีกต่อไป แต่จะสร้างรายการเลิกทำแบบสแตนด์อโลนแทน หากต้องการให้ล้างสแต็กเลิกทำหลังจากการเรียกใช้editโปรดใช้TextFieldState.undoState.clearHistory()(I12c14)
เวอร์ชัน 1.9.0-beta03
16 กรกฎาคม 2025
androidx.compose.foundation:foundation-*:1.9.0-beta03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.9.0-beta03 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องที่ทำให้เกิดการถดถอยซึ่งทําให้ลักษณะการทํางานของส่วนหัวแบบติดหนึบในกริดแบบ Lazy โหลดไม่ถูกต้องเมื่อมีการระบุเนื้อหาส่วนหัวที่ว่างเปล่า (e3e3400)
เวอร์ชัน 1.9.0-beta02
2 กรกฎาคม 2025
androidx.compose.foundation:foundation-*:1.9.0-beta02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.9.0-beta02 มีการเปลี่ยนแปลงเหล่านี้
ฟีเจอร์ใหม่
- รองรับรายการอัจฉริยะในเมนูตามบริบทและแถบเครื่องมือการเลือก
การเปลี่ยนแปลง API
- แก้ไขข้อบกพร่องที่แป้นพิมพ์ฮาร์ดแวร์หรือรีโมตทีวีบางรุ่นไม่สามารถย้ายเคอร์เซอร์ใน
TextFieldsใหม่โดยใช้ปุ่มทิศทาง แต่กลับเปลี่ยนโฟกัสไปยัง Composable อื่นแทน เพิ่มComposeFoundationFlag.isTextFieldDpadNavigationFixEnabledเพื่อให้ปิดใช้การแก้ไขนี้ได้ชั่วคราวหากทำให้เกิดลักษณะการทำงานที่ไม่พึงประสงค์ในลักษณะที่กู้คืนไม่ได้ (Ie1922)
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาที่ส่วนหัวแบบติดหนึบไม่ติดหากมีรายการที่ปักหมุด (I9198d, b/385006133)
TextObfuscationMode.RevealLastTypedตอนนี้จะทำตามการตั้งค่าระบบ "TEXT_SHOW_PASSWORD" แล้ว (I41c0c)- แก้ไขข้อบกพร่องที่
BasicTextFieldแสดงคำเตือน "วางจากคลิปบอร์ด" อย่างไม่ถูกต้องเมื่อแถบเครื่องมือข้อความเปิดขึ้นเป็นครั้งแรก (I5fda2)
เวอร์ชัน 1.9.0-beta01
18 มิถุนายน 2025
androidx.compose.foundation:foundation-*:1.9.0-beta01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.9.0-beta01 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ
- ตอนนี้โหนดตัวแก้ไข
backgroundและborderได้ติดตั้งใช้งานSemanticsModifierNodeแล้ว ซึ่งอาจส่งผลให้มีการเพิ่มSemanticsNodesใหม่ลงในแผนผังความหมาย และทำให้การทดสอบที่ตั้งสมมติฐานเกี่ยวกับโครงสร้างแผนผังความหมายล้มเหลว เช่น การทดสอบที่ใช้onChild,onParent,onSiblingและวิธีอื่นๆ ที่คล้ายกันเพื่อยืนยันอาจล้มเหลวหากมีการเพิ่มโหนดใหม่ระหว่างโหนดปัจจุบันและโหนดเป้าหมาย วิธีที่แนะนำในการแก้ไขข้อผิดพลาดเหล่านี้คือการเพิ่มtestTagลงในโหนดเป้าหมายโดยตรง อีกวิธีหนึ่งคือการใช้ตัวเทียบที่ยืดหยุ่นกว่า เช่นonNode(hasAnyAncestor(hasText("ancestor")) and hasText("target"))(I638b5)
การเปลี่ยนแปลง API
- เปลี่ยนชื่อ
Modifier.addTextContextMenuComponentsเป็นappendTextContextMenuComponents(I4c43f) - นำฟังก์ชัน
AnnotatedOutputTransformationออกและย้ายฟังก์ชันaddStyleไปยังTextFieldBufferaddStyleยังคงรับสายได้จากOutputTransformationเท่านั้น (I9930a, b/417991824) - ระบบจะเขียน Clickable ใหม่เพื่อไม่ให้ใช้การป้อนข้อมูลพอยน์เตอร์ที่ระงับเป็นการเพิ่มประสิทธิภาพ ฟีเจอร์นี้เปิดใช้โดยแฟล็ก คุณปิดใช้ได้หากพบข้อบกพร่องในการติดตั้งใช้งานใหม่ -
ComposeFoundationFlags.isNonSuspendingPointerInputInClickableEnabled(I85b65) - เปิดตัว
isFlingCancellationWithNestedScrollFixEnabledเพื่อแก้ไขปัญหาการแพร่กระจายการปัดในการเลื่อนที่ซ้อนกัน ใน CL นี้ เราจะกู้คืนลักษณะการทำงานของการปัดที่ต่อเนื่องซึ่งนำออกไปใน aosp/3260391 เราจะยังคงยกเลิกภาพเคลื่อนไหวการปัดในกรณีที่นำองค์ประกอบของเด็กออก (I467f4, b/405910180, b/419049142, b/416784125) WindowInsetsRulers: เปลี่ยนrulersIgnoringVisibilityเป็นสูงสุด เปลี่ยนgetDisplayCutoutBounds()ให้เป็นฟังก์ชันส่วนขยายของPlacementScopeWindowInsetsAnimationPropertiesเปลี่ยนเป็นWindowInsetsAnimationและgetAnimationProperties()เปลี่ยนเป็นgetAnimation()แล้ว (I3816f)- เปลี่ยน
InsetsRulersให้เป็นโค้ดทั่วไปที่มีชื่อWindowInsetsRulersปรับ API ให้เรียบง่ายขึ้นเพื่อให้ขอบทั้งหมดเป็นWindowInsetsRulersแยกพร็อพเพอร์ตี้ภาพเคลื่อนไหวที่ไม่ใช่ไม้บรรทัดไปยังคลาสAnimationPropertiesWindowInsetsRulers.innermostOf()ใช้เพื่อผสานWindowInsetsRulersหลายรายการได้ (I2f0c6, b/415012444)
การแก้ไขข้อบกพร่อง
- เพิ่มการใช้งาน
scrollAnimationSpecในContentInViewNodeอีกครั้ง เราได้นำลักษณะการทำงานดังกล่าวออกในระหว่างscrollAnimationSpecการเลิกใช้งาน ซึ่งทำให้กรณีการใช้งานใช้งานไม่ได้ (I1436a, b/403301605)
เวอร์ชัน 1.9.0-alpha04
4 มิถุนายน 2025
androidx.compose.foundation:foundation-*:1.9.0-alpha04 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.9.0-alpha04 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
PrefetchSchedulerและการปรับแต่งได้ถูกเลิกใช้งานแล้วเพื่อรองรับการใช้งานภายในที่ทำงานทั้งหมดโดยอัตโนมัติ (I3a9a6, b/420551535)- อัปเดต
Scrollable2DStateให้ใช้ออฟเซ็ตในเมธอดcanScrollแทนมุม (I28694, b/417268474) - แทนที่
addAnnotationในAnnotatedOutputTransformationด้วยaddStyle(I91c6f, b/417991824) - ลดการสั่นไหวแล้ว
LazyLayout(If5db4) - ปรับปรุงตัวสร้างที่ว่างเปล่าสำหรับ
LazyLayoutPrefetchStateและวิธีการกำหนดเวลาschedulePrecompositionและschedulePrecompositionAndPremeasure(I4362f, b/252853717) - เปิดตัว
ProcessTextKeyใน Android ที่ใช้สำหรับรายการเมนูตามบริบทซึ่งเพิ่มสำหรับการดำเนินการตามความตั้งใจของPROCESS_TEXT(If0ac4) - ทำให้ API เมนูตามบริบทเป็นแบบสาธารณะ เปิดเผย
Modifier.addTextContextMenuComponentsและModifier.filterTextContextMenuComponentsเพื่อเพิ่มและนำรายการในเมนูตามบริบทออก นอกจากนี้ เรายังได้เปิดตัว API พื้นฐานต่อไปนี้เพื่อให้ผู้ใช้สร้างเมนูตามบริบทที่ปรับแต่งได้TextContextMenuProviderTextContextMenuDataProviderTextContextMenuDataTextContextMenuComponentLocalTextContextMenuDropdownProviderLocalTextContextMenuToolbarProvider(I1b7b0)
- ทำให้
LazyLayoutItemProviderเสถียร (Icce09, b/261565751) - เปิดตัวฟีเจอร์การเลือกอัจฉริยะของ Android ที่เปิด/ปิดใช้ได้ผ่าน
ComposeFoundationFlags.isSmartSelectionEnabledนอกจากนี้ ยังมีcompositionLocalLocalTextClassifierCoroutineContextแบบคงที่ที่ใช้ระบุCoroutineContextซึ่งจะเปิดตัวงานTextClassificationได้ด้วย (I1dbaa, b/139321320)
เวอร์ชัน 1.9.0-alpha03
20 พฤษภาคม 2025
androidx.compose.foundation:foundation-*:1.9.0-alpha03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.9.0-alpha03 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม
AnnotatedOutputTransformationซึ่งเป็นวิธีเพิ่มคำอธิบายประกอบในTextFieldก่อนการแสดงผล (Ibc6f0, b/389978748) - เปิดตัว
LazyLayoutMeasurePolicyและทำให้LazyLayoutMeasureScopeเสถียร (I8c5df, b/252853717) - ตอนนี้
BasicSecureTextFieldจะยก ScrollState ของBasicTextFieldภายใน (I6e576) - เราได้เปิดตัวตัวแก้ไข
Modifier.onFirstVisibleและModifier.onVisibilityChangedซึ่งเป็นตัวแก้ไขระดับสูงที่สร้างขึ้นบนModifier.onLayoutRectChangedตัวแก้ไขเหล่านี้สร้างขึ้นมาเพื่อจัดการข้อกำหนดในการใช้งานทั่วไปจำนวนมากโดยเฉพาะ เช่น การบันทึกการแสดงผล การเล่นวิดีโออัตโนมัติ เป็นต้น ตัวแก้ไขเหล่านี้สร้างขึ้นโดยคำนึงถึงประสิทธิภาพเพื่อให้สามารถใช้ในสถานการณ์ที่สำคัญซึ่งอิงตามรายการได้โดยไม่ต้องเสี่ยงต่อการลดประสิทธิภาพการเลื่อน นอกจาก API ตัวแก้ไขเหล่านี้แล้ว เรายังได้เพิ่ม API อื่นๆ เพื่อRelativeLayoutBoundsเพื่อรองรับ Use Case เหล่านี้ รวมถึงช่วยให้นักพัฒนาแอปสร้างตัวแก้ไขที่กำหนดเองที่คล้ายกันซึ่งเหมาะกับ Use Case ของตนได้อย่างง่ายดาย (I759b8) - เปิดตัวโอเวอร์โหลด
detectDragGesturesที่มีการควบคุมการล็อกการวางแนวและการเลื่อนด้วยนิ้ว (Iadb0d) - เปิดตัว
Modifier.scrollable2D,Scrollable2DStateและ API ที่แสดงร่วมสำหรับการสร้างสถานะ นอกจากนี้ ยังได้เปิดตัวฟังก์ชันส่วนขยายการเลื่อนทั่วไปด้วย (Ic61c8, b/214410040) - ค่าสี 64 บิตของ Compose ไม่สามารถเปรียบเทียบกับ Android ได้โดยตรง
ColorLongsเนื่องจากรหัสพื้นที่สีบางรายการไม่เป็นไปตามลำดับ เราได้เพิ่ม API ใหม่ 2 รายการ ได้แก่toColorLong()และfromColorLong()เพื่อใช้แปลงเป็นและจากพื้นที่สีของ Android (I36899)
การแก้ไขข้อบกพร่อง
- ตอนนี้ข้อความที่คัดลอกจาก Text Composable หลายรายการใน
SelectionContainerจะมีตัวคั่นบรรทัด\nเพิ่มระหว่างข้อความที่มาจาก Text Composable ที่แยกกัน (I25332, b/285036739)
เวอร์ชัน 1.9.0-alpha02
7 พฤษภาคม 2025
androidx.compose.foundation:foundation-*:1.9.0-alpha02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.9.0-alpha02 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- แก้ไขวิธีเพิ่มการเปลี่ยนแปลงอินพุตของเคอร์เซอร์ใน
VelocityTrackerในDragGestureNodeซึ่งควบคุมได้ด้วยฟีเจอร์ใหม่isOffsetPositionBeforeAddingToVelocityTrackerEnabled(Ic7992, b/292556787, b/236451818) - ทำให้
await[Vertical/Horizontal]PointerSlopOrCancellationเป็นแบบสาธารณะ (I6968b, b/298903681) AbstractComposeView.consumeWindowInsetsตอนนี้ค่าเริ่มต้นคือ falseWindowInsetsจะได้รับการปรับขนาดและตำแหน่งโดยอัตโนมัติสำหรับเด็กเมื่อตั้งค่าเป็น "เท็จ" คุณจึงไม่จำเป็นต้องตั้งค่าเริ่มต้นเป็น "จริง" อีกต่อไป ซึ่งจะแก้ไขปัญหาที่ View ขององค์ประกอบย่อยไม่ได้รับการอัปเดตWindowInsetsโดยค่าเริ่มต้น นักพัฒนาแอปสามารถเลือกไม่รับการอัปเดตได้โดยเปลี่ยนComposeFoundationLayout.isWindowInsetsDefaultPassThroughEnabledเป็น true หรือโดยการตั้งค่าAbstractComposeView.consumeWindowInsetsเป็น true ในอินสแตนซ์มุมมอง Compose ทั้งหมด (I6fa0a, b/411868840)
การมีส่วนร่วมภายนอก
- แก้ไขข้อขัดข้องของ Pager เมื่อมีค่า beyondViewportPageCount ขนาดใหญ่มาก (Idb2db)
เวอร์ชัน 1.9.0-alpha01
23 เมษายน 2025
androidx.compose.foundation:foundation-*:1.9.0-alpha01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.9.0-alpha01 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลงลักษณะการทำงาน
การตรวจสอบ Lint ที่มาพร้อมกับ Compose ต้องใช้ AGP เวอร์ชัน 8.8.2 เป็นอย่างน้อย หากอัปเกรด AGP ไม่ได้ คุณสามารถอัปเกรด Lint แยกต่างหากได้โดยใช้
android.experimental.lint.version=8.8.2(หรือเวอร์ชันที่ใหม่กว่า) ในgradle.propertiesหากต้องการเรียกใช้การตรวจสอบ Lint ของ Compose ภายใน IDE คุณต้องใช้ Android Studio Ladybug หรือเวอร์ชันที่ใหม่กว่าการเปลี่ยนแปลงที่ทำให้เกิดข้อขัดข้อง: โอเวอร์โหลด
clickable,combinedClickable,selectable,toggleableและtriStateToggleableที่ไม่มีพารามิเตอร์ Indication จะรองรับเฉพาะอินสแตนซ์IndicationNodeFactoryที่ระบุโดยใช้LocalIndicationเท่านั้น การเปลี่ยนแปลงนี้จะมีผลเมื่อคุณคอมไพล์การใช้งานตัวแก้ไขเหล่านี้อีกครั้งโดยใช้ Compose เวอร์ชันนี้ การขึ้นต่อกันแบบไบนารี / การขึ้นต่อกันแบบทรานซิทีฟจะไม่ได้รับผลกระทบ หากคุณใช้การติดตั้งใช้งานการระบุที่เลิกใช้งานแล้วกับLocalIndicationและใช้ API เหล่านี้ จะทำให้เกิดข้อขัดข้องขณะรันไทม์ การเปลี่ยนแปลงลักษณะการทำงานนี้จำเป็นต่อการปรับปรุงประสิทธิภาพ และช่วยให้ฟังก์ชันที่ประกอบกันได้ซึ่งใช้ตัวแก้ไขเหล่านี้ข้ามระหว่างการประกอบใหม่ได้ คุณใช้ComposeFoundationFlags.isNonComposedClickableEnabled=falseเพื่อเลือกไม่ใช้การเปลี่ยนแปลงลักษณะการทำงานนี้ชั่วคราวได้ เพื่อเปิดใช้การอัปเกรด Compose โดยไม่ถูกบล็อกในการย้ายข้อมูลนี้ เราจะนำฟีเจอร์นี้ออกหลังจากเปิดตัวเวอร์ชันเสถียร 1 เวอร์ชัน หากต้องการแก้ไข ให้ย้ายข้อมูลการติดตั้งใช้งานการระบุที่เลิกใช้งานแล้วเพื่อใช้IndicationNodeFactoryแทน นอกจากนี้ คุณยังใช้การโอเวอร์โหลดกับพารามิเตอร์ Indication ที่ชัดเจนได้ด้วย การโอเวอร์โหลดเหล่านี้จะยังคงรองรับอินสแตนซ์ Indication ที่ไม่ใช่IndicationNodeFactoryต่อไป แม้ว่าเราจะไม่แนะนำให้ใช้ด้วยเหตุผลด้านประสิทธิภาพก็ตาม (I6bcdc, b/316914333)
การเปลี่ยนแปลง API
- เปิดตัว API สำหรับสร้างรายการหัวข้อย่อยที่กำหนดเองผ่าน
AnnotatedString(I1d066, b/383269496, b/139326648) - อนุญาตให้ฟีเจอร์เขียนทริกเกอร์
ViewTreeObserver.OnScrollChangedลักษณะการทำงานนี้จะเปิดตัวภายใต้ฟีเจอร์isOnScrollChangedCallbackEnabledนอกจากนี้ เรายังได้เปิดตัวฟังก์ชันส่วนขยายของDelegatableNode dispatchOnScrollChangedด้วย (I34b9d, b/238109286) - โปรเจ็กต์ที่เผยแพร่ด้วย Kotlin 2.0 ต้องใช้ KGP 2.0.0 ขึ้นไป (Idb6b5)
- เพิ่มการรองรับการตรวจสอบ Lint สำหรับ
TextFieldStateเพื่อให้มั่นใจว่าระบบจะจดจำไว้ในการแต่ง ลองใช้rememberTextFieldStateแทน (I53d74) - เพิ่มการรองรับการตรวจสอบ Lint สำหรับ
FocusRequesterเพื่อให้แน่ใจว่าระบบจะจดจำไว้ในการเขียน (I6bf91) - เพิ่มการรองรับการตรวจสอบ Lint สำหรับ
BringIntoViewRequesterเพื่อให้มั่นใจว่าระบบจะจดจำไว้ในการแต่ง (Ibfba6) - เปิดตัวขอบเขตสำหรับ
schedulePrefetchในกลยุทธ์ตารางกริดและรายการเพื่อให้สอดคล้องกับLazyListPrefetchStateที่มีความสามารถในการให้ข้อมูลขนาดและดัชนี (Iad80c) - การเปลี่ยนแปลงที่ทำให้เกิดข้อขัดข้อง: โอเวอร์โหลด
clickable,combinedClickable,selectable,toggleableและtriStateToggleableที่ไม่มีพารามิเตอร์ Indication จะรองรับเฉพาะอินสแตนซ์IndicationNodeFactoryที่ระบุโดยใช้LocalIndicationเท่านั้น การเปลี่ยนแปลงนี้จะมีผลเมื่อคุณคอมไพล์การใช้งานตัวแก้ไขเหล่านี้อีกครั้งโดยใช้ Compose เวอร์ชันนี้ การขึ้นต่อกันแบบไบนารี / การขึ้นต่อกันแบบทรานซิทีฟจะไม่ได้รับผลกระทบ หากคุณใช้การติดตั้งใช้งานการระบุที่เลิกใช้งานแล้วกับLocalIndicationและใช้ API เหล่านี้ จะทำให้เกิดข้อขัดข้องขณะรันไทม์ การเปลี่ยนแปลงลักษณะการทำงานนี้จำเป็นต่อการปรับปรุงประสิทธิภาพ และช่วยให้ฟังก์ชันที่ประกอบกันได้ซึ่งใช้ตัวแก้ไขเหล่านี้ข้ามระหว่างการประกอบใหม่ได้ คุณใช้ComposeFoundationFlags.isNonComposedClickableEnabled=falseเพื่อเลือกไม่ใช้การเปลี่ยนแปลงลักษณะการทำงานนี้ชั่วคราวได้ เพื่อเปิดใช้การอัปเกรด Compose โดยไม่ถูกบล็อกในการย้ายข้อมูลนี้ เราจะนำฟีเจอร์นี้ออกหลังจากเปิดตัวเวอร์ชันเสถียร 1 เวอร์ชัน หากต้องการแก้ไข ให้ย้ายข้อมูลการติดตั้งใช้งานการระบุที่เลิกใช้งานแล้วเพื่อใช้IndicationNodeFactoryแทน นอกจากนี้ คุณยังใช้การโอเวอร์โหลดกับพารามิเตอร์ Indication ที่ชัดเจนได้ด้วย การโอเวอร์โหลดเหล่านี้จะยังคงรองรับอินสแตนซ์ Indication ที่ไม่ใช่IndicationNodeFactoryต่อไป แม้ว่าเราจะไม่แนะนำให้ใช้ด้วยเหตุผลด้านประสิทธิภาพก็ตาม (I6bcdc, b/316914333) - เพิ่ม Flag สำหรับควบคุมลักษณะการทำงานของการดึงข้อมูลล่วงหน้าแบบซ้อนอัตโนมัติ:
isAutomaticNestedPrefetchEnabled(I8d448) - แนะนำการโอเวอร์โหลดสำหรับ
LazyGridStateและrememberLazyGridStateที่ใช้LazyLayoutCacheWindow(I51151) - เพิ่มไม้บรรทัดสำหรับระยะขอบหน้าต่าง เพิ่ม
DerivedRulerเพื่ออนุญาตให้คำนวณไม้บรรทัดจากไม้บรรทัดอื่น แก้ไขPlacmentScopeเพื่อใช้ความหนาแน่น (I658bc, b/359260964) - เพิ่มฟังก์ชันโรงงาน
WindowInsets()ที่ไม่มีอาร์กิวเมนต์เพื่อสร้างWindowInsetsที่ว่างเปล่าได้อย่างง่ายดาย (I65f62, b/395311689) - เพิ่ม
PaddingValues.ZeroสำหรับPaddingValuesที่ว่างเปล่า (If193e, b/386255688)
การแก้ไขข้อบกพร่อง
stateการโอเวอร์โหลดของBasicTextFieldจะทำให้เคอร์เซอร์เลื่อนเข้าสู่มุมมองเมื่อขนาดของเคอร์เซอร์เปลี่ยนแปลง (I0eb41, b/406187741)- อัปเดต API
onVisibleItemsUpdatedในLazyListPrefetchStrategyและLazyGridPrefetchStrategyเพื่อแจ้งสถานะเริ่มต้น (If2cfa)
เวอร์ชัน 1.8
เวอร์ชัน 1.8.3
18 มิถุนายน 2025
androidx.compose.foundation:foundation-*:1.8.3 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.3 มีการเปลี่ยนแปลงเหล่านี้
เวอร์ชัน 1.8.2
20 พฤษภาคม 2025
androidx.compose.foundation:foundation-*:1.8.2 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.2 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขไม่ให้การคำนวณจำนวนรายการที่จะโหลดสำหรับการค้นหาโฟกัสทำให้เกิดการหารด้วย 0 ใช้การตรวจสอบกับเลย์เอาต์ทั้งหมดที่ใช้
LazyLayoutBeyondBoundsState(8e6dc8)
เวอร์ชัน 1.8.1
7 พฤษภาคม 2025
androidx.compose.foundation:foundation-*:1.8.1 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.1 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องใน
BasicTextและTextAutoSizeที่การใช้TextOverflow.Ellipsizeจะทำให้ข้อความมีขนาดเล็กกว่าที่ควร (I1e1d8, b/396582066) - แก้ไขข้อบกพร่องใน
BasicTextFieldที่ทำให้เกิดข้อขัดข้องอื่นๆ เมื่อTextFieldDecoratorข้ามการเรียกinnerTextField(I2638c), b/308398612 - แก้ไขข้อบกพร่องใน
TextFieldที่ทำให้แถบเครื่องมือข้อความและแฮนเดิลการเลือกหายไปโดยสมบูรณ์เมื่อเปลี่ยนอินสแตนซ์TextFieldState(I8068a), b/390477786 - แก้ไขข้อบกพร่องใน
BasicTextซึ่งการเปลี่ยนข้อจำกัดความกว้างขั้นต่ำไม่ได้อัปเดตตำแหน่งของข้อความเมื่อตั้งค่าtextAlignเป็นค่าที่ไม่ใช่ค่าเริ่มต้น (I77a96), b/406305552
เวอร์ชัน 1.8.0
23 เมษายน 2025
androidx.compose.foundation:foundation-*:1.8.0 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0 มีการเปลี่ยนแปลงเหล่านี้
เวอร์ชัน 1.8.0-rc03
9 เมษายน 2025
androidx.compose.foundation:foundation-*:1.8.0-rc03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-rc03 มีการคอมมิตเหล่านี้
เวอร์ชัน 1.8.0-rc02
26 มีนาคม 2025
androidx.compose.foundation:foundation-*:1.8.0-rc02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-rc02 มีการคอมมิตเหล่านี้
เวอร์ชัน 1.8.0-rc01
12 มีนาคม 2025
androidx.compose.foundation:foundation-*:1.8.0-rc01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-rc01 มีการเปลี่ยนแปลงเหล่านี้
เวอร์ชัน 1.8.0-beta03
26 กุมภาพันธ์ 2025
androidx.compose.foundation:foundation-*:1.8.0-beta03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-beta03 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- เพิ่มพร็อพเพอร์ตี้ความหมายใหม่
InputTextที่บันทึกค่าของช่องข้อความก่อนที่จะใช้การแปลงเอาต์พุต (Iae46a, b/395911609, b/176949051) - นำการโอเวอร์โหลด
AutoSizeที่เลิกใช้งานแล้วออก โปรดใช้TextAutoSizeAPI ที่มีฟังก์ชันเดียวกัน (I2c90f) - แก้ไขปัญหาการแคชด้วย
TextAutoSizeซึ่งการส่งเลย์เอาต์ครั้งที่ 2 ที่มีข้อจำกัดเดียวกันอาจทำให้ใช้ขนาดแบบอักษรที่ใหญ่เป็นอันดับ 2 แทนที่จะเป็นขนาดที่ใหญ่ที่สุด (Id367f)
เวอร์ชัน 1.8.0-beta02
12 กุมภาพันธ์ 2025
androidx.compose.foundation:foundation-*:1.8.0-beta02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-beta02 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาที่การใช้งานการเลื่อนเกินโดยใช้
LayoutModifierNodeจะทํางานไม่ถูกต้องภายในคอนเทนเนอร์ที่เลื่อนได้
เวอร์ชัน 1.8.0-beta01
29 มกราคม 2025
androidx.compose.foundation:foundation-*:1.8.0-beta01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-beta01 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- นำ
SemanticsNodeInteraction.semanticsId()ออกแล้ว โปรดใช้SemanticsNodeInteraction.fetchSemanticsNode().idแทน (Ie397a) - เขียน
requestAutofillAPI ใหม่ให้อยู่นอกเครื่องมือจัดการการป้อนข้อความอัตโนมัติ (Id1929) ContextualFlowRowและContextualFlowColumnได้รับการทำเครื่องหมายว่าเลิกใช้งานแล้ว คอมโพเนนต์เวอร์ชันทดลองนี้เปิดตัวในเวอร์ชัน 1.7 และยังไม่เสถียร รวมถึงการใช้งานยังไม่เป็นที่น่าพอใจ ในอนาคต เราอาจมีคอมโพเนนต์ที่แก้กรณีการใช้งานที่คอมโพเนนต์นี้มีไว้เพื่อแก้ปัญหาFlowRowและFlowColumnมีการโอเวอร์โหลดทดลองที่เปิดตัวในเวอร์ชัน 1.7 ซึ่งมีพารามิเตอร์overflowเราเลิกใช้งานพารามิเตอร์นี้แล้ว และคุณสามารถใช้การโอเวอร์โหลดที่ไม่มีพารามิเตอร์นี้แทนได้ ลักษณะการทำงาน "overflow" เริ่มต้นสำหรับการโอเวอร์โหลดเหล่านี้จะเป็น "Clip" เหมือนกับที่เคยเป็นมาตั้งแต่เปิดตัว- กรณีการใช้งานจำนวนมากสำหรับ
ContextualFlowRowสามารถทำได้โดยใช้FlowRowแต่เราทราบดีว่าไม่ใช่ทุกกรณีContextualFlowRowสามารถนำไปใช้ในพื้นที่ผู้ใช้ได้อย่างสมบูรณ์ และคุณสามารถพยายามคัดลอกการติดตั้งใช้งานและปรับเปลี่ยนได้หากต้องการ ในอนาคต เราหวังว่าจะแก้ปัญหา Use Case เหล่านี้ได้ด้วยวิธีอื่น (Ibafec)
การแก้ไขข้อบกพร่อง
- แก้ไขเลย์เอาต์ข้อความที่มีจุดไข่ปลาซึ่งบางครั้งแปลไม่ถูกต้องระหว่างภาพเคลื่อนไหว ดูข้อมูลเพิ่มเติมได้ที่ b/389707025 (Ie55b1, b/389707025)
- แก้ไขข้อบกพร่องใน
BasicTextที่มีการตั้งค่าTextAutoSizeและmaxLinesเป็น 1 (Ic0450, b/376834366) - ตอนนี้ความสูงขั้นต่ำของข้อความจะพิจารณาพารามิเตอร์
minLinesแล้ว ซึ่งหมายความว่าความสูงขั้นต่ำขององค์ประกอบภายในที่รายงานจะไม่น้อยกว่าความสูงที่จำเป็นเพื่อให้เป็นไปตามพารามิเตอร์minLines(I225f9, b/388299762)
เวอร์ชัน 1.8.0-alpha08
15 มกราคม 2025
androidx.compose.foundation:foundation-*:1.8.0-alpha08 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-alpha08 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- AutoSize: เปลี่ยนชื่อ
AutoSizeเป็นTextAutoSizeและเผยแพร่ API ที่ช่วยให้สร้างการติดตั้งใช้งานTextAutoSizeที่กำหนดเองได้ ดูตัวอย่างการใช้งานการปรับขนาดข้อความอัตโนมัติที่กำหนดเองได้ที่TextAutoSizeSample(I85756) - ย้ายฟีเจอร์แฟล็ก
DetectTapGesturesEnableNewDispatchingBehaviorไปยังComposeFoundationFlagsและเปลี่ยนชื่อเป็นisDetectTapGesturesImmediateCoroutineDispatchEnabledเราเลิกใช้งานฟีเจอร์การแจ้งว่าไม่เหมาะสมแบบเดิมแล้ว และจะเปลี่ยนไปใช้ComposeFoundationFlags.isDetectTapGesturesImmediateCoroutineDispatchEnabledแทน (I62932)
การแก้ไขข้อบกพร่อง
- เปิดใช้
DetectTapGesturesEnableNewDispatchingBehaviorโดยค่าเริ่มต้น ตอนนี้ API ของTapGestureDetectorใช้ลักษณะการทำงานของการส่งแบบใหม่ (การส่งทันที) โดยค่าเริ่มต้น (I9f2bc, b/369648479) - แก้ไขตัวแก้ไข
requiredWidth/Height/Sizeเพื่อจัดการขนาดโดยธรรมชาติอย่างถูกต้อง (Ie3d7d, b/368113212)
การมีส่วนร่วมภายนอก
BasicTooltipที่ใช้กันทั่วไปใน Foundation และBasicTooltip/Tooltipใน Material3 (Ifc2e6)- เพิ่มอินเทอร์เฟซคลิปบอร์ดใหม่และองค์ประกอบภายในสำหรับอินเทอร์เฟซดังกล่าว (I80809)
เวอร์ชัน 1.8.0-alpha07
11 ธันวาคม 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha07 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-alpha07 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ลบ
ComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabledที่ช่วยย้อนการนำgraphicsLayerภายในออกจากBasicTextหากคุณใช้ฟีเจอร์นี้ โปรดแจ้งเหตุผลให้เราทราบโดยการรายงานข้อบกพร่อง นอกจากนี้ คุณยังส่งModifier.graphicsLayer()ไปยังการเรียกใช้BasicTextเพื่อให้ได้ลักษณะการทำงานแบบเดิมได้ด้วย (Id9f90) - เพิ่มการติดตั้งใช้งานเริ่มต้นสำหรับ
stickyHeaderDSL ใหม่ (I68986) - มี
LocalAutofillHighlightColorองค์ประกอบการใช้งานในพื้นที่เป็นประเภทสี (I0e05b) - เปลี่ยนชื่อ
OverscrollEffect#withoutDrawingเป็นOverscrollEffect#withoutVisualEffectแล้ว (I1a154)
การแก้ไขข้อบกพร่อง
- การแก้ไขเพิ่มเติมสำหรับปัญหาในการคำนวณเป้าหมายของ
AnchoredDraggableซึ่งอาจทำให้มีการชำระเงินที่จุดยึดที่ไม่ถูกต้องสำหรับการปัดบางรายการ (I23b87, b/367660226)
การมีส่วนร่วมภายนอก
- เพิ่ม
BringIntoViewResponderModifierNodeลงใน UI ซึ่งเป็นวิธีใหม่ในการใช้ฟังก์ชันการนำเข้าสู่มุมมอง รวมถึงอนุญาตให้ใช้ในระดับแพลตฟอร์ม (Ia6dd8) - เรากำลังเปลี่ยนแปลงวิธีวาดเคอร์เซอร์เล็กน้อย คุณใช้
LocalCursorBlinkEnabledเพื่อปิดใช้การวาดเคอร์เซอร์ในการทดสอบได้ (I4c697)
เวอร์ชัน 1.8.0-alpha06
13 พฤศจิกายน 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha06 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-alpha06 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มตัวปรับแต่ง
stylusHoverIcon(Iff20a, b/331289114) confirmValueChangeของAnchoredDraggableStateที่เลิกใช้งานแล้ว แทนที่จะยับยั้งการเปลี่ยนแปลงสถานะ จุดยึดที่ไม่ได้รับอนุญาตไม่ควรอยู่ในชุดจุดยึดที่ใช้งานอยู่ และควรใช้OverscrollEffectเพื่อระบุว่าการดำเนินการที่ขอไม่พร้อมใช้งาน (Ia717f)- เปลี่ยนเครื่องมือจัดการการป้อนข้อความอัตโนมัติให้เป็นอินเทอร์เฟซ (I84914, b/376080755)
- เพิ่ม API
OverscrollEffect#withoutDrawingและOverscrollEffect#withoutEventHandling- API เหล่านี้สร้างอินสแตนซ์ที่ห่อหุ้มของเอฟเฟกต์การเลื่อนเกินที่ระบุซึ่งไม่ได้วาด / จัดการเหตุการณ์ตามลำดับ ซึ่งช่วยให้แสดงผลการเลื่อนเกินในคอมโพเนนต์แยกต่างหากจากคอมโพเนนต์ที่ส่งเหตุการณ์ได้ เช่น การปิดใช้การวาดการเลื่อนเกินในรายการที่โหลดแบบ Lazy แล้ววาดการเลื่อนเกินแยกกันที่ด้านบน / ที่อื่น (Idbb3d, b/266550551, b/204650733, b/255554340, b/229537244) - เพิ่มการรองรับการป้อนข้อความอัตโนมัติในแถบเครื่องมือข้อความ (Ie6a4c)
- เลิกใช้งาน
OverscrollConfigurationและLocalOverscrollConfigurationและเพิ่มrememberPlatformOverscrollFactoryเพื่อสร้างอินสแตนซ์ของ / ปรับแต่งพารามิเตอร์ของการใช้งานการเลื่อนเกินเริ่มต้น หากต้องการปิดใช้การเลื่อนเกิน ให้ใช้LocalOverscrollFactory provides nullแทนLocalOverscrollConfiguration provides nullหากต้องการเปลี่ยนสีเรืองแสง / ระยะขอบ ให้ใช้LocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding)แทนLocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding)(Ie71f9, b/255554340, b/234451516) - เปลี่ยนพร็อพเพอร์ตี้
effectModifierในOverscrollEffectเป็นnode: DelegatableNodeเพื่อให้สอดคล้องกับ API อื่นๆ (Ic0b46, b/255554340) - นำ
GlobalAssertionsAPI เวอร์ชันทดลองออกแล้ว โดยมีวัตถุประสงค์เพื่อใช้ในการเรียกใช้การตรวจสอบการช่วยเหลือพิเศษ โปรดดูenableAccessibilityChecks()เพื่อวัตถุประสงค์ดังกล่าวแทน (I59322)
เวอร์ชัน 1.8.0-alpha05
30 ตุลาคม 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha05 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-alpha05 มีการเปลี่ยนแปลงเหล่านี้
ฟีเจอร์ใหม่
- รองรับการปรับขนาดข้อความอัตโนมัติ ส่งอินสแตนซ์
AutoSize(เช่นAutoSize.StepBased) ไปยัง Composable ของข้อความที่คุณชื่นชอบ (เช่นBasicText) แล้วดูว่าข้อความปรับขนาดให้พอดีกับพื้นที่ที่มีอยู่ได้อย่างไร (Ice7e0, b/139320827) - เพิ่ม API
OverscrollFactoryและLocalOverscrollFactoryเพื่ออนุญาตให้กำหนดค่าการเลื่อนเลยขอบเขตภายในลำดับชั้น ระบบจะใช้ค่าที่ระบุผ่านLocalOverscrollFactoryเป็นค่าเริ่มต้นเพื่อสร้างOverscrollEffectหากต้องการสร้างและจดจำเอฟเฟกต์จากค่าเริ่มต้นที่ระบุในปัจจุบัน ให้ใช้rememberOverscrollEffect()(I51ca4, b/255554340)
การเปลี่ยนแปลง API
- เปิดตัว
CompositionLocalที่ใช้เพื่อแก้ไขเฉดสีของไฮไลต์การป้อนข้อความอัตโนมัติที่สำเร็จ (I32092) - นำ
ScrollableDefaults.overscrollEffectออกแล้ว คุณควรใช้rememberOverscrollEffectแทน ซึ่งจะสร้างอินสแตนซ์ของการใช้งานการเลื่อนเกินปัจจุบันที่มาพร้อมกับLocalOverscrollFactory(I1651a, b/255554340),(b/234451516) - เปิดตัว
AutofillManagerอินเทอร์เฟซใหม่ที่ใช้ปรับแต่งเส้นทางการป้อนข้อความอัตโนมัติของผู้ใช้ได้ และisSemanticAutofillEnabledฟีเจอร์ค่าสถานะเพื่อเปิดใช้การป้อนข้อความอัตโนมัติเวอร์ชันใหม่นี้ (I9d484) - นำ
CombinedClickableNodeออก เราได้เปิดเผย API ที่อยู่ในขั้นทดลองนี้ชั่วคราวเพื่อปลดบล็อกงานด้านประสิทธิภาพ แต่ตอนนี้ไม่จำเป็นต้องใช้แล้ว แต่คุณควรใช้Modifier.combinedClickableโดยตรงเหมือนกับ API ตัวแก้ไขอื่นๆ (I4b658) - เพิ่มการโอเวอร์โหลดให้กับ
horizontalScroll,verticalScroll,LazyColumn,LazyRow,LazyHorizontalGrid,LazyVerticalGrid,LazyHorizontalStaggeredGrid,LazyVerticalStaggeredGrid,HorizontalPagerและVerticalPagerพร้อมรองรับการระบุOverscrollEffectที่กำหนดเองOverscrollEffectที่ระบุจะได้รับเหตุการณ์และแสดงผลภายในขอบเขตของคอมโพเนนต์เหล่านี้ โปรดทราบว่าระบบไม่รองรับการวาดOverscrollEffectเดียวกัน 2 ครั้ง คุณจึงวาดOverscrollEffectเดียวกันที่ระบุไว้ในคอมโพเนนต์ใดคอมโพเนนต์หนึ่งเหล่านี้แยกกันด้วยModifier.overscrollไม่ได้ กรณีการใช้งานการวาดการเลื่อนเกินขอบเขตของคอมโพเนนต์เหล่านี้จะได้รับการแก้ไขแยกกันในอนาคต (I2dc42, b/266550551, b/234274772, b/224572538, b/353805117)
เวอร์ชัน 1.8.0-alpha04
16 ตุลาคม 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha04 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-alpha04 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มการเรียกกลับ
DelegatableNode#onDensityChangeและDelegatableNode#onLayoutDirectionChangeเพื่ออนุญาตให้อัปเดตสถานะโหนดเมื่อมีการเปลี่ยนแปลง (I04f3e, b/340662451) - ตอนนี้ย่อหน้าและ
ParagraphIntrinsicsจะใช้รายการคำอธิบายประกอบทั้งหมดที่ใช้กับAnnotatedStringได้แล้ว ก่อนหน้านี้ใช้ได้เฉพาะรายการSpanStylesเท่านั้น (I12f80) - เปิดตัว
PointerInputModifierNode#touchBoundsExpansionซึ่งใช้เพื่อขยายขอบเขตการแตะของตัวแก้ไขอินพุตพอยน์เตอร์เดียวได้ (Iccf02, b/335339283)
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องที่ระบบไม่พิจารณาเกณฑ์ตำแหน่งที่ส่งไปยัง
AnchoredDraggableDefaults.flingBehaviorอย่างถูกต้องในบางสถานการณ์ (Ifdf0d, b/367660226) - เปิดตัวการแก้ไขสำหรับรายการที่เลื่อนได้แบบซ้อนกันซึ่งถูกนำออกจากแผนผังโหนดระหว่างการปัดที่กำลังดำเนินอยู่ ตอนนี้โหนดเหล่านี้จะยกเลิกการปัดและส่งเหตุการณ์
onPostFlingอย่างถูกต้องพร้อมกับความเร็วที่เหลือ นอกจากนี้ เรายังจะเปิดตัวฟีเจอร์NewNestedScrollFlingDispatchingEnabledเพื่อควบคุมลักษณะการทำงานในกรณีที่เกิดการถดถอย เราจะนำฟีเจอร์นี้ออกก่อนเปิดตัวเวอร์ชันเบต้า (I05c37, b/371168883) - แก้ไขข้อบกพร่องในเรื่องที่
OverscrollEffectsที่ส่งไปยังModifier.anchoredDraggableจะได้รับเดลต้า 2 มิติแทนที่จะเป็น 1 มิติ (Ie52c0)
เวอร์ชัน 1.8.0-alpha03
2 ตุลาคม 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-alpha03 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- อัปเดต Kotlin เป็นเวอร์ชัน 1.9 (I1a14c)
- เปิดตัวฟีเจอร์
DraggableAddDownEventFixEnabled(I848d5) - เปิดตัวบทบาทเชิงความหมายใหม่ที่ชื่อว่า Carousel เพื่อจำลองลักษณะการทำงานของรายการใน Pager สำหรับบริการ a11y (Id354b, b/354109776, b/239672673)
- นำตัวแก้ไข
graphicsLayerโดยนัยออกจาก ComposableBasicTextเพิ่มComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabledแฟล็กทดลองเพื่อให้เปลี่ยนกลับไปใช้ลักษณะการทำงานแบบเดิมได้ (Ie478d) - เพิ่ม
Modifier.recalculateWindowInsets()เพื่ออนุญาตให้เด็กในลำดับชั้นใช้insetsPaddingได้แม้ว่าผู้ปกครองจะจัดกลุ่มเด็กโดยไม่มีconsumeWindowInsets()ก็ตาม (I7f9e4)
การแก้ไขข้อบกพร่อง
- ใช้การเลือกด้วยท่าทางสัมผัสใน
detectDragGestures, draggables และ scrollables ตอนนี้หากองค์ประกอบที่ลากได้ของบุตรหลานยกเลิกท่าทางสัมผัส ผู้ปกครองจะมีโอกาสรับองค์ประกอบดังกล่าว ซึ่งช่วยให้การจัดการท่าทางสัมผัสต่อเนื่องและผสานรวมมากขึ้น (Ic88fe) - อัปเดตลักษณะการทำงานของการยกเลิกการปัดในรายการที่เลื่อนได้ ตอนนี้หากมีการปัดที่เลื่อนได้และปัดจนถึงขอบเขต ระบบจะส่งต่อความเร็วในการปัดไปยังรายการที่เลื่อนได้ถัดไปในเชนอย่างถูกต้องแทนที่จะปัดต่อไป (I9326a)
เวอร์ชัน 1.8.0-alpha02
18 กันยายน 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-alpha02 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
TextOverflow.StartEllipsisและTextOverflow.MiddleEllipsisพร้อมใช้งานแล้ว ซึ่งช่วยให้วางจุดไข่ปลาที่จุดเริ่มต้นหรือตรงกลางของบรรทัดข้อความบรรทัดเดียวได้ (I38913, b/185418980)
เวอร์ชัน 1.8.0-alpha01
4 กันยายน 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-alpha01 มีการเปลี่ยนแปลงเหล่านี้
เวอร์ชัน 1.7
เวอร์ชัน 1.7.8
12 กุมภาพันธ์ 2025
androidx.compose.foundation:foundation-*:1.7.8 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.8 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขข้อขัดข้องใน
BasicTextFieldที่มีการเปลี่ยนรูปแบบอินพุตเมื่อแทนที่ข้อความที่วางบางส่วน (I73702)
เวอร์ชัน 1.7.7
29 มกราคม 2025
androidx.compose.foundation:foundation-*:1.7.7 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.7 มีการคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขข้อขัดข้อง
IndexOutOfBoundด้วยคำอธิบายประกอบลิงก์ (Ic96d2) - แก้ไขการจัดองค์ประกอบใหม่แบบไม่สิ้นสุดในกรณีที่พบได้ยากบางกรณีที่มีลิงก์ (I04a03)
ข้อบกพร่องที่ทราบ
- เราพบข้อบกพร่องที่อาจทำให้ข้อความขึ้นบรรทัดใหม่โดยไม่คาดคิดในสถานการณ์ที่พบได้ยากใน Android API ระดับ 35 เราไม่สามารถแก้ไขในเวอร์ชัน 1.7 ได้ จึงจะแก้ไขในเวอร์ชัน 1.8 (b/391378120)
เวอร์ชัน 1.7.6
11 ธันวาคม 2024
androidx.compose.foundation:foundation-*:1.7.6 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.6 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาเนื้อหาข้อความในบรรทัดที่บริการการช่วยเหลือพิเศษมองไม่เห็น
- แก้ไขปัญหาที่
AndroidEmbeddedExternalSurfaceจะรีเซ็ตไม่ถูกต้องและค้างเมื่อนำไปใช้ซ้ำในรายการแบบเลื่อน
เวอร์ชัน 1.7.5
30 ตุลาคม 2024
androidx.compose.foundation:foundation-*:1.7.5 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.5 มีการคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- ตรวจสอบว่าไม่มีการคอมโพสย่อยรายการที่ปักหมุด 2 ครั้งในพื้นที่การเว้นวรรคเนื้อหา (Ic6224)
เวอร์ชัน 1.7.4
16 ตุลาคม 2024
androidx.compose.foundation:foundation-*:1.7.4 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.4 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องที่ทำให้เกิดข้อขัดข้องในช่องข้อความในบางครั้ง (I475c6, b/313010266)
- นำ
ReusableContentHostที่รูทของรายการเลย์เอาต์แบบ Lazy ออกแล้ว ซึ่งอาจเป็นสาเหตุหลักที่ทำให้เกิดข้อขัดข้อง "เรียกใช้การวัดในโหนดที่ปิดใช้งาน" (Id6e60)
เวอร์ชัน 1.7.3
2 ตุลาคม 2024
androidx.compose.foundation:foundation-*:1.7.3 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.3 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาหน่วยความจำรั่วใน
BasicTextเมื่อตั้งค่า minLines เป็นค่าที่ไม่ใช่ค่าเริ่มต้น
เวอร์ชัน 1.7.2
18 กันยายน 2024
androidx.compose.foundation:foundation-*:1.7.2 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.2 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาเกี่ยวกับองค์ประกอบที่ลากได้ซึ่งไม่มีเหตุการณ์ลง ทำให้การปัดดูช้ากว่าปกติ
เวอร์ชัน 1.7.1
10 กันยายน 2024
- ไม่มีการเปลี่ยนแปลงอาร์ติแฟกต์ Android ระบบได้นำอาร์ติแฟกต์
-desktopรายการออกแล้ว และเพิ่มอาร์ติแฟกต์-jvmStubsและ-linuxx64Stubsรายการ เป้าหมายเหล่านี้ไม่มีไว้ให้ใช้งาน แต่เป็นตัวยึดตำแหน่งเพื่อช่วยให้ Jetbrains Compose ทำงานได้
เวอร์ชัน 1.7.0
4 กันยายน 2024
androidx.compose.foundation:foundation-*:1.7.0 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.0 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 1.6.0
- ประสิทธิภาพของ
Modifier.clickable,Modifier.focusable,Modifier.indication,Modifier.scrollableและModifier.draggableได้รับการปรับปรุงอย่างมาก เราได้ทำการเปลี่ยนแปลง API ต่อไปนี้เพิ่มเติมจากการเปลี่ยนแปลงภายในเพื่อเป็นส่วนหนึ่งของความพยายามนี้- เพิ่ม Indication API ใหม่
IndicationNodeFactoryซึ่งส่งผลให้การติดตั้งใช้งานข้อบ่งชี้มีประสิทธิภาพมากขึ้นเมื่อเทียบกับrememberUpdatedInstanceAPI ก่อนหน้า (ซึ่งตอนนี้เลิกใช้งานแล้ว) ดูข้อมูลการย้ายข้อมูลได้ที่ developer.android.com - ตอนนี้
clickable/combinedClickable/selectable/toggleableยอมรับพารามิเตอร์MutableInteractionSourceที่เป็น Null ได้แล้ว หากเป็น Null และ Indication ที่ระบุเป็นIndicationNodeFactoryระบบจะสร้าง Indication แบบเลื่อนเวลาได้เฉพาะเมื่อจำเป็นเท่านั้น ซึ่งจะช่วยปรับปรุงประสิทธิภาพ หากคุณไม่ได้โฮสต์และใช้MutableInteractionSourceขอแนะนําให้ส่งค่า Null แทนการส่งremember { MutableInteractionSource() } Indication#rememberUpdatedInstanceเลิกใช้งานแล้ว ซึ่งมีโทษด้านประสิทธิภาพที่หลีกเลี่ยงไม่ได้สูง และป้องกันการเพิ่มประสิทธิภาพอื่นๆ แต่คุณควรใช้IndicationNodeFactoryAPI ใหม่แทน
- เพิ่ม Indication API ใหม่
BasicTextFieldตอนนี้การใช้TextFieldStateเสถียรแล้ว และเราขอแนะนำให้เว็บไซต์ที่ใช้การโทรทั้งหมดเริ่มย้ายข้อมูลจากBasicTextField(value, onValueChange)ไปยังBasicTextField(TextFieldState)- เราเลิกใช้งาน
ClickableTextแล้ว หากต้องการเพิ่มลิงก์ที่คลิกได้ลงในข้อความ ให้ใช้BasicTextพร้อมคำอธิบายประกอบLinkAnnotationใหม่ในAnnotatedStringLinkAnnotationช่วยให้ปรับแต่งสไตล์ตามสถานะของลิงก์ได้ (เช่น โฟกัส วางเมาส์) - ขอแนะนำ
ContextualFlowRowและEnhanced FlowRow/Columnที่มีMaxLinesและOverflowเรายินดีที่จะประกาศการปรับปรุงFlowRowและFlowColumnเวอร์ชันทดลอง ซึ่งตอนนี้มีmaxLinesและการรองรับการล้นแล้ว พร้อมกับการเปิดตัวContextualFlowRowและContextualFlowColumnการอัปเดตนี้ออกแบบมาเพื่อให้คอมโพเนนต์ที่มีประสิทธิภาพสูงสุด โดยContextualFlow*เหมาะสำหรับสินค้าจำนวนมากที่ใช้การกำหนดค่า maxLines ขนาดเล็กและปุ่มดูเพิ่มเติมแบบไดนามิก +N ส่วนFlowRowและFlowColumnเหมาะสำหรับสินค้าจำนวนน้อย ซึ่งมีสินค้าน้อยกว่า 100 รายการ สำคัญ: หากต้องการคงลักษณะการทำงานที่มีอยู่เดิมในFlowRowหรือFlowColumnที่รายการทั้งหมดประกอบขึ้นโดยไม่คำนึงว่ารายการนั้นจะพอดีกับแกนไขว้สูงสุดหรือไม่ ให้ตั้งค่าการล้นเป็นFlowRowOverflow.VisibleหรือFlowColumnOverflow.Visibleในระหว่างการเริ่มต้น ดูตัวอย่างการใช้งานฟีเจอร์ใหม่เหล่านี้ได้ในContextualFlowRowSampleและFlowRowSample(Ib9135, b/293577082) - เพิ่มการรองรับภาพเคลื่อนไหวการปรากฏและหายไปของรายการใน
LazyColumnและLazyRowก่อนหน้านี้ คุณสามารถเพิ่มตัวแก้ไขModifier.animateItemPlacement()เพื่อรองรับภาพเคลื่อนไหวของตำแหน่ง (การเรียงลำดับใหม่) เราได้เลิกใช้งานตัวแก้ไขนี้และเปิดตัวตัวแก้ไขใหม่ที่ไม่ใช่เวอร์ชันทดลองที่เรียกว่าModifier.animateItem()ซึ่งช่วยให้คุณรองรับภาพเคลื่อนไหวทั้ง 3 ประเภท ได้แก่ การปรากฏ (จางเข้า) การหายไป (จางออก) และการจัดลำดับใหม่ (I2d7f7, b/150812265) - ใช้การรองรับแบบทดลองสำหรับภาพหน้าจอยาวในคอนเทนเนอร์เลื่อนของ Compose โดยใช้ Android API อย่างเป็นทางการ (
ScrollCaptureCallback) NestedScrollแหล่งที่มาของ Drag และ Fling จะถูกแทนที่ด้วยUserInputและSideEffectเพื่อรองรับคำจำกัดความที่ขยายออกไปของแหล่งที่มาเหล่านี้ ซึ่งตอนนี้รวมถึงภาพเคลื่อนไหว (Side Effect) และล้อเมาส์และคีย์บอร์ด (UserInput)LazyLayoutตอนนี้สามารถทำเครื่องหมายคำขอ Prefetch เป็นด่วนได้แล้ว ซึ่งหมายความว่าเราคาดว่ารายการนี้จะต้องใช้ในเฟรมถัดไป และต้องการไม่สนใจงบประมาณเฟรมเพื่อให้แน่ใจว่าได้ทำงานล่วงหน้ามากขึ้น (Id513f)- รองรับฟีเจอร์การเขียนด้วยลายมือโดยใช้สไตลัสในอุปกรณ์ที่ใช้ Android U ขึ้นไป (I002e4)
- เราได้เลื่อนระดับ API ต่างๆ เป็นเวอร์ชันเสถียร
- เครื่องมือเปลี่ยนหน้า สแนป ส่วนที่เว้นไว้ในหน้าต่าง
เวอร์ชัน 1.7.0-rc01
21 สิงหาคม 2024
androidx.compose.foundation:foundation-*:1.7.0-rc01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.0-rc01 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขการถดถอยที่ทำให้เกิดข้อขัดข้องเมื่อโฟกัสองค์ประกอบใดก็ตามภายในองค์ประกอบหลักที่โฟกัสได้ (หรือคลิกได้) และปิดใช้ (b/317561689)
เวอร์ชัน 1.7.0-beta07
7 สิงหาคม 2024
androidx.compose.foundation:foundation-*:1.7.0-beta07 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.0-beta07 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- ตอนนี้อินพุตข้อความที่เกี่ยวข้องกับ
SemanticsNodeInteractionฟังก์ชันperformTextReplacementperformTextInputและperformTextClearanceจะแสดงข้อผิดพลาดในการยืนยันเมื่อมีการเรียกใช้ในTextFieldsแบบอ่านอย่างเดียว (I4ae8f) - แก้ไขข้อบกพร่องด้านภาพในไฮเปอร์ลิงก์ (I23311)
- แก้ไขตัวแก้ไข
contentReceiverที่ไม่ทำงานกับ IME บางตัว - การสร้างความเร็ว: ป้องกันการแพร่กระจายค่า NaN ใน Compose UI และ Foundation
เวอร์ชัน 1.7.0-beta06
24 กรกฎาคม 2024
androidx.compose.foundation:foundation-*:1.7.0-beta06 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.0-beta06 มีการเปลี่ยนแปลงเหล่านี้
เวอร์ชัน 1.7.0-beta05
10 กรกฎาคม 2024
androidx.compose.foundation:foundation-*:1.7.0-beta05 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.0-beta05 มีการคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขการจัดการค่า Nan ใน
SnapFlingBehaviorและ Pager
เวอร์ชัน 1.7.0-beta04
26 มิถุนายน 2024
androidx.compose.foundation:foundation-*:1.7.0-beta04 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.0-beta04 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- หลีกเลี่ยงการขัดข้องเมื่อวัดบรรทัดข้อความขนาดใหญ่มาก (เช่น 10,000 อักขระ) (8157ab)
- แก้ไขการวัดข้อความขนาดใหญ่มากซึ่งทำให้เกิดข้อขัดข้องใน
BasicTextFieldใหม่ (6b7575) - เปลี่ยนกลับการเปลี่ยนแปลงลักษณะการทํางานในการวัดแถว/คอลัมน์ที่ทําให้การใช้ข้อความใช้งานไม่ได้ในบางสถานการณ์ (69e8ba)
เวอร์ชัน 1.7.0-beta03
12 มิถุนายน 2024
androidx.compose.foundation:foundation-*:1.7.0-beta03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.0-beta03 มีการเปลี่ยนแปลงเหล่านี้
เวอร์ชัน 1.7.0-beta02
29 พฤษภาคม 2024
androidx.compose.foundation:foundation-*:1.7.0-beta02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.0-beta02 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม API เวอร์ชันทดลองสำหรับการกำหนดค่าลักษณะการทำงานของการดึงข้อมูลล่วงหน้าของ
LazyGridsคล้ายกับ API เวอร์ชันทดลองที่มีอยู่สำหรับLazyListsซึ่งรวมถึงการรองรับการดึงข้อมูลล่วงหน้าของรายการในLazyGridsที่ซ้อนกัน การติดตั้งใช้งานเริ่มต้นจะดึงข้อมูลล่วงหน้าสำหรับรายการที่ซ้อนกัน 2 รายการแรกของแต่ละตารางกริด แต่สามารถกำหนดค่าได้โดยใช้ APILazyGridPrefetchStrategy(nestedPrefetchItemCount)และLazyListPrefetchStrategy#onNestedPrefetchใหม่ ซึ่งคล้ายกับLazyListPrefetchStrategy(I591c4) - เปลี่ยนชื่อ
SemanticsProperties.Editableเป็นIsEditableและเปลี่ยนSemanticsPropertyReceiver.editableเป็นค่าisEditableตอนนี้พร็อพเพอร์ตี้เป็นบูลีนและระบุโดยช่องข้อความเสมอ (I8acd8) - ย้ายค่าเริ่มต้นของ
basicMarqueeไปยังออบเจ็กต์MarqueeDefaults(I12ff6) - เปลี่ยนชื่อพารามิเตอร์
basicMarqueedelayMillisเป็นrepeatDelayMillis(I12ff6) - อัปเดต API สำหรับการจัดรูปแบบลิงก์: ย้าย
TextLinkStylesไปยังTextStyleและนำTextDefaultsออกจาก Material (I5477b)
การแก้ไขข้อบกพร่อง
- เปลี่ยนชื่อ
LayoutCoordinates.introducesFrameOfReferenceเป็นLayoutCoordinates.introducesMotionFrameOfReferenceเพื่อให้สะท้อนวัตถุประสงค์ได้ดียิ่งขึ้น เปลี่ยนชื่อฟังก์ชันที่เกี่ยวข้องเพื่อคำนวณพิกัดตามธงนั้น (I3a330) - นำ "ค่าเริ่มต้น" ออกจากพร็อพเพอร์ตี้
MarqueeDefaults(I1d8a0) - นำ "Marquee" ออกจากพร็อพเพอร์ตี้
MarqueeDefaults(Iad4f4) - นำ
TextLinkStylesออกจากชั้นเรียนTextStyleแล้ว แต่TextLinkStylesเป็นส่วนหนึ่งของตัวสร้างLinkAnntationและเมธอดAnnotatedString.fromHtml(I90b2b) - แก้ไขข้อบกพร่องที่ทำให้ Pager สแนปเมื่อปัดไปที่ขอบเขตขณะที่อยู่ตรงขอบเขตอยู่แล้ว (I9f373, b/339171222)
- ตอนนี้ BTF2 มีท่าทางสัมผัสการเลือกด้วยเมาส์ที่ถูกต้องแล้ว (Ibe8c6)
การมีส่วนร่วมภายนอก
- ส่ง "Make compose/measure time calculation content-type based in prefetch to improve accuracy" (Iea622) อีกครั้ง
- สร้างเนื้อหาประเภทการคำนวณเวลาในการแต่ง/วัดตามการดึงข้อมูลล่วงหน้าเพื่อปรับปรุงความแม่นยำ (Ibccb1)
- ทำให้ตัวแก้ไข
WindowInsetsPaddingพร้อมใช้งานจากชุดแหล่งข้อมูลทั่วไป (I070b2)
เวอร์ชัน 1.7.0-beta01
14 พฤษภาคม 2024
androidx.compose.foundation:foundation-*:1.7.0-beta01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.0-beta01 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มพร็อพเพอร์ตี้
KeyboardOptions.shouldShowKeyboardOnFocusกลับมาเป็นพร็อพเพอร์ตี้ที่เลิกใช้งานแล้วและซ่อนไว้เพื่อความเข้ากันได้แบบไบนารี (I15cfe) Modifier.anchoredDraggableจะกลับค่าเดลต้าการลากโดยค่าเริ่มต้นสำหรับคอมโพเนนต์ที่มีการวางแนวแนวนอนเมื่อใช้ในเลย์เอาต์ RTL (I3c6d9)AnnotatedString.hasEqualsAnnotationsเปลี่ยนชื่อเป็นhasEqualAnnotationsแล้ว (I685c0)- อัปเดต API สำหรับรับลิงก์ที่มีธีม Material ในข้อความ โดยเฉพาะอย่างยิ่ง เราได้นำวิธีการต่างๆ ออกจาก
TextDefaultsสำหรับการสร้างLinkAnnotationsที่มีธีมและแยกวิเคราะห์ HTML ด้วยลิงก์ที่มีธีม แต่ได้เพิ่มTextLinkStylesคลาสที่อนุญาตให้จัดรูปแบบลิงก์เป็นพารามิเตอร์ไปยัง Text ที่ใช้ร่วมกันได้แทน (I31b93) - แทนที่
onDragStartedและonDragStoppedด้วยการเรียกกลับที่ไม่ระงับ (I59de8)
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องที่ทำให้ Pager ขัดข้องเมื่อ
contentPaddingมีขนาดใหญ่กว่าข้อจำกัดขาเข้า ตอนนี้ Pager จะบังคับให้ค่าลบที่แสดงผลจากPageSizeเป็น 0 (Iba5d8, b/314008560)
เวอร์ชัน 1.7.0-alpha08
1 พฤษภาคม 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha08 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.0-alpha08 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เพิ่มเมนูตามบริบทเมื่อคลิกขวาใน
BasicTextFieldและSelectionContainerพร้อมรายการสำหรับการดำเนินการตัด คัดลอก วาง และเลือกทั้งหมด (If8c93, Ia2b49, I6f268)
การเปลี่ยนแปลง API
LazyLayoutตอนนี้สามารถทำเครื่องหมายคำขอ Prefetch เป็นด่วนได้แล้ว ซึ่งหมายความว่าเราคาดว่ารายการนี้จะต้องใช้ในเฟรมถัดไป และต้องการไม่สนใจงบประมาณเฟรมเพื่อให้แน่ใจว่าได้ทำงานล่วงหน้ามากขึ้น (Id513f)- เปลี่ยนชื่อ
isPositionedByParentWithDirectManipulationเป็นintroducesFrameOfReferenceแล้ว โปรดทราบว่าตอนนี้พร็อพเพอร์ตี้ดังกล่าวมีผลตรงกันข้าม ซึ่งหมายความว่าโดยค่าเริ่มต้นLayoutCoordinatesส่วนใหญ่จะใช้กรอบอ้างอิง และพร็อพเพอร์ตี้จะเป็นเท็จเมื่อวางไว้ภายใต้การจัดการโดยตรงเท่านั้น หากต้องการค้นหาตำแหน่งที่มีเฉพาะตำแหน่งที่แนะนำกรอบอ้างอิง ให้ใช้positionInLocalFrameOfReference(...)หรือpositionInLocalLookaheadFrameOfReferenceจากLookaheadScope(Ifc5f7) - เปลี่ยนชื่อ
onClickedเป็นonClickในLinkInteractionListener(Iaa35c) - เปลี่ยน Lambda การดำเนินการสำหรับ
getScrollViewportLengthตามความคิดเห็นของสภา API (Ibc74a) - เปลี่ยนชื่อ API การมอบสิทธิ์การเขียนด้วยลายมือโดยใช้สไตลัส (Ica45f, b/327271923)
- เปลี่ยนชื่อ
TextInclusionStrategy.isInsideเป็นisIncludedทำให้Paragraph/MultiParagraph#getRangeForRect()ประเภทการคืนค่าไม่เป็นค่าว่าง (I51f26)
การแก้ไขข้อบกพร่อง
- เพิ่ม "เลือกทั้งหมด" ลงในเมนูตามบริบทของข้อความทั้งหมดใน
SelectionContainer(Ib750e, b/240143283) - แก้ไขการจับภาพหน้าจอแบบยาวสำหรับคอนเทนเนอร์ที่เลื่อนได้ด้วย
reverseScrolling=true(I7c59c) - แก้ไขปัญหาที่รหัสไปรษณีย์
AnchoredDraggableStateของcurrentValueจะเปลี่ยนเมื่อเข้าใกล้ขอบเขตของรัฐ (Iea30b, b/333846848)
การมีส่วนร่วมภายนอก
- เปลี่ยนชื่อ
PrefetchExecutor->PrefetchSchedulerเพื่อให้สอดคล้องกับความรับผิดชอบของทีมมากขึ้น (Ib9154) - เพิ่มการรองรับการดึงข้อมูลล่วงหน้าของรายการใน
LazyListsที่ซ้อนกัน (เช่นLazyColumnที่แสดงผลLazyRowsที่ซ้อนกัน) การเปลี่ยนแปลงนี้คาดว่าจะช่วยลดเฟรมหลุดระหว่างการเลื่อนสำหรับLazyListsเหล่านี้ การติดตั้งใช้งานเริ่มต้นคือการดึงข้อมูลล่วงหน้าสำหรับรายการที่ซ้อนกัน 2 รายการแรก แต่คุณควบคุมลักษณะการทำงานนี้ได้ด้วย APILazyLayoutPrefetchStrategy(nestedPrefetchItemCount)และLazyListPrefetchStrategy#onNestedPrefetchใหม่ (I51952)
เวอร์ชัน 1.7.0-alpha07
17 เมษายน 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha07 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.0-alpha07 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เพิ่มออบเจ็กต์
TextDefaultsที่มีเมธอดในการสร้างLinkAnnotationและแยกวิเคราะห์สตริงที่ติดแท็ก HTML ซึ่งใช้MaterialThemeกับลิงก์ (I98532, b/139312671) - เพิ่มการรองรับภาพเคลื่อนไหวการปรากฏและหายไปของรายการใน
LazyVerticalGridและLazyHorizontalGridก่อนหน้านี้ คุณสามารถเพิ่มตัวแก้ไขModifier.animateItemPlacement()เพื่อรองรับภาพเคลื่อนไหวของตำแหน่ง (การเรียงลำดับใหม่) เราได้เลิกใช้งานตัวแก้ไขนี้และเปิดตัวตัวแก้ไขใหม่ที่ไม่ใช่เวอร์ชันทดลองที่เรียกว่าModifier.animateItem()ซึ่งช่วยให้คุณรองรับภาพเคลื่อนไหวทั้ง 3 ประเภท ได้แก่ การปรากฏ (จางเข้า) การหายไป (จางออก) และการจัดลำดับใหม่ (Ib7d12, b/330510929) - เพิ่มการรองรับภาพเคลื่อนไหวการปรากฏและหายไปของรายการใน
LazyVerticalStaggeredGridและLazyHorizontalStaggeredGridก่อนหน้านี้ คุณสามารถเพิ่มตัวแก้ไขModifier.animateItemPlacement()เพื่อรองรับภาพเคลื่อนไหวของตำแหน่ง (การเรียงลำดับใหม่) เราได้เลิกใช้งานตัวแก้ไขนี้และเปิดตัวตัวแก้ไขใหม่ที่ไม่ใช่เวอร์ชันทดลองที่เรียกว่าModifier.animateItem()ซึ่งช่วยให้คุณรองรับภาพเคลื่อนไหวทั้ง 3 ประเภท ได้แก่ การปรากฏ (จางเข้า) การหายไป (จางออก) และการจัดลำดับใหม่ (I69bc9, b/330511290)
การเปลี่ยนแปลง API
- เพิ่ม
ContextMenuColorsและLocalContextMenuThemeProvidableCompositionLocalที่เกี่ยวข้อง คุณสามารถแก้ไขสีของเมนูตามบริบทในช่องข้อความและข้อความที่เลือกได้โดยระบุองค์ประกอบในเครื่อง (Ifa154) - ลิงก์ข้อความมีตัวเลือกการจัดรูปแบบสถานะที่กดนอกเหนือจากการจัดรูปแบบปกติ การวางเมาส์ และการโฟกัส (I5f864, b/139312671)
- ขอแนะนำ
ViewConfiguration.HandwritingGestureLineMarginสำหรับท่าทางสัมผัสลายมือ รองรับท่าทางสัมผัสการเขียนด้วยลายมือสำหรับBasicTextField(Ie6e13, b/325660505) - นำ
DelegatableNode.scrollIntoViewออกสำหรับการเปิดตัวเวอร์ชัน 1.7 เนื่องจากเราไม่มีเวลาที่จะทำให้ API ที่เกี่ยวข้องอื่นๆ เสถียร เราจะนำฟังก์ชันนี้กลับมาใช้ในเวอร์ชัน 1.8 (I6cf61, b/333421581, b/332900232) - เมื่อค้นหาพิกัดเลย์เอาต์ ตอนนี้คุณสามารถใช้อาร์กิวเมนต์
excludeDirectManipulationOffsetเพื่อยกเว้นออฟเซ็ตที่ตั้งค่าโดยเลย์เอาต์หลักซึ่งวางองค์ประกอบย่อยโดยใช้Placeable.PlacementScope.withDirectManipulationPlacementในทำนองเดียวกัน ตอนนี้เลย์เอาต์ที่เปลี่ยนตำแหน่งขององค์ประกอบย่อยบ่อยๆ อาจวางองค์ประกอบย่อยโดยใช้withDirectManipulationPlacement(เช่น Scroll ซึ่งมีการใช้งานโดยค่าเริ่มต้น) ซึ่งจะช่วยให้ภาพเคลื่อนไหวที่อิงตามapproachLayoutใช้งานง่ายขึ้น เนื่องจากตอนนี้มีโอกาสที่จะแยกความแตกต่างระหว่างสิ่งที่ต้องชดเชยเพื่อสร้างภาพเคลื่อนไหวกับสิ่งที่ต้องใช้โดยตรงเมื่อตัดสินใจที่จะสร้างภาพเคลื่อนไหวในแนวทางของตน (I60ec7) - ขอแนะนำ
requestScrollToItemสำหรับLazyStaggeredGridตอนนี้ไคลเอ็นต์สามารถเลือกไม่ใช้การรักษาดัชนีตามคีย์ได้โดยการเรียกrequestScrollToItemสำหรับการวัดผลแต่ละครั้ง ซึ่งจะไม่เปลี่ยนแปลงลักษณะการทำงานที่มีอยู่แต่อย่างใด เว้นแต่จะมีการเรียกใช้requestScrollToItem(I63983) - แนะนำ
requestScrollToPageในเพจ ตอนนี้ไคลเอ็นต์สามารถเลือกไม่ใช้การรักษาดัชนีตามคีย์ได้โดยการเรียกrequestScrollToPageสำหรับการวัดผลแต่ละครั้ง ซึ่งจะไม่เปลี่ยนแปลงลักษณะการทำงานที่มีอยู่แต่อย่างใด เว้นแต่จะมีการเรียกใช้requestScrollToPage(Ic4213) - เปิดตัว
requestScrollToItemสำหรับLazyGridsตอนนี้ไคลเอ็นต์สามารถเลือกไม่ใช้การรักษาดัชนีตามคีย์ได้โดยการเรียกrequestScrollToItemสำหรับการวัดผลแต่ละครั้ง ซึ่งจะไม่เปลี่ยนแปลงลักษณะการทำงานที่มีอยู่แต่อย่างใด เว้นแต่จะมีการเรียกใช้requestScrollToItem(I0a7a0) ClickableTextมีการทำเครื่องหมายว่าเลิกใช้งานแล้ว หากต้องการเพิ่มลิงก์ไปยังข้อความ ให้สร้างAnnotatedStringที่มีLinkAnnotationที่สอดคล้องกับลิงก์ แล้วส่งAnnotatedStringนี้ไปยัง ComposableText(I34d4b, b/323346994)UrlAnnotationเลิกใช้งานแล้ว โปรดใช้LinkAnnotation.Urlแทน หากใช้การจัดธีม Material ให้ใช้ออบเจ็กต์TextDefaultsเพื่อสร้างคำอธิบายประกอบที่มีการจัดธีม Material (I8d180, b/323346545)- เปลี่ยนชื่อเป็น
AnnotatedString.Companion.fromHtml(I43dcd)String.parseAsHtml - เพิ่มอาร์กิวเมนต์การจัดรูปแบบ (
linkStyle,focusedLinkStyle,hoveredLinkStyle) และเครื่องมือฟังการโต้ตอบลิงก์ไปยังเมธอดparseAsHtmlเมื่อแยกวิเคราะห์สตริงที่ติดแท็ก HTML ด้วยแท็ก<a>เมธอดจะสร้างLinkAnnotation.Urlสำหรับแท็กดังกล่าวแต่ละแท็ก และส่งออบเจ็กต์การจัดรูปแบบและเครื่องมือฟังการโต้ตอบลิงก์ไปยังคำอธิบายประกอบแต่ละรายการ (I7c977) - ตอนนี้
LinkAnnotationจะรับอาร์กิวเมนต์การจัดรูปแบบตามสถานะและLinkInteractionListenerเพิ่มคำอธิบายประกอบนี้ลงในAnnotatedStringเพื่อรับไฮเปอร์ลิงก์ การส่งfocusedStateและ/หรือhoveredStateจะช่วยให้คุณกำหนดค่าภาพสำหรับลิงก์เมื่อมีการโฟกัสและ/หรือวางเมาส์เหนือลิงก์ได้ (I81ce4, b/139312671) - เราได้นำฟีเจอร์แฟล็กสำหรับภาพหน้าจอยาวออกแล้ว (I28648, b/329128246)
LazyColumnจะแสดงผลส่วนหัวที่ไม่เคลื่อนที่ในภาพหน้าจอแบบยาวได้อย่างถูกต้องแล้ว (I8d239, b/329296635)- ปรับ API ที่เหลือส่วนใหญ่ซึ่งยังอยู่ในระยะทดลองให้เสถียร ซึ่ง API เหล่านี้เปิดตัวพร้อมกับ
BasicTextFieldเวอร์ชันใหม่ (I714e2) - เพิ่มพารามิเตอร์
textObfuscationCharacterลงในBasicSecureTextFieldซึ่งควบคุมอักขระที่จะใช้ขณะที่ทำให้เนื้อหาอ่านไม่ออก (I0588b) NestedScrollแหล่งที่มา Drag และ Fling จะถูกแทนที่ด้วยUserInputและSideEffectเพื่อรองรับคำจำกัดความที่ขยายออกไปของแหล่งที่มาเหล่านี้ ซึ่งตอนนี้รวมถึงภาพเคลื่อนไหว (Side Effect) และล้อเมาส์และคีย์บอร์ด (UserInput) (I40579)- ขอแนะนำ
LocalBringIntoViewSpecซึ่งเป็นลักษณะการเลื่อนโฟกัสที่ขึ้นอยู่กับแพลตฟอร์มซึ่งใช้ที่เลเยอร์ตัวแก้ไขที่เลื่อนได้ (I27aa5, b/317453911) - นำ
TextFieldCharSequenceออกแล้วTextFieldBuffer.originalValuesจะถูกแทนที่ด้วยTextFieldBuffer.originalTextและTextFieldBuffer.originalSelection(I2c7d6) ImeOptions.hintLocalesจะไม่ใช่ค่า Null อีกต่อไป หากต้องการส่งรายการภาษาที่ว่างเปล่า โปรดใช้LocaleList.Empty(Ic5bc4)- เปลี่ยนชื่อ
getOffsetFractionForPageเป็นgetOffsetDistanceInPagesแล้ว (Ia05e2)
การแก้ไขข้อบกพร่อง
- เมื่อรวม
InputTransformationsกับnextแล้ว ระบบจะผสานKeyboardOptionsอย่างถูกต้องตามตัวเลือกแต่ละรายการโดยใช้วิธีการKeyboardOptions.mergeใหม่ (Ie5304, b/295951492) AnchoredDraggableStatetargetValueจะไม่พิจารณาเกณฑ์ตำแหน่งอีกต่อไป ตอนนี้มีเกณฑ์โดยนัยที่ 50% ซึ่งหมายความว่าtargetValueจะเปลี่ยนที่จุดกึ่งกลางระหว่างจุดยึด 2 จุด (I82c2c)
การมีส่วนร่วมภายนอก
- เปลี่ยนชื่อ API การเลื่อน 2 รายการ (I56a75)
เวอร์ชัน 1.7.0-alpha06
3 เมษายน 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha06 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.0-alpha06 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เพิ่มการรองรับภาพเคลื่อนไหวการปรากฏและหายไปของรายการใน
LazyColumnและLazyRowก่อนหน้านี้ คุณสามารถเพิ่มตัวแก้ไขModifier.animateItemPlacement()เพื่อรองรับภาพเคลื่อนไหวของตำแหน่ง (การเรียงลำดับใหม่) เราได้เลิกใช้งานตัวแก้ไขนี้และเปิดตัวตัวแก้ไขใหม่ที่ไม่ใช่เวอร์ชันทดลองที่เรียกว่าModifier.animateItem()ซึ่งช่วยให้คุณรองรับภาพเคลื่อนไหวทั้ง 3 ประเภท ได้แก่ การปรากฏ (จางเข้า) การหายไป (จางออก) และการจัดลำดับใหม่ (I2d7f7, b/150812265) - ตอนนี้ลูกค้าของ
LazyColumn/LazyRowสามารถเลือกไม่ใช้การดูแลดัชนีตามคีย์สำหรับการวัดผลแบบผ่านที่กำลังจะมาถึงได้โดยเรียกใช้LazyListState.requestToScrollที่ไม่ระงับ (I98036, b/209652366) - เพิ่ม
parseAsHtmlวิธีสำหรับสตริงที่มีสไตล์: ช่วยให้แปลงสตริงที่ทำเครื่องหมายด้วยแท็ก HTML เป็นAnnotatedStringได้ โปรดทราบว่าระบบไม่รองรับแท็กบางแท็ก เช่น คุณยังแสดงรายการหัวข้อย่อยไม่ได้ (I84d3d) - ใช้การรองรับแบบทดลองสำหรับภาพหน้าจอยาวในคอนเทนเนอร์เลื่อนของ Compose โดยใช้ Android API อย่างเป็นทางการ (
ScrollCaptureCallback) ฟีเจอร์นี้อยู่ในขั้นทดลองและอาจยังจัดการบางกรณีได้ไม่ถูกต้อง ด้วยเหตุนี้ ฟีเจอร์นี้จึงปิดใช้อยู่โดยค่าเริ่มต้นในขณะนี้ หากต้องการเลือกใช้ ให้ตั้งค่า FlagComposeFeatureFlag_LongScreenshotsEnabledเป็น true เราจะนำฟีเจอร์นี้ออกก่อนเปิดตัวเวอร์ชันเบต้า 1.7 (I2b055, b/329296471) - เปิดตัว
GraphicsLayerAPI ใหม่เพื่อให้มีความยืดหยุ่นมากขึ้นในการจัดวางและการแสดงผลอินสแตนซ์GraphicsLayerและรองรับฟีเจอร์การแสดงผลโดยธรรมชาติโดยไม่ต้องประสานงานกับการติดตั้งใช้งานที่ประกอบได้เพื่อระบุอินสแตนซ์ตัวแก้ไขGraphicsLayer
การเปลี่ยนแปลง API
- ตอนนี้พารามิเตอร์
KeyboardOptionsทั้งหมดมีค่า "ไม่ได้ระบุ" เป็นค่าเริ่มต้น เพิ่มวิธีการKeyboardOptions.mergeแล้ว - เปลี่ยนชื่อ
KeyboardOptions.autoCorrectเป็นautoCorrectEnabledและทำให้เป็นค่าว่างได้ โดยค่าว่างจะบ่งบอกว่าไม่ได้ระบุค่า (Ia8ba0, b/295951492) - เปลี่ยนชื่อ
outOfBoundsPageCountเป็นbeyondViewportPageCountแล้ว (I129c6) - เปลี่ยน
fun ClipEntry.getMetadata()เป็นval ClipEntry.clipMetadataแล้ว (I50155) - นำ
TextFieldState.valueAsFlow()ออกแล้ว แนะนำให้ใช้snapshotFlow { state.text }หรือsnapshotFlow { TextFieldCharSequence(state.text, state.selection) }(I7d629) - จัดระเบียบ
InputTransformation.transformInputพารามิเตอร์ใหม่ นำoriginalValue: TextFieldCharSequenceออกแล้ว แต่ตอนนี้TextFieldBufferมีค่านี้โดยใช้ชื่อเดียวกัน นอกจากนี้ยังนำพารามิเตอร์valueWithChanges: TextFieldBufferออกด้วยTextFieldBufferตอนนี้เป็นขอบเขตตัวรับในฟังก์ชัน (I919cc) BasicTextField(state)และBasicSecureTextFieldจะใช้KeyboardActionHandlerแทนKeyboardActionsในการประมวลผลการดำเนินการที่แป้นพิมพ์ซอฟต์แวร์ทำ (I58dda)- API การมอบสิทธิ์การเขียนด้วยลายมือโดยใช้สไตลัสเพื่อรองรับการเขียนด้วยลายมือโดยใช้สไตลัสในช่องป้อนข้อความ "ปลอม" (I9c09c, b/327271923)
- เปลี่ยนชื่อ
KeyboardOptions.shouldShowKeyboardOnFocusเป็นshowKeyboardOnFocusแล้ว (Ib4b7a, b/295951492) - นำพารามิเตอร์
hintMediaTypesออกจากModifier.contentReceiverแล้ว เราแนะนำให้นักพัฒนาแอปตรวจสอบประเภทสื่อของTransferableContentที่ได้รับอยู่แล้ว เนื่องจากอาจเข้ากันไม่ได้กับhintMediaTypesที่กำหนดค่าไว้ (I82f99) - จัดเรียงพารามิเตอร์ของ
BasicSecureTextFieldใหม่ นำพารามิเตอร์keyboardTypeและimeActionออกเพื่อใช้คลาสKeyboardOptionsแบบเต็ม ในขณะที่ยังคงค่าเริ่มต้นเดิมที่เหมาะสมกับBasicSecureTextFieldนอกจากนี้ยังนำพารามิเตอร์scrollStateออกด้วย (Ibbfa9) - เปลี่ยนประเภทของ
TextFieldState.textจากTextFieldCharSequenceเป็นCharSequenceดังนั้นเราจึงเพิ่มTextFieldState.selection: TextRangeและTextFieldState.composition: TextRange?เพื่ออ่านค่าการเลือกและการจัดองค์ประกอบปัจจุบันจากออบเจ็กต์สถานะโดยตรง - นำ
TextFieldState.forEachTextValueออกแล้ว (Idb2a2) - นำฟังก์ชัน
ClipboardManager.getClipMetadataและClipboardManager.hasClipออกแล้ว โปรดใช้clipEntry.getMetadata()เพื่ออ่านข้อมูลเมตาของรายการคลิปปัจจุบัน นอกจากนี้ ให้ตรวจสอบผลลัพธ์ของClipboardManager.getClipว่าเป็นค่าว่างหรือไม่ เพื่อดูว่าคลิปบอร์ดมีคลิปปัจจุบันหรือไม่ (I50498) - ตอนนี้
ClipboardManager.setClipยอมรับค่า Null เพื่อล้างคลิปบอร์ดได้แล้ว (I7d2e9) - ระบบจะแปลง
ReceiveContentListenerเป็นอินเทอร์เฟซฟังก์ชัน นอกจากนี้ เรายังนำการโอเวอร์โหลดModifier.receiveContentที่รับ Lambda ออกด้วย เนื่องจากตอนนี้ReceiveContentListenerเป็นอินเทอร์เฟซฟังก์ชันแล้ว - เปลี่ยนชื่อ
Modifier.receiveContentเป็นModifier.contentReceiver(I1e6af) - เปลี่ยนชื่อ
TransferableContent.consumeEachเป็นTransferableContent.consumeแล้ว (I1e462) rememberTextFieldStateได้รับการอัปเกรดเป็น API ที่เสถียรแล้ว (I37999)
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องที่ทำให้
BasicTextField(state)ไม่ทำงานกับคีย์บอร์ด CJK(อิงตามการเขียน) (I54425) - แก้ไขข้อบกพร่องที่
Modifier.dragAndDropTarget()อาจอ้างอิงข้อมูลที่ล้าสมัยในบางสถานการณ์ที่มีการนำModifier.Nodeกลับมาใช้ซ้ำ (I05bb1) - เราได้ย้อนกลับการเปลี่ยนแปลงสัญญาล่าสุดที่การโทร
AnchoredDraggableState#anchoredDragจะสิ้นสุดเมื่อการดำเนินการanchoredDragเสร็จสิ้น (I95715)
เวอร์ชัน 1.7.0-alpha05
20 มีนาคม 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha05 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.0-alpha05 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- นำ
LocalTextLinkStyleองค์ประกอบทดลองในเครื่องออกเพื่อจัดรูปแบบไฮเปอร์ลิงก์ (Iebfa7) - นำการลบล้างการทดสอบของ
BasicTextที่มีอาร์กิวเมนต์onLinkClickedออกแล้ว และเราจะเปิดตัว API ทดแทนสำหรับการรองรับไฮเปอร์ลิงก์ในอนาคต (I107d5) - นำเมธอดและพร็อพเพอร์ตี้ที่เกี่ยวข้องกับ Codepoint ออกภายใต้
TextFieldStateและTextFieldBufferนอกจากนี้ เรายังนำคำต่อท้ายinCharsออกจาก API ที่เหลือที่เกี่ยวข้องกับการเลือกและการจัดองค์ประกอบด้วย (Ief7ce) - ตอนนี้
AnchoredDraggableของcurrentValueจะอัปเดตเมื่อผ่านจุดยึด ใช้settledValueเพื่อรับความหมายของcurrentValueก่อนหน้า โดยจะอัปเดตเมื่อมีการตั้งค่าที่จุดยึดเท่านั้น ตอนนี้ความคืบหน้าจะแสดงเป็นฟังก์ชัน (ต้องมีจุดเริ่มต้นและจุดสิ้นสุด) แทนที่จะเป็นพร็อพเพอร์ตี้ (Ibe6e8, b/318707189, b/298271489, b/294991954) BasicTextField(state),TextFieldState,InputTransformation,OutputTransformation,TextFieldLineLimits,TextFieldDecoratorได้รับการอัปเกรดเป็นเวอร์ชันเสถียรแล้ว (I9582b)- เปิดตัว
InterceptPlatformTextInputเพื่อช่วยเขียนการทดสอบที่เกี่ยวข้องกับ IME ระดับต่ำและ Use Case อื่นๆ ของ IME ระดับต่ำPlatformTextInputTestOverrideเลิกใช้งานแล้ว (I862ed, b/322680547) - แยก
restrictedConstraints()เป็น 2 วิธี ได้แก่fitPrioritizingWidth()และfitPrioritizingHeight()(I6d7fd)
การมีส่วนร่วมภายนอก
- เพิ่ม API ใหม่ 2 รายการ
isLastScrollForward/isLastScrollBackwardเพื่อตรวจสอบทิศทางการเลื่อนสำหรับการดำเนินการเลื่อนล่าสุด และแสดงผลเป็นเท็จหากยังไม่มีการดำเนินการเลื่อน (I63a0e)
เวอร์ชัน 1.7.0-alpha04
6 มีนาคม 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha04 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.0-alpha04 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- รองรับฟีเจอร์การเขียนด้วยลายมือโดยใช้สไตลัสในอุปกรณ์ที่ใช้ Android U ขึ้นไป (I002e4)
- เพิ่ม
hintLocalesในKeyboardOptionsเพื่อให้TextFieldsสามารถแนะนำ IME ด้วยภาษาเฉพาะเพื่อตั้งค่าภาษาที่ต้องการล่วงหน้า (Id18c2) - นำการโอเวอร์โหลด
BasicTextField2และBasicSecureTextFieldที่เป็นเวอร์ชันทดลองซึ่งใช้พารามิเตอร์value: StringและonValueChange: () -> Stringออก (I568b4) - เพิ่มฟังก์ชัน
applySemanticsที่ไม่บังคับลงในInputTransformationเพื่อส่งผลต่อความหมายของBasicTextField2ที่ใช้ (I74a2f, b/170648072) - ใน CL นี้ เราจะเพิ่ม
GetScrollViewportLengthการดำเนินการเชิงความหมายเพื่อให้เราสามารถส่งข้อมูลเกี่ยวกับคอมโพเนนต์ที่กำลังเลื่อนใน Compose ไปยังระบบ A11y ได้ CL นี้ยังใช้การใช้งานพร็อพเพอร์ตี้นี้ในรายการที่เลื่อนได้ของ Foundation ด้วย (Ic5fa2) - เปลี่ยนชื่อ
BasicTextField2เป็นBasicTextField(Ie5713) FocusRequester.createRefsตอนนี้เสถียรแล้ว (I4d92c, b/261436820)- เปิดตัว
DelegatableNode.scrollIntoView()เพื่อให้โหนดตัวแก้ไขส่งคำขอscrollIntoViewได้โดยตรง (I2b3b7, b/299939840) - เปิดตัว
DelegatableNode.requireView()เพื่อให้โหนดตัวแก้ไขรับViewAndroid ปัจจุบันได้โดยไม่ต้องอ่าน CompositionLocal (I40768) - ขอแนะนำข้อมูลเลย์เอาต์ตามบริบทภายในขอบเขตแถวโฟลว์ตามบริบทและขอบเขตคอลัมน์โฟลว์ตามบริบท ซึ่งมีดัชนีบรรทัด ตำแหน่ง และข้อจำกัดเกี่ยวกับความกว้างและความสูงสูงสุดเพื่อให้คงอยู่ในตำแหน่งที่ระบุ รายการที่มีความกว้าง/สูงเกินค่าสูงสุดอาจไหลไปยังบรรทัดถัดไปหรือถูกละเว้นตามการตั้งค่าการล้น (Id13f8, b/292114798)
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องที่ทำให้เกิดข้อขัดข้องในบางกรณีเมื่อสลับแอตทริบิวต์
enabledหรือreadOnlyของTextField(Iae17b)
เวอร์ชัน 1.7.0-alpha03
21 กุมภาพันธ์ 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.0-alpha03 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- เปิดตัว
DelegatableNode.requireLayoutCoordinates()เพื่อเป็นวิธีรับModifier.NodeปัจจุบันของLayoutCoordinatesโดยไม่ต้องลบล้างonPlacedและจัดเก็บพิกัดในพร็อพเพอร์ตี้ด้วยตนเอง (Ia8657) - เปิดตัว
DelegatableNode.currentLayoutCoordinatesเพื่อเป็นวิธีรับModifier.NodeปัจจุบันของLayoutCoordinatesโดยไม่ต้องลบล้างonPlacedและจัดเก็บพิกัดในพร็อพเพอร์ตี้ด้วยตนเอง (Iaebaa) - การเพิ่มประสิทธิภาพใน
DraggableAnchorsที่ใช้โดยAnchoredDraggable(I89cff) BasicTextField2และ API ที่เกี่ยวข้องในแพ็กเกจandroidx.compose.foundation.text2จะย้ายไปที่androidx.compose.foundation.text(I9f635)BasicTextField2ไม่รับพารามิเตอร์CodepointTransformationอีกต่อไป ใช้BasicSecureTextFieldหรือOutputTransformation(Id34ff)- เพิ่มวิธีเปรียบเทียบเฉพาะคำอธิบายประกอบของ
AnnotatedStringsรายการ (I32659) - ขอแนะนำ
ContextualFlowRowและFlowRow/Columnที่ได้รับการปรับปรุงพร้อมด้วยMaxLinesและOverflowเรายินดีที่จะประกาศการปรับปรุงFlowRowและFlowColumnเวอร์ชันทดลอง ซึ่งตอนนี้มีmaxLinesและการรองรับการล้นแล้ว พร้อมกับการเปิดตัวContextualFlowRowและContextualFlowColumnการอัปเดตนี้ออกแบบมาเพื่อให้คอมโพเนนต์ที่มีประสิทธิภาพสูงสุด โดยContextualFlow*เหมาะสำหรับสินค้าจำนวนมากที่ใช้การกำหนดค่าmaxLinesขนาดเล็กและปุ่มดูเพิ่มเติมแบบไดนามิก +N ส่วนFlowRowและFlowColumnเหมาะสำหรับสินค้าจำนวนน้อย ซึ่งมีสินค้าน้อยกว่า 100 รายการ สำคัญ: หากต้องการคงลักษณะการทำงานที่มีอยู่เดิมในFlowRowหรือFlowColumnที่รายการทั้งหมดประกอบขึ้นโดยไม่คำนึงว่ารายการนั้นจะพอดีกับแกนไขว้สูงสุดหรือไม่ ให้ตั้งค่าoverflowเป็นFlowRowOverflow.VisibleหรือFlowColumnOverflow.Visibleในระหว่างการเริ่มต้น ดูตัวอย่างการใช้งานฟีเจอร์ใหม่เหล่านี้ได้ในContextualFlowRowSampleและFlowRowSample(Ib9135, b/293577082)
การแก้ไขข้อบกพร่อง
- ภาพเคลื่อนไหวของเคอร์เซอร์จะไม่ขอเฟรมระหว่างสถานะเปิดและปิดอีกต่อไป (Ia2253)
KeyboardOptions' ตัวสร้างสำเนาที่เลิกใช้งานแล้วจะคัดลอกพร็อพเพอร์ตี้ทั้งหมดได้อย่างถูกต้อง (If12de)
เวอร์ชัน 1.7.0-alpha02
7 กุมภาพันธ์ 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.0-alpha02 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
HorizontalPager,VerticalPagerและPagerStateได้รับการเลื่อนชั้นเป็นเวอร์ชันเสถียร (I67660, b/316966909)- เพิ่ม
LocalTextLinkStyleComposition Local ที่ช่วยให้เปลี่ยนรูปแบบของลิงก์ในข้อความทั่วทั้งแอปได้ หากคุณใช้ธีมของคุณเองในแอป คุณควรตั้งค่า Composition Local นี้ตามธีมของคุณ เมื่อใช้ธีม Material ระบบจะตั้งค่าสีของลิงก์เป็นสีหลักของ Material โดยค่าเริ่มต้น (I7eb10) - เปิดตัวตัวแก้ไข
receiveContentที่ช่วยให้นักพัฒนาแอปมีวิธีรับเนื้อหาที่สมบูรณ์ใน Jetpack Compose receiveContentทำงานร่วมกับBasicTextField2เพื่อรับเนื้อหารูปแบบ Rich ที่แป้นพิมพ์ซอฟต์แวร์ให้มา หรือผ่านการวางจากคลิปบอร์ด (I81b72)- ในการเปลี่ยนแปลงนี้ เราจะแทนที่
SnapFlingBehaviorด้วยTargetedFlingBehaviorในเพจเจอร์เพื่อปลดล็อกกรณีการใช้งานอื่นๆ และมอบความยืดหยุ่นที่มากขึ้น (I762ea) - การเปลี่ยนแปลงนี้จะทำให้ Snapping API มีความเสถียร นอกจากนี้ เรายังจะล้างข้อมูลโค้ดทดสอบบางส่วนและเพิ่มตัวอย่างเพิ่มเติมในการสแนปด้วย (Id8da9)
- ขอแนะนำ
TargetedFlingBehaviorซึ่งเป็นFlingBehaviorที่ช่วยให้เผยแพร่ข้อมูลเกี่ยวกับสถานะของภาพเคลื่อนไหวที่กำลังดำเนินการและออฟเซ็ตการเลื่อนเป้าหมายได้ (I6a207)
การแก้ไขข้อบกพร่อง
BasicTextField2จะทำให้เคอร์เซอร์อยู่ในมุมมองขณะพิมพ์เมื่อมีการเลื่อนเคอร์เซอร์ออกจากมุมมองหรือเคอร์เซอร์จะเลื่อนออกจากมุมมองเนื่องจากอินพุต (Ieb856, b/237190748)
การมีส่วนร่วมภายนอก
- เพิ่ม API เวอร์ชันทดลองสำหรับการกำหนดค่าลักษณะการทำงานของการดึงข้อมูลล่วงหน้าของ LazyList (I022a4)
เวอร์ชัน 1.7.0-alpha01
24 มกราคม 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.0-alpha01 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เพิ่ม
Indication APIใหม่IndicationNodeFactoryซึ่งส่งผลให้การติดตั้งใช้งานIndicationมีประสิทธิภาพมากขึ้นเมื่อเทียบกับ APIrememberUpdatedInstanceก่อนหน้า (ปัจจุบันเลิกใช้งานแล้ว) ดูข้อมูลการย้ายข้อมูลได้ที่ developer.android.com clickable / combinedClickable / selectable / toggleableตอนนี้ยอมรับพารามิเตอร์MutableInteractionSourceที่กำหนดให้เป็น Null ได้แล้ว หากเป็น Null และIndicationที่ระบุเป็นIndicationNodeFactoryระบบจะสร้างIndicationแบบเลื่อนเวลาได้เมื่อจำเป็นเท่านั้น ซึ่งจะช่วยปรับปรุงประสิทธิภาพ หากไม่ได้โฮสต์และใช้MutableInteractionSourceขอแนะนำให้ส่งค่าเป็น null
การเปลี่ยนแปลง API
- เปิดตัว
DecayAnimationในAnchoredDraggableการเปลี่ยนแปลงนี้จะเพิ่มพารามิเตอร์decayAnimationSpecลงในAnchoredDraggableซึ่งช่วยให้ใช้ภาพเคลื่อนไหวการลดทอนเมื่อตั้งค่าเป็นหนึ่งในจุดยึดได้ การเปลี่ยนแปลงนี้ยังรวมถึงการเปลี่ยนชื่อanimationSpecที่มีอยู่เป็นsnapAnimationSpecเพื่อช่วยให้เข้าใจกรณีการใช้งานของแต่ละข้อกำหนด BasicTextField2พร้อมให้ใช้งานในเวอร์ชันทดลองแล้ว โดยควรมีฟีเจอร์ที่เทียบเท่ากับBasicTextFieldและลักษณะการทำงานควรพร้อมใช้งานจริง อย่างไรก็ตาม API ยังคงเป็นเวอร์ชันทดลองในตอนนี้ ก่อนที่จะมีเสถียรภาพ ระบบจะเปลี่ยนชื่อเป็นBasicTextFieldและย้ายไปไว้ในแพ็กเกจเดียวกัน- เปิดตัวร่างแรกของ
OutputTransformationAPI สำหรับBasicTextField2API นี้จะแทนที่ Use Case ส่วนใหญ่ของVisualTransformationในBasicTextFieldแบบเดิม อย่างไรก็ตาม API นี้ยังไม่สมบูรณ์และบางอย่างอาจทำงานไม่ถูกต้อง แต่เรายินดีรับฟังความคิดเห็นเกี่ยวกับการใช้งาน API สำหรับกรณีการใช้งานของคุณ (aosp/2708848) - เปิดตัว
LinkAnnotationที่ช่วยให้เพิ่มลิงก์และข้อความที่คลิกได้ลงในข้อความ ฟีเจอร์ลิงก์ยังไม่สมบูรณ์และจะมีการเปลี่ยนแปลง API เพิ่มเติม - เปิดตัวตัวแก้ไข
receiveContentที่ช่วยให้นักพัฒนาแอปมีวิธีรับเนื้อหาที่สมบูรณ์ใน Jetpack Compose receiveContentทำงานร่วมกับBasicTextField2เพื่อรับเนื้อหารูปแบบ Rich ที่แป้นพิมพ์ซอฟต์แวร์ให้มา หรือผ่านการวางจากคลิปบอร์ดKeyboardOptions.shouldShowKeyboardOnFocusช่วยให้คุณปิดใช้ลักษณะการทำงานเริ่มต้นของBasicTextFieldในการขอแป้นพิมพ์ซอฟต์แวร์เมื่อโฟกัสได้TextInputServiceและLocalTextInputServiceเลิกใช้งานแล้ว ใช้PlatformTextInputModifierNodeเพื่อผสานรวมกับ IME API ของแพลตฟอร์มโดยตรงแทน (aosp/2862698)Indication#rememberUpdatedInstanceเลิกใช้งานแล้ว ซึ่งมีโทษด้านประสิทธิภาพที่หลีกเลี่ยงไม่ได้สูง และป้องกันการเพิ่มประสิทธิภาพอื่นๆ แต่คุณควรใช้IndicationNodeFactoryAPI ใหม่แทน
การแก้ไขข้อบกพร่อง
- ตอนนี้
BasicTextFieldจะตรวจสอบการแมปออฟเซ็ตที่เลือกไว้เล็กน้อยล่วงหน้าเมื่อมีการส่งVisualTransformationซึ่งจะช่วยตรวจจับข้อผิดพลาดในการเขียนโค้ดที่พบบ่อยซึ่งนำไปสู่ข้อยกเว้นที่กู้คืนไม่ได้ในขั้นตอนการวัดหรือการวาดในภายหลัง การส่งข้อยกเว้นระหว่างการคอมโพสิตจะช่วยให้นักพัฒนาแอปมีโอกาสเห็นข้อผิดพลาดเหล่านี้มากขึ้นในระหว่างการพัฒนา ซึ่งจะช่วยหลีกเลี่ยงการขัดข้องในเวอร์ชันที่ใช้งานจริง (I0fd42) VisualTransformationจะไม่แสดงข้อผิดพลาดหากคุณส่งคืนดัชนีที่ไม่ถูกต้องสำหรับดัชนีที่ไม่ถูกต้อง (b/316401857 )
เวอร์ชัน 1.6
เวอร์ชัน 1.6.8
12 มิถุนายน 2024
androidx.compose.foundation:foundation-*:1.6.8 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.8 มีการเปลี่ยนแปลงเหล่านี้
เวอร์ชัน 1.6.7
1 พฤษภาคม 2024
androidx.compose.foundation:foundation-*:1.6.7 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.7 มีการเปลี่ยนแปลงเหล่านี้
เวอร์ชัน 1.6.6
17 เมษายน 2024
androidx.compose.foundation:foundation-*:1.6.6 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.6 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องที่ทำให้เกิดข้อขัดข้องในบางกรณีเมื่อสลับแอตทริบิวต์
enabledหรือreadOnlyของTextField(Iae17b)
เวอร์ชัน 1.6.5
3 เมษายน 2024
androidx.compose.foundation:foundation-*:1.6.5 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.5 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- เพิ่มบันทึกการแก้ไขข้อบกพร่องไปยังข้อบกพร่องที่ทำซ้ำได้ยากในแถว/คอลัมน์: (b/300280216 และ b/297974033)
เวอร์ชัน 1.6.4
20 มีนาคม 2024
androidx.compose.foundation:foundation-*:1.6.4 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.4 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- ท่าทางสัมผัสการเลือกแบบกดค้างแล้วลากซึ่งเลื่อนออกนอกขอบเขตเลย์เอาต์ของข้อความในเฟรมแรกของการลากจะไม่ทำให้เกิดข้อขัดข้องอีกต่อไป (Icdf90, b/325307463)
เวอร์ชัน 1.6.3
6 มีนาคม 2024
androidx.compose.foundation:foundation-*:1.6.3 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.3 มีการเปลี่ยนแปลงเหล่านี้
เวอร์ชัน 1.6.2
21 กุมภาพันธ์ 2024
androidx.compose.foundation:foundation-*:1.6.2 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.2 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหา
AnimateContentSizeรีเซ็ตไม่ถูกต้อง (I07051) - แก้ไขปัญหาที่ข้อความ
intrinsicHeightจะได้รับการแคชมากเกินไปในบางกรณี (3cd398, b/217910352)
เวอร์ชัน 1.6.1
7 กุมภาพันธ์ 2024
androidx.compose.foundation:foundation-*:1.6.1 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.1 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขการวัดตารางกริดแบบเหลื่อมเมื่อเลื่อนเกินขีดจำกัด (bffc39)
- เพิ่มการตรวจสอบเลย์เอาต์ที่มีขนาดใหญ่ (e74af5)
- แก้ไขการวางรายการที่มีขนาด 0 ที่จุดเริ่มต้นของตารางกริดแบบสลับ (785f94)
- เรียกใช้แฮนเดิลการเรียกกลับ onRelease ตามลำดับเดียวกับ onForgotten (31ce3b)
เวอร์ชัน 1.6.0
24 มกราคม 2024
androidx.compose.foundation:foundation-*:1.6.0 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.0 มีคอมมิตเหล่านี้
การเปลี่ยนแปลงสำคัญตั้งแต่เวอร์ชัน 1.5.0
- ตัวแก้ไขใหม่
Modifier.anchoredDraggableที่ช่วยให้ลากและเคลื่อนไหวระหว่างชุดจุดยึดที่กำหนดไว้ล่วงหน้าได้ โดยตัวแก้ไขนี้มีไว้เพื่อแทนที่Modifier.swipeableดูวิธีใช้งานและวิธีย้ายข้อมูลจากModifier.swipeableได้ในคู่มือการย้ายข้อมูล - เพิ่มฟังก์ชันการลากและวางระหว่างแอปและคอมโพเนนต์ โปรดดู
DragAndDropTarget,Modifier.dragAndDropSourceและ API อื่นๆ เพื่อเริ่มต้นใช้งาน Modifier.draggable2Dเป็นแป้นกดร่วมใหม่ที่รองรับการลากแบบ 2 มิติได้อย่างง่ายดาย ดูตัวอย่าง- เราได้เพิ่ม
AndroidExternalSurfaceและAndroidEmbeddedExternalSurfaceเพื่อให้เพิ่มคอมโพเนนต์ที่ขับเคลื่อนด้วย Surface ใน Compose ได้ง่ายขึ้น - การเปลี่ยนแปลงและการปรับปรุง API ต่างๆ ใน
PagerและsnapFlingBehaviour - API ต่างๆ สำหรับโฟกัส ข้อความ และการแทรกได้รับการเลื่อนชั้นเป็น API ที่เสถียรแล้ว
เวอร์ชัน 1.6.0-rc01
10 มกราคม 2024
androidx.compose.foundation:foundation-*:1.6.0-rc01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.0-rc01 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- เราได้นำตัวสร้างส่วนขยาย
DragAndDropTarget()ออกแล้ว สร้างอินสแตนซ์ใหม่โดยใช้object: DragAndDropTarget {}(I32318)
เวอร์ชัน 1.6.0-beta03
13 ธันวาคม 2023
androidx.compose.foundation:foundation-*:1.6.0-beta03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.0-beta03 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขข้อขัดข้องที่ส่งผลต่อข้อความขนาดใหญ่มากซึ่งวัดด้วยข้อจำกัดที่ไม่มีที่สิ้นสุด (I1a7df, b/312294386)
- ตอนนี้
PlatformImeOptionsเป็นคลาสที่เฉพาะเจาะจงแทนที่จะเป็นอินเทอร์เฟซ (If40a4)
เวอร์ชัน 1.6.0-beta02
29 พฤศจิกายน 2023
androidx.compose.foundation:foundation-*:1.6.0-beta02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.0-beta02 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาที่
canScrollไม่อัปเดตหลังจากเลื่อนเฉพาะการจัดวางใหม่ (I60a86) - แก้ไขปัญหาสำหรับ
Modifier.animateItemPlacement()และLookaheadScopeหลังจากเลื่อนเล็กน้อย (I3a2b7)
เวอร์ชัน 1.6.0-beta01
15 พฤศจิกายน 2023
androidx.compose.foundation:foundation-*:1.6.0-beta01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.0-beta01 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ตอนนี้ตัวแก้ไข
DragAndDropTargetจะรับDragAndDropTargetที่รับอย่างชัดเจนและมี Lambda เพื่อเลือกใช้เซสชันการลากและวาง ตอนนี้มีฟังก์ชัน Factory 2 รายการสำหรับDragAndDropModifierNode1 เครื่องสำหรับรับการโอนและอีก 1 เครื่องสำหรับโอนข้อมูล (I69481) - อัปเดต
maximumFlingVelocityให้แสดงเป็น Float อัปเดตเอกสารเพื่อให้มีความชัดเจนมากขึ้นเกี่ยวกับmaximumFlingVelocityUnity (I8adc7) เปลี่ยนชื่อ
onDragAndDropStartในDragAndDropModifierNodeFactory เป็นacceptDragAndDropTransferแล้วเพิ่ม
acceptsDragAndDropTransferลงในdragAndDropTargetModifierเพื่อยอมรับจากเซสชันการลากและวาง Lambda นี้จะแสดงผล viableDragAndDropTargetหากสนใจเซสชันการลากและวาง ระบบได้แทนที่ Lambda อื่นๆ สำหรับการประมวลผลเหตุการณ์การลากด้วยฟังก์ชันนี้เพิ่มฟังก์ชันโรงงาน
DragAndDropTargetเพื่อรับจากเซสชันการลากและวาง (Iebf3a)การเปิดเผย
startDragImmediatelyในAnchoredDraggableจะช่วยให้ควบคุมการตรวจหาท่าทางการลากเมื่อใช้งานได้ การตั้งค่านี้จะมีประโยชน์เมื่อวิดเจ็ตเคลื่อนไหวไปยังจุดยึดเป้าหมาย ดูตัวอย่าง (Ie6d13, b/285139987)ตอนนี้ Foundation Tooltip API เป็น
@ExperimentalFoundationApi(I30b0b) แล้วนำ
DragAndDropInfoออกจากประเภทDragAndDropModifierNode.dragตอนนี้ใช้พารามิเตอร์สำหรับtransferData, ขนาดการตกแต่ง และ Lambda การตกแต่งแบบลากDrawScopeDragAndDropTargetมีเมธอดสำหรับเหตุการณ์การลากและวางที่เฉพาะเจาะจงแทนที่จะเป็นเมธอดนามธรรมเดียวonDragAndDropEventในฟังก์ชัน Factory สำหรับDragAndDropModifierNodeได้เปลี่ยนชื่อเป็นonDragAndDropStartเพื่อสื่อสารให้ทราบว่าDragAndDropTargetที่ระบุใช้ได้เฉพาะเซสชันการลากและวางที่กำหนดเท่านั้นระบบได้นำ
DragAndDropEventTypeออกแล้ว (I645b1)เปลี่ยนชื่อ
PlatformTextInputModifierNode.runTextInputSessionเป็นestablishTextInputSessionแล้ว (I03cd0)แทนที่
OriginalTextด้วยTextSubstitution(Ifa5a8)เปลี่ยนชื่อ
PlatformTextInputModifierNode.textInputSessionเป็นrunTextInputSessionแล้ว (Ie9c6b)ระบบจะถือว่าองค์ประกอบย่อยของ
SubcomposeLayout(และเลย์เอาต์ที่คล้ายกัน เช่นLazyColumnที่อิงตามองค์ประกอบย่อยนี้) ซึ่งเก็บไว้เพื่อนำกลับมาใช้ใหม่ในอนาคตนั้นปิดใช้งานแล้ว เราได้เปิดตัวassertIsDeactivated()Test API ใหม่เพื่อทดสอบโหนดดังกล่าว ส่วน API ทดสอบอื่นๆ จะกรองโหนดที่ปิดใช้งานออกโดยค่าเริ่มต้น (I2ef84, b/187188981)เปลี่ยนชื่อพารามิเตอร์
clippingEnabledของModifier.magnifierเป็นclipเราได้ทำให้พารามิเตอร์
magnifierCenterของModifier.magnifierเป็นค่า Null ได้โดยยังคงลักษณะการทำงานเริ่มต้นไว้เหมือนเดิม (I6aa66)ตอนนี้ Material
SwipeToRevealAPI (สำหรับ Card และ Chip) ใช้ API ที่อิงตามช่อง (ตามที่ Compose แนะนำ) แทนอินสแตนซ์ที่อิงตามคลาสข้อมูลเพื่อสร้างช่องเหล่านั้น นี่เป็นการเปลี่ยนแปลงที่ทำให้เกิดข้อขัดข้อง โปรดดูการสาธิตและโค้ดตัวอย่างเพื่อดูตัวอย่างวิธีใช้ API ใหม่ (Ia8943)
การแก้ไขข้อบกพร่อง
- ใช้ equals และ hashcode สำหรับ
PageSize.Fixed(Ie3ede, b/300134276) - แก้ไขข้อบกพร่องที่ทำให้เลย์เอาต์
BasicTextไม่หดเมื่อminWidthเปลี่ยนแปลงและminWidthน้อยกว่าข้อจำกัดการวัดเริ่มต้นmaxWidth(Idb19c) - เพิ่มการรองรับโปรแกรมแสดงผลสำหรับ Sweep Gradient ใน
ArcLine(I4d5bb) - แก้ไขปัญหาความเข้ากันได้ของไบนารีกับการเปลี่ยนแปลง Window Inset (Iee695)
- นำเลเยอร์หลักของ Material ออกสำหรับชิป/ปุ่ม Material3 เนื่องจาก Microbenchmark แสดงให้เห็นว่าไม่มีเลเยอร์ดังกล่าวแล้วประสิทธิภาพจะดีกว่า (I55555)
เวอร์ชัน 1.6.0-alpha08
18 ตุลาคม 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha08 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.0-alpha08 มีคอมมิตต่อไปนี้
ฟีเจอร์ใหม่
Modifier.draggable2Dเป็นแป้นกดร่วมใหม่ที่รองรับการลากแบบ 2 มิติได้อย่างง่ายดาย ดูตัวอย่าง (Id95f5, b/214412658)
การเปลี่ยนแปลง API
Modifier.dragAndDrawSourceได้เปลี่ยนชื่อ LambdaonDrawDragShadowเป็นdrawDragDecorationและDragAndDropInfoได้เปลี่ยนชื่อพารามิเตอร์ขนาดเป็นdragDecorationSize(Id0e30, b/303904810)- เราเปลี่ยนชื่อพารามิเตอร์
decorationBoxของBasicTextField2เป็นdecoratorแล้ว นอกจากนี้ ประเภทของเกมยังเปลี่ยนเป็นอินเทอร์เฟซที่สนุกสนานเทียบเท่าTextFieldDecoratorด้วย (I23c1c)
การแก้ไขข้อบกพร่อง
- ปรับปรุงเอกสารเกี่ยวกับ
BasicTextFieldข้อกำหนดของonValueChange(I90fc9, b/160257648)
เวอร์ชัน 1.6.0-alpha07
4 ตุลาคม 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha07 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.0-alpha07 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- เปิดตัว
PlatformTextInputMethodTestOverrideสำหรับการเขียนการทดสอบสำหรับโปรแกรมแก้ไขข้อความที่กำหนดเอง (Id159b) - เปลี่ยนชื่อ
GraphicsSurfaceเป็นAndroidExternalSurface(I11680) - เพิ่ม
DisableNonLinearFontScalingInComposeฟีเจอร์ชั่วคราวเพื่อปิดใช้การปรับขนาดแบบอักษรที่ไม่ใช่แบบเชิงเส้น ตั้งค่าDisableNonLinearFontScalingInCompose = trueในการทดสอบหากคุณต้องการเวลาในการล้างข้อมูล เราจะนำฟีเจอร์นี้ออกใน Compose 1.6.0-beta01 (Ic9486) - เพิ่มคอลเล็กชัน
ColorListและColorSetที่หลีกเลี่ยงการจัดสรร (I744bd) - การเปลี่ยนแปลงนี้จะนำ
shortSnapVelocityThresholdออก ซึ่งได้เปลี่ยนเป็นรายละเอียดการใช้งานของการใช้งานSnapLayoutInfoProvider(I65f6d) - เพิ่มตัวแก้ไข
dragAndDropSourceสำหรับการเริ่มเซสชันการลากและวาง และตัวแก้ไขdragAndDropTargetสำหรับการรับจากเซสชันการลากและวาง (Ib7828, b/286038936) - อัปเดต
SnapPositionInLayoutเอกสารประกอบและวิธีการระบุตำแหน่ง เพิ่มระยะขอบเนื้อหาลงในเมธอดตำแหน่งในSnapPositionInLayout(Id7938, b/300116110) - เพิ่ม
UndoStateในTextFieldStateซึ่งช่วยให้เลิกทำ/ทำซ้ำการเปลี่ยนแปลงที่ผู้ใช้ดำเนินการได้ (Icc024)
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหา
basicMarqueeไม่เคลื่อนไหวหลังจากเปลี่ยนความเร็ว (Id2e77, b/297974036)
เวอร์ชัน 1.6.0-alpha06
20 กันยายน 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha06 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.0-alpha06 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- Composables Wrapper ใหม่สำหรับ
SurfaceViewและTextureView: GraphicsSurface()รวมถึงEmbeddedGraphicsSurface()API นี้เป็น API ที่อยู่ในขั้นทดลองและอาจมีการเปลี่ยนแปลงและการแก้ไข (I9ddb2) - ตอนนี้
Modifier.magnifier()เป็น API ที่เสถียรแล้ว ซึ่งรวมถึงการนำMagnifierStyleออกเพื่อใช้พารามิเตอร์แบบอินไลน์ในตัวแก้ไขเอง (I83bec, b/298381260, b/262367109, b/261438887)
การเปลี่ยนแปลง API
updateCurrentPageและupdateTargetPageเปิดตัวในScrollScopeซึ่งเป็นองค์ประกอบสุดท้ายที่จำเป็นในการอนุญาตให้ปรับแต่งการเลื่อนผ่านแบบภาพเคลื่อนไหวในPagerState.scroll(I9cad5, b/267744105, b/243786897)- นำความหนาแน่นออกจาก
SnapFlingBehaviorการใช้งานSnapLayoutInfoProviderทั้งหมดมีวิธีเข้าถึงความหนาแน่นอยู่แล้ว จึงอาจนำขอบเขตของตัวรับออกได้ ซึ่งจะทำให้การใช้งานทั้งSnapFlingBehaviorและSnapLayoutInfoProvidersมีความซับซ้อนน้อยลง (I153c3) - ทำเครื่องหมายตัวแก้ไขเพิ่มเติมเป็นเสถียร (I56af1, b/298046462)
- นำ
SnapStepSizeออกจากSnapLayoutInfoProviderแล้ว การคำนวณควรทำโดยใช้ข้อมูลเลย์เอาต์และระบุผ่านออฟเซ็ตของวิธีการหรือการสแนป (If320c)
การเปลี่ยนแปลงลักษณะการทำงาน
- ตอนนี้ Compose ใช้การปรับขนาดแบบอักษรที่ไม่ใช่แบบเชิงเส้นเพื่อให้อ่านและเข้าถึงได้ง่ายขึ้น เมื่อการปรับขนาดแบบอักษร > 100% ในการตั้งค่าระบบ ข้อความขนาดเล็กจะเพิ่มขนาดตามปกติ แต่ข้อความที่มีขนาดใหญ่อยู่แล้วจะเพิ่มขนาดเพียงเล็กน้อย นอกจากนี้ ความสูงของบรรทัดที่กำหนดไว้ใน SP จะปรับโดยอัตโนมัติเพื่อให้สอดคล้องกับความสูงที่ตั้งใจไว้ที่ระดับ 100% ดูข้อมูลเพิ่มเติมได้ที่แนวทางปฏิบัติแนะนำในการปรับขนาดแบบอักษร (I11518)
การแก้ไขข้อบกพร่อง
- เลิกใช้
rememberSaveableสำหรับเคล็ดลับเครื่องมือ (Icc131, b/299500338)
เวอร์ชัน 1.6.0-alpha05
6 กันยายน 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha05 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.0-alpha05 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มการโอเวอร์โหลดสำหรับ
BasicSecureTextFieldที่ยอมรับค่าที่ไม่เปลี่ยนแปลงและโค้ดเรียกกลับเพื่อเปลี่ยนค่านั้น เช่นเดียวกับ APIBasicTextFieldปัจจุบัน (Ia4882) - เพิ่ม
Modifier.preferKeepClear()เพื่อทำเครื่องหมายว่าสามารถเขียนได้เนื่องจากต้องการหลีกเลี่ยงหน้าต่างลอยใน API 33 ขึ้นไป (Ib51d5, b/297260115) - ความเร็วในการดีดในคอมโพเนนต์ View เช่น
ScrollViewและRecyclerViewจะจำกัดไว้ที่ViewConfiguration.ScaledMaximumFlingVelocityตอนนี้ Compose มีmaximumFlingVelocityเวอร์ชันของตัวเองซึ่งใช้กับDraggableได้แล้ว (Ibf974) - นำการโอเวอร์โหลด
PagerและPagerStateที่เลิกใช้งานแล้วออก (Iea07e) - เพิ่ม
BasicTooltipBoxลงในcompose.foundationและอัปเดตPlainTooltipBoxกับRichTooltipBoxให้ใช้TooltipBoxกับ Composable ใหม่PlainTooltipและRichTooltip(I79e1d)
เวอร์ชัน 1.6.0-alpha04
23 สิงหาคม 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha04 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.0-alpha04 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มอินเทอร์เฟซ
ReusableCompositionสำหรับจัดการวงจรและการนำองค์ประกอบย่อยกลับมาใช้ซ้ำ (I812d1, b/252846775) Modifier.focusGroupได้รับการเลื่อนขั้นเป็น API ที่เสถียรแล้ว (I7ffa3)- เพิ่มการโอเวอร์โหลดสำหรับ
BasicTextField2ที่ยอมรับค่าที่ไม่เปลี่ยนแปลงและโค้ดเรียกกลับเพื่อเปลี่ยนค่านั้น เช่นเดียวกับ APIBasicTextFieldปัจจุบัน (I3f2b8) - ตอนนี้
GridItemSpan::currentLineSpanเป็น API ที่เสถียรแล้ว (Icc29c) - Canvas ที่ยอมรับ
contentDescriptionตอนนี้เป็น API ที่เสถียรแล้ว (Ib3d29) - เปิดตัว
viewportSizeในScrollStateซึ่งเป็นวิธีดูขนาดviewPortของคอมโพเนนต์ที่ใช้ScrollStateหลังจากวัดผลแล้ว (I8b85a, b/283102682) - แก้ไขปัญหาที่การดึงข้อมูลล่วงหน้าใน Pager ไม่ตรงกับลักษณะการทำงานใน Views (I93352, b/289088847)
- ตอนนี้
Modifier.consumeWindowInsets(PaddingValues)เสถียรแล้ว- ตอนนี้เราได้นำ
Deprecated Modifier.consumedWindowInsetsAPI ออกแล้ว โปรดใช้Modifier.consumeWindowInsetsแทน (Id72bb)
- ตอนนี้เราได้นำ
เวอร์ชัน 1.6.0-alpha03
9 สิงหาคม 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.0-alpha03 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- มีการเพิ่มโอเวอร์โหลดของ
LazyLayoutซึ่งยอมรับ Lambda ของLazyLayoutItemProviderไม่ใช่ออบเจ็กต์ธรรมดาเหมือนก่อน เราเลิกใช้งานการโอเวอร์โหลดก่อนหน้านี้แล้ว (I42a5a) - เพิ่มการรองรับการกำหนดค่า
privateImeOptions(Idb772)
การแก้ไขข้อบกพร่อง
- แก้ไขช่องข้อความที่แสดงแป้นพิมพ์และแก้ไขได้เมื่อ
readOnlyเป็นจริง นอกจากนี้ ยังแก้ไขปัญหาที่แป้นพิมพ์ไม่แสดงเมื่อเปลี่ยนreadOnlyจากจริงเป็นเท็จขณะโฟกัส (I34a19, b/246909589)
เวอร์ชัน 1.6.0-alpha02
26 กรกฎาคม 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.0-alpha02 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- เปิดตัว
PagerLayoutInfoพร้อมข้อมูลที่รวบรวมหลังจากผ่านการวัดผลในPagerนอกจากนี้ เรายังได้เปิดตัวPageInfoซึ่งเป็นข้อมูลเกี่ยวกับหน้าเว็บเดียวที่วัดผลในPager(Iad003, b/283098900) - คำอธิบายประกอบเพิ่มเติมเพื่อระบุอินพุตที่อนุญาตไปยัง Composable (I51109)
- เพิ่ม
SemanticsNodeInteraction.requestFocusเพื่อให้เป็นวิธีที่สะดวกและค้นพบได้ง่ายขึ้นในการขอโฟกัสในการทดสอบ (Ie8722) PlatformTextInput*API ที่ออกแบบใหม่ทั้งหมด (I6c93a, b/274661182, b/267235947, b/277380808)SoftwareKeyboardControllerและLocalSoftwareKeyboardControllerไม่ใช่ฟีเจอร์ทดลองอีกต่อไป ตอนนี้LocalSoftwareKeyboardControllerเป็นCompositionLocalอย่างเป็นทางการแล้ว (I4c364)- ตอนนี้
Modifier.transformableมีเดลต้าการแพนในพารามิเตอร์canPanเพื่อช่วยกำหนดทิศทางการแพนเพื่ออนุญาตหรือไม่อนุญาต (I692aa, b/266829800) - อัปเดตตัวแก้ไข
consumeWindowInsetsเพื่อขยายซูเปอร์คลาสAbstractComposeView(Iacd74, b/269479941)
เวอร์ชัน 1.6.0-alpha01
21 มิถุนายน 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.0-alpha01 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เปิดตัว
AnchoredDraggableAPI ใหม่ใน Foundation ซึ่งใช้สร้างคอมโพเนนต์ที่ลากระหว่างสถานะต่างๆ ได้ เช่น แถบด้านล่างแบบโมดัล API นี้จะมาแทนที่SwipeableAPI ของ Material (I4a2ed)
การเปลี่ยนแปลง API
- การสนับสนุน
InputConnection#requestCursorUpdates(I0c69b) - เปิดตัว
scrollAnimationSpecเพื่ออนุญาตให้ใช้ข้อกำหนดภาพเคลื่อนไหวที่กำหนดเอง อัปเดตBringIntoViewCalculatorเป็นBringIntoViewScrollerแล้ว (Idb741) - เพิ่มประเภท
ResourceResolutionExceptionเพื่อห่อ Throwable ที่เกิดขึ้นเมื่อพยายามโหลดชิ้นงานบิตแมปพร้อมคำอธิบายเส้นทางชิ้นงานที่โหลดไม่สำเร็จ (I19f44, b/230166331, b/278424788) - เพิ่มพร็อพเพอร์ตี้และการดำเนินการทางความหมายเพื่อรองรับการแปลข้อความ (I4a6bc)
- เปิดตัว
BringIntoViewCalculatorAPI ที่ใช้ปรับแต่งวิธีที่คอมโพเนนต์ต่างๆ เช่นScrollableตอบสนองต่อคำขอbringIntoViewเปลี่ยนการโอเวอร์โหลดของ Scrollable เพื่อยอมรับอินสแตนซ์ของBringIntoViewCalculatorโดยไม่บังคับ (Iaf5af)
การแก้ไขข้อบกพร่อง
- เพิ่มการตรวจสอบ Lint เพื่อเตือนหากคุณสร้าง
MutableInteractionSourceในการเขียนโดยไม่จดจำ ซึ่งคล้ายกับการตรวจสอบ Lint สำหรับการสร้างสถานะที่เปลี่ยนแปลงได้ /Animatable(I5daae) - เพิ่มการรองรับการเลือกด้วยเมาส์ การเลือกแบบสัมผัสจะขยายตามคำและลดตามอักขระ (Ic0c6c, b/180639271)
- เพิ่ม
FocusTargetModifierNodeอินเทอร์เฟซที่ใช้สร้างFocusTargetที่กำหนดเองได้ (I9790e)
รุ่น 1.5
เวอร์ชัน 1.5.4
18 ตุลาคม 2023
androidx.compose.foundation:foundation-*:1.5.4 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.5.4 มีคอมมิตเหล่านี้
เวอร์ชัน 1.5.3
4 ตุลาคม 2023
androidx.compose.foundation:foundation-*:1.5.3 ได้รับการเผยแพร่แล้ว เวอร์ชันนี้ไม่มีการเปลี่ยนแปลง
รุ่น 1.5.2
27 กันยายน 2023
androidx.compose.foundation:foundation-*:1.5.2 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.5.2 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องในข้อความที่ทำให้เกิดข้อขัดข้องในบางกรณีเมื่อมีการลบล้างความหมาย
รุ่น 1.5.1
6 กันยายน 2023
androidx.compose.foundation:foundation-*:1.5.1 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.5.1 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขช่องข้อความที่แสดงแป้นพิมพ์และแก้ไขได้เมื่อ
readOnlyเป็นจริง นอกจากนี้ ยังแก้ไขปัญหาที่แป้นพิมพ์ไม่แสดงเมื่อเปลี่ยนreadOnlyจากจริงเป็นเท็จขณะโฟกัส (I34a19, b/246909589)
เวอร์ชัน 1.5.0
9 สิงหาคม 2023
androidx.compose.foundation:foundation-*:1.5.0 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.5.0 มีคอมมิตเหล่านี้
การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 1.4.0
- ตัวแก้ไขพื้นฐานหลายรายการ รวมถึง
Modifier.clickable,Modifier.draggable,Modifier.scrollable, ตัวแก้ไขเลย์เอาต์ และอื่นๆ ได้รับการย้ายข้อมูลไปยังModifier.NodeAPI แล้ว ซึ่งจะช่วยลดค่าใช้จ่ายในการคอมโพสเริ่มต้น - การปรับปรุงความเสถียรของเพจเจอร์ เราได้แก้ไขข้อบกพร่องหลายอย่างแล้ว
- ตอนนี้พารามิเตอร์
pageCountอยู่ในPagerStateแทนที่จะอยู่ใน Pager เอง
เวอร์ชัน 1.5.0-rc01
26 กรกฎาคม 2023
androidx.compose.foundation:foundation-*:1.5.0-rc01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.5.0-rc01 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
คุณสามารถเลือกตรวจสอบเพื่อแนะนำให้ย้ายข้อมูลการเรียก
mutableStateOf()ไปยังประเภทเฉพาะทางที่เกี่ยวข้องสำหรับ Primitive ได้ รหัส Lint คือAutoboxingStateCreationก่อนหน้านี้ การตรวจสอบนี้จะเปิดใช้โดยค่าเริ่มต้นสำหรับทุกโปรเจ็กต์ หากต้องการดูคำเตือนนี้ในเอดิเตอร์ของ Android Studio และเอาต์พุต Lint ของโปรเจ็กต์ ให้เปลี่ยนระดับความรุนแรงจากข้อมูลเป็นคำเตือน (หรือสูงกว่า) โดยประกาศwarning "AutoboxingStateCreation"ภายในbuild.gradleหรือการกำหนดค่าbuild.gradle.ktsของโมดูลตามที่แสดง (I34f7e)android { lint { warning "AutoboxingStateCreation" } ... }
เวอร์ชัน 1.5.0-beta03
28 มิถุนายน 2023
androidx.compose.foundation:foundation-*:1.5.0-beta03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.5.0-beta03 มีคอมมิตเหล่านี้
เวอร์ชัน 1.5.0-beta02
7 มิถุนายน 2023
androidx.compose.foundation:foundation-*:1.5.0-beta02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.5.0-beta02 มีคอมมิตเหล่านี้
เวอร์ชัน 1.5.0-beta01
24 พฤษภาคม 2023
androidx.compose.foundation:foundation-*:1.5.0-beta01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.5.0-beta01 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ใช้
PlatformDataProviderเพื่อระบุอัตราการเต้นของหัวใจและจำนวนก้าวรายวัน ระบบจะนำอินเทอร์เฟซSensorGatewayออกจาก API สาธารณะ (I55b84)
การแก้ไขข้อบกพร่อง
- ลดการจัดสรรระหว่างการวัดรายการ/ตารางกริด/ฯลฯ ที่โหลดแบบ Lazy (Iaf9e2)
- ลดการจัดสรรเมื่อใช้สแนปชอต (I65c09)
- นำการจัดสรรออกจากภาพเคลื่อนไหวสปริง (Ie9431)
- นำการจัดสรรออกจาก
TextLayout(I0fd11) - นำการจัดสรรหลายรายการในการติดตามความเร็วของเคอร์เซอร์ออก (I26bae)
เวอร์ชัน 1.5.0-alpha04
10 พฤษภาคม 2023
androidx.compose.foundation:foundation:1.5.0-alpha04 และ androidx.compose.foundation:foundation-layout:1.5.0-alpha04 เปิดตัวแล้ว เวอร์ชัน 1.5.0-alpha04 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม
TextStyle.merge(...)ที่เพิ่มประสิทธิภาพพร้อมรายการพารามิเตอร์ทั้งหมด (Iad234, b/246961787) - เปิดตัว
SnapLayoutInfoProviderที่ใช้กับLazyGridStateได้ (I92134, b/269237141, b/260914964) - เพิ่ม
Modifier.animateItemPlacement()เวอร์ชันทดลองสำหรับขอบเขตรายการของตารางกริดแบบสลับที่โหลดแบบ Lazy Loading คุณสามารถใช้กับรายการเพื่อสร้างภาพเคลื่อนไหวการเปลี่ยนตำแหน่ง/การเรียงลำดับใหม่โดยอัตโนมัติ (I4b62d, b/257034719) - เลื่อนเวอร์ชัน
GridCells.FixedSizeเป็นเวอร์ชันเสถียรFixedSizeจะกำหนดLazyGridโดยที่แต่ละเซลล์จะมีขนาดที่แน่นอนบนแกนไขว้ และพื้นที่ที่เหลือจะกระจายตามการจัดเรียงแกนไขว้ (I8542f) - เปิดตัวขอบเขตตัวรับ
PagerScopeสำหรับ Pager และฟังก์ชันยูทิลิตีสำหรับการคำนวณออฟเซ็ตของหน้าที่กำหนด (If2577) - แนะนำ
snapPositionalThresholdเมื่อสร้างลักษณะการทำงานของการปัด Snap ใช้พารามิเตอร์นี้เพื่อระบุเกณฑ์ตำแหน่งสำหรับการสแนปกับวิดีโอสั้นใน Pager (If8f7f) - แทนที่
SnapLayoutInfoProvider.calculateSnappingOffsetBoundsด้วยcalculateSnappingOffsetแล้ว ในวิธีใหม่นี้ เราเพียงขอออฟเซ็ตถัดไปเพื่อสแนป การคำนวณขอบเขตควรดำเนินการที่ระดับการติดตั้งใช้งาน เนื่องจากอาจแตกต่างกันไปขึ้นอยู่กับวิธีที่ต้องการให้เกิดการสแนป (I923a4) LazyStaggeredGridAPI ได้รับการเลื่อนขั้นเป็นเวอร์ชันเสถียรแล้ว (I633a5)- นำ
pageCountออกจากHorizontal/VerticalPagerโดยควรระบุในตอนที่สร้างสถานะ อัปเดตPagerStateและrememberPagerStateเพื่อยอมรับpageCount(Ieb52d, b/266965072) - นำ
pageCountออกจากHorizontal/VerticalPagerโดยควรระบุในตอนที่สร้างสถานะ อัปเดตPagerStateและrememberPagerStateเพื่อยอมรับpageCount(Ifa3cb, b/266965072) - แนะนำ
shortSnapVelocityThresholdในSnapFlingBehaviorของ Pager (I7379e, b/275579012) - เพิ่ม
FlowRowScopeและFlowColumnScope(I54fe2)
การแก้ไขข้อบกพร่อง
- การเรียกใช้เพื่อรับความหมายในข้อความเมื่อข้อจำกัดมี
minWidthและminHeightจะไม่ทำให้เกิดข้อขัดข้องอีกต่อไป (Ibd072) - แก้ไขการถดถอยที่แป้นพิมพ์ไม่แสดงสำหรับช่องข้อความภายในกล่องโต้ตอบที่ไม่ได้สร้างโดย
Dialogcomposable (I82551, b/262140644)
เวอร์ชัน 1.5.0-alpha03
19 เมษายน 2023
androidx.compose.foundation:foundation:1.5.0-alpha03 และ androidx.compose.foundation:foundation-layout:1.5.0-alpha03 เปิดตัวแล้ว เวอร์ชัน 1.5.0-alpha03 มีคอมมิตต่อไปนี้
การเปิดตัวนี้จะเปิดใช้สแต็กการแสดงข้อความใหม่สำหรับ Compose สแต็กใหม่นี้ได้รับการเพิ่มประสิทธิภาพด้านประสิทธิภาพ และคุณไม่ควรเห็นการเปลี่ยนแปลงใดๆ ที่มองเห็นได้
หากเห็นการเปลี่ยนแปลงในข้อความที่แสดงผล คุณสามารถแก้ไขข้อบกพร่องได้โดยการตั้งค่า NewTextRendering1_5 = false เพื่อยืนยันความแตกต่างของลักษณะการทำงาน การตั้งค่านี้จะบังคับให้มีการจัดองค์ประกอบใหม่ โปรดรายงานความแตกต่างของลักษณะการทำงานเป็นข้อบกพร่อง
เราจะนำแฟล็กการแก้ไขข้อบกพร่องออกก่อนที่จะเปิดตัว 1.5 beta01 (Iada23, b/246960758)
การเปลี่ยนแปลง API
- สร้าง
FlowColumn/FlowRowในบรรทัด (Idab37)
เวอร์ชัน 1.5.0-alpha02
5 เมษายน 2023
androidx.compose.foundation:foundation:1.5.0-alpha02 และ androidx.compose.foundation:foundation-layout:1.5.0-alpha02 เปิดตัวแล้ว เวอร์ชัน 1.5.0-alpha02 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- เพิ่มการรองรับเซลล์ขนาดคงที่ใน
LazyGridและการจัดเรียงด้วยการจัดเรียงแกนไขว้ (I83ed9, b/235121277, b/267942510) - เพิ่มการรองรับเลนที่มีขนาดคงที่ใน
LazyStaggeredGridและการจัดเรียงเลนด้วยการจัดเรียงแกนไขว้ (I7d519) - ตอนนี้คุณเปิด
UrlAnnotationในAnnotatedStringผ่านบริการช่วยเหลือพิเศษ เช่นTalkBackได้แล้ว (If4d82, b/253292081) - เพิ่ม
InsertTextAtCursorการดำเนินการเชิงความหมายสำหรับช่องข้อความ (I11ed5) - ตอนนี้การดำเนินการทดสอบที่เกี่ยวข้องกับข้อความ (เช่น
performTextInput) จะขอโฟกัสโดยตรงโดยใช้การดำเนินการทางความหมายแทนการคลิกที่ช่อง (I6ed05) - เพิ่มการรองรับการเว้นวรรค/การจัดเรียงแกนไขว้โดยใช้
verticalArrangementในFlowRowและhorizontalArrangementในFlowColumnนอกจากนี้ เรายังนำverticalAlignmentและhorizontalAlignmentระดับบนสุดในFlowRow/FlowColumnออกด้วย นักพัฒนาแอปสามารถใช้Modifier.alignแทนได้ ซึ่งจะช่วยลดความสับสนระหว่างรูปแบบการตั้งชื่อของverticalAlignmentกับverticalArrangement(I87b60, b/268365538)
เวอร์ชัน 1.5.0-alpha01
22 มีนาคม 2023
androidx.compose.foundation:foundation:1.5.0-alpha01 และ androidx.compose.foundation:foundation-layout:1.5.0-alpha01 เปิดตัวแล้ว เวอร์ชัน 1.5.0-alpha01 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ข้อความและ
BasicTextได้รับการปรับโครงสร้างใหม่เพื่อใช้ระบบตัวแก้ไขใหม่ ซึ่งจะช่วยปรับปรุงประสิทธิภาพได้อย่างมากในหลายๆ กรณี ไม่ควรมีการเปลี่ยนแปลงที่มองเห็นได้ (If1d17, b/246961435) - เพิ่ม
PerformImeActionการดำเนินการเชิงความหมายเพื่อเรียกใช้การดำเนินการ IME ในโหนดโปรแกรมแก้ไขข้อความ (Ic606f, b/269633506)
การแก้ไขข้อบกพร่อง
- อัปเดตส่วนประกอบภายในของ
Modifier.hoverablehoverableตัวแก้ไขจะแสดงในเครื่องมือตรวจสอบก็ต่อเมื่อเปิดใช้ (I82103)
เวอร์ชัน 1.4
เวอร์ชัน 1.4.3
3 พฤษภาคม 2023
androidx.compose.foundation:foundation:1.4.3 และ androidx.compose.foundation:foundation-layout:1.4.3 จะได้รับการเผยแพร่โดยไม่มีการเปลี่ยนแปลง (มีการอัปเดตเวอร์ชันเท่านั้น)
เวอร์ชัน 1.4.2
19 เมษายน 2023
androidx.compose.foundation:foundation:1.4.2 และ androidx.compose.foundation:foundation-layout:1.4.2 เปิดตัวแล้ว เวอร์ชัน 1.4.2 มีคอมมิตเหล่านี้
เวอร์ชัน 1.4.1
5 เมษายน 2023
androidx.compose.foundation:foundation:1.4.1 และ androidx.compose.foundation:foundation-layout:1.4.1 เปิดตัวแล้ว เวอร์ชัน 1.4.1 มีคอมมิตเหล่านี้
เวอร์ชัน 1.4.0
22 มีนาคม 2023
androidx.compose.foundation:foundation:1.4.0 และ androidx.compose.foundation:foundation-layout:1.4.0 เปิดตัวแล้ว เวอร์ชัน 1.4.0 มีคอมมิตเหล่านี้
การเปลี่ยนแปลงสำคัญตั้งแต่เวอร์ชัน 1.3.0
- เพิ่มการผสานรวมความเข้ากันได้ของอีโมจิกับ
TextและTextFieldรวมถึงย่อหน้าระดับล่าง ระบบจะเปิดใช้โดยค่าเริ่มต้นเมื่อกำหนดค่า emojicompat EmojiCompatสามารถกำหนดค่าในข้อความที่เฉพาะเจาะจงได้โดยใช้PlatformParagraphStyle- เพิ่มการรองรับการขยายบรรทัดเต็มใน
LazyStaggeredGrid(I28252) - เพิ่ม
onHoverเวอร์ชันทดลองลงในClickableText(I6938f) - เปิดตัวการโอเวอร์โหลดเวอร์ชันทดลองใหม่สำหรับฟังก์ชัน
runComposeUiTestและฟังก์ชันcreate*ComposeRuleที่ยอมรับพารามิเตอร์CoroutineContextระบบจะใช้บริบทในการเรียบเรียงการทดสอบ รวมถึงการเรียกใช้LaunchedEffectและrememberCoroutineScope()ในการเรียบเรียง (I10614, b/265177763) FlowRowและFlowColumnพร้อมใช้งานเป็น@ExperimentalFoundationApiแล้ว ซึ่งช่วยให้จัดวางคอมโพเนนต์ตามแถวและคอลัมน์ได้อย่างยืดหยุ่นมากขึ้น โดยจะขึ้นบรรทัดใหม่หากมีพื้นที่ไม่เพียงพอในแกนหลัก (I3a7b2)Modifier.basicMarquee()พร้อมใช้งานในเวอร์ชันทดลองเพื่อแสดงเนื้อหาด้วยเอฟเฟกต์มาร์คีที่เลื่อน (I2df44, b/139321650)
เวอร์ชัน 1.4.0-rc01
8 มีนาคม 2023
androidx.compose.foundation:foundation:1.4.0-rc01 และ androidx.compose.foundation:foundation-layout:1.4.0-rc01 เปิดตัวแล้ว เวอร์ชัน 1.4.0-rc01 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- เปิดตัว
PlatformTextInputAdapterAPI ระดับต่ำใหม่สำหรับการสร้างการใช้งานอินพุตข้อความที่กำหนดเองซึ่งสื่อสารกับ API ของแพลตฟอร์มโดยตรง (I58df4) - เพิ่มการรองรับเลย์เอาต์ย้อนกลับไปยัง
LazyStaggeredGrid(I3ef4a)
การแก้ไขข้อบกพร่อง
- ตอนนี้การดำเนินการตามความหมายของ
BasicTextFieldSetTextจะอัปเดตบัฟเฟอร์ข้อความโดยใช้เส้นทางโค้ดเดียวกับการอัปเดต IME และฟังก์ชันการทดสอบ (เช่นperformTextReplacement) - ฟังก์ชันการทดสอบข้อความ
performTextClearance,performTextReplacementและperformTextSelectionจะใช้SemanticsActionsแล้ว (I0807d, b/269633168, b/269624358)
เวอร์ชัน 1.4.0-beta02
22 กุมภาพันธ์ 2023
androidx.compose.foundation:foundation:1.4.0-beta02 และ androidx.compose.foundation:foundation-layout:1.4.0-beta02 เปิดตัวแล้ว เวอร์ชัน 1.4.0-beta02 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มการเรียกกลับ
Modifier.Node.onReset()ใหม่เพื่อให้คุณรีเซ็ตสถานะในเครื่องบางอย่างเพื่อจัดการกรณีที่Layoutจะนำกลับมาใช้ใหม่ได้อย่างเหมาะสม (เช่น เป็นรายการของLazyColumn) แก้ไขFocusTargetModifierNodeเพื่อรีเซ็ตสถานะที่โฟกัสอย่างถูกต้อง (I65495, b/265201972) - เพิ่มพารามิเตอร์
BlendModeลงในเมธอดDrawScope.drawText,Paragraph.paintและMultiParagraph.paintเพื่อรองรับอัลกอริทึมการผสมผสานที่แตกต่างกันเมื่อวาดข้อความบน Canvas (I57508) - นำ
modifierElementOf()API ออกแล้ว โปรดขยายเวลาจากModifierNodeElementโดยตรงแทน (Ie6d21)
การแก้ไขข้อบกพร่อง
- การปรับแฮนเดิลการเลือกจะเลือกอักขระบางส่วนไม่ได้อีกต่อไป (Idedd1)
- แก้ไขข้อขัดข้องเมื่อกด Ctrl + Backspace ใน
TextFieldที่ว่างเปล่า (I0427f, b/244185537)
เวอร์ชัน 1.4.0-beta01
8 กุมภาพันธ์ 2023
androidx.compose.foundation:foundation:1.4.0-beta01 และ androidx.compose.foundation:foundation-layout:1.4.0-beta01 เปิดตัวแล้ว เวอร์ชัน 1.4.0-beta01 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- ตั้งแต่เวอร์ชัน 1.3 เป็นต้นมา เราได้เพิ่มการผสานรวมความเข้ากันได้ของอีโมจิกับ
TextและTextFieldรวมถึงย่อหน้าระดับล่าง ระบบจะเปิดใช้โดยค่าเริ่มต้นเมื่อกำหนดค่า emojicompat EmojiCompatสามารถกำหนดค่าในข้อความที่เฉพาะเจาะจงได้โดยใช้PlatformParagraphStyle
การเปลี่ยนแปลง API
- เพิ่มการติดตั้งใช้งานทั่วไปของ
PinnableContainerAPI ที่ใช้ในLazyLayoutsทั้งหมดเพื่อเก็บรักษารายการที่ออกจากองค์ประกอบ แต่ยังต้องใช้งานอยู่ (If45a4) - เปลี่ยนชื่อ
PinnableContainer.PinnedHandle.unpin()เป็นrelease()แล้ว (I4667a)
การมีส่วนร่วมภายนอก
- เพิ่มพร็อพเพอร์ตี้
mainAxisItemSpacingลงในLazyListLayoutInfo,LazyGridLayoutInfoและLazyStaggeredGridItemInfo(I52fad)
เวอร์ชัน 1.4.0-alpha05
25 มกราคม 2023
androidx.compose.foundation:foundation:1.4.0-alpha05 และ androidx.compose.foundation:foundation-layout:1.4.0-alpha05 เปิดตัวแล้ว เวอร์ชัน 1.4.0-alpha05 มีคอมมิตต่อไปนี้
ฟีเจอร์ใหม่
- เพิ่มการรองรับการครอบคลุมทั้งบรรทัดใน
LazyStaggeredGrid(I28252) - เพิ่ม
onHoverเวอร์ชันทดลองไปยังClickableText(I6938f) - เปิดตัวการโอเวอร์โหลดเวอร์ชันทดลองใหม่สำหรับฟังก์ชัน
runComposeUiTestและฟังก์ชันcreate*ComposeRuleที่ยอมรับพารามิเตอร์CoroutineContextระบบจะใช้บริบทในการเรียบเรียงการทดสอบ รวมถึงการเรียกใช้LaunchedEffectและrememberCoroutineScope()ในการเรียบเรียง (I10614, b/265177763)
การเปลี่ยนแปลง API
- ผสานรวม API ก่อน/หลังของ
OverscrollEffectเข้ากับฟังก์ชันapplyToScrollและapplyToFlingที่ผสานรวม "Decorator" ดูตัวอย่างที่อัปเดตแล้วในเอกสารประกอบเพื่อดูตัวอย่างวิธีใช้เอฟเฟกต์การเลื่อนเกินด้วยรูปร่าง API ใหม่ (I8a9c4, b/255554340) - ประเภท/ค่า Null ของฟังก์ชันในบรรทัด/ที่เลิกใช้งานแล้ว/ที่ซ่อน (I24f91)
LineBreakและHyphensAPI ในTextStyleได้รับการอัปเกรดเป็นเวอร์ชันที่เสถียรแล้ว (Ic1e1d)
การแก้ไขข้อบกพร่อง
- ตอนนี้เคอร์เซอร์ในช่องข้อความจะกะพริบต่อไปแม้ว่าจะปิดใช้ภาพเคลื่อนไหวแล้วก็ตาม (I95e70, b/265177763)
Modifier.basicMarqueeจะเคลื่อนไหวแม้ว่าจะปิดใช้ภาพเคลื่อนไหวในการตั้งค่าระบบแล้วก็ตาม (I23389, b/262298306, b/265177763)
การมีส่วนร่วมภายนอก
- เราจะไม่เลิกใช้งานเมธอด
notifyFocusedRectในTextInputSessionและTextInputServiceอีก (I23a04, b/262648050)
เวอร์ชัน 1.4.0-alpha04
11 มกราคม 2023
androidx.compose.foundation:foundation:1.4.0-alpha04 และ androidx.compose.foundation:foundation-layout:1.4.0-alpha04 เปิดตัวแล้ว เวอร์ชัน 1.4.0-alpha04 มีคอมมิตต่อไปนี้
ฟีเจอร์ใหม่
FlowRowและFlowColumnพร้อมใช้งานเป็น@ExperimentalFoundationApiแล้ว ซึ่งช่วยให้จัดวางคอมโพเนนต์ตามแถวและคอลัมน์ได้อย่างยืดหยุ่นมากขึ้น โดยจะขึ้นบรรทัดใหม่หากมีพื้นที่ไม่เพียงพอในแกนหลัก (I3a7b2)Modifier.basicMarquee()พร้อมใช้งานในเวอร์ชันทดลองสำหรับการแสดงเนื้อหาด้วยเอฟเฟกต์ข้อความเลื่อน (I2df44, b/139321650)
การเปลี่ยนแปลง API
FocusRequesterModifierจะเลิกใช้งานเพื่อเปลี่ยนไปใช้FocusRequesterNode(I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589)- ตอนนี้ตัวสร้าง
AndroidFontที่มีvariationSettingsเป็น API ที่เสถียรแล้ว และสามารถใช้เพื่อสร้างตัวอธิบายแบบอักษรประเภทใหม่ได้ (I5adcc, b/261565807) - เปิดตัว
PinnableContainerAPI ที่เผยแพร่โดย Lazy List ผ่าน Composition Local ซึ่งช่วยให้ปักหมุดรายการปัจจุบันได้ ซึ่งหมายความว่าระบบจะไม่ทิ้งรายการดังกล่าวเมื่อเลื่อนออกจากมุมมอง เช่นModifier.focusable()จะปักหมุดรายการที่โฟกัสปัจจุบันผ่านกลไกนี้ (Ib8881, b/259274257, b/195049010) - เขียนวิธีที่องค์ประกอบที่เลื่อนได้ตอบสนองต่อ
bringIntoViewRequestersและองค์ประกอบที่โฟกัสได้ใหม่เพื่อจำลองความซับซ้อนของการดำเนินการเหล่านั้นได้ดียิ่งขึ้น และจัดการกรณีขอบได้มากขึ้น (I2e5fe, b/241591211, b/192043120, b/237190748, b/230756508, b/239451114) - ความสามารถในการเป็นค่าว่างของประเภทการคืนค่าเพิ่มเติมของฟังก์ชันที่เลิกใช้งานแล้วและซ่อนอยู่ (Ibf7b0)
- เพิ่มการทดลอง
TextMotionไปยังTextStyleเพื่อกำหนดข้อความให้เป็นStatic(default)หรือภาพเคลื่อนไหว ใช้TextMotion.Animatedหากจะปรับขนาด แปล หรือหมุนข้อความผ่านภาพเคลื่อนไหว (I24dd7) - เพิ่ม
TextFieldFocusModifierเพื่อแก้ไขลักษณะการทำงานของการนำทางด้วยโฟกัสสำหรับแพลตฟอร์ม Android (I00303) - แทนที่อาร์กิวเมนต์
maxSize: IntSizeในdrawTextด้วยsize: Sizeเพื่อให้สอดคล้องกับฟังก์ชันDrawScopeอื่นๆsizeจะตั้งค่าเป็นSize.Unspecifiedโดยค่าเริ่มต้น ซึ่งไม่ควรเปลี่ยนลักษณะการทำงานเริ่มต้นก่อนหน้านี้ (Icd27d)
การแก้ไขข้อบกพร่อง
- ปรับฟิสิกส์การสแนปใน
SnapFlingBehaviourเพื่อให้รู้สึกเป็นธรรมชาติมากขึ้น
ปัญหาที่ทราบ
- เมื่ออัปเดตจาก
androidx.compose.foundation:1.4.0-alpha03เป็นandroidx.compose.foundation:1.4.0-alpha04คุณอาจพบข้อผิดพลาดjava.lang.NoSuchFieldErrorที่นี่คือจุดที่รายงานปัญหาครั้งแรก เราได้ส่งการแก้ไขแล้ว และการแก้ไขนี้จะพร้อมใช้งานในการอัปเดต Compose ครั้งถัดไป วิธีแก้ปัญหาชั่วคราวคืออัปเดตไลบรารีandroidx.compose.materialและandroidx.compose.material3เป็นเวอร์ชันล่าสุด(1.1.0-alpha04) หรือดาวน์เกรดandroidx.compose.foundationเป็น 1.4.0-alpha03
เวอร์ชัน 1.4.0-alpha03
7 ธันวาคม 2022
androidx.compose.foundation:foundation:1.4.0-alpha03 และ androidx.compose.foundation:foundation-layout:1.4.0-alpha03 เปิดตัวแล้ว เวอร์ชัน 1.4.0-alpha03 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- ในการทดสอบ UI โดยใช้กฎ Compose ระบบจะไม่ส่งต่อการดำเนินการต่อที่กลับมาทำงานอีกครั้งในระหว่างการเรียกกลับ
withFrameNanosจนกว่าการเรียกกลับของเฟรมทั้งหมดจะทำงานเสร็จ ซึ่งจะตรงกับลักษณะการทำงานของ Compose เมื่อเรียกใช้ตามปกติ อย่างไรก็ตาม การทดสอบที่อิงตามลักษณะการทำงานแบบเดิมอาจล้มเหลว การเปลี่ยนแปลงนี้ควรส่งผลต่อโค้ดที่เรียกใช้withFrameNanosหรือwithFrameMillisโดยตรงเท่านั้น และมีตรรกะภายนอก Callback ที่ส่งไปยังฟังก์ชันเหล่านั้น ซึ่งอาจต้องย้ายไปไว้ภายใน Callback ดูการเปลี่ยนแปลงการทดสอบภาพเคลื่อนไหวใน CL นี้เพื่อดูตัวอย่าง - เพิ่มพารามิเตอร์
onPerformTraversals: (Long) -> Unitที่ไม่บังคับลงในตัวสร้างTestMonotonicFrameClockและฟังก์ชัน Factory เพื่อเรียกใช้โค้ดหลังจาก Callback ของwithFrameNanosแต่ก่อนที่จะกลับมาใช้ Coroutine ของผู้โทร (Idb413, b/254115946, b/222093277, b/255802670) - แนะนำการดำเนินการด้านการช่วยเหลือพิเศษของหน้าเว็บ:
PageUp,PageDown,PageLeft,PageRightโปรดทราบว่าฟีเจอร์เหล่านี้ใช้ได้ตั้งแต่ API 29 เป็นต้นไปเท่านั้น (Ida4ab) - ขอแนะนำ
HorizontalPagerและVerticalPagerซึ่งเป็นวิธีแสดง Composable ในลักษณะของ Pager เปิดตัวPagerStateเพื่อควบคุม Pager รวมถึงข้อมูลการค้นหาเกี่ยวกับสถานะปัจจุบันของ Pager เปิดตัวPageSizeซึ่งเป็นวิธีควบคุมขนาดหน้าของ Pager โดยสามารถใช้เพื่อสร้างภาพสไลด์เหมือน Pager ได้ เปิดตัวPagerSnapDistanceซึ่งเป็นวิธีควบคุมการทำงานของการสแนปในลักษณะการปัดของ Pager (I01120) - เปิดตัวการโอเวอร์โหลดใน
SnapFlingBehavior.performFlingเพื่อช่วยให้เข้าใจว่าการโยนจะไปตกที่ใด (I569f6) - นำ
OverscrollEffect#isEnabledออกแล้ว คุณไม่จำเป็นต้องจดจำและตั้งค่าสถานะนี้ เพียงแค่ไม่ต้องส่งเหตุการณ์ไปยังเอฟเฟกต์การเลื่อนเกินในกรณีที่คุณไม่ต้องการให้แสดงการเลื่อนเกิน (เช่น หากScrollableState#canScrollForward/backwardทั้ง 2 รายการแสดงผลเป็นเท็จ) (I1a4b0, b/255554340, b/255557085) - เพิ่ม
ScrollableState#canScrollForwardและScrollableState#canScrollBackwardเพื่อสอบถามว่าScrollableStateมีพื้นที่ให้เลื่อนในทิศทางใดทิศทางหนึ่งหรือไม่ (ไม่ว่าจะอยู่ที่ค่าต่ำสุด / สูงสุดของช่วงหรือไม่) ค่าเริ่มต้นจะเป็นจริงเพื่อให้เข้ากันได้แบบย้อนหลังกับการใช้งานScrollableStateที่มีอยู่ ผู้ใช้สามารถใช้สิ่งนี้เพื่อแสดงให้ผู้ใช้เห็นว่ายังเลื่อนได้ และยังใช้เพื่อหลีกเลี่ยงการส่งเดลต้าไปยังScrollableStatesที่ไม่มีที่ว่างให้เลื่อนในทิศทางที่กำหนดได้ด้วย เพื่อลดการทำงานที่ไม่จำเป็น (Idf1a0, b/255557085) - เพิ่ม Modifier API เพื่อค้นหาข้อมูลการเลื่อนขององค์ประกอบระดับบน (I2ba9d, b/203141462)
- ใช้ใน
Clickableเพื่อหน่วงเวลาการโต้ตอบการกดอย่างถูกต้อง เมื่อท่าทางสัมผัสอาจกลายเป็นเหตุการณ์การเลื่อน - แก้ไขปัญหาที่
Clickablesไม่หน่วงการกระเพื่อมอย่างถูกต้องเมื่อใช้ภายในScrollable ViewGroup - อัปเดตลิ้นชักและชีตเพื่อหน่วงเวลาการกดอย่างถูกต้องในกรณีที่ท่าทางสัมผัสอาจกลายเป็นเหตุการณ์การเลื่อน
- อัปเดตการตั้งชื่อ
snapStepSizeให้สอดคล้องกับวิธีการอื่นๆ ในSnapLayoutInfoProvider(Ife67c) - เพิ่ม
EmojiCompatในCompose(Ibf6f9, b/139326806) - เปลี่ยนชื่อ
consumedWindowInsets()เป็นconsumeWindowInsets()และwithConsumedWindowInsets()เป็นonConsumedWindowInsetsChanged()รวมถึงเปิดตัวตัวแก้ไขต่อสาธารณะ (Ie44e1)
การแก้ไขข้อบกพร่อง
- แก้ไขข้อขัดข้องกับ
Modifier.animateItemPlacement()และ Lazy Grid แล้ว ปัญหานี้เกิดขึ้นในบางกรณีเมื่อจำนวนสินค้าใหม่น้อยกว่าจำนวนสินค้าก่อนหน้า (I0bcac, b/253195989)
เวอร์ชัน 1.4.0-alpha02
9 พฤศจิกายน 2022
androidx.compose.foundation:foundation:1.4.0-alpha02 และ androidx.compose.foundation:foundation-layout:1.4.0-alpha02 เปิดตัวแล้ว เวอร์ชัน 1.4.0-alpha02 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ตอนนี้
awaitFirstDownและwaitForUpOrCancellationยอมรับPointerEventPassเพื่อความยืดหยุ่นที่มากขึ้น (I7579a, b/212091796) - เปลี่ยน
beyondBoundCountAPI จาก Lazy* API (I12197) - เปิดตัวพารามิเตอร์ใน Lazy API เพื่อเขียนและวางรายการนอกวิวพอร์ต (I69e89, b/172029355)
- เพิ่มพารามิเตอร์
minLinesลงในBasicTextและBasicTextFieldซึ่งช่วยให้ตั้งค่าความสูงขั้นต่ำของ Composable เหล่านี้ในแง่ของ จำนวนบรรทัด (I24294, b/122476634)
เวอร์ชัน 1.4.0-alpha01
24 ตุลาคม 2022
androidx.compose.foundation:foundation:1.4.0-alpha01 และ androidx.compose.foundation:foundation-layout:1.4.0-alpha01 เปิดตัวแล้ว เวอร์ชัน 1.4.0-alpha01 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มวิธีการใหม่
awaitEachGesture()สำหรับเครื่องตรวจจับท่าทางสัมผัส ซึ่งทำงานคล้ายกับforEachGesture()แต่การวนซ้ำเหนือท่าทางจะทำงานภายในAwaitPointerEventScopeทั้งหมด ดังนั้นเหตุการณ์จึงไม่สูญหายระหว่างการวนซ้ำ - เราเลิกใช้งาน
forEachGesture()แล้วและหันมาใช้awaitEachGesture()แทน เนื่องจากช่วยป้องกันไม่ให้เหตุการณ์สูญหายระหว่างท่าทางสัมผัส (Iffc3f, b/251260206) - เพิ่ม
WindowInsets.imeAnimationSource และWindowInsets.imeAnimationTargetเพื่อกำหนดความคืบหน้าของภาพเคลื่อนไหวและทราบว่า IME จะอยู่ที่ใดหลังจากภาพเคลื่อนไหวเสร็จสมบูรณ์ (I356f1, b/217770337)
เวอร์ชัน 1.3
เวอร์ชัน 1.3.1
9 พฤศจิกายน 2022
androidx.compose.foundation:foundation:1.3.1 และ androidx.compose.foundation:foundation-layout:1.3.1 เปิดตัวแล้ว เวอร์ชัน 1.3.1 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาด้านประสิทธิภาพใน
BeyondBoundsLayout(aosp/2255266) ContentInViewModifierจะไม่อ่านพิกัดเลย์เอาต์เว้นแต่จะแนบมา (aosp/2241316)
เวอร์ชัน 1.3.0
24 ตุลาคม 2022
androidx.compose.foundation:foundation:1.3.0 และ androidx.compose.foundation:foundation-layout:1.3.0 เปิดตัวแล้ว เวอร์ชัน 1.3.0 มีคอมมิตเหล่านี้
การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 1.2.0
- เปิดตัวเวอร์ชันทดลองของ
LazyVerticalStaggeredGridและLazyHorizontalStaggeredGrid - เราได้เพิ่ม
SnapFlingBehavior,rememberSnapFlingBehaviorและ API อื่นๆ ที่เกี่ยวข้องเป็นการทดลอง - ตอนนี้
Modifier.clickable,Modifier.toggleableและModifier.selectableจะแสดงระลอกคลื่นหากคลิกด้วยแป้นพิมพ์หรือ D-pad บนรีโมตคอนโทรล
เวอร์ชัน 1.3.0-rc01
5 ตุลาคม 2022
androidx.compose.foundation:foundation:1.3.0-rc01 และ androidx.compose.foundation:foundation-layout:1.3.0-rc01 เปิดตัวแล้ว เวอร์ชัน 1.3.0-rc01 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- เปิดตัว
lowVelocityAnimationSpecที่ใช้โดยขั้นตอนการเข้าใกล้เมื่อความเร็วในการดีดไม่เพียงพอที่จะลดลง (Iaeb27) - เพิ่ม API ไฮเฟนทดลองใหม่เพื่อรองรับการใส่ไฮเฟนอัตโนมัติในข้อความ (Iaa869)
เวอร์ชัน 1.3.0-beta03
21 กันยายน 2022
androidx.compose.foundation:foundation:1.3.0-beta03 และ androidx.compose.foundation:foundation-layout:1.3.0-beta03 เปิดตัวแล้ว เวอร์ชัน 1.3.0-beta03 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มตัวเลือกเพื่อปรับแต่งการขึ้นบรรทัดใหม่ในข้อความ (I86907)
BringIntoViewResponders สามารถรับขอบเขตที่อัปเดตล่าสุดของคำขอขณะประมวลผลได้แล้ว (If86a5, b/241591211)- เพิ่มการรองรับระยะห่างระหว่างรายการใน
Staggered Grid(I10b82) เวอร์ชันทดลอง - เพิ่มการเว้นวรรคเนื้อหาใน
Staggered Grid(I342ea) เวอร์ชันทดลอง - เปลี่ยนอาร์กิวเมนต์
size:IntSizeเป็นconstraints: ConstraintsในเมธอดTextMeasurer.measureเพื่อรองรับข้อจำกัดความกว้างขั้นต่ำ (I37530, b/242707525) - เพิ่ม
Modifier.withConsumedWindowInsets()เพื่อให้WindowInsetsนำไปใช้ภายนอกwindowInsetsPaddingได้ - เพิ่ม
MutableWindowInsetsเพื่อให้เปลี่ยนWindowInsetsได้ง่ายๆ โดยไม่ต้องจัดองค์ประกอบใหม่ (I7fd28, b/237019262, b/243119659)
เวอร์ชัน 1.3.0-beta02
7 กันยายน 2022
androidx.compose.foundation:foundation:1.3.0-beta02 และ androidx.compose.foundation:foundation-layout:1.3.0-beta02 เปิดตัวแล้ว เวอร์ชัน 1.3.0-beta02 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เวอร์ชันเริ่มต้นของ
StaggeredGridทดลอง (Ia48be) - เปลี่ยนชื่อ
FocusDirection.InและFocusDirection.Outเป็นFocusDirection.EnterและFocusDirection.Exit(Ia4262, b/183746982) - เปิดตัว
rememberSnapFlingBehaviorโอเวอร์โหลดซึ่งเป็นวิธีที่รวดเร็วในการเปิดใช้การสแนปในLazyLists(Ifb48a) - แทนที่
snapFlingBehaviorfactory ด้วยคลาสSnapFlingBehaviorที่เป็นรูปธรรมSnapLayoutInfoProviderเมธอดที่กำหนดขอบเขตไว้สำหรับความหนาแน่นเพื่อให้ผู้ใช้ API แปลง Dp<->Px ได้ง่ายขึ้น (I54a11) - อัปเดต
LazyLayoutMeasureScope.measureเพื่อแสดงรายการของรายการที่วางได้ โดยเน้นความคงที่ที่ต้องการของค่าที่แสดงผล (I48b7c) - เปิดตัว
SnapLayoutInfoProviderซึ่งใช้LazyListStateเพื่อสร้างอินสแตนซ์ของSnapLayoutInfoProviderที่ใช้เปิดใช้ SnapFlingBehaviorสำหรับLazyListsได้ (I2dd10)
การแก้ไขข้อบกพร่อง
- ปรับโครงสร้าง
AwaitPointerEventScope#awaitLongPressOrCancellationให้ตรงกับฟังก์ชัน await อื่นๆ (I646e6)
เวอร์ชัน 1.3.0-beta01
24 สิงหาคม 2022
androidx.compose.foundation:foundation:1.3.0-beta01 และ androidx.compose.foundation:foundation-layout:1.3.0-beta01 เปิดตัวแล้ว เวอร์ชัน 1.3.0-beta01 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- นำ
pointerPositionออกจากOverscrollEffect- เอฟเฟกต์ที่สนใจตำแหน่งเคอร์เซอร์สามารถใช้Modifier.pointerInput { }ในeffectModifierเพื่อรับตำแหน่งเคอร์เซอร์ปัจจุบันแทนได้ (I9f606, b/241239306) - เปิดเผย
AwaitPointerEventScope#awaitLongPressOrCancellationเป็นองค์ประกอบเพิ่มเติมสำหรับการตรวจจับท่าทางที่ซับซ้อนยิ่งขึ้น (I04374, b/181577176) - เปิดตัว
lazyListSnapLayoutInfoProviderเพื่อเปิดใช้การสแนปในรายการแบบเลื่อน (I3ecdf) - เปิดตัว
SnapFlingBehaviorซึ่งเป็นลักษณะการปัดที่ช่วยให้สามารถสแนปรายการได้ ระบุอินสแตนซ์ของSnapLayoutInfoProviderพร้อมข้อมูลเกี่ยวกับเลย์เอาต์การสแนป (Ie754c)
เวอร์ชัน 1.3.0-alpha03
10 สิงหาคม 2022
androidx.compose.foundation:foundation:1.3.0-alpha03 และ androidx.compose.foundation:foundation-layout:1.3.0-alpha03 เปิดตัวแล้ว เวอร์ชัน 1.3.0-alpha03 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- ตอนนี้แบบอักษรทรัพยากรรองรับการตั้งค่าตัวแปรแบบอักษร (API 26 ขึ้นไป) แล้ว (I900dd, b/143703328)
- การรองรับแบบอักษรที่ปรับแต่งได้ใน
DeviceFontFamilyNameFont(Ic1279, b/143703328) - นำคำอธิบายประกอบเวอร์ชันทดลองออกจาก
PlatformTextStyleและLineHeightStyleแล้ว (I64bef) - ตอนนี้ฟิลด์ข้อความจะแสดงข้อยกเว้นโดยละเอียดมากขึ้นเมื่อ
OffsetMappingที่VisualTransformationระบุส่งคืนดัชนีที่ไม่ถูกต้อง (Ie73f9, b/229378536) - เปิดตัว API เวอร์ชันทดลองเพื่อแชร์ตรรกะของผู้ให้บริการไอเทมระหว่างเลย์เอาต์แบบ Lazy (Ic891c)
ScrollableDefaults.reverseDirection()ไม่ใช่ฟีเจอร์ทดลองอีกต่อไป (Iba646)- เลิกใช้งาน
SemanticsModifier.idและย้ายรหัสความหมายไปที่LayoutInfo.semanticsIdแทน (Iac808, b/203559524) checkScrollableContainerConstraints()ไม่ใช่ฟีเจอร์ทดลองอีกต่อไป (I2c290)Modifier.clipScrollableContainer()ไม่ใช่ฟีเจอร์ทดลองอีกต่อไป (Ia2b44)- เลิกใช้งาน
TextInputService.show|hideSoftwareKeyboardโปรดใช้SoftwareKeyboardControllerในโค้ดแอปและTextInputSessionในโค้ดการจัดการ IME แทน (I14e4c, b/183448615)
เวอร์ชัน 1.3.0-alpha02
27 กรกฎาคม 2022
androidx.compose.foundation:foundation:1.3.0-alpha02 และ androidx.compose.foundation:foundation-layout:1.3.0-alpha02 เปิดตัวแล้ว เวอร์ชัน 1.3.0-alpha02 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มฟังก์ชันส่วนขยาย
drawTextในDrawScopeเพื่อให้มีวิธีวาดข้อความหลายรูปแบบใน Composable และตัวแก้ไขที่ทำงานในDrawScopeเช่นCanvasและdrawBehind(I16a62, b/190787898)
การแก้ไขข้อบกพร่อง
- ตอนนี้ระบบจะซ่อนแป้นพิมพ์ซอฟต์แวร์เมื่อปิดใช้ช่องข้อความขณะโฟกัส (I6e3e4, b/237308379)
- เมื่อเพิ่มเหตุการณ์
InputEventChangeลงใน Velocity Tracker เราจะพิจารณาเดลต้าแทนตำแหน่ง ซึ่งจะรับประกันว่าระบบจะคำนวณความเร็วได้อย่างถูกต้องในทุกกรณี แม้ว่าองค์ประกอบเป้าหมายจะเคลื่อนที่ (Icea9d, b/216582726, b/223440806, b/227709803) - ตอนนี้เมื่อองค์ประกอบที่เลื่อนได้มีองค์ประกอบย่อยที่โฟกัสอยู่ ระบบจะเลื่อนอย่างถูกต้องเพื่อให้องค์ประกอบย่อยที่โฟกัสอยู่ยังคงอยู่ในมุมมองเมื่อมีการลดขนาด แม้ว่าจะมีการเคลื่อนไหวขนาดก็ตาม (I80867, b/230756508, b/220119990)
- แก้ไขข้อขัดข้องที่เกิดขึ้นเมื่อล้างและเติม
TextFieldขณะที่การเลือกใช้งานอยู่ (I1235b, b/208655565, b/214253689)
เวอร์ชัน 1.3.0-alpha01
29 มิถุนายน 2022
androidx.compose.foundation:foundation:1.3.0-alpha01 และ androidx.compose.foundation:foundation-layout:1.3.0-alpha01 เปิดตัวแล้ว เวอร์ชัน 1.3.0-alpha01 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เปิดตัว
UrlAnnotationประเภทคำอธิบายประกอบและเมธอดที่เกี่ยวข้องเพื่อรองรับTalkBackการรองรับลิงก์ในAnnotatedString(I1c754, b/231495122)
การแก้ไขข้อบกพร่อง
BasicTextFieldcursorBrushสามารถเคลื่อนไหวได้แล้วโดยไม่ต้องรีสตาร์ทตัวจับเวลาเคอร์เซอร์ (I812e6, b/236383522)
เวอร์ชัน 1.2
เวอร์ชัน 1.2.1
10 สิงหาคม 2022
androidx.compose.foundation:foundation:1.2.1 และ androidx.compose.foundation:foundation-layout:1.2.1 เปิดตัวแล้ว เวอร์ชัน 1.2.1 มีคอมมิตเหล่านี้
เวอร์ชัน 1.2.0
27 กรกฎาคม 2022
androidx.compose.foundation:foundation:1.2.0 และ androidx.compose.foundation:foundation-layout:1.2.0 เปิดตัวแล้ว เวอร์ชัน 1.2.0 มีคอมมิตเหล่านี้
การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 1.1.0
- ตอนนี้
LazyVerticalGridและLazyHorizontalGridเสถียรแล้ว - ตอนนี้คุณระบุประเภทเนื้อหาสำหรับรายการในรายการและตารางแบบ Lazy ได้แล้ว ซึ่งจะช่วยให้คอมโพเนนต์นำองค์ประกอบกลับมาใช้ซ้ำได้อย่างมีประสิทธิภาพมากขึ้น
- ตอนนี้ Lazy List และ Grid มีพารามิเตอร์
userScrollEnabledซึ่งช่วยให้ปิดใช้การเลื่อนผ่านท่าทางสัมผัสของผู้ใช้ได้ - เพิ่ม API เวอร์ชันทดลองใหม่ชื่อ
LazyLayoutซึ่งเป็น API ที่เราใช้ภายในเพื่อขับเคลื่อนรายการและตารางแบบ Lazy OverscrollEffectเราได้เปิดตัว API ในเวอร์ชันทดลอง คุณกําหนดเอฟเฟกต์การเลื่อนเกินที่กําหนดเอง รวมถึงเพิ่มเอฟเฟกต์แพลตฟอร์มมาตรฐานลงในคอนเทนเนอร์ที่เลื่อนได้ที่กําหนดเองได้- เราได้เปิดตัวAPI ความสามารถในการทำงานร่วมกันของการเลื่อนที่ซ้อนกันเพื่อให้สามารถทำงานร่วมกันระหว่างมุมมองและนักแสดงการเลื่อน Compose
- เพิ่มการเลื่อนด้วยเมาส์และแทร็กแพดลงในคอนเทนเนอร์การเลื่อนทั้งหมดแล้ว
เวอร์ชัน 1.2.0-rc03
29 มิถุนายน 2022
androidx.compose.foundation:foundation:1.2.0-rc03 และ androidx.compose.foundation:foundation-layout:1.2.0-rc03 เปิดตัวแล้ว เวอร์ชัน 1.2.0-rc03 มีคอมมิตเหล่านี้
- ไม่มีการเปลี่ยนแปลงตั้งแต่เวอร์ชัน 1.2.0-rc02
เวอร์ชัน 1.2.0-rc02
22 มิถุนายน 2022
androidx.compose.foundation:foundation:1.2.0-rc02 และ androidx.compose.foundation:foundation-layout:1.2.0-rc02 เปิดตัวแล้ว เวอร์ชัน 1.2.0-rc02 มีคอมมิตเหล่านี้
เวอร์ชัน 1.2.0-rc01
15 มิถุนายน 2022
androidx.compose.foundation:foundation:1.2.0-rc01 และ androidx.compose.foundation:foundation-layout:1.2.0-rc01 เปิดตัวแล้ว เวอร์ชัน 1.2.0-rc01 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เราได้เปิดตัว
OverscrollEffectเวอร์ชันทดลองเพื่ออนุญาตให้ใช้เอฟเฟกต์การเลื่อนเกินแบบกำหนดเองควบคู่ไปกับโอเวอร์โหลดModifier.scrollableที่ยอมรับเอฟเฟกต์ดังกล่าว LocalOverScrollConfigurationเวอร์ชันทดลองได้ย้ายจากfoundation.gestureไปยังแพ็กเกจพื้นฐานและเปลี่ยนชื่อเป็นLocalOverscrollConfiguration(If19fb, b/204650733)- ตอนนี้อินเทอร์เฟซในไลบรารี Compose สร้างขึ้นโดยใช้เมธอดอินเทอร์เฟซเริ่มต้นของ jdk8 (I5bcf1)
- เปิดตัว API เวอร์ชันทดลอง
checkScrollableContainerConstraints()ซึ่งช่วยให้ตรวจสอบได้ว่าเราไม่ได้ซ้อนคอนเทนเนอร์ที่เลื่อนได้ คุณใช้ฟีเจอร์นี้ได้เมื่อสร้างเลย์เอาต์แบบเลื่อนที่โหลดแบบ Lazy ของคุณเองผ่านLazyLayout(Id6fab, b/233352497) - นำ
LazyVerticalGridที่เลิกใช้งานแล้วออกจากแพ็กเกจandroidx.compose.foundation.lazyAPI ที่เสถียรใหม่จะอยู่ในandroidx.compose.foundation.lazy.grid(I73c76, b/225192009)
เวอร์ชัน 1.2.0-beta03
1 มิถุนายน 2022
androidx.compose.foundation:foundation:1.2.0-beta03 และ androidx.compose.foundation:foundation-layout:1.2.0-beta03 เปิดตัวแล้ว เวอร์ชัน 1.2.0-beta03 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม
IntervalListและMutableIntervalListเวอร์ชันทดลองใหม่ ซึ่งช่วยให้แสดงรายการค่าบางอย่างผ่านช่วงเวลาหลายช่วงได้ ซึ่งจะมีประโยชน์เมื่อคุณต้องการกำหนด DSL ของคุณเองที่คล้ายกับ DSL ที่ใช้โดยLazyColumnซึ่งสามารถกำหนดรายการได้ผ่านการเรียกใช้ item/items หลายครั้ง (I2d05e, b/228580728)
การแก้ไขข้อบกพร่อง
- ชี้แจงเอกสารประกอบสำหรับ
WindowInsets.imeเพื่อระบุว่ามีการรายงานระยะขอบimeย้อนกลับไปจนถึง API 23 แต่จะเคลื่อนไหวได้เฉพาะใน API 30 ขึ้นไป (Ia7fc0, b/230756508) - การกดแป้นลบไปข้างหน้าเมื่อเคอร์เซอร์อยู่ที่ท้ายช่องข้อความจะไม่ทำให้เกิดข้อขัดข้องอีกต่อไป
- ตอนนี้
DeleteSurroundingTextCommandและDeleteSurroundingTextInCodePointsCommandกำหนดให้อาร์กิวเมนต์ของตัวสร้างต้องไม่เป็นค่าลบ (Ica8e6, b/199919707)
เวอร์ชัน 1.2.0-beta02
18 พฤษภาคม 2022
androidx.compose.foundation:foundation:1.2.0-beta02 และ androidx.compose.foundation:foundation-layout:1.2.0-beta02 เปิดตัวแล้ว เวอร์ชัน 1.2.0-beta02 มีคอมมิตเหล่านี้
- ความละเอียดของแบบอักษรที่ดาวน์โหลดได้ซึ่งไม่เปลี่ยนขนาดเลย์เอาต์ของข้อความหรือ
TextFieldก่อนหน้านี้จะไม่วาดใหม่ ซึ่งส่งผลให้แบบอักษรแสดงผลไม่ถูกต้อง การแก้ไขข้อบกพร่องนี้ช่วยให้มั่นใจได้ว่าเลย์เอาต์ข้อความจะทริกเกอร์การวาดใหม่เสมอ (b/229727404) (I1d49e, b/229727404)
เวอร์ชัน 1.2.0-beta01
11 พฤษภาคม 2022
androidx.compose.foundation:foundation:1.2.0-beta01 และ androidx.compose.foundation:foundation-layout:1.2.0-beta01 เปิดตัวแล้ว เวอร์ชัน 1.2.0-beta01 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- นี่คือรุ่นเบต้า 1.2 รุ่นแรก
การเปลี่ยนแปลง API
- เพิ่ม
BeyondBoundsIntervalเวอร์ชันทดลองที่สามารถใช้ โดยการติดตั้งใช้งานLazyListที่กำหนดเองเมื่อจัดวางรายการที่อยู่นอกขอบเขตที่มองเห็นได้ (Ifabfb, b/184670295) - เปลี่ยนชื่อ
LineHeightBehaviorเป็นLineHeightStyle - เปลี่ยนชื่อ
LineVerticalAlignmentเป็นLineHeightStyle.Alignment - เปลี่ยนชื่อ
LineHeightTrimเป็นLineHeightStyle.Trim - นำค่าเริ่มต้นของตัวสร้างออกจาก
LineHeightStyle(I582bf, b/181155707) - เพิ่มค่าเริ่มต้นสำหรับสมาชิกที่ไม่บังคับของอินเทอร์เฟซ
LazyLayoutItemProvider(Iba8a0) - ใน
LazyLayoutItemProviderAPI แทนที่จะให้ Factory แสดงผล Lambda ที่ประกอบกันได้ตามดัชนี ตอนนี้เรามีฟังก์ชันที่ประกอบกันได้ที่ง่ายกว่าเดิมชื่อ Item ซึ่งรับดัชนี (Id2196) - เปลี่ยนชื่อ LazyLayoutItemsProvider เป็น LazyLayoutItemProvider (I0638c)
LazyLayoutItemsProvider.itemsCountเปลี่ยนชื่อเป็นitemCount(Id409c)- เพิ่มแปรงใน
TextStyleและSpanStyleเพื่อให้วาดข้อความด้วยการไล่ระดับสีได้ (I53869, b/187839528) - แอตทริบิวต์
trimFirstLineTop,trimLastLineBottomของLineHeightBehaviorเปลี่ยนเป็น Enum เดียว:LineHeightTrimLineHeightTrimมีค่า 4 สถานะที่กำหนดโดยบูลีน 2 รายการFirstLineTop,LastLineBottom, ทั้งคู่ และไม่มี (Ifc6a5, b/181155707) เพิ่ม
LineHeightBehaviorลงในตัวควบคุมTextStyleและParagraphStyle. LineHeightBehaviorเพื่อกำหนดว่าจะใช้ความสูงของบรรทัดกับด้านบนของบรรทัดแรกและด้านล่างของบรรทัดสุดท้ายหรือไม่ นอกจากนี้ยังกำหนดการจัดแนวของบรรทัดในช่องว่างที่TextStyle(lineHeight) จัดให้ด้วยเช่น คุณสามารถรับลักษณะการทำงานที่คล้ายกับที่ CSS กำหนดผ่าน
LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false)ได้การกำหนดค่า
trimFirstLineTop,trimLastLineBottomจะทำงานอย่างถูกต้อง เมื่อincludeFontPaddingเป็นเท็จเท่านั้น (I97332, b/181155707)เพิ่มตัวแก้ไข
imeNestedScroll()เวอร์ชันทดลองเพื่อให้ผู้พัฒนาควบคุม IME ผ่านการเลื่อนได้ (I60759)
การแก้ไขข้อบกพร่อง
- แก้ไขการถดถอยที่ฟิลด์ข้อความจะไม่ซ่อนแป้นพิมพ์เมื่อนำออกจากคอมโพสิตขณะโฟกัส (I7a410, b/230536793, b/225541817)
- รองรับจุดไข่ปลาเมื่อความสูงถูกจำกัดและไม่พอดีกับข้อความทุกบรรทัด (Ie528c, b/168720622)
BringIntoViewRequester.bringIntoViewจะระงับเสมอจนกว่าคำขอจะเสร็จสมบูรณ์หรือถูกขัดจังหวะด้วยคำขอใหม่กว่าซึ่งไม่ทับซ้อนกัน ระบบจะจัดคิวคำขอที่ทับซ้อนกัน (I43e7f, b/216790855)- ตอนนี้การเรียกใช้
BringIntoViewRequester.bringIntoViewพร้อมกันสำหรับสี่เหลี่ยมผืนผ้าที่ทับซ้อนกันอย่างสมบูรณ์จะพิจารณาเฉพาะคำขอของสี่เหลี่ยมผืนผ้าที่ใหญ่กว่า (I34be7, b/216790855, b/184760918) - เปิดอยู่โดยค่าเริ่มต้น
includeFontPaddingคุณปิดincludeFontPaddingได้โดยใช้แอตทริบิวต์TextStyle.platformTextStyleในอนาคตอันใกล้นี้ เราจะเปลี่ยนลักษณะการทำงานเริ่มต้น แต่ในระหว่างนี้ การดำเนินการนี้จะช่วยให้เราผสานรวมการปรับปรุงความสูงของบรรทัด (aosp/2058653) ได้ดียิ่งขึ้น และแก้ปัญหาการตัดTextFieldได้ (I01423, b/171394808) Modifier.bringIntoViewRequesterไม่ได้ใช้onGloballyPositionedอีกต่อไป (I630f5)
การมีส่วนร่วมภายนอก
- ตอนนี้
MouseInjectionScope.scroll(delta = someDelta)จะกลับด้านใน Android หากเราเลื่อนในแนวตั้ง (หาก someDelta เป็นบวก ระบบจะเลื่อนลง) (Ifb697, b/224992993)
เวอร์ชัน 1.2.0-alpha08
20 เมษายน 2022
androidx.compose.foundation:foundation:1.2.0-alpha08 และ androidx.compose.foundation:foundation-layout:1.2.0-alpha08 เปิดตัวแล้ว เวอร์ชัน 1.2.0-alpha08 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- แสดงความหนาทั้งหมดที่มีสำหรับแบบอักษรของระบบใน Android เมื่อใช้
FontFamily.SansSerifซึ่งจะใช้ชื่อแบบอักษรสำรอง เช่น sans-serif-medium ภายใน API 21-28 นี่เป็นการเปลี่ยนแปลงลักษณะการทำงาน เนื่องจากก่อนหน้านี้ API 21-28 รองรับเฉพาะน้ำหนัก 400 และ 700 (I380fe, b/156048036, b/226441992) - ตอนนี้ Paragraph และ MultiParagraph ยอมรับพารามิเตอร์ข้อจำกัดแล้ว การส่ง
Constraints.maxHeightจะไม่มีผลในตอนนี้ แต่จะช่วยให้ ทำการคำนวณบางอย่างได้ในอนาคต เช่น การย่อข้อความตามความสูง (I6afee, b/168720622) SubcomposeSlotReusePolicy.getSlotsToRetain()ตอนนี้ยอมรับคลาสที่กำหนดเองซึ่งคล้ายกับ MutableSet ซึ่งไม่อนุญาตให้เพิ่มรายการใหม่ในคลาส (Icd314)- การดูบางส่วน (ลงหรือตำแหน่ง) เลิกใช้งานแล้วใน
PointerInputChangeคุณใช้consume()เพื่อใช้การเปลี่ยนแปลงทั้งหมดได้ คุณใช้isConsumedเพื่อดูว่ามีบุคคลอื่นใช้การเปลี่ยนแปลงไปก่อนหน้านี้หรือไม่ PointerInputChange::copy()จะทำสำเนาแบบตื้นเสมอ ซึ่งหมายความว่าระบบจะใช้สำเนาของPointerInputChangeเมื่อมีการใช้สำเนาใดสำเนาหนึ่ง หากต้องการสร้างPointerInputChangeที่ไม่มีขอบเขต ให้ใช้ตัวสร้างแทน (Ie6be4, b/225669674)- เปิดตัว
LazyLayoutAPI เวอร์ชันทดลองใหม่ ซึ่งจะช่วยให้คุณสร้างคอมโพเนนต์ของคุณเองได้ เช่นLazyColumnของLazyVerticalGridโปรดทราบว่า API อยู่ในช่วงเริ่มต้นและอาจมีการเปลี่ยนแปลงในรุ่นต่อๆ ไป (Iba2bc, b/166591700) - ตอนนี้
AndroidFontจะใช้typefaceLoaderเป็นพารามิเตอร์ของเครื่องมือสร้าง (I2c971) - ตอนนี้
WindowInsetsCompanion จะแสดงระดับการมองเห็น (ไม่ว่าจะอยู่บนหน้าจอหรือไม่ ไม่ว่าจะมีส่วนทับซ้อนกับหน้าต่างหรือไม่) และขนาดที่อาจเป็นได้หากพร้อมใช้งานในอุปกรณ์ แต่ไม่ได้ใช้งานอยู่ในขณะนี้ (I65182, b/217770337)
เวอร์ชัน 1.2.0-alpha07
6 เมษายน 2022
androidx.compose.foundation:foundation:1.2.0-alpha07 และ androidx.compose.foundation:foundation-layout:1.2.0-alpha07 เปิดตัวแล้ว เวอร์ชัน 1.2.0-alpha07 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม
PinnableParentAPI ที่อนุญาตให้องค์ประกอบย่อยของเลย์เอาต์แบบ Lazy ป้องกันไม่ให้ทิ้งรายการที่คอมโพสอยู่ในปัจจุบัน (Ibbdd0, b/184670295) - ตอนนี้
LazyListLayoutInfoและLazyGridLayoutInfoมีช่องbeforeContentPaddingและafterContentPaddingแล้ว (I3b628, b/200920410) - เพิ่ม
KeyboardType.Decimalเป็นทางเลือกแทนKeyboard.Numberเพื่อรวมตัวคั่นทศนิยมใน IME โดยเฉพาะ (Iec4c8, b/209835363) - เพิ่มตัวอธิบายแบบอักษรใหม่ Font(DeviceFontFamilyName) เพื่อ ค้นหาแบบอักษรที่ติดตั้งในระบบโดยไม่บังคับในระหว่างเชนการแทนที่แบบอักษร (I30468, b/219754572)
PointerEventType.ScrollและPointerEvent.scrollDeltaเป็น API ที่เสถียรแล้ว (I574c5, b/225669674)- เพิ่มการกำหนดค่าความเข้ากันได้ชั่วคราวสำหรับ
includeFontPaddingในTextStyle/ParagraphStyle. includeFontPaddingซึ่งสามารถเปลี่ยนแปลงได้ผ่านTextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false))นี่เป็นตัวเลือกการกำหนดค่าชั่วคราวเพื่อเปิดใช้การย้ายข้อมูลและจะถูกนำออก (If47be, b/171394808) - อัปเดต
FontFamily.Resolverเพื่อผสานรวมการตั้งค่าการช่วยเหลือพิเศษสำหรับข้อความตัวหนาทั้งระบบ (I6c1e7) - พร็อพเพอร์ตี้ส่วนขยาย
consumeWindowInsetsของComposeViewช่วยให้นักพัฒนาแอปปิดใช้การใช้ Android WindowInsets ได้ ซึ่งจะช่วยให้ComposeViewsแยกกันในลำดับชั้นใช้WindowInsetsได้โดยไม่รบกวนกัน (I0ef08, b/220943142)
เวอร์ชัน 1.2.0-alpha06
23 มีนาคม 2022
androidx.compose.foundation:foundation:1.2.0-alpha06 และ androidx.compose.foundation:foundation-layout:1.2.0-alpha06 เปิดตัวแล้ว เวอร์ชัน 1.2.0-alpha06 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มการดำเนินการทางความหมาย
RequestFocusเพื่อขอให้โฟกัสที่เป้าหมายที่โฟกัสได้ (I17b71) - ตอนนี้เราได้ผสานรวม
FocusOrderเข้ากับFocusPropertiesแล้ว และfocusProperties()ก็มีความสามารถทั้งหมดของfocusOrder()แล้วFocusOrderและfocusOrder()เลิกใช้งานแล้วfocusOrder()ที่ยอมรับfocusRequesterควรแทนที่ด้วยตัวแก้ไขfocusRequester()ร่วมกับfocusProperties()ซึ่งจะช่วยให้ตัวแก้ไขแยกความกังวลได้ชัดเจนยิ่งขึ้น (I601b7) WindowInsets.asPaddingValues(Density)ได้รับการเพิ่มเพื่อให้ผู้พัฒนาทำการแปลงได้โดยไม่ต้องอยู่ในองค์ประกอบ (I94c35)- อัปเดตการแยกวิเคราะห์ Vector Drawable เพื่อรองรับการมิเรอร์อัตโนมัติเพื่อพลิกเนื้อหาของ
VectorPainterหากเลย์เอาต์ปัจจุบัน เป็นแบบ RTL (I79cd9, b/185760237)
การแก้ไขข้อบกพร่อง
- ตอนนี้ตัวแก้ไขการเลื่อน (
Modifier.verticalScroll(),Modifier.horizontalScroll()และModifier.scrollable()) จะเลื่อนเพื่อให้ Composable ที่โฟกัสยังคงมองเห็นได้หากมีการปรับขนาดพื้นที่เลื่อนและ Composable ที่โฟกัสมองเห็นได้ก่อนหน้านี้ - ตอนนี้ระบบจะแสดง TextField เหนือแป้นพิมพ์เมื่อมีการโฟกัสและแป้นพิมพ์แสดงขึ้น เมื่ออยู่ในรายการที่เลื่อนได้แบบไม่เลื่อนตามและโหมดป้อนข้อมูลแบบนุ่มเป็น
ADJUST_RESIZE(I4a485, b/190539358, b/192043120, b/216842427)
เวอร์ชัน 1.2.0-alpha05
9 มีนาคม 2022
androidx.compose.foundation:foundation:1.2.0-alpha05 และ androidx.compose.foundation:foundation-layout:1.2.0-alpha05 เปิดตัวแล้ว เวอร์ชัน 1.2.0-alpha05 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ตอนนี้
LazyVerticalGridและLazyHorizontalGridเสถียรแล้ว (I307c0) LazyGridItemInfo.Unknownถูกแทนที่ด้วยLazyGridItemInfo.UnknownRowและLazyGridItemInfo.UnknownColumnแยกกัน (I56d51)LazyVerticalGrid/LazyHorizontalGridและ API ที่เกี่ยวข้องทั้งหมดถูกย้ายไปไว้ในแพ็กเกจย่อย.gridโปรดอัปเดตการนำเข้าจากandroidx.compose.foundation.lazyเป็นandroidx.compose.foundation.lazy.grid(I2d446, b/219942574)- ข้อความ: ตอนนี้ระบบจะปิด
includeFontPaddingโดยค่าเริ่มต้นincludeFontPadding=falseปัญหาการตัดข้อความอันเป็นผลมาจากincludeFontPadding=falseได้รับการจัดการแล้ว และไม่ควรมีการตัดข้อความสำหรับสคริปต์ที่มีความยาว (I31c84, b/171394808) - ตอนนี้อินเทอร์เฟซที่วัดผลได้จะแสดงพร็อพเพอร์ตี้ parentData (I3313f)
- เปิดตัว
Modifier.onFocusedBoundsChangedเพื่ออนุญาต สังเกตขอบเขตขององค์ประกอบที่โฟกัสได้ขององค์ประกอบย่อย (I14283, b/220030968, b/190539358, b/192043120, b/216842427) - เพิ่ม LazyHorizontalGrid แล้ว (I61ae7, b/191238807)
- เพิ่ม
LazyVerticalGridAPI ใหม่เพื่อกำหนดขนาดแกนไขว้ (I17723) - เพิ่มตัวแก้ไข FocusGroup (I64bc0, b/213508274, b/184670295)
การแก้ไขข้อบกพร่อง
WindowInsets.toString()จะแสดงค่าที่ถูกต้องแล้วในตอนนี้ (I1585d)
การมีส่วนร่วมภายนอก
- อัปเดตให้ใช้ Kotlinx coroutines 1.6.0 (I3366d)
เวอร์ชัน 1.2.0-alpha04
23 กุมภาพันธ์ 2022
androidx.compose.foundation:foundation:1.2.0-alpha04 และ androidx.compose.foundation:foundation-layout:1.2.0-alpha04 เปิดตัวแล้ว เวอร์ชัน 1.2.0-alpha04 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
BringIntoViewRespondersไม่จำเป็นต้องส่งคำขอไปยังเครื่องตอบกลับระดับบนสุดด้วยตนเองอีกต่อไป แต่ต้องส่งคืนสี่เหลี่ยมผืนผ้าที่ต้องการให้องค์ประกอบระดับบนสุดนำมาแสดงทันทีแทน (I8e66a)- รองรับการโหลดแบบอักษรแบบไม่พร้อมกันในข้อความ (I77057, b/214587005)
LazyVerticalGridรองรับline breakingก่อนรายการที่มีช่วงที่ไม่ได้อยู่ภายในบรรทัดปัจจุบันแล้ว (I05c40, b/207462103)- เปลี่ยนชื่อ
excludeFromSystemGesturesเป็นsystemGesturesExclusion(I19526) แล้ว - ตอนนี้
LazyVerticalGridรองรับ reverseLayout แล้ว (I6d7d7, b/215572963, b/211753558) - เพิ่ม
WindowInsets.only()method เพื่ออนุญาตให้นักพัฒนาแอป รวมเฉพาะมิติข้อมูลจาก WindowInsets (I14c94, b/217768486) เพิ่ม
ComposableTarget,ComposableTargetMarkerและComposableOpenTargetที่อนุญาตให้รายงานเวลาคอมไพล์เมื่อมีการเรียกใช้ฟังก์ชันที่ใช้ร่วมกันซึ่งกำหนดเป้าหมายไปยังแอปพลิเคชันที่ไม่ได้ออกแบบมาเพื่อใช้ในกรณีส่วนใหญ่ ปลั๊กอินคอมไพเลอร์ Compose จะอนุมานคำอธิบายประกอบได้ ดังนั้นการใช้คำอธิบายประกอบเหล่านี้โดยตรงจึงไม่ค่อยเกิดขึ้น กรณีที่อนุมานไม่ได้ ได้แก่ การสร้างและ การใช้ตัวปรับแต่งที่กำหนดเอง ฟังก์ชันที่ประกอบกันได้แบบนามธรรม (เช่น เมธอดอินเทอร์เฟซ) ฟิลด์ หรือตัวแปรส่วนกลางที่เป็น แลมบ์ดาที่ประกอบกันได้ (ระบบจะอนุมานตัวแปรและพารามิเตอร์ภายใน) หรือเมื่อใช้
ComposeNodeหรือฟังก์ชันที่ประกอบกันได้ที่เกี่ยวข้องสำหรับฟังก์ชันที่กำหนดเองที่เรียกใช้ฟังก์ชันที่ใช้ร่วมกันได้
ComposeNodeหรือReusableComposeNodeจะต้องเพิ่มCompoableTargetคำอธิบายประกอบสำหรับฟังก์ชันและประเภทพารามิเตอร์แลมบ์ดาที่ใช้ร่วมกันได้ อย่างไรก็ตาม เราขอแนะนำ ให้สร้างคำอธิบายประกอบที่มีคำอธิบายประกอบเป็นComposableTargetMarkerแล้วใช้คำอธิบายประกอบที่ทำเครื่องหมาย แทนComposableTargetโดยตรง คำอธิบายประกอบที่ประกอบได้ ซึ่งทำเครื่องหมายด้วยComposableTargetMarkerจะเทียบเท่ากับComposbleTargetที่มีชื่อแบบเต็มของแอตทริบิวต์ คลาสเป็นพารามิเตอร์แอปพลิเคชัน ดูตัวอย่างการใช้ComposableTargetMarkerได้ที่anroidx.compose.ui.UiComposable(I38f11)
การแก้ไขข้อบกพร่อง
- ตอนนี้อนุญาตให้ส่งออฟเซ็ตการเลื่อนเชิงลบไปยัง
LazyGridState.scrollToItem()และLazyGridState.animateScrollToItem()แล้ว (I025c6, b/211753558) - รองรับการโหลดแบบอักษรแบบไม่พร้อมกันสำหรับ TextField (Icc4bf, b/214587005)
เวอร์ชัน 1.2.0-alpha03
9 กุมภาพันธ์ 2022
androidx.compose.foundation:foundation:1.2.0-alpha03 และ androidx.compose.foundation:foundation-layout:1.2.0-alpha03 เปิดตัวแล้ว เวอร์ชัน 1.2.0-alpha03 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
notifyFocusedRectเมธอดในTextInputSessionและTextInputServiceเลิกใช้งานแล้วและจะไม่เรียกใช้ โปรดใช้BringIntoViewRequesterแทน (Ia4302, b/192043120, b/216842427, b/178211874)- เปิดใช้ภาพเคลื่อนไหวสำหรับรายการของตารางกริดแบบ Lazy ด้วย Modifier.animateItemPlacement() (Ib6621, b/211753218)
- ตอนนี้
BringIntoViewRequesterจะส่งต่อคำขอไปยัง Android View ที่โฮสต์ (Ia7a51) FontFamilyResolverพร้อมให้บริการแล้วผ่านLocalFontFamilyResolver.current- เพิ่ม
createFontFamilyResolver(context)และcreateFontFamilyResolver(context, coroutineScope)เพื่อสร้างตัวแก้ไข FontFamily ใหม่นอกเหนือจากการใช้งาน Compose - ตอนนี้ย่อหน้าและหลายย่อหน้าใช้เวลา
FontFamily.Resolver - ตอนนี้
TextLayoutResult.layoutInput.fontFamilyResolverมี รีโซลเวอร์ที่ใช้สำหรับเลย์เอาต์นี้ ซึ่งเลิกใช้งานTextLayoutResult.layoutInput.resourceLoaderแล้วเนื่องจากไม่ได้ใช้แล้ว (Id5a45, b/174162090)
- เพิ่ม
- เพิ่ม
AndroidFontซึ่งเป็น API ระดับต่ำใหม่สำหรับการระบุตัวอธิบายทรัพยากรแบบอักษรประเภทใหม่ ใน Android เช่น การโหลดแบบอักษรจาก แบ็กเอนด์เฉพาะแอป การค้นหาแบบอักษรที่ติดตั้งไว้ล่วงหน้า ในอุปกรณ์ หรือการโหลดแบบอักษรจากทรัพยากรที่ไม่ได้มาจาก โรงงานแบบอักษรปัจจุบัน- ขยาย
Font.ResourceLoadedAPI เพื่อรองรับการโหลดแบบไม่พร้อมกันและแบบไม่บังคับ ของแบบอักษร ไม่แนะนำให้นักพัฒนาแอปพลิเคชันใช้ API นี้โดยตรง หากต้องการเพิ่มแบบอักษรประเภทใหม่ โปรดดู AndroidFont - ฟังก์ชันส่วนขยาย
Font.AndroidResourceLoaderอนุญาตให้สร้างFont.ResourceLoaderเมื่ออยู่นอกการเรียบเรียง - เพิ่มพารามิเตอร์
loadingStrategyลงในแบบอักษรที่อิงตามทรัพยากรเพื่อให้โหลดแบบไม่พร้อมกันได้เมื่อ XML ของแบบอักษรที่ดาวน์โหลดได้อ้างอิงแบบอักษรของทรัพยากร (Ie5aea, b/174162090)
- ขยาย
- เราเลิกใช้งานเครื่องมือสร้าง
Typeface(FontFamily)แล้ว ซึ่งก่อนหน้านี้ใช้เพื่อโหลดแบบอักษรไว้ล่วงหน้า ซึ่งอาจใช้เวลาไม่เกิน 10 วินาทีสำหรับ แบบอักษรที่ดาวน์โหลดได้ หากใช้แบบอักษรที่ดาวน์โหลดได้ การเรียกนี้อาจถูกบล็อกเป็นเวลา 10 วินาที ให้ใช้FontFamilyResolver.preloadแทนfontResource(FontFamily): Typefaceเลิกใช้งานแล้ว ซึ่งก่อนหน้านี้ใช้เพื่อโหลดแบบอักษรไว้ล่วงหน้า ซึ่งอาจใช้เวลาไม่เกิน 10 วินาทีสำหรับ แบบอักษรที่ดาวน์โหลดได้ ให้ใช้FontFamilyResolver.preload(If8e7c, b/174162090) แทน
- ตอนนี้คุณระบุประเภทเนื้อหาสำหรับรายการของฟังก์ชัน
LazyVerticalGrid- item/items ได้แล้วในLazyGridScopeซึ่งตอนนี้ยอมรับพารามิเตอร์ดังกล่าวแล้ว การระบุข้อมูลดังกล่าวจะช่วยให้ตรรกะการนำองค์ประกอบของไอเทมกลับมาใช้ซ้ำมีประสิทธิภาพมากขึ้น และจะนำเนื้อหาระหว่างไอเทมประเภทเดียวกันกลับมาใช้ซ้ำเท่านั้น (I7b355, b/215372836) - ตอนนี้
LazyListLayoutInfoและLazyGridLayoutInfoมีพร็อพเพอร์ตี้ใหม่แล้ว ได้แก่viewportSize,orientation,reverseLayout(Ifc8ed, b/200920410) - ตอนนี้คุณระบุประเภทเนื้อหาสำหรับรายการของฟังก์ชัน LazyColumn/LazyRow - item/items ใน LazyListScope ได้แล้ว เนื่องจากตอนนี้ฟังก์ชันดังกล่าวยอมรับพารามิเตอร์ดังกล่าวแล้ว การระบุข้อมูลดังกล่าวจะช่วยให้ตรรกะการนำองค์ประกอบของไอเทมกลับมาใช้ซ้ำมีประสิทธิภาพมากขึ้น และจะนำเนื้อหาระหว่างไอเทมประเภทเดียวกันกลับมาใช้ซ้ำเท่านั้น (I26506)
- ตอนนี้เราเลิกใช้งานเครื่องมือสร้าง
SubcomposeLayoutStateที่ยอมรับmaxSlotsToRetainForReuseแล้ว แต่เรามีตัวสร้างใหม่ที่รับSubcomposeSlotReusePolicyซึ่งเป็นอินเทอร์เฟซใหม่ที่ช่วยให้ควบคุมได้อย่างละเอียดมากขึ้นว่าจะเก็บช่องใดไว้เพื่อนำกลับมาใช้ใหม่ในอนาคต (I52c4d) - เพิ่มตัวแก้ไขสำหรับ WindowInsets ทั้งสำหรับการเว้นวรรค และการปรับขนาด ซึ่งจะช่วยให้เนื้อหาบางส่วนขยายเข้าไปในพื้นที่ขอบ และยังคงให้เนื้อหาหลักอยู่นอกพื้นที่ขอบ เช่น คุณสามารถใช้ windowInsetsPadding เพื่อเพิ่มระยะขอบให้กับพื้นที่เนื้อหา เพื่อหลีกเลี่ยงพื้นที่ที่อาจถูกบดบังบางส่วนหรือทั้งหมด (Id0395, b/213942085)
การแก้ไขข้อบกพร่อง
- ตอนนี้ระบบจะเก็บ TextField ไว้เหนือแป้นพิมพ์เมื่อมีการ
โฟกัสและแสดงแป้นพิมพ์เมื่อโหมดป้อนข้อมูลแบบนุ่มเป็น
ADJUST_PAN(I8eaeb, b/190539358, b/192043120) - เดสก์ท็อปใช้การเขียนเฉพาะที่สำหรับ
FontFamily.Resolver- เราเลิกใช้งานเดสก์ท็อป
FontLoaderแล้ว createFontFamilyResolverใหม่ในเดสก์ท็อป (I6bbbb, b/174162090)
- เราเลิกใช้งานเดสก์ท็อป
- ประเภทการป้อนข้อมูลด้วยแป้นพิมพ์เสมือนจะไม่กะพริบอีกต่อไปเมื่อเปลี่ยน โฟกัสระหว่างช่องข้อความ (I1bf50, b/187746439)
- ช่องข้อความไม่จำเป็นต้องกดย้อนกลับอีกครั้งเมื่อ ที่จับเคอร์เซอร์แสดงอยู่ (Ideb4b, b/205726883)
- เราได้ปรับปรุงลักษณะการทำงานของแว่นขยายสำหรับการเลือกข้อความให้ สอดคล้องกับแว่นขยายของแพลตฟอร์ม (Idd918, b/206833278)
เวอร์ชัน 1.2.0-alpha02
26 มกราคม 2022
androidx.compose.foundation:foundation:1.2.0-alpha02 และ androidx.compose.foundation:foundation-layout:1.2.0-alpha02 เปิดตัวแล้ว เวอร์ชัน 1.2.0-alpha02 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม
NonRestartableComposableให้กับเมธอดที่โอเวอร์โหลด ของเมธอดที่มีอยู่โดยไม่มีตรรกะที่ซับซ้อน ซึ่งจะช่วยลดการตรวจสอบการจดจำ (เท่ากับ) ที่คอมไพเลอร์ สร้างขึ้นสําหรับพารามิเตอร์ทั้งหมดที่ ซ้ำกันในฟังก์ชันด้านในที่เรียกใช้ (I90490) - เพิ่มตัวแก้ไข
excludeFromSystemGestureเพื่อให้เข้าถึงsetSystemGestureExclusionRects(I46f07) ของ Android ได้ง่ายขึ้น
การแก้ไขข้อบกพร่อง
- เราได้ปรับปรุงลักษณะการทำงานของแว่นขยายสำหรับการเลือกข้อความให้ สอดคล้องกับแว่นขยายของแพลตฟอร์ม (Idd918, b/206833278)
LazyColumn,LazyRow,Modifier.verticalScrollและคอนเทนเนอร์อื่นๆ ที่ใช้Modifier.scrollableรองรับการเลื่อนด้วยล้อเมาส์แล้ว (I2b5e1, b/198214718)
เวอร์ชัน 1.2.0-alpha01
12 มกราคม 2022
androidx.compose.foundation:foundation:1.2.0-alpha01 และ androidx.compose.foundation:foundation-layout:1.2.0-alpha01 เปิดตัวแล้ว เวอร์ชัน 1.2.0-alpha01 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- เราได้เพิ่มพารามิเตอร์ใหม่
userScrollEnabledลงในLazyColumn,LazyRowและLazyVerticalGridเพื่อให้ผู้ใช้ปิดใช้การเลื่อนที่ผู้ใช้เริ่มชั่วคราวหรือถาวรผ่านท่าทางสัมผัสหรือการดำเนินการเพื่อการช่วยเหลือพิเศษ ระบบจะยังคงอนุญาตให้เลื่อนแบบเป็นโปรแกรมผ่านเมธอดในสถานะ (I7eae9, b/201150093) - เพิ่ม
onSizeChangedการเรียกกลับไปยังตัวแก้ไขแว่นขยาย (I6879f) - ตอนนี้วิดเจ็ตแว่นขยายจะแสดงเมื่อลากแฮนเดิลการเลือกใน
SelectionContainer(I30b38, b/139320979)
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหา
TextFieldแฮนเดิลเคอร์เซอร์ไม่ซ่อนเมื่อเลื่อนออกจาก มุมมอง (I14552, b/208883748)
การอัปเดตการขึ้นต่อกัน
- ตอนนี้ขึ้นอยู่กับ Kotlin
1.6.10
เวอร์ชัน 1.1
เวอร์ชัน 1.1.1
23 กุมภาพันธ์ 2022
androidx.compose.foundation:foundation:1.1.1 และ androidx.compose.foundation:foundation-layout:1.1.1 เปิดตัวแล้ว เวอร์ชัน 1.1.1 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไข
NullPointerExceptionที่androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList(aosp/1947059, b/206677462) - แก้ไขข้อขัดข้องที่เกิดจากเนื้อหาในคลิปบอร์ดขณะอ่านจาก คลิปบอร์ดใน Android (I06020, b/197769306)
- แก้ไข RTL ใน
LazyVerticalGrid(aosp/1931080, b/207510535)
เวอร์ชัน 1.1.0
9 กุมภาพันธ์ 2022
androidx.compose.foundation:foundation:1.1.0 และ androidx.compose.foundation:foundation-layout:1.1.0 เปิดตัวแล้ว เวอร์ชัน 1.1.0 มีคอมมิตเหล่านี้
การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 1.0.0
- รองรับเอฟเฟกต์การเลื่อนเกินของ Android 12 อย่างเสถียร
- การปรับปรุงขนาดเป้าหมายการสัมผัส
- โปรดทราบว่าใน Compose 1.0 คอมโพเนนต์ Material จะขยายพื้นที่เลย์เอาต์เพื่อให้เป็นไปตามหลักเกณฑ์การช่วยเหลือพิเศษของ Material สำหรับขนาดเป้าหมายการสัมผัส ตัวอย่างเช่น เป้าหมายการสัมผัสของปุ่มจะขยายเป็นขนาดขั้นต่ำ 48x48dp แม้ว่าคุณจะตั้งค่าขนาดของปุ่มให้เล็กกว่านี้ก็ตาม ซึ่งจะทําให้ Compose Material มีลักษณะการทํางานเหมือนกับ Material Design Components และมีลักษณะการทํางานที่สอดคล้องกันหากคุณใช้ทั้ง View และ Compose การเปลี่ยนแปลงนี้ยังช่วยให้มั่นใจได้ว่าเมื่อคุณสร้าง UI โดยใช้คอมโพเนนต์ Material ของ Compose ระบบจะปฏิบัติตามข้อกำหนดขั้นต่ำสำหรับการช่วยเหลือพิเศษของเป้าหมายการสัมผัส
- การรองรับ Navigation Rail อย่างเสถียร
- เปลี่ยน API ที่เคยอยู่ในระยะทดลองจำนวนหนึ่งให้เป็น API ที่เสถียร
- การรองรับ Kotlin เวอร์ชันใหม่กว่า
เวอร์ชัน 1.1.0-rc03
26 มกราคม 2022
androidx.compose.foundation:foundation:1.1.0-rc03 และ androidx.compose.foundation:foundation-layout:1.1.0-rc03 เปิดตัวแล้ว เวอร์ชัน 1.1.0-rc03 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- อัปเดตเพื่อรองรับ Compose Material 1.1.0-rc03
เวอร์ชัน 1.1.0-rc01
15 ธันวาคม 2021
androidx.compose.foundation:foundation:1.1.0-rc01 และ androidx.compose.foundation:foundation-layout:1.1.0-rc01 เปิดตัวแล้ว เวอร์ชัน 1.1.0-rc01 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- ตอนนี้อนุญาตให้ส่งออฟเซ็ตการเลื่อนเชิงลบไปยัง
LazyListState.scrollToItem()และLazyListState.animateScrollToItem()แล้ว (Iceb90, b/184252837) - แก้ไขข้อบกพร่องที่ทำให้การเลื่อนเพื่อการช่วยเหลือพิเศษหายไป (I7cbfb)
เวอร์ชัน 1.1.0-beta04
1 ธันวาคม 2021
androidx.compose.foundation:foundation:1.1.0-beta04 และ androidx.compose.foundation:foundation-layout:1.1.0-beta04 เปิดตัวแล้ว เวอร์ชัน 1.1.0-beta04 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- อัปเดตให้เข้ากันได้กับ Kotlin
1.6.0
การเปลี่ยนแปลง API
- ล้างค่า Null ใน
androidx.core.view(I7078a, b/204917439) - เพิ่ม API ทดลองที่อนุญาตให้ใช้ PointerInputchange ทั้งหมดหรือตรวจสอบว่ามีการใช้หรือไม่ (I2e59d)
- แสดงวิดเจ็ตแว่นขยายเมื่อลากเคอร์เซอร์หรือ แฮนเดิลการเลือกภายในช่องข้อความ (I5391e, b/203781358)
การแก้ไขข้อบกพร่อง
- แก้ไขแฮนเดิลข้อความไม่ขยับเมื่อมีการเปลี่ยนแปลงระดับการมองเห็นของ IME (I25f2e)
เวอร์ชัน 1.1.0-beta03
17 พฤศจิกายน 2021
androidx.compose.foundation:foundation:1.1.0-beta03 และ androidx.compose.foundation:foundation-layout:1.1.0-beta03 เปิดตัวแล้ว เวอร์ชัน 1.1.0-beta03 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มการรองรับช่วงแนวนอนใน LazyVerticalGrid (I7e2fa, b/176758183)
เพิ่มความสามารถในการเคลื่อนไหวตำแหน่งของรายการ Lazy list ซึ่งเป็นฟีเจอร์ทดลอง มีตัวแก้ไขใหม่พร้อมใช้งานภายใน LazyItemScope ชื่อ
Modifier.animateItemPlacement()ตัวอย่างการใช้งานvar list by remember { mutableStateOf(listOf("A", "B", "C")) } LazyColumn { item { Button(onClick = { list = list.shuffled() }) { Text("Shuffle") } } items(list, key = { it }) { Text("Item $it", Modifier.animateItemPlacement()) } }- เมื่อระบุคีย์ผ่าน
LazyListScope.itemหรือLazyListScope.itemsตัวแก้ไขนี้จะเปิดใช้ภาพเคลื่อนไหวการเรียงลำดับรายการใหม่ นอกจากการจัดเรียงรายการใหม่แล้ว การเปลี่ยนแปลงตำแหน่งอื่นๆ ทั้งหมดที่เกิดจากเหตุการณ์ต่างๆ เช่น การเปลี่ยนแปลงการจัดเรียงหรือการจัดแนว จะมีการเคลื่อนไหวด้วย (I59e7b, b/150812265)
- เมื่อระบุคีย์ผ่าน
เวอร์ชัน 1.1.0-beta02
3 พฤศจิกายน 2021
androidx.compose.foundation:foundation:1.1.0-beta02 และ androidx.compose.foundation:foundation-layout:1.1.0-beta02 เปิดตัวแล้ว เวอร์ชัน 1.1.0-beta02 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- ตอนนี้การกระเพื่อมและข้อบ่งชี้อื่นๆ จะล่าช้าก็ต่อเมื่ออยู่ภายในคอนเทนเนอร์
Modifier.scrollable()เท่านั้น แทนที่จะล่าช้าเสมอสำหรับเหตุการณ์ที่ลดลง (Ibefe0, b/203141462) - เพิ่ม BringIntoView API เวอร์ชันทดลองที่ให้คุณส่งคำขอไปยังองค์ประกอบหลักเพื่อให้เลื่อนเพื่อนำรายการมาแสดง (Ib918d, b/195353459)
การมีส่วนร่วมภายนอก
- เพิ่ม
Modifier.pointerHoverIcon(I95f01)
เวอร์ชัน 1.1.0-beta01
27 ตุลาคม 2021
androidx.compose.foundation:foundation:1.1.0-beta01 และ androidx.compose.foundation:foundation-layout:1.1.0-beta01 เปิดตัวแล้ว เวอร์ชัน 1.1.0-beta01 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- เพิ่ม BringIntoView API เวอร์ชันทดลองที่ให้คุณส่งคำขอไปยังองค์ประกอบหลักเพื่อให้เลื่อนเพื่อนำรายการมาแสดง (Ib918d, b/195353459)
เวอร์ชัน 1.1.0-alpha06
13 ตุลาคม 2021
androidx.compose.foundation:foundation:1.1.0-alpha06 และ androidx.compose.foundation:foundation-layout:1.1.0-alpha06 เปิดตัวแล้ว เวอร์ชัน 1.1.0-alpha06 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มการโอเวอร์โหลดที่ไม่มีการเชื่อมโยงกับเลย์เอาต์เพื่อปรับปรุงประสิทธิภาพ (Ib0d9a)
- ตอนนี้
SemanticsNodeInteraction.performSemanticsActionจะแสดงผลSemanticsNodeInteractionที่มีการเรียกใช้ฟังก์ชัน (I9e5db) - เพิ่ม
performScrollToNode(matcher: SemanticsMatcher)ที่ เลื่อนคอนเทนเนอร์ที่เลื่อนได้ไปยังเนื้อหาที่ตรงกันโดย ตัวจับคู่ที่ระบุ (Ic1cb8)
เวอร์ชัน 1.1.0-alpha05
29 กันยายน 2021
androidx.compose.foundation:foundation:1.1.0-alpha05 และ androidx.compose.foundation:foundation-layout:1.1.0-alpha05 เปิดตัวแล้ว เวอร์ชัน 1.1.0-alpha05 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มตัวชี้ประวัติการทดลองไปยัง PointerEventChange (Ic1fd8, b/197553056, b/199921305)
การแก้ไขข้อบกพร่อง
- แก้ไขการรองรับการช่วยเหลือพิเศษสำหรับรายการที่เลื่อนได้ (ทั้งแบบเลซีและ แบบไม่เลซี) เกี่ยวกับการเลื่อน (I6cdb0)
เวอร์ชัน 1.1.0-alpha04
15 กันยายน 2021
androidx.compose.foundation:foundation:1.1.0-alpha04 และ androidx.compose.foundation:foundation-layout:1.1.0-alpha04 เปิดตัวแล้ว เวอร์ชัน 1.1.0-alpha04 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เลิกใช้งาน
performGestureและGestureScopeซึ่งถูกแทนที่ด้วยperformTouchInputและTouchInjectionScope(Ia5f3f, b/190493367) - เพิ่ม
touchBoundsInRootเป็นSemanticsNodeซึ่ง รวมถึงขนาดเป้าหมายการสัมผัสขั้นต่ำ เพื่อให้นักพัฒนาแอป มั่นใจได้ว่าเป้าหมายการสัมผัสเป็นไปตามข้อกำหนดขั้นต่ำด้านการช่วยเหลือพิเศษ (I2e14b, b/197751214)
การแก้ไขข้อบกพร่อง
- เพิ่มการรองรับการเลื่อนเกินขอบเขตแบบยืดในอุปกรณ์ Android 12 (Iccf3c, b/171682480)
เวอร์ชัน 1.1.0-alpha03
1 กันยายน 2021
androidx.compose.foundation:foundation:1.1.0-alpha03 และ androidx.compose.foundation:foundation-layout:1.1.0-alpha03 เปิดตัวแล้ว เวอร์ชัน 1.1.0-alpha03 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- อัปเดต Compose
1.1.0-alpha03ให้ขึ้นอยู่กับ Kotlin1.5.30(I74545)
การเปลี่ยนแปลง API
- เพิ่มเอฟเฟกต์เรืองแสงสำหรับการเลื่อนแล้ว เพิ่ม API OverScrollConfiguration เวอร์ชันทดลองใหม่เพื่อให้กำหนดค่าเอฟเฟกต์ภาพการเลื่อนเกินได้ ระบุ null เพื่อปิดเอฟเฟกต์การเลื่อนเกิน (I0c304, b/171682480)
- ตอนนี้ AwaitPointerEventScope มี withTimeout() และ withTimeoutOrNull() แล้ว (I507f0, b/179239764, b/182397793)
- เพิ่มวิธีการทดสอบเพื่อรับขอบเขตที่ตัด (I6b28e)
- เพิ่มขนาดเป้าหมายการสัมผัสขั้นต่ำลงใน ViewConfiguration เพื่อใช้ในความหมายและอินพุตของเคอร์เซอร์เพื่อให้มั่นใจว่ามีการช่วยเหลือพิเศษ (Ie861c)
เวอร์ชัน 1.1.0-alpha02
18 สิงหาคม 2021
androidx.compose.foundation:foundation:1.1.0-alpha02 และ androidx.compose.foundation:foundation-layout:1.1.0-alpha02 เปิดตัวแล้ว เวอร์ชัน 1.1.0-alpha02 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มเวอร์ชัน DpSize สำหรับ
Modifier.sizeและrequiredSize(I3fc7e, b/194219828)
เวอร์ชัน 1.1.0-alpha01
4 สิงหาคม 2021
androidx.compose.foundation:foundation:1.1.0-alpha01 และ androidx.compose.foundation:foundation-layout:1.1.0-alpha01 เปิดตัวแล้ว เวอร์ชัน 1.1.0-alpha01 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- อัปเดต
DrawScope#drawImageเมธอดที่ ใช้สี่เหลี่ยมผืนผ้าต้นทางและปลายทาง เพื่อใช้พารามิเตอร์ FilterQuality ที่ไม่บังคับ ซึ่งมีประโยชน์สำหรับพิกเซล อาร์ตที่ตั้งใจให้เป็นพิกเซล เมื่อขยายขนาดสำหรับอาร์ตตามพิกเซล อัปเดต BitmapPainter + Image composable เพื่อใช้พารามิเตอร์ FilterQuality ที่ไม่บังคับด้วย (Ie4fb0, b/180311607) - ตอนนี้ TextField จะล้างการเลือกเมื่อกดปุ่มย้อนกลับ ซึ่งตรงกับลักษณะการทำงานของ EditText ใน Android (I3ca16, b/174173645)
- เพิ่มแฮนเดิลเคอร์เซอร์ (I07a82, b/173016579)
การแก้ไขข้อบกพร่อง
- ตอนนี้การเลื่อนผ่านการดำเนินการทางความหมายสำหรับรายการที่โหลดแบบ Lazy และคอมโพเนนต์การเลื่อนปกติจะมีการเคลื่อนไหวแล้ว (Id9066, b/190742024)
การมีส่วนร่วมภายนอก
LazyVerticalGridตอนนี้ยอมรับทั้งพารามิเตอร์การจัดเรียงแนวนอนและแนวตั้งแล้ว (If9c92)
รุ่น 1.0
เวอร์ชัน 1.0.5
3 พฤศจิกายน 2021
androidx.compose.foundation:foundation:1.0.5 และ androidx.compose.foundation:foundation-layout:1.0.5 เปิดตัวแล้ว เวอร์ชัน 1.0.5 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขข้อขัดข้องในการติดตามอินสแตนซ์ derivedStateOf (aosp/1792247)
เวอร์ชัน 1.0.4
13 ตุลาคม 2021
androidx.compose.foundation:foundation:1.0.4 และ androidx.compose.foundation:foundation-layout:1.0.4 เปิดตัวแล้ว เวอร์ชัน 1.0.4 มีคอมมิตเหล่านี้
การอัปเดตการขึ้นต่อกัน
- อัปเดตให้ขึ้นอยู่กับ Kotlin
1.5.31
เวอร์ชัน 1.0.3
29 กันยายน 2021
androidx.compose.foundation:foundation:1.0.3 และ androidx.compose.foundation:foundation-layout:1.0.3 เปิดตัวแล้ว เวอร์ชัน 1.0.3 มีคอมมิตเหล่านี้
การอัปเดตการขึ้นต่อกัน
- อัปเดตให้ขึ้นอยู่กับ Kotlin
1.5.30
เวอร์ชัน 1.0.2
1 กันยายน 2021
androidx.compose.foundation:foundation:1.0.2 และ androidx.compose.foundation:foundation-layout:1.0.2 เปิดตัวแล้ว เวอร์ชัน 1.0.2 มีคอมมิตเหล่านี้
อัปเดตเพื่อรองรับการเปิดตัว Compose 1.0.2 Compose 1.0.2 ยังคงใช้ได้กับ Kotlin 1.5.21
เวอร์ชัน 1.0.1
4 สิงหาคม 2021
androidx.compose.foundation:foundation:1.0.1 และ androidx.compose.foundation:foundation-layout:1.0.1 เปิดตัวแล้ว เวอร์ชัน 1.0.1 มีคอมมิตเหล่านี้
การอัปเดตการขึ้นต่อกัน
- อัปเดตให้ขึ้นอยู่กับ Kotlin
1.5.21
เวอร์ชัน 1.0.0
28 กรกฎาคม 2021
androidx.compose.foundation:foundation:1.0.0 และ androidx.compose.foundation:foundation-layout:1.0.0 เปิดตัวแล้ว เวอร์ชัน 1.0.0 มีคอมมิตเหล่านี้
ฟีเจอร์หลักของเวอร์ชัน 1.0.0
นี่คือ Compose เวอร์ชันเสถียรเวอร์ชันแรก โปรดดูรายละเอียดเพิ่มเติมในบล็อกการเปิดตัว Compose อย่างเป็นทางการ
ปัญหาที่ทราบ
หากใช้ Android Studio Bumblebee Canary 4 หรือ AGP
7.1.0-alpha04/7.1.0-alpha05คุณอาจพบข้อขัดข้องต่อไปนี้java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"หากต้องการแก้ไข ให้เพิ่ม minSdkVersion เป็น 24 ขึ้นไปชั่วคราวในไฟล์
build.gradleปัญหานี้จะได้รับการแก้ไขใน Android Studio Bumblebee และ AGP7.1เวอร์ชันถัดไป (b/194289155)
เวอร์ชัน 1.0.0-rc02
14 กรกฎาคม 2021
androidx.compose.foundation:foundation:1.0.0-rc02 และ androidx.compose.foundation:foundation-layout:1.0.0-rc02 เปิดตัวแล้ว เวอร์ชัน 1.0.0-rc02 มีคอมมิตเหล่านี้
- อัปเดตการแสดงผลเส้นขอบสำหรับรูปร่างทั่วไปเพื่อแก้ไขปัญหาเกี่ยวกับเส้นทางที่กำหนดด้วยขนาดคงที่ (aosp/1748871, b/191817116)
เวอร์ชัน 1.0.0-rc01
1 กรกฎาคม 2021
androidx.compose.foundation:foundation:1.0.0-rc01 และ androidx.compose.foundation:foundation-layout:1.0.0-rc01 เปิดตัวแล้ว เวอร์ชัน 1.0.0-rc01 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ตอนนี้ Canvas รองรับพารามิเตอร์ contentDescription เพื่อ การช่วยเหลือพิเศษแล้ว (Ib547c)
การแก้ไขข้อบกพร่อง
- ปุ่ม การ์ด ช่องทำเครื่องหมาย และ
Modifier.clickable(enabled=false)ที่ปิดใช้จะบล็อกไม่ให้คลิกไปยังองค์ประกอบระดับบน (Ic2c3b, b/183908811)
เวอร์ชัน 1.0.0-beta09
16 มิถุนายน 2021
androidx.compose.foundation:foundation:1.0.0-beta09 และ androidx.compose.foundation:foundation-layout:1.0.0-beta09 เปิดตัวแล้ว เวอร์ชัน 1.0.0-beta09 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- นำ
ManualFrameClockออกแล้ว หากต้องการควบคุมภาพเคลื่อนไหว ให้ใช้composeTestRule.mainClockแทน (I3c3e8, b/189951065) - เปลี่ยน enum Role และ LiveRegionMode เป็นคลาสอินไลน์ ที่มีตัวสร้างส่วนตัว (Id1890)
- ระบบจะแปลง KeyboardCapitalization เป็นคลาสในบรรทัด (Id5a1c)
- เปลี่ยน TextOverflow เป็นคลาสอินไลน์ (I433af)
การแก้ไขข้อบกพร่อง
- ตอนนี้เมื่อคุณระบุคีย์ที่ไม่ซ้ำกันสำหรับรายการ LazyColumn/Row ระบบจะรักษาตำแหน่งการเลื่อนตามคีย์ ซึ่งหมายความว่าหากคุณเพิ่ม/นำรายการออกก่อนรายการที่มองเห็นได้ในปัจจุบัน ระบบจะเก็บรายการที่มีคีย์ที่ระบุไว้เป็นรายการแรกที่มองเห็นได้ (Id263f, b/184257857)
- ตอนนี้ค่าคงที่หลักคือ @ExperimentalComposeUiApi โค้ดที่ใช้สามารถประกาศค่าคงที่ส่วนตัวก่อนการทำให้เสถียรได้ (Ia5d48)
- เพิ่ม IdlingStrategy ลงใน AndroidComposeTestRule ซึ่งเฟรมเวิร์กการทดสอบใช้เพื่อติดตั้งกลไกทางเลือกในการรอหรือบรรลุสถานะหยุดทำงานได้
ใช้
AndroidComposeTestRule.setIdlingStrategyFactory()ก่อนการทดสอบ จะเริ่มขึ้นเพื่อติดตั้งกลยุทธ์ของคุณเอง (I608fa)
เพิ่มกฎโปรไฟล์
รุ่นนี้เพิ่มกฎของโปรไฟล์ลงในโมดูลการเขียนต่อไปนี้ (I14ed6)
- androidx.compose.animation
- androidx.compose.animation-core
- androidx.compose.foundation
- androidx.compose.foundation-layout
- androidx.compose.material
- androidx.compose.material-ripple
- androidx.compose.runtime
- androidx.compose.ui
- androidx.compose.ui.geometry
- androidx.compose.ui.graphics
- androidx.compose.ui.text
- androidx.compose.ui.text
- androidx.compose.ui.unit
- androidx.compose.ui.util
กฎของโปรไฟล์คืออะไร
กฎโปรไฟล์สำหรับไลบรารีจะระบุไว้ในไฟล์ข้อความ
baseline-prof.txtซึ่งอยู่ในไดเรกทอรีsrc/mainหรือไดเรกทอรีที่เทียบเท่า ไฟล์จะระบุกฎต่อบรรทัด โดยในกรณีนี้กฎคือรูปแบบสำหรับการจับคู่กับเมธอดหรือคลาสในไลบรารี ไวยากรณ์ของกฎเหล่านี้เป็นซูเปอร์เซ็ตของรูปแบบโปรไฟล์ ART ที่มนุษย์อ่านได้ ซึ่งใช้เมื่อใช้adb shell profman --dump-classes-and-methods ...กฎเหล่านี้มี 2 รูปแบบเพื่อกำหนดเป้าหมายไปยังเมธอดหรือคลาสกฎของเมธอดจะมีรูปแบบดังนี้
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>และกฎของชั้นเรียนจะมีรูปแบบดังนี้
<CLASS_DESCRIPTOR>โดย
<FLAGS>คืออักขระH,SและPอย่างน้อย 1 ตัวเพื่อระบุว่าควรติดแฟล็กวิธีนี้เป็น "มาแรง" "สตาร์ทอัป" หรือ "หลังสตาร์ทอัป" หรือไม่<CLASS_DESCRIPTOR>คือตัวอธิบายสำหรับคลาสที่เมธอดเป้าหมายเป็นของ เช่น คลาสandroidx.compose.runtime.SlotTableจะมีตัวอธิบายเป็นLandroidx/compose/runtime/SlotTable;<METHOD_SIGNATURE>คือลายเซ็นของเมธอด ซึ่งรวมถึงชื่อ ประเภทพารามิเตอร์ และประเภทการคืนค่าของเมธอด เช่น เมธอดfun isPlaced(): BooleanในLayoutNodeมีลายเซ็นisPlaced()Zรูปแบบเหล่านี้มีไวลด์การ์ด (
**,*และ?) ได้เพื่อให้กฎเดียวครอบคลุมหลายเมธอดหรือคลาส
กฎมีหน้าที่อะไร
เมธอดที่มีแฟล็ก
Hแสดงว่าเมธอดนี้เป็นเมธอด "ยอดนิยม" และควรคอมไพล์ล่วงหน้าเมธอดที่มีแฟล็ก
Sแสดงว่าเป็นเมธอดที่เรียกใช้เมื่อเริ่มต้น และควรคอมไพล์ล่วงหน้าเพื่อหลีกเลี่ยงค่าใช้จ่ายในการคอมไพล์และตีความเมธอดเมื่อเริ่มต้นเมธอดที่มีแฟล็ก
Pแสดงว่าเป็นเมธอดที่เรียกใช้หลังจากเริ่มต้นคลาสที่มีอยู่ในไฟล์นี้บ่งบอกว่ามีการใช้คลาสดังกล่าวในระหว่างการเริ่มต้นระบบ และควรจัดสรรล่วงหน้าในฮีปเพื่อหลีกเลี่ยงค่าใช้จ่ายในการโหลดคลาส
ระบบนี้ทำงานอย่างไร
- ไลบรารีสามารถกำหนดกฎเหล่านี้ซึ่งจะรวมอยู่ในอาร์ติแฟกต์ AAR เมื่อสร้างแอปซึ่งมีอาร์ติแฟกต์เหล่านี้ ระบบจะผสานรวมกฎเหล่านี้เข้าด้วยกันและใช้กฎที่ผสานรวมเพื่อสร้างโปรไฟล์ ART แบบไบนารีขนาดกะทัดรัดที่เฉพาะเจาะจงสำหรับแอปนั้นๆ จากนั้น ART จะใช้ประโยชน์จากโปรไฟล์นี้เมื่อติดตั้งแอปในอุปกรณ์เพื่อคอมไพล์ล่วงหน้าซึ่งเป็นชุดย่อยที่เฉพาะเจาะจงของแอปพลิเคชันเพื่อปรับปรุงประสิทธิภาพของแอปพลิเคชัน โดยเฉพาะอย่างยิ่งการเรียกใช้ครั้งแรก โปรดทราบว่าการดำเนินการนี้จะไม่มีผลกับแอปพลิเคชันที่แก้ไขข้อบกพร่องได้
เวอร์ชัน 1.0.0-beta08
2 มิถุนายน 2021
androidx.compose.foundation:foundation:1.0.0-beta08 และ androidx.compose.foundation:foundation-layout:1.0.0-beta08 เปิดตัวแล้ว เวอร์ชัน 1.0.0-beta08 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ระบบจะแทนที่ enum NestedScrollSource ด้วยคลาสแบบอินไลน์ (Ie321b, b/187055290)
- ปรับโครงสร้างการใช้งาน enum เป็นคลาสแบบอินไลน์เพื่อหลีกเลี่ยง ปัญหาเกี่ยวกับคำสั่ง when แบบครอบคลุมเมื่อมีการเพิ่มค่า enum ใหม่ (I2b5eb)
- เพิ่มการหมดเวลาแตะไปยังองค์ประกอบที่คลิกได้ / สลับได้เพื่อป้องกันไม่ให้แสดงเอฟเฟกต์ระลอกระหว่างการเลื่อน / ลาก (Ia2704, b/168524931)
- พร็อพเพอร์ตี้ ContentDescription และ Text semantics จะไม่ใช่ค่าเดียวอีกต่อไป แต่จะเป็นรายการ ซึ่งจะช่วยให้ผสานรวมได้โดยไม่ต้องต่อกัน นอกจากนี้ เรายังได้จัดเตรียม API การทดสอบที่ดีขึ้นเพื่อใช้ประโยชน์จากการเปลี่ยนแปลงเหล่านี้ (Ica6bf, b/184825850)
Modifier.focusModifier()เลิกใช้งานแล้วและแทนที่ด้วยModifier.focusTarget()(I6c860)- ระบบจะแทนที่ enum KeyboardType ด้วยคลาสแบบอินไลน์ (I73045, b/187055290)
- แทนที่ Enum
FocusStateด้วยอินเทอร์เฟซFocusState(Iccc1a, b/187055290) - ระบบจะแทนที่ enum ImeAction ด้วยคลาสอินไลน์ (I18be5, b/187055290)
AnnotatedString.withAnnotationตอนนี้ฟังก์ชันต่างๆ อยู่ใน ExperimentalTextApi แทนที่จะเป็น ExperimentalComposeApi (I0cd0a)- ตอนนี้ตัวสร้าง TextUnit ที่มี TextUnitType จะเป็น ExperimentalTextApi แทนที่จะเป็น ExperimentalComposeApi
- ตอนนี้ PaddingValues เป็น
@Stableแล้ว ไม่ใช่@Immutable(I88c50)
การแก้ไขข้อบกพร่อง
- แก้ไขข้อขัดข้องเมื่อกดพื้นที่ว่างในข้อความที่มีเนื้อหาค้างไว้ (I33ab5, b/187437299)
- แสดงแถบเครื่องมือหลังจาก SelectAll (I495d9, b/185919613)
- แก้ไขคอนเทนเนอร์ที่เลื่อนได้ซึ่งตัดองค์ประกอบย่อยในแกนไขว้ ซึ่งสามารถทำซ้ำได้ง่ายหากคุณมี LazyRow ที่มีรายการการ์ด ตอนนี้เงาจะไม่ถูกตัดแล้ว (Icb635, b/186318448)
- แก้ไขปัญหาที่บางครั้งการกระเพื่อม / การบ่งชี้อื่นๆ จะค้างอยู่เมื่อคลิกนานๆ เมื่อใช้ Modifier.combinedClickable (I2298c, b/186223077)
- ตอนนี้
detectDragGesures,detectVerticalGesturesและdetectHorizontalGesturesจะใช้การเปลี่ยนแปลงตำแหน่งโดยอัตโนมัติ คุณจึงไม่จำเป็นต้องเรียกใช้ change.consumePositionChange ในการเรียกกลับ onDrag (I42fc4, b/185096350, b/187320697) Modifier.onGloballyPositioned()เปลี่ยนเป็นรายงานพิกัดของตัวแก้ไขนี้ในเชนตัวแก้ไข ไม่ใช่พิกัดเลย์เอาต์หลังจากใช้ตัวแก้ไขทั้งหมด ซึ่งหมายความว่าตอนนี้ลำดับของตัวแก้ไขจะส่งผลต่อพิกัดที่จะรายงาน (Ieb67d, b/177926591)
เวอร์ชัน 1.0.0-beta07
18 พฤษภาคม 2021
androidx.compose.foundation:foundation:1.0.0-beta07 และ androidx.compose.foundation:foundation-layout:1.0.0-beta07 เปิดตัวแล้ว เวอร์ชัน 1.0.0-beta07 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เราได้เปิดตัวตรรกะการดึงข้อมูลล่วงหน้าของรายการที่มองเห็นถัดไปสำหรับ LazyColumn/Row (I8a4bc, b/184940225)
- เพิ่มแฮนเดิลการเลือกคลิป (Iff80d, b/183408447)
การแก้ไขข้อบกพร่อง
- ตอนนี้ LazyColumn/Row จะเก็บรายการที่มองเห็นก่อนหน้านี้ไว้สูงสุด 2 รายการให้ทำงานอยู่ (ไม่ทิ้ง) แม้ว่าจะเลื่อนออกไปแล้วก็ตาม ซึ่งจะช่วยให้คอมโพเนนต์นำองค์ประกอบย่อยที่ใช้งานอยู่กลับมาใช้ซ้ำได้เมื่อเราต้องสร้างรายการใหม่ ซึ่งจะช่วยปรับปรุงประสิทธิภาพการเลื่อน (Ie5555)
- นำ paintBackground ออก (I38660)
- วาดพื้นหลังการเลือกโดยใช้ DrawScope (I73c61, b/186674472)
- แก้ไขการถดถอยในเบต้า 06 ที่ส่งผลต่อแถว/คอลัมน์ที่ใช้การจัดเรียง spacedBy เพื่อจัดวางองค์ประกอบย่อยที่มีการถ่วงน้ำหนัก (Ifaf8c, b/187326588)
เวอร์ชัน 1.0.0-beta06
5 พฤษภาคม 2021
androidx.compose.foundation:foundation:1.0.0-beta06 และ androidx.compose.foundation:foundation-layout:1.0.0-beta06 เปิดตัวแล้ว เวอร์ชัน 1.0.0-beta06 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- แก้ไขความขัดแย้งด้วยท่าทางการนำทาง (I1145e)
- เพิ่ม API การช่วยเหลือพิเศษ CollectionInfo และ CollectionItemInfo ที่อนุญาตให้ทำเครื่องหมายคอลเล็กชันและรายการของคอลเล็กชันสำหรับบริการการช่วยเหลือพิเศษ (Id54ef, b/180479017)
- เพิ่ม
SemanticsActions.ScrollToIndexเพื่อเลื่อนรายการที่มี รายการที่จัดทำดัชนีไปยังรายการที่มีดัชนีที่แน่นอน และSemanticsProperties.IndexForKeyเพื่อรับดัชนีของรายการในรายการ ที่มีรายการที่ใช้คีย์ ทั้ง 2 การดำเนินการนี้จะดำเนินการโดย LazyList- เพิ่ม
SemanticsNodeInteraction.performScrollToIndexที่เลื่อนรายการไปยังดัชนีที่ระบุ และSemanticsNodeInteraction.performScrollToKeyที่เลื่อนรายการไปยังรายการที่มีคีย์ที่ระบุ (I4fe63, b/178483889, b/161584524)
- เพิ่ม
- รองรับการบันทึก AnnotatedString ไปยัง TextFieldValue.Saver เพิ่มฟังก์ชันยูทิลิตี addTtsAnnotation และ withAnnotation ลงใน AnnotatedString.Builder (I8cbdc, b/178446304)
- เพิ่มค่าพารามิเตอร์เริ่มต้น
0.dpลงในPaddingValues(horizontal, vertical)(I05571, b/181336792)
การแก้ไขข้อบกพร่อง
- แถวและคอลัมน์ย่อยที่มี
weight(fill = false)จะไม่ทำให้องค์ประกอบหลักเติมเต็มพื้นที่แกนหลักที่ใช้ได้ทั้งหมดอีกต่อไป (Ied94d, b/186012444, b/184355105)
เวอร์ชัน 1.0.0-beta05
21 เมษายน 2021
androidx.compose.foundation:foundation:1.0.0-beta05 และ androidx.compose.foundation:foundation-layout:1.0.0-beta05 เปิดตัวแล้ว เวอร์ชัน 1.0.0-beta05 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ตอนนี้อินเทอร์เฟซ FlingBehavior มีเครื่องหมายเป็น @Stable แล้ว การติดตั้งใช้งานทั้งหมดควรเป็นไปตามสัญญา
@Stable(I93354, b/184830577)
การแก้ไขข้อบกพร่อง
- แก้ไขการดำเนินการเลื่อนการช่วยเหลือพิเศษ
ACTION_SCROLL_FORWARD,ACTION_SCROLL_BACKWARD,accessibilityActionScrollLeft,accessibilityActionScrollUp,accessibilityActionScrollRightและaccessibilityActionScrollDownแทนที่จะเลื่อนไปจนสุดของ เลื่อนได้ ตอนนี้จะเลื่อนทีละหน้าจอในทิศทางที่กำหนด (Ieccb0) - ตอนนี้ไฟล์ AndroidManifest จาก ui-test-manifest และ ui-tooling-data เข้ากันได้กับ Android 12 แล้ว (I6f9de, b/184718994)
เวอร์ชัน 1.0.0-beta04
7 เมษายน 2021
androidx.compose.foundation:foundation:1.0.0-beta04 และ androidx.compose.foundation:foundation-layout:1.0.0-beta04 เปิดตัวแล้ว เวอร์ชัน 1.0.0-beta04 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เปลี่ยนชื่อ hideSoftwareKeyboard และ showSoftwareKeyboard ใน
SoftwareKeyboardController เป็น
hide()และshow()ตามลำดับ- ระบุอินเทอร์เฟซ CompositionLocal แบบเต็มสำหรับ LocalSoftwareKeyboardController เพื่อให้ตั้งค่าได้ (มีประโยชน์อย่างยิ่งในการทดสอบ) (I579a6)
TextOverflow.Visibleเปิดตัว (Ic8f89)- เราได้นำอินสแตนซ์สาธารณะของ
RowScope,ColumnScope,BoxScope,BoxWithConstraintsScopeออกแล้ว (I4e83e, b/181869067)
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาเมื่อวางตำแหน่งไอเทมของ
LazyColumn/LazyRowที่อยู่บริเวณขอบไม่ถูกต้องหลังจากปัดอย่างรวดเร็ว (Ie4d13, b/183877420) ก่อนการเปลี่ยนแปลงนี้ ฟังก์ชันที่ใช้ร่วมกันได้ในเครื่องจะข้ามได้ตามพารามิเตอร์ หลังจากการเปลี่ยนแปลงนี้ ฟังก์ชันที่ใช้ร่วมกันได้ในเครื่องจะไม่ข้าม การเปลี่ยนแปลงนี้เกิดขึ้นเนื่องจากฟังก์ชันในเครื่องมักจะดึงพารามิเตอร์จากฟังก์ชันระดับบน และการข้ามพารามิเตอร์ดังกล่าวเป็นแหล่งที่มาของข้อบกพร่องที่พบบ่อย
โดยสรุป ให้พิจารณาตัวอย่างต่อไปนี้
@Composable fun Counter(count: Int, onCountChange: (Int) -> Unit) { @Composable fun ShowCount() { Text("Count: $count") } ShowCount() Button(onClick={ onCountChange(count + 1) }) { Text("Increment") } }ก่อนการเปลี่ยนแปลงนี้
ShowCountฟังก์ชันที่ประกอบกันได้จะข้ามเสมอ แม้หลังจากอัปเดตพารามิเตอร์countแล้วก็ตาม แต่เหตุการณ์ดังกล่าวจะไม่เกิดขึ้นแล้ว (I5648a)
เวอร์ชัน 1.0.0-beta03
24 มีนาคม 2021
androidx.compose.foundation:foundation:1.0.0-beta03 และ androidx.compose.foundation:foundation-layout:1.0.0-beta03 เปิดตัวแล้ว เวอร์ชัน 1.0.0-beta03 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
DefaultMonotonicFrameClockเลิกใช้งานแล้ว การเรียกใช้withFrameNanosหรือRecomposer.runRecomposeAndApplyChangesที่ไม่มีMonotonicFrameClockจะทำให้เกิดIllegalStateException(I4eb0d)
การแก้ไขข้อบกพร่อง
- ตอนนี้จะเรียกใช้
FlingBehavior.performFling()แม้ว่าความเร็วจะเป็น 0 ก็ตาม (I0b6e5, b/181237123)
เวอร์ชัน 1.0.0-beta02
10 มีนาคม 2021
androidx.compose.foundation:foundation:1.0.0-beta02 และ androidx.compose.foundation:foundation-layout:1.0.0-beta02 เปิดตัวแล้ว เวอร์ชัน 1.0.0-beta02 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มการเพิ่มประสิทธิภาพเล็กๆ หลายรายการในตรรกะการวัด LazyColumn (Ic6889)
- เพิ่ม
LocalSoftwareKeyboardControllerAPI การเขียนในเครื่อง ใหม่เพื่อแทนที่อินเทอร์เฟซ SoftwareKeyboardController ก่อนหน้าใน TextField (I5951e, b/168778053) - เพิ่ม
LocalSoftwareKeyboardControllerAPI การเขียนในเครื่อง ใหม่เพื่อแทนที่อินเทอร์เฟซ SoftwareKeyboardController ก่อนหน้าใน TextField (I84472, b/168778053)
การแก้ไขข้อบกพร่อง
- บังคับใช้ข้อจำกัดในการใช้งาน API เวอร์ชันทดลองแบบสาธารณะ (I6aa29, b/174531520)
เวอร์ชัน 1.0.0-beta01
24 กุมภาพันธ์ 2021
androidx.compose.foundation:foundation:1.0.0-beta01 และ androidx.compose.foundation:foundation-layout:1.0.0-beta01 เปิดตัวแล้ว เวอร์ชัน 1.0.0-beta01 มีคอมมิตเหล่านี้
นี่คือรุ่นแรกของ Compose 1.0.0 เบต้า
การเปลี่ยนแปลง API
- เพิ่มการเรียกกลับ onStart ไปยัง
detectDragGesturesแล้ว (I67269, b/179995594) - ตัวแก้ไขสำหรับการปรับขนาดให้ตรงกับขนาดที่แท้จริงไม่ได้อยู่ในขั้นทดลองอีกต่อไป (I15744)
- นำการยืนยัน dp ออก (I798d2)
- นำการเรียกกลับ SoftwareKeyboardController ออกจากฟิลด์ข้อความทั้งหมด เพื่อแทนที่ด้วย API ใหม่ในเร็วๆ นี้ (Iae869, b/168778053)
- เราเปลี่ยนชื่อ MeasureBlocks เป็น MeasurePolicy ซึ่งกลายเป็นอินเทอร์เฟซที่สนุกสนาน เราได้อัปเดต / ลดความซับซ้อนของ Layout API เพื่อให้ใช้ MeasurePolicy ได้ (Icab48, b/167662468, b/156751158)
InteractionStateถูกแทนที่ด้วย[Mutable]InteractionSourceแล้ว- อินเทอร์เฟซมีหน้าที่ในการปล่อย / รวบรวมเหตุการณ์การโต้ตอบ
- ใช้
interactionSource = remember { MutableInteractionSource() }แทนการส่งinteractionState = remember { InteractionState() }ไปยังคอมโพเนนต์ เช่นButtonและModifier.clickable() - แทนที่จะใช้
Interaction.Pressed in interactionStateคุณควรใช้ฟังก์ชันส่วนขยายใน InteractionSource แทน เช่น InteractionSource.collectIsPressedAsState() - สำหรับกรณีการใช้งานที่ซับซ้อน คุณสามารถใช้ InteractionSource.interactions เพื่อสังเกตสตรีมของการโต้ตอบได้ ดูข้อมูลเพิ่มเติมได้ในเอกสารประกอบและตัวอย่าง InteractionSource
- (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
- นำเมธอด LayoutCoordinates ที่เลิกใช้งานแล้วออก ให้ใช้ฟังก์ชันแทนพร็อพเพอร์ตี้สำหรับ positionInParent และ boundsInParent (I580ed, b/169874631, b/175142755)
- สร้าง TextInputSession ใหม่สำหรับเซสชันอินพุตจากคอมโพเนนต์ข้อความระดับต่ำ เช่น CoreTextField (I8817f, b/177662148)
- ตอนนี้ Placeable จะแสดง measuredSize ซึ่งแสดงถึงขนาดที่เลย์เอาต์ย่อยวัดจริง ขนาดนี้อาจไม่เป็นไปตามข้อจำกัดในการวัด (Ib2729, b/172560206, b/172338608)
- เพิ่มตัวแก้ไข selectionGroup ที่อนุญาตให้ทำเครื่องหมายคอลเล็กชันของแท็บหรือ RadioButton เพื่อวัตถุประสงค์ในการช่วยเหลือพิเศษ (Ie5c29)
เพิ่ม LazyListState.animateScrollToItem
เมธอดนี้จะเลื่อนรายการในลิสต์อย่างราบรื่นไปยังรายการที่เฉพาะเจาะจง (I4bfd7)
เปลี่ยนชื่อ ScrollableState.smoothScrollBy() เป็น animateScrollBy() เปลี่ยนชื่อ LazyListState.snapToItemIndex() เป็น scrollToItem() เปลี่ยนชื่อ ScrollState.smoothScrollTo() เป็น animateScrollTo() (I35ded)
Modifier.zoomable ถูกแทนที่ด้วย Modifier.transformable แล้ว และมีการเพิ่ม smoothPanBy, smoothRotationBy เป็นฟังก์ชันการทำงาน (Ifc32b, b/175294473)
ตอนนี้คุณต้องระบุ
defaultFactoryสำหรับcompositionLocalOfและstaticCompositionLocalOfแทนที่จะระบุหรือไม่ระบุก็ได้การเปลี่ยนแปลงนี้จะนำข้อผิดพลาดเกี่ยวกับประเภทที่อาจเกิดขึ้นสำหรับประเภทที่ไม่ใช่ Null ออก ในกรณีที่ไม่ได้ระบุโรงงานเริ่มต้น ก่อนหน้านี้ จะให้การอ้างอิงเป็น Null สำหรับประเภทที่กำหนดให้ต้องมีค่า
สำหรับประเภทที่กำหนดให้เป็น Null ได้ ให้พิจารณาใส่
{ null }เป็นค่าเริ่มต้น factoryเราไม่แนะนำให้ใช้ locales กับประเภทที่กำหนดให้มีค่าเสมอ เว้นแต่จะระบุค่าเริ่มต้นที่เหมาะสมได้ หากไม่มีค่าเริ่มต้นที่เหมาะสม Lambda
defaultFactoryควรส่งข้อยกเว้น อย่างไรก็ตาม การส่งข้อยกเว้นหมายความว่าผู้ใช้ภาษาจะมี การอ้างอิงโดยนัยถึงการระบุภาษาดังกล่าว ซึ่งระบบประเภทไม่ได้บังคับ (Ifbd2a)เปลี่ยน
Indication#createIndication()เป็นIndication#rememberUpdatedIndication(InteractionState)และนำพารามิเตอร์InteractionStateออกจาก IndicationInstance#drawIndication()IndicationInstance ควรมีหน้าที่วาดเอฟเฟกต์ภาพเท่านั้น และไม่ควรเปิดภาพเคลื่อนไหว / เขียนสถานะเพื่อตอบสนองต่อการเปลี่ยนแปลง InteractionState ภาพเคลื่อนไหวและการเขียนสถานะเหล่านี้ควรเกิดขึ้นภายในrememberUpdatedIndication()แทน นอกจากนี้ เรายังเปลี่ยนพารามิเตอร์indicationในModifier.indicationให้เป็นพารามิเตอร์ที่ต้องระบุด้วย (Ic1764, b/152525426)ตอนนี้การดำเนินการกับข้อความจะตรวจสอบโฟกัสโดยอัตโนมัติ (I13777, b/179648629)
นำออก
runBlockingWithManualClock(I15cdc, b/179664814)ตอนนี้ตำแหน่งการเลื่อนใน Modifier.verticalScroll()/horizontalScroll() จะแสดงด้วย Ints (I81298)
เปลี่ยนแพ็กเกจของเมธอด smoothScrollBy และ scrollBy เป็น
androidx.compose.foundation.gestures.*(I3f7c1, b/175294473)เราได้เปลี่ยนชื่อ FlingConfig เป็น FlingBehavior แล้ว ซึ่งตอนนี้จะช่วยให้ปรับแต่งภาพเคลื่อนไหวระงับได้แทนที่จะใช้ Decays ที่กำหนดไว้ล่วงหน้า (I02b86, b/175294473)
เปลี่ยนชื่อตัวแก้ไขขนาดแล้ว เปลี่ยนชื่อ Modifier.width/height/size เป็น requiredWidth/requiredHeight/requiredSize เราเปลี่ยนชื่อ Modifier.preferredWidth/preferredHeight/preferredSize เป็น width/height/size (I5b414)
เปลี่ยนชื่อ defaultMinSizeConstraints เป็น defaultMinSize แล้ว (I4eaae)
นำ Modifier.tapGestureFilter ออกแล้ว โปรดใช้
Modifier.pointerInput { detectTapGestures(...) }แทน (I266ed, b/175294473)นำการใช้งานบางส่วนออกจากระบบอินพุตของเคอร์เซอร์ วิธีที่แนะนำในการประสานการใช้งานบางส่วนคือ Modifier.nestedScroll (Ie9c9b)
ย้ายการปฐมนิเทศไปไว้ในแพ็กเกจพื้นฐานแล้ว VelocityTracker ย้ายจาก ui.gesture ไปยัง ui.input.pointer (Iff4a8, b/175294473)
เราได้นำ AnimationClockObservable และคลาสย่อยออกแล้ว นำ AnimatedFloat ออกแล้ว (Icde52, b/177457083)
ตอนนี้ drawerState.open() และ drawerState.close() เป็นฟังก์ชันที่ระงับแล้ว ใช้ rememberCoroutineScope() เพื่อรับขอบเขตของการจัดองค์ประกอบเพื่อเรียกใช้ (I16f60, b/175294473)
เปลี่ยนชื่อ Providers เป็น CompositionLocalProvider แล้ว
- ตัวสร้างองค์ประกอบไม่รับพารามิเตอร์คีย์อีกต่อไปและเลิกใช้งานแล้ว
- currentCompositeKeyHash ได้รับการเปลี่ยนให้เป็นพร็อพเพอร์ตี้ระดับบนสุดที่ประกอบกันได้แทนที่จะเป็นฟังก์ชันระดับบนสุดที่ประกอบกันได้
- ย้าย CompositionData และ CompositionGroup ไปยังเนมสเปซ androidx.compose.runtime.tooling แล้ว
- เราได้เปลี่ยน ComposableLambda ให้เป็นอินเทอร์เฟซแทนที่จะเป็นคลาสที่เฉพาะเจาะจง และไม่มีพารามิเตอร์ประเภทอีกต่อไป
- เราได้เปลี่ยน ComposableLambdaN ให้เป็นอินเทอร์เฟซแทนที่จะเป็นคลาสที่เฉพาะเจาะจง และไม่มีพารามิเตอร์ประเภทอีกต่อไป
- ฟังก์ชัน snapshotFlow ย้ายไปที่เนมสเปซ androidx.compose.runtime แล้ว
- วิธีการผสานของ SnapshotMutationPolicy ไม่ใช่เวอร์ชันทดลองอีกต่อไป
- ระบบได้นำฟังก์ชัน
@TestOnlyclearRoots ระดับบนสุดออกแล้ว ไม่จำเป็นอีกต่อไป - ระบบได้นำฟังก์ชัน keySourceInfoOf และ resetSourceInfo ออกแล้ว ซึ่งไม่จำเป็นอีกต่อไป
- มีการนำ Composer.collectKeySourceInformation ออกแล้ว ไม่จำเป็นอีกต่อไป
- นำเมธอด isJoinedKey, joinedKeyLeft และ joinedKeyRight ออกแล้ว ซึ่งไม่จำเป็นอีกต่อไป
- เราได้ย้ายและจัดระเบียบ API ระดับบนสุดต่างๆ ไปยังไฟล์อื่น เนื่องจากความหมายของคลาสไฟล์ของ Kotlin การดำเนินการนี้จะทำให้ความเข้ากันได้แบบไบนารีใช้งานไม่ได้ แต่ความเข้ากันได้ของแหล่งที่มาจะยังคงใช้งานได้ ดังนั้นผู้ใช้ส่วนใหญ่จึงไม่น่าจะพบปัญหา
- (I99b7d, b/177245490)
เราได้ปรับปรุง Modifier.scrollable ใหม่ ตอนนี้จะใช้อินเทอร์เฟซที่เลื่อนได้แทนคลาส ScrollableController (I4f5a5, b/174485541, b/175294473)
ตอนนี้ Modifier.draggable ยอมรับ DraggableState แทนที่จะเป็น Lambda แบบง่ายๆ แล้ว คุณสามารถสร้างสถานะผ่าน
rememberDraggableState { delta -> }เพื่อให้ได้ลักษณะการทำงานแบบเดิม (Ica70f, b/175294473)เพิ่มตัวแก้ไข requiredWidth(IntrinsicSize) และ requiredHeight(IntrinsicSize) สำหรับการกำหนดขนาดที่จำเป็นเป็นขนาดโดยเนื้อแท้ (I0a6b4)
นำ
emptyContent()ที่เลิกใช้งานแล้วออก โปรดใช้{}แทน (Idb33f, b/179432510)ลบ API ที่เลิกใช้งานไปก่อนหน้านี้บางรายการ (Ice5da, b/178633932)
การแก้ไขข้อบกพร่อง
- เพิ่มองค์ประกอบ LocalSoftwareKeyboardController ใหม่ในเครื่อง API เพื่อแทนที่อินเทอร์เฟซ SoftwareKeyboardController ก่อนหน้าใน TextField (I658b6, b/168778053)
เวอร์ชัน 1.0.0-alpha12
10 กุมภาพันธ์ 2021
androidx.compose.foundation:foundation:1.0.0-alpha12 และ androidx.compose.foundation:foundation-layout:1.0.0-alpha12 เปิดตัวแล้ว เวอร์ชัน 1.0.0-alpha12 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- ตอนนี้ Modifier.pointerInput ต้องใช้คีย์ remember เพื่อระบุ เมื่อควรเริ่มโครูทีนการตรวจหาอินพุตของเคอร์เซอร์ใหม่สำหรับ การอ้างอิงใหม่ (I849cd)
- การอัปเดตการทดสอบ: hasText() จะตรวจสอบทั้งข้อความอินพุตและข้อความป้ายกำกับ/คำแนะนำ/ตัวยึดตำแหน่งในช่องข้อความ (Iab803)
- เพิ่ม PaddingValues.Absolute แล้ว และสามารถใช้ใน API ที่ยอมรับ PaddingValues ได้ (Ia5f30)
- เลิกใช้งาน onImeActionPerformed แล้ว ให้ใช้ KeyboardActions แทน (If0bbd, b/179071523)
- เราได้เปลี่ยนชื่อ ImagePainter เป็น BitmapPainter เพื่อให้สอดคล้องกับ VectorPainter มากขึ้น และเพื่อให้การตั้งชื่อเป็นไปตาม รูปแบบการตั้งชื่อของ ImageBitmap และ ImageVector (Iba381, b/174565889)
- API การทดสอบสตริงย่อยที่ดีขึ้นโดยมีสตริงย่อยเป็นอาร์กิวเมนต์ (Icbe78)
- เปิดตัวองค์ประกอบบริบทของโครูทีน
InfiniteAnimationPolicyที่จะใช้ในภาพเคลื่อนไหวแบบไม่มีที่สิ้นสุด โดยค่าเริ่มต้น ระบบจะไม่ติดตั้งนโยบายใดๆ ยกเว้นเมื่อเรียกใช้การทดสอบด้วยComposeTestRule(I50ec4, b/151940543) - ตอนนี้ Animatable.snapTo และ Animatable.stop เป็นฟังก์ชันที่ระงับแล้ว (If4288)
- ComponentActivity.setContent ได้ย้ายไปอยู่ที่ androidx.activity.compose.setContent ใน androidx.activity:activity-compose module แล้ว (Icf416)
- เราได้นำเมธอด Destructuring และ copy() ออกจาก คลาสหลายคลาสซึ่งไม่ค่อยมีการใช้งาน (I26702, b/178659281)
เพิ่มการรองรับคีย์ที่กำหนดเองสำหรับ LazyColumn/LazyRow แล้ว ซึ่งจะช่วยให้เราจัดการการเรียงลำดับรายการใหม่ได้อย่างชาญฉลาดยิ่งขึ้น ดังนั้น สถานะที่คุณจัดเก็บไว้ในบล็อก remember {} จะย้ายไปพร้อมกับรายการเมื่อคุณเรียงลำดับองค์ประกอบใหม่หรือนำรายการออกจากตรงกลาง
LazyColumn { items(users, key = { user -> user.id }) { ... } }เปลี่ยน Indication#createInstance เป็น @Composable และเปลี่ยน LocalIndication ให้มี Indication ไม่ใช่ () -> Indication (I5eeea, b/157150564)
Constraints.enforceถูกแทนที่ด้วยConstraints.constrain(I8b8ea)เลิกใช้งาน loadFontResource แล้ว โปรดใช้ fontResource แทน เลิกใช้งาน imageResource, loadImageResource, vectorResource และ loadVectorResource แล้ว ใช้ painterResource แทน (I6b809)
ตอนนี้ตรรกะของ ScrollAxisRange จะใช้ Lambda ที่แสดงผล Float แทนค่า Float โดยตรงเพื่อประสิทธิภาพ (If4a35, b/178657186)
เพิ่มซีแมนทิก EditableText เพื่อทำเครื่องหมายข้อความอินพุตที่แก้ไขได้ของช่องข้อความเพื่อการช่วยเหลือพิเศษ และเพิ่มวิธีการทดสอบที่เกี่ยวข้องเพื่อตรวจสอบซีแมนทิก (I8e07a)
ตอนนี้ Modifier.clickable ไม่รองรับการคลิก 2 ครั้งและการคลิกแบบยาวแล้ว ใช้ Modifier.combinedClickable เพื่อให้ได้ฟังก์ชันนี้ (Iafad1)
เปลี่ยนชื่อ toIntPx() เป็น roundToPx() (I9b7e4, b/173502290)
เราได้เปลี่ยนชื่อ IntBounds เป็น IntRect และปรับปรุง API (I1f6ff)
เลิกใช้งาน Modifier.dragGestureFilter แล้ว โปรดใช้
Modifier.pointerInput { detectDragGestures (...)}แทน หรือใช้ Modifier.draggable สำหรับการลากแกนเดียว (I0ba93, b/175294473)เปลี่ยนชื่อ Ambients ให้ตรงกับการเปลี่ยนชื่อ Ambient -> CompositionLocal เดิมชื่อของ Ambients คือ AmbientFoo แต่ตอนนี้ชื่อของ CompositionLocals คือ LocalFoo (I2d55d)
ย้ายการเลือกไปยังมูลนิธิแล้ว (I7892b)
เช่นเดียวกับที่เราเคยนำ
state { 0 }composable ออกไปก่อนหน้านี้และตอนนี้เราแนะนำให้ใช้remember { mutableStateOf(0) }เราจะนำsavedInstanceState { 0 }composable ออก คุณควรใช้rememberSaveable { mutableStateOf(0) }แทน และระบบจะบันทึกและกู้คืนโดยอัตโนมัติหากจัดเก็บประเภทที่ใช้ภายใน MutableState ไว้ใน Bundle ได้ หากก่อนหน้านี้คุณส่งออบเจ็กต์โปรแกรมประหยัดที่กำหนดเอง ตอนนี้คุณต้องใช้การโอเวอร์โหลดใหม่ของ rememberSaveable ซึ่งมีพารามิเตอร์stateSaverการใช้งานจะมีลักษณะดังนี้val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) }(Ib4c26, b/177338004)เพิ่มความหมายของรหัสผ่านเพื่อการช่วยเหลือพิเศษ (I231ce)
เพิ่ม ProgressBarRangeInfo.Indeterminate เพื่อทำเครื่องหมายแถบความคืบหน้าที่ไม่แน่นอนเพื่อการช่วยเหลือพิเศษ (I6fe05)
ตอนนี้เวลาเล่นในภาพเคลื่อนไหวจะรวมเป็นหน่วยนาโนวินาที (If776a)
เราเลิกใช้งาน @ComposableContract แล้วเพื่อใช้คำอธิบายประกอบที่เฉพาะเจาะจงมากขึ้น 3 รายการ
@ComposableContract(restartable = false)ได้เป็น@NonRestartableComposable@ComposableContract(readonly = true)ได้เป็น@ReadOnlyComposable@ComposableContract(preventCapture = true)ได้เป็น@DisallowComposableCalls@ComposableContract(tracked = true)ถูกนำออกแล้ว (I60a9d)เราได้เลิกใช้งานยูทิลิตี
emptyContent()และ(@Composable () -> Unit).orEmpty()แล้ว เนื่องจากยูทิลิตีดังกล่าวไม่มีผลต่อประสิทธิภาพหรือคุณค่าในเชิงบวกอีกต่อไป (I0484d)ตอนนี้คุณปิด Recomposers ได้แล้ว Closed recomposers จะ ทำการ Recompose ต่อไปจนกว่าโคโรทีนย่อยของการ Composition จะเสร็จสมบูรณ์ เปลี่ยนชื่อ Recomposer.shutDown เป็น cancel เพื่อให้แตกต่างจาก close (Ib6d76)
API ที่เกี่ยวข้องกับ LazyVerticalGrid จะมีเครื่องหมายว่าอยู่ในระยะทดลอง (Ia53e3, b/178519862)
เปลี่ยนชื่อ rememberSavedInstanceState() เป็น rememberSaveable() และย้ายไปยังแพ็กเกจ androidx.compose.runtime.saveable (I1366e, b/177338004)
เราได้เปลี่ยนชื่อ RestorableStateHolder เป็น SaveableStateHolder และย้ายไปยังแพ็กเกจ androidx.compose.runtime.saveable เราได้เปลี่ยนชื่อเมธอดภายใน RestorableStateProvider เป็น SaveableStateProvider ระบบนำประเภททั่วไปออกเพื่อให้คุณส่ง Any เป็นคีย์ได้ ไม่จำเป็นต้องใช้คำอธิบายประกอบเวอร์ชันทดลองอีกต่อไป (I0902e, b/174598702)
ย้าย Saver, listSaver(), mapSaver(), autoSaver จาก androidx.compose.runtime.savedinstancestate ไปยัง androidx.compose.runtime.saveable (I77fe6)
เปลี่ยนชื่ออาร์ติแฟกต์ androidx:compose:runtime:runtime-saved-instance-state เป็น androidx:compose:runtime:runtime-saveable (I6dcac)
ระบบจะลบ API ที่เลิกใช้งานมานานหลายรายการในแพ็กเกจ ui (I2f2dc)
ตอนนี้เราเลิกใช้งานอาร์ติแฟกต์ compose:runtime-dispatch แล้ว ตอนนี้ MonotonicFrameClock อยู่ใน compose:runtime และ AndroidUiDispatcher อยู่ใน compose:ui (Ib5c36)
เราเปลี่ยนชื่อพารามิเตอร์ใน RounderCornerShape, CutCornerShape และ CornerBasedShape จากซ้าย/ขวาเป็นเริ่ม/สิ้นสุดเพื่อรองรับการมิเรอร์อัตโนมัติของรูปร่างในทิศทาง RTL เราได้เปิดตัว AbsoluteRounderCornerShape และ AbsoluteCutCornerShape สำหรับกรณีที่ไม่ต้องการการมิเรอร์อัตโนมัติ (I61040, b/152756983)
นำ canDrag ออกจาก Modifier.scrollable แล้ว (Id66e7, b/175294473)
เราได้รีแฟกเตอร์ API ที่ปลั๊กอินคอมไพเลอร์ Compose กำหนดเป้าหมาย เพื่อใช้อินเทอร์เฟซแทน คลาสที่เฉพาะเจาะจง นอกจากนี้ อินเทอร์เฟซยังไม่ใช้พารามิเตอร์ประเภทอีกต่อไป
การเปลี่ยนแปลงนี้เป็นการเปลี่ยนแปลงภายในซึ่งไม่ควรส่งผลต่อความเข้ากันได้ของซอร์สโค้ด แต่เป็นการเปลี่ยนแปลงที่ทำให้ไบนารีใช้งานร่วมกันไม่ได้ (I3b922, b/169406779)
นำ Modifier.scaleGestureFilter ออกแล้ว โปรดใช้ Modifier.zoomable แทน หรือใช้
Modifier.pointerInput { detectMultitouchGestures { ... }}(Id5da1, b/175294473)ตอนนี้เราเลิกใช้งาน AnimatedValue/Float แล้ว โปรดใช้ Animatable แทน (I71345, b/177457083)
- นำ CoreText และ CoreTextField ออกจาก API สาธารณะ
- นำการโอเวอร์โหลด SelectionContainer ที่เลิกใช้งานแล้วออก (I99c19)
นำฟังก์ชันการเลื่อนที่ไม่ระงับที่เลิกใช้งานแล้วออก การเปลี่ยนแปลงจากรุ่นที่แล้วจะดำเนินต่อไป โดยตอนนี้ระบบได้นำฟังก์ชันการเลื่อนที่ไม่ระงับออกทั้งหมดแล้ว โปรดแปลงเป็นฟังก์ชันระงับ ที่มีชื่อเดียวกัน โดยจะรับขอบเขตของโครูทีนได้ผ่าน rememberCoroutineScope() (I3d39c, b/178169563)
เลิกใช้งาน androidx.compose.foundation.layout.ConstraintLayout เพื่อใช้ androidx.constraintlayout.compose.ConstraintLayout แทน คุณจะต้องเพิ่มการอ้างอิงใน
androidx.constraintlayout:constraintlayout-compose:1.0.0-alpha01(I87adc)เลิกใช้งาน tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter และ pressIndicaitonGestureFilter แล้ว โปรดใช้ Modifier.clickable หรือ Modifier.pointerInput กับฟังก์ชัน detectTapGestures แทน (I6baf9, b/175294473)
นำ
Recomposer.current()ออกแล้ว [Abstract]ComposeView now default to lazily created, window-scoped Recomposers driven by the ViewTreeLifecycleOwner for the window. ระบบจะหยุดการสร้างใหม่และเครื่องหมายภาพเคลื่อนไหวตาม withFrameNanos ชั่วคราวขณะที่หยุดวงจรของโฮสต์ (I38e11)Recomposer.runningRecomposers ตอนนี้มี StateFlow ทั่วโลกของ RecomposerInfo แบบอ่านอย่างเดียวสำหรับการสังเกตสถานะการจัดองค์ประกอบที่กำลังดำเนินการใน กระบวนการ ควรใช้ API นี้แทน Recomposer.current() ซึ่งตอนนี้เลิกใช้งานแล้ว (If8ebe)
เวอร์ชัน 1.0.0-alpha11
28 มกราคม 2021
androidx.compose.foundation:foundation:1.0.0-alpha11 และ androidx.compose.foundation:foundation-layout:1.0.0-alpha11 เปิดตัวแล้ว เวอร์ชัน 1.0.0-alpha11 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
เลิกใช้งาน scrollBy ที่ไม่ใช่แบบระงับ นำ scrollTo ที่ไม่ใช่แบบระงับออก
ตอนนี้เราขอแนะนำให้ใช้ฟังก์ชันระงับเพื่อควบคุมการเลื่อนและรอให้การเลื่อนเสร็จสิ้น เราจะเลิกใช้งานและ/หรือนำฟังก์ชันเวอร์ชันที่ไม่ใช่แบบระงับออกเพื่อเป็นส่วนหนึ่งของการเปลี่ยนผ่านนี้ (Ie9ced)
เลิกใช้งาน smoothScrollBy ที่ไม่ใช่แบบระงับ ตอนนี้เราขอแนะนำให้ใช้ฟังก์ชันระงับเพื่อควบคุมการเลื่อนและรอ ให้การเลื่อนเสร็จสิ้น เราจะเลิกใช้งานฟังก์ชันเวอร์ชันที่ไม่ระงับ ของฟังก์ชันเหล่านี้ซึ่งเป็นส่วนหนึ่งของการเปลี่ยนผ่านนี้ (I12880)
เพิ่มพารามิเตอร์คำอธิบายเนื้อหาลงในรูปภาพและไอคอนแล้ว ใช้เพื่ออธิบายบริการการช่วยเหลือพิเศษ (I2ac4c)
BasicTextField ได้รับพารามิเตอร์ใหม่ที่ชื่อ "decorationBox" ซึ่งช่วยให้เพิ่มการตกแต่งต่างๆ เช่น ไอคอน ตัวยึดตำแหน่ง ป้ายกำกับ และอื่นๆ ที่คล้ายกับช่องข้อความ รวมถึงเพิ่มพื้นที่เป้าหมายของการแตะได้ (I16996)
นำพารามิเตอร์ canDrag ออกจาก Modifier.draggable (Ic4bec, b/175294473)
นำ AnimatedFloat.fling ที่ยอมรับ FlingConfig ออกแล้ว โปรดใช้ suspend Animatable.animateDecay แทน (I4659b, b/177457083)
นำ
data classออกจากชั้นเรียนต่อไปนี้- InlineTextContent
- LocaleList
- (I605c7)
ตอนนี้คุณสร้างรายการที่คลิกได้ สลับได้ และเลือกได้ภายนอกองค์ประกอบได้แล้ว (I0a130, b/172938345, b/175294473)
เลิกใช้งาน ScrollableColumn/Row แล้ว การใช้ ScrollableColumn มีประสิทธิภาพน้อยกว่าเมื่อเทียบกับ LazyColumn เมื่อมีเนื้อหาที่เลื่อนได้จำนวนมาก เนื่องจาก LazyColumn จะคอมโพส/วัด/วาดเฉพาะองค์ประกอบที่มองเห็นได้ เพื่อป้องกันไม่ให้ผู้ใช้ใช้วิธีที่ไม่มีประสิทธิภาพ เราจึงตัดสินใจเลิกใช้งาน ScrollableColumn และ ScrollableRow แล้วส่งเสริมให้ใช้ LazyColumn และ LazyRow แทน ผู้ใช้ยังคงเลือกได้ว่าจะไม่ใช้ลักษณะการทำงานแบบเลซี่และใช้ตัวแก้ไขโดยตรงได้ดังนี้ Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b, b/170468083)
items(count: Int)เมธอด Factory ใหม่สำหรับขอบเขตของ LazyColumn/LazyRow/LazyVerticalGrid ตอนนี้items(items: List)และitemsIndexed(items: List)เป็นฟังก์ชันส่วนขยายแล้ว คุณจึงต้องนำเข้าด้วยตนเองเมื่อใช้งาน การโอเวอร์โหลดส่วนขยายใหม่สำหรับอาร์เรย์: items(items: Array) และ itemsIndexed(Array) (I803fc, b/175562574)นำ AbsoluteArrangement ที่เลิกใช้งานแล้วออก (Iffa96, b/177641870)
เราได้เพิ่มพารามิเตอร์ propagateMinConstraints ลงใน Box เพื่อระบุว่าควรส่งข้อจำกัดขั้นต่ำที่เข้ามาไปยังเนื้อหาของ Box หรือไม่ ค่าเริ่มต้นคือ False (I0125b, b/152613457)
การแก้ไขข้อบกพร่อง
- onCommit, onDispose และ onActive ถูกเลิกใช้งานแล้วเพื่อรองรับ SideEffect และ DisposableEffect API (If760e)
- เราได้ปรับปรุง WithConstraints เป็น BoxWithConstraints และย้ายไปที่ foundation.layout (I9420b, b/173387208)
การเปลี่ยนแปลงฟังก์ชันโรงงานสำหรับ Font/FontFamily/Typeface
- เพิ่มฟังก์ชัน Factory ที่ขึ้นต้นด้วยตัวพิมพ์ใหญ่
- เลิกใช้งานฟังก์ชันโรงงานก่อนหน้าที่มีตัวอักษรตัวแรกเป็นตัวพิมพ์เล็ก
- ฟังก์ชัน Factory ใหม่จะแสดงผล FontFamily แทน คลาสย่อย
- ซ่อนตัวสร้างของคลาสย่อยเพื่อให้สร้างได้ผ่านฟังก์ชัน Factory เท่านั้น
- เปลี่ยนชื่อ Font.asFontFamily เป็น Font.toFontFamily
- (I42aa7)
เปิดตัว
ComposeContentTestRuleซึ่งขยายComposeTestRuleและกำหนดsetContentซึ่งถูกนำออกจากComposeTestRuleเพิ่มเมธอดจากโรงงานcreateEmptyComposeRule()ซึ่งจะแสดงผลComposeTestRuleและไม่เปิดใช้กิจกรรมให้คุณ ใช้เมื่อต้องการเปิดใช้กิจกรรมระหว่างการทดสอบ เช่น ใช้ActivityScenario.launch(I9d782, b/174472899)ตอนนี้ animateAsState คือ animateFooAsState โดยที่ Foo คือ ประเภทของตัวแปรที่กำลังเคลื่อนไหว เช่น Float, Dp, Offset ฯลฯ (Ie7e25)
ตอนนี้ความหนาแน่นเป็นขอบเขตตัวรับสำหรับอินเทอร์เฟซการจัดเรียงแล้ว (I18aad)
TextFieldValue ยอมรับ AnnotatedString อย่างไรก็ตาม การเปลี่ยนแปลงนี้เป็น การเปลี่ยนแปลง API เท่านั้น และระบบยังไม่ได้ ใช้การแก้ไขข้อความหลายสไตล์
- นำ
initialออกจากพารามิเตอร์ของตัวสร้าง EditingBuffer (I326d5)
- นำ
ตอนนี้เราเลิกใช้งาน invalidate และ compositionReference() แล้ว และแนะนำให้ใช้ currentRecomposeScope และ rememberCompositionReference แทนตามลำดับ (I583a8)
มีการเปลี่ยนแปลง AnnotatedString ให้ขยายจาก kotlin.CharSequence ดังนั้น ตอนนี้ length และ subSequence จึงเป็นฟังก์ชันอินสแตนซ์ และระบบได้นำฟังก์ชันส่วนขยายออกแล้ว (Iaf429)
ระบบจะแทนที่ระยะเวลาและเวลาทำงานด้วยมิลลิวินาทีแบบยาว และขั้นตอนนี้จะนำการขึ้นต่อกันของอินพุตพอยน์เตอร์ในคลาสเหล่านั้นออก (Ia33b2, b/175142755, b/177420019)
โปรดทราบว่า RememberObserver จะแทนที่ CompositionLifecycleObserver และตอนนี้ CompositionLifecycleObserver เลิกใช้งานแล้ว
RememberObserverเป็นการแทนที่CompositionLifecycleObserverโดยมีการแก้ไขความหมายและ เปลี่ยนชื่อเมธอด การเปลี่ยนไปใช้ API ใหม่สามารถทำได้โดยอัตโนมัติ สำหรับออบเจ็กต์ที่ระบบจดจำเพียงครั้งเดียว ซึ่งเป็นแนวทางที่แนะนำและยังคงเป็นแนวทางที่แนะนำต่อไป อย่างไรก็ตาม หากมีการจดจำการอ้างอิงมากกว่า 1 ครั้งในองค์ประกอบonRememberedจะเรียกใช้ สำหรับการอ้างอิงแต่ละรายการโดยที่onEnterจะเรียกใช้เพียงครั้งเดียวonEnterถูกเรียกหลายครั้งหากใช้วัตถุในองค์ประกอบย่อย เช่นWithConstraintsและScaffoldทำให้การเรียกonEnterครั้งเดียวไม่น่าเชื่อถือและถูกนำออกสำหรับRememberObserverRememberObserverเพิ่มonAbandonedซึ่งจะเรียกใช้หากมีการส่งคืนอินสแตนซ์RememberObserverจากการเรียกกลับที่ส่งไปยังrememberแต่ไม่ได้จดจำไว้ในสถานะการเรียบเรียง และด้วยเหตุนี้ จึงจะไม่มีการเรียกใช้onRememberedปัญหานี้อาจเกิดขึ้นหากข้อยกเว้นสิ้นสุดการคอมโพสก่อนที่จะเสร็จสมบูรณ์ หรือระบบทิ้งการคอมโพสเนื่องจากสถานะที่ใช้สร้างการคอมโพสไม่เป็นปัจจุบันอีกต่อไป หรือไม่จำเป็นอีกต่อไป หากอินสแตนซ์ของRememberObserverที่ตามมาด้วยคำแนะนำการอ้างอิงเดียวด้านบนติดตามแหล่งข้อมูลภายนอก ทั้งonForgottenและonAbandonedจะระบุว่า ไม่จำเป็นต้องใช้แหล่งข้อมูลอีกต่อไป หากออบเจ็กต์ติดตามงานที่เริ่มหรือทรัพยากรที่จัดสรรในonRememberedคุณสามารถละเว้นonAbandonedได้เนื่องจากระบบจะไม่เรียกใช้หากเรียกใช้onRemembered(I02c36)เปลี่ยนชื่อ TransformedText.transformedText เป็น TransformedText.text
- TransformedText ไม่ใช่คลาสข้อมูลอีกต่อไป (Ie672a)
ชั้นเรียนต่อไปนี้ไม่ใช่ชั้นเรียนข้อมูลอีกต่อไป
- AnnotatedString
- ParagraphStyle
- SpanStyle
- TextStyle
- FontWeight
- TextDecoration
- TextGeometricTransform
- TextIndex
- TextLayoutResult
- TextLayoutInput (Iaff99)
นำเมธอด monotonicFrameAnimationClockOf ที่เป็นเวอร์ชันทดลองออกแล้ว (Ib753f, b/170708374)
เลิกใช้งานเมธอดพิกัดส่วนกลางและสร้างเมธอดพิกัดใหม่ตามหน้าต่าง (Iee284)
โปรดใช้ ImeAction.None แทน ImeAction.NoAction
- โปรดใช้ ImeAction.Default แทน ImeAction.Unspecified (Ie1bcc)
ตอนนี้ FocusRequester.createRefs มีเครื่องหมายระบุว่าอยู่ในขั้นทดลองเนื่องจากอาจมีการเปลี่ยนแปลง (I2d898, b/177000821)
เปลี่ยนชื่อ SemanticsPropertyReceiver.hidden เป็น invisibleToUser และทำเครื่องหมาย @ExperimentalComposeUiApi เปลี่ยนชื่อ AccessibilityRangeInfo เป็น ProgressBarRangeInfo เปลี่ยนชื่อ stateDescriptionRange เป็น progressBarRangeInfo เปลี่ยนชื่อ AccessibilityScrollState เป็น ScrollAxisRange เปลี่ยนชื่อ horizontalAccessibilityScrollState เป็น horizontalScrollAxisRange เปลี่ยนชื่อ verticalAccessibilityScrollState เป็น verticalScrollAxisRange (Id3148)
เปลี่ยน VisualTransformation ให้เป็นอินเทอร์เฟซที่ใช้งานได้ (I3bba4)
ใช้ประโยชน์จาก TestCoroutineDispatcher ในการทดสอบ (I532b6)
นำ PointerInputData ออกและแก้ไข PointerInputChange เพื่อให้มีฟิลด์ทั้งหมดของ PointerInputData ทำให้ PointerInputEvent และ PointerInputEventData เป็นแบบภายในเนื่องจากไม่ได้ใช้ใน API สาธารณะใดๆ (Ifff97, b/175142755)
เปลี่ยนชื่อ TextInputService.onStateUpdated เป็น updateState (Id4853)
นำ displaySize ออกเนื่องจากควรหลีกเลี่ยง โดยปกติแล้ว ควรใช้ขนาดของ onRoot() หรือขนาดหน้าต่างเป็นอย่างน้อย (I62db4)
เวอร์ชัน 1.0.0-alpha10
13 มกราคม 2021
androidx.compose.foundation:foundation:1.0.0-alpha10 และ androidx.compose.foundation:foundation-layout:1.0.0-alpha10 เปิดตัวแล้ว เวอร์ชัน 1.0.0-alpha10 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ImeOptions และ KeyboardOptions ไม่ใช่คลาสข้อมูลอีกต่อไป (I3c898, b/168684531)
- การเปลี่ยนแปลง VisualTransformation API
- เปลี่ยนชื่อ OffsetMap เป็น OffsetMapping
- เปลี่ยนชื่อ OffsetMapping.identityOffsetMap เป็น OffsetMapping.Identity
- PasswordTransformation ไม่ใช่คลาสข้อมูลอีกต่อไป
- ย้าย OffsetMapping ไปยังไฟล์ของตัวเอง
- (I0bdf3)
- การเปลี่ยนแปลง API ของ EditOperations
- เปลี่ยนชื่อ EditOperation เป็น EditCommand
- เพิ่มคำต่อท้าย Command สำหรับการติดตั้งใช้งานจริงของ EditOperation
- EditCommand ไม่ใช่คลาสข้อมูลอีกต่อไป
- เปลี่ยนชื่อฟังก์ชัน EditOperation.process เป็น applyTo
- เปลี่ยนชื่อ InputEventListener เป็น InputEventCallback
- (I0a366)
- ความเร็วที่แก้ไขแล้วเพื่อให้มีส่วนประกอบและ การดำเนินการทางคณิตศาสตร์ (Ib0447)
- เปลี่ยนชื่อ @ExperimentalTesting เป็น @ExperimentalTestApi เพื่อให้สอดคล้องกับคำอธิบายประกอบ API ทดลองที่คล้ายกัน (Ia4502, b/171464963)
- เพิ่มเมธอด stickyHeader เวอร์ชันทดลองสำหรับ LazyColumn/LazyRow (I0a81d)
- เปลี่ยนชื่อ Color.useOrElse() เป็น Color.takeOrElse() (Ifdcf5)
- เลิกใช้งาน TestUiDispatcher แล้ว ให้ใช้ Dispatchers.Main แทน (Ic171f, b/175385255)
- เพิ่มสวิตช์เปิด/ปิดไปยัง foundation Strings.kt (I4a5b7, b/172366489)
- ย้าย nativeClass ไปยัง โมดูล ui และทำให้เป็นภายใน อัปเดตการใช้งาน nativeClass ใน การติดตั้งใช้งาน equals เพื่อใช้ 'is MyClass' แทน (I4f734)
- เลิกใช้งาน FlowRow และ FlowColumn แล้ว โปรดใช้เลย์เอาต์ที่กำหนดเองแทน (I09027)
- เลิกใช้งาน Modifier.focus() และ Modifier.focusRequester() แล้ว ใช้ Modifier.focusModifier() และ Modifier.focusReference() แทน (I75a48, b/175160751, b/175160532, b/175077829)
- เปิดตัว SelectionRegistrar.notifySelectableChange เพื่อแจ้งการอัปเดตที่เลือกได้ไปยัง SelectionManager (I6ff30, b/173215242)
- เปลี่ยน
fun Dp.isFinite()เป็นval Dp.isFinite(I50e00) - เปลี่ยนชื่อ Constraints#satisfiedBy เป็น isSatisfiedBy (I9cf5c)
- เพิ่ม isSpecified, isUnspecified และ useOrElse สำหรับ คลาสอินไลน์ที่มีค่าคงที่ Unspecified (I93f7b, b/174310811)
การแก้ไขข้อบกพร่อง
- API ใหม่ที่ใช้โครูทีน
Animatableซึ่งรับประกันการแยกกันโดยเด็ดขาด ระหว่างภาพเคลื่อนไหว DecayAnimationSpec ใหม่เพื่อรองรับภาพเคลื่อนไหวแบบลดทอนหลายมิติ (I820f2, b/168014930) - เพิ่มการรองรับช่องข้อความที่ปิดใช้และแบบอ่านอย่างเดียว (I35279, b/171040474, b/166478534)
- ตอนนี้
animate()ถูกแทนที่ด้วยanimateAsState()ซึ่งจะแสดงผลState<T>แทนTซึ่งจะช่วยให้ประสิทธิภาพดีขึ้น เนื่องจากสามารถจำกัดขอบเขตการลบล้างให้แคบลง ไปยังตำแหน่งที่อ่านค่าสถานะได้ (Ib179e) - เพิ่ม API บทบาทของ Semantics และเพิ่มบทบาทเป็นพารามิเตอร์ไปยัง คลิกได้ เลือกได้ และสลับได้ SemanticsModifier เปลี่ยน Modifier.progressSemantics เพื่อให้แถบเลื่อนใช้ได้ด้วย (I216cd)
- ตอนนี้คุณเข้าถึง keyEvent ดั้งเดิมได้แล้วผ่าน keyEvent.nativeKeyEvent (I87c57, b/173086397)
เวอร์ชัน 1.0.0-alpha09
16 ธันวาคม 2020
androidx.compose.foundation:foundation:1.0.0-alpha09 และ androidx.compose.foundation:foundation-layout:1.0.0-alpha09 เปิดตัวแล้ว เวอร์ชัน 1.0.0-alpha09 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
เพิ่มอินเทอร์เฟซที่เลื่อนได้
ซึ่งจะช่วยให้ถือว่า ScrollState และ LazyListState เป็นประเภททั่วไปได้ และช่วยให้สามารถใช้การเลื่อนที่กำหนดเองในทั้ง 2 ประเภทได้
นอกจากนี้ยังย้าย smoothScrollBy ไปยังฟังก์ชันส่วนขยายใน Scrollable เพื่อใช้ประโยชน์จากฟังก์ชันนี้ด้วย (I2153b)
เพิ่ม LazyVerticalGrid แล้ว (I17267, b/162213211)
เลิกใช้งาน LazyColumnFor, LazyRowFor, LazyColumnForIndexed และ LazyRowForIndexed ใช้ LazyColumn และ LazyRow แทน (I5b48c)
สำหรับ API การป้อนข้อมูลด้วยเคอร์เซอร์ที่ระงับแล้ว เราได้เปลี่ยนชื่อ HandlePointerInputScope เป็น AwaitPointerEventScope และ handlePointerInput() เป็น awaitPointerEventScope() (Idf0a1, b/175142755)
เพิ่ม LazyListState.layoutInfo ซึ่งแสดงรายการขนาดและออฟเซ็ตของรายการที่มองเห็นได้ในปัจจุบัน (If8678, b/170472532)
นำคำอธิบายประกอบ ExperimentalPointerInput ออกแล้ว (Ia7a24)
เพิ่มการรองรับ InteractionState สำหรับ TextField แล้ว (I61d91)
เพิ่มพารามิเตอร์ reverseLayout สำหรับ LazyColumn/Row เมื่อ
trueจะมีการเขียนรายการจากล่างขึ้นบน และLazyListState.firstVisibleItemIndex == 0จะหมายความว่ารายการแรกจะอยู่ที่ด้านล่าง (I552ae, b/166589935)เพิ่มพารามิเตอร์ verticalArrangement สำหรับ LazyColumn แล้ว เพิ่มพารามิเตอร์ horizontalArrangement สำหรับ LazyRow แล้ว การจัดเรียงช่วยให้เราเพิ่มช่องว่างระหว่างรายการและระบุการจัดเรียงรายการได้เมื่อมีรายการไม่เพียงพอที่จะเติมขนาดขั้นต่ำทั้งหมด (Icf79a, b/170394300)
ตอนนี้ detectMultitouchGestures ใช้การเรียกกลับ 1 รายการที่มีพารามิเตอร์ centroid, pan, zoom และ rotate ร่วมกัน (Ie6e1c)
ย้าย ContentDrawScope ไปยังโมดูล ui-graphics เพื่อให้มี DrawScope (Iee043, b/173832789)
การแก้ไขข้อบกพร่อง
- ตอนนี้ Lambda ในตัวแก้ไขออฟเซ็ตจะแสดงผล IntOffset แทน Float (Ic9ee5, b/174137212, b/174146755)
นำ SlotTable, SlotReader และ SlotWriter ออกจาก API สาธารณะ ก่อนหน้านี้มีการทำเครื่องหมายว่า InternalComposeAPI ตอนนี้ฟีเจอร์ดังกล่าวอยู่ภายใน โมดูล Compose
เพิ่ม CompositionData และ CompositionGroup เป็น การแทนที่ API เครื่องมือ UI เพื่อใช้ในการดึงข้อมูล องค์ประกอบ API เหล่านี้เป็นแบบสาธารณะ แต่ไม่ได้มีไว้สำหรับใช้ภายนอก API เครื่องมือ UI เนื่องจากมีข้อมูลดิบที่ API เครื่องมือ UI ตีความ (I31a9c)
รีแฟกเตอร์ ShaderBrush เพื่อ สร้างอินสแตนซ์ของ Shader แบบเลซีเมื่อ มีข้อมูลการกำหนดขนาดของ สภาพแวดล้อมการวาดภาพ ซึ่งมีประโยชน์ในการกำหนดการไล่ระดับสีที่ ครอบคลุมขอบเขตการวาดทั้งหมดของ Composable ในเวลาที่ทำการ Composable โดยไม่ต้อง ใช้การติดตั้งใช้งาน DrawModifier ที่กำหนดเอง
เลิกใช้งาน API ตัวสร้างฟังก์ชันการไล่ระดับสี เพื่อสนับสนุนเมธอด Factory ในออบเจ็กต์การไล่ระดับสี (I511fc, b/173066799)
เลิกใช้งาน Modifier.focusObserver แล้ว ใช้ Modifier.onFocusChanged หรือ Modifier.onFocusEvent แทน (I30f17, b/168511863, b/168511484)
ตอนนี้ Autofill API เป็น API เวอร์ชันทดลองและต้องเลือกใช้ (I0a1ec)
เพิ่มการประกาศการแยกโครงสร้างเพื่อสร้างอินสแตนซ์ FocusRequester (I35d84, b/174817008)
เปลี่ยนชื่อ accessibilityLabel เป็น contentDescription เปลี่ยนชื่อ accessibilityValue เป็น stateDescription (I250f2)
เปิดตัวฟังก์ชันใหม่หลายรายการใน SelectionRegistrar และเปลี่ยนชื่อ onPositionChange เป็น notifyPositionChange (Ifbaf7)
AndroidOwner สร้างภายใน (Ibcad0, b/170296980)
ฟังก์ชัน infiniteRepeatable ใหม่สำหรับสร้าง InfiniteRepeatableSpec (I668e5)
Applierอินเทอร์เฟซมีการเปลี่ยนแปลงเพื่อลดความซับซ้อน ในการสร้างแผนผังจากล่างขึ้นบนแทนที่จะเป็นจากบนลงล่างเปลี่ยนชื่อเมธอด
insert()เป็นinsertTopDown()แล้วเพิ่มวิธีการใหม่
insertBottomUp()แล้วโดยแอปพลิเคชันจะแทรกโหนดลงในทรีที่กำลังแก้ไข โดยใช้
insertTopDown()หรือinsertBottomUp()ขึ้นอยู่กับ ว่าตัวใดมีประสิทธิภาพดีกว่าต้นไม้บางต้น เช่น
LayoutNodeและViewสร้างจากล่างขึ้นบนได้มีประสิทธิภาพมากกว่าจากบนลงล่าง ก่อนการเปลี่ยนแปลงนี้ ต้องมีสแต็กของแทรกเพื่อใช้การสร้างจากล่างขึ้นบน ซึ่ง ต้องคัดลอกไปยังทุกแอปพลิเคชันที่ต้องมีการสร้างจากล่างขึ้นบน เพื่อประสิทธิภาพ การเปลี่ยนแปลงนี้จะApplierลบล้างinsertBottomUp()เพื่อสร้างโครงสร้างแบบต้นไม้จากล่างขึ้นบน และinsertTopDown()เพื่อสร้างโครงสร้างแบบต้นไม้จากบนลงล่าง (Icbdc2)เพิ่ม API painterResource เพื่อจัดการการโหลดออบเจ็กต์ Painter แบบทึบแสง จากรูปแบบเนื้อหาที่แรสเตอร์ (เช่น PNG) หรือ VectorDrawable ผู้บริโภคไม่จำเป็นต้อง ระบุประเภทของชิ้นงานล่วงหน้าอีกต่อไป และสามารถเรียกใช้เมธอดนี้เพื่อรับออบเจ็กต์ Painter เพื่อใช้ใน Composable ของรูปภาพหรือตัวแก้ไข Painter (I2c703, b/173818471)
เพิ่มฟังก์ชันโรงงาน buildAnnotatedString เพื่อสร้าง AnnotatedString เลิกใช้งานฟังก์ชัน builder ของ annotatedString แล้ว (Idfe0b)
เวอร์ชัน 1.0.0-alpha08
2 ธันวาคม 2020
androidx.compose.foundation:foundation:1.0.0-alpha08 และ androidx.compose.foundation:foundation-layout:1.0.0-alpha08 เปิดตัวแล้ว เวอร์ชัน 1.0.0-alpha08 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- นำพารามิเตอร์
maxLinesออกจากCoreTextFieldแล้ว หากต้องการจำกัดความสูงของช่องข้อความตามจำนวนบรรทัด ให้ใช้BasicTextFieldแทน (Iec002) - เปลี่ยนวิธีการ
await*TouchSlop()เพื่อ ไม่ตรวจหาการวางเคอร์เซอร์ลงและเปลี่ยนชื่อเป็น*OrCancellationนอกจากนี้ ยังไม่จำเป็นต้องใช้พารามิเตอร์orientationLockอีกด้วย (Ie96e1) - เพิ่มการตรวจสอบ Lint สำหรับการตั้งชื่อและการวางตำแหน่งพารามิเตอร์ Lambda ที่ใช้ร่วมกันได้ เพื่อตรวจสอบความสอดคล้องกับหลักเกณฑ์ของ Compose
นอกจากนี้ ยังย้ายข้อมูล API บางรายการโดยใช้
childrenเป็นชื่อสำหรับ Lambda ต่อท้ายเป็นcontentตามการตรวจสอบ Lint และคำแนะนำ (Iec48e) - ย้าย API ของ
foundation:foundation-textไปยังfoundation:foundationแล้ว โครงสร้างแพ็กเกจยังคงเหมือนเดิม (Id3eb2) - ตัวตรวจจับท่าทางสัมผัสแบบหลายจุดใหม่ ซึ่งรวมถึง ฟังก์ชันช่วยในการตรวจจับการหมุน การซูม และการเลื่อน (Ic459d)
- เครื่องตรวจจับท่าทางลากแบบใหม่ที่ระงับ API ของตัวชี้ อินพุต รวมถึงการล็อกการวางแนว (Icef25)
- เปลี่ยนชื่อ VectorAsset เป็น ImageVector ย้ายและเปลี่ยนชื่อ VectorAsset เป็น Builder เพื่อ ให้เป็นคลาสในของ ImageVector ตาม หลักเกณฑ์ของสภา API เพิ่ม typealias ของ VectorAssetBuilder เพื่อ ลิงก์ไปยัง ImageVector.Builder เพื่อความเข้ากันได้ (Icfdc8)
- เปลี่ยนชื่อ ImageAsset และ เมธอดที่เกี่ยวข้องเป็น ImageBitmap (Ia2d99)
- ย้ายพร็อพเพอร์ตี้ความหมายของรากฐานไปยัง UI (I6f05c)
เพิ่ม API การเลื่อนตามโครูทีน
เพิ่ม LazyListState.snapToItem และ LazyListState.smoothScrollBy รวมถึง API ระดับล่าง สำหรับการควบคุมการเลื่อน API เหล่านี้มีอินเทอร์เฟซระงับเพื่อควบคุมการเลื่อน ซึ่งจะรอจนกว่าการเลื่อนจะเสร็จสิ้นก่อนจึงจะแสดงผล (Ie5642)
เพิ่มพารามิเตอร์ singleLine ลงใน BasicTextField, TextField และ OutlinedTextField ตั้งค่าพารามิเตอร์นี้เป็น true เพื่อให้ช่องข้อความเป็นบรรทัดเดียวที่เลื่อนได้ในแนวนอน (I57004, b/168187755)
เพิ่มเครื่องตรวจจับท่าทางสัมผัสสำหรับการแตะ แตะสองครั้ง กดค้าง และการกดโดยใช้การป้อนข้อมูลเคอร์เซอร์ที่ระงับใหม่ นอกจากนี้ เรายังได้เพิ่มยูทิลิตีบางอย่างเพื่อช่วยให้นักพัฒนาแอปเขียนเครื่องตรวจจับท่าทางสัมผัสของตนเองได้ง่ายขึ้น (I00807)
เพิ่ม Modifier.focusable ที่จำเป็นใน Foundation ใช้แอตทริบิวต์นี้เพื่อเพิ่มลักษณะการทำงานที่โฟกัสได้ให้กับคอมโพเนนต์ โดยมี Semantic และการช่วยเหลือพิเศษที่ถูกต้อง (I41eb9, b/152525426, b/162865824)
ระบบได้นำ API ที่เลิกใช้งานไปก่อนหน้านี้ออกแล้ว โดยได้นำ Border ออกแล้ว โปรดใช้ BorderStroke แทน เราได้นำ Modifier.drawBorder ออกแล้ว โปรดใช้ Modifier.border แทน นำ Modifier.gravity ออกแล้ว โปรดใช้ Modifier.align แทน ระบบนำ Stack ออกแล้ว โปรดใช้ Box แทน (I32c2b, b/172470874)
AbsoluteArrangement เปลี่ยนชื่อเป็น Arrangement.Absolute (If26f2)
การแก้ไขข้อบกพร่อง
- ย้าย DrawModifier API จากแพ็กเกจ androidx.compose.ui ไปยังแพ็กเกจ androidx.compose.ui.draw สร้างไฟล์ DrawModifierDeprecated.kt เพื่อ รวมนามแฝงของประเภท/วิธีการช่วยเพื่อช่วยในการ ย้ายข้อมูลจาก API ที่เลิกใช้งานแล้วไปยัง API ปัจจุบัน (Id6044, b/173834241)
- เปลี่ยนชื่อ Modifier.drawLayer เป็น Modifier.graphicsLayer นอกจากนี้ยังอัปเดตคลาสที่เกี่ยวข้องเป็น GraphicsLayer ตาม ความคิดเห็นจากสภา API (I0bd29, b/173834241)
- นำ
<T>ออกจากการประกาศ SubcomposeLayout ตอนนี้คุณใช้ได้โดยไม่ต้องระบุประเภท (Ib60c8) - ทำให้ฟิลด์เวลาทำงานและตำแหน่งของ PointerInputData ไม่เป็นค่าว่าง (Id468a)
- ตอนนี้ MaterialTheme จะกำหนดสีที่ถูกต้องสำหรับแฮนเดิลการเลือกและพื้นหลังการเลือกแล้ว แอปที่ไม่ใช่ Material สามารถใช้ AmbientTextSelectionColors ด้วยตนเองเพื่อปรับแต่งสีที่ใช้สำหรับการเลือก (I1e6f4, b/139320372, b/139320907)
- เปลี่ยนชื่อพารามิเตอร์การจัดแนวของ Box เป็น contentAlignment (I2c957)
- เปลี่ยนชื่อตัวแก้ไข offsetPx เป็น offset ตอนนี้ฟังก์ชันเหล่านี้รับพารามิเตอร์ Lambda แทน State (Ic3021, b/173594846)
- เพิ่ม WindowManager.isWindowFocused เพื่อตรวจสอบว่าหน้าต่างโฮสต์อยู่ในโฟกัสหรือไม่ และ WindowFocusObserver ที่ให้การเรียกกลับ onWindowFocusChanged (I53b2a, b/170932874)
- เพิ่มพารามิเตอร์ resetInput ไปยัง TextInputService#onStateUpdated (I3e8f5, b/172239032, b/171860947)
- อัปเดต TextFieldValue API
- ทำให้ TextFieldValue.composition เป็นแบบอ่านอย่างเดียว
- นำข้อยกเว้นที่เกิดขึ้นสำหรับช่วงการเลือกที่ไม่ถูกต้องออกแล้ว (I4a675, b/172239032)
- เลิกใช้งาน Ambients ที่เลิกใช้งานแล้วซึ่งมี
Ambientเป็นคำต่อท้าย และแทนที่ด้วยพร็อพเพอร์ตี้ใหม่ที่ขึ้นต้นด้วย Ambient ตามหลักเกณฑ์อื่นๆ ของ Ambient และ Compose API (I33440) - เพิ่ม Wrapper ของ Android Typeface แล้ว คุณโหลด Android
Typeface ผ่านฟังก์ชัน
typefaceได้ เช่นtypeface(Typeface.DEFAULT)เปลี่ยนชื่อtypefaceFromFontFamily()เป็นtypeface()(I52ab7) ด้วย - เพิ่มการตรวจสอบ Lint เพื่อตรวจสอบว่าโรงงานตัวแก้ไขใช้
androidx.compose.ui.composed {}ภายในแทนที่จะทำเครื่องหมายเป็น@Composable(I3c4bc) - เพิ่มการตรวจสอบ Lint เพื่อตรวจสอบว่าฟังก์ชัน Factory ของตัวแก้ไขได้รับการกำหนดเป็นส่วนขยายในตัวแก้ไข เพื่อให้สามารถเชื่อมโยงเข้าด้วยกันได้อย่างราบรื่น (I07981)
- มีการเปลี่ยนชื่ออาร์กิวเมนต์เชิงความหมาย mergeAllDescendants เป็น mergeDescendants (Ib6250)
- การควบคุมเวลาในการทดสอบ (TestAnimationClock และการใช้งาน) อยู่ในระยะทดลองแล้ว (I6ef86, b/171378521)
- นำโมดูล ui-test เก่าและ Stub ออก (I3a7cb)
- เปลี่ยนชื่อ TextUnit.Inherit เป็น TextUnit.Unspecified เพื่อให้สอดคล้องกับหน่วยอื่นๆ (Ifce19)
- เราได้อัปเดตอินเทอร์เฟซการจัดแนวและทำให้ใช้งานได้ (I46a07, b/172311734)
foundation:foundation-textได้ผสานรวมเข้ากับfoundation:foundation(Idac0f) แล้ว- เลิกใช้งาน place(Offset) และ placeRelative(Offset) ใช้การโอเวอร์โหลดที่มีออฟเซ็ต int แทน (I4c5e7)
- เปลี่ยนชื่อ
idเป็นlayoutIdสำหรับLayoutIdParentDataแล้ว เปลี่ยนชื่อMeasurable.idเป็นMeasurable.layoutIdแล้ว (Iadbcb, b/172449643)
เวอร์ชัน 1.0.0-alpha07
11 พฤศจิกายน 2020
androidx.compose.foundation:foundation:1.0.0-alpha07 androidx.compose.foundation:foundation-layout:1.0.0-alpha07 และ androidx.compose.foundation:foundation-text:1.0.0-alpha07 ออกอากาศแล้ว เวอร์ชัน 1.0.0-alpha07 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เช่นเดียวกับ
Modifier.fillMaxSize[Width|Height]ตอนนี้เรารองรับเศษส่วนในModifier.fillParentMaxSize[Width|Height]ภายในขอบเขตของLazyColumn/Row(I797e2, b/166586426) แล้ว - นำ
KeyboardOptions.toImeOptionsออกจาก API สาธารณะแล้ว (Ic2e45) - เลิกใช้งาน AmbientTextStyle, ProvideTextStyle และ AmbientContentColor แล้ว แต่ให้ใช้เวอร์ชันใหม่ที่มีอยู่ในไลบรารี Material แทน สำหรับแอปพลิเคชันที่ไม่ใช่ Material คุณควรสร้างระบบการออกแบบของคุณเองแทน โดยเฉพาะอย่างยิ่งการกำหนดธีมที่สามารถใช้ในคอมโพเนนต์ของคุณเองได้ (I74acc, b/172067770)
- เลิกใช้งาน foundation.Text แล้วและแทนที่ด้วย material.Text ดู API ข้อความพื้นฐานที่ไม่แสดงความคิดเห็นซึ่งไม่ได้ใช้ค่าจากธีมได้ที่ androidx.compose.foundation.BasicText (If64cb)
- เพิ่ม maxLines ลงใน TextField (Ib2a5b)
- อัปเดต TextField ให้ยอมรับ KeyboardOptions (Ida7f3)
- เพิ่ม KeyboardOptions สำหรับใช้ใน TextField (I9ca32)
- เพิ่ม BasicText เป็น API ที่ไม่มีข้อจำกัดด้านการออกแบบสำหรับข้อความ ซึ่งเทียบเท่ากับ BasicTextField (I28268)
- นำ ExperimentalLazyDsl annotation ออกแล้ว ตอนนี้คุณใช้ LazyColumn/LazyRow ได้โดยไม่ต้องเพิ่ม @OptIn (Idab7a, b/166584730)
- เลิกใช้งาน BaseTextField แล้ว โปรดใช้ BasicTextField แทน (I896eb)
- เพิ่ม BasicTextField เพื่อใช้แทนทั้ง CoreTextField และ BaseTextField (Id4cea)
- นำ LazyColumnItems/LazyRowItems ที่เลิกใช้งานแล้วออก (I1d8a8)
- ระบบได้นำ Composable ที่เลิกใช้งานแล้วสำหรับการกำหนดขนาดตามการวัดค่าโดยเนื้อออกแล้ว (I18537, b/171811496)
- เปลี่ยนชื่อ relativePaddingFrom เป็น paddingFrom เพิ่มตัวแก้ไข paddingFromBaseline เพื่อความสะดวกในการระบุระยะห่างจากขอบเขตเลย์เอาต์ไปยังบรรทัดฐานของข้อความ (I0440a, b/170633813)
- พารามิเตอร์ matchHeightConstraintsFirst ได้รับการเพิ่มลงในตัวแก้ไข aspectRatio ซึ่งใช้เพื่อระบุตัวแก้ไขให้ปรับขนาดตามข้อจำกัดด้านความสูงก่อนที่จะลองใช้ข้อจำกัดด้านความกว้าง (Ie7c43, b/155290593)
- นำ DpConstraints ที่เลิกใช้งานแล้วออกแล้ว (I87884, b/171702471)
การแก้ไขข้อบกพร่อง
- เปิดตัวคลาส ScaleFactor
inline เพื่อแสดงถึง
ปัจจัยการปรับขนาดสำหรับแกนแนวนอนและแนวตั้ง
ซึ่งไม่ขึ้นต่อกันเพื่อ
รองรับกรณีการใช้งานการปรับขนาดที่ไม่สม่ำเสมอ
- เพิ่มเมธอด computeScaleFactor ลงใน ContentScale
- เพิ่ม ContentScale.FillBounds เพื่อทำการ การปรับขนาดที่ไม่สม่ำเสมอเพื่อยืดขอบเขต src ให้ครอบคลุมปลายทางทั้งหมด
- เพิ่มวิธีการดำเนินการเพื่อคำนวณ พารามิเตอร์ ScaleFactor ด้วยพารามิเตอร์ Size
- (Ic96a6, b/172291582)
- ย้าย captureToBitmap ไปยัง captureToImage (I86385)
- ทำเครื่องหมาย CoreText เป็น @InternalTextApi โปรดใช้ BasicText แทน (I6aaeb)
- เปลี่ยนชื่อ KeyboardOptions เป็น ImeOptions (I82f36)
- ย้าย KeyboardType และ ImeAction ไปยัง KeyboardOptions (I910ce)
- มีการทำเครื่องหมาย CoreTextField เป็น @InternalTextApi ใช้ BasicTextField แทน (Ie2469)
- นำ ExperimentalSubcomposeLayoutApi ออกแล้ว ตอนนี้คุณใช้ SubcomposeLayout ได้โดยไม่ต้องเพิ่ม @OptIn (I708ad)
- เปิดตัวโมดูล ui-test-junit4 (Ib91f8)
- อัปเดต Icon API เพื่อรับ Color.Unspecified เป็นสีการปรับสีที่เป็นไปได้ ซึ่งจะวาด ชิ้นงานหรือ Painter ที่ระบุโดยไม่มี ColorFilter ก่อนหน้านี้ การพยายามไม่สนใจการย้อมสีด้วย Color.Unspecified จะย้อมสีด้วยสีโปร่งใส และทำให้ไม่มีการแสดงผลใดๆ เลย (I049e2, b/171624632)
- ย้าย MeasureResult ออกจาก MeasureScope แล้ว (Ibf96d, b/171184002)
- เราได้ย้ายสัญลักษณ์ที่เกี่ยวข้องกับเลย์เอาต์หลายรายการจาก androidx.compose.ui ไปยัง androidx.compose.layout.ui (I0fa98, b/170475424)
- ย้าย androidx.ui.test ไปยัง androidx.compose.ui.test (I9ffdb)
- ย้าย FirstBaseline และ LastBaseline ไปยังแพ็กเกจ androidx.compose.ui.layout (Ied2e7)
- เพิ่ม SelectionContainer โดยไม่มีการเรียกกลับ (Ibfadb)
- เพิ่มการทดสอบสำหรับตำแหน่งของ SelectionHandles ใน SelectionContainer (Ie93db)
- เพิ่มตัวเลือก IME การแก้ไขอัตโนมัติของแป้นพิมพ์ (I57b8d)
เวอร์ชัน 1.0.0-alpha06
28 ตุลาคม 2020
androidx.compose.foundation:foundation:1.0.0-alpha06 androidx.compose.foundation:foundation-layout:1.0.0-alpha06 และ androidx.compose.foundation:foundation-text:1.0.0-alpha06 ออกอากาศแล้ว เวอร์ชัน 1.0.0-alpha06 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ย้าย androidx.compose.foundation.Icon ไปยัง androidx.compose.material.Icon แล้ว นอกจากนี้ คุณยังใช้คอมโพเนนต์รูปภาพ / Modifier.paint() กับ Painter ได้หากไม่ต้องการใช้ไลบรารี Material (I9f622)
- เพิ่ม interactionState ไปยัง Modifier.scrollable, ScrollableColumn และ LazyColumnFor (I81566, b/169509805)
- เพิ่ม alignByBaseline ลงใน RowScope และเปลี่ยนชื่อ alignWithSiblings เป็น alignBy (I06503, b/170628732)
- Box ถูกทำให้เป็นฟังก์ชันอินไลน์ (Ibce0c, b/155056091)
- เพิ่ม maxLines ลงใน CoreTextField (Ibee58, b/143687793)
- เพิ่มการตัดข้อความใน CoreTextField (I21a4b)
การแก้ไขข้อบกพร่อง
- เลิกใช้งาน VectorPainter เพื่อใช้ rememberVectorPainter แทน เพื่อให้ระบุได้ดียิ่งขึ้นว่า API ที่ใช้ได้ภายในใช้ "remember" เพื่อคงข้อมูลไว้ในคอมโพสิท (Ifda43)
- เปิดใช้การเปลี่ยนฉากใน ComposeTestRule นำตัวเลือกในการ เปิดใช้เคอร์เซอร์กะพริบออกจาก ComposeTestRule (If0de3)
- เพิ่มตัวเลือกแป้นพิมพ์แบบบรรทัดเดียวลงใน CoreTextField (I72e6d)
- เปลี่ยนชื่อ Radius API เป็น CornerRadius เพื่อให้แสดง วิธีใช้ใน Compose ได้ดียิ่งขึ้น อัปเดตเอกสารประกอบเพื่อระบุ ว่ารัศมีมุมที่เป็นลบจะถูกจำกัด เป็น 0 (I130c7, b/168762961)
- เพิ่มความสามารถในการระบุข้อมูลเครื่องมือตรวจสอบในตัวแก้ไขที่ประกอบ (Idee08, b/163494569)
- เพิ่มตัวเลือก IME สำหรับการใช้อักษรตัวพิมพ์ใหญ่ในแป้นพิมพ์ (I8ac38)
- แก้ไขตำแหน่งแฮนเดิล RTL (I6e1e0)
- การเปลี่ยนแปลงที่ทำให้เกิดข้อขัดข้อง: นำค่าที่ส่งคืนออกจาก PointerInputFilter.onPointerEvent(...) เนื่องจากค่าเดียวที่ควรเปลี่ยนได้ในเหตุการณ์ของเคอร์เซอร์คือข้อมูลการใช้งาน ตอนนี้คุณสามารถเปลี่ยนข้อมูลการใช้งานของ PointerEvents ที่ส่งผ่านได้แทนที่จะส่งคืนข้อมูลจาก PointerInputFilter.onPointerEvent(...) (I6acd0)
- เพิ่มตัวเลือก "เลือกทั้งหมด" ลงในเมนูการเลือก (Ief02b)
เวอร์ชัน 1.0.0-alpha05
14 ตุลาคม 2020
androidx.compose.foundation:foundation:1.0.0-alpha05 androidx.compose.foundation:foundation-layout:1.0.0-alpha05 และ androidx.compose.foundation:foundation-text:1.0.0-alpha05 ออกอากาศแล้ว เวอร์ชัน 1.0.0-alpha05 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- ตอนนี้ CoreTextField รองรับฟังก์ชันเคอร์เซอร์แล้ว (Id23aa)
เลิกใช้งาน API contentColor() และ currentTextStyle() แล้วแทนที่ด้วย AmbientContentColor และ AmbientTextStyle ตามลำดับ คุณเข้าถึงค่าปัจจุบันได้โดยใช้
.currentในพร็อพเพอร์ตี้โดยรอบ เช่นเดียวกับพร็อพเพอร์ตี้โดยรอบอื่นๆ การเปลี่ยนแปลงนี้มีขึ้นเพื่อให้สอดคล้องกันและหลีกเลี่ยงการมีหลายวิธีในการทําสิ่งเดียวกัน นอกจากนี้ ยังเปลี่ยนชื่อพร็อพเพอร์ตี้โดยรอบบางรายการเพื่ออธิบายวัตถุประสงค์ได้ดียิ่งขึ้น ดังนี้- ContentColorAmbient -> AmbientContentColor
- TextStyleAmbient -> AmbientTextStyle
- IndicationAmbient -> AmbientIndication
- EmphasisAmbient -> AmbientEmphasisLevels
- RippleThemeAmbient -> AmbientRippleTheme (I37b6d)
การแก้ไขข้อบกพร่อง
- ในการปรับค่า Sentinel สำหรับคลาสแบบอินไลน์ให้เป็นมาตรฐาน ให้เปลี่ยนชื่อ Color.Unset เป็น Color.Unspecified เพื่อให้สอดคล้องกับคลาสแบบอินไลน์อื่นๆ (I97611, b/169797763)
- เพิ่มการดำเนินการสำหรับการช่วยเหลือพิเศษในการคัดลอก/วาง/ตัด (I6db4f)
- เปิดตัว TextOverflow.None เมื่อการล้นเป็น None ข้อความจะไม่จัดการการล้นอีกต่อไป และจะรายงานขนาดจริงไปยัง LayoutNode (I175c9, b/158830170)
- อัปเดตพารามิเตอร์ Size.Unspecified ให้เป็น Float.NaN แทน Float.POSITIVE_INFINITY อัปเดตการใช้งาน Painter เพื่อ ตรวจสอบกับ Size.Unspecified ด้วย รวมถึงขนาดที่ไม่ใช่จำนวนจำกัด (I95a7e)
- เพิ่มโมดูลการแบ่งหน้า Compose และการผสานรวมการแบ่งหน้า (Ib85da)
- แก้ไข LazyListScope เพื่อรับค่าที่กำหนดให้เป็น Null ได้ (I1765b)
- เปลี่ยนชื่อ OnPositionedModifier เป็น OnGloballyPositionedModifier และเปลี่ยนชื่อ onPositioned() เป็น onGloballyPositioned() (I587e8, b/169083903)
- เพิ่มตัวอย่างสำหรับ LazyColumn/Row (Idc16d)
- แก้ไขเมธอด items และ itemsIndexed เพื่ออนุญาต emptyList (I06647)
- เพิ่ม DSL สำหรับระบุข้อมูลผู้ตรวจสอบ (Ic9a22)
- ย้าย LongPress ไปยัง Text (Iff2bc)
- ปิดใช้การเลือกในข้อความและเดโม (Ie7e97)
- รองรับการแปลง AnnotatedString เป็น SpannableString เพื่อการช่วยเหลือพิเศษ (Ief907)
- นำ
PointerInputFilter.onPointerInput(...)ออกแล้วPointerInputFilter.onPointerEvent(...)ควรใช้แทน (I6f04a)
เวอร์ชัน 1.0.0-alpha04
1 ตุลาคม 2020
androidx.compose.foundation:foundation:1.0.0-alpha04 androidx.compose.foundation:foundation-layout:1.0.0-alpha04 และ androidx.compose.foundation:foundation-text:1.0.0-alpha04 ออกอากาศแล้ว เวอร์ชัน 1.0.0-alpha04 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เปลี่ยนชื่อ Stack เป็น Box แล้ว ระบบจะเลิกใช้งาน foundation.Box ที่มีอยู่ก่อนหน้านี้เพื่อรองรับ Box ใหม่ใน compose.foundation.layout ลักษณะการทำงานของ Box ใหม่คือการวางองค์ประกอบย่อยซ้อนกันเมื่อมีองค์ประกอบย่อยหลายรายการ ซึ่งแตกต่างจาก Box ก่อนหน้าซึ่งมีลักษณะการทำงานคล้ายกับคอลัมน์ (I94893, b/167680279)
- เลิกใช้งานพารามิเตอร์การตกแต่งกรอบแล้ว หากต้องการตกแต่ง/เว้นที่ว่างในช่อง ให้ใช้ตัวแก้ไขแทน (Modifier.background, Modifier.border, Modifier.padding) (Ibae92, b/167680279)
- เพิ่มคลาส LazyListState ใหม่ ซึ่งช่วยให้สังเกตและควบคุมตำแหน่งการเลื่อนของคอมโพเนนต์ LazyRow และ LazyColumn ได้ คุณสร้างอินสแตนซ์ได้โดยใช้ rememberLazyListState() และส่งไปยังพารามิเตอร์สถานะของคอมโพเนนต์ ปัจจุบัน คุณจะเห็นรายการแรกและออฟเซ็ตที่มองเห็นได้ในเวอร์ชันเริ่มต้นนี้ (Ic7cb7, b/159307669)
- ตอนนี้ระบบจะบันทึกตำแหน่งรายการแบบเลื่อนและออฟเซ็ตการเลื่อนและ กู้คืนเมื่อสร้างกิจกรรมใหม่ (Ie045f, b/166589058)
- เพิ่มการดำเนินการตามความหมายของการคลิกแบบยาว (I6281b, b/156468846)
- เพิ่มยูทิลิตี MutatorMutex เพื่อเก็บ Mutator เดียวของ สถานะที่แชร์ไว้ตลอดเวลา และยกเลิก Mutator ที่ขัดแย้งกันตามลำดับความสำคัญ (I3f975)
- ใส่คำอธิบายประกอบ rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled และ textInputServiceFactory ด้วย @VisibleForTesting เพื่อให้เป็น API ภายในและซ่อน KDoc (I554eb, b/168308412)
- นำพารามิเตอร์ inlineContent ออกจากข้อความที่มีอินพุตสตริง โดยจะไม่ได้ใช้เนื่องจาก inlineContent ต้องทำงานร่วมกับ AnnotatedString (Ief403)
- เราได้นำ API การจัดเรียงที่กำหนดเองที่เลิกใช้งานแล้วออก (Ic576d, b/168297922, b/168297923)
- มีการเพิ่มพารามิเตอร์
unboundedลงในตัวแก้ไข wrapContentSize ซึ่งช่วยให้วัดองค์ประกอบเลย์เอาต์ที่มีข้อจำกัดสูงสุดแบบไม่จำกัดได้ (I77951, b/158559319) - เราป้องกันการนำเข้าแบบคงที่ของเนื้อหาขอบเขตเลย์เอาต์ (เช่น alignWithSiblings ใน RowScope) คุณควรใช้ขอบเขตที่ชัดเจนแทน ดังนี้
with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }(I216be, b/166760797)
การแก้ไขข้อบกพร่อง
- อัปเดต Graphics API หลายรายการ
- อัปเดต API การแปลงขนาดและการหมุน เพื่อใช้พารามิเตอร์ออฟเซ็ตเดียว เพื่อแสดงพิกัดจุดหมุน แทนพารามิเตอร์ลอยตัวแยกกัน สำหรับพิกัด x/y ใน DrawScope และ DrawTransform
- นำเมธอด Rect.expandToInclude และ Rect.join ออกแล้ว
- อัปเดตเอกสารประกอบเกี่ยวกับรัศมีให้ระบุว่าวงรี นอกเหนือจากวงกลม
- เพิ่มเอกสารเพื่อระบุว่าไม่ควรเรียกใช้ตัวสร้างสาธารณะสำหรับคลาส Radius แบบอินไลน์โดยตรง แต่ควรสร้างออบเจ็กต์ Radius ผ่านตัวสร้างฟังก์ชันของออบเจ็กต์แทน
- นำ API RoundRect ออกเพื่อค้นหา topRight, bottomRight, bottomCenter ฯลฯ
- เลิกใช้ Rect.shift เพื่อใช้ Rect.translate แทน
- นำ API RoundRect.grow และ Rect.shrink ออกแล้ว
- เปลี่ยนชื่อ RoundRect.outerRect เป็น Rect.boundingRect
- นำเมธอด RoundRect.middleRect/tallMiddleRect/wideMiddleRect และ Rect.isStadium ออก
- เปลี่ยนชื่อ RoundRect.longestSide เป็น RoundRect.maxDimension
- เปลี่ยนชื่อ RoundRect.shortestSide เป็น RoundRect.minDimension
- เปลี่ยน RoundRect.center ให้เป็นพร็อพเพอร์ตี้แทนที่จะเป็นฟังก์ชัน
- อัปเดตตัวสร้าง RoundRect เพื่อใช้พร็อพเพอร์ตี้ Radius แทนพารามิเตอร์แต่ละรายการสำหรับค่ารัศมี x/y
- นำ API ขนาดที่ถือว่าเป็นสี่เหลี่ยมผืนผ้าที่มี ต้นทางที่ 0,0 ออกแล้ว
- เพิ่ม API การทำลายลงใน Radius
- ย้ายฟังก์ชันส่วนขยาย RoundRect ต่างๆ ไปเป็น พร็อพเพอร์ตี้แทน
- (I8f5c7, b/168762961)
- เพิ่มประสิทธิภาพการเลื่อน LazyColumnFor/LazyRowFor โดยไม่ทำการจัดองค์ประกอบใหม่ที่ไม่จำเป็นในระหว่างการเลื่อนทุกครั้ง (I64f65, b/168293643, b/167972292, b/165028371)
- แก้ไขข้อขัดข้องใน LazyColumnFor/LazyRowFor หลังจากเลื่อนแล้วเปลี่ยนรายการ และใช้การเลื่อนขึ้นอัตโนมัติเมื่อนำรายการที่มองเห็นก่อนหน้านี้ออก เพื่อไม่ให้แสดงช่องว่างเปล่าที่ส่วนท้ายอีกต่อไป (I220ab, b/161480164, b/167855468)
- ไม่อนุญาตให้ซ้อนคอนเทนเนอร์ที่เลื่อนได้ในทิศทางเดียวกัน เช่น ScrollableContainer และ LazyColumnFor อีกต่อไป ซึ่งไม่เคยรองรับและทำให้การปัดและการเลื่อนทั้งหมดของรายการใน LazyColumnFor ทำงานไม่ได้ (I6e101)
- อัปเดต Graphics API หลายรายการ
- อัปเดต DrawScope API ด้วยเมธอดการเปลี่ยนรูปแบบที่กำหนดขอบเขต เพื่อระบุว่า การเปลี่ยนรูปแบบจะใช้ภายใน การเรียกกลับเท่านั้น และจะนำออกหลังจากเรียกใช้การเรียกกลับแล้ว
- อัปเดตเอกสารประกอบ clipPath เพื่ออ้างอิงถึง Path แทนสี่เหลี่ยมผืนผ้าโค้งมน
- แก้ไขการเว้นวรรคในเอกสารประกอบสำหรับพารามิเตอร์ด้านขวา ใน clipPath
- เปลี่ยนชื่อ DrawScope.drawCanvas เป็น drawIntoCanvas และ นำพารามิเตอร์ขนาดออก
- เปลี่ยนชื่อพารามิเตอร์ dx/dy ในเมธอด inset เป็น horizontal และ vertical
- เพิ่มการโอเวอร์โหลด Inset ที่ให้ค่า Inset เดียวกันกับขอบทั้ง 4 ด้าน
- นำเอกสารเกี่ยวกับวิธีการแทรกที่ระบุว่า จะใช้การแทรกกับทั้ง 4 ด้านออก
- เอกสารประกอบที่อัปเดตสำหรับคลาส Rect
- อัปเดตความคิดเห็นเกี่ยวกับพารามิเตอร์ Rect ให้ตรงกับสไตล์ kdoc
- นำ Rect.join และ Rect.expandToInclude ออกแล้ว
- สร้างการโอเวอร์โหลดสำหรับ Rect.translate(offset) และ เลิกใช้งาน Rect.shift
- (If086a, b/167737376)
- เพิ่ม AccessibilityScrollState ลงในพร็อพเพอร์ตี้ความหมาย (Ifeda9)
- ทำให้ TextRange เป็นแบบอินไลน์เพื่อหลีกเลี่ยงการสร้างออบเจ็กต์ (Id034b)
- นำ ParagraphConstraints ออกแล้ว ตอนนี้ระบบจะส่งความกว้างไปยังย่อหน้าโดยตรง (Ica712)
เวอร์ชัน 1.0.0-alpha03
16 กันยายน 2020
androidx.compose.foundation:foundation:1.0.0-alpha03 androidx.compose.foundation:foundation-layout:1.0.0-alpha03 และ androidx.compose.foundation:foundation-text:1.0.0-alpha03 ออกอากาศแล้ว เวอร์ชัน 1.0.0-alpha03 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- เปลี่ยนชื่อ InnerPadding เป็น PaddingValues (I195f1, b/167389171)
- การใช้งานแรงโน้มถ่วงได้รับการเปลี่ยนชื่ออย่างสม่ำเสมอเป็น "การจัดแนว" หรือ "การจัดตำแหน่ง" ใน Layout API (I2421a, b/164077038)
- เพิ่มพารามิเตอร์การจัดแนวลงใน Stack ซึ่งช่วยให้ระบุการจัดแนวเริ่มต้นสำหรับองค์ประกอบย่อยทั้งหมดของ Stack ได้ (Ie80ca, b/164085265)
การแก้ไขข้อบกพร่อง
- เราเลิกใช้งาน DpConstraints และ API ที่ใช้ DpConstraints แล้ว (I90cdb, b/167389835)
- เปลี่ยนชื่อพารามิเตอร์
minWidthและmaxWidthของwidthInเป็นminและmaxเช่นเดียวกับpreferredWidthIn,heightIn,preferredHeightIn(I0e5e1, b/167389544) - เพิ่ม onNode และเมธอดส่วนกลางอื่นๆ ใน ComposeTestRule เนื่องจากเมธอดส่วนกลางปัจจุบันจะเลิกใช้งาน (Ieae36)
- แก้ไขการคำนวณขนาดและตำแหน่งคงที่ใน GestureScope ซึ่งทำให้เกิดท่าทางสัมผัสการปัดที่ไม่ถูกต้อง (Iaf358, b/166589947)
- ย้าย
createAndroidComposeRuleและAndroidInputDispatcherจากandroidx.ui.test.androidไปยังandroidx.ui.test(Idef08, b/164060572)
เวอร์ชัน 1.0.0-alpha02
2 กันยายน 2020
androidx.compose.foundation:foundation:1.0.0-alpha02 androidx.compose.foundation:foundation-layout:1.0.0-alpha02 และ androidx.compose.foundation:foundation-text:1.0.0-alpha02 ออกอากาศแล้ว เวอร์ชัน 1.0.0-alpha02 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- TestUiDispatcher มีการทำเครื่องหมายว่าเป็นการทดลอง (Iae99d, b/161247083)
เพิ่ม
ManualFrameClock.hasAwaitersเพื่อดูว่ามีอะไร รอเฟรมจากนาฬิกานั้นหรือไม่runWithManualClockเพื่อใช้แทนrunBlockingเมื่อเรียกใช้การทดสอบที่ต้องใช้ ManualFrameClockTestUiDispatcher.Mainซึ่งช่วยให้เข้าถึงตัวจัดส่ง UI หลักได้ง่าย ในการทดสอบเช่น
@Test fun myTest() = runWithManualClock { clock -> // set some compose content withContext(TestUiDispatcher.Main) { clock.advanceClock(1000L) } if (clock.hasAwaiters) { println("The clock has awaiters") } else { println("The clock has no more awaiters") } }
เวอร์ชัน 1.0.0-alpha01
26 สิงหาคม 2020
androidx.compose.foundation:foundation:1.0.0-alpha01 androidx.compose.foundation:foundation-layout:1.0.0-alpha01 และ androidx.compose.foundation:foundation-text:1.0.0-alpha01 ออกอากาศแล้ว เวอร์ชัน 1.0.0-alpha01 มีคอมมิตต่อไปนี้
เวอร์ชัน 0.1.0-dev
เวอร์ชัน 0.1.0-dev17
19 สิงหาคม 2020
androidx.compose.foundation:foundation:0.1.0-dev17 androidx.compose.foundation:foundation-layout:0.1.0-dev17 และ androidx.compose.foundation:foundation-text:0.1.0-dev17 ออกอากาศแล้ว เวอร์ชัน 0.1.0-dev17 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เราได้เพิ่มการจัดเรียง spacedBy สำหรับแถวและคอลัมน์ เพื่อให้วางเลย์เอาต์ขององค์ประกอบย่อยได้โดยมีระยะห่างคงที่ นอกจากนี้ ยังมีการเพิ่มการจัดเรียงที่สอดคล้องกันเพื่อให้วางเลย์เอาต์ขององค์ประกอบย่อยไว้ข้างกันและจัดแนวในแถว/คอลัมน์ตามการจัดแนวได้ เราได้เลิกใช้งานเมธอด Arrangement.Vertical#arrange และ Arrangement.Horizontal#arrange ก่อนหน้านี้แล้ว และจะไม่รองรับการเขียนการจัดเรียงที่กำหนดเองในอนาคต (I6733d, b/161985975)
- ออฟเซ็ตกลายเป็นคลาสอินไลน์ (Iaec70)
- นำการเรียกกลับ onFocusChanged ออกจาก TextField ใช้ Modifier.focusObserver แทน (I51089, b/161297615)
- เลิกใช้งาน Modifier.drawBorder แล้ว โปรดใช้ Modifier.border แทน แทนที่คลาสข้อมูลเส้นขอบด้วย BorderStroke (I4257d, b/158160576)
- เราได้นำ VerticalScroller และ HorizontalScroller ออกแล้ว โปรดใช้ ScrollableColumn/Row แทน นำ Modifier.drawBackground ออกแล้ว ใช้ Modifier.background (I73b0d, b/163019183)
- นำตัวแก้ไข fillMax* ที่ทำเครื่องหมายว่าเลิกใช้งานแล้วออกจาก LazyItemScope เนื่องจากทำให้การเพิ่มตัวแก้ไขดังกล่าวอย่างถูกต้องสำหรับรายการที่ไม่ใช่ลูกโดยตรงของ LazyColumnFor ทำได้ยากขึ้น (Ifa78d)
- เพิ่มการใช้งาน LazyColumn/LazyRow เป็น DSL (I93cc6)
- ตอนนี้ข้อจำกัดเป็นคลาสแบบอินไลน์แล้ว (I88736)
- เพิ่มความสามารถในการปรับขนาดเลย์เอาต์ให้เป็นเศษส่วนของพื้นที่ว่างโดยใช้ตัวแก้ไข fillMaxWidth, fillMaxHeight และ fillMaxSize (I945bb, b/161562591)
การแก้ไขข้อบกพร่อง
- เพิ่มพารามิเตอร์ตัวแก้ไขลงใน SelectionContainer (I4aada, b/161487952)
- เพิ่ม Lambda mergePolicy ไปยัง SemanticsPropertyKey ซึ่งใช้เพื่อกำหนดนโยบายที่กำหนดเองสำหรับตรรกะของ mergeAllDescendants การผสานได้ นโยบายเริ่มต้นคือการใช้ค่าระดับบนหากมีอยู่แล้ว ไม่เช่นนั้นจะใช้ค่าระดับล่าง (Iaf6c4, b/161979921)
- เราเปลี่ยนชื่อ
PlacementScope.placeAbsolute()เป็นPlacementScope.place()และเปลี่ยนชื่อPlacementScope.place()ก่อนหน้าเป็นPlacementScope.placeRelative()ด้วยเหตุนี้ วิธีPlacementScope.place()จะไม่สะท้อนตำแหน่งในบริบทจากขวาไปซ้ายโดยอัตโนมัติอีกต่อไป หากต้องการใช้ฟีเจอร์นี้ ให้ใช้PlacementScope.placeRelative()แทน (I873ac, b/162916675) - นำคอมโพเนนต์ FilledTextField ที่เลิกใช้งานแล้วออก โปรดใช้ TextField แทนเพื่อรับการใช้งาน Material Design ของช่องข้อความที่กรอก (I5e889)
- เพิ่มพารามิเตอร์ backgroundColor ลงใน LinearProgressIndicator และนำการเว้นวรรคภายในออกจาก CircularProgressIndicator เพิ่ม ProgressIndicatorConstants.DefaultProgressAnimationSpec ใหม่ ซึ่งใช้เป็น AnimationSpec เริ่มต้นได้เมื่อเคลื่อนไหวความคืบหน้าระหว่างค่า (If38b5, b/161809914, b/161804677)
- ตอนนี้เราเลิกใช้งาน
state { ... }ที่ใช้ร่วมกันได้แล้วเพื่อเปลี่ยนไปใช้ การเรียกremember { mutableStateOf(...) }อย่างชัดเจนเพื่อความชัดเจน ซึ่งจะช่วยลดพื้นผิว API โดยรวมและจำนวนแนวคิดสำหรับการจัดการสถานะ รวมถึงตรงกับรูปแบบby mutableStateOf()สำหรับการมอบสิทธิ์พร็อพเพอร์ตี้ ของคลาส (Ia5727) - เปลี่ยนชื่อ RRect เป็น RoundRect เพื่อให้สอดคล้องกับรูปแบบการตั้งชื่อของ Compose มากขึ้น สร้างตัวสร้างฟังก์ชันที่คล้ายกัน กับ RRect และเลิกใช้งานตัวสร้างฟังก์ชัน RRect (I5d325)
- นำ Removed onChildPositioned และ OnChildPositionedModifier ออกแล้ว นักพัฒนาแอปควรใช้ onPositioned และ OnPositionedModifier ในเลย์เอาต์ย่อยแทน (I4522e, b/162109766)
- ตอนนี้ IntSize เป็นคลาสแบบอินไลน์ (I2bf42) แล้ว
- กดพื้นที่ว่างค้างไว้เพื่อแก้ไข (Ib1e5b)
- ซ่อน FloatingToolbar หลังจากแตะข้อความ (If4525)
- ซ่อน FloatingToolbar เมื่ออัปเดตการเลือก (I8444c)
- ยกเลิกการเลือก "เมื่อเบลอ" (I781a2)
เวอร์ชัน 0.1.0-dev16
5 สิงหาคม 2020
androidx.compose.foundation:foundation:0.1.0-dev16 androidx.compose.foundation:foundation-layout:0.1.0-dev16 และ androidx.compose.foundation:foundation-text:0.1.0-dev16 ออกอากาศแล้ว เวอร์ชัน 0.1.0-dev16 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม LazyItemScope สำหรับพารามิเตอร์ itemContent ของรายการแบบ Lazy โดยจะให้ตัวแก้ไขเพื่อเติมขนาดสูงสุดขององค์ประกอบระดับบน ซึ่งจะแก้ Use Case เมื่อรายการควรเติมวิวพอร์ตและ Modifier.fillMaxSize() ปกติใช้ไม่ได้เนื่องจากระบบวัดรายการด้วยข้อจำกัดแบบอนันต์ (Ibd3b2, b/162248854)
- ย้ายกล่องโต้ตอบไปยัง UI (I47fa6)
- เพิ่ม LazyColumnForIndexed/LazyRowForIndexed - เวอร์ชันของ LazyColumnFor/LazyRowFor ซึ่งมีทั้งดัชนีและรายการใน itemCallback ซึ่งจะมีประโยชน์เมื่อคุณต้องการทราบดัชนีปัจจุบันนอกเหนือจากรายการปัจจุบัน (I65ff3)
- เปลี่ยนชื่อ Modifier.deternimateProgress เป็น Modifier.progressSemantics (I9c0b4)
- เปลี่ยนชื่อ LazyColumnItems เป็น LazyColumnFor แล้ว เปลี่ยนชื่อ LazyRowItems เป็น LazyRowFor (I84f84)
- เพิ่มเครื่องหมาย/คำอธิบายประกอบเพื่อเป็นแนวทางปฏิบัติแนะนำ (I66b20)
- foundation.shape.corner package ถูกทำให้แบนเป็น foundation.share (I46491, b/161887429)
- เพิ่มพารามิเตอร์แรงโน้มถ่วงของแกนไขว้สำหรับ LazyRowItems/LazyColumnItems ตอนนี้ LazyRowItems/LazyColumnItems รองรับลักษณะการทำงานของเนื้อหาแบบตัดแล้ว (Ib39fc)
- เปลี่ยนชื่อ ZoomableState เป็น ZoomableController แล้ว เพิ่มการรองรับเส้นโค้งที่กำหนดเองสำหรับ smoothScale แล้ว เพิ่มฟังก์ชันการทำงาน
enabledและonZoomStartedแล้ว (If8b8f) - เปลี่ยนชื่อ Material FilledTextField เป็น TextField และเปลี่ยนชื่อ TextField พื้นฐานเป็น BaseTextField เพื่อให้ค้นพบและใช้งาน API ที่ต้องการได้ง่ายที่สุด (Ia6242, b/155482676)
- ระบบได้นำ AdapterList ที่เลิกใช้งานไปก่อนหน้านี้ออกแล้ว ใช้ LazyColumnItems แทน (I12b9b)
- เปลี่ยนชื่อ Modifier.drawBackground เป็น Modifier.background (I13677)
- นำ DSL ของ ConstraintLayout แบบเก่าออกแล้ว เปลี่ยนชื่อ ConstraintSet2 เป็น ConstraintSet แล้ว (If58d1, b/162450908)
- เพิ่ม Modifier.absoluteOffset() และ Modifier.absoluteOffsetPx() ซึ่งแตกต่างจากตัวแก้ไขออฟเซ็ตตรงที่ตัวแก้ไขออฟเซ็ตแบบสัมบูรณ์จะไม่ทำมิเรอร์อัตโนมัติในบริบทจากขวาไปซ้าย (I3aa21)
- ตอนนี้
RowและColumnเป็นฟังก์ชันแบบอินไลน์แล้ว ซึ่งช่วยลดค่าใช้จ่ายในการใช้งานได้อย่างมาก (I75c10)
การแก้ไขข้อบกพร่อง
- แก้ไข API ที่กว้าง (I077bc)
- นำอินเทอร์เฟซ OffsetBase ที่ไม่ได้ใช้ออก
- จัดแนวคลาส Offset และ IntOffset ให้มี พื้นผิว API ที่สอดคล้องกัน
- เปลี่ยนชื่อ IntOffset.Origin เป็น IntOffset.Zero เพื่อให้สอดคล้องกับ Offset API
- ย้ายเมธอด nativeCanvas ออกจากอินเทอร์เฟซ Canvas เพื่อรองรับผู้บริโภคในการสร้างอินสแตนซ์ Canvas ของตนเอง
- สร้างคลาส EmptyCanvas สตับเพื่อรีแฟคเตอร์ DrawScope ให้เป็นพารามิเตอร์ที่ไม่ใช่ Null แทน lateinit และตรวจสอบว่าฟิลด์ไม่ใช่ Null
- เปลี่ยนชื่อ Enum ของ ClipOp ให้เป็น Pascal Case
- เปลี่ยนชื่อ Enum FilterQuality ให้เป็น Pascal Case
- เปลี่ยนชื่อ enum StrokeJoin เป็น Pascal Case
- เปลี่ยนชื่อการแจงนับ PointMode ให้เป็น Pascal Case
- เปลี่ยนชื่อการแจงนับ PaintingStyle ให้เป็น Pascal Case
- เปลี่ยนชื่อการแจงนับ PathFillType เป็น Pascal Case
- เปลี่ยนชื่อ Enum ของ StrokeCap ให้เป็น Pascal Case
- อัปเดตการใช้งาน DrawCache เพื่อไม่ให้ ใช้พารามิเตอร์ lateinit อีกต่อไป
- อัปเดต DrawScope เพื่อไม่ให้ใช้การมอบสิทธิ์แบบเลื่อนเวลา สำหรับพารามิเตอร์ภายใน fillPaint และ strokePaint อีกต่อไป
- อัปเดต Image composable เพื่อหลีกเลี่ยงการใช้ Box เพื่อลดค่าใช้จ่าย
- อัปเดตคลาส Outline ให้มีคำอธิบายประกอบ @Immutable
- อัปเดต PathNode ให้มีคำอธิบายประกอบ @Immutable สำหรับ คำสั่งเส้นทางแต่ละรายการ
- อัปเดตองค์ประกอบย่อยของเวกเตอร์เพื่อนำการตรวจสอบแบบมีเงื่อนไขที่ซ้ำซ้อนออก สำหรับการตรวจสอบความเท่ากัน เนื่องจาก Compose จัดการการตรวจสอบเหล่านี้อยู่แล้ว
- เลิกใช้งานเมธอดตัวสร้างคู่ของ Rect เพื่อ ใช้ตัวสร้างฟังก์ชันแทน
- อัปเดตคลาส Brush และตัวสร้างฟังก์ชันด้วย @Immutable และ @Stable API
- อัปเดตการแจงนับ VertexMode ให้เป็น PascalCase
- อัปเดตเมธอด selectPaint ของ DrawScope เพื่อเขียนทับพารามิเตอร์การขีดเขียนแบบมีเงื่อนไขใน Paint หากมีการเปลี่ยนแปลง
- อัปเดตขนาดเพื่อเพิ่ม API การแยกโครงสร้าง เปลี่ยนชื่อ UnspecifiedSize เป็น Unspecified และนำเมธอดที่ไม่ได้ใช้ออก
เพิ่ม MonotonicFrameAnimationClock ที่ช่วยให้คุณใช้ MonotonicFrameClock เป็น AnimationClockObservable เพื่อเชื่อมช่องว่างระหว่างนาฬิกาและ API ใหม่ที่อิงตามโครูทีนกับนาฬิกาเก่าที่ยังคงใช้การเรียกกลับ
ตอนนี้ MonotonicFrameClock ที่เทียบเท่ากับ ManualAnimationClock คือ ManualFrameClock (I111c7, b/161247083)
นำ
SemanticsNodeInteraction.performPartialGestureออกแล้ว โปรดใช้SemanticsNodeInteraction.performGestureแทน (Id9b62)เปลี่ยนชื่อ
SemanticsNodeInteraction.getBoundsInRoot()เป็นSemanticsNodeInteraction.getUnclippedBoundsInRoot()(Icafdf, b/161336532)เราได้อัปเดต API สำหรับการรองรับจากขวาไปซ้ายแล้ว เพิ่ม LayoutDirectionAmbient ซึ่งใช้เพื่ออ่านและเปลี่ยนทิศทางการจัดวางได้ นำ Modifier.rtl และ Modifier.ltr ออกแล้ว (I080b3)
เลิกใช้งาน Modifier.plus แล้ว ให้ใช้ Modifier.then แทน คำว่า "จากนั้น" มีสัญญาณที่ชัดเจนกว่าในการเรียงลำดับ และยังห้ามพิมพ์
Modifier.padding().background() + anotherModifierซึ่งจะทำให้การอ่านยากขึ้นและทำให้ลำดับขาดตอน (Iedd58, b/161529964)เพิ่ม
isFocused()และisNotFocused()SemanticsMatcher (I0b760)เพิ่ม RemeasurementModifier แล้ว ซึ่งช่วยให้ผู้ใช้สามารถวัดเลย์เอาต์อีกครั้งพร้อมกันได้ โดยทั่วไปแล้ว คุณไม่จำเป็นต้องใช้พารามิเตอร์นี้เนื่องจากระบบจะทำการวัดซ้ำ/จัดเลย์เอาต์ใหม่โดยอัตโนมัติ แต่เราใช้พารามิเตอร์นี้ภายใน LazyColumnItems ระหว่างการเลื่อน (I5f331, b/160791058)
ตอนนี้ isSystemInDarkTheme จะพิจารณาการตั้งค่าธีมมืดทั้งระบบเสมอ และจะไม่สนใจสถานะการประหยัดพลังงานก่อน Q ตามคำแนะนำล่าสุด (I0c10c)
เลิกใช้งาน OnChildPositioned แล้ว ให้ใช้ OnPositioned ในองค์ประกอบย่อยแทน (I87f95, b/162109766)
เปลี่ยนชื่อ AndroidComposeTestRule เป็น createAndroidComposeRule (I70aaf)
เพิ่มการดำเนินการสำหรับการช่วยเหลือพิเศษเพื่อรับ TextLayoutResult (I9d6e6)
เวอร์ชัน 0.1.0-dev15
22 กรกฎาคม 2020
androidx.compose.foundation:foundation:0.1.0-dev15 androidx.compose.foundation:foundation-layout:0.1.0-dev15 และ androidx.compose.foundation:foundation-text:0.1.0-dev15 ออกอากาศแล้ว เวอร์ชัน 0.1.0-dev15 มีคอมมิตเหล่านี้
หากต้องการใช้ Compose เวอร์ชัน 0.1.0-dev15 คุณจะต้องทำดังนี้
การอัปเดตการขึ้นต่อกัน
- หากต้องการใช้ Compose เวอร์ชัน
0.1.0-dev15คุณจะต้องอัปเดตการอ้างอิง ตามข้อมูลโค้ดใหม่ที่แสดงด้านบนในส่วนการประกาศการอ้างอิง
การเปลี่ยนแปลง API
- เช่นเดียวกับพารามิเตอร์ใหม่ใน ScrollableColumn/ScrollableRow LazyColumnItems/LazyRowItems ตอนนี้ก็มีพารามิเตอร์ contentPadding ซึ่งช่วยให้เพิ่มระยะขอบสำหรับเนื้อหาได้หลังจากที่ตัดแล้ว ซึ่งทำไม่ได้ผ่านพารามิเตอร์ตัวแก้ไขเพียงอย่างเดียว นอกจากนี้ ยังช่วยให้เพิ่มระยะห่างก่อนรายการแรก/หลังรายการสุดท้ายได้ด้วย (Ibc24e)
- เปลี่ยนชื่อการเรียกกลับ onFocusChange ในช่องข้อความเป็น onFocusChanged (Ida4a1)
- เลิกใช้งาน VerticalScroller และ HoriziontalScroller แล้ว ใช้ ScrollableColumn และ ScrollableRow เพื่อสร้างประสบการณ์การใช้งานในตัวที่มีลักษณะการทำงานและพารามิเตอร์ของ Column/Row หรือ Modifier.verticalScroll และ Modifier.horizontalScroll ในองค์ประกอบของคุณเอง ในทำนองเดียวกัน เราได้เลิกใช้งาน ScrollerPosition เพื่อให้ใช้ ScrollState แทน (I400ce, b/157225838, b/149460415, b/154105299)
- เราได้ปรับปรุง API ของ Modifier.draggable และ Modifier.scrollable นำ DragDirection ออกเพื่อใช้ Orientation แทน เราได้ปรับปรุงข้อกำหนดของรัฐสำหรับรายการที่เลื่อนได้ให้ง่ายขึ้น เราได้เปลี่ยนชื่อ ScrollableState เป็น ScrollableController (Iab63c, b/149460415)
- พร็อพเพอร์ตี้ที่มีความหมายแบบค่าเดียวจะใช้รูปแบบการเรียกในตอนนี้
เช่น ตอนนี้เขียน 'semantics { hidden = true }' เป็น
semantics { hidden() }(Ic1afd, b/145951226, b/145955412) - ตอนนี้ขนาดมุมที่ใช้โดย RoundedCornerShape และ CutCornerShape สามารถมีขนาดใหญ่กว่า 50% ได้แล้ว (Id2340, b/160400213)
- เปลี่ยนพารามิเตอร์ ContentScale เริ่มต้นสำหรับ Image composable จาก Inside เป็น Fit การดำเนินการนี้มีขึ้นเพื่อ ให้ลักษณะการทำงานขยายขนาด Painter พื้นฐานได้หากขนาดเลย์เอาต์ใหญ่กว่า ขนาดดั้งเดิมของ Painter ขณะที่ ยังคงสัดส่วนภาพไว้ ลักษณะการทำงานนี้ตรงกับความคาดหวังในการระบุขนาดคงที่ให้กับรูปภาพได้ดีกว่า โดยไม่ส่งผลต่อลักษณะการทำงานเริ่มต้น หากใช้เฉพาะขนาดโดยธรรมชาติเพื่อ คำนวณขนาดของคอมโพสได้ (I40ae3, b/159838006)
- ใช้ AnimationSpec แทน AnimationBuilder ใน API ระดับบนสุด เพื่ออธิบายแนวคิดของข้อกำหนดภาพเคลื่อนไหวแบบคงที่ - ปรับปรุง DSL การเปลี่ยนโดยนำข้อกำหนด Lambda ออกสำหรับ การสร้าง AnimationSpec เช่น Tween, Spring แต่จะใช้พารามิเตอร์ของตัวสร้างโดยตรงแทน - ปรับปรุงความสะดวกในการใช้งาน AnimationSpec โดยรวมด้วยการเปิดตัว ตัวสร้างแทนการใช้ตัวสร้าง - เปลี่ยนระยะเวลาและการหน่วงเวลาสำหรับ KeyFrames และ Tween เป็น Int ซึ่งจะ ช่วยลดการแคสต์ประเภทที่ไม่จำเป็นและการโอเวอร์โหลดเมธอด (เพื่อ รองรับทั้ง Long และ Int) (Ica0b4)
- นำ Clickable ออกแล้ว ใช้ Modifier.clickable (I84bdf)
- เพิ่ม LazyRowItems - การเลื่อนแนวนอนที่คล้ายกับ LazyColumnItems (Ibbcf7)
- เปิดตัว API ภาพเคลื่อนไหวแบบไม่เก็บสถานะระดับต่ำ API เหล่านี้ (I63bf7)
- เลิกใช้งาน androidx.ui.foundation.TextFieldValue และ androidx.ui.input.EditorValue แล้ว นอกจากนี้ ยังมีการเลิกใช้งาน Composable TextField, FilledTextField และ CoreTextField ที่ใช้ประเภทดังกล่าวด้วย โปรดใช้ androidx.ui.input.TextFieldValue แทน (I4066d, b/155211005)
- แทนที่การใช้ IntPx ด้วย Int แทนที่ IntPxPosition ด้วย IntOffset แทนที่ IntPxSize ด้วย IntSize (Ib7b44)
- androidx.ui.foundation.shape.RectangleShape removed; use androidx.ui.graphics.RectangleShape (I94939, b/154507984)
- เพื่อรวมจำนวนคลาสที่ใช้เพื่อแสดงข้อมูลการปรับขนาด ให้ใช้คลาส Size แทน PxSize ซึ่งจะให้ประโยชน์ ของคลาสอินไลน์เพื่อใช้ประโยชน์จาก long ในการแพ็กค่าลอยตัว 2 ค่าเพื่อแสดง ความกว้างและความสูงที่แสดงเป็นค่าลอยตัว (Ic0191)
- เพื่อรวมจำนวนคลาสที่ใช้เพื่อแสดงข้อมูลการวางตำแหน่ง ให้ใช้คลาส Offset แทน PxPosition ซึ่งจะให้ประโยชน์ ของคลาสอินไลน์เพื่อใช้ประโยชน์จาก long ในการแพ็กค่าลอยตัว 2 ค่าเพื่อแสดงออฟเซ็ต x และ y ที่แสดงเป็นค่าลอยตัว (I3ad98)
- เพิ่ม Modifier.zoomable สำหรับฟังก์ชันการบีบนิ้วเพื่อซูม (Id5d63)
- เลิกใช้งานคอมโพเนนต์ที่สลับได้แล้ว โปรดใช้ Modifier.toggleable แทน (I35220, b/157642842)
- เลิกใช้งาน MutuallyExclusiveSetItem แล้ว โปรดใช้ Modifier.selectable แทน (I02b47, b/157642842)
- ตอนนี้เราเลิกใช้งาน TestTag แล้ว ใช้ Modifier.testTag แทน (If5110, b/157173105)
- เพิ่มพารามิเตอร์ fontWeight ลงในข้อความ ซึ่งก่อนหน้านี้ไม่ได้เพิ่มโดยไม่ตั้งใจ (I56937)
- แทนที่การใช้คลาส Px ในคลาส Compose ต่างๆ ซึ่งเป็นส่วนหนึ่งของความพยายามในการปรับโครงสร้างโค้ดครั้งใหญ่เพื่อใช้เฉพาะ Dp และประเภทดั้งเดิมสำหรับพารามิเตอร์พิกเซล (I19d02)
- ตอนนี้ VerticalScroller มี Column ให้ใช้งานได้ทันที ตอนนี้ HorizontalScroller มี Row พร้อมใช้งานแล้ว (Ieca5d, b/157020670)
- แทนที่การใช้คลาส Px ในคลาส Compose ต่างๆ ซึ่งเป็นส่วนหนึ่งของความพยายามในการปรับโครงสร้างครั้งใหญ่เพื่อใช้เฉพาะ Dp และประเภทดั้งเดิมสำหรับพารามิเตอร์พิกเซล (Iede0b)
- เพิ่ม Modifier.indication ลงในแพ็กเกจพื้นฐานแล้ว ใช้เพื่อแสดงการกด/ลาก/การบ่งชี้อื่นๆ ในองค์ประกอบที่โต้ตอบได้ที่กำหนดเอง (I8425f, b/155287131)
- ตอนนี้ VerticalScroller และ HorizontalScroller รองรับการเลื่อนแบบย้อนกลับแล้วเมื่อตั้งค่า isReversed ใน ScrollerPosition (I953bd)
- รองรับการเพิ่ม Composable ลงในเลย์เอาต์ข้อความ (I1373c)
- การใช้งาน CanvasScope ที่รวมกัน ตอนนี้จึงมีเพียง DrawScope และ ContentDrawScope เปลี่ยนชื่อ CanvasScope เป็น DrawScope อัปเดต DrawScope เพื่อใช้ Density interface และจัดเตรียม LayoutDirection อัปเดตคลาสย่อย DrawScope ที่ลบแล้วใน ContentDrawScope Painter และ PainterModifier เพื่อไม่ให้รักษาพร็อพเพอร์ตี้ RTL ไว้ด้วยตนเองอีกต่อไป เนื่องจาก DrawScope มีพร็อพเพอร์ตี้นี้อยู่แล้ว โดยไม่ต้องระบุด้วยตนเอง (I1798e)
- นำ DrawBackground API ที่เลิกใช้งานแล้วออกเพื่อใช้ drawBackground extension API ใน Modifier แทน ปรับโครงสร้าง การใช้งานสี แปรง และ paint drawBackground เพื่อลดเส้นทางโค้ด รวมถึงนำข้อกำหนดในการสร้าง Modifier เป็นส่วนหนึ่งของการจัดองค์ประกอบออก (I0343a)
- อัปเดต API Compose ระดับสูงขึ้น ที่แสดง Canvas เพื่อ แสดง CanvasScope แทน ซึ่งจะช่วยลดความจำเป็นที่ผู้บริโภคต้องดูแลออบเจ็กต์ Paint ของตนเอง สำหรับผู้บริโภคที่ยังต้องการเข้าถึง Canvas สามารถใช้วิธีการส่วนขยาย drawCanvas ซึ่งมีฟังก์ชันเรียกกลับเพื่อออกคำสั่งวาดด้วย Canvas พื้นฐาน (I80afd)
- HorizontalScroller และ VerticalScroller ไม่คืนค่าตำแหน่งการเลื่อนโดยใช้สถานะอินสแตนซ์ที่บันทึกไว้ (Ia0fae, b/155075048)
- นำ FocusManagerAmbient ออกแล้ว ใช้ FocusModifier.requestFocus เพื่อรับโฟกัส (Ic4826)
- เราได้นำเลย์เอาต์ตารางออกชั่วคราว จนกว่าจะพร้อมให้บริการอีกครั้งด้วย API ที่อัปเดตแล้ว (Id88a7)
สร้าง CanvasScope API ที่ห่อหุ้มออบเจ็กต์ Canvas เพื่อแสดงพื้นผิว API การวาดภาพแบบประกาศที่ไม่มีสถานะ การเปลี่ยนรูปแบบจะอยู่ในขอบเขตของตัวรับสัญญาณเอง และข้อมูลการปรับขนาดจะอยู่ในขอบเขตของขอบเขตแทรกที่เกี่ยวข้องด้วย โดยไม่จำเป็นต้องให้ผู้ใช้ดูแลออบเจ็กต์สถานะ Paint ของตนเองเพื่อกำหนดค่าการดำเนินการวาด
เพิ่ม CanvasScopeSample รวมถึง อัปเดตแอปเดโมให้มีเดโมกราฟิกแบบประกาศ (Ifd86d)
นำ ColoredRect ออกแล้ว ใช้ User Box ที่มีตัวแก้ไข drawBackground แทน (I983c7, b/152753731)
เพิ่มการปรับแต่งสีเคอร์เซอร์ลงใน TextField (I6e33f)
ตอนนี้คุณสามารถซ่อน/แสดงแป้นพิมพ์ซอฟต์แวร์ได้โดยใช้ SoftwareKeyboardController ซึ่งส่งผ่านโดยการเรียกกลับ onTextInputStarted (I8dc44, b/151860051)
ตอนนี้ TextFieldValue ที่ใช้กับ TextField จะยังคงอยู่ได้แม้จะมีการสร้างกิจกรรมใหม่เมื่อใช้ในลักษณะนี้
var text by savedInstanceState(saver = TextFieldValue.Saver) { TextFieldValue() }(I5c3ce, b/155075724)เพิ่มพารามิเตอร์ที่ใช้กันทั่วไปลงใน Text() หากปัจจุบันคุณสร้างรูปแบบข้อความในเครื่องเพื่อส่งพารามิเตอร์เหล่านี้จํานวนเล็กน้อย เช่น
Text(style = TextStyle(textAlign = TextAlign.Center))ตอนนี้คุณสามารถระบุพารามิเตอร์ได้โดยตรง:Text(textAlign = TextAlign.Center)(I82768)แทนที่พารามิเตอร์ CoreTextField/TextField focusIdentifier ด้วย FocusNode เพื่อผสานรวมกับระบบย่อยโฟกัส (I7ea48)
การอัปเดต TextField - ในมิติแนวนอนจะใช้พื้นที่ว่างทั้งหมดที่ได้รับ (Ib08df, b/154638552)
เพิ่ม InteractionState และ Interaction เพื่อให้สร้างคอมโพเนนต์ที่ตอบสนองต่อการเปลี่ยนแปลงสถานะ UI เช่น การกดและการลาก ได้ง่ายขึ้น (Icfe25, b/152525426)
ย้าย RectangleShape จาก androidx.ui.foundation.shape.* ไปยัง androidx.ui.graphics.* (Ia74d5, b/154507984)
แทนที่การใช้ Color ที่อนุญาตให้เป็น Null ทั้งหมดใน API ด้วย ที่ไม่ใช่ Null และใช้ Color.Unset แทน Null (Iabaa7)
การอัปเดต API ของ TextField - ผสานรวมฟังก์ชันเรียกกลับ onFocus และ onBlur เป็นฟังก์ชันเรียกกลับ onFocusChange(Boolean) เดียวที่มีพารามิเตอร์ (I66cd3)
เปลี่ยนชื่อ ScaleFit เป็น ContentScale ย้าย ContentScale จาก ui-graphics ไปยัง ui-core โมดูลเพื่อให้อยู่ในโมดูลเดียวกับ Alignment API เปลี่ยนชื่อ FillMaxDimension เป็น Crop เปลี่ยนชื่อ FillMinDimension เป็น Fit เปลี่ยนชื่อ Fit to Inside เพื่อให้ตรงกันมากขึ้น เทียบเท่า ImageView.ScaleType เพิ่มเอกสารที่ระบุว่าการรวม Crop และ Alignment.Center จะให้ผลลัพธ์เหมือนกับ ImageView.ScaleType.CENTER_CROP และ Fit ที่ใช้กับ Alignment.Center จะให้ผลลัพธ์เหมือนกับ ImageView.ScaleType.FIT_CENTER Inside ที่ใช้กับ Alignment.Center จะให้ผลลัพธ์เหมือนกับ ImageView.ScaleType.CENTER_INSIDE (I45f09, b/152842521)
นำ ProvideContentColor ออก แล้วใช้ ContentColorAmbient โดยตรงกับ
Providers(Iee942)เพิ่มพารามิเตอร์สีลงในข้อความ ซึ่งช่วยให้คุณลบล้างสีของรูปแบบข้อความได้โดยไม่ต้องผสานกับรูปแบบที่ระบุไว้ในธีมด้วยตนเอง (I41a66)
ปรับปรุง DrawModifier API:
- สร้างขอบเขตตัวรับสำหรับ draw() ContentDrawScope
- นำพารามิเตอร์ทั้งหมดใน draw() ออก
- DrawScope มีอินเทอร์เฟซเหมือนกับ CanvasScope รุ่นก่อน
- ContentDrawScope มีเมธอด drawContent() (Ibaced, b/152919067)
เลิกใช้งาน ColoredRect แล้ว โปรดใช้
Box(Modifier.preferredSize(width, height).drawBackground(color))แทน (I499fa, b/152753731)ระบบการกำหนดธีมรูปร่างได้รับการอัปเดตตามข้อกำหนดการออกแบบ Material ตอนนี้คุณสามารถระบุรูปร่างขนาดเล็ก กลาง และใหญ่เพื่อให้คอมโพเนนต์ส่วนใหญ่ใช้ได้ (Ifb4d1)
แทนที่ตัวแก้ไขและตัวดำเนินการด้วยฟังก์ชันส่วนขยายของโรงงาน (I225e4)
ย้าย Draggable ไปยังตัวแก้ไขแล้ว (Id9b16, b/151959544)
ย้าย
Textไปยังแพ็กเกจ androidx.ui.foundation จาก androidx.ui.core (I87ce5)เพิ่มพารามิเตอร์
enabledลงในช่องทำเครื่องหมาย สวิตช์ และสลับได้ (I41c16)ตอนนี้ Ripple เป็นตัวแก้ไขแล้ว แม้ว่า Clickable จะยังไม่ได้แปลง แต่การใช้งานที่แนะนำคือ
Clickable(onClick = { ... }, modifier = ripple())(Ie5200, b/151331852, b/150060763)เพิ่ม VectorPainter API เพื่อแทนที่ API องค์ประกอบย่อยที่มีอยู่สำหรับ กราฟิกเวกเตอร์ ผลลัพธ์ขององค์ประกอบย่อย คือออบเจ็กต์ VectorPainter แทนที่จะเป็น DrawModifier เลิกใช้งาน Composable DrawVector ก่อนหน้าเพื่อใช้ VectorPainter
เปลี่ยนชื่อ
Image(Painter)API เป็นPaintBox(Painter)สร้าง Vector ที่ประกอบได้ซึ่งทํางานเหมือน Image ที่ประกอบได้ ยกเว้นใช้ VectorAsset แทน ImageAsset (I9af9a, b/149030271)สร้าง Composable ของรูปภาพเพื่อจัดการ การปรับขนาด/เลย์เอาต์ นอกเหนือจากการวาด ImageAsset ที่ระบุลงบนหน้าจอ Composable นี้ยังรองรับการวาดอินสแตนซ์ Painter ใดก็ได้โดยคำนึงถึงขนาดโดยธรรมชาติ รวมถึงรองรับขนาดคงที่หรือขนาดขั้นต่ำที่กำหนด (Ibcc8f)
ตอนนี้ปุ่ม, FloatingActionButton และ Clickable มี
enabledparam แยกกันแล้ว มีการเปลี่ยนชื่อหรือจัดเรียงพารามิเตอร์บางรายการในปุ่มใหม่ (I54b5a)เปลี่ยนชื่อ Image เป็น ImageAsset เพื่อให้เห็นความแตกต่างระหว่างข้อมูล Image กับ Composables ของ Image ที่กำลังจะเปิดตัวซึ่งใช้ในการเข้าร่วมเลย์เอาต์และวาด เนื้อหาได้ดียิ่งขึ้น
สร้างเมธอดส่วนขยายใน android.graphics.Bitmap
Bitmap.asImageAsset()เพื่อสร้างอินสแตนซ์ของ ImageAsset ที่มีประโยชน์สำหรับการรวมการพัฒนาแอปพลิเคชัน Android แบบเดิมเข้ากับเฟรมเวิร์ก Compose (Id5bbd)นำ Composable DrawImage ออกแล้ว ใช้ ImagePainter เพื่อวาดรูปภาพในเลย์เอาต์ที่มีอยู่ หรือใช้ SimpleImage เพื่อแสดงรูปภาพที่ใช้พื้นที่ (I595e1, b/149827027)
คอมโพเนนต์ Stack รองรับทิศทางจากขวาไปซ้าย (Ic9e00)
เพิ่ม Icon, IconButton และ IconToggleButton โดยนำ AppBarIcon ออก คุณสามารถแทนที่การใช้งาน AppBarIcon ที่มีอยู่ด้วย IconButton ได้โดยตรง และตอนนี้ปุ่มดังกล่าวจะมีเป้าหมายการสัมผัสที่ถูกต้องแล้ว ดูตัวอย่างเพื่อดูข้อมูลการใช้งาน และดูไอคอนสำหรับไอคอน Material ที่ระบุ ซึ่งคุณใช้กับคอมโพเนนต์เหล่านี้ได้โดยตรง (I96849)
นำ DrawShape ที่ใช้ร่วมกันออกแล้ว ใช้ตัวแก้ไข DrawBackground แทน (I7ceb2)
เพิ่ม AdapterList ซึ่งเป็นคอมโพเนนต์รายการแบบเลื่อนที่ จัดองค์ประกอบและวางรายการที่มองเห็นได้เท่านั้น ปัญหาที่ทราบในปัจจุบัน คือมีเฉพาะแนวตั้งและไม่สามารถจัดการการเปลี่ยนแปลง ในกรณีทั้งหมดขององค์ประกอบย่อยได้อย่างเต็มที่ (Ib351b)
เพิ่มคอมโพเนนต์ที่เลื่อนได้ ซึ่งช่วยให้สร้างตัวเลื่อน/รายการที่กำหนดเองได้ (I5fd37)
เปลี่ยนชื่อพื้นหลังเป็น DrawBackground และตั้งค่าให้จดจำได้โดยค่าเริ่มต้น (Ia0bd3)
เพิ่มระยะขอบ เส้นขอบ รูปร่าง และพารามิเตอร์พื้นหลังลงใน Box (I05027, b/148147281)
เพิ่มคอมโพเนนต์ Canvas แล้ว Composable นี้ใช้พื้นที่บางส่วน (ผู้ใช้ระบุ) และช่วยให้คุณวาดโดยใช้ CanvasScope (I0d622) ได้
เปลี่ยนชื่อตัวแก้ไข
Borderเป็นDrawBorder(I8ffcc)เพิ่มคอมโพเนนต์ Box สำหรับรวมเลย์เอาต์และฟังก์ชันการวาดภาพทั่วไป (I6e2a7)
ตอนนี้แถบเลื่อนจะแสดงลักษณะการทำงานของการปัดแบบเนทีฟของ Android (I922af, b/147493715)
แทนที่ DrawBorder เพื่อใช้ตัวแก้ไขเส้นขอบ (Id335a)
เราเปลี่ยนชื่อ Modifier.tag เป็น Modifier.layoutId เพื่อไม่ให้เกิดความสับสนกับ Modifier.testTag (I995f0)
พารามิเตอร์เปอร์เซ็นต์เมื่อสร้างแนวทาง ConstraintLayout ได้รับการเปลี่ยนชื่อเป็นเศษส่วนแล้ว (Ida2db)
เพิ่มการรองรับระยะขอบของ Barrier ใน ConstraintLayout (I47ffe)
แก้ไขการรองรับ RTL ใน ConstraintLayout เพิ่ม API ที่ไม่รองรับ RTL (I3b1c7)
เพิ่ม DSL ใหม่สำหรับ ConstraintLayout แล้ว โปรดดูรายละเอียดเพิ่มเติมในตัวอย่าง (Icaa9a)
เพิ่มคำอธิบายประกอบ @ExperimentalLayout ตอนนี้เราได้ติดแท็ก ConstraintLayout, FlowRow และ FlowColumn เพื่อระบุว่า API ของคอมโพสิตเหล่านี้จะมีการเปลี่ยนแปลง (I412a8)
เพิ่ม
Modifier.padding(InnerPadding)แล้ว (I94985, b/157133803)นำ RowAlign และ ColumnAlign ที่เลิกใช้งานแล้วใน Row และ Column ออก (If60d4, b/155858731)
นำ LayoutTag() ที่เลิกใช้งานแล้วออก โปรดใช้ Modifier.tag() แทน นำ Modifier.matchParent() ที่เลิกใช้งานแล้วออก โปรดใช้ Modifier.matchParentSize() แทน (If8044)
เพิ่มตัวแก้ไขเลย์เอาต์ offsetPx ซึ่งใช้เพื่อกำหนดออฟเซ็ต (แบบไดนามิก) ในหน่วย px ได้ (I5af57)
เลิกใช้งาน AlignmentLineOffset composable แล้ว โปรดใช้ตัวแก้ไข relativePaddingFrom() แทน นำ Composable CenterAlignmentLine ออกแล้ว (I60107)
เพิ่มตัวแก้ไขเลย์เอาต์ defaultMinSizeConstraints ซึ่งจะตั้งค่าข้อจำกัดด้านขนาดให้กับเลย์เอาต์ที่ห่อหุ้มไว้เฉพาะเมื่อไม่ได้ระบุข้อจำกัดที่เกี่ยวข้องที่เข้ามา (0 สำหรับข้อจำกัดขั้นต่ำและอนันต์สำหรับข้อจำกัดสูงสุด) (I311ea, b/150460257)
ระบบนำคอนเทนเนอร์ออกแล้ว ใช้ Box แทน (Ibbc2b, b/151407926)
นำตัวแก้ไข LayoutWidth/Height/Size ที่เลิกใช้งานแล้วออก (Ib0bc1)
เพิ่มค่าพารามิเตอร์เริ่มต้นสำหรับตัวแก้ไขออฟเซ็ต (I37f06)
เพิ่มตัวแก้ไขระยะห่างจากขอบแบบสมมาตร (I39840)
นำตัวแก้ไข LayoutAspectRatio ที่เลิกใช้งานแล้วออก (I65a74)
นำตัวแก้ไข LayoutAlign ที่เลิกใช้งานแล้วออก (I10877)
แก้ไขข้อบกพร่องในตัวแก้ไขความกว้างและความสูงที่ทำให้เลย์เอาต์ที่ตัดคำได้รับการวัดโดยไม่มีข้อจำกัดแกนตรงข้าม (I210b8, b/154797971)
เพิ่มพารามิเตอร์ verticalGravity และ horizontalGravity ลงใน Row และ Column ตามลำดับ (I7dc5a)
อัปเดต wrapContentWidth และ wrapContentHeight เพื่อให้คาดหวังการจัดแนวแนวตั้งหรือแนวนอนแทนที่จะเป็นการจัดแนวใดก็ได้ เราได้อัปเดตตัวแก้ไขแรงโน้มถ่วงให้ยอมรับการจัดแนวแนวตั้งหรือแนวนอน อัปเดตแถว คอลัมน์ และกองซ้อนให้รองรับการจัดแนวต่อเนื่องที่กำหนดเองแล้ว (Ib0728)
ทำให้ Alignment สร้างอินสแตนซ์ได้ด้วยค่าที่กำหนดเอง เพิ่มการจัดแนว 1 มิติ (Ia0c05)
เปลี่ยนชื่อ EdgeInsets เป็น InnerPadding เปลี่ยนชื่อพารามิเตอร์ innerPadding ของปุ่ม Material เป็น padding (I66165)
ตอนนี้ alignToSiblings ยอมรับ Measured แทน Placeable แล้ว (I5788d)
เพิ่มตัวแก้ไขสำหรับการปรับขนาดให้กับการวัดขนาดจริงและเลิกใช้งานคอมโพเนนต์ที่ใช้เพื่อวัตถุประสงค์นี้ (I8295d)
เพิ่มการรองรับการปรับแต่งมิติข้อมูลขององค์ประกอบย่อยของ ConstraintLayout (Idb1a5)
นำ Composable ของ Wrap และ Center ที่เลิกใช้งานแล้วออก (I29e23)
เพิ่ม LayoutModifier2 ซึ่งเป็น API ใหม่สำหรับการกำหนดตัวแก้ไขเลย์เอาต์ และเลิกใช้งาน LayoutModifier (If32ac)
ตอนนี้คุณเข้าถึงสมาชิก RowScope และ ColumnScope ได้จากภายนอกแถวและคอลัมน์ (I3a641)
เลิกใช้งานคอนเทนเนอร์แล้ว โปรดใช้ Box แทน (I675ce, b/151407926)
เพิ่มตัวแก้ไข LayoutOffset สำหรับการชดเชยตำแหน่งเลย์เอาต์ (I0b8a3)
การรองรับ RTL ในเลย์เอาต์ Compose ในช่วงแรก (Ia5519)
อัปเดต LayoutAlign เพื่อไม่ให้เติมพื้นที่ว่างอีกต่อไป (I2b14f)
นำ Composable AspectRatio ออกเพื่อใช้ตัวปรับแต่งแทน ลบ FlexColumn, FlexRow ที่เลิกใช้งานแล้ว และตัวแก้ไขระยะห่าง (Iec8a7)
นำตัวแก้ไข LayoutInflexible สำหรับแถวและคอลัมน์ออก (I0d820)
ใช้แฮนเดิลการเลือกแบบลากเพื่อเปลี่ยนการเลือกสำหรับ TextField (I27032)
ใช้ LongPressAndDrag สำหรับการเลือก TextField (I17919)
การแก้ไขข้อบกพร่อง
- FocusModifier เลิกใช้งานแล้วเพื่อใช้ Modifier.focus, Modifier.focusRequester, Modifier.focusObserver แทน เราเลิกใช้งาน FocusState และ FocusDetailedState แล้วเพื่อเปลี่ยนไปใช้ FocusState2 (I46919, b/160822875, b/160922136)
- เปลี่ยนชื่อเป็น
runOnIdle(I83607)runOnIdleCompose - เราได้เปลี่ยนชื่อ API สำหรับการทดสอบหลายรายการเพื่อให้ใช้งานง่ายขึ้น เราได้เปลี่ยนชื่อ API ทั้งหมดที่ขึ้นต้นด้วย findXYZ เป็น onNodeXYZ API ทั้งหมดที่ขึ้นต้นด้วย doXYZ จะเปลี่ยนชื่อเป็น performXYZ (I7f164)
- นำ Modifier.ripple ที่เลิกใช้งานไปก่อนหน้านี้ออก ตอนนี้ Clickable ใช้ Ripple เป็นข้อบ่งชี้เริ่มต้น (หากคุณตั้งค่า MaterialTheme {} ในแอปพลิเคชัน) ดังนั้นในกรณีส่วนใหญ่ คุณเพียงแค่ใช้ Clickable และรับข้อบ่งชี้ Ripple ได้ฟรี หากต้องการปรับแต่งพารามิเตอร์สี / ขนาด / ขอบเขตสำหรับ Ripple คุณสามารถสร้าง RippleIndication ด้วยตนเองและส่งไปยัง Clickable เป็นพารามิเตอร์การระบุ (I663b2, b/155375067)
- นำ API การทดสอบขนาดที่ล้าสมัยออกแล้ว (Iba0a0)
- ทำให้ LayoutNode เป็น API เวอร์ชันทดลอง (I4f2e9)
- เราได้ใช้การล็อกการวางแนวการเลื่อนเวอร์ชัน 1 ใน Compose (I1ce7a, b/150289741)
- ตอนนี้ป๊อปอัป กล่องโต้ตอบ และเมนูจะรับค่า MaterialTheme ตามบริบท (Ia3665, b/156527485)
- นำพารามิเตอร์ทิศทางเลย์เอาต์ออกจากบล็อกการวัดของฟังก์ชัน Layout() อย่างไรก็ตาม คุณสามารถดูทิศทางการจัดวางได้ภายใน Callback ผ่านออบเจ็กต์ขอบเขตการวัด (Ic7d9d)
- เพิ่ม AbsoluteArrangement - อนุญาตให้จัดเรียงองค์ประกอบย่อยภายในแถวโดยไม่ต้องมีการมิเรอร์อัตโนมัติใน RTL (I3a1df)
- เราเลิกใช้งานคำอธิบายประกอบ @Untracked แล้ว แทนที่ด้วย @ComposableContract(tracked=false) (Id211e)
- ก่อนการเปลี่ยนแปลงนี้ ปลั๊กอินคอมไพเลอร์ Compose จะดักจับการเรียกไปยังตัวสร้างภายในฟังก์ชัน @Composable อย่างไม่เหมาะสมหากมี (I5205a, b/158123804)
- เพิ่ม
viewModel()composable ซึ่งช่วยให้สร้างหรือรับ ViewModel ที่สร้างไว้แล้วได้ในลักษณะเดียวกับที่ทำงานใน Activity หรือ Fragment (I5fdd1) ปรับโครงสร้างคลาส Radius ให้เป็น คลาสอินไลน์ นำวิธีการสร้างคอมแพเนียนออก เพื่อใช้ตัวสร้างฟังก์ชัน ที่มีพารามิเตอร์เริ่มต้นเพื่อให้รัศมี ตามแกน y ตรงกับพารามิเตอร์รัศมีแกน x ที่จำเป็น
อัปเดต DrawScope.drawRoundRect เพื่อใช้พารามิเตอร์ Radius เดียวแทนค่าทศนิยม 2 ค่าแยกกันสำหรับรัศมีตามแกน x และ y (I46d1b)
แทนที่การใช้งานคลาส Px ในคลาส Compose ต่างๆ ซึ่งเป็นส่วนหนึ่งของความพยายามในการ ปรับโครงสร้างครั้งใหญ่เพื่อใช้เฉพาะ Dp และประเภทดั้งเดิมสำหรับพารามิเตอร์พิกเซล ลบคลาส Px ทั้งหมด (I3ff33)
แทนที่การใช้งานคลาส Px ในคลาส Compose ต่างๆ ซึ่งเป็นส่วนหนึ่งของความพยายามในการปรับโครงสร้างขนาดใหญ่เพื่อใช้เฉพาะ Dp และประเภทดั้งเดิมสำหรับพารามิเตอร์พิกเซล (I086f4)
แทนที่การใช้คลาส Px ในคลาส Compose ต่างๆ ซึ่งเป็นส่วนหนึ่งของความพยายามในการปรับโครงสร้างขนาดใหญ่เพื่อใช้เฉพาะ Dp และประเภทดั้งเดิมสำหรับพารามิเตอร์พิกเซล (Id3434)
แทนที่การใช้งานคลาส Px ในคลาส Compose ต่างๆ ซึ่งเป็นส่วนหนึ่งของความพยายามในการปรับโครงสร้างขนาดใหญ่เพื่อใช้เฉพาะ Dp และประเภทดั้งเดิมสำหรับพารามิเตอร์พิกเซล (I97a5a)
เคอร์เซอร์ของ TextField มีภาพเคลื่อนไหวแบบกะพริบ (Id10a7)
ท่าทางสัมผัสบางส่วนไม่จำเป็นต้องส่งต่อ GestureToken (Id7ae5) อีกต่อไป
แทนที่การใช้คลาส Px ในคลาส Compose ต่างๆ ซึ่งเป็นส่วนหนึ่งของความพยายามในการปรับโครงสร้างโค้ดครั้งใหญ่ เพื่อใช้เฉพาะ Dp และประเภทดั้งเดิมสำหรับพารามิเตอร์พิกเซล (I57bff)
เราเลิกเลิกการเลิกใช้งาน Modifier.semantics เพื่ออนุญาตให้ใช้กับคอมโพเนนต์ระดับสูง (I4cfdc)
เปลี่ยนชื่อ AnnotatedString.Builder.addAnnotationString เป็น addStringAnnotation (I5059e)
อัปเดต Alignment API และเพิ่มการรองรับการจัดแนวแบบสัมบูรณ์ (ซึ่งจะไม่พลิกกลับโดยอัตโนมัติในบริบท RTL) (I38cd3)
เลย์เอาต์และองค์ประกอบย่อย LayoutModifier สามารถวัดได้ด้วยทิศทางเลย์เอาต์ที่แตกต่างกัน (Ibd731)
เพิ่มพารามิเตอร์ rect ที่ไม่บังคับเพิ่มเติมลงใน ImagePainter เพื่อรองรับ การวาดภาพส่วนย่อยของ ImageAsset พื้นฐาน (I0ea9e)
แก้ไขการขัดข้องใน AdapterList เมื่อนำรายการออก (Ic64b0, b/153195921)
เราได้เปลี่ยนวิธีวัดเลย์เอาต์แรกที่คุณใส่ไว้ในบล็อก activity.setContent { } ก่อนหน้านี้จะบังคับให้กรอกทั้งหน้าจอกิจกรรม แต่ตอนนี้จะทำงานเหมือนกับว่าคุณวางเลย์เอาต์ไว้ใน Stack ซึ่งจะมีขนาดเล็กกว่าหน้าจอและจะวางไว้ที่ด้านซ้ายบนของหน้าจอ หากต้องการให้มีลักษณะการทำงานแบบเดิม คุณสามารถใช้ Modifier.fillMaxSize() กับเลย์เอาต์ได้ (Ie88a7, b/153453714)
เปลี่ยนชื่อโมดูล ui-text-compose เป็น ui-text ตอนนี้ ui-text มี Composable ของ CoreText และ CoreTextField แล้ว (Ib7d47)
เปลี่ยนชื่อโมดูล ui-text เป็น ui-text-core (I57dec)
ย้าย Composable ui-framework/CoreText, CoreTextField ไปไว้ภายใต้ ui-text-compose คุณอาจต้องใส่ ui-text-compose ในโปรเจ็กต์ (I32042)
runOnIdleComposeและrunOnUiThreadเป็นฟังก์ชันส่วนกลางแล้ว แทนที่จะเป็นเมธอดใน ComposeTestRule (Icbe8f)ย้ายตัวดำเนินการมอบสิทธิ์พร็อพเพอร์ตี้ [Mutable]State ไปยังส่วนขยาย เพื่อรองรับการเพิ่มประสิทธิภาพการมอบสิทธิ์พร็อพเพอร์ตี้ Kotlin 1.4 ผู้โทรต้องเพิ่ม การนำเข้าเพื่อใช้
by state { ... }หรือby mutableStateOf(...)ต่อไป (I5312c)ตอนนี้ DrawLayerModifier และ drawLayer() จะตั้งค่าเริ่มต้น clipToBounds และ clipToOutline เป็น false (I0eb8b, b/152810850)
เปลี่ยนชื่อ LayoutResult เป็น MeasureResult (Id8c68)
เลิกใช้งาน Composable ของ Center แล้ว ควรแทนที่ด้วยตัวแก้ไข LayoutSize.Fill + LayoutAlign.Center หรือด้วย Composable Box หรือ Stack อย่างใดอย่างหนึ่งที่มีการใช้ตัวแก้ไขที่เหมาะสม (Idf5e0)
เปลี่ยนชื่อ LayoutFlexible เป็น LayoutWeight เปลี่ยนชื่อพารามิเตอร์ "แน่น" เป็น "เติม" (If4738)
เราได้เปลี่ยน DrawVector จากฟังก์ชันที่ใช้ร่วมกันได้ทั่วไป เป็นการแสดงผล Modifier drawVector() ที่ จะวาดเวกเตอร์เป็นพื้นหลังของเลย์เอาต์ (I7b8e0)
แทนที่ฟังก์ชันที่ประกอบกันได้ Clip ด้วยตัวแก้ไข drawClip() DrawClipToBounds เป็นตัวแก้ไขที่สะดวก ในการใช้เมื่อคุณต้องการตัดเฉพาะขอบเขตเลเยอร์ ด้วยรูปร่างสี่เหลี่ยมผืนผ้า (If28eb)
แทนที่ฟังก์ชันที่ใช้คอมโพสได้ DrawShadow ด้วยตัวแก้ไข drawShadow() ตอนนี้ระบบจะวาดเงาเป็นส่วนหนึ่งของ LayerModifier (I0317a)
ย้าย androidx.compose.ViewComposer ไปยัง androidx.ui.node.UiComposer นำ androidx.compose.Emittable ออกแล้ว เนื่องจากซ้ำกับ ComponentNode. androidx.compose.ViewAdapters จึงถูกนำออก ซึ่งเป็นกรณีการใช้งานที่ไม่รองรับแล้ว เลิกใช้งาน Compose.composeInto แล้ว โปรดใช้
setContentหรือsetViewContentแทน เลิกใช้งาน Compose.disposeComposition แล้ว โปรดใช้เมธอดdisposeในCompositionที่setContentส่งคืนแทน androidx.compose.Compose.subcomposeInto ย้ายไปอยู่ที่ androidx.ui.core.subcomposeInto แล้ว เปลี่ยนชื่อ ComponentNode#emitInsertAt เป็น ComponentNode#insertAt แล้ว เปลี่ยนชื่อ ComponentNode#emitRemoveAt เป็น ComponentNode#removeAt แล้ว เปลี่ยนชื่อ ComponentNode#emitMode เป็น ComponentNode#move แล้ว (Idef00)เลิกใช้งานคอมโพสฟังก์ชัน Wrap แล้ว โดยสามารถแทนที่ได้ด้วยตัวแก้ไข LayoutAlign หรือด้วย Composable ของ Stack (Ib237f)
ทำให้ระบบส่งต่อทิศทางเลย์เอาต์จากโหนดเลย์เอาต์หลักไปยังโหนดลูก เพิ่มตัวปรับแต่งทิศทางเลย์เอาต์แล้ว (I3d955)
เปลี่ยนชื่อ Painter.toModifier เป็น Painter.asModifier เนื่องจาก Modifier ที่สร้างขึ้นใหม่มีการอ้างอิงถึง Painter เดิมที่แชร์ในอินสแตนซ์ Modifier หลายรายการได้ (I7195b)
รองรับทิศทางจากขวาไปซ้ายในตัวแก้ไข LayoutPadding (I9e8da)
เราได้รวม Density และ DensityScope ไว้ในอินเทอร์เฟซเดียว ตอนนี้คุณใช้ DensityAmbient.current แทน ambientDensity() ได้แล้ว แทนที่จะใช้ withDensity(density) ให้ใช้ with(density) (I11cb1)
นำคลาส ValueHolder ออกแล้ว ปรับโครงสร้างคลาส AnimatedValue, AnimatedFloat เพื่อ ทำให้ฟิลด์ค่าภาพเคลื่อนไหวเป็นนามธรรมเพื่อให้คลาสย่อยสามารถดูการอัปเดตค่าได้
- เพิ่มคลาสโมเดลสำหรับ AnimatedValue, AnimatedFloat ฯลฯ
- เพิ่มชุด API @Composable แบบ Lightweight ใหม่สำหรับการเปลี่ยนค่าแบบเคลื่อนไหว
- (I79530)
การเปลี่ยนแปลงที่ไม่รองรับการทำงานย้อนหลังใน Ambient API ดูรายละเอียดได้ในบันทึกและเอกสารประกอบของ
Ambient<T>(I4c7ee, b/143769776)ตอนนี้ตำแหน่งบรรทัดการจัดแนว Int ที่แสดงผลจาก Placeable#get(AlignmentLine) จะไม่ใช่ค่าว่างแล้ว หากไม่มีเส้นแนวที่ค้นหา ระบบจะแสดงผล AlignmentLine.Unspecified (I896c5, b/158134875)
แก้ไขข้อบกพร่องของ ConstraintLayout ที่ทำให้เกิดข้อขัดข้องในการจัดองค์ประกอบใหม่ (Ibee5a, b/158164341)
มีการเปลี่ยนแปลง API ของ Lambda ที่ต่อท้าย WithConstraints ตอนนี้แทนที่จะมี 2 พารามิเตอร์ ก็จะมีขอบเขตผู้รับซึ่งนอกเหนือจากข้อจำกัดและ layoutDirection แล้ว ยังมีพร็อพเพอร์ตี้ minWidth, maxWidth, minHeight และ maxHeight ใน Dp (I91b9a, b/149979702)
เปลี่ยนชื่อ LayoutModifier2 เป็น LayoutModifier (Id29f3)
ฟังก์ชันการวัดค่าโดยธรรมชาติใน Layout และ LayoutModifier2 มีตัวรับ IntrinsicMeasureScope แล้ว ซึ่งจะให้ API การค้นหาค่าโดยธรรมชาติพร้อมกับทิศทางการจัดวางที่ส่งต่อโดยนัย (Id9945)
เลิกใช้งาน LayoutDirectionAmbient แล้ว หากต้องการอ่านทิศทางเลย์เอาต์ที่กำหนดโดยภาษา ให้ใช้ localeLayoutDirection ใน ConfigurationAmbient (I851b1)
เพิ่ม positionInParent และ boundsInParent สำหรับ LayoutCoordinates (Icacdd, b/152735784)
เลิกใช้งาน Composable ของ ParentData แล้ว คุณควรสร้างตัวแก้ไขที่ใช้การติดตั้งอินเทอร์เฟซ ParentDataModifier หรือใช้ตัวแก้ไข LayoutTag หากเพียงต้องการติดแท็กลูกเลย์เอาต์เพื่อจดจำภายในบล็อกการวัด (I51368, b/150953183)
เพิ่ม OnPositionedModifier และ OnChildPositionedModifier เพื่อแทนที่ฟังก์ชันที่ใช้ได้ของ OnPositioned และ OnChildPositioned (I2ec8f)
ไม่อนุญาตให้ใช้ระยะเว้นเชิงลบใน LayoutPadding ควรใช้ LayoutOffset แทนสำหรับการชดเชยตำแหน่งเชิงลบ (Ifb5b1)
WithConstraints มีพารามิเตอร์ LayoutDirection (I6d6f7)
อัปเดตฟีเจอร์แฟล็ก
ComposeFlags.COMPOSER_PARAMเป็นtrueซึ่งจะเปลี่ยนกลยุทธ์การสร้างโค้ดสำหรับปลั๊กอินการเขียน ในระดับสูง การดำเนินการนี้จะทำให้ฟังก์ชัน @Composable สร้างขึ้นพร้อมกับพารามิเตอร์สังเคราะห์เพิ่มเติม ซึ่งจะส่งไปยังการเรียก @Composable ที่ตามมาเพื่อให้รันไทม์จัดการการดำเนินการได้อย่างเหมาะสม การเปลี่ยนแปลงนี้เป็นการเปลี่ยนแปลงที่สำคัญในระดับไบนารี แต่ควรคงความเข้ากันได้ในระดับแหล่งที่มาในการใช้งาน Compose ที่ได้รับอนุญาตทั้งหมด (I7971c)เปลี่ยน LayoutCoordinates เพื่อให้ providedAlignmentLines เป็น Set แทนที่จะเป็น Map และให้ LayoutCoordinates ใช้โอเปอเรเตอร์ get() แทนเพื่อดึงค่า ซึ่งจะช่วยให้ผู้แก้ไขแก้ไขค่าอย่างน้อย 1 ค่าของชุดได้ง่ายขึ้นโดยไม่ต้องสร้างคอลเล็กชันใหม่สำหรับผู้แก้ไขแต่ละราย (I0245a)
LayoutCoordinates ไม่มีพร็อพเพอร์ตี้ตำแหน่งอีกต่อไป พร็อพเพอร์ตี้ position จะไม่มีผลเมื่อพิจารณา LayoutModifiers, rotation หรือการปรับขนาด นักพัฒนาแอปควรใช้ parentCoordinates และ childToLocal() เพื่อคำนวณการเปลี่ยนจาก LayoutCoordinate หนึ่ง ไปยังอีก LayoutCoordinate หนึ่งแทน
LayoutCoordinates ใช้ IntPxSize สำหรับพร็อพเพอร์ตี้ขนาดแทน PxSize เลย์เอาต์ใช้ขนาดพิกเซลจำนวนเต็มสำหรับเลย์เอาต์ ดังนั้นขนาดเลย์เอาต์ทั้งหมด ควรใช้จำนวนเต็มและไม่ใช่ค่าทศนิยม (I9367b)
การปรับปรุงแพลตฟอร์ม API ของข้อจำกัด (I0fd15)
เพิ่ม TextDirection.Content (I48f36)
ปรับเมนูแถบเครื่องมือเพื่อให้แสดงการคัดลอก ตัด วาง ได้อย่างถูกต้อง (Id3955)
เพิ่ม FloatingToolbar สำหรับการเลือก TextField (Ie8b07)
เปลี่ยนชื่อ TextDirectionAlgorithm เป็น TextDirection (I75ce8)
เปลี่ยนชื่อ TextDirection เป็น ResolvedTextDirection (I3ff38)
เพิ่ม HapticFeedback ลงในการเลือก TextField (I58050)
เพิ่มวิธีการคัดลอก ตัด และวางลงในการเลือก TextField (Idb70b)
ลบ TestTag และ Semantics แล้ว ให้ใช้ Modifier.testTag และ Modifier.semantics แทน (I15ff0, b/158841414)
เปลี่ยนชื่อแพ็กเกจสำหรับ Locale และ LocaleList จาก androidx.ui.text เป็น androidx.ui.intl (I8132c)
การเปลี่ยนแปลง API:
AnnotatedString(builder: Builder)เปลี่ยนชื่อเป็นannotatedString(builder: Builder)(Ia6377)การเปลี่ยนแปลง API:
AnnotatedString.Itemเปลี่ยนชื่อเป็นAnnotatedString.Range(I2d44d)เพิ่มแถบเครื่องมือสำหรับการดำเนินการที่เกี่ยวข้องกับข้อความ (I49d53)
ตอนนี้ LifecycleOwnerAmbient ใหม่พร้อมใช้งานแล้ว ตอนนี้ Activity ที่คุณใช้กับ Compose UI ควรขยาย androidx.activity.ComponentActivity (หรือ AppCompatActivity) ระบบได้เลิกใช้งาน setContent ใน android.app.Activity แล้ว (Idb25a, b/153141084)
แทนที่ชื่อแพ็กเกจ ui-android-text (androidx.text) ด้วย androidx.ui.text.platform เพื่อให้สอดคล้องกับนโยบาย androidx (I42711)