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 ทั้งหมด)
อัปเดตล่าสุด | รุ่นที่เสถียร | รุ่นที่อาจได้รับการเผยแพร่ | รุ่นเบต้า | รุ่นอัลฟ่า |
---|---|---|---|---|
2 กรกฎาคม 2025 | 1.8.3 | - | 1.9.0-beta02 | - |
โครงสร้าง
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
หากต้องการเพิ่มทรัพยากร Dependency ใน Compose คุณต้องเพิ่มที่เก็บ Maven ของ Google ลงในโปรเจ็กต์ อ่านข้อมูลเพิ่มเติมได้ที่ที่เก็บ Maven ของ Google
เพิ่มการอ้างอิงสำหรับอาร์ติแฟกต์ที่คุณต้องการในไฟล์ build.gradle
สำหรับแอปหรือโมดูลของคุณ
Groovy
dependencies { implementation "androidx.compose.foundation:foundation:1.8.3" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.foundation:foundation:1.8.3") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
ดูข้อมูลเพิ่มเติมเกี่ยวกับการพึ่งพาได้ที่เพิ่มการพึ่งพาบิลด์
ความคิดเห็น
ความคิดเห็นของคุณจะช่วยให้ Jetpack ทำงานได้ดียิ่งขึ้น โปรดแจ้งให้เราทราบหากพบปัญหาใหม่หรือมี ไอเดียในการปรับปรุงไลบรารีนี้ โปรดดูปัญหาที่มีอยู่ ในไลบรารีนี้ก่อนสร้างปัญหาใหม่ คุณสามารถโหวตปัญหาที่มีอยู่ได้โดย คลิกปุ่มดาว
ดูข้อมูลเพิ่มเติมได้ในเอกสารประกอบของเครื่องมือติดตามปัญหา
เวอร์ชัน 1.9
เวอร์ชัน 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
ไปยังTextFieldBuffer
addStyle
ยังคงรับสายได้จากOutputTransformation
เท่านั้น (I9930a, b/417991824) - เราเขียน Clickable ใหม่เพื่อไม่ให้ใช้การป้อนข้อมูลด้วยเคอร์เซอร์ที่ระงับเป็นการเพิ่มประสิทธิภาพ ฟีเจอร์นี้เปิดใช้โดยแฟล็ก คุณปิดใช้ได้หากพบข้อบกพร่องในการติดตั้งใช้งานใหม่ -
ComposeFoundationFlags.isNonSuspendingPointerInputInClickableEnabled
(I85b65) - เปิดตัว
isFlingCancellationWithNestedScrollFixEnabled
เพื่อแก้ไขปัญหาการแพร่กระจายการปัดในการเลื่อนที่ซ้อนกัน ใน CL นี้ เราจะกู้คืนลักษณะการทำงานของการโยนที่ถูกนำออกไปใน aosp/3260391 เราจะยังคงยกเลิกภาพเคลื่อนไหวการปัดในกรณีที่นำเด็กออกจากองค์ประกอบ (I467f4, b/405910180, b/419049142, b/416784125) WindowInsetsRulers
: เปลี่ยนrulersIgnoringVisibility
เป็นสูงสุด เปลี่ยนgetDisplayCutoutBounds()
ให้เป็นฟังก์ชันส่วนขยายของPlacementScope
WindowInsetsAnimationProperties
เปลี่ยนเป็นWindowInsetsAnimation
และgetAnimationProperties()
เปลี่ยนเป็นgetAnimation()
แล้ว (I3816f)- เปลี่ยน
InsetsRulers
ให้เป็นโค้ดทั่วไปที่มีชื่อWindowInsetsRulers
ปรับ API ให้เรียบง่ายขึ้นเพื่อให้การแทรกทั้งหมดเป็นWindowInsetsRulers
แยกพร็อพเพอร์ตี้ภาพเคลื่อนไหวที่ไม่ใช่ไม้บรรทัดไปยังคลาสAnimationProperties
WindowInsetsRulers.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 พื้นฐานต่อไปนี้เพื่อให้ผู้ใช้สร้างเมนูบริบทที่กำหนดเองได้TextContextMenuProvider
TextContextMenuDataProvider
TextContextMenuData
TextContextMenuComponent
LocalTextContextMenuDropdownProvider
LocalTextContextMenuToolbarProvider
(I1b7b0)
- ทำให้
LazyLayoutItemProvider
เสถียร (Icce09, b/261565751) - เปิดตัวฟีเจอร์การเลือกอัจฉริยะของ Android ที่เปิด/ปิดใช้ได้ผ่าน
ComposeFoundationFlags.isSmartSelectionEnabled
นอกจากนี้ ยังมีcompositionLocal
LocalTextClassifierCoroutineContext
แบบคงที่ที่ใช้ระบุ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) - เพิ่มฟีเจอร์ควบคุมลักษณะการทำงานของการดึงข้อมูลล่วงหน้าแบบซ้อนอัตโนมัติ:
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
ที่เลิกใช้งานแล้วออก โปรดใช้TextAutoSize
API ที่มีฟังก์ชันเดียวกัน (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-เบต้า01
29 มกราคม 2025
androidx.compose.foundation:foundation-*:1.8.0-beta01
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-beta01 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- นำ
SemanticsNodeInteraction.semanticsId()
ออกแล้ว โปรดใช้SemanticsNodeInteraction.fetchSemanticsNode().id
แทน (Ie397a) - เขียน
requestAutofill
API ใหม่ให้อยู่นอกเครื่องมือจัดการการป้อนข้อความอัตโนมัติ (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) - เพิ่มการติดตั้งใช้งานเริ่มต้นสำหรับ
stickyHeader
DSL ใหม่ (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 เหล่านี้สร้างอินสแตนซ์ที่ห่อหุ้มของเอฟเฟกต์การเลื่อนเกินที่ระบุซึ่งไม่ได้วาด / จัดการเหตุการณ์ตามลำดับ ซึ่งช่วยให้แสดงผลการเลื่อนเกินในคอมโพเนนต์แยกต่างหากจากคอมโพเนนต์ที่ส่งเหตุการณ์ได้ เช่น ปิดใช้การวาดการเลื่อนเกินในรายการแบบเลื่อนขี้เกียจ แล้ววาดการเลื่อนเกินแยกกันที่ด้านบน / ที่อื่น (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) - นำ
GlobalAssertions
API เวอร์ชันทดลองออกแล้ว โดยมีวัตถุประสงค์เพื่อใช้ในการเรียกใช้การตรวจสอบการช่วยเหลือพิเศษ โปรดดู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
ซึ่งจะช่วยให้การติดตั้งใช้งานข้อบ่งชี้มีประสิทธิภาพมากขึ้นเมื่อเทียบกับrememberUpdatedInstance
API ก่อนหน้า (ซึ่งตอนนี้เลิกใช้งานแล้ว) ดูข้อมูลการย้ายข้อมูลได้ที่ developer.android.com - ตอนนี้
clickable
/combinedClickable
/selectable
/toggleable
ยอมรับพารามิเตอร์MutableInteractionSource
ที่เป็น Null ได้แล้ว หากเป็น Null และ Indication ที่ระบุเป็นIndicationNodeFactory
ระบบจะสร้าง Indication แบบเลื่อนเวลาได้เฉพาะเมื่อจำเป็นเท่านั้น ซึ่งจะช่วยปรับปรุงประสิทธิภาพ หากคุณไม่ได้โฮสต์และใช้MutableInteractionSource
เราขอแนะนําให้ส่งค่าเป็น null แทนการส่งremember { MutableInteractionSource() }
Indication#rememberUpdatedInstance
เลิกใช้งานแล้ว ซึ่งจะทำให้ประสิทธิภาพลดลงอย่างมากและหลีกเลี่ยงไม่ได้ รวมถึงยังป้องกันการเพิ่มประสิทธิภาพอื่นๆ ด้วย แต่คุณควรใช้IndicationNodeFactory
API ใหม่แทน
- เพิ่ม Indication API ใหม่
BasicTextField
ตอนนี้การใช้TextFieldState
เสถียรแล้ว และเราขอแนะนำให้เว็บไซต์ที่ใช้การเรียกใช้ทั้งหมดเริ่มย้ายข้อมูลจากBasicTextField(value, onValueChange)
ไปยังBasicTextField(TextFieldState)
- เราเลิกใช้งาน
ClickableText
แล้ว หากต้องการเพิ่มลิงก์ที่คลิกได้ลงในข้อความ ให้ใช้BasicText
พร้อมคำอธิบายประกอบLinkAnnotation
ใหม่ในAnnotatedString
LinkAnnotation
ช่วยให้ปรับแต่งสไตล์ตามสถานะของลิงก์ได้ (เช่น โฟกัส วางเมาส์) - ขอแนะนำ
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
ฟังก์ชันperformTextReplacement
,performTextInput
และ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) - เปลี่ยนชื่อพารามิเตอร์
basicMarquee
delayMillis
เป็น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
คลาสที่อนุญาตให้จัดรูปแบบลิงก์เป็นพารามิเตอร์ไปยัง Composable ของข้อความแทน (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
และLocalContextMenuTheme
ProvidableCompositionLocal
ที่เชื่อมโยง คุณสามารถแก้ไขสีของเมนูตามบริบทในช่องข้อความและข้อความที่เลือกได้โดยระบุองค์ประกอบในเครื่อง (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) AnchoredDraggableState
targetValue
จะไม่พิจารณาเกณฑ์ตำแหน่งอีกต่อไป ตอนนี้มีเกณฑ์โดยนัยที่ 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
เป็น "จริง" เราจะนำฟีเจอร์นี้ออกก่อนเปิดตัวเวอร์ชันเบต้า 1.7 (I2b055, b/329296471) - เปิดตัว
GraphicsLayer
API ใหม่เพื่อให้มีความยืดหยุ่นมากขึ้นในการจัดวางและแสดงผลอินสแตนซ์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
ได้รับการอัปเกรดเป็น Stable 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()
เพื่อให้โหนดตัวแก้ไขรับView
Android ปัจจุบันได้โดยไม่ต้องอ่าน 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)- เพิ่ม
LocalTextLinkStyle
CompositionLocal ที่ช่วยให้เปลี่ยนรูปแบบของลิงก์ในข้อความทั่วทั้งแอปได้ หากคุณใช้ธีมของคุณเองในแอป คุณควรตั้งค่า CompositionLocal นี้ตามธีมของคุณ เมื่อใช้ธีม Material ระบบจะตั้งค่าสีของลิงก์เป็นสีหลักของ Material โดยค่าเริ่มต้น (I7eb10) - เปิดตัว
receiveContent
ตัวแก้ไขที่ช่วยให้นักพัฒนาแอปมีวิธีรับเนื้อหาที่สมบูรณ์ใน Jetpack Compose receiveContent
ทำงานร่วมกับBasicTextField2
เพื่อรับเนื้อหารูปแบบ Rich ที่แป้นพิมพ์ซอฟต์แวร์ให้มา หรือผ่านการวางจากคลิปบอร์ด (I81b72)- ในการเปลี่ยนแปลงนี้ เราจะแทนที่
SnapFlingBehavior
ด้วยTargetedFlingBehavior
ใน Pager เพื่อปลดล็อกกรณีการใช้งานอื่นๆ และมอบความยืดหยุ่นที่มากขึ้น (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
และย้ายไปไว้ในแพ็กเกจเดียวกัน- เปิดตัวร่างแรกของ
OutputTransformation
API สำหรับBasicTextField2
API นี้จะแทนที่ Use Case ส่วนใหญ่ของVisualTransformation
ในBasicTextField
รุ่นเก่า อย่างไรก็ตาม API นี้ยังไม่สมบูรณ์และบางอย่างอาจทำงานไม่ถูกต้อง แต่เรายินดีรับฟังความคิดเห็นเกี่ยวกับความสามารถในการใช้งาน API สำหรับกรณีการใช้งานของคุณ (aosp/2708848) - เปิดตัว
LinkAnnotation
ที่ช่วยให้เพิ่มลิงก์และข้อความที่คลิกได้ลงในข้อความ ฟีเจอร์ลิงก์ยังไม่สมบูรณ์และจะมีการเปลี่ยนแปลง API เพิ่มเติม - เปิดตัว
receiveContent
ตัวแก้ไขที่ช่วยให้นักพัฒนาแอปมีวิธีรับเนื้อหาที่สมบูรณ์ใน Jetpack Compose receiveContent
ทำงานร่วมกับBasicTextField2
เพื่อรับเนื้อหารูปแบบ Rich Content ที่แป้นพิมพ์ซอฟต์แวร์ให้มา หรือผ่านการวางจากคลิปบอร์ดKeyboardOptions.shouldShowKeyboardOnFocus
ช่วยให้คุณปิดใช้ลักษณะการทำงานเริ่มต้นของBasicTextField
ในการขอแป้นพิมพ์ซอฟต์แวร์เมื่อโฟกัสTextInputService
และLocalTextInputService
เลิกใช้งานแล้ว ใช้PlatformTextInputModifierNode
เพื่อผสานรวมกับ IME API ของแพลตฟอร์มโดยตรงแทน (aosp/2862698)Indication#rememberUpdatedInstance
เลิกใช้งานแล้ว ซึ่งจะทำให้ประสิทธิภาพลดลงอย่างมากและหลีกเลี่ยงไม่ได้ รวมถึงยังป้องกันการเพิ่มประสิทธิภาพอื่นๆ ด้วย แต่คุณควรใช้IndicationNodeFactory
API ใหม่แทน
การแก้ไขข้อบกพร่อง
- ตอนนี้
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
เพื่อให้เพิ่มคอมโพเนนต์ที่ขับเคลื่อนด้วยพื้นผิวใน 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 รายการสำหรับDragAndDropModifierNode
1 เครื่องสำหรับรับการโอนและอีก 1 เครื่องสำหรับโอนข้อมูล (I69481) - อัปเดต
maximumFlingVelocity
ให้แสดงเป็น Float อัปเดตเอกสารเพื่อให้มีความชัดเจนมากขึ้นเกี่ยวกับmaximumFlingVelocity
ความสามัคคี (I8adc7) เปลี่ยนชื่อ
onDragAndDropStart
ในDragAndDropModifierNode
Factory เป็นacceptDragAndDropTransfer
แล้วเพิ่ม
acceptsDragAndDropTransfer
ลงในdragAndDropTarget
Modifier
เพื่อยอมรับจากเซสชันการลากและวาง Lambda นี้จะแสดงผล viableDragAndDropTarget
หากสนใจเซสชันการลากและวาง ระบบได้แทนที่ Lambda อื่นๆ สำหรับการประมวลผลเหตุการณ์การลากด้วยฟังก์ชันนี้เพิ่มฟังก์ชันโรงงาน
DragAndDropTarget
เพื่อรับจากเซสชันการลากและวาง (Iebf3a)การเปิดเผย
startDragImmediately
ในAnchoredDraggable
จะช่วยให้ควบคุมการตรวจหาท่าทางการลากเมื่อใช้งานได้ การตั้งค่านี้จะมีประโยชน์เมื่อวิดเจ็ตเคลื่อนไหวไปยังจุดยึดเป้าหมาย ดูตัวอย่าง (Ie6d13, b/285139987)ตอนนี้ Foundation Tooltip API อยู่ในสถานะ
@ExperimentalFoundationApi
(I30b0b) แล้วนำ
DragAndDropInfo
ออกจากประเภทDragAndDropModifierNode.drag
ตอนนี้ใช้พารามิเตอร์สำหรับtransferData
, ขนาดการตกแต่ง และ Lambda การตกแต่งแบบลากDrawScope
DragAndDropTarget
มีเมธอดสำหรับเหตุการณ์การลากและวางที่เฉพาะเจาะจงแทนที่จะเป็นเมธอดแบบนามธรรมเดียว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
SwipeToReveal
API (สำหรับ 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
Flag ชั่วคราวเพื่อปิดใช้การปรับขนาดแบบอักษรที่ไม่ใช่แบบเชิงเส้น ตั้งค่า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()
เพื่อทำเครื่องหมายเป็น Composable เนื่องจากต้องการหลีกเลี่ยงหน้าต่างลอยใน 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.consumedWindowInsets
API ออกแล้ว โปรดใช้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 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เปิดตัว
AnchoredDraggable
API ใหม่ใน Foundation ซึ่งใช้สร้างคอมโพเนนต์ที่ลากระหว่างสถานะต่างๆ ได้ เช่น แถบเลื่อนด้านล่างแบบโมดัล API นี้จะมาแทนที่Swipeable
API ของ Material (I4a2ed)
การเปลี่ยนแปลง API
- การสนับสนุน
InputConnection#requestCursorUpdates
(I0c69b) - เปิดตัว
scrollAnimationSpec
เพื่ออนุญาตให้ใช้ข้อกำหนดภาพเคลื่อนไหวที่กำหนดเอง อัปเดตBringIntoViewCalculator
เป็นBringIntoViewScroller
แล้ว (Idb741) - เพิ่มประเภท
ResourceResolutionException
เพื่อห่อ Throwable ที่เกิดขึ้นเมื่อพยายามโหลดชิ้นงานบิตแมปพร้อมคำอธิบายเส้นทางชิ้นงานที่โหลดไม่สำเร็จ (I19f44, b/230166331, b/278424788) - เพิ่มพร็อพเพอร์ตี้และการดำเนินการทางความหมายเพื่อรองรับการแปลข้อความ (I4a6bc)
- เปิดตัว
BringIntoViewCalculator
API ที่ใช้ปรับแต่งวิธีที่คอมโพเนนต์ต่างๆ เช่น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.Node
API แล้ว ซึ่งจะช่วยลดค่าใช้จ่ายในการคอมโพสครั้งแรก - การปรับปรุงความเสถียรของเพจเจอร์ เราได้แก้ไขข้อบกพร่องหลายอย่างแล้ว
- ตอนนี้พารามิเตอร์
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) LazyStaggeredGrid
API ได้รับการเลื่อนขั้นเป็นเวอร์ชันเสถียรแล้ว (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) - แก้ไขการถดถอยที่แป้นพิมพ์ไม่แสดงสำหรับช่องข้อความภายในกล่องโต้ตอบที่ไม่ได้สร้างโดย
Dialog
composable (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 เบต้า 01(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.hoverable
hoverable
ตัวแก้ไขจะแสดงในเครื่องมือตรวจสอบก็ต่อเมื่อเปิดใช้ (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
- เปิดตัว
PlatformTextInputAdapter
API ระดับต่ำใหม่สำหรับการสร้างการใช้งานอินพุตข้อความที่กำหนดเองซึ่งสื่อสารกับ API ของแพลตฟอร์มโดยตรง (I58df4) - เพิ่มการรองรับเลย์เอาต์ย้อนกลับใน
LazyStaggeredGrid
(I3ef4a)
การแก้ไขข้อบกพร่อง
- ตอนนี้การดำเนินการตามความหมายของ
BasicTextField
SetText
จะอัปเดตบัฟเฟอร์ข้อความโดยใช้เส้นทางโค้ดเดียวกับการอัปเดต 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
- เพิ่มการติดตั้งใช้งานทั่วไปของ
PinnableContainer
API ที่ใช้ใน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
ที่รวมกัน ดูตัวอย่างที่อัปเดตแล้วในเอกสารประกอบเพื่อดูตัวอย่างวิธีใช้เอฟเฟกต์การเลื่อนเกินด้วยรูปร่าง API ใหม่ (I8a9c4, b/255554340) - ประเภท/ค่า Null ของฟังก์ชันที่ซ่อนในบรรทัด/เลิกใช้งานแล้ว (I24f91)
LineBreak
และHyphens
API ใน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) - เปิดตัว
PinnableContainer
API ที่เผยแพร่โดย 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) - เปลี่ยน
beyondBoundCount
API จาก 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.imeAnimationSourc
e และ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)
- ตอนนี้
BringIntoViewResponder
สามารถรับขอบเขตที่อัปเดตล่าสุดของคำขอขณะประมวลผลได้แล้ว (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) - แทนที่
snapFlingBehavior
Factory ด้วยคลาส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
เพื่อเปิดใช้การสแนปใน Lazy List (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)
การแก้ไขข้อบกพร่อง
BasicTextField
ตอนนี้cursorBrush
อาจเคลื่อนไหวได้โดยไม่ต้องรีสตาร์ทตัวจับเวลาเคอร์เซอร์ (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.lazy
API ที่เสถียรใหม่จะอยู่ใน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) - ใน
LazyLayoutItemProvider
API แทนที่จะให้โรงงานส่งคืน Lambda ที่ประกอบได้ตามดัชนี ตอนนี้เรามีฟังก์ชันที่ประกอบได้ที่ง่ายกว่าเดิมชื่อ Item ซึ่งยอมรับดัชนี (Id2196) - เปลี่ยนชื่อ LazyLayoutItemsProvider เป็น LazyLayoutItemProvider (I0638c)
LazyLayoutItemsProvider.itemsCount
เปลี่ยนชื่อเป็นitemCount
(Id409c)- เพิ่มแปรงใน
TextStyle
และSpanStyle
เพื่อให้วาดข้อความด้วยการไล่ระดับสีได้ (I53869, b/187839528) - แอตทริบิวต์
trimFirstLineTop
,trimLastLineBottom
ของLineHeightBehavior
เปลี่ยนเป็น Enum เดียว:LineHeightTrim
LineHeightTrim
มีค่า 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)- เปิดตัว
LazyLayout
API เวอร์ชันทดลองใหม่ ซึ่งจะช่วยให้คุณสร้างคอมโพเนนต์ของคุณเองได้ เช่นLazyColumn
ของLazyVerticalGrid
โปรดทราบว่า API อยู่ในช่วงเริ่มต้นและอาจมีการเปลี่ยนแปลงในรุ่นต่อๆ ไป (Iba2bc, b/166591700) - ตอนนี้
AndroidFont
ใช้typefaceLoader
เป็นพารามิเตอร์ของเครื่องมือสร้าง (I2c971) - ตอนนี้
WindowInsets
Companion จะแสดงระดับการมองเห็น (ไม่ว่าจะอยู่บนหน้าจอหรือไม่ ไม่ว่าจะมีส่วนทับซ้อนกับหน้าต่างหรือไม่) และขนาดที่อาจเป็นได้หากพร้อมใช้งานในอุปกรณ์ แต่ไม่ได้ใช้งานอยู่ในขณะนี้ (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
- เพิ่ม
PinnableParent
API ที่อนุญาตให้องค์ประกอบย่อยของเลย์เอาต์แบบ 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)
- เพิ่ม
LazyVerticalGrid
API ใหม่เพื่อกำหนดขนาดแกนไขว้ (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 - ตอนนี้ Paragraph และ MultiParagraph ใช้
FontFamily.Resolver
TextLayoutResult.layoutInput.fontFamilyResolver
มี รีโซลเวอร์ที่ใช้สำหรับเลย์เอาต์นี้ ซึ่งเลิกใช้งานแล้วTextLayoutResult.layoutInput.resourceLoader
เนื่องจากไม่ได้ใช้แล้ว (Id5a45, b/174162090)
- เพิ่ม
- เพิ่ม
AndroidFont
ซึ่งเป็น API ระดับต่ำตัวใหม่สำหรับระบุตัวอธิบายทรัพยากรแบบอักษรประเภทใหม่ใน Android เช่น การโหลดแบบอักษรจาก แบ็กเอนด์เฉพาะแอป การค้นหาแบบอักษรที่ติดตั้งไว้ล่วงหน้า ในอุปกรณ์ หรือการโหลดแบบอักษรจากทรัพยากรที่ไม่ได้มาจาก โรงงานแบบอักษรปัจจุบัน- ขยาย
Font.ResourceLoaded
API เพื่อรองรับการโหลดแบบไม่พร้อมกันและแบบไม่บังคับ ของแบบอักษร เราไม่แนะนำให้นักพัฒนาแอปพลิเคชันใช้ 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)
- เพิ่ม
LocalSoftwareKeyboardController
API การเขียนในเครื่อง ใหม่เพื่อแทนที่อินเทอร์เฟซ SoftwareKeyboardController ก่อนหน้าใน TextField (I5951e, b/168778053) - เพิ่ม
LocalSoftwareKeyboardController
API การเขียนในเครื่อง ใหม่เพื่อแทนที่อินเทอร์เฟซ 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
- เพิ่ม Callback 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
แทนที่จะระบุหรือไม่ก็ได้การเปลี่ยนแปลงนี้จะนำข้อผิดพลาดเกี่ยวกับประเภทที่อาจเกิดขึ้นสำหรับประเภทที่ไม่ใช่ Nullable ที่ไม่ได้ระบุ Factory เริ่มต้นออก ก่อนหน้านี้ จะให้การอ้างอิงเป็น 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 แล้ว ซึ่งตอนนี้อนุญาตให้ปรับแต่งภาพเคลื่อนไหวระงับแทนการลดทอนที่กำหนดไว้ล่วงหน้า (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 ไม่ใช่เวอร์ชันทดลองอีกต่อไป
- ระบบได้นำฟังก์ชัน
@TestOnly
clearRoots ระดับบนสุดออกแล้ว ไม่จำเป็นต้องทำอีกต่อไป - ระบบได้นำฟังก์ชัน keySourceInfoOf และ resetSourceInfo ออกแล้ว จึงไม่จำเป็นต้องใช้แล้ว
- มีการนำ Composer.collectKeySourceInformation ออกแล้ว ไม่จำเป็นต้องทำอีกต่อไป
- นำเมธอด isJoinedKey, joinedKeyLeft และ joinedKeyRight ออกแล้ว จึงไม่จำเป็นต้องใช้แล้ว
- เราได้ย้ายและจัดระเบียบ API ระดับบนสุดต่างๆ ไปยังไฟล์อื่น เนื่องจากความหมายของคลาสไฟล์ของ Kotlin การดำเนินการนี้จะทำให้ความเข้ากันได้แบบไบนารีใช้งานไม่ได้ แต่ความเข้ากันได้ของแหล่งที่มาจะยังคงใช้งานได้ ดังนั้นผู้ใช้ส่วนใหญ่จึงไม่น่าจะพบปัญหา
- (I99b7d, b/177245490)
เราได้ปรับปรุง Modifier.scrollable ใหม่ ตอนนี้ใช้ Scrollable interface แทนคลาส 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 แล้ว (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 ได้ หากก่อนหน้านี้คุณส่งออบเจ็กต์ Saver ที่กำหนดเอง ตอนนี้คุณต้องใช้การโอเวอร์โหลดใหม่ของ 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 ได้แล้ว Recomposer ที่ปิดอยู่จะ ทำการ Recomposition ต่อไปจนกว่าโคโรทีนของ Composable ลูกจะเสร็จสมบูรณ์ เปลี่ยนชื่อ 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 แทน คุณจะต้องเพิ่มทรัพยากร Dependency ใน
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
ครั้งเดียวไม่น่าเชื่อถือและถูกนำออกสำหรับRememberObserver
RememberObserver
เพิ่ม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 เหล่านี้ให้ข้อมูลดิบที่ 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)
เพิ่มฟังก์ชัน Factory 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 APIs จากแพ็กเกจ 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 ตามหลักเกณฑ์อื่นๆ ของ Ambients และ 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 หากต้องการใช้ 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 แทนสี่เหลี่ยมผืนผ้าโค้งมน
- แก้ไขการเว้นวรรคในเอกสารประกอบสำหรับพารามิเตอร์ right ใน 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 were flatten to 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 enums เป็น Pascal Case
- เปลี่ยนชื่อการแจงนับ PaintingStyle เป็น Pascal Case
- เปลี่ยนชื่อการแจงนับ PathFillType เป็น Pascal Case
- เปลี่ยนชื่อ Enum StrokeCap ให้เป็น Pascal Case
- อัปเดตการใช้งาน DrawCache เพื่อไม่ให้ ใช้พารามิเตอร์ lateinit อีกต่อไป
- อัปเดต DrawScope เพื่อไม่ให้ใช้การมอบสิทธิ์แบบเลื่อนเวลาอีกต่อไป สำหรับพารามิเตอร์ภายใน fillPaint และ strokePaint
- อัปเดต Image ที่ใช้ร่วมกันได้เพื่อหลีกเลี่ยงการใช้ Box เพื่อลดค่าใช้จ่าย
- อัปเดตคลาส Outline ให้มีคำอธิบายประกอบ @Immutable
- อัปเดต PathNode ให้มีคำอธิบายประกอบ @Immutable สำหรับ คำสั่งเส้นทางแต่ละรายการ
- อัปเดตองค์ประกอบย่อยของเวกเตอร์เพื่อนำการตรวจสอบแบบมีเงื่อนไขที่ซ้ำซ้อนออก สำหรับการตรวจสอบความเท่ากัน เนื่องจาก Compose จัดการการตรวจสอบเหล่านี้อยู่แล้ว
- เลิกใช้งานเมธอดตัวสร้างคู่ของ Rect เพื่อ ใช้ตัวสร้างฟังก์ชันแทน
- อัปเดตคลาส Brush และตัวสร้างฟังก์ชันด้วย @Immutable และ @Stable API
- อัปเดตการแจงนับ VertexMode ให้เป็น PascalCase
- อัปเดตเมธอด selectPaint ของ DrawScope เพื่อเขียนทับพารามิเตอร์การขีดเขียนแบบมีเงื่อนไข ในสีหากมีการเปลี่ยนแปลง
- อัปเดตขนาดเพื่อเพิ่ม 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 ในการแพ็กค่า Float 2 ค่าเพื่อแสดง ความกว้างและความสูงที่แสดงเป็น Float (Ic0191)
- เพื่อรวมจำนวนคลาสที่ใช้เพื่อแสดงข้อมูลการวางตำแหน่ง ให้ใช้คลาส Offset แทน PxPosition ซึ่งจะให้ประโยชน์ ของคลาสอินไลน์เพื่อใช้ประโยชน์จาก Long ในการแพ็กค่า Float 2 ค่าเพื่อแสดงออฟเซ็ต x และ y ที่แสดงเป็น Float (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 แทน ปรับโครงสร้าง การใช้งานสี แปรง และการวาดภาพพื้นหลัง เพื่อลดเส้นทางโค้ด รวมถึงนำข้อกำหนดในการสร้าง 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)แทนที่พารามิเตอร์ focusIdentifier ของ CoreTextField/TextField ด้วย 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 module เพื่อให้อยู่ในโมดูลเดียวกับ 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 มี
enabled
param แยกกันแล้ว มีการเปลี่ยนชื่อหรือจัดเรียงพารามิเตอร์บางรายการในปุ่มใหม่ (I54b5a)เปลี่ยนชื่อ Image เป็น ImageAsset เพื่อให้เห็นความแตกต่างระหว่างข้อมูล Image กับ 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)
ตอนนี้ Scroller จะแสดงลักษณะการทำงานของการปัดแบบเนทีฟของ Android (I922af, b/147493715)
แทนที่ DrawBorder ด้วย Border Modifier (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() อย่างไรก็ตาม คุณสามารถดูทิศทางเลย์เอาต์ได้ภายในโค้ดเรียกกลับผ่านออบเจ็กต์ขอบเขตการวัด (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 เพื่อใช้ พารามิเตอร์รัศมีเดียวแทนค่าลอยตัว 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 ผู้โทรต้องเพิ่ม imports เพื่อใช้
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 got LayoutDirection parameter (I6d6f7)
อัปเดตฟีเจอร์แฟล็ก
ComposeFlags.COMPOSER_PARAM
เป็นtrue
ซึ่งจะเปลี่ยนกลยุทธ์การสร้างโค้ดสำหรับปลั๊กอินการเขียน ในระดับสูง การดำเนินการนี้จะทำให้ฟังก์ชัน @Composable สร้างขึ้นพร้อมกับพารามิเตอร์สังเคราะห์เพิ่มเติม ซึ่งจะส่งผ่านไปยังการเรียก @Composable ที่ตามมาเพื่อให้รันไทม์จัดการการดำเนินการได้อย่างเหมาะสม การเปลี่ยนแปลงนี้เป็นการเปลี่ยนแปลงที่สำคัญในระดับไบนารี แต่ควรคงความเข้ากันได้ในระดับแหล่งที่มาในการใช้งาน Compose ที่ได้รับอนุญาตทั้งหมด (I7971c)เปลี่ยน LayoutCoordinates เพื่อให้ providedAlignmentLines เป็น Set แทนที่จะเป็น Map และให้ LayoutCoordinates ใช้โอเปอเรเตอร์ get() แทนเพื่อดึงค่า ซึ่งจะช่วยให้ผู้แก้ไขแก้ไขค่าอย่างน้อย 1 ค่าของชุดได้ง่ายขึ้นโดยไม่ต้องสร้างคอลเล็กชันใหม่สำหรับผู้แก้ไขแต่ละราย (I0245a)
LayoutCoordinates ไม่มีพร็อพเพอร์ตี้ตำแหน่งอีกต่อไป พร็อพเพอร์ตี้ position จะไม่มีผลเมื่อพิจารณา LayoutModifiers, rotation หรือการปรับขนาด นักพัฒนาแอปควรใช้ parentCoordinates และ childToLocal() เพื่อคำนวณการเปลี่ยนจาก 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 ที่คุณใช้กับ UI ของ Compose ควรขยาย androidx.activity.ComponentActivity (หรือ AppCompatActivity) ระบบได้เลิกใช้งาน setContent ใน android.app.Activity แล้ว (Idb25a, b/153141084)
แทนที่ชื่อแพ็กเกจ ui-android-text (androidx.text) ด้วย androidx.ui.text.platform เพื่อให้สอดคล้องกับนโยบาย androidx (I42711)