เขียน 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 ทั้งหมด)
อัปเดตล่าสุด | รุ่นที่เสถียร | รุ่นที่อาจได้รับการเผยแพร่ | รุ่นเบต้า | เวอร์ชันอัลฟ่า |
---|---|---|---|---|
11 ธันวาคม 2024 | 1.7.6 | - | - | 1.8.0-alpha07 |
โครงสร้าง
คอมโพซคือชุดค่าผสมของรหัสกลุ่ม 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 | องค์ประกอบพื้นฐานของ UI การเขียนที่จำเป็นต่อการโต้ตอบกับอุปกรณ์ ซึ่งรวมถึงเลย์เอาต์ ภาพวาด และอินพุต |
การประกาศทรัพยากร Dependency
หากต้องการเพิ่มทรัพยากร Dependency ใน Compose คุณต้องเพิ่มที่เก็บ Maven ของ Google ลงในโปรเจ็กต์ อ่านข้อมูลเพิ่มเติมในที่เก็บ Maven ของ Google
เพิ่มการอ้างอิงสำหรับอาร์ติแฟกต์ที่ต้องการในไฟล์ build.gradle
สำหรับแอปหรือโมดูล
Groovy
dependencies { implementation "androidx.compose.foundation:foundation:1.7.5" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.foundation:foundation:1.7.5") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
ดูข้อมูลเพิ่มเติมเกี่ยวกับการพึ่งพาได้ที่เพิ่มการพึ่งพิงบิวด์
ความคิดเห็น
ความคิดเห็นของคุณช่วยปรับปรุง Jetpack ได้ โปรดแจ้งให้เราทราบหากพบปัญหาใหม่หรือมีแนวคิดในการปรับปรุงคลังนี้ โปรดดูปัญหาที่มีอยู่ในคลังนี้ก่อนสร้างปัญหาใหม่ คุณสามารถเพิ่มการโหวตให้กับปัญหาที่มีอยู่ได้โดยคลิกปุ่มดาว
ดูข้อมูลเพิ่มเติมในเอกสารประกอบของเครื่องมือติดตามปัญหา
เวอร์ชัน 1.8
เวอร์ชัน 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)
- เพิ่ม
OverscrollEffect#withoutDrawing
และOverscrollEffect#withoutEventHandling
API - API เหล่านี้จะสร้างอินสแตนซ์ที่รวมไว้ของเอฟเฟกต์การเลื่อนผ่านขอบที่ระบุซึ่งไม่วาด / จัดการเหตุการณ์ตามลำดับ ซึ่งช่วยให้สามารถแสดงผลของการเลื่อนผ่านขอบในคอมโพเนนต์แยกต่างหากจากคอมโพเนนต์ที่ส่งเหตุการณ์ เช่น การปิดใช้การวาดการเลื่อนผ่านรายการแบบ Lazy จากนั้นก็วาดการเลื่อนผ่านแยกต่างหากที่ด้านบน / ที่อื่น (Idbb3d, b/266550551, b/204650733, b/255554340, b/229537244) - การเพิ่มการรองรับการป้อนข้อความอัตโนมัติในแถบเครื่องมือข้อความ (Ie6a4c)
- เลิกใช้งาน
OverscrollConfiguration
และLocalOverscrollConfiguration
และเพิ่มrememberPlatformOverscrollFactory
เพื่อสร้างอินสแตนซ์ของ / ปรับแต่งพารามิเตอร์ของการใช้งานการเลื่อนผ่านหน้าจอโดยอัตโนมัติเริ่มต้น หากต้องการปิดใช้การเลื่อนเกิน ให้ใช้LocalOverscrollFactory provides null
แทนLocalOverscrollConfiguration provides null
หากต้องการเปลี่ยนสีเรืองแสง / ระยะห่างจากขอบ ให้ใช้LocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding)
แทนLocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding)
(Ie71f9, b/255554340, b/234451516) - เปลี่ยนพร็อพเพอร์ตี้
effectModifier
ในOverscrollEffect
เป็นnode: DelegatableNode
เพื่อให้สอดคล้องกับ API อื่นๆ (Ic0b46, b/255554340) - นํา
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
) ไปยังคอมโพสิชันข้อความที่ชื่นชอบ (เช่นBasicText
) แล้วดูว่าขนาดข้อความปรับตามพื้นที่ว่างที่มีอยู่ (Ice7e0, b/139320827) - เพิ่ม
OverscrollFactory
และLocalOverscrollFactory
API เพื่ออนุญาตให้กําหนดค่าการเลื่อนผ่านภายในลําดับชั้น ระบบจะใช้ค่าที่ระบุผ่านLocalOverscrollFactory
เพื่อสร้างOverscrollEffect
โดยค่าเริ่มต้น หากต้องการสร้างและจดจำเอฟเฟกต์จากโรงงานปัจจุบันที่ระบุ ให้ใช้rememberOverscrollEffect()
(I51ca4, b/255554340)
การเปลี่ยนแปลง API
- แนะนำ
CompositionLocal
ที่สามารถใช้เพื่อแก้ไขสีของไฮไลต์การป้อนข้อมูลสำเร็จของการป้อนข้อความอัตโนมัติ (I32092) - นำ
ScrollableDefaults.overscrollEffect
ออกแล้ว คุณควรใช้rememberOverscrollEffect
แทน ซึ่งจะสร้างอินสแตนซ์ของการใช้งานการเลื่อนผ่านหน้าจอที่มากเกินไปในปัจจุบันซึ่งมาพร้อมกับLocalOverscrollFactory
(I1651a, b/255554340),(b/234451516) - เปิดตัวอินเทอร์เฟซ
AutofillManager
ใหม่ที่ใช้เพื่อปรับแต่งเส้นทางการป้อนข้อความอัตโนมัติของผู้ใช้ และ FlagisSemanticAutofillEnabled
เพื่อเปิดฟีเจอร์ป้อนข้อความอัตโนมัติเวอร์ชันใหม่นี้ (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
พร้อมความเร็วที่เหลืออย่างถูกต้อง นอกจากนี้ เรายังเปิดตัว FlagNewNestedScrollFlingDispatchingEnabled
เพื่อควบคุมลักษณะการทํางานในกรณีที่เกิดการทำงานซ้ำ ระบบจะนำการแจ้งว่าไม่เหมาะสมออกก่อนการเปิดตัวเวอร์ชันเบต้า (I05c37, b/371168883) - แก้ไขข้อบกพร่องที่
OverscrollEffects
ที่ส่งไปยังModifier.anchoredDraggable
จะได้รับค่า Delta แบบ 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) - เปิดตัวบทบาทเชิงความหมายใหม่ที่เรียกว่าภาพสไลด์เพื่อจําลองลักษณะการทํางานของรายการในโปรแกรมเลื่อนหน้าสำหรับบริการการช่วยเหลือพิเศษ (Id354b, b/354109776, b/239672673)
- นำตัวแก้ไข
graphicsLayer
ที่ไม่ชัดแจ้งออกจากคอมโพสิชันBasicText
เพิ่ม FlagComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabled
เวอร์ชันทดลองเพื่อให้เปลี่ยนกลับไปใช้ลักษณะการทำงานแบบเก่าได้ (Ie478d) - เพิ่ม
Modifier.recalculateWindowInsets()
เพื่ออนุญาตให้รายการย่อยในลําดับชั้นใช้insetsPadding
ได้แม้ว่ารายการหลักจะจัดแนวรายการย่อยโดยไม่มีconsumeWindowInsets()
ก็ตาม (I7f9e4)
การแก้ไขข้อบกพร่อง
- ใช้การเริ่มการโต้ตอบด้วยท่าทางสัมผัสใน
detectDragGestures
, รายการที่ลากได้ และรายการที่เลื่อนได้ ตอนนี้หากรายการที่ลากได้ของบุตรหลานยกเลิกการใช้ท่าทางสัมผัส ผู้ปกครองก็มีโอกาสที่จะใช้ท่าทางสัมผัสนั้น ซึ่งช่วยให้การจัดการท่าทางสัมผัสเป็นไปอย่างต่อเนื่องและผสานรวมมากขึ้น (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.6
11 ธันวาคม 2024
androidx.compose.foundation:foundation-*:1.7.6
ได้รับการปล่อยแล้ว เวอร์ชัน 1.7.6 มีการคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขเนื้อหาในบรรทัดของข้อความที่บริการการช่วยเหลือพิเศษมองไม่เห็น
- แก้ไขปัญหาที่
AndroidEmbeddedExternalSurface
รีเซ็ตไม่ถูกต้องและค้างเมื่อนํามาใช้ซ้ำในรายการแบบ Lazy
เวอร์ชัน 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) - รองรับภาพหน้าจอแบบยาวในคอนเทนเนอร์การเลื่อนของเครื่องมือเขียนแบบเวอร์ชันทดลองโดยใช้ 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
ที่ฝังไว้ เช่นเดียวกับLazyListPrefetchStrategy
ค่าเริ่มต้นของการใช้งานคือการโหลดรายการที่ฝังไว้ 2 รายการแรกของแต่ละตารางกริดล่วงหน้า แต่สามารถกําหนดค่าได้ด้วยLazyGridPrefetchStrategy(nestedPrefetchItemCount)
และLazyListPrefetchStrategy#onNestedPrefetch
API ใหม่ (I591c4) - เปลี่ยนชื่อ
SemanticsProperties.Editable
เป็นIsEditable
และเปลี่ยนSemanticsPropertyReceiver.editable
เป็น valisEditable
ตอนนี้พร็อพเพอร์ตี้เป็นบูลีนและระบุด้วยช่องข้อความเสมอ (I8acd8) - ย้ายค่าเริ่มต้น
basicMarquee
ไปยังออบเจ็กต์MarqueeDefaults
แล้ว (I12ff6) - เปลี่ยนชื่อพารามิเตอร์
basicMarquee
delayMillis
เป็นrepeatDelayMillis
(I12ff6) - อัปเดต API สำหรับการจัดรูปแบบลิงก์: ย้าย
TextLinkStyles
ไปยังTextStyle
และนำTextDefaults
ออกจากวัสดุ (I5477b)
การแก้ไขข้อบกพร่อง
- เปลี่ยนชื่อ
LayoutCoordinates.introducesFrameOfReference
เป็นLayoutCoordinates.introducesMotionFrameOfReference
เพื่อให้สอดคล้องกับวัตถุประสงค์มากขึ้น เปลี่ยนชื่อฟังก์ชันที่เกี่ยวข้องเพื่อคำนวณพิกัดตาม Flag นั้น (I3a330) - นำ "ค่าเริ่มต้น" ออกจากพร็อพเพอร์ตี้
MarqueeDefaults
แล้ว (I1d8a0) - นำ "Marquee" ออกจากพร็อพเพอร์ตี้
MarqueeDefaults
แล้ว (Iad4f4) - นำ
TextLinkStyles
ออกจากชั้นเรียนTextStyle
แล้ว แต่TextLinkStyles
เป็นส่วนหนึ่งของตัวสร้างLinkAnntation
และเมธอดAnnotatedString.fromHtml
(I90b2b) - แก้ไขข้อบกพร่องที่ตัวเลื่อนจะหยุดกะทันหันเมื่อเลื่อนไปยังขอบเขตขณะที่อยู่ที่ขอบเขตแล้ว (I9f373, b/339171222)
- ตอนนี้ BTF2 มีท่าทางสัมผัสการเลือกด้วยเมาส์ที่ถูกต้องแล้ว (Ibe8c6)
การมีส่วนร่วมจากภายนอก
- ส่ง "ทําให้ประเภทเนื้อหาของคํานวณเวลาเขียน/วัดตามการเรียกข้อมูลล่วงหน้าเพื่อปรับปรุงความแม่นยำ" อีกครั้ง (Iea622)
- กำหนดการคำนวณเวลาเขียน/วัดผลตามประเภทเนื้อหาใน prefetch เพื่อปรับปรุงความแม่นยำ (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
จะเปลี่ยนค่า Delta ของการลากโดยค่าเริ่มต้นสำหรับคอมโพเนนต์ที่มีการวางแนวนอนเมื่อใช้ในเลย์เอาต์ RTL (I3c6d9) AnnotatedString.hasEqualsAnnotations
เปลี่ยนชื่อเป็นhasEqualAnnotations
แล้ว (I685c0)- อัปเดต API สำหรับการรับลิงก์ธีม Material ในข้อความ กล่าวโดยละเอียดคือ นําเมธอดออกจาก
TextDefaults
เพื่อสร้างLinkAnnotations
ตามธีม และแยกวิเคราะห์ HTML ด้วยลิงก์ตามธีม แต่เพิ่มคลาสTextLinkStyles
ที่อนุญาตให้จัดรูปแบบลิงก์เป็นพารามิเตอร์ไปยังคอมโพสิชันข้อความแทน (I31b93) - แทนที่
onDragStarted
และonDragStopped
ด้วยคอลแบ็กแบบไม่ระงับ (I59de8)
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องที่ทำให้ Pager ขัดข้องเมื่อ
contentPadding
ใหญ่กว่าข้อจำกัดขาเข้า ตอนนี้ตัวแบ่งหน้าจะบังคับค่าลบที่แสดงผลจาก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 Council (Ibc74a) - เปลี่ยนชื่อ API การมอบสิทธิ์การเขียนด้วยลายมือโดยใช้สไตลัส (Ica45f, b/327271923)
- เปลี่ยนชื่อ
TextInclusionStrategy.isInside
เป็นisIncluded
ทำให้ประเภทผลลัพธ์ของParagraph/MultiParagraph#getRangeForRect()
เป็นประเภทที่ไม่ใช่ Null (I51f26)
การแก้ไขข้อบกพร่อง
- เพิ่ม "เลือกทั้งหมด" ลงในเมนูตามบริบทของข้อความทั้งหมดใน
SelectionContainer
(Ib750e, b/240143283) - แก้ไขการจับภาพหน้าจอแบบยาวสำหรับคอนเทนเนอร์ที่เลื่อนด้วย
reverseScrolling=true
(I7c59c) - แก้ไขปัญหาที่
currentValue
ของAnchoredDraggableState
จะเปลี่ยนแปลงเมื่อเข้าใกล้ขอบเขตของรัฐ (Iea30b, b/333846848)
การมีส่วนร่วมจากภายนอก
- เปลี่ยนชื่อจาก
PrefetchExecutor
เป็นPrefetchScheduler
เพื่อให้สอดคล้องกับความรับผิดชอบมากขึ้น (Ib9154) - เพิ่มการรองรับการเรียกข้อมูลรายการล่วงหน้าใน
LazyLists
ที่ฝังอยู่ (เช่นLazyColumn
ที่แสดงผลLazyRows
ที่ฝังอยู่) การเปลี่ยนแปลงนี้คาดว่าจะช่วยลดเฟรมที่ลดลงขณะเลื่อนดูLazyLists
เหล่านี้ ค่าเริ่มต้นของการใช้งานคือการโหลดรายการที่ฝังไว้ 2 รายการแรกล่วงหน้า แต่คุณควบคุมลักษณะการทํางานนี้ได้ด้วยLazyLayoutPrefetchStrategy(nestedPrefetchItemCount)
และLazyListPrefetchStrategy#onNestedPrefetch
API ใหม่ (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
ใน Pager ตอนนี้สําหรับการวัดผลแต่ละครั้ง ลูกค้าสามารถเลือกไม่ใช้การบำรุงรักษาดัชนีตามคีย์ได้โดยเรียกใช้requestScrollToPage
ซึ่งจะไม่เปลี่ยนแปลงลักษณะการทำงานที่มีอยู่ เว้นแต่จะมีการเรียกใช้requestScrollToPage
(Ic4213) - เปิดตัว
requestScrollToItem
สำหรับLazyGrids
ตอนนี้สําหรับการวัดผลแต่ละครั้ง ลูกค้าสามารถเลือกไม่ใช้การบำรุงรักษาดัชนีตามคีย์ได้โดยเรียกใช้requestScrollToItem
ซึ่งจะไม่เปลี่ยนแปลงลักษณะการทำงานที่มีอยู่ เว้นแต่จะมีการเรียกใช้requestScrollToItem
(I0a7a0) - มีการทำเครื่องหมาย
ClickableText
ว่าเลิกใช้งานแล้ว หากต้องการเพิ่มลิงก์ลงในข้อความ ให้สร้างAnnotatedString
ที่มีLinkAnnotation
สอดคล้องกับลิงก์ของคุณ แล้วส่งAnnotatedString
นี้ไปยังคอมโพสิชันText
(I34d4b, b/323346994) UrlAnnotation
เลิกใช้งานแล้ว ให้ใช้LinkAnnotation.Url
แทน หากคุณใช้ธีม Material ให้ใช้ออบเจ็กต์TextDefaults
เพื่อสร้างคำอธิบายประกอบที่มีการใช้ธีม Material (I8d180, b/323346545)- เปลี่ยนชื่อ
String.parseAsHtml
เป็นAnnotatedString.Companion.fromHtml
(I43dcd) - เพิ่มอาร์กิวเมนต์การจัดสไตล์ (
linkStyle
,focusedLinkStyle
,hoveredLinkStyle
) และโปรแกรมรับฟังการโต้ตอบกับลิงก์ลงในเมธอดparseAsHtml
เมื่อแยกวิเคราะห์สตริงที่ติดแท็ก HTML ด้วยแท็ก<a>
วิธีการนี้จะสร้างLinkAnnotation.Url
สําหรับแท็กแต่ละรายการดังกล่าว และส่งออบเจ็กต์การจัดสไตล์และผู้ฟังการโต้ตอบกับลิงก์ไปยังคําอธิบายประกอบแต่ละรายการ (I7c977) - ตอนนี้
LinkAnnotation
ใช้อาร์กิวเมนต์การจัดสไตล์ตามสถานะและLinkInteractionListener
เพิ่มคำอธิบายประกอบนี้ลงในAnnotatedString
เพื่อรับไฮเปอร์ลิงก์ การส่งfocusedState
และ/หรือhoveredState
จะช่วยให้คุณกำหนดการกำหนดค่าภาพสำหรับลิงก์ได้เมื่อโฟกัสและ/หรือวางเมาส์เหนือลิงก์ (I81ce4, b/139312671) - นำ Flag ฟีเจอร์สําหรับภาพหน้าจอแบบยาวออกแล้ว (I28648, b/329128246)
- ตอนนี้
LazyColumn
จะแสดงผลส่วนหัวที่ติดแน่นอย่างถูกต้องในภาพหน้าจอแบบยาว (I8d239, b/329296635) - ปรับปรุง API ทดลองที่เหลือส่วนใหญ่ซึ่งเปิดตัวพร้อมกับ
BasicTextField
เวอร์ชันใหม่ให้ทำงานได้อย่างเสถียร (I714e2) - เพิ่มพารามิเตอร์
textObfuscationCharacter
ลงในBasicSecureTextField
ซึ่งควบคุมอักขระที่จะใช้ขณะสร้างความสับสนให้กับเนื้อหา (I0588b) - เราจะแทนที่แหล่งที่มา
NestedScroll
Drag และ Fling ด้วยUserInput
และSideEffect
เพื่อรองรับคำจำกัดความที่ขยายออกไปของแหล่งที่มาเหล่านี้ ซึ่งตอนนี้รวมภาพเคลื่อนไหว (ผลข้างเคียง) และแป้นพิมพ์และเมาส์ (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
ของInputTransformations
กับnext
อย่างเหมาะสมตามตัวเลือกแต่ละรายการโดยใช้วิธีการKeyboardOptions.merge
ใหม่ (Ie5304, b/295951492) - ตอนนี้
targetValue
ของAnchoredDraggableState
ไม่พิจารณาเกณฑ์ตำแหน่งอีกต่อไป ตอนนี้มีเกณฑ์โดยนัยที่ 50% ซึ่งหมายความว่าtargetValue
จะเปลี่ยนแปลงที่จุดกึ่งกลางระหว่างจุดยึด 2 จุด (I82c2c)
การมีส่วนร่วมจากภายนอก
- เปลี่ยนชื่อ 2 scroll API (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) - รองรับภาพหน้าจอแบบยาวในคอนเทนเนอร์การเลื่อนของเครื่องมือเขียนโดยใช้ Android API อย่างเป็นทางการ (
ScrollCaptureCallback
) ฟีเจอร์นี้อยู่ในขั้นทดลองและอาจจัดการกับบางกรณีอย่างไม่ถูกต้องในขณะนี้ ด้วยเหตุนี้ ระบบจึงปิดใช้ฟีเจอร์นี้โดยค่าเริ่มต้น หากต้องการเลือกใช้ ให้ตั้งค่า FlagComposeFeatureFlag_LongScreenshotsEnabled
เป็น "จริง" เราจะนำการแจ้งว่า "ไม่รองรับ" นี้ออกก่อนเวอร์ชันเบต้า 1.7 (I2b055, b/329296471) - เปิดตัว
GraphicsLayer
API ใหม่เพื่อเพิ่มความยืดหยุ่นในตำแหน่งและการแสดงผลของอินสแตนซ์GraphicsLayer
และรองรับฟีเจอร์การแสดงผลโดยเนื้อแท้โดยไม่ต้องประสานงานกับการใช้งาน Composable เพื่อระบุอินสแตนซ์ตัวแก้ไขGraphicsLayer
การเปลี่ยนแปลง API
- ตอนนี้พารามิเตอร์
KeyboardOptions
ทั้งหมดมีค่าที่ไม่ระบุโดยค่าเริ่มต้น เพิ่มวิธีการKeyboardOptions.merge
แล้ว - เปลี่ยนชื่อ
KeyboardOptions.autoCorrect
เป็นautoCorrectEnabled
และกำหนดให้มีค่า Null ได้ ซึ่ง Null หมายถึงไม่มีการระบุค่า (Ia8ba0, b/295951492) - เปลี่ยนชื่อ
outOfBoundsPageCount
เป็นbeyondViewportPageCount
แล้ว (I129c6) - เปลี่ยน
fun ClipEntry.getMetadata()
เป็นval ClipEntry.clipMetadata
แล้ว (I50155) - นำ
TextFieldState.valueAsFlow()
ออกแล้ว แนะนำให้ใช้snapshotFlow { state.text }
หรือsnapshotFlow { TextFieldCharSequence(state.text, state.selection) }
(I7d629) - จัดระเบียบพารามิเตอร์
InputTransformation.transformInput
ใหม่ นำoriginalValue: TextFieldCharSequence
ออกแล้ว แต่ตอนนี้TextFieldBuffer
มีค่านี้โดยใช้ชื่อเดียวกัน และนําพารามิเตอร์valueWithChanges: TextFieldBuffer
ออกด้วยTextFieldBuffer
จะเป็นขอบเขตผู้รับของฟังก์ชัน (I919cc) - ตอนนี้ตัวแปร
BasicTextField(state)
และBasicSecureTextField
ใช้KeyboardActionHandler
แทนKeyboardActions
เพื่อประมวลผลการดำเนินการที่แป้นพิมพ์ซอฟต์แวร์ดำเนินการ (I58dda) - API การมอบสิทธิ์การเขียนด้วยลายมือโดยใช้สไตลัสเพื่อรองรับการเขียนด้วยลายมือโดยใช้สไตลัสในช่องป้อนข้อความ "จำลอง" (I9c09c, b/327271923)
- เปลี่ยนชื่อ
KeyboardOptions.shouldShowKeyboardOnFocus
เป็นshowKeyboardOnFocus
แล้ว (Ib4b7a, b/295951492) - นําพารามิเตอร์
hintMediaTypes
ออกจากModifier.contentReceiver
แล้ว เราขอแนะนำให้นักพัฒนาแอปตรวจสอบประเภทสื่อของTransferableContent
ที่ได้รับ เนื่องจากอาจใช้ร่วมกับhintMediaTypes
ที่กําหนดค่าไว้ไม่ได้ (I82f99) - จัดเรียงพารามิเตอร์ของ
BasicSecureTextField
ใหม่ นําพารามิเตอร์keyboardType
และimeAction
ออกเพื่อใช้คลาสKeyboardOptions
แบบเต็มแทน ขณะเดียวกันก็คงค่าเริ่มต้นเดิมไว้สําหรับBasicSecureTextField
และนําพารามิเตอร์scrollState
ออกด้วย (Ibbfa9) - เปลี่ยนประเภทของ
TextFieldState.text
จากTextFieldCharSequence
เป็นCharSequence
ดังนั้นจึงเพิ่มTextFieldState.selection: TextRange
และTextFieldState.composition: TextRange?
เพื่ออ่านค่าการเลือกและค่าองค์ประกอบปัจจุบันจากออบเจ็กต์สถานะโดยตรง - นำ
TextFieldState.forEachTextValue
ออกแล้ว (Idb2a2) - นำฟังก์ชัน
ClipboardManager.getClipMetadata
และClipboardManager.hasClip
ออก โปรดใช้clipEntry.getMetadata()
เพื่ออ่านข้อมูลเมตาของรายการคลิปปัจจุบัน นอกจากนี้ ให้ตรวจสอบผลลัพธ์ของClipboardManager.getClip
ว่ามีค่าว่างหรือไม่เพื่อดูว่าคลิปบอร์ดมีคลิปปัจจุบันหรือไม่ (I50498) - ตอนนี้
ClipboardManager.setClip
ยอมรับค่า Null เพื่อล้างคลิปบอร์ดได้แล้ว (I7d2e9) ReceiveContentListener
ได้รับการแปลงเป็นอินเทอร์เฟซฟังก์ชัน นอกจากนี้ ระบบจะนำModifier.receiveContent
แบบโอเวอร์โหลดที่รับ LAMBDA ออกด้วย เนื่องจากตอนนี้ReceiveContentListener
เป็นอินเทอร์เฟซฟังก์ชันแล้ว- เปลี่ยนชื่อ
Modifier.receiveContent
เป็นModifier.contentReceiver
(I1e6af) - เปลี่ยนชื่อ
TransferableContent.consumeEach
เป็นTransferableContent.consume
แล้ว (I1e462) rememberTextFieldState
เปลี่ยนเป็น API ที่เสถียรแล้ว (I37999)
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องที่ตัวแปร
BasicTextField(state)
ไม่ทำงานกับแป้นพิมพ์ CJK(ตามการประสมคำ) (I54425) - แก้ไขข้อบกพร่องที่
Modifier.dragAndDropTarget()
อาจอ้างอิงข้อมูลเก่าในบางสถานการณ์ที่มีการใช้Modifier.Node
ซ้ำ (I05bb1) - เปลี่ยนการเปลี่ยนแปลงสัญญาล่าสุดที่การเรียก
AnchoredDraggableState#anchoredDrag
จะหยุดลงเมื่อสิ้นสุดการดำเนินการanchoredDrag
(I95715)
เวอร์ชัน 1.7.0-alpha05
20 มีนาคม 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha05
ได้รับการปล่อยแล้ว เวอร์ชัน 1.7.0-alpha05 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- นำองค์ประกอบ
LocalTextLinkStyle
เวอร์ชันทดลองในเครื่องออกสำหรับการจัดสไตล์ไฮเปอร์ลิงก์ (Iebfa7) - นำการลบล้าง
BasicText
ด้วยอาร์กิวเมนต์onLinkClicked
เวอร์ชันทดลองออกแล้ว เราจะเปิดตัว API ที่จะมาแทนที่สำหรับการรองรับไฮเปอร์ลิงก์ในอนาคต (I107d5) - นำเมธอดและพร็อพเพอร์ตี้ที่เกี่ยวข้องกับโค้ดพอยต์ในส่วน
TextFieldState
และTextFieldBuffer
ออก รวมถึงนำส่วนต่อท้ายinChars
ออกจาก API ที่เหลือที่เกี่ยวข้องกับการเลือกและการจัดองค์ประกอบ (Ief7ce) - ตอนนี้
currentValue
ของAnchoredDraggable
จะอัปเดตเมื่อผ่านจุดยึด ใช้settledValue
เพื่อรับความหมายของcurrentValue
ก่อนหน้า โดยจะอัปเดตเฉพาะเมื่อหยุดอยู่ที่จุดยึด ตอนนี้ความคืบหน้าจะแสดงเป็นฟังก์ชัน (ต้องใช้จุดเริ่มต้นและจุดสิ้นสุด) แทนที่จะเป็นพร็อพเพอร์ตี้ (Ibe6e8, b/318707189, b/298271489, b/294991954) BasicTextField(state)
,TextFieldState
,InputTransformation
,OutputTransformation
,TextFieldLineLimits
,TextFieldDecorator
ได้รับการอัปเกรดเป็นเวอร์ชันเสถียร (I9582b)- เปิดตัว
InterceptPlatformTextInput
เพื่อช่วยเขียนการทดสอบระดับต่ำที่เกี่ยวข้องกับ IME และ Use Case อื่นๆ ระดับต่ำของ IMEPlatformTextInputTestOverride
เลิกใช้งานแล้ว (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
การดำเนินการตามความหมายเพื่อให้ส่งข้อมูลเกี่ยวกับคอมโพเนนต์ที่เลื่อนในคอมโพสิทไปยังระบบ a11y ได้ CL นี้ยังมีผลกับการใช้พร็อพเพอร์ตี้ดังกล่าวในรายการที่เลื่อนได้ของ Foundation ด้วย (Ic5fa2) - เปลี่ยนชื่อ
BasicTextField2
เป็นBasicTextField
(Ie5713) FocusRequester.createRefs
ทำงานได้อย่างเสถียรแล้ว (I4d92c, b/261436820)- เปิดตัว
DelegatableNode.scrollIntoView()
เพื่ออนุญาตให้โหนดตัวแก้ไขส่งคําขอscrollIntoView
โดยตรง (I2b3b7, b/299939840) - เปิดตัว
DelegatableNode.requireView()
เพื่ออนุญาตให้โหนดตัวแก้ไขรับView
ของ Android ปัจจุบันโดยไม่ต้องอ่านคอมโพสิชันในเครื่อง (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()
เป็นวิธีรับLayoutCoordinates
ปัจจุบันของModifier.Node
โดยไม่ต้องลบล้างonPlaced
และจัดเก็บพิกัดในพร็อพเพอร์ตี้ด้วยตนเอง (Ia8657) - เปิดตัว
DelegatableNode.currentLayoutCoordinates
เป็นวิธีรับLayoutCoordinates
ปัจจุบันของModifier.Node
โดยไม่ต้องลบล้างonPlaced
และจัดเก็บพิกัดในพร็อพเพอร์ตี้ด้วยตนเอง (Iaebaa) - การเพิ่มประสิทธิภาพใน
DraggableAnchors
ที่AnchoredDraggable
ใช้ (I89cff) - ย้าย
BasicTextField2
และ API ที่เกี่ยวข้องในแพ็กเกจandroidx.compose.foundation.text2
ไปยังandroidx.compose.foundation.text
(I9f635) BasicTextField2
ไม่ยอมรับพารามิเตอร์CodepointTransformation
อีกต่อไป ใช้BasicSecureTextField
หรือOutputTransformation
(Id34ff)- เพิ่มวิธีการเปรียบเทียบเฉพาะคำอธิบายประกอบของ
AnnotatedStrings
2 รายการ (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
composition local ที่ให้คุณเปลี่ยนสไตล์ของลิงก์ในข้อความในแอปได้ หากคุณใช้ธีมของคุณเองในแอป คุณควรตั้งค่า composition local นี้ตามธีมของคุณ เมื่อใช้ธีม Material ระบบจะตั้งค่าสีของลิงก์เป็นสีหลักของ Material โดยค่าเริ่มต้น (I7eb10) - เปิดตัวตัวแก้ไข
receiveContent
ที่ให้นักพัฒนาแอปมีวิธีรับเนื้อหาแบบริชมีเดียใน Jetpack Compose receiveContent
ผสานรวมกับBasicTextField2
เพื่อยอมรับเนื้อหาแบบริชมีเดียที่แป้นพิมพ์ซอฟต์แวร์ให้ หรือผ่านการดำเนินการวางคลิปบอร์ด (I81b72)- ในการเปลี่ยนแปลงนี้ เราจะแทนที่
SnapFlingBehavior
ด้วยTargetedFlingBehavior
ในโปรแกรมเลื่อนหน้าเพื่อปลดล็อกกรณีการใช้งานอื่นๆ และเพิ่มความยืดหยุ่นมากขึ้น (I762ea) - การเปลี่ยนแปลงนี้จะทำให้ Snapping API เป็นเวอร์ชันเสถียร นอกจากนี้ เรายังล้างโค้ดการทดสอบบางส่วนและเพิ่มตัวอย่างไปยังการจับคู่ด้วย (Id8da9)
- แนะนำ
TargetedFlingBehavior
ซึ่งเป็นFlingBehavior
ที่อนุญาตให้เผยแพร่ข้อมูลเกี่ยวกับสถานะของภาพเคลื่อนไหวที่กำลังดำเนินอยู่และระยะเลื่อนเป้าหมาย (I6a207)
การแก้ไขข้อบกพร่อง
- ตอนนี้
BasicTextField2
จะแสดงเคอร์เซอร์ขณะพิมพ์ต่อไปแม้ว่าจะเลื่อนออกไปนอกมุมมองหรือจะเลื่อนออกไปนอกมุมมองเนื่องจากอินพุต (Ieb856, b/237190748)
การมีส่วนร่วมจากภายนอก
- เพิ่ม API เวอร์ชันทดลองสําหรับการกําหนดค่าลักษณะการโหลดล่วงหน้าของ LazyList (I022a4)
เวอร์ชัน 1.7.0-alpha01
24 มกราคม 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha01
ได้รับการปล่อยแล้ว เวอร์ชัน 1.7.0-alpha01 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เพิ่ม
Indication API
ใหม่IndicationNodeFactory
ซึ่งส่งผลให้การติดตั้งใช้งานIndication
มีประสิทธิภาพมากขึ้นเมื่อเทียบกับrememberUpdatedInstance
API เวอร์ชันเก่า (ซึ่งเลิกใช้งานแล้ว) ดูข้อมูลการย้ายข้อมูลได้ที่ 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
เพื่อยอมรับเนื้อหาแบบริชมีเดียที่แป้นพิมพ์ซอฟต์แวร์ให้ หรือผ่านการวางจากคลิปบอร์ด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
เพื่อให้เพิ่มคอมโพเนนต์ที่ขับเคลื่อนโดยแพลตฟอร์มในคอมโพเซอร์ได้ง่ายขึ้น - การเปลี่ยนแปลงและการปรับปรุง 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 เพื่อเลือกใช้เซสชันการลากและวาง ตอนนี้มีฟังก์ชันเริ่มต้น 2 รายการสําหรับDragAndDropModifierNode
1 รายการสำหรับรับการโอนและอีก 1 รายการสำหรับการโอนข้อมูล (I69481) - อัปเดต
maximumFlingVelocity
ให้แสดงเป็น Float อัปเดตเอกสารประกอบให้ชัดเจนยิ่งขึ้นเกี่ยวกับmaximumFlingVelocity
unity (I8adc7) onDragAndDropStart
ในDragAndDropModifierNode
factory เปลี่ยนชื่อเป็นacceptDragAndDropTransfer
แล้วเพิ่ม
acceptsDragAndDropTransfer
ลงในdragAndDropTarget
Modifier
เพื่อยอมรับจากเซสชันการลากและวางแล้ว Lambda นี้จะแสดงผลDragAndDropTarget
ที่ใช้งานได้หากสนใจเซสชันการลากและวาง เราได้แทนที่ Lambda อื่นๆ สําหรับการประมวลผลเหตุการณ์การลากด้วย Lambda นี้เพิ่มฟังก์ชัน
DragAndDropTarget
ของโรงงานเพื่อรับจากเซสชันการลากและวาง (Iebf3a)การแสดง
startDragImmediately
ในAnchoredDraggable
จะให้การควบคุมในการตรวจจับท่าทางลากเมื่อใช้ ซึ่งมีประโยชน์เมื่อวิดเจ็ตแสดงภาพเคลื่อนไหวไปยังจุดยึดเป้าหมาย ดูตัวอย่าง (Ie6d13, b/285139987)ตอนนี้ Foundation Tooltip API เป็น
@ExperimentalFoundationApi
(I30b0b) แล้วนำ
DragAndDropInfo
ออกเนื่องจากตอนนี้DragAndDropModifierNode.drag
จะใช้พารามิเตอร์สำหรับtransferData
, ขนาดการตกแต่ง และการตกแต่งแบบลากDrawScope
lambdaDragAndDropTarget
มีเมธอดสําหรับเหตุการณ์การลากและวางที่เฉพาะเจาะจงแทนที่จะเป็นเมธอดนามธรรมเดียวonDragAndDropEvent
ในฟังก์ชันแฟกทอรีสําหรับDragAndDropModifierNode
ได้เปลี่ยนชื่อเป็นonDragAndDropStart
เพื่อสื่อให้เข้าใจได้ดีขึ้นว่าDragAndDropTarget
ที่ระบุใช้ได้กับเซสชันการลากและวางที่ระบุเท่านั้นระบบนำ
DragAndDropEventType
ออกแล้ว (I645b1)เปลี่ยนชื่อ
PlatformTextInputModifierNode.runTextInputSession
เป็นestablishTextInputSession
แล้ว (I03cd0)แทนที่
OriginalText
ด้วยTextSubstitution
(Ifa5a8)เปลี่ยนชื่อ
PlatformTextInputModifierNode.textInputSession
เป็นrunTextInputSession
แล้ว (Ie9c6b)รายการย่อยของ
SubcomposeLayout
(และเลย์เอาต์อย่างLazyColumn
ที่อิงตามSubcomposeLayout
) ซึ่งเก็บไว้เพื่อใช้ซ้ำในอนาคตจะถือว่าปิดใช้งาน เราได้เปิดตัวassertIsDeactivated()
test API ใหม่เพื่อทดสอบโหนดดังกล่าว ส่วน API การทดสอบที่เหลือจะกรองโหนดที่ปิดใช้งานออกโดยค่าเริ่มต้น (I2ef84, b/187188981)เปลี่ยนชื่อพารามิเตอร์
clippingEnabled
ของModifier.magnifier
เป็นclip
พารามิเตอร์
magnifierCenter
ของModifier.magnifier
เป็นแบบ Null ได้เพื่อรักษาลักษณะการทำงานเริ่มต้นเดิม (I6aa66)ตอนนี้ Material
SwipeToReveal
API (สําหรับการ์ดและชิป) จะใช้ API ตามช่อง (ตามที่ Compose แนะนํา) แทนอินสแตนซ์ตามคลาสข้อมูลเพื่อสร้างช่องเหล่านั้น การเปลี่ยนแปลงนี้เป็นการเปลี่ยนแปลงที่ส่งผลต่อการใช้งาน โปรดดูตัวอย่างวิธีใช้ API ใหม่ในเดโมและโค้ดตัวอย่าง (Ia8943)
การแก้ไขข้อบกพร่อง
- ใช้ equals และ hashcode สำหรับ
PageSize.Fixed
(Ie3ede, b/300134276) - แก้ไขข้อบกพร่องที่ทำให้เลย์เอาต์
BasicText
ไม่หดเมื่อminWidth
เปลี่ยนแปลงและminWidth
น้อยกว่าข้อจำกัดการวัดเริ่มต้นmaxWidth
(Idb19c) - เพิ่มการรองรับโปรแกรมแสดงผลสําหรับการไล่สีแบบไล่เฉดใน
ArcLine
(I4d5bb) - แก้ไขปัญหาความเข้ากันได้ของไบนารีกับการเปลี่ยนแปลงระยะขอบหน้าต่าง (Iee695)
- นําเลเยอร์หลักของ Material ออกสําหรับชิป/ปุ่ม Material3 เนื่องจากการทดสอบประสิทธิภาพแบบไมโครเบนช์มาร์กแสดงประสิทธิภาพที่ดีขึ้นเมื่อไม่มีเลเยอร์นี้ (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
ได้เปลี่ยนชื่อพารามิเตอร์ size เป็น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) - เพิ่ม Flag ชั่วคราว
DisableNonLinearFontScalingInCompose
เพื่อปิดใช้การปรับขนาดแบบอักษรที่ไม่ใช่แบบเชิงเส้น ตั้งค่าDisableNonLinearFontScalingInCompose = true
ในการทดสอบหากต้องการเวลาในการแก้ไข เราจะนำ Flag นี้ออกใน 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 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- Wrapper แบบคอมโพสได้ใหม่สำหรับ
SurfaceView
และTextureView: GraphicsSurface()
และEmbeddedGraphicsSurface()
ซึ่งเป็น 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)
การเปลี่ยนแปลงลักษณะการทำงาน
- ตอนนี้เครื่องมือเขียนใช้การปรับขนาดแบบอักษรที่ไม่ใช่แบบเชิงเส้นเพื่อให้อ่านและเข้าถึงได้ง่ายขึ้น เมื่อขนาดแบบอักษรมากกว่า 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
ที่ยอมรับค่าแบบคงที่และฟังก์ชันการเรียกกลับเพื่อเปลี่ยนค่านั้น เช่นเดียวกับBasicTextField
API ปัจจุบัน (Ia4882) - เพิ่ม
Modifier.preferKeepClear()
เพื่อทําเครื่องหมายว่าคอมโพสิเบิลเนื่องจากต้องการหลีกเลี่ยงหน้าต่างลอยใน API ระดับ 33 ขึ้นไป (Ib51d5, b/297260115) - ความเร็วในการปัดในคอมโพเนนต์มุมมอง เช่น
ScrollView
และRecyclerView
จะจำกัดอยู่ที่ViewConfiguration.ScaledMaximumFlingVelocity
ตอนนี้เครื่องมือเขียนมีmaximumFlingVelocity
เวอร์ชันของตัวเองซึ่งใช้กับDraggable
(Ibf974) - นำการโอเวอร์โหลด
Pager
และPagerState
ที่เลิกใช้งานแล้วออก (Iea07e) - เพิ่ม
BasicTooltipBox
ลงในcompose.foundation
และอัปเดตPlainTooltipBox
และRichTooltipBox
ให้ใช้TooltipBox
กับคอมโพสิเบิล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
ที่ยอมรับค่าแบบคงที่และฟังก์ชันการเรียกกลับเพื่อเปลี่ยนค่านั้น เช่นเดียวกับBasicTextField
API ปัจจุบัน (I3f2b8) - ตอนนี้
GridItemSpan::currentLineSpan
เป็น API ที่เสถียรแล้ว (Icc29c) - ตอนนี้ Canvas ที่ยอมรับ
contentDescription
เป็น API ที่เสถียรแล้ว (Ib3d29) - เปิดตัว
viewportSize
ในScrollState
ซึ่งเป็นวิธีดูขนาดviewPort
ของคอมโพเนนต์ที่ใช้ScrollState
หลังจากการวัด (I8b85a, b/283102682) - แก้ไขปัญหาที่การเรียกข้อมูลล่วงหน้าใน Pager ไม่ตรงกับลักษณะการทำงานในมุมมอง (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
จาก true เป็น false ขณะที่มีโฟกัส (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) - คําอธิบายประกอบเพิ่มเติมเพื่อระบุอินพุตที่อนุญาตสําหรับคอมโพสิเบิล (I51109)
- เพิ่ม
SemanticsNodeInteraction.requestFocus
เพื่อเป็นวิธีที่สะดวกและค้นพบได้ง่ายขึ้นในการขอโฟกัสในการทดสอบ (Ie8722) PlatformTextInput*
API ที่ได้รับการออกแบบใหม่ทั้งหมด (I6c93a, b/274661182, b/267235947, b/277380808)SoftwareKeyboardController
และLocalSoftwareKeyboardController
ไม่ได้อยู่ในขั้นทดลองอีกต่อไป ตอนนี้LocalSoftwareKeyboardController
ก็เป็นCompositionLocal
อย่างเต็มรูปแบบแล้ว (I4c364)- ตอนนี้
Modifier.transformable
มีพารามิเตอร์ Pan Delta ในcanPan
เพื่อช่วยกำหนดทิศทางของ Pan เพื่ออนุญาตหรือไม่อนุญาต (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
เพื่อรวมรายการที่โยนเมื่อพยายามโหลดชิ้นงานบิตแมปพร้อมคําอธิบายเส้นทางชิ้นงานที่โหลดไม่สําเร็จ (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
จาก true เป็น false ขณะที่มีโฟกัส (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 เพื่อลดค่าใช้จ่ายเพิ่มเติมในการคอมโพสิชันเริ่มต้น - การปรับปรุงความเสถียรของ Pager แก้ไขข้อบกพร่องจำนวนมากแล้ว
- ตอนนี้พารามิเตอร์
pageCount
อยู่ในPagerState
แทนที่จะเป็นใน Pager
เวอร์ชัน 1.5.0-rc01
26 กรกฎาคม 2023
androidx.compose.foundation:foundation-*:1.5.0-rc01
ได้รับการปล่อยแล้ว เวอร์ชัน 1.5.0-rc01 มีการคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
การตรวจสอบที่ไม่บังคับเพื่อแนะนำให้ย้ายข้อมูลการเรียก
mutableStateOf()
ไปยังประเภทเฉพาะที่เกี่ยวข้องสำหรับองค์ประกอบพื้นฐานมีให้ใช้งาน รหัส 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()
เวอร์ชันทดลองสำหรับขอบเขตรายการตารางกริดแบบแสดงเฉพาะรายการที่ผู้ใช้เรียกดู คุณสามารถใช้คำสั่งนี้กับรายการเพื่อให้ได้ภาพเคลื่อนไหวการเปลี่ยนแปลงตำแหน่ง/การจัดเรียงใหม่แบบอัตโนมัติ (I4b62d, b/257034719) - โปรโมต
GridCells.FixedSize
เป็นเวอร์ชันเสถียรFixedSize
กำหนดLazyGrid
โดยที่แต่ละเซลล์มีขนาดที่แน่นอนในแกนตามขวาง โดยพื้นที่ที่เหลือจะกระจายตามการจัดเรียงในแกนตามขวาง (I8542f) - เปิดตัวขอบเขตตัวรับ
PagerScope
สำหรับ Pager และฟังก์ชันยูทิลิตีสําหรับคํานวณออฟเซตหน้าเว็บที่ระบุ (If2577) - แนะนำ
snapPositionalThreshold
เมื่อสร้างลักษณะการแตะเพื่อเลื่อน ใช้พารามิเตอร์นี้เพื่อระบุเกณฑ์ตำแหน่งสำหรับการจับภาพแบบสั้นใน 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
(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 มีการคอมมิตเหล่านี้
เวอร์ชันนี้เปิดใช้สแต็กการแสดงผลข้อความแบบใหม่สำหรับเครื่องมือเขียน สแต็กใหม่ได้รับการเพิ่มประสิทธิภาพและคุณไม่ควรเห็นการเปลี่ยนแปลงที่เห็นได้ชัด
หากเห็นการเปลี่ยนแปลงในข้อความที่แสดงผล คุณสามารถแก้ไขข้อบกพร่องได้โดยตั้งค่า NewTextRendering1_5 = false
เพื่อยืนยันความแตกต่างของลักษณะการทำงาน การตั้งค่านี้จะบังคับให้จัดองค์ประกอบใหม่ โปรดรายงานความแตกต่างของลักษณะการทำงานเป็นข้อบกพร่อง
ระบบจะนำ Flag การแก้ไขข้อบกพร่องออกก่อนการเผยแพร่ 1.5 beta01 (Iada23, b/246960758)
การเปลี่ยนแปลง API
- ทำให้
FlowColumn/FlowRow
อยู่ภายในบรรทัด (Idab37)
เวอร์ชัน 1.5.0-alpha02
5 เมษายน 2023
androidx.compose.foundation:foundation:1.5.0-alpha02
และ androidx.compose.foundation:foundation-layout:1.5.0-alpha02
เผยแพร่แล้ว เวอร์ชัน 1.5.0-alpha02 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มการรองรับเซลล์ขนาดคงที่ใน
LazyGrid
และการจัดเรียงด้วยการจัดเรียงตามแนวทแยง (I83ed9, b/235121277, b/267942510) - เพิ่มการรองรับเลนขนาดคงที่ใน
LazyStaggeredGrid
และการจัดเรียงเลนด้วยการจัดเรียงตามแนวทแยง (I7d519) - ตอนนี้คุณสามารถเปิด
UrlAnnotation
ในAnnotatedString
ผ่านบริการการช่วยเหลือพิเศษ เช่นTalkBack
ได้แล้ว (If4d82, b/253292081) - เพิ่ม
InsertTextAtCursor
การดำเนินการตามความหมายสําหรับช่องข้อความ (I11ed5) - ตอนนี้การดําเนินการทดสอบที่เกี่ยวข้องกับข้อความ (เช่น
performTextInput
) จะขอโฟกัสโดยตรงโดยใช้การดําเนินการตามความหมายแทนการคลิกที่ช่อง (I6ed05) - เพิ่มการรองรับระยะห่าง/การจัดเรียงข้ามแกนโดยใช้
verticalArrangement
ในFlowRow
และhorizontalArrangement
ในFlowColumn
นอกจากนี้ เรายังนำverticalAlignment
และhorizontalAlignment
ระดับบนสุดในFlowRow/FlowColumn
ออกด้วย นักพัฒนาแอปสามารถใช้Modifier.align
แทนได้ วิธีนี้ช่วยลดความสับสนระหว่างรูปแบบการตั้งชื่อของverticalAlignment
กับverticalArrangement
(I87b60, b/268365538)
เวอร์ชัน 1.5.0-alpha01
22 มีนาคม 2023
androidx.compose.foundation:foundation:1.5.0-alpha01
และ androidx.compose.foundation:foundation-layout:1.5.0-alpha01
เผยแพร่แล้ว เวอร์ชัน 1.5.0-alpha01 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ข้อความและ
BasicText
ได้รับการแยกส่วนใหม่เพื่อใช้ระบบตัวแก้ไขใหม่ ซึ่งจะทําให้ประสิทธิภาพดีขึ้นอย่างมากในหลายกรณี คุณไม่ควรเห็นการเปลี่ยนแปลงใดๆ (If1d17, b/246961435) - เพิ่มการดำเนินการตามความหมาย
PerformImeAction
เพื่อเรียกการดำเนินการ IME ในโหนดเครื่องมือแก้ไขข้อความ (Ic606f, b/269633506)
การแก้ไขข้อบกพร่อง
- อัปเดตข้อมูลภายในของ
Modifier.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)
การแก้ไขข้อบกพร่อง
- ตอนนี้การดำเนินการตามความหมาย
SetText
ของBasicTextField
จะอัปเดตบัฟเฟอร์ข้อความโดยใช้เส้นทางโค้ดเดียวกับการอัปเดต 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) - ประเภท/Nullability เพิ่มเติมของฟังก์ชันแบบอินไลน์/ฟังก์ชันที่เลิกใช้งานแล้ว (I24f91)
- API
LineBreak
และHyphens
ใน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
constructor ที่มีvariationSettings
เป็น API ที่เสถียรแล้ว และสามารถใช้เพื่อสร้างตัวระบุแบบอักษรประเภทใหม่ได้ (I5adcc, b/261565807) - เปิดตัว
PinnableContainer
api ที่เผยแพร่โดยรายการแบบ Lazy ผ่านคอมโพสิชันในเครื่อง ซึ่งช่วยให้ปักหมุดรายการปัจจุบันได้ ซึ่งหมายความว่าระบบจะไม่ทิ้งรายการดังกล่าวเมื่อเลื่อนออกจากมุมมอง เช่น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 โดยใช้กฎการคอมโพสิท ระบบจะไม่ส่งต่อการดำเนินการต่อที่กลับมาทำงานระหว่างการเรียกคืน
withFrameNanos
จนกว่าการเรียกคืนเฟรมทั้งหมดจะทำงานเสร็จ ซึ่งจะตรงกับลักษณะการทํางานของคอมโพซเมื่อทํางานตามปกติ อย่างไรก็ตาม การทดสอบที่อาศัยลักษณะการทำงานแบบเก่าอาจไม่สําเร็จ ซึ่งควรส่งผลต่อโค้ดที่เรียกwithFrameNanos
หรือwithFrameMillis
โดยตรงเท่านั้น และมีตรรกะนอก Callback ที่ส่งไปยังฟังก์ชันเหล่านั้น ซึ่งอาจต้องย้ายไปไว้ภายใน Callback ดูตัวอย่างการเปลี่ยนแปลงการทดสอบภาพเคลื่อนไหวใน CL นี้ - เพิ่มพารามิเตอร์
onPerformTraversals: (Long) -> Unit
ที่ไม่บังคับลงในคอนสตรัคเตอร์TestMonotonicFrameClock
และฟังก์ชันแฟกทอรีเพื่อเรียกใช้โค้ดหลังจากการเรียกกลับwithFrameNanos
แต่ก่อนที่จะดำเนินการโคโรทีนของผู้เรียกต่อ (Idb413, b/254115946, b/222093277, b/255802670) - แนะนำการดําเนินการเกี่ยวกับความสามารถในการเข้าถึงหน้าเว็บ:
PageUp
,PageDown
,PageLeft
,PageRight
โปรดทราบว่าฟีเจอร์เหล่านี้ใช้ได้กับ API 29 เท่านั้น (Ida4ab) - แนะนำ
HorizontalPager
และVerticalPager
ซึ่งเป็นวิธีแสดงคอมโพสิเบิลในลักษณะหน้าเว็บ เปิดตัวPagerState
เพื่อควบคุม Pager รวมถึงค้นหาข้อมูลเกี่ยวกับสถานะปัจจุบันของ Pager เปิดตัวPageSize
ซึ่งเป็นวิธีควบคุมขนาดของหน้าใน Pager ซึ่งสามารถใช้สร้างภาพสไลด์ได้ เปิดตัวPagerSnapDistance
ซึ่งเป็นวิธีควบคุมวิธีการทำงานของการยึดในลักษณะการเลื่อนของ Pager (I01120) - เปิดตัวการโอเวอร์โหลดใน
SnapFlingBehavior.performFling
เพื่อช่วยให้คุณเข้าใจว่าระบบจะจัดเรียงการโยนไว้ที่ใด (I569f6) - นำ
OverscrollEffect#isEnabled
ออกแล้ว คุณไม่ต้องจำและตั้งค่า Flag นี้ เพียงไม่ส่งเหตุการณ์ไปยังเอฟเฟกต์การเลื่อนผ่านในกรณีที่ไม่ต้องการให้แสดงการเลื่อนผ่าน (เช่น หากScrollableState#canScrollForward/backward
ทั้ง 2 รายการแสดงผลเป็นเท็จ) (I1a4b0, b/255554340, b/255557085) - เพิ่ม
ScrollableState#canScrollForward
และScrollableState#canScrollBackward
เพื่อสอบถามว่าScrollableState
มีที่ว่างในการเลื่อนไปทางใดทางหนึ่งหรือไม่ (ไม่ว่าจะอยู่ที่ค่าต่ำสุด / สูงสุดของช่วง) ค่าเริ่มต้นจะเป็น "จริง" เพื่อให้เข้ากันได้แบบย้อนหลังกับการใช้งานScrollableState
ที่มีอยู่ ผู้บริโภคสามารถใช้ข้อมูลนี้เพื่อแสดงให้ผู้ใช้ทราบว่ายังมีพื้นที่ในการเลื่อนอยู่ และยังใช้เพื่อหลีกเลี่ยงการส่งค่า Delta ไปยัง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 ปัญหานี้เกิดขึ้นในบางเงื่อนไขเมื่อจํานวนรายการใหม่น้อยกว่ารายการก่อนหน้า (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
ซึ่งช่วยให้ตั้งค่าความสูงขั้นต่ำของคอมโพสิเบิลเหล่านี้ในแง่ของจํานวนบรรทัดได้ (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()
เนื่องจากforEachGesture()
อาจทำให้เหตุการณ์สูญหายระหว่างการใช้ท่าทางสัมผัส (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
จะแสดงภาพกระเพื่อมหากคลิกด้วยแป้นพิมพ์หรือปุ่มบังคับทิศทางบนรีโมตคอนโทรล
เวอร์ชัน 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
ที่ขั้นตอน Approach ใช้เมื่อความเร็วในการเหวี่ยงไม่เพียงพอที่จะลดลง (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
ให้กับ Density เพื่อให้ผู้ใช้ API แปลง Dp<->Px ได้ง่ายขึ้น (I54a11) - อัปเดต
LazyLayoutMeasureScope.measure
เพื่อแสดงรายการรายการที่วางได้ โดยไฮไลต์ค่าที่แสดงผลซึ่งไม่สามารถเปลี่ยนแปลงได้ (I48b7c) - เปิดตัว
SnapLayoutInfoProvider
ซึ่งใช้LazyListState
เพื่อสร้างอินสแตนซ์ของSnapLayoutInfoProvider
ที่ใช้เปิดใช้สแนปFlingBehavior
สำหรับ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 (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
เพื่อใช้เป็นวิธีวาดข้อความที่มีรูปแบบหลายแบบในคอมโพสิเบิลและตัวแก้ไขที่ทำงานกับDrawScope
เช่นCanvas
และdrawBehind
(I16a62, b/190787898)
การแก้ไขข้อบกพร่อง
- ตอนนี้แป้นพิมพ์บนหน้าจอจะซ่อนอยู่เมื่อปิดใช้ช่องข้อความขณะที่โฟกัสอยู่ (I6e3e4, b/237308379)
- เมื่อเพิ่มเหตุการณ์
InputEventChange
ลงในเครื่องมือติดตามความเร็ว เราจะพิจารณาเดลต้าแทนตำแหน่ง ซึ่งจะช่วยให้คำนวณความเร็วได้อย่างถูกต้องในทุกกรณี แม้ว่าองค์ประกอบเป้าหมายจะเคลื่อนไหวก็ตาม (Icea9d, b/216582726, b/223440806, b/227709803) - เมื่อองค์ประกอบที่เลื่อนได้มีส่วนย่อยที่โฟกัสอยู่ ตอนนี้องค์ประกอบดังกล่าวจะเลื่อนอย่างถูกต้องเพื่อให้ส่วนย่อยที่โฟกัสอยู่ปรากฏอยู่ในมุมมองเสมอเมื่อขนาดลดลง แม้ว่าจะมีภาพเคลื่อนไหวของขนาดก็ตาม (I80867, b/230756508, b/220119990)
- แก้ไขข้อขัดข้องที่เกิดขึ้นเมื่อล้าง
TextField
และเติม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 และตารางกริดมีพารามิเตอร์
userScrollEnabled
ซึ่งช่วยให้ปิดใช้การเลื่อนผ่านท่าทางสัมผัสของผู้ใช้ได้ - มีการเพิ่ม API ใหม่เวอร์ชันทดลองชื่อ
LazyLayout
ซึ่งเป็น API ที่เราใช้ในภายในเพื่อขับเคลื่อนรายการแบบ Lazy และตารางกริด OverscrollEffect
API เปิดตัวเป็นเวอร์ชันทดลอง คุณสามารถกําหนดเอฟเฟกต์การเลื่อนผ่านที่กําหนดเอง รวมถึงเพิ่มเอฟเฟกต์มาตรฐานของแพลตฟอร์มลงในคอนเทนเนอร์แบบเลื่อนได้ที่กำหนดเอง- เราได้เปิดตัว API ความสามารถในการทำงานร่วมกันของการเลื่อนที่ซ้อนกันเพื่อให้วิวต่างๆ และคอมโพสิชันขององค์ประกอบการเลื่อนทำงานร่วมกันได้
- เพิ่มการเลื่อนของเมาส์และแทร็กแพดลงในคอนเทนเนอร์การเลื่อนทั้งหมด
เวอร์ชัน 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
ไปยังแพ็กเกจ Foundation และเปลี่ยนชื่อเป็นLocalOverscrollConfiguration
แล้ว (If19fb, b/204650733)- ตอนนี้อินเทอร์เฟซในไลบรารีคอมโพสิทสร้างขึ้นโดยใช้เมธอดอินเทอร์เฟซเริ่มต้นของ 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 ของคุณเองซึ่งคล้ายกับที่LazyColumn
ใช้ ซึ่งสามารถกําหนดรายการลิสต์ผ่านการเรียก item/items หลายรายการ (I2d05e, b/228580728)
การแก้ไขข้อบกพร่อง
- ชี้แจงเอกสารประกอบของ
WindowInsets.ime
เพื่อระบุว่ามีการรายงานข้อมูลแทรกของime
ตั้งแต่ API เวอร์ชัน 23 แต่มีเฉพาะข้อมูลเคลื่อนไหวในเวอร์ชัน 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 ตอนนี้เรามีรายการฟังก์ชันคอมโพสิเบิลที่ยอมรับดัชนีซึ่งง่ายกว่าแทนที่จะใช้ Factory ที่แสดงผล Lambda แบบคอมโพสิเบิลตามดัชนี (Id2196) - เปลี่ยนชื่อ LazyLayoutItemsProvider เป็น LazyLayoutItemProvider (I0638c)
- เปลี่ยนชื่อ
LazyLayoutItemsProvider.itemsCount
เป็นitemCount
(Id409c) - เพิ่มแปรงลงใน
TextStyle
และSpanStyle
เพื่อให้วาดข้อความที่มีการไล่ระดับสีได้ (I53869, b/187839528) - แอตทริบิวต์
trimFirstLineTop
,trimLastLineBottom
ของLineHeightBehavior
เปลี่ยนเป็น enum รายการเดียว:LineHeightTrim
LineHeightTrim
มีสถานะ 4 สถานะที่กําหนดโดยบูลีน 2 รายการ ได้แก่FirstLineTop
,LastLineBottom
, ทั้ง 2 อย่าง และไม่มี (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
ช่วยให้นักพัฒนาแอปปิดใช้ WindowInsets ของ Android ได้ วิธีนี้ช่วยให้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)- อัปเดตการแยกวิเคราะห์รูปภาพที่วาดได้แบบเวกเตอร์เพื่อรองรับการมิเรอร์อัตโนมัติเพื่อพลิกเนื้อหาของ
VectorPainter
หากการวางแนวปัจจุบันเป็น RTL (I79cd9, b/185760237)
การแก้ไขข้อบกพร่อง
- ตอนนี้ตัวแก้ไขการเลื่อน (
Modifier.verticalScroll()
,Modifier.horizontalScroll()
และModifier.scrollable()
) จะเลื่อนเพื่อให้คอมโพสิชันที่โฟกัสอยู่ปรากฏอยู่เสมอ หากมีการปรับขนาดพื้นที่เลื่อนและก่อนหน้านี้คอมโพสิชันที่โฟกัสอยู่นั้นปรากฏอยู่ - ตอนนี้ช่องข้อความจะยังคงอยู่เหนือแป้นพิมพ์เมื่อโฟกัสอยู่และแป้นพิมพ์แสดงอยู่ เมื่ออยู่ภายในส่วนที่มีการเลื่อนแบบไม่เลื่อนตามและโหมดการป้อนข้อมูลแบบซอฟต์เป็น
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
และไม่ควรมีการตัดสคริปต์ที่สูง (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()
เพื่ออนุญาตให้นักพัฒนาแอปรวมเฉพาะมิติข้อมูลจาก WindowInsets (I14c94, b/217768486) เพิ่ม
ComposableTarget
,ComposableTargetMarker
และComposableOpenTarget
ซึ่งช่วยให้รายงานเวลาคอมไพล์ได้เมื่อมีการเรียกใช้ฟังก์ชันที่ประกอบกันได้ซึ่งกำหนดเป้าหมายไปยังแอปพลิเคชันที่ไม่ได้ออกแบบมาเพื่อใช้งานในกรณีส่วนใหญ่ ปลั๊กอินคอมไพเลอร์ของ Compose จะอนุมานคำอธิบายประกอบได้ คุณจึงควรใช้คำอธิบายประกอบเหล่านี้โดยตรงในบางกรณีเท่านั้น กรณีที่ไม่สามารถอนุมานได้ ได้แก่ การสร้างและการใช้ Applier ที่กําหนดเอง ฟังก์ชันที่คอมโพสิเบิลแบบนามธรรม (เช่น เมธอดอินเทอร์เฟซ) ฟิลด์หรือตัวแปรส่วนกลางที่เป็น Lambda ที่คอมโพสิเบิล (ระบบจะอนุมานตัวแปรและพารามิเตอร์ภายใน) หรือเมื่อใช้
ComposeNode
หรือฟังก์ชันที่คอมโพสิเบิลที่เกี่ยวข้องสําหรับแอปเพลเยอร์ที่กำหนดเอง ฟังก์ชันแบบคอมโพสิเบิลที่เรียกใช้
ComposeNode
หรือReusableComposeNode
จะต้องเพิ่มแอตทริบิวต์CompoableTarget
สําหรับฟังก์ชันและพารามิเตอร์ LAMBDA ประเภทใดก็ได้แบบคอมโพสิเบิล อย่างไรก็ตาม เราขอแนะนำให้สร้างคำอธิบายประกอบที่มีคำอธิบายประกอบด้วยComposableTargetMarker
แล้วใช้คำอธิบายประกอบที่มีเครื่องหมายแทนการใช้ComposableTarget
โดยตรง คําอธิบายประกอบแบบคอมโพสิเบิลที่มีเครื่องหมายComposableTargetMarker
เทียบเท่ากับComposbleTarget
ที่มีชื่อแบบเต็มของคลาสแอตทริบิวต์เป็นพารามิเตอร์ applier ดูตัวอย่างการใช้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 ที่โฮสต์ (Ia7a51) FontFamilyResolver
พร้อมให้รับชมแล้วผ่านLocalFontFamilyResolver.current
- เพิ่ม
createFontFamilyResolver(context)
และcreateFontFamilyResolver(context, coroutineScope)
เพื่อสร้างตัวแก้ไข FontFamily ใหม่นอกการใช้งานการคอมโพสิท - ตอนนี้ Paragraph และ MultiParagraph ใช้
FontFamily.Resolver
- ตอนนี้
TextLayoutResult.layoutInput.fontFamilyResolver
มีTextLayoutResult.layoutInput.resourceLoader
ซึ่งเป็นรีโซลเวอร์ที่ใช้สำหรับเลย์เอาต์นี้ซึ่งเลิกใช้งานแล้ว เนื่องจากไม่มีการใช้อีกต่อไป (Id5a45, b/174162090)
- เพิ่ม
- เพิ่ม
AndroidFont
ซึ่งเป็น API ระดับล่างแบบใหม่สำหรับระบุตัวบ่งชี้ทรัพยากรแบบอักษรประเภทใหม่ใน Android เช่น การโหลดแบบอักษรจากแบ็กเอนด์เฉพาะแอป การเลือกหาแบบอักษรที่ติดตั้งไว้ล่วงหน้าในอุปกรณ์ หรือโหลดแบบอักษรจากแหล่งข้อมูลที่ไม่ได้มาจาก Font Factory ปัจจุบัน- ขยาย
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)
การแก้ไขข้อบกพร่อง
- ตอนนี้ช่องข้อความจะยังคงอยู่เหนือแป้นพิมพ์เมื่อโฟกัสอยู่และแป้นพิมพ์แสดงอยู่เมื่อโหมดการป้อนข้อมูลแบบซอฟต์โหมดเป็น
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
ของ Android ได้อย่างง่ายดาย (I46f07)
การแก้ไขข้อบกพร่อง
- ปรับแต่งลักษณะการทำงานของแว่นขยายการเลือกข้อความให้ตรงกับแว่นขยายของแพลตฟอร์ม (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
ไปยังตัวแก้ไข Magnifier (I6879f) - ตอนนี้วิดเจ็ต Magnifier จะแสดงเมื่อลากแฮนเดิลการเลือกใน
SelectionContainer
(I30b38, b/139320979)
การแก้ไขข้อบกพร่อง
- แก้ไข
TextField
แฮนเดิลเคอร์เซอร์ไม่ซ่อนเมื่อเลื่อนออกจากมุมมอง (I14552, b/208883748)
การอัปเดตทรัพยากร Dependency
- ตอนนี้ขึ้นอยู่กับ 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 เพื่อให้การทำงานสอดคล้องกันหากคุณใช้ทั้ง Views และ Compose การเปลี่ยนแปลงนี้ยังช่วยให้มั่นใจด้วยว่าเมื่อคุณสร้าง UI โดยใช้คอมโพเนนต์ Compose Material คุณจะเป็นไปตามข้อกำหนดขั้นต่ำสำหรับการช่วยเหลือพิเศษสำหรับเป้าหมายการสัมผัส
- รองรับแถบข้างสำหรับไปยังส่วนต่างๆ อย่างเสถียร
- เปลี่ยน 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
- ล้างข้อมูล Nullability ใน
androidx.core.view
(I7078a, b/204917439) - เพิ่ม API เวอร์ชันทดลองที่อนุญาตให้ใช้ PointerInputchange โดยรวมหรือตรวจสอบว่ามีการเรียกใช้หรือไม่ (I2e59d)
- แสดงวิดเจ็ต Magnifier เมื่อลากเคอร์เซอร์หรือแถบการเลือกในช่องข้อความ (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 เรามีตัวแก้ไขใหม่ภายใน 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 มีการคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- ตอนนี้ระบบจะเลื่อนเวลาการเผยแพร่ของ Ripple และตัวบ่งชี้อื่นๆ เฉพาะในกรณีที่อยู่ภายในคอนเทนเนอร์
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)
การแก้ไขข้อบกพร่อง
- แก้ไขการรองรับการช่วยเหลือพิเศษสำหรับเนื้อหาที่เลื่อนได้ (ทั้งแบบ Lazy และแบบไม่ Lazy) เกี่ยวกับการเลื่อน (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
- เพิ่มเอฟเฟกต์เรืองแสงสำหรับแถบเลื่อน เพิ่ม OverScrollConfiguration API เวอร์ชันทดลองใหม่เพื่อให้สามารถกำหนดค่าเอฟเฟกต์ภาพของการเลื่อนผ่าน ระบุค่า 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 ให้ใช้พารามิเตอร์ 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 มีการคอมมิตเหล่านี้
การอัปเดตทรัพยากร Dependency
- อัปเดตให้ใช้ 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 มีคอมมิตเหล่านี้
การอัปเดตทรัพยากร Dependency
- อัปเดตให้ใช้ 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 มีคอมมิตเหล่านี้
การอัปเดตทรัพยากร Dependency
- อัปเดตให้ใช้ 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) - เปลี่ยน Role และ LiveRegionMode ที่เป็น enum เป็นคลาสย่อย (Inline Class) ที่มีตัวสร้างแบบ private (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
รูปแบบเหล่านี้อาจมีไวลด์การ์ด (
**
,*
และ?
) เพื่อให้กฎเดียวครอบคลุมเมธอดหรือคลาสหลายรายการ
กฎมีไว้เพื่ออะไร
เมธอดที่มี Flag
H
บ่งบอกว่าเมธอดนี้เป็นเมธอด "ร้อน" และควรคอมไพล์ล่วงหน้าเมธอดที่มี Flag
S
บ่งบอกว่าเป็นเมธอดที่เรียกใช้เมื่อเริ่มต้นระบบ และควรคอมไพล์ล่วงหน้าเพื่อหลีกเลี่ยงค่าใช้จ่ายในการคอมไพล์และการตีความเมธอดเมื่อเริ่มต้นระบบเมธอดที่มี Flag
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
- คลาสย่อยในบรรทัดแทนที่ NestedScrollSource (Ie321b, b/187055290)
- ปรับแต่งการใช้ enum เป็นคลาสในบรรทัดเพื่อหลีกเลี่ยงปัญหาเกี่ยวกับคำสั่ง when ที่ครอบคลุมเมื่อเพิ่มค่า enum ใหม่ (I2b5eb)
- เพิ่มระยะหมดเวลาการแตะไปยังรายการที่คลิกได้/เปิด/ปิดได้เพื่อป้องกันไม่ให้แสดงภาพกระเพื่อมขณะเลื่อน/ลาก (Ia2704, b/168524931)
- พร็อพเพอร์ตี้ ContentDescription และ TextSemantics ไม่ได้เป็นค่าเดี่ยวอีกต่อไป แต่เป็นรายการ ซึ่งจะช่วยให้ผสานข้อมูลดังกล่าวได้เหมือนที่ผสานสตริงแทนการต่อสตริง รวมถึง API การทดสอบที่ดีขึ้นเพื่อใช้ประโยชน์จากการเปลี่ยนแปลงเหล่านี้ (Ica6bf, b/184825850)
Modifier.focusModifier()
เลิกใช้งานแล้วและแทนที่ด้วยModifier.focusTarget()
(I6c860)- คลาสอินไลน์เข้ามาแทนที่ KeyboardType (I73045, b/187055290)
- แทนที่
FocusState
enum ด้วยอินเทอร์เฟซFocusState
(Iccc1a, b/187055290) - คลาสอินไลน์จะแทนที่ ImeAction enum (I18be5, b/187055290)
- ฟังก์ชัน
AnnotatedString.withAnnotation
เปลี่ยนเป็น ExperimentalTextApi แล้วแทนที่จะเป็น ExperimentalComposeApi (I0cd0a)- ตอนนี้ตัวสร้าง TextUnit ที่มี TextUnitType เปลี่ยนเป็น ExperimentalTextApi แทน ExperimentalComposeApi แล้ว
- PaddingValues เปลี่ยนเป็น
@Stable
แล้ว ไม่ใช่@Immutable
(I88c50)
การแก้ไขข้อบกพร่อง
- แก้ไขข้อขัดข้องของการปัดพื้นที่ว่างในข้อความที่ไม่ว่างเปล่าค้างไว้ (I33ab5, b/187437299)
- แสดงแถบเครื่องมือหลังจากเลือกทั้งหมด (I495d9, b/185919613)
- แก้ไขสำหรับคอนเทนเนอร์ที่เลื่อนได้ซึ่งตัดองค์ประกอบย่อยในแนวทแยง ปัญหานี้เกิดขึ้นได้ง่ายๆ หากคุณมี LazyRow ที่มีรายการการ์ด ตอนนี้ระบบจะไม่ตัดเงา (Icb635, b/186318448)
- แก้ปัญหาที่บางครั้งการกระเพื่อม / ตัวบ่งชี้อื่นๆ จะค้างจากการคลิกค้างเมื่อใช้ Modifier.combinedClickable (I2298c, b/186223077)
- ตอนนี้
detectDragGesures
,detectVerticalGestures
และdetectHorizontalGestures
จะใช้การเปลี่ยนแปลงตำแหน่งโดยอัตโนมัติโดยไม่จำเป็นต้องเรียกใช้ change.consumePositionChange ใน callback ของ 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)
- แก้ไขปัญหาการถดถอยใน beta06 ที่ส่งผลต่อแถว/คอลัมน์โดยใช้การจัดเรียงแบบ 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)
- เพิ่ม CollectionInfo และ CollectionItemInfo Accessibility API ที่อนุญาตให้ทำเครื่องหมายคอลเล็กชันและรายการของคอลเล็กชันสำหรับบริการการช่วยเหลือพิเศษ (Id54ef, b/180479017)
- เพิ่ม
SemanticsActions.ScrollToIndex
เพื่อเลื่อนรายการที่มีรายการที่จัดทําดัชนีไปยังรายการที่มีดัชนีที่เฉพาะเจาะจง และSemanticsProperties.IndexForKey
เพื่อดูดัชนีของรายการในรายการที่มีรายการที่มีคีย์ LazyList จะใช้การดำเนินการทั้ง 2 รายการ- เพิ่ม
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
composition local API ใหม่เพื่อแทนที่อินเทอร์เฟซ SoftwareKeyboardController ก่อนหน้าใน Text Field (I5951e, b/168778053) - เพิ่ม
LocalSoftwareKeyboardController
composition local API ใหม่เพื่อแทนที่อินเทอร์เฟซ SoftwareKeyboardController ก่อนหน้าใน Text Field (I84472, b/168778053)
การแก้ไขข้อบกพร่อง
- บังคับใช้ข้อจํากัดในการใช้งาน API เวอร์ชันทดลองแบบสาธารณะ (I6aa29, b/174531520)
เวอร์ชัน 1.0.0-beta01
24 กุมภาพันธ์ 2021
androidx.compose.foundation:foundation:1.0.0-beta01
และ androidx.compose.foundation:foundation-layout:1.0.0-beta01
เผยแพร่แล้ว เวอร์ชัน 1.0.0-beta01 มีการคอมมิตเหล่านี้
นี่เป็นรุ่นแรกของ Compose 1.0.0 เบต้า
การเปลี่ยนแปลง API
- เพิ่มการเรียกกลับ onStart ลงใน
detectDragGestures
แล้ว (I67269, b/179995594) - ตัวแก้ไขสำหรับการปรับขนาดตามค่าอินทรีย์ไม่ใช่เวอร์ชันทดลองอีกต่อไป (I15744)
- นำการยืนยัน dp ออก (I798d2)
- นำการเรียกกลับ SoftwareKeyboardController ออกจากช่องข้อความทั้งหมดเพื่อแทนที่ด้วย API ใหม่ในเร็วๆ นี้ (Iae869, b/168778053)
- MeasureBlocks ได้เปลี่ยนชื่อเป็น MeasurePolicy ซึ่งเป็นอินเทอร์เฟซที่ใช้งานง่าย อัปเดต / ลดความซับซ้อนของ Layout API เพื่อใช้ MeasurePolicy (Icab48, b/167662468, b/156751158)
- แทนที่
InteractionState
ด้วย[Mutable]InteractionSource
แล้ว- อินเทอร์เฟซมีหน้าที่ส่ง / รวบรวมเหตุการณ์การโต้ตอบ
- ใช้
interactionSource = remember { MutableInteractionSource() }
แทนการส่งinteractionState = remember { InteractionState() }
ไปยังคอมโพเนนต์ เช่นButton
และModifier.clickable()
- แทนที่จะใช้
Interaction.Pressed in interactionState
คุณควรใช้ฟังก์ชันส่วนขยายใน InteractionSource เช่น InteractionSource.collectIsPressedAsState() - สําหรับ Use Case ที่ซับซ้อน คุณสามารถใช้ 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 ที่อนุญาตให้ทำเครื่องหมายคอลเล็กชันแท็บหรือปุ่มตัวเลือกเพื่อวัตถุประสงค์ด้านการช่วยเหลือพิเศษ (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 ให้ลองระบุ
{ null }
เป็นฟีเจอร์เริ่มต้นเราไม่แนะนําให้ใช้ตัวแปรที่เก็บข้อมูลในเครื่องกับประเภทที่ไม่ใช่ Null เว้นแต่จะสามารถระบุค่าเริ่มต้นที่เหมาะสมได้ หากไม่มีค่าเริ่มต้นที่เหมาะสม
defaultFactory
lambda ควรแสดงข้อยกเว้น อย่างไรก็ตาม การยกเว้นข้อยกเว้นหมายความว่าผู้ใช้ภาษาท้องถิ่นจะมีความเกี่ยวข้องโดยนัยกับภาษาท้องถิ่นที่ระบุ ซึ่งระบบประเภทไม่ได้บังคับใช้ (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() จะแสดงด้วย Int (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)
การวางแนวย้ายไปอยู่ในแพ็กเกจ Foundation แล้ว ย้าย 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 ไม่ได้อยู่ในช่วงทดลองอีกต่อไป
- นําฟังก์ชัน clearRoots ระดับบนสุด
@TestOnly
ออกแล้ว ไม่จำเป็นต้องใช้อีกต่อไป - นำฟังก์ชัน keySourceInfoOf และ resetSourceInfo ออกแล้ว จึงไม่จําเป็นต้องใช้อีกต่อไป
- นํา Composer.collectKeySourceInformation ออกแล้ว ไม่จำเป็นต้องใช้อีกต่อไป
- ระบบได้นำเมธอด isJoinedKey, joinedKeyLeft และ joinedKeyRight ออกแล้ว จึงไม่จําเป็นต้องใช้อีกต่อไป
- เราได้ย้ายและจัดระเบียบ API ระดับบนสุดต่างๆ ไว้ในไฟล์ต่างๆ การดำเนินการนี้จะทำลายความเข้ากันได้ของไฟล์ แต่จะไม่ทำลายความเข้ากันได้ของซอร์สโค้ด เนื่องจากความหมายของคลาสไฟล์ Kotlin จึงไม่ควรเป็นปัญหาสำหรับผู้ใช้ส่วนใหญ่
- (I99b7d, b/177245490)
Modifier.scrollable ได้รับการปรับใหม่ ตอนนี้ใช้อินเทอร์เฟซ Scrollable แทนคลาส ScrollableController แล้ว (I4f5a5, b/174485541, b/175294473)
ตอนนี้ Modifier.draggable ยอมรับ DraggableState แทน Lambda ธรรมดาแล้ว คุณสามารถสร้างสถานะผ่าน
rememberDraggableState { delta -> }
เพื่อให้มีการทำงานเหมือนเดิมได้ (Ica70f, b/175294473)เพิ่มตัวแก้ไข requiredWidth(IntrinsicSize) และ requiredHeight(IntrinsicSize) สำหรับการปรับขนาดที่จำเป็นเป็นขนาดตามค่าเริ่มต้น (I0a6b4)
emptyContent()
ที่เลิกใช้งานแล้วถูกนำออก ให้ใช้{}
แทน (Idb33f, b/179432510)ลบ API บางรายการที่เลิกใช้งานไปก่อนหน้านี้ (Ice5da, b/178633932)
การแก้ไขข้อบกพร่อง
- เพิ่ม API ใหม่สำหรับองค์ประกอบ LocalSoftwareKeyboardController แทนอินเทอร์เฟซ 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 ต้องใช้คีย์การจดจำเพื่อระบุว่าควรรีสตาร์ทโคโริวทีนการตรวจหาการป้อนข้อมูลด้วยเคอร์เซอร์เมื่อใดสำหรับข้อกําหนดใหม่ (I849cd)
- การอัปเดตการทดสอบ: hasText() จะตรวจสอบทั้งข้อความป้อนข้อมูลและข้อความป้ายกำกับ/คำแนะนำ/ตัวยึดตําแหน่งในช่องข้อความ (Iab803)
- เพิ่ม PaddingValues.Absolute แล้ว ซึ่งสามารถใช้ใน API ที่ยอมรับ PaddingValues (Ia5f30)
- onImeActionPerformed เลิกใช้งานแล้ว ให้ใช้ KeyboardActions แทน (If0bbd, b/179071523)
- เราได้เปลี่ยนชื่อ ImagePainter เป็น BitmapPainter เพื่อให้สอดคล้องกับรูปแบบการตั้งชื่อของ ImageBitmap และ ImageVector มากขึ้น และเพื่อให้สอดคล้องกับ VectorPainter (Iba381, b/174565889)
- API การทดสอบสตริงย่อยที่ดีขึ้นโดยใช้สตริงย่อยเป็นอาร์กิวเมนต์ (Icbe78)
- เปิดตัวองค์ประกอบ
InfiniteAnimationPolicy
บริบท coroutine ที่จะใช้กับภาพเคลื่อนไหวแบบไม่มีสิ้นสุด โดยค่าเริ่มต้น ระบบจะไม่ติดตั้งนโยบาย ยกเว้นเมื่อทำการทดสอบด้วยComposeTestRule
(I50ec4, b/151940543) - ตอนนี้ Animatable.snapTo และ Animatable.stop เป็นฟังก์ชันที่หยุดทำงานแล้ว (If4288)
- ComponentActivity.setContent ได้ย้ายไปอยู่ใน androidx.activity.compose.setContent ในโมดูล androidx.activity:activity-compose (Icf416)
- เราได้นําเมธอดการจัดโครงสร้างใหม่และ 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)
ตอนนี้ Semantics ของ 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)เปลี่ยนชื่อ "ภาพพักหน้าจอ" ให้ตรงกับ "ภาพพักหน้าจอ" -> เปลี่ยนชื่อ CompositionLocal เดิมองค์ประกอบรอบข้างมีชื่อว่า AmbientFoo แต่ตอนนี้ CompositionLocals มีชื่อว่า LocalFoo (I2d55d)
ย้ายการเลือกไปยังมูลนิธิแล้ว (I7892b)
เราจะนําคอมโพสิเบิล
savedInstanceState { 0 }
ออกในลักษณะเดียวกับที่เรานําคอมโพสิเบิลstate { 0 }
ออกก่อนหน้านี้และตอนนี้ส่งเสริมให้ใช้คอมโพสิเบิลremember { mutableStateOf(0) }
คุณควรใช้rememberSaveable { mutableStateOf(0) }
แทน ซึ่งจะบันทึกและกู้คืนโดยอัตโนมัติหากประเภทที่ใช้ภายใน MutableState จัดเก็บไว้ใน Bundle ได้ หากก่อนหน้านี้คุณส่งออบเจ็กต์โปรแกรมบันทึกที่กำหนดเอง ตอนนี้คุณต้องใช้การโอเวอร์โหลดใหม่ของ rememberSaveable ซึ่งมีพารามิเตอร์stateSaver
การใช้งานจะมีลักษณะดังนี้val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) }
(Ib4c26, b/177338004)เพิ่มความหมายของรหัสผ่านสำหรับการช่วยเหลือพิเศษ (I231ce)
เพิ่ม ProgressBarRangeInfo.Indeterminate เพื่อทําเครื่องหมายแถบความคืบหน้าแบบไม่แน่นอนสำหรับการช่วยเหลือพิเศษ (I6fe05)
ตอนนี้เวลาเล่นในภาพเคลื่อนไหวไม่ได้กำหนดเป็นนาโนวินาทีแล้ว (If776a)
@ComposableContract เลิกใช้งานแล้วเพื่อใช้คำอธิบายประกอบที่เฉพาะเจาะจงมากขึ้น 3 รายการ
@ComposableContract(restartable = false)
เปลี่ยนเป็น@NonRestartableComposable
@ComposableContract(readonly = true)
เปลี่ยนเป็น@ReadOnlyComposable
@ComposableContract(preventCapture = true)
เปลี่ยนเป็น@DisallowComposableCalls
นำ@ComposableContract(tracked = true)
ออกแล้ว (I60a9d)เราได้เลิกใช้งานยูทิลิตี
emptyContent()
และ(@Composable () -> Unit).orEmpty()
เนื่องจากไม่มีผลกระทบหรือคุณค่าเชิงบวกต่อประสิทธิภาพอีกต่อไป (I0484d)ตอนนี้คุณปิดเครื่องมือจัดเรียงใหม่ได้แล้ว ตัวจัดเรียงใหม่แบบปิดจะจัดเรียงใหม่ต่อไปจนกว่าโคโริวทีนย่อยของการจัดเรียงจะเสร็จสมบูรณ์ เปลี่ยนชื่อ 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 จาก left/right เป็น start/end เพื่อรองรับการมิเรอร์อัตโนมัติของรูปร่างในทิศทาง 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)
นำฟังก์ชันการเลื่อนแบบไม่หยุดทำงานที่เลิกใช้งานแล้วออก เราได้นำฟังก์ชันการเลื่อนแบบไม่หยุดทำงานออกทั้งหมดแล้วเพื่อสานต่อการเปลี่ยนแปลงจากรุ่นล่าสุด โปรดแปลงเป็นฟังก์ชันการระงับที่มีชื่อเดียวกัน คุณรับขอบเขตโคโรทีนได้ผ่าน rememberedCoroutineScope() (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 จะตั้งค่าเริ่มต้นเป็น Recomposer ระดับหน้าต่างที่สร้างขึ้นแบบล่าช้าโดย ViewTreeLifecycleOwner ของหน้าต่าง การคอมโพสใหม่และการนับภาพเคลื่อนไหวตาม 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 แทน เพื่อไม่ให้ผู้ใช้ใช้วิธีที่ไม่มีประสิทธิภาพ ผู้ใช้ยังคงเลือกได้ว่าไม่ต้องการลักษณะการทำงานแบบ Lazy และจะใช้ตัวแก้ไขโดยตรงได้ดังนี้ Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b, b/170468083)
items(count: Int)
เมธอดแฟกทอรีใหม่สำหรับขอบเขตของ 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)
การเปลี่ยนแปลงฟังก์ชันเริ่มต้นสำหรับแบบอักษร/ชุดแบบอักษร/แบบตัวพิมพ์
- เพิ่มฟังก์ชันของโรงงานที่ขึ้นต้นด้วยอักษรตัวพิมพ์ใหญ่
- ฟังก์ชันการสร้างก่อนหน้านี้ที่เลิกใช้งานซึ่งมีตัวอักษรตัวแรกเป็นตัวพิมพ์เล็ก
- ฟังก์ชันใหม่ของ Factory จะแสดงผล FontFamily แทนที่จะเป็นคลาสย่อย
- ซ่อนตัวสร้างของคลาสย่อยเพื่อให้สร้างได้ผ่านฟังก์ชันการสร้างเท่านั้น
- เปลี่ยนชื่อ Font.asFontFamily เป็น Font.toFontFamily
- (I42aa7)
เปิดตัว
ComposeContentTestRule
ซึ่งขยายจากComposeTestRule
และกำหนดsetContent
ซึ่งนําออกจากComposeTestRule
แล้ว เพิ่มเมธอดแฟกทอรีcreateEmptyComposeRule()
ที่แสดงผลComposeTestRule
และไม่เปิด Activity ให้คุณ ใช้คำสั่งนี้เมื่อคุณต้องการเปิดใช้งานกิจกรรมระหว่างการทดสอบ เช่น ใช้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)
ระบบจะนำ Duration และ Uptime ไปแทนที่ด้วย Long milliseconds และขั้นตอนนี้จะนําการพึ่งพาอินพุตเคอร์เซอร์ในคลาสเหล่านั้นออก (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)
- การเปลี่ยนแปลง EditOperations API
- เปลี่ยนชื่อ EditOperation เป็น EditCommand
- เพิ่มส่วนต่อท้ายคําสั่งสําหรับการใช้งาน EditOperation ที่เฉพาะเจาะจง
- EditCommand ไม่ใช่คลาสข้อมูลอีกต่อไป
- เปลี่ยนชื่อฟังก์ชัน EditOperation.process เป็น applyTo
- เปลี่ยนชื่อ InputEventListener เป็น InputEventCallback
- (I0a366)
- แก้ไข Velocity ให้มีองค์ประกอบและการดำเนินการทางคณิตศาสตร์ (Ib0447)
- เปลี่ยนชื่อ @ExperimentalTesting เป็น @ExperimentalTestApi เพื่อให้สอดคล้องกับคำอธิบายประกอบ API เวอร์ชันทดลองที่คล้ายกัน (Ia4502, b/171464963)
- เพิ่มเมธอด stickyHeader เวอร์ชันทดลองสำหรับ LazyColumn/LazyRow (I0a81d)
- เปลี่ยนชื่อ Color.useOrElse() เป็น Color.takeOrElse() (Ifdcf5)
- TestUiDispatcher ที่เลิกใช้งานแล้ว ใช้ Dispatchers.Main แทน (Ic171f, b/175385255)
- เพิ่มปุ่มเปิด/ปิดลงใน 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 เพื่อแจ้งการอัปเดต Selectable ไปยัง SelectionManager (I6ff30, b/173215242)
- เปลี่ยน
fun Dp.isFinite()
เป็นval Dp.isFinite
(I50e00) - เปลี่ยนชื่อ Constraints#satisfiedBy เป็น isSatisfiedBy (I9cf5c)
- เพิ่ม isSpecified, isUnspecified และ useOrElse สำหรับคลาสอินไลน์ที่มีค่าคงที่ที่ไม่ระบุ (I93f7b, b/174310811)
การแก้ไขข้อบกพร่อง
- API ใหม่ที่ใช้ coroutine
Animatable
ที่รับประกันความเฉพาะเจาะจงของภาพเคลื่อนไหว DecayAnimationSpec ใหม่เพื่อรองรับภาพเคลื่อนไหวการลดลงหลายมิติ (I820f2, b/168014930) - เพิ่มการรองรับช่องข้อความที่ปิดใช้และแบบอ่านอย่างเดียว (I35279, b/171040474, b/166478534)
animate()
เปลี่ยนเป็นanimateAsState()
แล้ว ซึ่งแสดงผลเป็นState<T>
แทนT
วิธีนี้ช่วยให้ประสิทธิภาพดีขึ้น เนื่องจากสามารถจํากัดขอบเขตการลบล้างให้แคบลงได้ตรงที่อ่านค่าสถานะ (Ib179e)- เพิ่ม Semantics Role API และเพิ่ม Role เป็นพารามิเตอร์ให้กับ SemanticsModifier ที่คลิกได้ เลือกได้ และเปิด/ปิดได้ เปลี่ยน Modifier.progressSemantics เพื่อให้ Slider ใช้งานได้ด้วย (I216cd)
- ตอนนี้คุณเข้าถึงเหตุการณ์แป้นพิมพ์แบบดั้งเดิมผ่าน 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 ใช้การเรียกกลับรายการเดียวที่มีพารามิเตอร์จุดศูนย์กลาง เลื่อน ซูม และบิดรวมกัน (Ie6e1c)
ย้าย ContentDrawScope ไปยังโมดูล ui-graphics เพื่อรวมเข้ากับ DrawScope (Iee043, b/173832789)
การแก้ไขข้อบกพร่อง
- ตอนนี้ Lambda ในตัวแก้ไขออฟเซตจะแสดงผล IntOffset แทน Float (Ic9ee5, b/174137212, b/174146755)
นํา SlotTable, SlotReader และ SlotWriter ออกจาก API สาธารณะ ก่อนหน้านี้มีการทำเครื่องหมายเป็น InternalComposeAPI ตอนนี้เป็นข้อมูลภายในของข้อบังคับการเขียน
เราได้เพิ่ม CompositionData และ CompositionGroup เข้ามาเพื่อแทนที่ ui-tooling API ที่ใช้ดึงข้อมูลการคอมโพส ข้อมูลเหล่านี้เป็นแบบสาธารณะ แต่ไม่ได้มีไว้เพื่อใช้งานนอก ui-tooling API เนื่องจากให้ข้อมูลดิบที่ ui-tooling API จะตีความ (I31a9c)
ปรับแต่ง ShaderBrush ใหม่เพื่อสร้างอินสแตนซ์ Shader แบบไม่สนใจเมื่อมีข้อมูลการปรับขนาดของสภาพแวดล้อมการวาด ซึ่งมีประโยชน์ในการกําหนดไล่ระดับสีที่ครอบครองขอบเขตการวาดทั้งหมดของคอมโพสิเบิล ณ เวลาจัดองค์ประกอบ โดยไม่ต้องใช้การใช้งาน DrawModifier ที่กําหนดเอง
API ตัวสร้างฟังก์ชันการไล่ระดับสีที่เลิกใช้งานแล้วเพื่อใช้เมธอดการสร้างในออบเจ็กต์ Gradient (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 ทั้งหมดที่ต้องใช้การสร้างจากล่างขึ้นบนเพื่อประสิทธิภาพ การเปลี่ยนแปลงนี้ทำให้Applier
ลบล้างinsertBottomUp()
เพื่อสร้างต้นไม้จากล่างขึ้นบน และinsertTopDown()
เพื่อสร้างต้นไม้จากบนลงล่าง (Icbdc2)เพิ่ม painterResource API เพื่อจัดการการโหลดออบเจ็กต์ Painter แบบทึบจากรูปแบบเนื้อหาแบบแรสเตอร์ (เช่น PNG) หรือ VectorDrawable ผู้บริโภคไม่จำเป็นต้องกำหนดประเภทชิ้นงานล่วงหน้าอีกต่อไป และสามารถเรียกใช้เมธอดนี้เพื่อรับออบเจ็กต์ Painter ไปใช้ในคอมโพสิชันรูปภาพหรือตัวแก้ไข Painter (I2c703, b/173818471)
เพิ่มฟังก์ชันสร้างของ buildAnnotatedString เพื่อสร้าง AnnotatedString ฟังก์ชัน annotatedString builder ที่เลิกใช้งานแล้ว (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) - ย้าย
foundation:foundation-text
api ไปยังfoundation:foundation
แล้ว โครงสร้างแพ็กเกจยังคงเหมือนเดิม (Id3eb2) - ตัวตรวจจับท่าทางสัมผัสแบบมัลติทัชแบบใหม่ รวมถึงตัวช่วยในการตรวจจับการหมุน การซูม และการเลื่อน (Ic459d)
- ตัวตรวจจับท่าทางลากแบบใหม่ที่จะระงับ Pointer Input API รวมถึงการล็อกการวางแนว (Icef25)
- เปลี่ยนชื่อ VectorAsset เป็น ImageVectorย้ายและเปลี่ยนชื่อ VectorAsset เป็น Builder เพื่อให้เป็นคลาสภายในของ ImageVector ตามหลักเกณฑ์ของสภา API เพิ่ม Type Alias ของ VectorAssetBuilder เพื่อลิงก์กับ ImageVector.Builder เพื่อความเข้ากันได้ (Icfdc8)
- เปลี่ยนชื่อ ImageAsset และเมธอดที่เกี่ยวข้องเป็น ImageBitmap (Ia2d99)
- ย้ายพร็อพเพอร์ตี้ความหมายพื้นฐานไปยัง ui (I6f05c)
เพิ่ม API เลื่อนที่ใช้ Coroutine
เพิ่ม LazyListState.snapToItem และ LazyListState.smoothScrollBy รวมถึง API ระดับล่างสําหรับการควบคุมการเลื่อน API เหล่านี้มีอินเทอร์เฟซการระงับเพื่อควบคุมการเลื่อน ซึ่งจะรอจนกว่าการเลื่อนจะเสร็จสิ้นก่อนที่จะแสดงผล (Ie5642)
เพิ่มพารามิเตอร์ singeLine ลงใน BasicTextField, TextField และ OutlinedTextField ตั้งค่าพารามิเตอร์นี้เป็น "จริง" เพื่อให้ช่องข้อความเป็นบรรทัดเดียวที่เลื่อนในแนวนอนได้ (I57004, b/168187755)
เพิ่มตัวตรวจจับท่าทางสัมผัสสำหรับการแตะ การแตะ 2 ครั้ง การกดค้าง และตัวบ่งชี้การกดโดยใช้อินพุตเคอร์เซอร์ที่หยุดชั่วคราวแบบใหม่ นอกจากนี้ เรายังเพิ่มยูทิลิตีบางอย่างเพื่อให้นักพัฒนาแอปเขียนตัวตรวจจับท่าทางของตนเองได้ง่ายขึ้น (I00807)
จำเป็นต้องเพิ่ม Modifier.focusable ใน Foundation ใช้แอตทริบิวต์นี้เพื่อเพิ่มลักษณะการทำงานที่โฟกัสได้ให้กับคอมโพเนนต์ โดยมีความหมายและความสามารถในการเข้าถึงที่ถูกต้อง (I41eb9, b/152525426, b/162865824)
ระบบได้นำ API ที่เลิกใช้งานไปแล้วก่อนหน้านี้ออกแล้ว เช่น Border ถูกนำออกแล้ว ให้ใช้ BorderStroke แทน เราได้นํา Modifier.drawBorder ออกแล้ว ให้ใช้ Modifier.border แทน เราได้นํา Modifier.gravity ออกแล้ว ให้ใช้ Modifier.align แทน นํากองออกแล้ว ให้ใช้กล่องแทน (I32c2b, b/172470874)
เปลี่ยนชื่อ AbsoluteArrangement เป็น Arrangement.Absolute (If26f2)
การแก้ไขข้อบกพร่อง
- ย้าย API ของ DrawModifier จากแพ็กเกจ 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)
- เปลี่ยนชื่อพารามิเตอร์การจัดตำแหน่งของกล่องเป็น contentAlignment (I2c957)
- เปลี่ยนชื่อตัวแก้ไข offsetPx เป็น offset ตอนนี้พารามิเตอร์เหล่านี้ใช้พารามิเตอร์ Lambda แทนสถานะ (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)
- เลิกใช้งานแอมเบียนท์ที่มีชื่อต่อท้ายด้วย
Ambient
และแทนที่ด้วยพร็อพเพอร์ตี้ใหม่ที่ขึ้นต้นด้วยแอมเบียนท์ตามหลักเกณฑ์อื่นๆ ของแอมเบียนท์และ Compose API (I33440) - เพิ่ม Wrapper ของแบบอักษร Android คุณสามารถโหลดแบบอักษร Android ผ่านฟังก์ชัน
typeface
เช่นtypeface(Typeface.DEFAULT)
และเปลี่ยนชื่อtypefaceFromFontFamily()
เป็นtypeface()
ด้วย (I52ab7) - เพิ่มการตรวจสอบ Lint เพื่อตรวจสอบว่าโรงงานตัวแก้ไขใช้
androidx.compose.ui.composed {}
ภายในแทนที่จะทําเครื่องหมายเป็น@Composable
(I3c4bc) - เพิ่มการตรวจสอบ Lint เพื่อตรวจสอบว่าฟังก์ชันของ Factory ของ Modifier ได้รับการกำหนดเป็นส่วนขยายใน Modifier เพื่อให้สามารถเชื่อมต่อกันได้อย่างราบรื่น (I07981)
- เปลี่ยนชื่ออาร์กิวเมนต์เชิงความหมาย mergeAllDescendants เป็น mergeDescendants (Ib6250)
- ตอนนี้การควบคุมเวลาในการทดสอบ (TestAnimationClock และการใช้งาน) อยู่ในช่วงทดลอง (I6ef86, b/171378521)
- นําโมดูล ui-test เก่าและสตับออก (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 คุณควรสร้างบรรยากาศการธีมเฉพาะสำหรับระบบการออกแบบของคุณเองแทน ซึ่งจะใช้ได้ในคอมโพเนนต์ของคุณเอง (I74acc, b/172067770)
- เราเลิกใช้งาน foundation.Text แล้วและแทนที่ด้วย material.Text สำหรับ API ข้อความพื้นฐานที่ไม่แสดงความคิดเห็นซึ่งไม่ใช้ค่าจากธีม โปรดดู androidx.compose.foundation.BasicText (If64cb)
- เพิ่ม maxLines ลงใน TextField (Ib2a5b)
- อัปเดต TextFields ให้ยอมรับ KeyboardOptions (Ida7f3)
- เพิ่ม KeyboardOptions เพื่อใช้ใน TextField (I9ca32)
- เพิ่ม BasicText เป็น API ที่ไม่แสดงความคิดเห็นเกี่ยวกับการออกแบบสำหรับข้อความ ซึ่งทำงานควบคู่ไปกับ BasicTextField (I28268)
- นําคําอธิบายประกอบ ExperimentalLazyDsl ออกแล้ว ตอนนี้ใช้ LazyColumn/LazyRow ได้โดยไม่ต้องเพิ่ม @OptIn แล้ว (Idab7a, b/166584730)
- เลิกใช้งาน BaseTextField แล้ว ให้ใช้ BasicTextField แทน (I896eb)
- เพิ่ม BasicTextField เข้ามาแทนที่ทั้ง CoreTextField และ BaseTextField (Id4cea)
- นำ LazyColumnItems/LazyRowItems ที่เลิกใช้งานแล้วออก (I1d8a8)
- ระบบนำคอมโพสิเบิลที่เลิกใช้งานสำหรับการปรับขนาดตามการวัดค่าที่แท้จริงออกแล้ว (I18537, b/171811496)
- เปลี่ยนชื่อ relativePaddingFrom เป็น paddingFrom เพิ่มตัวแก้ไข paddingFromBaseline เพื่อระบุระยะห่างจากขอบเขตเลย์เอาต์ไปยังบรรทัดฐานของข้อความ (I0440a, b/170633813)
- เพิ่มพารามิเตอร์ matchHeightConstraintsFirst ลงในตัวแก้ไขสัดส่วนภาพ ซึ่งสามารถใช้เพื่อระบุตัวแก้ไขให้ปรับขนาดตามข้อจำกัดความสูงก่อนที่จะลองใช้รายการที่สอดคล้องกับความกว้าง (Ie7c43, b/155290593)
- นํา DpConstraints ที่เลิกใช้งานออกแล้ว (I87884, b/171702471)
การแก้ไขข้อบกพร่อง
- เปิดตัวคลาส ScaleFactor แบบอินไลน์เพื่อแสดงปัจจัยการปรับขนาดสำหรับแกนแนวนอนและแนวตั้งโดยแยกกัน เพื่อรองรับกรณีการใช้งานการปรับขนาดที่ไม่สม่ำเสมอ
- เพิ่มเมธอด computeScaleFactor ลงใน ContentScale
- เพิ่ม ContentScale.FillBounds เพื่อทำการScaling แบบไม่สม่ำเสมอเพื่อยืดขอบเขตของ src ให้เต็มพื้นที่ปลายทาง
- เพิ่มเมธอดโอเปอเรเตอร์เพื่อคํานวณพารามิเตอร์ ScaleFactor ด้วยพารามิเตอร์ขนาด
- (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 เป็นสีที่เป็นไปได้ซึ่งจะวาดชิ้นงานหรือโปรแกรมวาดภาพที่ให้ไว้โดยไม่มี 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 ที่ไม่มี Callback (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 ได้หากไม่ต้องการใช้คลังวัสดุ (I9f622)
- เพิ่ม interactionState ไปยัง Modifier.scrollable, ScrollableColumn และ LazyColumnFor (I81566, b/169509805)
- เพิ่ม alignByBaseline ลงใน RowScope และเปลี่ยนชื่อ alignWithSiblings เป็น alignBy (I06503, b/170628732)
- เปลี่ยนช่องเป็นฟังก์ชันในบรรทัด (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 ของ KeyboardCapitalization (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 เมื่อ overflow เป็น None ข้อความจะไม่จัดการการเลื่อนออกอีกต่อไป และจะรายงานขนาดจริงไปยัง LayoutNode (I175c9, b/158830170)
- อัปเดตพารามิเตอร์ Size.Unspecified เป็น Float.NaN แทนที่จะเป็น Float.POSITIVE_INFINITY อัปเดตการใช้งาน Painter ให้ตรวจสอบกับ Size.Unspecified และขนาดที่ไม่แน่นอน (I95a7e)
- เพิ่มข้อบังคับการเขียนแบบแบ่งหน้าและการผสานรวมการแบ่งหน้า (Ib85da)
- แก้ไข LazyListScope เพื่อรับค่าที่อนุญาตค่า Null (I1765b)
- เปลี่ยนชื่อ OnPositionedModifier เป็น OnGloballyPositionedModifier และเปลี่ยนชื่อ onPositioned() เป็น onGloballyPositioned() (I587e8, b/169083903)
- เพิ่มตัวอย่างสำหรับ LazyColumn/Row (Idc16d)
- แก้ไขเมธอด items และ itemsIndexed เพื่ออนุญาต emptyList (I06647)
- เพิ่ม DSL เพื่อระบุข้อมูลผู้ตรวจสอบ (Ic9a22)
- ย้าย "การกดค้าง" ไปยัง "ข้อความ" (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
- เปลี่ยนชื่อกองเป็นกล่องแล้ว เราจะเลิกใช้งาน foundation.Box ที่มีอยู่ก่อนหน้านี้เพื่อใช้ Box ใหม่ใน compose.foundation.layout ลักษณะการทํางานของกล่องใหม่คือการซ้อนองค์ประกอบย่อยไว้บนกันเมื่อมีองค์ประกอบย่อยหลายรายการ ซึ่งแตกต่างจากกล่องเวอร์ชันเก่าที่ทํางานคล้ายกับคอลัมน์ (I94893, b/167680279)
- เลิกใช้งานพารามิเตอร์การตกแต่งกล่องแล้ว หากต้องการมีการตกแต่ง/ระยะห่างจากขอบในกล่อง ให้ใช้ตัวแก้ไขแทน (Modifier.background, Modifier.border, Modifier.padding) (Ibae92, b/167680279)
- เพิ่มคลาส LazyListState ใหม่ ซึ่งช่วยให้สามารถสังเกตและควบคุมตําแหน่งการเลื่อนของคอมโพเนนต์ LazyRow และ LazyColumn ได้ คุณสร้างอินสแตนซ์ได้โดยใช้ rememberLazyListState() และส่งไปยังพารามิเตอร์สถานะของคอมโพเนนต์ ปัจจุบัน รายการแรกและระยะห่างที่มองเห็นได้จะสังเกตได้ในเวอร์ชันเริ่มต้นนี้ (Ic7cb7, b/159307669)
- ตอนนี้ระบบจะบันทึกและกู้คืนตำแหน่งรายการแบบ Lazy และระยะเลื่อนในการสร้างกิจกรรมใหม่ (Ie045f, b/166589058)
- เพิ่มการดำเนินการตามความหมายของการคลิกค้างไว้ (I6281b, b/156468846)
- เพิ่มยูทิลิตี MutatorMutex เพื่อเก็บ Mutator สถานะที่แชร์สถานะเดียวไว้ตลอด และยกเลิก Mutator ที่ขัดแย้งกันตามลําดับความสําคัญ (I3f975)
- กำกับเนื้อหา rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled และ textInputServiceFactory ด้วย @VisibleForTesting, ทำให้เป็น API ภายใน และซ่อน kdoc (I554eb, b/168308412)
- นําพารามิเตอร์ inlineContent ออกจากข้อความที่มีอินพุตสตริง ระบบจะไม่ใช้ inlineContent เนื่องจาก inlineContent ต้องทํางานร่วมกับ AnnotatedString (Ief403)
- นํา Arrangement API ที่เลิกใช้งานแล้วออก (Ic576d, b/168297922, b/168297923)
- มีการเพิ่มพารามิเตอร์
unbounded
ลงในตัวแก้ไข wrapContentSize ซึ่งช่วยให้วัดองค์ประกอบเลย์เอาต์ที่มีข้อจำกัดสูงสุดแบบไม่จำกัดได้ (I77951, b/158559319) - เราป้องกันไม่ให้นําเข้าเนื้อหาของขอบเขตเลย์เอาต์แบบคงที่ (เช่น alignWithSiblings ใน RowScope) คุณควรใช้ทางเลือกขอบเขตที่ชัดเจนแทน ซึ่งก็คือ
with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }
(I216be, b/166760797)
การแก้ไขข้อบกพร่อง
- อัปเดต Graphics API หลายรายการ
- อัปเดต API การเปลี่ยนรูปแบบการแปลงขนาดและการหมุนเพื่อใช้พารามิเตอร์การเลื่อนตำแหน่งเดียวเพื่อแสดงพิกัดจุดหมุนแทนการใช้พารามิเตอร์ float แยกต่างหากสำหรับพิกัด x/y ใน DrawScope และ DrawTransform
- นําเมธอด Rect.expandToInclude และ Rect.join ออกแล้ว
- อัปเดตเอกสารประกอบของรัศมีเป็น "รูปไข่" นอกเหนือจาก "รูปไข่รี"
- เพิ่มเอกสารประกอบเพื่อระบุว่าไม่ควรเรียกใช้คอนสตรัคเตอร์แบบสาธารณะสำหรับคลาส Radius แบบอินไลน์โดยตรง แต่ควรสร้างอินสแตนซ์ออบเจ็กต์ Radius ผ่านคอนสตรัคเตอร์ของฟังก์ชันแทน
- นำ RoundRect API ออกเพื่อค้นหา 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 อีกต่อไป ไม่เคยรองรับและทำให้ Fling และองค์ประกอบ LazyColumnFor ทั้งหมดทำงานไม่ได้ (I6e101)
- อัปเดต Graphics API หลายรายการ
- อัปเดต DrawScope API ด้วยเมธอดการเปลี่ยนรูปแบบแบบมีขอบเขตเพื่อระบุว่าจะใช้การเปลี่ยนรูปแบบภายในการเรียกกลับเท่านั้น และนำออกหลังจากเรียกการเรียกกลับแล้ว
- อัปเดตเอกสารประกอบ clipPath เพื่อใช้อ้างอิงเส้นทางแทนสี่เหลี่ยมผืนผ้ามน
- แก้ไขระยะห่างในเอกสารประกอบสำหรับพารามิเตอร์ด้านขวาใน clipPath
- เปลี่ยนชื่อ DrawScope.drawCanvas เป็น drawIntoCanvas และนําพารามิเตอร์ขนาดออก
- เปลี่ยนชื่อพารามิเตอร์ dx/dy ในเมธอด inset เป็นแนวนอนและแนวตั้ง
- เพิ่มการโอเวอร์โหลดของ inset ที่ให้ค่า inset เดียวกันกับขอบทั้ง 4
- นำเอกสารประกอบเกี่ยวกับวิธีการใส่ข้อความที่ระบุว่าจะมีการใส่ข้อความทั้ง 4 ด้านออก
- เอกสารประกอบที่อัปเดตสำหรับคลาส Rect
- อัปเดตความคิดเห็นเกี่ยวกับพารามิเตอร์ Rect ให้ตรงกับ kdoc style
- นํา 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)
- การใช้การถ่วงน้ำหนักได้รับการเปลี่ยนชื่อเป็น "จัดแนว" หรือ "การจัดแนว" ใน API เลย์เอาต์อย่างสอดคล้องกัน (I2421a, b/164077038)
- มีการเพิ่มพารามิเตอร์การจัดตำแหน่งลงในกอง ซึ่งช่วยให้ระบุการจัดตำแหน่งเริ่มต้นสำหรับองค์ประกอบย่อยทั้งหมดของกองได้ (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
เมื่อทำการทดสอบที่ต้องใช้ ManualFrameClock และTestUiDispatcher.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 เพื่อปรับให้เข้ากับรูปแบบการตั้งชื่อคอมโพสิทได้ดีขึ้น สร้างตัวสร้างฟังก์ชันที่คล้ายกับ RRect และเลิกใช้งานตัวสร้างฟังก์ชัน RRect (I5d325)
- นํา onChildPositioned และ OnChildPositionedModifier ออก นักพัฒนาซอฟต์แวร์ควรใช้ onPositioned และ OnPositionedModifier ในเลย์เอาต์ย่อยแทน (I4522e, b/162109766)
- ตอนนี้ IntSize เป็นคลาสย่อยในบรรทัด (I2bf42)
- กดพื้นที่ว่างค้างไว้เพื่อแก้ไข (Ib1e5b)
- ซ่อน FloatingToolbar หลังจากแตะข้อความ (If4525)
- ซ่อนแถบเครื่องมือแบบลอยอยู่เมื่ออัปเดตรายการที่เลือก (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 ผสานรวมกับ 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)
- นำ ConstraintLayout DSL เดิมออกแล้ว เปลี่ยนชื่อ 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
- เปลี่ยนชื่อลิสต์ค่าคงที่ ClipOp เป็น Pascal Case
- เปลี่ยนชื่อเอนทิตี FilterQuality เป็น Pascal Case
- เปลี่ยนชื่อลิสต์ค่าคงที่ StrokeJoin เป็น Pascal Case
- เปลี่ยนชื่อเอนทิตี PointMode เป็น Pascal Case
- เปลี่ยนชื่อเอนทิตี PaintingStyle เป็น Pascal Case
- เปลี่ยนชื่อเอนทิตี PathFillType เป็น Pascal Case
- เปลี่ยนชื่อลิสต์ค่าคงที่ StrokeCap เป็น Pascal Case
- อัปเดตการใช้งาน DrawCache เพื่อไม่ให้ใช้พารามิเตอร์ lateinit อีกต่อไป
- อัปเดต DrawScope เพื่อไม่ให้ใช้การมอบสิทธิ์แบบเลื่อนเวลาดำเนินการอีกต่อไปสำหรับพารามิเตอร์ภายในของ fillPaint และ strokePaint
- อัปเดตคอมโพสิชันรูปภาพเพื่อหลีกเลี่ยงการใช้ Box เพื่อลดค่าใช้จ่ายเพิ่มเติม
- อัปเดตคลาส Outline ให้มีคําอธิบายประกอบ @Immutable
- อัปเดต PathNode ให้มีคําอธิบายประกอบ @Immutable สําหรับคำสั่งเส้นทางแต่ละรายการ
- อัปเดตองค์ประกอบย่อยเวกเตอร์เพื่อนำการตรวจสอบแบบมีเงื่อนไขที่ซ้ำซ้อนออกเพื่อหาค่าเท่ากัน เนื่องจากคอมโพสิชันจัดการการตรวจสอบดังกล่าวอยู่แล้ว
- เลิกใช้งานเมธอดคอนสตรัคเตอร์ของ Rect ที่ใช้ร่วมกันเพื่อหันไปใช้คอนสตรัคเตอร์ของฟังก์ชัน
- อัปเดตคลาส Brush และตัวสร้างฟังก์ชันด้วย @Immutable และ @Stable API
- อัปเดต VertexMode enum เป็น PascalCase
- อัปเดตเมธอด selectPaint ของ DrawScope ให้เขียนทับพารามิเตอร์การวาดใน Paint แบบมีเงื่อนไขหากมีการเปลี่ยนแปลง
- อัปเดต Size เพื่อเพิ่ม 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 แทน "Then" มีสัญญาณการจัดเรียงที่ชัดเจนกว่า ทั้งยังห้ามไม่ให้พิมพ์
Modifier.padding().background() + anotherModifier
ซึ่งทำให้ลำดับคำขาดตอนกลางและอ่านยากขึ้น (Iedd58, b/161529964)เพิ่ม SemanticsMatcher
isFocused()
และisNotFocused()
(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
คุณจะต้องดำเนินการต่อไปนี้
การอัปเดตทรัพยากร Dependencies
- หากต้องการใช้ Compose เวอร์ชัน
0.1.0-dev15
คุณจะต้องอัปเดต Dependency ตามข้อมูลโค้ดใหม่ที่แสดงด้านบนในส่วนการประกาศ Dependency
การเปลี่ยนแปลง API
- ในทำนองเดียวกับพารามิเตอร์ใหม่ใน ScrollableColumn/ScrollableRow ตอนนี้ LazyColumnItems/LazyRowItems มีพารามิเตอร์ contentPadding ด้วย ซึ่งช่วยให้เพิ่มการเว้นวรรคสำหรับเนื้อหาหลังจากที่ถูกตัด ซึ่งทำไม่ได้ผ่านพารามิเตอร์ตัวแก้ไขเพียงอย่างเดียว และยังเพิ่มการเว้นวรรคได้เฉพาะก่อนรายการแรก/หลังรายการสุดท้าย (Ibc24e)
- เปลี่ยนชื่อการเรียกกลับ onFocusChange ในช่องข้อความเป็น onFocusChanged (Ida4a1)
- เลิกใช้งาน VerticalScroller และ HoriziontalScroller แล้ว ใช้ ScrollableColumn และ ScrollableRow เพื่อประสบการณ์การใช้งานในตัวด้วยลักษณะการทำงานและพารามิเตอร์ของคอลัมน์/แถว หรือ 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 เริ่มต้นสำหรับคอมโพสิชันรูปภาพจาก Inside เป็น Fit การดำเนินการนี้ทำเพื่อให้มีการปรับขนาด Painter ที่อยู่เบื้องหลังหากขนาดเลย์เอาต์ใหญ่กว่าขนาดโดยธรรมชาติของ Painter ขณะรักษาสัดส่วนภาพ ลักษณะการทำงานนี้ตรงกับสิ่งที่คาดหวังมากขึ้นสำหรับการระบุขนาดคงที่ให้กับรูปภาพ โดยไม่ส่งผลต่อลักษณะการทำงานเริ่มต้นหากใช้เฉพาะขนาดที่แท้จริงเพื่อคํานวณขนาดขององค์ประกอบ (I40ae3, b/159838006)
- ใช้ AnimationSpec แทน AnimationBuilder ใน API ระดับบนสุดเพื่อชี้แจงแนวคิดเกี่ยวกับข้อกําหนดเฉพาะของภาพเคลื่อนไหวแบบคงที่ - ปรับปรุง DSL การเปลี่ยนรูปแบบโดยนําข้อกําหนดของ Lambda ในการสร้าง AnimationSpecs เช่น Tween, Spring ออก แต่จะรับพารามิเตอร์คอนสตรัคเตอร์โดยตรงแทน -ปรับปรุงความง่ายในการใช้งานโดยรวมของ AnimationSpec โดยเปิดใช้คอนสตรัคเตอร์แทนที่จะใช้ตัวสร้าง -เปลี่ยนระยะเวลาและการหน่วงเวลาสำหรับ KeyFrames และ Tween เป็น Int ซึ่งจะช่วยลดการแคสต์ประเภทที่ไม่จำเป็นและการโอเวอร์โหลดเมธอด (เพื่อรองรับทั้ง Long และ Int) (Ica0b4)
- นำ "คลิกได้" ออกแล้ว ใช้ Modifier.clickable (I84bdf)
- เพิ่ม LazyRowItems - รายการที่เลื่อนในแนวนอนซึ่งคล้ายกับ LazyColumnItems (Ibbcf7)
- เปิดตัว API ภาพเคลื่อนไหวแบบไม่มีสถานะระดับล่าง API เหล่านี้ (I63bf7)
- เลิกใช้งาน androidx.ui.foundation.TextFieldValue และ androidx.ui.input.EditorValue แล้ว คอมโพสิเบิล TextField, FilledTextField และ CoreTextField ที่ใช้ประเภทดังกล่าวจะเลิกใช้งานด้วย โปรดใช้ androidx.ui.input.TextFieldValue แทน (I4066d, b/155211005)
- แทนที่การใช้ IntPx ด้วย Int แทนที่ IntPxPosition ด้วย IntOffset แทนที่ IntPxSize ด้วย IntSize (Ib7b44)
- นํา androidx.ui.foundation.shape.RectangleShape ออกแล้ว ใช้ 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 ในคลาสคอมโพสิต์ต่างๆ เป็นส่วนหนึ่งของความพยายามในการรีแฟกทอริงครั้งใหญ่เพื่อใช้เฉพาะ Dp และประเภทพื้นฐานสำหรับพารามิเตอร์พิกเซล (I19d02)
- ตอนนี้ VerticalScroller มีคอลัมน์ให้ใช้งานทันที ตอนนี้ HorizontalScroller มีแถวให้ใช้งานตั้งแต่แกะกล่อง (Ieca5d, b/157020670)
- แทนที่การใช้คลาส Px ในคลาสคอมโพสิทต่างๆ เป็นส่วนหนึ่งของความพยายามในการรีแฟกทอริงครั้งใหญ่เพื่อใช้เฉพาะ Dp และประเภทพื้นฐานสำหรับพารามิเตอร์พิกเซล (Iede0b)
- เพิ่ม Modifier.indication ลงในแพ็กเกจพื้นฐานแล้ว ใช้เพื่อแสดงการกด/ลาก/การบ่งชี้อื่นๆ ในองค์ประกอบที่โต้ตอบได้ที่กำหนดเอง (I8425f, b/155287131)
- ตอนนี้ VerticalScroller และ HorizontalScroller รองรับการเลื่อนย้อนกลับแล้ว หากตั้งค่า isReversed ใน ScrollerPosition (I953bd)
- รองรับการเพิ่มคอมโพสิเบิลลงในเลย์เอาต์ข้อความ (I1373c)
- รวมการใช้งาน CanvasScope เข้าด้วยกันเพื่อให้เหลือเพียง DrawScope และ ContentDrawScope เท่านั้น และเปลี่ยนชื่อ CanvasScope เป็น DrawScope อัปเดต DrawScope เพื่อใช้อินเทอร์เฟซ Density และระบุ LayoutDirection ลบคลาสย่อย DrawScope ใน ContentDrawScope อัปเดต Painter และ PainterModifier เพื่อไม่ให้ดูแลรักษาพร็อพเพอร์ตี้ RTL เองอีกต่อไปเนื่องจาก DrawScope มีพร็อพเพอร์ตี้นี้อยู่แล้วโดยไม่ต้องระบุด้วยตนเอง (I1798e)
- นำ DrawBackground API ที่เลิกใช้งานออกแล้ว และใช้ Extension DrawBackground API ใน Modifier แทน ปรับแต่งการใช้สี แปรง และสีวาดพื้นหลังเพื่อลดเส้นทางโค้ด รวมถึงนำข้อกำหนดในการสร้างตัวแก้ไขออกเพื่อเป็นส่วนหนึ่งของการคอมโพสิชัน (I0343a)
- อัปเดตระดับที่สูงขึ้นเพื่อคอมโพส API ที่แสดง 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 ออกแล้ว กล่องผู้ใช้ที่มีตัวแก้ไข drawBackground แทน (I983c7, b/152753731)
เพิ่มการปรับแต่งสีเคอร์เซอร์ใน TextField (I6e33f)
ตอนนี้คุณสามารถซ่อน/แสดงแป้นพิมพ์ซอฟต์แวร์ได้โดยใช้ SoftwareKeyboardController ซึ่งส่งโดย callback ของ 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)
การอัปเดต TextField API - ผสานการเรียกกลับ onFocus และ onBlur เข้าด้วยกันเป็นการเรียกกลับ onFocusChange(Boolean) รายการเดียวพร้อมพารามิเตอร์ (I66cd3)
เปลี่ยนชื่อ ScaleFit เป็น ContentScaleย้าย ContentScale จากโมดูล ui-graphics ไปยัง ui-core เพื่อให้อยู่ในโมดูลเดียวกับ Alignment API เปลี่ยนชื่อ FillMaxDimension เป็น Crop เปลี่ยนชื่อ FillMinDimension เป็น Fit เปลี่ยนชื่อ Fit เป็น 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
- สร้างขอบเขตผู้รับสำหรับ ContentDrawScope ของ draw()
- นําพารามิเตอร์ทั้งหมดใน 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.core ไปยังแพ็กเกจ androidx.ui.foundation (I87ce5)เพิ่มพารามิเตอร์
enabled
ลงในช่องทําเครื่องหมาย สวิตช์ และเปิด/ปิดได้ (I41c16)ตอนนี้ Ripple เป็นแป้นกดร่วมแล้ว แม้ว่าจะยังไม่ได้แปลงค่าที่คลิกได้ แต่การใช้งานที่แนะนําคือ
Clickable(onClick = { ... }, modifier = ripple())
(Ie5200, b/151331852, b/150060763)เพิ่ม VectorPainter API เพื่อแทนที่ API องค์ประกอบย่อยที่มีอยู่สำหรับกราฟิกเวกเตอร์ ผลลัพธ์ขององค์ประกอบย่อยคือออบเจ็กต์ VectorPainter แทนที่จะเป็น DrawModifier เลิกใช้งาน DrawVectorcomposable ก่อนหน้านี้เพื่อใช้ VectorPainter แทน
เปลี่ยนชื่อ
Image(Painter)
API เป็นPaintBox(Painter)
สร้างคอมโพสิชันเวกเตอร์ที่ทํางานเหมือนคอมโพสิชันรูปภาพ ยกเว้นการใช้ VectorAsset แทน ImageAsset (I9af9a, b/149030271)สร้างคอมโพสิชันรูปภาพเพื่อจัดการขนาด/เลย์เอาต์ นอกเหนือจากการวาด ImageAsset ที่ระบุไปยังหน้าจอ คอมโพสิเบิลนี้ยังรองรับการวาดอินสแตนซ์ Painter ใดก็ได้ตามต้องการโดยคำนึงถึงขนาดโดยธรรมชาติของอินสแตนซ์นั้นๆ รวมถึงรองรับขนาดคงที่หรือขนาดขั้นต่ำที่กำหนด (Ibcc8f)
ตอนนี้ Button, FloatingActionButton และ Clickable มีพารามิเตอร์
enabled
แยกกัน มีการเปลี่ยนชื่อหรือจัดลําดับพารามิเตอร์ในปุ่มใหม่ (I54b5a)เปลี่ยนชื่อจาก "รูปภาพ" เป็น "ชิ้นงานรูปภาพ" เพื่อให้เห็นความแตกต่างระหว่างข้อมูลรูปภาพกับองค์ประกอบรูปภาพที่กำลังจะมีให้บริการซึ่งใช้ในการวางเลย์เอาต์และวาดเนื้อหาได้ดียิ่งขึ้น
สร้างเมธอดการขยายใน android.graphics.Bitmap
Bitmap.asImageAsset()
เพื่อสร้างอินสแตนซ์ของ ImageAsset ซึ่งมีประโยชน์สำหรับการรวมการพัฒนาแอปพลิเคชัน Android แบบดั้งเดิมเข้ากับเฟรมเวิร์ก Compose (Id5bbd)นำคอมโพสิเบิล DrawImage ออกแล้ว ใช้ ImagePainter เพื่อวาดรูปภาพในเลย์เอาต์ที่มีอยู่ หรือ SimpleImage เพื่อแสดงรูปภาพที่กินพื้นที่ (I595e1, b/149827027)
คอมโพเนนต์สแต็กรองรับทิศทางจากขวาไปซ้าย (Ic9e00)
เพิ่ม Icon, IconButton และ IconToggleButton และนำ AppBarIcon ออก คุณสามารถแทนที่การใช้งาน AppBarIcon ที่มีอยู่ด้วย IconButton ได้โดยตรง แล้วตอนนี้ไอคอนเหล่านั้นจะมีเป้าหมายการสัมผัสที่ถูกต้อง ดูข้อมูลการใช้งานจากตัวอย่าง และดูไอคอนสำหรับ Material Icons ที่ให้มาซึ่งคุณใช้กับคอมโพเนนต์เหล่านี้ได้โดยตรง (I96849)
นำคอมโพสิเบิล DrawShape ออกแล้ว ใช้ตัวแก้ไข DrawBackground แทน (I7ceb2)
เพิ่ม AdapterList ซึ่งเป็นคอมโพเนนต์รายการแบบเลื่อนที่คอมไพล์และวางตำแหน่งรายการที่มองเห็นได้เท่านั้น ปัญหาที่ทราบในปัจจุบันมีดังนี้ การทำงานเป็นแบบแนวตั้งเท่านั้นและไม่สามารถจัดการกับการเปลี่ยนแปลงทั้งหมดของรายการย่อยได้ (Ib351b)
เพิ่มคอมโพเนนต์ที่เลื่อนได้ ซึ่งช่วยให้สร้าง Scroller/List ที่กำหนดเองได้ (I5fd37)
เปลี่ยนชื่อพื้นหลังเป็น DrawBackground และทําให้ระบบจดจําโดยค่าเริ่มต้น (Ia0bd3)
เพิ่มการเว้นวรรค เส้นขอบ รูปร่าง และพารามิเตอร์พื้นหลังลงในกล่อง (I05027, b/148147281)
เพิ่มคอมโพเนนต์ Canvas คอมโพสิชันนี้ใช้พื้นที่บางส่วน (ระบุโดยผู้ใช้) และให้คุณวาดโดยใช้ CanvasScope ได้ (I0d622)
เปลี่ยนชื่อตัวควบคุม
Border
เป็นDrawBorder
(I8ffcc)เพิ่มคอมโพเนนต์ Box เพื่อรวมฟังก์ชันการทำงานทั่วไปของเลย์เอาต์และการวาด (I6e2a7)
ตอนนี้แถบเลื่อนจะแสดงลักษณะการเลื่อนของ Android ดั้งเดิม (I922af, b/147493715)
แทนที่ DrawBorder ด้วย Border Modifier (Id335a)
เปลี่ยนชื่อ Modifier.tag เป็น Modifier.layoutId เพื่อไม่ให้เกิดความสับสนกับ Modifier.testTag (I995f0)
เปลี่ยนชื่อพารามิเตอร์เปอร์เซ็นต์เมื่อสร้างหลักเกณฑ์ ConstraintLayout เป็น "เศษส่วน" (Ida2db)
เพิ่มการรองรับระยะขอบของสิ่งกีดขวางใน ConstraintLayout (I47ffe)
แก้ไขการรองรับ RTL ใน ConstraintLayout เพิ่ม API ที่ไม่รองรับ RTL (I3b1c7)
เพิ่ม DSL ใหม่สำหรับ ConstraintLayout แล้ว โปรดดูรายละเอียดเพิ่มเติมในตัวอย่าง (Icaa9a)
เพิ่มคำอธิบายประกอบ @ExperimentalLayout ตอนนี้ ConstraintLayout, FlowRow และ FlowColumn ได้รับการติดแท็กไว้เพื่อระบุว่า API ของพวกมันจะเปลี่ยนแปลง (I412a8)
เพิ่ม
Modifier.padding(InnerPadding)
แล้ว (I94985, b/157133803)นำ RowAlign และ ColumnAlign ที่ใช้ไม่ได้แล้วในแถวและคอลัมน์ออก (If60d4, b/155858731)
นำ LayoutTag() ที่เลิกใช้งานแล้วออก โปรดใช้ Modifier.tag() แทน นำ Modifier.matchParent() ที่ใช้ไม่ได้แล้วออก โปรดใช้ Modifier.matchParentSize() แทน (If8044)
เพิ่มตัวแก้ไขเลย์เอาต์ offsetPx ซึ่งสามารถใช้เพื่อกำหนดระยะห่าง (แบบไดนามิก) เป็นพิกเซล (I5af57)
คอมโพสิชัน AlignmentLineOffset เลิกใช้งานแล้ว โปรดใช้ตัวแก้ไข relativePaddingFrom() แทน นำคอมโพสิเบิล 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 ลงในแถวและคอลัมน์ตามลำดับ (I7dc5a)
อัปเดต wrapContentWidth และ wrapContentHeight เพื่อใช้การวางแนวแนวตั้งหรือแนวนอนแทนการวางแนว เราได้อัปเดตตัวแก้ไขแรงโน้มถ่วงให้ยอมรับการจัดแนวแนวตั้งหรือแนวนอน อัปเดตแถว คอลัมน์ และกองเพื่อรองรับการจัดแนวต่อเนื่องที่กำหนดเอง (Ib0728)
ทำให้ Alignment สร้างได้ทันทีโดยใช้ค่าที่กำหนดเอง เพิ่มการจัดแนว 1 มิติ (Ia0c05)
เปลี่ยนชื่อ EdgeInsets เป็น InnerPadding เปลี่ยนชื่อพารามิเตอร์ innerPadding ของปุ่ม Material เป็น padding (I66165)
ตอนนี้ alignToSiblings ยอมรับ Measured แทน Placeable แล้ว (I5788d)
เพิ่มตัวแก้ไขสำหรับการปรับขนาดลงในการวัดค่าที่แท้จริงและเลิกใช้งานคอมโพเนนต์ที่มีไว้เพื่อวัตถุประสงค์นี้ (I8295d)
เพิ่มการรองรับการปรับแต่งขนาดขององค์ประกอบย่อยของ ConstraintLayout (Idb1a5)
นำคอมโพสิเบิล "ตัดข้อความให้พอดี" และ "จัดกึ่งกลาง" ที่เลิกใช้งานแล้วออก (I29e23)
เพิ่ม LayoutModifier2 ซึ่งเป็น API ใหม่สำหรับการกำหนดตัวแก้ไขเลย์เอาต์ เลิกใช้งาน LayoutModifier (If32ac)
ตอนนี้สมาชิก RowScope และ ColumnScope สามารถเข้าถึงได้นอกแถวและคอลัมน์ (I3a641)
เลิกใช้งานคอนเทนเนอร์แล้ว ให้ใช้ Box แทน (I675ce, b/151407926)
เพิ่มตัวแก้ไข LayoutOffset สำหรับการเลื่อนตำแหน่งเลย์เอาต์ (I0b8a3)
การรองรับ Rtl ในเลย์เอาต์การเขียนอีเมลครั้งแรก (Ia5519)
อัปเดต LayoutAlign เพื่อไม่ให้เติมเต็มพื้นที่ว่างอีกต่อไป (I2b14f)
นำคอมโพสิชันสัดส่วนภาพออกเพื่อใช้ตัวปรับแต่งแทน ลบไปแล้ว คอมโพสิเบิล 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)
- เปลี่ยนชื่อ
runOnIdleCompose
เป็นrunOnIdle
(I83607) - มีการเปลี่ยนชื่อ API การทดสอบหลายรายการเพื่อให้เข้าใจง่ายขึ้น API ทั้งหมดของ findXYZ เปลี่ยนชื่อเป็น onNodeXYZ แล้ว API ทั้งหมดของ doXYZ ได้เปลี่ยนชื่อเป็น performXYZ แล้ว (I7f164)
- นำ Modifier.ripple ที่ใช้ไม่ได้แล้วก่อนหน้านี้ออก ตอนนี้ Clickable ใช้การกระเพื่อมเป็นการแสดงผลเริ่มต้น (หากคุณตั้งค่า MaterialTheme {} ในแอปพลิเคชัน) ดังนั้นในกรณีส่วนใหญ่ คุณจะใช้ Clickable และรับการแสดงผลการกระเพื่อมได้ฟรี หากต้องการปรับแต่งพารามิเตอร์สี / ขนาด / ขอบเขตของภาพกระเพื่อม คุณสามารถสร้าง 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)
- ก่อนการเปลี่ยนแปลงนี้ ปลั๊กอินคอมไพเลอร์คอมโพสิทจะขัดจังหวะการเรียกตัวสร้างคอนสตรัคเตอร์ภายในฟังก์ชัน @Composable อย่างไม่ง่ายดายหากมี (I5205a, b/158123804)
- เพิ่มคอมโพสิชัน
viewModel()
ซึ่งช่วยให้สร้างหรือรับ ViewModel ที่สร้างขึ้นแล้วได้คล้ายกับวิธีการทํางานใน Activity หรือ Fragment (I5fdd1) ปรับโครงสร้างคลาส Radius เป็นคลาสแบบอินไลน์ นําเมธอดการสร้างคอมพาเนียนออกเพื่อใช้ตัวสร้างฟังก์ชันที่มีพารามิเตอร์เริ่มต้นเพื่อให้รัศมีตามแนวแกน y ตรงกับพารามิเตอร์รัศมีตามแนวแกน x ที่ต้องระบุ
อัปเดต DrawScope.drawRoundRect ให้ใช้พารามิเตอร์ Radius รายการเดียวแทนค่า float 2 ค่าแยกกันสำหรับรัศมีตามแกน x และ y (I46d1b)
แทนที่การใช้คลาส Px ในคลาสคอมโพสิต์ต่างๆ เป็นส่วนหนึ่งของความพยายามในการรีแฟกทอริงครั้งใหญ่เพื่อใช้เฉพาะ Dp และประเภทพื้นฐานสำหรับพารามิเตอร์พิกเซล ลบชั้น Px ทั้งหมด (I3ff33)
แทนที่การใช้คลาส Px ในคลาสคอมโพสิต์ต่างๆ เป็นส่วนหนึ่งของความพยายามในการรีแฟกทอริงครั้งใหญ่เพื่อใช้เฉพาะ Dp และประเภทพื้นฐานสำหรับพารามิเตอร์พิกเซล (I086f4)
แทนที่การใช้คลาส Px ในคลาสคอมโพสิต์ต่างๆ เป็นส่วนหนึ่งของความพยายามในการรีแฟกทอริงครั้งใหญ่เพื่อใช้เฉพาะ Dp และประเภทพื้นฐานสำหรับพารามิเตอร์พิกเซล (Id3434)
แทนที่การใช้คลาส Px ในคลาสคอมโพสิทต่างๆ เป็นส่วนหนึ่งของความพยายามในการรีแฟกทอริงครั้งใหญ่เพื่อใช้เฉพาะ Dp และประเภทพื้นฐานสำหรับพารามิเตอร์พิกเซล (I97a5a)
เคอร์เซอร์ของ TextField มีภาพเคลื่อนไหวกะพริบ (Id10a7)
ท่าทางสัมผัสบางส่วนไม่จําเป็นต้องส่ง GestureToken (Id7ae5) อีกต่อไป
แทนที่การใช้คลาส Px ในคลาสคอมโพสิต์ต่างๆ เป็นส่วนหนึ่งของความพยายามในการรีแฟกทอริงครั้งใหญ่เพื่อใช้เฉพาะ Dp และประเภทพื้นฐานสำหรับพารามิเตอร์พิกเซล (I57bff)
Modifier.semantics เลิกเลิกใช้งานแล้วเพื่อให้ใช้กับคอมโพเนนต์ระดับสูงได้ (I4cfdc)
เปลี่ยนชื่อ AnnotatedString.Builder.addAnnotationString เป็น addStringAnnotation (I5059e)
อัปเดต Alignment API และเพิ่มการรองรับการจัดแนวแบบสัมบูรณ์ (ซึ่งจะไม่มิเรอร์โดยอัตโนมัติในบริบท Rtl) (I38cd3)
องค์ประกอบย่อยของเลย์เอาต์และ LayoutModifier สามารถวัดได้ด้วยทิศทางเลย์เอาต์อื่น (Ibd731)
เพิ่มพารามิเตอร์สี่เหลี่ยมผืนผ้าที่ไม่บังคับลงใน ImagePainter เพื่อรองรับการวาดส่วนย่อยของ ImageAsset ที่อยู่เบื้องหลัง (I0ea9e)
แก้ไขข้อขัดข้องใน AdapterList เมื่อนำรายการออก (Ic64b0, b/153195921)
เราได้เปลี่ยนวิธีวัดเลย์เอาต์แรกที่คุณใส่ไว้ในบล็อก activity.setContent { } ก่อนหน้านี้ เลย์เอาต์ต้องเต็มหน้าจอกิจกรรม แต่ตอนนี้จะทำงานเหมือนกับว่าคุณวางเลย์เอาต์ไว้ในกอง โดยสามารถมีขนาดเล็กกว่าหน้าจอและวางไว้ที่ด้านซ้ายบนของหน้าจอ หากต้องการลักษณะการทำงานแบบเก่า ให้ใช้ Modifier.fillMaxSize() สำหรับเลย์เอาต์ (Ie88a7, b/153453714)
เปลี่ยนชื่อโมดูล ui-text-compose เป็น ui-text ตอนนี้ ui-text มีคอมโพสิเบิล CoreText และ CoreTextField แล้ว (Ib7d47)
เปลี่ยนชื่อโมดูล ui-text เป็น ui-text-core (I57dec)
ย้ายคอมโพสิเบิล ui-framework/CoreText, CoreTextField ไปไว้ภายใต้ ui-text-compose คุณอาจต้องใส่ ui-text-compose ในโปรเจ็กต์ (I32042)
ตอนนี้
runOnIdleCompose
และrunOnUiThread
เป็นฟังก์ชันส่วนกลางแทนเมธอดใน ComposeTestRule (Icbe8f)[Mutable]ย้ายโอเปอเรเตอร์ตัวรับมอบสิทธิ์พร็อพเพอร์ตี้สถานะไปยังส่วนขยายเพื่อรองรับการเพิ่มประสิทธิภาพตัวรับมอบสิทธิ์พร็อพเพอร์ตี้ของ Kotlin 1.4 ผู้โทรต้องเพิ่มการนําเข้าเพื่อใช้
by state { ... }
หรือby mutableStateOf(...)
ต่อ (I5312c)ตอนนี้ DrawLayerModifier และ drawLayer() จะตั้งค่าเริ่มต้นของ clipToBounds และ clipToOutline เป็นเท็จ (I0eb8b, b/152810850)
เปลี่ยนชื่อ LayoutResult เป็น MeasureResult (Id8c68)
คอมโพสิชันศูนย์ที่เลิกใช้งานแล้ว ควรแทนที่ด้วยตัวแก้ไข LayoutSize.Fill + LayoutAlign.Center หรือคอมโพสิชัน Box หรือ Stack รายการใดรายการหนึ่งที่ใช้ตัวแก้ไขที่เหมาะสม (Idf5e0)
เปลี่ยนชื่อ LayoutFlexible เป็น LayoutWeight เปลี่ยนชื่อพารามิเตอร์แบบแน่นเป็น "fill" (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 หรือคอมโพสิชัน 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 ฯลฯ
- เพิ่ม @Composable API ชุดใหม่ที่มีน้ำหนักเบาสำหรับแสดงภาพเคลื่อนไหวระหว่างค่า
- (I79530)
การเปลี่ยนแปลงที่สำคัญใน Ambients API ดูรายละเอียดได้ในบันทึกและเอกสารประกอบของ
Ambient<T>
(I4c7ee, b/143769776)ตอนนี้ตำแหน่ง Int ของเส้นการจัดตำแหน่งที่แสดงผลจาก Placeable#get(AlignmentLine) จะไม่เป็นค่า Null หากไม่มีบรรทัดการจัดตำแหน่งที่ค้นหา ระบบจะแสดงผล AlignmentLine.Unspecified (I896c5, b/158134875)
แก้ไขข้อบกพร่อง ConstraintLayout ที่ทําให้เกิดความขัดข้องในการคอมโพสิชันใหม่ (Ibee5a, b/158164341)
มีการเปลี่ยนแปลง API ของแลมดาต่อท้าย 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)
เราเลิกใช้งานคอมโพสิเบิล ParentData แล้ว คุณควรสร้างตัวแก้ไขที่ใช้อินเทอร์เฟซ ParentDataModifier หรือใช้ตัวแก้ไข LayoutTag หากต้องการติดแท็กองค์ประกอบย่อยของเลย์เอาต์เพื่อจดจําภายในบล็อกการวัด (I51368, b/150953183)
เพิ่ม OnPositionedModifier และ OnChildPositionedModifier เพื่อแทนที่ฟังก์ชันคอมโพสิเบิล OnPositioned และ OnChildPositioned (I2ec8f)
ไม่อนุญาตให้ใช้การถ่วงเชิงลบใน LayoutPadding คุณควรใช้ LayoutOffset แทนสำหรับออฟเซ็ตตำแหน่งเชิงลบ (Ifb5b1)
WithConstraints ได้พารามิเตอร์ LayoutDirection (I6d6f7)
อัปเดต Flag
ComposeFlags.COMPOSER_PARAM
เป็นtrue
ซึ่งจะเปลี่ยนกลยุทธ์การสร้างโค้ดสำหรับปลั๊กอินการเขียน ในระดับสูง การดำเนินการนี้จะทําให้ระบบสร้างฟังก์ชัน @Composable ที่มีพารามิเตอร์สังเคราะห์เพิ่มเติม ซึ่งจะส่งผ่านไปยังการเรียก @Composable ถัดไปเพื่อให้รันไทม์จัดการการดําเนินการได้อย่างเหมาะสม การเปลี่ยนแปลงนี้ถือเป็นการเปลี่ยนแปลงที่สำคัญซึ่งจะทำให้เกิดข้อจำกัดในการใช้งานไบนารี อย่างไรก็ตาม การเปลี่ยนแปลงนี้ควรรักษาความเข้ากันได้ระดับซอร์สโค้ดในการใช้งานคอมโพซทั้งหมดที่ได้รับอนุญาต (I7971c)เปลี่ยน LayoutCoordinates เพื่อให้ providedAlignmentLines เป็น Set แทน Map และทำให้ LayoutCoordinates ใช้โอเปอเรเตอร์ get() แทนในการดึงข้อมูลค่า วิธีนี้ช่วยให้ตัวแก้ไขแก้ไขค่าอย่างน้อย 1 ค่าของชุดได้ง่ายขึ้นโดยไม่ต้องสร้างคอลเล็กชันใหม่สําหรับตัวแก้ไขแต่ละรายการ (I0245a)
LayoutCoordinates ไม่มีพร็อพเพอร์ตี้ตำแหน่งแล้ว พร็อพเพอร์ตี้ตำแหน่งจะไม่มีความหมายเมื่อพิจารณา LayoutModifiers, การพลิก หรือการปรับขนาด นักพัฒนาซอฟต์แวร์ควรใช้ parentCoordinates และ childToLocal() เพื่อคํานวณการเปลี่ยนรูปแบบจาก LayoutCoordinate หนึ่งไปยังอีกรูปแบบหนึ่งแทน
LayoutCoordinates ใช้ IntPxSize สำหรับพร็อพเพอร์ตี้ขนาดแทน PxSize เลย์เอาต์ใช้ขนาดพิกเซลแบบจำนวนเต็มสำหรับเลย์เอาต์ ดังนั้นขนาดเลย์เอาต์ทั้งหมดควรใช้จำนวนเต็ม ไม่ใช่ค่าทศนิยม (I9367b)
การปรับปรุงอินเทอร์เฟซ API ของข้อจํากัด (I0fd15)
เพิ่ม TextDirection.Content (I48f36)
ปรับเมนูแถบเครื่องมือให้แสดงการคัดลอก ตัด วาง อย่างถูกต้อง (Id3955)
เพิ่ม FloatingToolbar สำหรับการเลือก TextField (Ie8b07)
เปลี่ยนชื่อ TextDirectionAlgorithm เป็น TextDirection (I75ce8)
เปลี่ยนชื่อ TextDirection เป็น ResolvedTextDirection (I3ff38)
เพิ่ม HapticFeedback ไปยัง TextField Selection (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)