Compose Foundation
androidx.compose.foundation
androidx.compose.foundation.layout
androidx.compose.foundation.gestures
androidx.compose.foundation.selection
androidx.compose.foundation.lazy
androidx.compose.foundation.interaction
androidx.compose.foundation.text
(ดูเอกสารอ้างอิง API สำหรับแพ็กเกจ Compose ทั้งหมด)
| อัปเดตล่าสุด | รุ่นที่เสถียร | รุ่นที่อาจได้รับการเผยแพร่ | รุ่นเบต้า | รุ่นอัลฟ่า |
|---|---|---|---|---|
| 9 กันยายน 2026 | 1.12.1 | - | - | 1.13.0-alpha03 |
โครงสร้าง
Compose คือการรวมรหัสกลุ่ม Maven 7 รายการภายใน androidx แต่ละกลุ่ม
มีฟังก์ชันการทำงานย่อยที่กำหนดเป้าหมาย โดยแต่ละกลุ่มจะมีชุดหมายเหตุ
ประจำรุ่นของตัวเอง
ตารางนี้อธิบายกลุ่มและลิงก์ไปยังชุดหมายเหตุประจำรุ่นแต่ละชุด
| กลุ่ม | คำอธิบาย |
|---|---|
| compose.animation | สร้างภาพเคลื่อนไหวในแอปพลิเคชัน Jetpack Compose เพื่อยกระดับประสบการณ์ของผู้ใช้ |
| compose.compiler | แปลงฟังก์ชัน @Composable และเปิดใช้การเพิ่มประสิทธิภาพด้วยปลั๊กอินคอมไพเลอร์ Kotlin |
| compose.foundation | เขียนแอปพลิเคชัน Jetpack Compose ด้วยองค์ประกอบพื้นฐานที่พร้อมใช้งาน และขยายรากฐานเพื่อสร้างชิ้นส่วนระบบการออกแบบของคุณเอง |
| compose.material | สร้าง UI ของ Jetpack Compose ด้วยคอมโพเนนต์ Material Design ที่พร้อมใช้งาน นี่คือจุดแรกเข้าของ Compose ในระดับที่สูงขึ้น ซึ่งออกแบบมาเพื่อจัดหาคอมโพเนนต์ที่ตรงกับคอมโพเนนต์ที่อธิบายไว้ที่ www.material.io |
| compose.material3 | สร้าง UI ของ Jetpack Compose ด้วยคอมโพเนนต์ Material Design 3 ซึ่งเป็นวิวัฒนาการขั้นถัดไปของ Material Design Material 3 มีการอัปเดตการกำหนดธีมและคอมโพเนนต์ รวมถึงฟีเจอร์การปรับเปลี่ยนในแบบของคุณของ Material You เช่น สีแบบเปลี่ยนอัตโนมัติ และออกแบบมาให้สอดคล้องกับสไตล์ภาพและ UI ของระบบ Android 12 ใหม่ |
| compose.runtime | ส่วนประกอบพื้นฐานของรูปแบบการเขียนโปรแกรมและการจัดการสถานะของ Compose รวมถึงรันไทม์หลักสำหรับปลั๊กอินคอมไพเลอร์ Compose เพื่อกำหนดเป้าหมาย |
| compose.ui | คอมโพเนนต์พื้นฐานของ UI ของ Compose ที่จำเป็นต่อการโต้ตอบกับอุปกรณ์ ซึ่งรวมถึงเลย์เอาต์ การวาด และอินพุต |
การประกาศทรัพยากร Dependency
หากต้องการเพิ่มทรัพยากร Dependency ใน Compose คุณต้องเพิ่มที่เก็บ Maven ของ Google ลงในโปรเจ็กต์ อ่านข้อมูลเพิ่มเติมได้ที่ที่เก็บ Maven ของ Google
เพิ่มทรัพยากร Dependency สำหรับอาร์ติแฟกต์ที่ต้องการในไฟล์ build.gradle สำหรับ
แอปหรือโมดูล
Groovy
dependencies { implementation "androidx.compose.foundation:foundation:1.12.1" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.foundation:foundation:1.12.1") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
ดูข้อมูลเพิ่มเติมเกี่ยวกับการพึ่งพาได้ที่เพิ่มการพึ่งพาบิลด์
ความคิดเห็น
ความคิดเห็นของคุณช่วยให้ Jetpack ทำงานได้ดีขึ้น โปรดแจ้งให้เราทราบหากพบปัญหาใหม่หรือมี ไอเดียในการปรับปรุงไลบรารีนี้ โปรดดู ปัญหาที่มีอยู่ ในไลบรารีนี้ก่อนสร้างปัญหาใหม่ คุณสามารถโหวตปัญหาที่มีอยู่ได้โดย คลิกปุ่มดาว
ดูข้อมูลเพิ่มเติมได้ในเอกสารประกอบของ Issue Tracker
เวอร์ชัน 1.13
เวอร์ชัน 1.13.0-alpha03
9 กันยายน 2026
androidx.compose.foundation:foundation-*:1.13.0-alpha03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.13.0-alpha03 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มการรองรับการระบุรูปแบบของส่วนต่างๆ ของ Composable แบบผสม (เช่น
TextFieldหรือDatePicker) โดยตรงในพารามิเตอร์รูปแบบของ Composable ซึ่งจะช่วยให้สร้าง Composable ที่คล้ายกับTextFieldได้ เช่น Composable ที่อนุญาตให้ปรับแต่งกล่องตกแต่งแต่ละกล่องโดยใช้สไตล์ ซึ่งจะช่วยให้สามารถลบล้างได้ที่ระดับธีมหรือที่เว็บไซต์ที่เรียกใช้ (I43c0f) - ระบบเลิกใช้งานการโอเวอร์โหลดช่องข้อความ Material 2 ที่ยอมรับพารามิเตอร์
value, onValueChangeแล้ว โปรดเปลี่ยนไปใช้โอเวอร์โหลดที่ใช้TextFieldStateเพื่อยกสถานะ (I6b841, b/556234973) - นำคำอธิบายประกอบ
@ExperimentalFoundationApiออกจากundoStateในTextFieldStateแล้ว (I93a44) - เพิ่มออบเจ็กต์การกำหนดค่าเริ่มต้นสำหรับเลย์เอาต์ที่โหลดแบบ Lazy แต่ละรายการซึ่งมีค่าเริ่มต้นที่ใช้ในฟังก์ชัน
@Composeableที่เกี่ยวข้อง ปัจจุบันมีเฉพาะกรอบเวลาแคชเริ่มต้นสำหรับแต่ละเลย์เอาต์ (I58633) - เมื่อเปิดใช้ แฟล็ก
isUsingDynamicDefaultCacheWindowIn[List|Grid|StaggeredGrid]sจะทำให้เลย์เอาต์แบบ Lazy ใช้หน้าต่างแคชที่ใช้ขนาดเฉลี่ยของรายการที่มองเห็นได้เพื่อดึงข้อมูลล่วงหน้าก่อนวิวพอร์ต โดยมีหน้าต่างล่วงหน้าขั้นต่ำ 10% ของวิวพอร์ต และหน้าต่างล่วงหน้าสูงสุด 50% ของวิวพอร์ต (I59212) - เลิกใช้งาน
LazyListPrefetchStrategy,LazyListPrefetchScopeและLazyListPrefetchResultScopeแล้ว ควรกําหนดค่าลักษณะการทํางานของการดึงข้อมูลล่วงหน้าโดยใช้LazyLayoutCacheWindowในLazyColumnหรือLazyRowLazyLayoutCacheWindowมีกลไกการแคชแบบประกาศที่อิงตามวิวพอร์ต ซึ่งจะเตรียมรายการโดยอัตโนมัติก่อนหน้าและเก็บรายการไว้หลังหน้าต่างที่มองเห็นได้โดยไม่ต้องใช้การเรียกกลับการจัดกำหนดการที่ซับซ้อน API ใหม่นี้ใช้งานง่ายกว่าและมีขั้นตอนการกำหนดค่าน้อยกว่าLazyListPrefetchStrategy(I1fa2d) - เพิ่มฟังก์ชันส่วนขยาย
PolygonShape.transformedและPolygonShape.scaledToFitใน Compose Foundation สำหรับการเปลี่ยนรูปทรงหลายเหลี่ยมและการปรับให้พอดี (I3f327) - การเปลี่ยนแปลงนี้จะปรับโครงสร้าง Styles API เป็น 2 ส่วนที่เป็นอิสระ ได้แก่ DSL ของสไตล์และตัวแก้ไขที่กำหนดค่าโดย DSL การติดตั้งใช้งานที่อิงตาม
Styleก่อนหน้านี้ยังคงมีอยู่ แต่จะเลิกใช้งานและนำออก การใช้งานใดๆ ควรแทนที่ด้วย API ใหม่ที่อิงตามCommonStyle - องค์ประกอบหลักที่เปิดตัว
CustomStyle&CommonStyle: อินเทอร์เฟซพื้นฐานและตัวช่วยผสานสำหรับการประกาศสไตล์ที่ใช้ร่วมกันได้StyleResolver: แก้ไขพร็อพเพอร์ตี้รูปแบบในการจัดองค์ประกอบและเชื่อมโยงกับโหนดเลย์เอาต์ผ่านModifier.styleResolverModifier scopes:Modifier.appearance,Modifier.placementและModifier.paddingกับModifier.graphicsLayerแบบไดนามิกที่อิงตามการเรียกกลับ- Primitive ของพร็อพเพอร์ตี้:
stylePropertyOf,styleLocalOf - ประเภทที่มีประโยชน์สำหรับพร็อพเพอร์ตี้รูปแบบ ได้แก่
Breadth,FillและShadows
- ตัวแก้ไขใหม่มีประโยชน์สำหรับการใช้ระบบการออกแบบโดยใช้ Styles API แต่ไม่จำเป็นต้องใช้ ระบบการออกแบบอาจใช้ตัวแก้ไขเหล่านี้หรือมีตัวแก้ไขของตัวเอง (Ieb8cc, b/549921960)
- นำคำอธิบายประกอบ
ExperimentalFoundationApiออกจาก APITextFieldBufferที่ติดตามการเปลี่ยนแปลง (I546a7) - เปิดตัว
MorphPolygonShapeใน Compose Foundation สำหรับภาพเคลื่อนไหวการเปลี่ยนรูปร่างระหว่างรูปหลายเหลี่ยม พร้อมกับตัวแปลงtoPolygonShape()สำหรับRoundedCornerShapeและCutCornerShape(Ic5a89) - เปิดตัว
PolygonShapeใน Compose Foundation สำหรับการแสดงผลรูปหลายเหลี่ยมปกติ รูปดาว และรูปหลายเหลี่ยมโค้งมนที่กำหนดเองพร้อมการปรับมุมให้เรียบ (I0b99d) - ระบบเลิกใช้งานโอเวอร์โหลด
BasicTextFieldที่ยอมรับพารามิเตอร์value, onValueChangeแล้ว โปรดย้ายข้อมูลไปยังBasicTextFieldโอเวอร์โหลดที่ใช้TextFieldStateเพื่อยกสถานะ (I636bf, b/552879150) BasicTextField(value, onValueChange)VisualTransformationจะเลิกใช้งานด้วยเช่นกันเนื่องจากแสดงผ่านTextFieldรูปแบบนี้เท่านั้น การเปลี่ยนรูปแบบที่มีอยู่ควรย้ายข้อมูลไปยังOutputTransformation(I636bf, b/552879150)- เราได้เลิกใช้งานการระบุ
LazyLayoutCacheWindowและLazyListPrefetchStrategyผ่านLazyListStateแล้วเพื่อหันมาใช้การระบุLazyLayoutCacheWindowให้กับฟังก์ชันที่ประกอบกันได้แทน (I71f19) - นำแฟล็กฟีเจอร์ชั่วคราว
ComposeFoundationFlags.isPausableCompositionInPrefetchEnabledออกแล้ว (Ifff7f) - เพิ่ม
InputTransformation.maxLengthTrimเพื่อจำกัดความยาวของข้อความโดยการตัดอักขระอินพุตที่เกินออก เพิ่มInputTransformation.maxLengthRejectเพื่อปฏิเสธอินพุตที่เกินmaxLengthและเลิกใช้งานInputTransformation.maxLengthเพื่อใช้maxLengthTrimและmaxLengthRejectแทน (I8d4cd)
การแก้ไขข้อบกพร่อง
compileSdkสำหรับไลบรารี Compose ที่อัปเดตเป็น 37.1 ซึ่งจะต้องอัปเดตcompileSdkสำหรับแอปและไลบรารีทั้งหมดที่ใช้ Compose (I05b0f)- แก้ไขปัญหาที่ไม่ได้ทำเครื่องหมายว่า
WindowInsetsRulersIME ในชุดกำลังเคลื่อนไหวระหว่างการย้อนกลับแบบคาดการณ์ และแก้ไขปัญหาที่imePaddingไม่อัปเดตเมื่อสลับโฟกัสระหว่างช่องข้อความ (Id4562, b/537386261, b/539686000) - อัปเดตคอมโพเนนต์
SecureTextFieldและOutlinedSecureTextField(รวมถึงการโอเวอร์โหลดBasicSecureTextFieldที่เลิกใช้งานแล้ว) เพื่อใช้TextObfuscationMode.Systemเป็นโหมดการปกปิดเริ่มต้นแทนTextObfuscationMode.RevealLastTyped(I76c7e)
เวอร์ชัน 1.13.0-alpha02
26 สิงหาคม 2026
androidx.compose.foundation:foundation-*:1.13.0-alpha02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.13.0-alpha02 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- API เลย์เอาต์ตารางที่โปรโมต (
Grid,GridScope,GridConfigurationScope,GridFlow,Fr,GridTrackSize,GridTrackSpec,Modifier.gridItem) เป็นแบบเสถียร (I43ac4, b/462550392) - เพิ่มพร็อพเพอร์ตี้ความหมายใหม่
BackgroundColorสำหรับ Modifier.background (I7eec3, b/518049030) - นำคำอธิบายประกอบ
ExperimentalFlexBoxApiออกและเปลี่ยนชื่อพร็อพเพอร์ตี้ที่อิงตามพิกเซลในFlexConfigScopeโดยมีคำต่อท้ายPxเพื่อความชัดเจน (I5b24e, b/543092286) - เก็บเฉพาะรายการที่แคชไว้เมื่อไม่ได้อยู่ใน Lookahead Pass เปิดตัวฟีเจอร์แจ้งว่าไม่เหมาะสม
isKeepAroundDuringLookaheadDisabledหากต้องการกลับไปใช้ลักษณะการทำงานแบบเดิม ให้ตั้งค่าสถานะเป็นfalse(I110e9) - เพิ่มฟีเจอร์ทดลอง
isLazyLayoutItemAnimatorVisibleBoundsFixEnabledเขียน เมื่อเปิดใช้ ระบบจะคำนวณขอบเขตดัชนีของรายการที่มองเห็นได้ก่อนที่ภาพเคลื่อนไหวของการวางจะทำงานในห้องสมุดLazyListและห้องสมุดLazyGrid(I56150) - แก้ไขการใช้งานในการส่งครั้งแรกใน Draggable ซึ่งจะช่วยให้มั่นใจได้ว่าหากมีการใช้เหตุการณ์การกดลงในการส่งผ่านครั้งแรก การลากจะเริ่มขึ้นทันทีในการส่งผ่านหลัก การเปลี่ยนแปลงลักษณะการทำงานนี้จะอยู่หลังแฟล็กฟีเจอร์
ComposeFoundationFlagsisDraggableInitialPassConsumptionFixEnabled(I6a77f, b/532946466)
เวอร์ชัน 1.13.0-alpha01
12 สิงหาคม 2026
androidx.compose.foundation:foundation-*:1.13.0-alpha01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.13.0-alpha01 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ
- ตามที่ได้ประกาศไว้ในรุ่นก่อนหน้า ระบบได้นำการติดตั้งใช้งาน
Modifier.onFocusedBoundsChangedออกทั้งหมดแล้ว การใช้ตัวแก้ไขนี้จะไม่มีการดำเนินการใดๆ ย้ายข้อมูลไปใช้FocusTargetModifierNode.getFocusedRect()เพื่อค้นหาข้อมูลนี้ตามต้องการ (Ia39db, b/220030968)
การเปลี่ยนแปลง API
- เราได้เลิกใช้งานการระบุ
LazyLayoutCacheWindowและLazyGridPrefetchStrategyผ่านLazyGridStateแล้วเพื่อหันมาใช้การระบุLazyLayoutCacheWindowให้กับฟังก์ชันที่ประกอบกันได้แทน (I3f31e) - นำธง
isSkipItemPlacementAnimationFixEnabledออก (I890f3, b/493183465) - นำธง
isClearNestedScrollCoroutineScopeFixEnabledออก (Iedfd7, b/506963276) - เปลี่ยนแฟล็ก
isCacheWindowVisibleItemCountCheckEnabledเป็นisCacheWindowLookaheadCheckEnabled(I2ea06) TextFieldStateตอนนี้จะบันทึกและกู้คืนข้อมูลรูปแบบข้อความแล้วAnnotatedString.Annotation.Saverเป็นแบบสาธารณะแล้วในตอนนี้เพื่อให้บันทึกและกู้คืนออบเจ็กต์AnnotatedString.Annotationได้ (I8b533, b/135556699)- เพิ่มหน้าต่างแคชไปยังเลย์เอาต์ตารางกริดแบบสลับที่โหลดอย่างช้าๆ หากต้องการเปลี่ยนกลับไปใช้ลักษณะการทำงานของการดึงข้อมูลล่วงหน้าแบบเดิม ให้ตั้งค่า
isUsingCacheWindowInStaggeredGridsเป็น "เท็จ" (I1c70d) FlexBoxและ API การกำหนดค่าที่เกี่ยวข้องได้รับการเลื่อนขั้นเป็นเวอร์ชันที่เสถียรและไม่ได้อยู่ในเวอร์ชันทดลองอีกต่อไป (I209ed, b/475491619)- เพิ่มการกำหนดค่า
maxItemsInEachLineในFlexBoxเพื่ออนุญาตให้จำกัดจำนวนรายการต่อบรรทัดเมื่อเปิดใช้การตัดข้อความ (I2744b, b/475491619) - ใส่คำอธิบายประกอบให้กับเมธอดพื้นฐานที่ว่างเปล่าซึ่งลบล้างได้ใน Compose ด้วย
@EmptySuperเพื่อระบุว่าการใช้งานที่ลบล้างไม่ควรเรียกใช้ super (Id407b) - เลื่อนระดับ
WindowInsetsvisibility และ Animation API เป็น แบบเสถียร (I37441, b/537329254) - ตอนนี้การคลิกองค์ประกอบที่คลิกได้จะเล่นเอฟเฟกต์เสียงของการโต้ตอบโดยอัตโนมัติใน Android (Ia72f8)
- ตอนนี้หน้าต่างแคชจะเติมหน้าต่างล่วงหน้าอีกครั้งหากจำนวนรายการที่มองเห็นได้เปลี่ยนแปลงโดยไม่ต้องเลื่อน ตั้งค่าสถานะ
isCacheWindowVisibleItemCountCheckEnabledเป็นfalseเพื่อปิดใช้การตรวจสอบนี้และเปลี่ยนกลับไปใช้ลักษณะการทำงานแบบเดิม (I67b5a) - อัปเดตพร็อพเพอร์ตี้
NestedScrollDispatcher.coroutineScopeเพื่อส่งคืนCoroutineScopeที่ยกเลิกอย่างปลอดภัยเมื่อไม่ได้แนบหรือแยกออก (I9b112, b/535290281) - เปลี่ยนชื่อ
enableNonScrollCachingเป็นisNonScrollCachingEnabled(I7a54b, b/535290282) - เพิ่ม @
CheckResultไปยังSemanticsNodeInteraction.isDisplayed() และisNotDisplayed() เพื่อให้มั่นใจว่าค่าที่ส่งคืนจะได้รับการยืนยัน ซึ่งจะป้องกันไม่ให้การทดสอบล้มเหลวโดยไม่มีการแจ้งเตือนเมื่อนักพัฒนาแอปใช้ฟังก์ชันเหล่านี้แทน API การยืนยันโดยไม่ได้ตั้งใจ (I1b447, b/508178494) - ทำให้
LazyLayoutCacheWindowเสถียร (I2cda3) - เพิ่มพารามิเตอร์
bringIntoViewSpecสำหรับ Horizontal และ Vertical Pager เพื่ออนุญาตให้แทนที่การใช้งานเริ่มต้นของ Pager (Icdcbf, b/505052292) - แก้ไขข้อบกพร่องในการตรวจหาการไม่ได้ใช้งานของตัวกำหนดเวลาการดึงข้อมูลล่วงหน้าของเลย์เอาต์แบบ Lazy ก่อนหน้านี้ ตัวกำหนดตารางเวลาอาจพิจารณาว่าตัวเองไม่ได้ใช้งานอย่างไม่ถูกต้องเมื่อเฟรมล่าช้าอย่างมาก ซึ่งอาจทำให้เกิดอาการกระตุกเมื่อเลื่อน หากต้องการเปลี่ยนกลับไปใช้ลักษณะการทำงานแบบเดิม ให้ตั้งค่า
isLazyPrefetchSchedulerIdleTimeFixEnabledสถานะการเขียนเป็น false (If0594, b/458024295) - เปิดตัว
coroutineScopeOrNull()ในNestedScrollDispatcherซึ่งเป็น API ทางเลือกในการเข้าถึงขอบเขตโครูทีนหลักของ Dispatcher (I18c0f) - แก้ไขปัญหาข้อความแนวนอนเลื่อนระหว่างการเลื่อนเกินในฟีเจอร์ช่วยเขียน ปิดใช้ได้ผ่าน
AndroidComposeFoundationFlags.isOverscrollPixelRoundingEnabled(Ica169, b/532079110, b/532081619) - เปิดตัวฟีเจอร์
isDraggableZeroDeltaConsumptionEnabledเพื่อควบคุมการเปิดตัวการแก้ไขนี้ใน Draggable ตอนนี้ระบบจะประมวลผลเหตุการณ์ที่มีเดลต้าเป็น 0 ได้อย่างถูกต้องแล้ว (I50eb1, b/524163413) - ตอนนี้การเลือกข้อความจะจำกัดความยาวของข้อความอย่างปลอดภัยในระหว่างการอัปเดตข้อความพร้อมกันเพื่อป้องกันไม่ให้เกิดข้อขัดข้อง (I64fd7)
- ตอนนี้
androidx.benchmarkมีminSdk24 รายการ (Ic2a85) - ตอนนี้ลิงก์จะจัดการการคลิกได้ดีขึ้นเมื่อมีการขยายหลายบรรทัด เราได้ลบล้างเป้าหมายการแตะเป็น 0 เพื่อรองรับการดำเนินการนี้ หากไม่ต้องการให้เป็นเช่นนี้ ให้ใช้
ComposeFoundationFlags.isLinkMinimumTouchTargetSizeZeroEnabledเพื่อลบล้าง (Ide41b, b/361106057) - แก้ไขข้อยกเว้นที่มีปริมาณน้อยเมื่อเขียนไปยังออบเจ็กต์สถานะที่เปลี่ยนแปลงได้ (I48194, b/503110696)
- เปิดเผย
keysที่สังเกตได้ในSaveableStateHolderเพื่อลดความซับซ้อนในการจัดการสถานะการนำทาง/Back Stack และไม่จำเป็นต้องใช้การติดตามkeyภายนอก เข้าถึงผ่านholder.keysนำออกด้วยremoveState(I9bbbb, b/398887924) - นำ
IndirectPointerEventฟังก์ชันตัวช่วยเวอร์ชันทดลองที่ล้าสมัยออก (I05dee, b/499336763, b/501098299, b/501098376, b/513249467) - ทำให้
LocalBringIntoViewSpecเสถียรใน Android (Ibcb97) - เพิ่มธง
isMultiLaneCacheWindowEnabled(I3d997) - สร้าง
SelectionStateAPI ใหม่เพื่อส่งไปยังSelectionContainerสำหรับการสังเกตข้อความที่เลือกและอัปเดตการเลือกโดยอัตโนมัติ" เป็น androidx-main am: 929401883c am: c02871cac4 (I15bd4) - เพิ่ม
LocalTextFieldContentObserverRegistrationExecutorซึ่งเป็นวิธีมอบสิทธิ์การลงทะเบียนContentObserverโดยนัยที่เกิดขึ้นในTextFieldให้กับเธรดเบื้องหลัง (Ib4fa6, b/505287297, b/509842675) - เปลี่ยนชื่อ
TextObfuscationMode.Defaultเป็นSystemแล้วTextObfuscationMode.RevealLastTypedจะทำหน้าที่เป็นการลบล้างที่แน่นอนและแสดงอักขระที่พิมพ์ล่าสุดเสมอ อัปเดตอาร์กิวเมนต์เริ่มต้นของBasicSecureTextFieldเป็น System (If26d3, b/425658491, b/453647378)
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาที่การเลื่อนอย่างรวดเร็วใน Compose ที่ซ้อนอยู่ภายในคอนเทนเนอร์การเลื่อนของ Android (เช่น
ScrollViewหรือCoordinatorLayout) จะคำนวณความเร็วไม่ถูกต้องในบางครั้ง (I0f017) - แก้ไขปัญหาใน
FlexBoxที่การย้ายโฟกัสไม่ตรงกับลำดับภาพของรายการเมื่อใช้ทิศทางย้อนกลับ การย้อนกลับ หรือลำดับรายการที่กำหนดเอง (I4cc61, b/521609263) - แก้ไขปัญหาที่ตัวแก้ไขเลย์เอาต์มาตรฐาน เช่น
Modifier.fillMaxWidth()และModifier.fillMaxHeight()ไม่มีผลกับรายการภายในFlexBoxเว้นแต่จะมีการระบุแฟกเตอร์การขยาย Flex อย่างชัดเจน (Ib0ac3, b/515657458) - การเริ่มต้นระดับไฟล์ที่เพิ่มประสิทธิภาพของ
foundationพร็อพเพอร์ตี้คลาสค่าระดับบนสุดโดยใช้ตัวรับแบบไดนามิก (I570d7) - การเริ่มต้นออบเจ็กต์เสริมที่เพิ่มประสิทธิภาพของคลาสค่า
foundation-layout(WindowInsetsSidesฯลฯ) โดยใช้ตัวรับแบบไดนามิก (I01c2b) - แก้ไขปัญหาที่รายการเมนูตามบริบทสำหรับการเลือกข้อความในฟีเจอร์เขียนแสดงสตริงที่ล้าสมัยหลังจากเปลี่ยนภาษาในแอปเมื่อปิดใช้การรีสตาร์ทกิจกรรมผ่าน
android:configChanges(Ic910b, b/515156417) - การเริ่มต้นออบเจ็กต์คู่ที่เพิ่มประสิทธิภาพของ
compose:foundationคลาสค่า (KeyModifiers,MarqueeAnimationMode,Sourceฯลฯ) โดยใช้ตัวรับแบบไดนามิก (I78455) - แก้ไขภาพเคลื่อนไหวของสไตล์เพื่อให้มั่นใจว่าเมื่อเปลี่ยนจากค่าที่ตั้งค่าแบบมีเงื่อนไขเท่านั้นในภาพเคลื่อนไหว ระบบจะถือว่าเป็นการเปลี่ยนภาพเคลื่อนไหวไปยังและจากค่าเริ่มต้นของพร็อพเพอร์ตี้ (I8e41d, b/527140078)
- แก้ไขปัญหาใน Grid ที่รายการที่วางอัตโนมัติซึ่งมีช่วงที่ใหญ่กว่า แทร็กที่ชัดเจนที่มีอยู่ในการวางแนวที่จำกัดจะล้น ขอบเขตของ Grid เมื่อใช้ช่องว่าง (I00ce0, b/506570362)
- ล้างข้อมูล API (Ia8066)
- แก้ไขข้อบกพร่องใน
BasicTextFieldซึ่งทำให้ไม่สามารถอัปเดตข้อความที่แยกออกมาไปยัง IME ได้อย่างถูกต้องเมื่อมีการขอ (I746fa, b/203549026, b/492363474)
เวอร์ชัน 1.12
เวอร์ชัน 1.12.1
9 กันยายน 2026
androidx.compose.foundation:foundation-*:1.12.1 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.12.1 มีการคอมมิตเหล่านี้
เวอร์ชัน 1.12.0
12 สิงหาคม 2026
androidx.compose.foundation:foundation-*:1.12.0 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.12.0 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 1.11.0
เวอร์ชัน 1.12.0-rc01
29 กรกฎาคม 2026
androidx.compose.foundation:foundation-*:1.12.0-rc01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.12.0-rc01 มีการคอมมิตเหล่านี้
เวอร์ชัน 1.12.0-beta02
1 กรกฎาคม 2026
androidx.compose.foundation:foundation-*:1.12.0-beta02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.12.0-beta02 มีการเปลี่ยนแปลงเหล่านี้
เวอร์ชัน 1.12.0-beta01
17 มิถุนายน 2026
androidx.compose.foundation:foundation-*:1.12.0-beta01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.12.0-beta01 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- เปลี่ยนชื่อฟังก์ชันทดสอบเพื่อทริกเกอร์เหตุการณ์ตัวชี้แบบอ้อม (I3ee35, b/509618414)
- เปลี่ยนชื่อ
TextObfuscationMode.Defaultเป็นSystemแล้วTextObfuscationMode.RevealLastTypedจะทำหน้าที่เป็นการลบล้างที่แน่นอนและแสดงอักขระที่พิมพ์ล่าสุดเสมอ อาร์กิวเมนต์เริ่มต้นของBasicSecureTextFieldได้รับการอัปเดตเป็นSystemแล้ว (If26d3, b/425658491, b/453647378) - อัปเดต
getSpanStylesและgetParagraphStylesเพื่อใช้TextRangeแทนดัชนีเริ่มต้น/สิ้นสุดที่แยกกัน ผ่อนปรนการตรวจสอบขอบเขตในคำค้นหาสไตล์เพื่อไม่ให้ส่งข้อยกเว้นอีกต่อไป และป้องกันไม่ให้เกิดข้อขัดข้องเมื่อค้นหาพร็อพเพอร์ตี้ของTrackedRangesที่ไม่ถูกต้อง (I62a9a, b/514404697) - เพิ่มฟีเจอร์พื้นที่ที่มีชื่อลงในเลย์เอาต์ตารางกริด ตอนนี้ นักพัฒนาซอฟต์แวร์
สามารถกำหนดพื้นที่เชิงความหมายโดยใช้
GridConfigurationScope.area()และวางรายการลงในพื้นที่เหล่านั้นโดยใช้การโอเวอร์โหลดModifier.gridItem(area)แบบใหม่ ซึ่งจะแยกความตั้งใจเชิงความหมายออกจากพิกัดจริง (Id9303, b/487503921) - เพิ่มตัวดำเนินการ then และฟังก์ชันโรงงานรวมสำหรับ
FlexBoxConfigและFlexConfigเพื่อให้ผสานและลบล้างการกำหนดค่าเลย์เอาต์ได้ (Icfdd8, b/475491619) - เพิ่ม
RevealState.drag(),SwipeToRevealDragScopeและเปิดเผยflingBehaviorที่กำหนดเองในSwipeToRevealเพื่อเปิดใช้การควบคุมแบบเป็นโปรแกรมสำหรับท่าทางการปัด ออฟเซ็ต และภาพเคลื่อนไหวการวาง (Ibfe56, b/484185090)
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาที่แถบเครื่องมือการเลือกข้อความอาจอัปเดตตำแหน่งหรือรายการไม่สำเร็จ (Ib2566)
การมีส่วนร่วมภายนอก
- ใน
SelectionContainerให้เลือก (ผ่านเมาส์) เพื่อเริ่มในพื้นที่ว่างระหว่างTextที่เลือกได้ (I93f69, b/502151445) - เปิดเผยอินเทอร์เฟซ
AndroidClipboardสำหรับการทดสอบเพื่อเป็นวิธีจำลองการใช้งานคลิปบอร์ด (Ie4d72, b/512924975) - เพิ่มความเข้ากันได้แบบย้อนกลับสำหรับ
TextAttributeตัวแปรของcommitText()และsetComposingText()สำหรับ SDK>=37 บริการช่วยเหลือพิเศษ จะประกาศได้ว่ามีการเลือกข้อความแทนที่ ที่แนะนำหรือไม่ สำหรับ SDK<37 จะไม่ส่งผลต่อความคิดเห็นที่พูด (กล่าวคือลักษณะการทำงานที่มีอยู่) (I90e3d, b/439879822)
เวอร์ชัน 1.12.0-alpha03
19 พฤษภาคม 2026
androidx.compose.foundation:foundation-*:1.12.0-alpha03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.12.0-alpha03 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- ใน Style API เวอร์ชันทดลอง เราได้เพิ่มการรองรับการสร้างประเภทรูปแบบที่กำหนดเองซึ่งมีขอบเขตรูปแบบที่กำหนดเองได้ ซึ่งจะช่วยให้คุณเลือกพร็อพเพอร์ตี้ที่ตั้งค่าได้ตามสไตล์ (เช่น การนำเลเยอร์กราฟิกหรือพร็อพเพอร์ตี้ข้อความออกทั้งหมด) รวมถึงช่วยให้ขยายขอบเขตได้โดยไม่ขึ้นอยู่กับสไตล์อื่นๆ (เช่น รองรับเฉพาะไวยากรณ์
playing { }ในMediaPlayerที่ประกอบได้) การเปลี่ยนแปลงนี้ทำให้ความเข้ากันได้ของไบนารีและแหล่งที่มาไม่เป็นไปตามข้อกำหนด การเปลี่ยนแปลงหลักที่ทำให้แหล่งที่มาไม่สามารถใช้งานร่วมกันได้คือฟังก์ชันตัวช่วยในStyleScopeได้ย้ายไปเป็นฟังก์ชันส่วนขยายแล้ว (เช่นfun contentProperty(all: Dp)ตอนนี้เป็นฟังก์ชันส่วนขยาย) การนำเข้าฟังก์ชันส่วนขยายที่จำเป็นหรือการนำเข้าสัญลักษณ์ทั้งหมดจาก androidx.compose.foundation.styles ควรเป็นสิ่งเดียวที่จำเป็นเพื่อให้โค้ดที่เรียกใช้เมธอดเหล่านี้คอมไพล์ได้อย่างถูกต้อง (I1ef27, b/493676648) - ตอนนี้การติดตั้งใช้งาน
ScrollIndicatorStateจะแสดงผลออฟเซ็ตการเลื่อนจากจุดเริ่มต้นที่มองเห็นได้อย่างถูกต้องสำหรับเลย์เอาต์ที่กลับด้าน เพื่อให้มั่นใจว่าการนำเสนอภาพของตัวบ่งชี้ถูกต้อง (Ia3fae, b/503604996) - เพิ่ม Flag
isClearNestedScrollCoroutineScopeFixEnabledเพื่อควบคุมการแก้ไข (Ibd394, b/505343254)
การมีส่วนร่วมภายนอก
- เปิดใช้การเลื่อนอัตโนมัติเมื่อลากข้อความที่เลือกเกินวิวพอร์ตใน
SelectionContainer(Ibcb08, b/424433794)
เวอร์ชัน 1.12.0-alpha02
6 พฤษภาคม 2026
androidx.compose.foundation:foundation-*:1.12.0-alpha02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.12.0-alpha02 มีการเปลี่ยนแปลงเหล่านี้
เวอร์ชัน 1.12.0-alpha01
22 เมษายน 2026
androidx.compose.foundation:foundation-*:1.12.0-alpha01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.12.0-alpha01 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม Flag ใหม่
isBasicTextFieldHeighInLinesOptimizationEnabledเพื่อเปิดใช้การเพิ่มประสิทธิภาพในการคำนวณความสูงของช่องข้อความในจำนวนบรรทัดขั้นต่ำ/สูงสุด ซึ่งควรเปิดอยู่โดยค่าเริ่มต้น หากพบการถดถอยในเลย์เอาต์ของช่องข้อความและการปิดใช้ฟีเจอร์นี้ช่วยแก้ไขปัญหาได้ โปรดรายงานข้อบกพร่องไปยังทีม Compose เพื่อตรวจสอบ (Idffae, b/486871837, b/487546327) - แก้ไข
textfieldการเลือกขณะแก้ไขข้อความระหว่างท่าทางสัมผัส (I6fd98, b/490509264) - เพิ่มการรองรับ
colorFilterในStyleScopeใน Compose Foundation (I553a0) - เพิ่ม
textMotionไปยังStyleScopeแล้ว (Id8523, b/482301609) - เพิ่ม
KeyboardTypeตัวเลือกเพิ่มเติมเพื่อทำให้ชุดตัวเลือกแป้นพิมพ์ที่รองรับใน Android สมบูรณ์ยิ่งขึ้น ซึ่งรวมถึงวันที่ เวลา วันที่และเวลา ทศนิยมที่มีการลงนาม และอื่นๆ (I3713e, b/202353328) - นำการแจ้งว่าไม่เหมาะสม
isNestedDraggablesTouchConflictFixEnabledออก (I79e52, b/485966180) - นำการแจ้งว่าไม่เหมาะสม
isDelayPressesUsingGestureConsumptionEnabledออก (I533dd, b/485966702) - นำฟีเจอร์ที่ติดธง
isBringIntoViewRltBouncyBehaviorInPagerFixEnabledออกเนื่องจากมีการเปิดตัวในเวอร์ชันเสถียรแล้ว (I73fb2, b/485967682) - นำฟีเจอร์ที่ติดธง
isCacheWindowRefillFixEnabledออกเนื่องจากมีการเปิดตัวในเวอร์ชันเสถียรแล้ว (Ic7505, b/485967875) - นำออก
ComposeFoundationFlags#isNonSuspendingPointerInputInCombinedClickableEnabled(I1f76c, b/485966320, b/477836055) - เพิ่มการโอเวอร์โหลดสำหรับ
contentPaddingและexternalPaddingในStyleScopeที่ยอมรับPaddingValues(I3a6ce, b/493154098) - เปลี่ยน
VelocityTrackerเพื่อใช้การติดตั้งใช้งานที่ Android Framework จัดเตรียมให้ (กำหนดค่าได้ด้วยAndroidComposeUiFlags.isFrameworkVelocityTrackerEnabled) (Ibc7e2, b/359962905)
การแก้ไขข้อบกพร่อง
- เปลี่ยนวิธีติดตามภาพเคลื่อนไหวและพร็อพเพอร์ตี้เพื่อหลีกเลี่ยงภาพเคลื่อนไหวที่ซ้อนทับกันสำหรับพร็อพเพอร์ตี้เดียวกัน (I4921f)
- แก้ไขข้อบกพร่องที่ทำให้เมนูตามบริบทขัดข้องเมื่อ
TextField(หรือข้อความที่เลือกได้) อยู่ในกล่องโต้ตอบ (I21461, b/441759435) - อัปเดต Compose
compileSdkเป็น API 37 ซึ่งหมายความว่าเมื่อใช้ Compose จะต้องใช้ AGP เวอร์ชัน 9.2.0 เป็นอย่างน้อย (Id45cd, b/413674743) - แก้ไขปัญหาในตารางกริดที่โฟกัสของแป้นพิมพ์และการไปยังส่วนต่างๆ ของการช่วยเหลือพิเศษเป็นไปตามลำดับการจัดองค์ประกอบของรายการแทนที่จะเป็นลำดับการจัดวางรูปตัว Z (I122a8, b/494096503)
- แก้ไขข้อบกพร่องที่แถบเครื่องมือการเลือกข้อความจะซ่อนอย่างไม่ถูกต้องเมื่อแฮนเดิลเริ่มต้นและสิ้นสุดอยู่ในแนวเดียวกันในแนวนอน (เช่น การเลือกในหลายบรรทัดที่สิ้นสุดในบรรทัดว่าง) (I391d2, b/497724722)
- แก้ไขปัญหาใน
FlexBoxที่รายการไม่ย่ออย่างถูกต้องเมื่อเกินขอบเขตของคอนเทนเนอร์ (Ia741d, b/480797591) - แก้ไขข้อบกพร่องสำหรับ
foregroundColorที่ไม่ถูกต้อง (I74abe, b/493245886) - แก้ไข Inset ที่ไม่มีอัปเดตในกรณีที่ Listener Inset สำหรับ Compose ถูกปลดออกและเชื่อมต่อใหม่ (I1e905, b/491346046, b/486084139)
- เมื่อผู้ใช้เลื่อนเคอร์เซอร์ออกนอกพื้นที่ที่เลื่อนได้ ตอนนี้ระบบจะเลื่อนเคอร์เซอร์ไปยังพื้นที่ที่มองเห็นได้ (If694c, b/266094055)
เวอร์ชัน 1.11
เวอร์ชัน 1.11.4
1 กรกฎาคม 2026
androidx.compose.foundation:foundation-*:1.11.4 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.11.4 มีการเปลี่ยนแปลงเหล่านี้
เวอร์ชัน 1.11.3
17 มิถุนายน 2026
androidx.compose.foundation:foundation-*:1.11.3 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.11.3 มีการเปลี่ยนแปลงเหล่านี้
เวอร์ชัน 1.11.2
19 พฤษภาคม 2026
androidx.compose.foundation:foundation-*:1.11.2 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.11.2 มีการคอมมิตเหล่านี้
เวอร์ชัน 1.11.1
6 พฤษภาคม 2026
androidx.compose.foundation:foundation-*:1.11.1 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.11.1 มีการคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาใน
FlexBoxที่รายการไม่ย่ออย่างถูกต้องเมื่อเกินขอบเขตของคอนเทนเนอร์ (Ia741d, b/480797591)
เวอร์ชัน 1.11.0
22 เมษายน 2026
androidx.compose.foundation:foundation-*:1.11.0 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.11.0 มีการคอมมิตเหล่านี้
เวอร์ชัน 1.11.0-rc01
8 เมษายน 2026
androidx.compose.foundation:foundation-*:1.11.0-rc01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.11.0-rc01 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- แก้ไข
textfieldการเลือกขณะแก้ไขข้อความระหว่างท่าทางสัมผัส (I2ba33, b/490509264)
เวอร์ชัน 1.11.0-beta02
25 มีนาคม 2026
androidx.compose.foundation:foundation-*:1.11.0-beta02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.11.0-beta02 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม Flag
isReverseLayoutNestedScrollConnectionInPagerFixEnabledเพื่อควบคุมการเปิดตัวการแก้ไขนี้ (I07404, b/399800244) - เปิดตัว
isSkipItemPlacementAnimationFixEnabledเพื่อควบคุมการเปิดตัวฟีเจอร์นี้ (Id665d, b/455884472, b/352584409, b/410487464, b/372509998) - เพิ่ม
MinMax(min: Dp, max: Fr)ไปยังGridTrackSizeแล้ว ซึ่งช่วยให้นักพัฒนาแอปกำหนดขอบเขตขั้นต่ำของแทร็กที่ยืดหยุ่นได้อย่างชัดเจน การใช้MinMax(0.dp, 1.fr)จะข้ามคำค้นหาการวัดผลโดยธรรมชาติได้สำเร็จ ทำให้วางคอมโพเนนต์SubcomposeLayoutเช่นLazyColumnและLazyRowไว้ในแทร็กกริดแบบยืดหยุ่นได้อย่างปลอดภัยโดยไม่เกิดข้อขัดข้อง (Ieb8c2, b/483822148)
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องใน
FlexBoxซึ่งทำให้รายการหดตัวอย่างไม่ถูกต้องเมื่อมีขนาดเล็กที่สุด ตอนนี้รายการจะแชร์พื้นที่ที่ลดขนาดซึ่งยังไม่ได้ใช้กับรายการที่เกี่ยวข้องอย่างถูกต้องแล้ว นอกจากนี้FlexBoxจะไม่จำกัดรายการในแกนหลักโดยไม่จำเป็นอีกต่อไป หากรายการย่อไม่พอดีกับคอนเทนเนอร์ รายการจะล้นแกนหลักในลักษณะที่มองเห็นได้ ใช้Modifier.clipToBounds()หากต้องการตัด (Ief751, b/480797591) - ป้องกันไม่ให้ Keep Around เข้าถึงดัชนีที่ผิดกฎหมาย (I19121, b/485626636)
- แก้ไขปัญหาในกริดที่ช่องว่างระหว่างแถวหรือคอลัมน์ที่สร้างโดยนัย ถูกละเว้นจากการคำนวณขนาดทั้งหมดของคอนเทนเนอร์ ซึ่งส่งผลให้เนื้อหาถูกตัด (Ib9df8, b/480372415)
ClipboardและClipboardManagerจะขอใช้บริการของระบบในการเรียกใช้เมธอดครั้งแรก (If0016, b/487947860)- แก้ไขปัญหาใน
Rowที่มีArrangement.spacedByใน RTL ซึ่งรายการที่ล้นจะทำให้เลย์เอาต์และระยะห่างไม่ถูกต้อง (I44e53, b/476006478)
เวอร์ชัน 1.11.0-beta01
11 มีนาคม 2026
androidx.compose.foundation:foundation-*:1.11.0-beta01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.11.0-beta01 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มประสิทธิภาพการคำนวณขนาดขั้นต่ำภายในของ
BasicTextFieldComposeFoundationFlags#isBasicTextFieldMinSizeOptimizationEnabledจะเป็นตัวควบคุมการตั้งค่าเหล่านี้ หากคุณต้องการปิดใช้ (I70ade) - เพิ่ม
rememberUpdatedStyleStateซึ่งเป็นส่วนหนึ่งของ Style API เวอร์ชันทดลองrememberUpdatedควรใช้เมื่อสร้างอินสแตนซ์ของStyleStateเมื่อคัดลอกพารามิเตอร์ของคอมโพเนนต์ที่ใช้ร่วมกันได้ (เช่นenabled) ลงในสถานะสไตล์ (Idf7ff, b/485510967) - เปลี่ยนชื่อพร็อพเพอร์ตี้
PointerInputChangeและHistoricalChangeสำหรับการดึงค่าการปรับขนาดและการแพน (I989a8, b/481333653) - เพิ่มฟังก์ชันการทำงานเพิ่มเติมสำหรับ API การทดสอบแทร็กแพด เพื่อจำลองเส้นโค้งและอินพุตต่างๆ สำหรับท่าทางสัมผัสของแทร็กแพด (I290fb, b/473603145, b/479213358)
- แยก
PointerEventType.Panใหม่เป็นPointerEventType.PanStart,PointerEventType.PanMoveและPointerEventType.PanEndในทำนองเดียวกันPointerEventType.Scaleจะแบ่งออกเป็นPointerEventType.ScaleStart,PointerEventType.ScaleChangeและPointerEventType.ScaleEndการแยกนี้ช่วยให้ส่งข้อมูลเพิ่มเติมเกี่ยวกับการเริ่มต้นและสิ้นสุดของท่าทางสัมผัสการเลื่อนและการปรับขนาดที่แพลตฟอร์มตีความ ซึ่งจะช่วยให้ตัวแฮนเดิลอินพุตของเคอร์เซอร์ใน Compose ใช้ข้อมูลนี้เพื่อตรวจหาเหตุการณ์ได้อย่างเหมาะสม และโดยเฉพาะอย่างยิ่งทราบเมื่อการเลื่อนหรือการปรับขนาดเสร็จสิ้น (I4daf6, b/479285849, b/481333653) - เพิ่ม
constraintsลงในGridConfigurationScopeเพื่อให้กำหนดแทร็กตารางกริดตามขนาดที่มีได้ (I80a41, b/481205205, b/481205205) - ตอนนี้
FlexBoxDSL ใช้ฟังก์ชัน (เช่น grow(1f)) แทนพร็อพเพอร์ตี้ (เช่น grow = 1f) สําหรับการกําหนดค่าภายในFlexBoxConfigและ Modifier.flex (I8dbae, b/475491619)
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องที่ทำให้
OutputTransformationแทรกอักขระซ้ำใน IME บางรายการ (I9fdc0) - เพิ่มการรองรับการปัดไปยังท่าทางการเลื่อนแทร็กแพด (I55f8a, b/479285849)
- เพิ่มเกณฑ์เปรียบเทียบสำหรับ Style API เวอร์ชันทดลอง (I67437)
การมีส่วนร่วมภายนอก
- เพิ่มพร็อพเพอร์ตี้
InputTextSuggestionStateเพื่อช่วยระบุสถานะต่างๆ ที่อินพุตการทับศัพท์อาจอยู่ในเมื่อมีคำแนะนำในการแทนที่ข้อความ นอกจากนี้ ยังมีการเปิดตัวTextCompositionRangeเพื่อติดตามช่วงของช่วงการเขียนข้อความการทับศัพท์ปัจจุบัน โดยค่า Null จะบ่งบอกว่าไม่มีการเขียน (I7a67f, b/476472318) - เพิ่มการโอเวอร์โหลดใหม่ใน
BasicTooltipBoxซึ่งช่วยให้กำหนดค่าpropagateMinConstraintsได้คล้ายกับพารามิเตอร์ของ Box ที่มีชื่อเดียวกัน ซึ่งจะช่วยให้ส่งข้อจำกัดขั้นต่ำไปยังรายการย่อยของBasicTooltipBoxได้โดยตรงโดยไม่ต้องให้BasicTooltipBoxผ่อนปรน ขอขอบคุณ Steven Schoen (Ib145f, b/467532639, b/301605744)
เวอร์ชัน 1.11.0-alpha06
25 กุมภาพันธ์ 2026
androidx.compose.foundation:foundation-*:1.11.0-alpha06 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.11.0-alpha06 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- เปิดตัว API รูปแบบเวอร์ชันทดลองที่ช่วยให้ปรับแต่งฟังก์ชันที่ประกอบกันได้ด้วยวิธีที่สอดคล้องกัน API นี้อยู่ระหว่างการพัฒนาและอาจมีการเปลี่ยนแปลงที่สำคัญก่อนที่จะเสถียร ดูรายละเอียดวิธีใช้ API นี้ได้ในเอกสารประกอบที่รวมไว้ (I7fed2, b/455788242)
การแก้ไขข้อบกพร่อง
Modifier.combinedClickableจะได้รับการเขียนใหม่เพื่อไม่ให้ใช้การป้อนข้อมูลตัวชี้ระงับเพื่อเป็นการเพิ่มประสิทธิภาพ ฟีเจอร์นี้เปิดใช้โดยค่าสถานะที่คุณปิดใช้ได้หากพบข้อบกพร่องในการติดตั้งใช้งานใหม่ -ComposeFoundationFlags.isNonSuspendingPointerInputInCombinedClickableEnabled.(Iea684)
ปัญหาที่ทราบ
- การ
Modifier.combinedClickableเขียนใหม่ทำให้เกิดการถดถอยสำหรับลักษณะการทำงานของการคลิกแบบยาว ซึ่งอาจทำให้การกดแบบลึกทริกเกอร์การคลิกแบบยาวซ้ำๆ ในอุปกรณ์บางเครื่อง ปัญหานี้จะได้รับการแก้ไขในรุ่นถัดไป ในระหว่างนี้คุณสามารถตั้งค่าComposeFoundationFlags.isNonSuspendingPointerInputInCombinedClickableEnabled=falseเพื่อหลีกเลี่ยงปัญหานี้ได้
เวอร์ชัน 1.11.0-alpha05
11 กุมภาพันธ์ 2026
androidx.compose.foundation:foundation-*:1.11.0-alpha05 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.11.0-alpha05 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- เปิดตัว
isNestedDraggablesTouchConflictFixEnabledเพื่อแก้ไขความขัดแย้งที่ซ้อนกันซึ่งลากได้ เราจะให้ความสำคัญกับการลากแนวตั้งมากกว่าการลากแนวนอน เนื่องจากในแง่ของ UX การลากแนวตั้งจะมีความอิสระและความไม่แน่นอนมากกว่าเมื่อผู้ใช้ใช้ท่าทางสัมผัสแนวตั้งเมื่อเทียบกับท่าทางสัมผัสแนวนอน (I273c7, b/252334353, b/269627294, b/363198504, b/442390269, b/419580124) - เพิ่มการรองรับท่าทางสัมผัสของแทร็กแพดและการแปลงจากเหตุการณ์อินพุตของแทร็กแพดเป็นเมาส์ การเปลี่ยนแปลงนี้จะทำให้ระบบรายงานเหตุการณ์เคอร์เซอร์ของแทร็กแพดที่ควบคุมเคอร์เซอร์เหมือนในแท็บเล็ตหรือแล็ปท็อปเป็นเคอร์เซอร์ของเมาส์โดยทั่วไป ระบบจะรายงานท่าทางสัมผัสการแพนและปรับขนาดพร้อมข้อมูลเพิ่มเติมที่มีในการเปลี่ยนแปลงเหตุการณ์ของเคอร์เซอร์ โดยมี
PointerEventType.PanและPointerEventType.Scaleใหม่ที่ระบุว่าระบบจะตั้งค่าเหล่านี้ (Id071a, b/315527861, b/459831570) - ขอแนะนำ
isDelayPressesUsingGestureConsumptionEnabledเมื่อเปิดใช้ฟีเจอร์นี้ คอนเทนเนอร์ที่มีท่าทางสัมผัสแบบลากจะหน่วงเวลาการกด ซึ่งรวมถึงการเปลี่ยนแปลงลักษณะการทำงานของคอนเทนเนอร์ที่อิงตามModifier.draggableซึ่งก่อนหน้านี้ไม่ได้หน่วงเวลาการกด (I53f24, b/203141462) - นำฟีเจอร์
isDetectTapGesturesImmediateCoroutineDispatchEnabledและฟีเจอร์ที่เลิกใช้งานแล้วDetectTapGesturesEnableNewDispatchingBehaviorออก (I9bba3)
การแก้ไขข้อบกพร่อง
- แก้ไข
IndexOutOfBoundsExceptionในBasicTextFieldเมื่อใช้ ``OutputTransformation และลบข้อความ (I20ee1) - เปลี่ยนลักษณะการทำงานของ
GridTrackSize.Autoตอนนี้จะปรับขนาดแทร็กจากmin-contentเป็นmax-content(Ifa22e, b/477748472)
การมีส่วนร่วมภายนอก
- เพิ่มการรองรับ
NumPadปุ่มการเคลื่อนไหว (I1ff12)
เวอร์ชัน 1.11.0-alpha04
28 มกราคม 2026
androidx.compose.foundation:foundation-*:1.11.0-alpha04 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.11.0-alpha04 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- แก้ไขข้อบกพร่องที่ทำให้
AnchoredDraggableState'stargetValueไม่ถูกต้องในบางสถานการณ์ที่มี Anchor หลายรายการที่ออฟเซ็ตเดียวกัน เมื่อตั้งค่าที่จุดยึดที่มีออฟเซ็ตเหมือนกับจุดยึดอื่นtargetValueจะแสดงจุดยึดสุดท้ายที่ออฟเซ็ตนี้อย่างไม่ถูกต้อง ตอนนี้ฟังก์ชันจะแสดงผลcurrentValueเมื่อมีการชำระที่ออฟเซ็ตของcurrentValue(I66a7a, b/476365336) - เปิดตัว
FlexBoxซึ่งเป็นระบบเลย์เอาต์ที่กำหนดค่าได้ซึ่งเป็นซูเปอร์เซ็ตของRow,Column,FlowRowและFlowColumnโดยรองรับฟีเจอร์ต่างๆ เช่น flex-grow, flex-shrink, การตัดข้อความที่กำหนดเอง, การเปลี่ยนทิศทาง และการควบคุมการจัดแนวอย่างละเอียดผ่านFlexBoxConfigและModifier.flex(I44780) - เปิดตัว
Gridเลย์เอาต์ 2 มิติแบบใหม่ที่ไม่ใช่แบบเลซีที่ประกอบได้ ซึ่งได้แรงบันดาลใจจาก CSS Grid เวอร์ชันเริ่มต้นนี้ช่วยให้คุณกำหนดโครงสร้างตารางกริดที่ชัดเจนด้วยขนาดแทร็กต่างๆ ซึ่งรวมถึงFixed,Percentage,Flexและตัวเลือกตามเนื้อหาผ่านบล็อกconfigตรรกะเลย์เอาต์หลักรองรับการวางรายการอย่างชัดเจนภายในตารางกริดโดยใช้Modifier.gridItem()ขณะนี้ API ทั้งหมดที่เกี่ยวข้องกับ Grid อยู่ในขั้นทดลองและต้องเลือกใช้กับ@OptIn(ExperimentalGridApi::class)เรากำลังรวบรวมความคิดเห็นเกี่ยวกับเลย์เอาต์ใหม่นี้ (I04907, b/462550392)
เวอร์ชัน 1.11.0-alpha03
14 มกราคม 2026
androidx.compose.foundation:foundation-*:1.11.0-alpha03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.11.0-alpha03 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขหน่วยความจำรั่วไหลใน
LazyStaggeredGridเมื่อใช้ภายในLookaheadScopeI286ad
เวอร์ชัน 1.11.0-alpha02
17 ธันวาคม 2025
androidx.compose.foundation:foundation-*:1.11.0-alpha02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.11.0-alpha02 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- ตอนนี้
MultiModalInjectionScopeAPI เสถียรแล้ว ซึ่งรวมถึงperformKeyInputและperformRotaryScrollInputรวมถึง API หลักและ API แบบหมุน ระบบนำคำอธิบายประกอบเวอร์ชันทดลองออกแล้ว (Ie8bbc, b/261561237) - นำธง
isNonSuspendingPointerInputInClickableEnabledออกแล้ว (I6a168, b/455591971)
เวอร์ชัน 1.11.0-alpha01
3 ธันวาคม 2025
androidx.compose.foundation:foundation-*:1.11.0-alpha01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.11.0-alpha01 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- เปิดตัว
Modifier.scrollIndicatorเพื่ออนุญาตให้เพิ่มตัวบ่งชี้การเลื่อนที่กำหนดเองลงในคอนเทนเนอร์ที่เลื่อนได้ScrollIndicatorFactoryอินเทอร์เฟซช่วยให้สร้างตัวบ่งชี้การเลื่อนได้โดยการกำหนดลักษณะที่ปรากฏและลักษณะการทำงาน (I89322) - นำ
ComposeFoundationFlags.isTextFieldDpadNavigationEnabledออกแล้ว ตอนนี้ลักษณะการทำงานใหม่จะเปิดใช้ตลอดเวลา (I3f034) - เปิดตัว
isCacheWindowRefillFixEnabledเพื่อควบคุมการเปิดตัวการแก้ไขการรีฟิลหน้าต่างแคช (I4e52b, b/454439658) - นำ
ComposeFoundationFlags.isKeepInViewFocusObservationChangeEnabledออกแล้ว ตอนนี้ลักษณะการทำงานใหม่จะเปิดใช้ตลอดเวลา (I7cbd4) Modifier.onFirstVisible()เลิกใช้งานแล้วเนื่องจากลักษณะการทำงานทำให้เข้าใจผิดและไม่ได้เป็นไปตามสัญญาที่ชื่อระบุไว้เสมอไป ตัวอย่างเช่น เมื่อเพิ่มในรายการของLazyColumnระบบจะเรียกใช้ Callback นี้ทุกครั้งที่รายการนี้ปรากฏขึ้นหลังจากเลื่อน ซึ่งอาจไม่ตรงกับที่ผู้ใช้ตัวแก้ไขที่มีชื่อนี้คาดหวัง ขอแนะนำให้ใช้Modifier.onVisibilityChanged()แทน และติดตามด้วยตนเองหากเลย์เอาต์แสดงก่อนหน้านี้แล้วตามข้อกำหนดของกรณีการใช้งานที่เฉพาะเจาะจง (Ia7095, b/447601783)- เปิดตัว
MeasuredSizeAwareModifierNodeซึ่งจำเป็นเมื่อคุณต้องการใช้การเรียกกลับonRemeasured()โปรดใช้อินเทอร์เฟซนี้โดยตรงแทนการใช้LayoutAwareModifierNodeที่เป็นแบบทั่วไปมากขึ้นเมื่อคุณไม่ต้องการการเรียกกลับอื่นๆ (If6fb0) - แนะนํา
visibleModifier ซึ่งใช้เพื่อข้ามการวาดเนื้อหาของ Composable ได้โดยไม่ส่งผลต่อพื้นที่ที่ครอบครอง (Ia6871, b/158837937)
เวอร์ชัน 1.10
เวอร์ชัน 1.10.6
25 มีนาคม 2026
androidx.compose.foundation:foundation-*:1.10.6 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.10.6 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
ComposeFoundationFlags.isPausableCompositionInPrefetchEnabledจะปิดใช้อยู่โดยค่าเริ่มต้นเพื่อแก้ไขข้อกังวลเกี่ยวกับความเสถียร (I73960, b/482223006, b/488433633)
เวอร์ชัน 1.10.5
11 มีนาคม 2026
androidx.compose.foundation:foundation-*:1.10.5 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.10.5 มีการคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไข
IndexOutOfBoundsExceptionในBasicTextFieldเมื่อใช้OutputTransformationและลบข้อความ (I20ee1)
เวอร์ชัน 1.10.4
25 กุมภาพันธ์ 2026
androidx.compose.foundation:foundation-*:1.10.4 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.10.4 มีการคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องที่เกิดจากการถดถอยซึ่งการใช้ตัวแก้ไขการจัดแนวจากขอบเขตอื่น (เช่น
ColumnScope.alignภายในRow) ส่งผลให้เกิดการวางตำแหน่งที่ไม่ถูกต้อง (6888f2b, b/477639546)
เวอร์ชัน 1.10.3
11 กุมภาพันธ์ 2026
androidx.compose.foundation:foundation-*:1.10.3 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.10.3 มีการคอมมิตเหล่านี้
เวอร์ชัน 1.10.2
28 มกราคม 2026
androidx.compose.foundation:foundation-*:1.10.2 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.10.2 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาแอปขัดข้องเมื่อย้อนกลับจากหน้าจอที่มีการเลือกข้อความที่ใช้งานอยู่ (I9f540, b/444482508)
เวอร์ชัน 1.10.1
14 มกราคม 2026
androidx.compose.foundation:foundation-*:1.10.1 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.10.1 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขข้อขัดข้องเมื่อการเลือกข้อความขยายจากอินสแตนซ์ข้อความหนึ่งไปยังอีกอินสแตนซ์หนึ่งที่จัดแนวในแนวนอน I351311, b/439758956
เวอร์ชัน 1.10.0
3 ธันวาคม 2025
androidx.compose.foundation:foundation-*:1.10.0 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.10.0 มีการเปลี่ยนแปลงเหล่านี้
เวอร์ชัน 1.10.0-rc01
19 พฤศจิกายน 2025
androidx.compose.foundation:foundation-*:1.10.0-rc01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.10.0-rc01 มีการคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- ปิดใช้ธง
isCacheWindowForPagerEnabled(Iffdec, b/458193632)
เวอร์ชัน 1.10.0-beta02
5 พฤศจิกายน 2025
androidx.compose.foundation:foundation-*:1.10.0-beta02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.10.0-beta02 มีการเปลี่ยนแปลงเหล่านี้
เวอร์ชัน 1.10.0-beta01
22 ตุลาคม 2025
androidx.compose.foundation:foundation-*:1.10.0-beta01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.10.0-beta01 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- อัปเดต API การแตะโดยอ้อมทั้งหมดให้ใช้ชื่อ API พอยน์เตอร์โดยอ้อมเพื่อให้ตรงกับ API อินพุตพอยน์เตอร์ (I238ce, b/451607214)
PagerState.currentPageOffsetFractionที่มีคำอธิบายประกอบพร้อม@FrequentlyChangingValue(Idfaab)
การแก้ไขข้อบกพร่อง
- แก้ไขลักษณะการทำงานของมาร์คีสำหรับทิศทางการจัดวาง RTL (Ib8be3)
เวอร์ชัน 1.10.0-alpha05
8 ตุลาคม 2025
androidx.compose.foundation:foundation-*:1.10.0-alpha05 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.10.0-alpha05 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
PaddingValuesตอนนี้รองรับการบวกและการลบเพื่อลดความซับซ้อนของการคำนวณการเว้นวรรคทั่วไปแล้ว (I327e1, b/244468479)
การแก้ไขข้อบกพร่อง
ComposeFoundationFlags.isPausableCompositionInPrefetchEnabledจะเปิดใช้อยู่โดยค่าเริ่มต้น ซึ่งเป็นการเพิ่มประสิทธิภาพด้านประสิทธิภาพที่ช่วยให้เราสามารถกระจายงานที่ต้องทำในระหว่างการดึงข้อมูลล่วงหน้าได้ดียิ่งขึ้น เช่น เราสามารถดำเนินการคอมโพสสำหรับบางส่วนของLazyColumn's next item ในระหว่างเฟรม UI หนึ่งๆ แล้วดำเนินการคอมโพสส่วนที่เหลือต่อในเฟรมถัดไป (I4c7fe)
เวอร์ชัน 1.10.0-alpha04
24 กันยายน 2025
androidx.compose.foundation:foundation-*:1.10.0-alpha04 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.10.0-alpha04 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มการใช้งาน
ScrollIndicatorStateสำหรับPagerStateแล้ว (I113b7) - เพิ่มการใช้งาน
ScrollIndicatorStateสำหรับLazyStaggeredGridStateแล้ว (I1028e) - เพิ่มการใช้งาน
ScrollIndicatorStateสำหรับLazyGridStateแล้ว (I9e50c) - เพิ่มการใช้งาน
ScrollIndicatorStateสำหรับLazyListStateแล้ว (I5ee29) - เพิ่มการใช้งาน
ScrollIndicatorStateสำหรับScrollStateแล้ว (I27f66) - แนะนำพร็อพเพอร์ตี้
scrollIndicatorStateในอินเทอร์เฟซScrollableState(Idca93) - นำฟีเจอร์ที่ติดแฟล็ก
isWindowInsetsModifierLocalNodeImplementationEnabledออกแล้ว (I15e8f, b/440964232) - เปิดเผยตัวแก้ไข
scrollableArea()ที่ใช้เพื่อทำให้คอมโพเนนต์เลื่อนได้ด้วยลักษณะการทำงานของการตัดเนื้อหาให้อยู่ในขอบเขต และจัดการทิศทางการเลื่อนเนื้อหาโดยอัตโนมัติตามการวางแนว RTL และค่าสถานะreverseScrolling(I9471b, b/316559454)
เวอร์ชัน 1.10.0-alpha03
10 กันยายน 2025
androidx.compose.foundation:foundation-*:1.10.0-alpha03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.10.0-alpha03 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- นำ
ComposeFoundationFlags.isNonComposedClickableEnabledออก (I0dfc0, b/406228525) - ย้ายฟังก์ชันของ Factory สำหรับการสร้างอินสแตนซ์
FillableDataไปยังออบเจ็กต์เสริม ให้ใช้เมธอดใหม่ของ Factory แทนการเรียกFillableData(value)ซึ่งก็คือFillableData.createFrom(value)(I2e200, b/441719650) - เปิดตัว
BeyondBoundsLayoutModifierNodeโหนดตัวแก้ไขใหม่เพื่อดำเนินการนอกเลย์เอาต์ที่ผูกไว้สำหรับการค้นหาโฟกัส (I39be1, b/416133658) - ทำเครื่องหมาย
ScrollState.valueเป็นพร็อพเพอร์ตี้@FrequentlyChangingValue(I4723d) - เปิดตัว
LazyLayoutKeyIndexMapและโรงงานสำหรับการติดตั้งใช้งานเริ่มต้น (I4fd0c, b/415038029)
การแก้ไขข้อบกพร่อง
- ตอนนี้คอลัมน์และแถวจะส่งขนาดจริงของสินค้าไปยัง
Modifier.alignอย่างถูกต้องแล้ว ซึ่งจะช่วยแก้ปัญหาที่การติดตั้งใช้งานModifier.alignที่กำหนดเองได้รับค่า 0 ที่ไม่ถูกต้อง (I8194f, b/439716351)
เวอร์ชัน 1.10.0-alpha02
27 สิงหาคม 2025
androidx.compose.foundation:foundation-*:1.10.0-alpha02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.10.0-alpha02 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- นำแฟล็ก
isFlingContinuationAtBoundsEnabledออกแล้ว (I6b84f) - นำแฟล็ก
isAdjustPointerInputChangeOffsetForVelocityTrackerEnabledออกแล้ว (I62380) - นำแฟล็ก
isOnScrollChangedCallbackEnabledออกแล้ว (I667dc) - นำแฟล็ก
isAutomaticNestedPrefetchEnabledออกแล้ว (I4f416) - นำแฟล็ก
DragGesturePickUpEnabledออกแล้ว (Ib8500) - เปิดตัว
ScrollIndicatorStateAPI สำหรับการแสดงสถานะแถบเลื่อน (I5e229)
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องที่การใช้
Modifier.anchoredDraggableไม่ได้เรียกใช้confirmValueChange(Iff7cc)
เวอร์ชัน 1.10.0-alpha01
13 สิงหาคม 2025
androidx.compose.foundation:foundation-*:1.10.0-alpha01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.10.0-alpha01 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- อัปเดตกลยุทธ์การดึงข้อมูลล่วงหน้าของ Pager เพื่อใช้หน้าต่างแคชแทนรายการเริ่มต้น 1 รายการในทิศทางการเลื่อน ตอนนี้ Pager จะเปิดใช้การดึงข้อมูลล่วงหน้าเริ่มต้นโดยค่าเริ่มต้น และการดึงข้อมูลล่วงหน้าจะอิงตามขนาดของหน้าต่างที่มีค่าเท่ากับ 1 วิวพอร์ต นั่นคือเราจะพยายามเติมรายการที่ดึงข้อมูลล่วงหน้าในวิวพอร์ตทั้งหมด 1 รายการ และจะเก็บไอเทมไว้ได้นานขึ้นด้วย (I4d45e, b/292136289)
ComposeFoundationLayoutFlags.isWindowInsetsOptimizationEnabledเพื่อให้ปิดใช้การเพิ่มประสิทธิภาพWindowInsetsได้หากการติดตั้งใช้งานใหม่ทำให้เกิดการเปลี่ยนแปลงด้านพฤติกรรม (I8e912)SnapFlingBehaviorตอนนี้อนุญาตให้ข้อกำหนดภาพเคลื่อนไหวของ Snap เกินขีดจำกัดระหว่างการ Snap ซึ่งช่วยให้คุณระบุสปริงที่มีการดีดตัวเป็นsnapAnimationSpecเพื่อสร้างภาพเคลื่อนไหวการสแนปที่มีการดีดตัวได้ ระบบจะยังคงไม่สนใจค่าที่เกินเมื่อทำการเข้าใกล้ด้วยสเปคการสแนป (I373c2)- ตอนนี้การกดเคอร์เซอร์ลงด้วยเมาส์หรือทัชแพดใน
ComposeViewจะล้างโฟกัสโดยอัตโนมัติหากการกดเคอร์เซอร์ลงไม่ได้เกิดขึ้นในขอบเขตของโหนดที่โฟกัส ซึ่งจะส่งผลให้เกิด UX แบบ "แตะเพื่อล้างโฟกัส" ที่คาดหวังมากกว่าลักษณะการทำงานปัจจุบันเมื่อใช้อุปกรณ์ป้อนข้อมูลแบบพอยน์เตอร์ คุณเลือกไม่ใช้ลักษณะการทำงานนี้ได้ด้วยAbstractComposeView.isClearFocusOnPointerDownEnabledAPI ใหม่ (I6322b, b/282963174) - ตอนนี้ Scrollable รองรับเหตุการณ์การเลื่อนล้อเมาส์แบบ 2 มิติได้ดีขึ้นแล้ว เราได้เปิดตัว API การทดสอบใหม่เพื่อช่วยทดสอบกรณีการใช้งานใน
MouseInjectionScopeนอกจากนี้ เรายังได้เปิดตัวการโอเวอร์โหลดใหม่สำหรับเมธอดการเลื่อนในMouseInjectionScopeและฟีเจอร์ค่าสถานะเพื่อควบคุมลักษณะการทำงานใหม่ที่เรียกว่าisMouseWheel1DAxisLockingEnabled(I136df) - อัปเดต
DragGestureNodeเพื่อใช้การป้อนข้อมูลเคอร์เซอร์ดิบแทนการระงับการป้อนข้อมูลเคอร์เซอร์เพื่อการเพิ่มประสิทธิภาพ โดยการเปลี่ยนแปลงจะเพิ่มไว้หลังฟีเจอร์แฟล็กisNonSuspendingPointerInputInDraggableEnabled(I0fa4b) - ใส่คำอธิบายประกอบใน
AnchoredDraggableAPI บางรายการด้วย@FrequentlyChangingValueoffset,requireOffsetและprogressมีการเปลี่ยนแปลงบ่อยครั้งและไม่ควรอ่านตามลำดับ โปรดเข้าถึงค่าเหล่านี้จากเลย์เอาต์และเฟสการวาด เอฟเฟกต์ หรืออื่นๆ นอกองค์ประกอบแทน (I05539) - นำธง
isOnScrollChangedCallbackEnabled,isAdjustPointerInputChangeOffsetForVelocityTrackerEnabled,isFlingContinuationAtBoundsEnabled,isAutomaticNestedPrefetchEnabled,DragGesturePickUpEnabled,isPointerInteropFilterDispatchingFixEnabled,isNestedScrollInteropPostFlingFixEnabled,isNestedScrollDispatcherNodeFixEnabledออกแล้ว (I36c18) - เปิดตัว
CompositionLocalที่ใช้แก้ไขแปรงไฮไลต์การเติมที่สำเร็จของการป้อนข้อความอัตโนมัติได้ (I52329) - เพิ่มสี่เหลี่ยมผืนผ้าโฟกัสที่ปรับแต่งได้ลงใน
FocusPropertiesตอนนี้คุณสามารถกำหนดพื้นที่โฟกัสที่กำหนดเองแทนการใช้กรอบล้อมรอบเริ่มต้นของโฟกัสได้แล้ว ระบบการย้ายโฟกัสและตรรกะการคงไว้ในมุมมองของคอนเทนเนอร์ที่เลื่อนได้จะใช้ข้อมูลนี้ (Id6555, b/368378073) - เพิ่ม
LineHeightStyle.Modeใหม่ชื่อTightโหมดนี้ช่วยบังคับใช้ความสูงของบรรทัดที่เล็กลงได้แม้ว่าอาจตัดกลีฟที่สูงกว่าก็ตาม (Id3849) - เปิดตัวอินเทอร์เฟซ Interpolatable ใหม่ที่อนุญาตให้มีการประมาณค่าอัตโนมัติระหว่างประเภทต่างๆ โดยสมมติว่าประเภทหนึ่งทราบวิธีแปลงจากอีกประเภทหนึ่ง อินเทอร์เฟซนี้ใช้ในคอมโพสประเภทต่างๆ เช่น แปรงและรูปร่าง แต่ก็ใช้ภายนอกได้เช่นกัน (I58eab)
- เพิ่มเหตุการณ์อินพุตทางอ้อมและวิธีระบุแกนพิกัดที่จะใช้สำหรับการเลื่อน (I58e7c)
- เพิ่ม
WindowInsets.cutoutPathAPI ใหม่เพื่อรับเส้นทางสำหรับหน้าจอรอยบาก (Ib90b1, b/279636456) - เราได้นำ
isWindowInsetsDefaultPassThroughEnabledออกแล้ว และตั้งค่าเริ่มต้นของ WindowInsets เป็นไม่ใช้เพื่อให้ View ย่อยรับWindowInsetsได้โดยค่าเริ่มต้น (I888e0, b/412469666)
การแก้ไขข้อบกพร่อง
isNonSuspendingPointerInputInDraggableEnabledควรปิดใช้ในตอนนี้ (Ia41c4)- ย้าย minSdk เริ่มต้นจาก API 21 ไปยัง API 23 (Ibdfca, b/380448311, b/435705964, b/435705223)
- อัปเดตเอกสารประกอบ
DraggableAnchors'minPosition/maxPositionเพื่อระบุว่า API เหล่านี้ควรแสดงผล Float.NaN ตามDraggableAnchorsAPI อื่นๆ (I0460a) - แก้ไขข้อบกพร่องที่ทำให้
DraggableAnchors#closestAnchorขัดข้องหากไม่มีการระบุจุดยึด (I4e646) - การปรับปรุงประสิทธิภาพสำหรับ
DraggableAnchors(If4065, I0460a) TextFieldState.edit { }จะไม่ล้างประวัติการเลิกทำอีกต่อไป แต่จะสร้างรายการเลิกทำแบบสแตนด์อโลนแทน หากต้องการให้ล้างสแต็กการเลิกทำหลังจากการเรียกใช้editโปรดใช้TextFieldState.undoState.clearHistory()(I12c14)- เพิ่มการรองรับการแตะสองครั้งเพื่อเลือกคำใน
SelectionContainerและBasicTextField(value, onValueChange)ที่โอเวอร์โหลด (Ibb06a) - แก้ไขข้อบกพร่องเล็กน้อยเพื่อให้
AutoboxingStateValuePropertyDetectorใช้งานร่วมกับ K1 และ K2 ได้ (Ie81c1) requestRectangleOnScreenคำขอที่ AndroidView สร้างขึ้นจะเผยแพร่ไปยัง Compose อย่างถูกต้องแล้ว ซึ่งจะช่วยให้มุมมองอย่างEditTextแสดงบนหน้าจอต่อไปเมื่อมีการโต้ตอบ (Ibbf4c)- ตอนนี้คอลัมน์และแถวจะส่งขนาดจริงของสินค้าไปยัง
Alignment.Vertical.alignและAlignment.Horizontal.alignอย่างถูกต้องแล้ว ซึ่งจะช่วยแก้ปัญหาที่การติดตั้งใช้งานการจัดแนวที่กำหนดเองได้รับค่า 0 ที่ไม่ถูกต้อง (I3e460, b/349722072)
เวอร์ชัน 1.9
เวอร์ชัน 1.9.5
19 พฤศจิกายน 2025
androidx.compose.foundation:foundation-*:1.9.5 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.9.5 มีการเปลี่ยนแปลงเหล่านี้
เวอร์ชัน 1.9.4
22 ตุลาคม 2025
androidx.compose.foundation:foundation-*:1.9.4 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.9.4 มีการคอมมิตเหล่านี้
เวอร์ชัน 1.9.3
8 ตุลาคม 2025
androidx.compose.foundation:foundation-*:1.9.3 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.9.3 มีการคอมมิตเหล่านี้
เวอร์ชัน 1.9.2
24 กันยายน 2025
androidx.compose.foundation:foundation-*:1.9.2 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.9.2 มีการคอมมิตเหล่านี้
เวอร์ชัน 1.9.1
10 กันยายน 2025
androidx.compose.foundation:foundation-*:1.9.1 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.9.1 มีการคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขการขัดข้องที่เกิดขึ้นเมื่อใช้
LazyLayoutCacheWindowในLazyLists(c39f5f3)
เวอร์ชัน 1.9.0
13 สิงหาคม 2025
androidx.compose.foundation:foundation-*:1.9.0 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.9.0 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 1.8.0
- การตรวจสอบ Lint ที่มาพร้อมกับ Compose ต้องใช้ AGP เวอร์ชัน 8.8.2 เป็นอย่างน้อย หากอัปเกรด AGP ไม่ได้ คุณสามารถอัปเกรด Lint ด้วยตนเองได้โดยใช้
android.experimental.lint.version=8.8.2(หรือเวอร์ชันที่ใหม่กว่า) ในgradle.propertiesคุณต้องใช้ Android Studio Ladybug หรือใหม่กว่าจึงจะเรียกใช้การตรวจสอบ Lint ของ Compose ภายใน IDE ได้ - การเปลี่ยนแปลงที่ทำให้เกิดข้อขัดข้อง: โอเวอร์โหลด
clickable,combinedClickable,selectable,toggleableและtriStateToggleableที่ไม่มีพารามิเตอร์ Indication จะรองรับเฉพาะอินสแตนซ์IndicationNodeFactoryที่ระบุโดยใช้LocalIndicationเท่านั้น การเปลี่ยนแปลงนี้จะมีผลเมื่อคุณคอมไพล์การใช้งานตัวแก้ไขเหล่านี้อีกครั้งโดยใช้ Compose เวอร์ชันนี้ Dependency แบบไบนารี / แบบทรานซิทีฟจะไม่ได้รับผลกระทบ หากคุณใช้การติดตั้งใช้งานข้อบ่งชี้ที่เลิกใช้งานแล้วกับLocalIndicationและใช้ API เหล่านี้ จะทำให้เกิดข้อขัดข้องในรันไทม์ การเปลี่ยนแปลงลักษณะการทำงานนี้จำเป็นต่อการเปิดใช้ประสิทธิภาพที่ดียิ่งขึ้น และช่วยให้ฟังก์ชันที่ประกอบกันได้ซึ่งใช้ตัวปรับแต่งเหล่านี้ข้ามระหว่างการจัดองค์ประกอบใหม่ได้ คุณสามารถใช้ComposeFoundationFlags.isNonComposedClickableEnabled=falseเพื่อเลือกไม่ใช้การเปลี่ยนแปลงลักษณะการทำงานนี้ชั่วคราว เพื่อเปิดใช้การอัปเกรด Compose โดยไม่ถูกบล็อกในการย้ายข้อมูลนี้ เราจะนำฟีเจอร์นี้ออกหลังจากการเปิดตัวเวอร์ชันเสถียร 1 ครั้ง หากต้องการแก้ไข ให้ย้ายข้อมูลการติดตั้งใช้งานการระบุที่เลิกใช้งานแล้วไปใช้IndicationNodeFactoryแทน นอกจากนี้ คุณยังใช้การโอเวอร์โหลดกับพารามิเตอร์ Indication ที่ชัดเจนได้ด้วย โดยการโอเวอร์โหลดเหล่านี้จะยังคงรองรับอินสแตนซ์ที่ไม่ใช่IndicationNodeFactoryของ Indication ต่อไป แม้ว่าเราจะไม่แนะนำด้วยเหตุผลด้านประสิทธิภาพก็ตาม (I6bcdc, b/316914333) - เปิดตัว
isFlingCancellationWithNestedScrollFixEnabledเพื่อแก้ไขปัญหาการแพร่กระจายการปัดในการเลื่อนที่ซ้อนกัน ใน CL นี้ เราจะคืนค่าลักษณะการทำงานของการปัดต่อเนื่องที่นำออกใน I9326a เราจะยังคงยกเลิกภาพเคลื่อนไหวการดีดในกรณีที่นำบุตรหลานออกจากองค์ประกอบ (I467f4, b/405910180, b/419049142, b/416784125) - เพิ่มการใช้งาน
scrollAnimationSpecในContentInViewNodeอีกครั้ง เราได้นำลักษณะการทำงานนี้ออกในระหว่างscrollAnimationSpecการเลิกใช้งาน ซึ่งทำให้กรณีการใช้งานใช้งานไม่ได้ (I1436a, b/403301605) - ลดการสั่นไหวแล้ว
LazyLayout(If5db4),LazyLayoutPrefetchStateและวิธีการกำหนดเวลาschedulePrecompositionและschedulePrecompositionAndPremeasure(I4362f, b/252853717) และLazyLayoutItemProvider(Icce09,b/261565751) - อนุญาตให้ฟีเจอร์เขียนอีเมลทริกเกอร์
ViewTreeObserver.OnScrollChangedลักษณะการทำงานนี้จะเปิดตัวภายใต้ฟีเจอร์isOnScrollChangedCallbackEnabledนอกจากนี้ เรายังเปิดตัวฟังก์ชันส่วนขยายของDelegatableNode dispatchOnScrollChangedด้วย (I34b9d, b/238109286) - เปิดตัว
Modifier.scrollable2D,Scrollable2DStateและ API ที่แสดงร่วมสำหรับการสร้างสถานะ นอกจากนี้ ยังได้เปิดตัวฟังก์ชันส่วนขยายการเลื่อนทั่วไปด้วย (Ic61c8, b/214410040) PrefetchSchedulerและการปรับแต่งถูกเลิกใช้งานแล้วเพื่อรองรับการติดตั้งใช้งานภายในที่จะทำงานทั้งหมดโดยอัตโนมัติ (I3a9a6, b/420551535)TextFieldState.edit { }จะไม่ล้างประวัติการเลิกทำอีกต่อไป แต่จะสร้างรายการเลิกทำแบบสแตนด์อโลนแทน หากต้องการให้ล้างสแต็กเลิกทำหลังจากเรียกใช้การแก้ไข โปรดใช้TextFieldState.undoState.clearHistory()(I12c14)- ตอนนี้เมนูตามบริบทและแถบเครื่องมือการเลือกรองรับรายการอัจฉริยะ (การเลือกอัจฉริยะ) แล้ว
- เพิ่มข้อความที่มีสไตล์
OutputTransformationเพื่ออนุญาตให้จัดรูปแบบเอาต์พุตของTextFieldโดยใช้การโอเวอร์โหลดstate TextField: รองรับเมนูบริบท (เมนูคลิกขวา)- ตอนนี้ข้อความที่คัดลอกจาก Composable ของ Text หลายรายการใน
SelectionContainerจะมีตัวคั่นบรรทัด \n เพิ่มระหว่างข้อความที่มาจาก Composable ของ Text ที่แยกกัน (I25332, b/285036739) - เปิดตัว API สำหรับสร้างรายการหัวข้อย่อยที่กำหนดเองผ่าน
AnnotatedString(I1d066, b/383269496, b/139326648) stateการโอเวอร์โหลดของBasicTextFieldจะทำให้เคอร์เซอร์เลื่อนเข้ามาในมุมมองเมื่อขนาดเปลี่ยนแปลง (I0eb41, b/406187741)- การเปลี่ยนแปลงที่ทำให้เกิดข้อขัดข้อง: ตอนนี้โหนดตัวแก้ไข
backgroundและborderจะใช้SemanticsModifierNodeแล้ว ซึ่งอาจส่งผลให้มีการเพิ่มSemanticsNodesใหม่ลงในโครงสร้างความหมาย และทำให้การทดสอบที่ตั้งสมมติฐานเกี่ยวกับโครงสร้างความหมายไม่สำเร็จ ตัวอย่างเช่น การทดสอบที่ใช้onChild,onParent,onSiblingและวิธีอื่นๆ ที่คล้ายกันเพื่อยืนยันอาจล้มเหลวหากมีการเพิ่มโหนดใหม่ระหว่างโหนดปัจจุบันและโหนดเป้าหมาย วิธีที่แนะนำในการแก้ไขความล้มเหลวเหล่านี้คือการเพิ่มtestTagลงในโหนดเป้าหมายโดยตรง อีกวิธีหนึ่งคือการใช้ตัวจับคู่ที่ยืดหยุ่นกว่า เช่นonNode(hasAnyAncestor(hasText("ancestor")) and hasText("target"))(I638b5)
เวอร์ชัน 1.9.0-rc01
30 กรกฎาคม 2025
androidx.compose.foundation:foundation-*:1.9.0-rc01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.9.0-rc01 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
TextFieldState.edit { }จะไม่ล้างประวัติการเลิกทำอีกต่อไป แต่จะสร้างรายการเลิกทำแบบสแตนด์อโลนแทน หากต้องการให้ล้างสแต็กการเลิกทำหลังจากการเรียกใช้editโปรดใช้TextFieldState.undoState.clearHistory()(I12c14)
เวอร์ชัน 1.9.0-beta03
16 กรกฎาคม 2025
androidx.compose.foundation:foundation-*:1.9.0-beta03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.9.0-beta03 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องที่ทำให้ลักษณะการทำงานของส่วนหัวแบบติดหนึบในกริดแบบเลซีเสียเมื่อมีการระบุเนื้อหาส่วนหัวที่ว่างเปล่า (e3e3400)
เวอร์ชัน 1.9.0-beta02
2 กรกฎาคม 2025
androidx.compose.foundation:foundation-*:1.9.0-beta02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.9.0-beta02 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- รองรับรายการอัจฉริยะในเมนูตามบริบทและแถบเครื่องมือการเลือก
การเปลี่ยนแปลง API
- แก้ไขข้อบกพร่องที่แป้นพิมพ์ฮาร์ดแวร์หรือรีโมตทีวีบางรุ่นไม่สามารถย้ายเคอร์เซอร์ใน
TextFieldsใหม่โดยใช้ปุ่มทิศทาง แต่กลับเปลี่ยนโฟกัสไปยัง Composable อื่นแทน เพิ่มComposeFoundationFlag.isTextFieldDpadNavigationFixEnabledเพื่อให้ปิดใช้การแก้ไขนี้ได้ชั่วคราวหากทำให้เกิดลักษณะการทำงานที่ไม่พึงประสงค์ในลักษณะที่กู้คืนไม่ได้ (Ie1922)
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาที่ส่วนหัวแบบติดหนึบไม่ติดหากมีรายการที่ปักหมุด (I9198d, b/385006133)
TextObfuscationMode.RevealLastTypedจะเป็นไปตามการตั้งค่าระบบ "TEXT_SHOW_PASSWORD" (I41c0c)- แก้ไขข้อบกพร่องที่
BasicTextFieldแสดงคำเตือน "วางจากคลิปบอร์ด" อย่างไม่ถูกต้องเมื่อแถบเครื่องมือข้อความเปิดขึ้นเป็นครั้งแรก (I5fda2)
เวอร์ชัน 1.9.0-beta01
18 มิถุนายน 2025
androidx.compose.foundation:foundation-*:1.9.0-beta01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.9.0-beta01 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ
- ตอนนี้โหนดตัวแก้ไข
backgroundและborderได้ติดตั้งใช้งานSemanticsModifierNodeแล้ว ซึ่งอาจส่งผลให้มีการเพิ่มSemanticsNodesใหม่ลงในโครงสร้างความหมาย และทำให้การทดสอบที่ตั้งสมมติฐานเกี่ยวกับโครงสร้างความหมายไม่สำเร็จ ตัวอย่างเช่น การทดสอบที่ใช้onChild,onParent,onSiblingและวิธีอื่นๆ ที่คล้ายกันเพื่อยืนยันอาจล้มเหลวหากมีการเพิ่มโหนดใหม่ระหว่างโหนดปัจจุบันและโหนดเป้าหมาย วิธีที่แนะนำในการแก้ไขความล้มเหลวเหล่านี้คือการเพิ่มtestTagลงในโหนดเป้าหมายโดยตรง อีกวิธีหนึ่งคือการใช้ตัวจับคู่ที่ยืดหยุ่นกว่า เช่นonNode(hasAnyAncestor(hasText("ancestor")) and hasText("target"))(I638b5)
การเปลี่ยนแปลง API
- เปลี่ยนชื่อ
Modifier.addTextContextMenuComponentsเป็นappendTextContextMenuComponents(I4c43f) - นำฟังก์ชัน
AnnotatedOutputTransformationออกและย้ายฟังก์ชันaddStyleไปยังTextFieldBufferaddStyleจะยังรับสายได้จากOutputTransformationเท่านั้น (I9930a, b/417991824) - เราเขียน Clickable ใหม่เพื่อไม่ให้ใช้การป้อนข้อมูลตัวชี้ที่ระงับเป็นการเพิ่มประสิทธิภาพ ฟีเจอร์นี้เปิดใช้โดยค่าสถานะ คุณปิดใช้ได้หากพบข้อบกพร่องในการติดตั้งใช้งานใหม่ -
ComposeFoundationFlags.isNonSuspendingPointerInputInClickableEnabled(I85b65) - เปิดตัว
isFlingCancellationWithNestedScrollFixEnabledเพื่อแก้ไขปัญหาการแพร่กระจายการปัดในการเลื่อนที่ซ้อนกัน ใน CL นี้ เราจะกู้คืนลักษณะการทำงานของการปัดที่ต่อเนื่องซึ่งนำออกไปใน aosp/3260391 เราจะยังคงยกเลิกภาพเคลื่อนไหวการดีดในกรณีที่นำบุตรหลานออกจากองค์ประกอบ (I467f4, b/405910180, b/419049142, b/416784125) WindowInsetsRulers: เปลี่ยนrulersIgnoringVisibilityเป็นสูงสุด เปลี่ยนgetDisplayCutoutBounds()ให้เป็นฟังก์ชันส่วนขยายของPlacementScopeWindowInsetsAnimationPropertiesเปลี่ยนเป็นWindowInsetsAnimationและgetAnimationProperties()เปลี่ยนเป็นgetAnimation()แล้ว (I3816f)- เปลี่ยน
InsetsRulersให้เป็นโค้ดทั่วไปที่มีชื่อWindowInsetsRulersปรับ API ให้เรียบง่ายขึ้นเพื่อให้การแทรกทั้งหมดเป็นWindowInsetsRulersแยกพร็อพเพอร์ตี้ภาพเคลื่อนไหวที่ไม่ใช่กฎไปยังคลาสAnimationPropertiesWindowInsetsRulers.innermostOf()ใช้เพื่อผสานWindowInsetsRulersหลายรายการได้ (I2f0c6, b/415012444)
การแก้ไขข้อบกพร่อง
- เพิ่มการใช้งาน
scrollAnimationSpecในContentInViewNodeอีกครั้ง เราได้นำลักษณะการทำงานนี้ออกในระหว่างscrollAnimationSpecการเลิกใช้งาน ซึ่งทำให้กรณีการใช้งานใช้งานไม่ได้ (I1436a, b/403301605)
เวอร์ชัน 1.9.0-alpha04
4 มิถุนายน 2025
androidx.compose.foundation:foundation-*:1.9.0-alpha04 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.9.0-alpha04 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
PrefetchSchedulerและการปรับแต่งถูกเลิกใช้งานแล้วเพื่อรองรับการติดตั้งใช้งานภายในที่จะทำงานทั้งหมดโดยอัตโนมัติ (I3a9a6, b/420551535)- อัปเดต
Scrollable2DStateให้ใช้ออฟเซ็ตในเมธอดcanScrollแทนมุม (I28694, b/417268474) - แทนที่
addAnnotationในAnnotatedOutputTransformationด้วยaddStyle(I91c6f, b/417991824) - ลดการสั่นไหวแล้ว
LazyLayout(If5db4) - ปรับปรุงตัวสร้างที่ว่างเปล่าสำหรับ
LazyLayoutPrefetchStateและวิธีการกำหนดเวลาschedulePrecompositionและschedulePrecompositionAndPremeasure(I4362f, b/252853717) - เปิดตัว
ProcessTextKeyใน Android ที่ใช้สำหรับรายการเมนูตามบริบทซึ่งเพิ่มสำหรับการดำเนินการตามความตั้งใจของPROCESS_TEXT(If0ac4) - ทำให้ API เมนูบริบทเป็นแบบสาธารณะ เปิดเผย
Modifier.addTextContextMenuComponentsและModifier.filterTextContextMenuComponentsเพื่อเพิ่มและนำรายการออกจากเมนูตามบริบท นอกจากนี้ เรายังได้เปิดตัว API พื้นฐานต่อไปนี้เพื่อให้ผู้ใช้สร้างเมนูตามบริบทที่กำหนดเองได้TextContextMenuProviderTextContextMenuDataProviderTextContextMenuDataTextContextMenuComponentLocalTextContextMenuDropdownProviderLocalTextContextMenuToolbarProvider(I1b7b0)
- ทำให้
LazyLayoutItemProviderเสถียร (Icce09, b/261565751) - เปิดตัวฟีเจอร์การเลือกอัจฉริยะของ Android ที่เปิด/ปิดใช้ได้ผ่าน
ComposeFoundationFlags.isSmartSelectionEnabledนอกจากนี้ ยังแสดงcompositionLocalLocalTextClassifierCoroutineContextแบบคงที่ซึ่งใช้เพื่อระบุCoroutineContextที่จะเปิดใช้ชิ้นงานTextClassificationได้ด้วย (I1dbaa, b/139321320)
เวอร์ชัน 1.9.0-alpha03
20 พฤษภาคม 2025
androidx.compose.foundation:foundation-*:1.9.0-alpha03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.9.0-alpha03 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม
AnnotatedOutputTransformationที่ช่วยให้คุณเพิ่มคำอธิบายประกอบในTextFieldก่อนการแสดงผลได้ (Ibc6f0, b/389978748) - เปิดตัว
LazyLayoutMeasurePolicyและทำให้LazyLayoutMeasureScopeเสถียร (I8c5df, b/252853717) - ตอนนี้
BasicSecureTextFieldจะยก ScrollState ของBasicTextFieldภายใน (I6e576) - เราได้เปิดตัวตัวแก้ไข
Modifier.onFirstVisibleและModifier.onVisibilityChangedซึ่งเป็นตัวแก้ไขระดับสูงที่สร้างขึ้นบนModifier.onLayoutRectChangedตัวแก้ไขเหล่านี้สร้างขึ้นมาเพื่อจัดการข้อกำหนดในการใช้งานทั่วไปจำนวนมากโดยเฉพาะ เช่น การบันทึกการแสดงผล การเล่นวิดีโออัตโนมัติ ฯลฯ โดยคำนึงถึงประสิทธิภาพเพื่อให้ใช้ในสถานการณ์ที่สำคัญซึ่งอิงตามรายการได้โดยไม่ต้องเสี่ยงต่อการลดประสิทธิภาพการเลื่อน นอกจาก API ตัวแก้ไขเหล่านี้แล้ว เรายังได้เพิ่ม API อื่นๆ เพื่อRelativeLayoutBoundsเพื่อรองรับ Use Case เหล่านี้ รวมถึงช่วยให้นักพัฒนาแอปสร้างตัวแก้ไขที่กำหนดเองที่คล้ายกันซึ่งเหมาะกับ Use Case ของตนได้อย่างง่ายดาย (I759b8) - เปิดตัว
detectDragGesturesโอเวอร์โหลดที่มีการควบคุมการล็อกการวางแนวและการเลื่อนด้วยการสัมผัส (Iadb0d) - เปิดตัว
Modifier.scrollable2D,Scrollable2DStateและ API ที่แสดงร่วมสำหรับการสร้างสถานะ นอกจากนี้ ยังได้เปิดตัวฟังก์ชันส่วนขยายการเลื่อนทั่วไปด้วย (Ic61c8, b/214410040) - ค่าสี Compose 64 บิตไม่สามารถเปรียบเทียบกับ Android
ColorLongsได้โดยตรงเนื่องจากรหัสพื้นที่สีบางรายการไม่ได้เรียงตามลำดับ เราได้เพิ่ม API ใหม่ 2 รายการ ได้แก่toColorLong()และfromColorLong()เพื่อใช้แปลงเป็นและจากพื้นที่สี Android (I36899)
การแก้ไขข้อบกพร่อง
- ตอนนี้ข้อความที่คัดลอกจาก Text Composable หลายรายการใน
SelectionContainerจะมีตัวคั่นบรรทัด\nเพิ่มระหว่างข้อความที่มาจาก Text Composable ที่แยกกัน (I25332, b/285036739)
เวอร์ชัน 1.9.0-alpha02
7 พฤษภาคม 2025
androidx.compose.foundation:foundation-*:1.9.0-alpha02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.9.0-alpha02 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- แก้ไขวิธีเพิ่มการเปลี่ยนแปลงอินพุตของเคอร์เซอร์ใน
VelocityTrackerในDragGestureNodeซึ่งควบคุมได้ด้วยฟีเจอร์ใหม่isOffsetPositionBeforeAddingToVelocityTrackerEnabled(Ic7992, b/292556787, b/236451818) - ทำให้
await[Vertical/Horizontal]PointerSlopOrCancellationเป็นแบบสาธารณะ (I6968b, b/298903681) - ตอนนี้
AbstractComposeView.consumeWindowInsetsจะมีค่าเริ่มต้นเป็น falseWindowInsetsจะได้รับการปรับขนาดและตำแหน่งโดยอัตโนมัติสำหรับเด็กเมื่อตั้งค่าเป็น "เท็จ" คุณจึงไม่ต้องตั้งค่าเริ่มต้นเป็น "จริง" อีกต่อไป ซึ่งจะแก้ไขปัญหาที่ View ลูกไม่ได้รับการอัปเดตWindowInsetsโดยค่าเริ่มต้น นักพัฒนาแอปสามารถเลือกไม่รับการอัปเดตได้โดยเปลี่ยนComposeFoundationLayout.isWindowInsetsDefaultPassThroughEnabledที่เป็นเวอร์ชันทดลองเป็น true หรือโดยการตั้งค่าAbstractComposeView.consumeWindowInsetsเป็น true ในอินสแตนซ์มุมมอง Compose ทั้งหมด (I6fa0a, b/411868840)
การมีส่วนร่วมภายนอก
- แก้ไขข้อขัดข้องของ Pager เมื่อมีค่า beyondViewportPageCount ขนาดใหญ่มาก (Idb2db)
เวอร์ชัน 1.9.0-alpha01
23 เมษายน 2025
androidx.compose.foundation:foundation-*:1.9.0-alpha01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.9.0-alpha01 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลงพฤติกรรม
การตรวจสอบ Lint ที่มาพร้อมกับ Compose ต้องใช้ AGP เวอร์ชัน 8.8.2 เป็นอย่างน้อย หากอัปเกรด AGP ไม่ได้ คุณสามารถอัปเกรด Lint ด้วยตนเองได้โดยใช้
android.experimental.lint.version=8.8.2(หรือเวอร์ชันที่ใหม่กว่า) ในgradle.propertiesคุณต้องใช้ Android Studio Ladybug หรือใหม่กว่าจึงจะเรียกใช้การตรวจสอบ Lint ของ Compose ภายใน IDE ได้การเปลี่ยนแปลงที่ทำให้เกิดข้อขัดข้อง: โอเวอร์โหลด
clickable,combinedClickable,selectable,toggleableและtriStateToggleableที่ไม่มีพารามิเตอร์ Indication จะรองรับเฉพาะอินสแตนซ์IndicationNodeFactoryที่ระบุโดยใช้LocalIndicationเท่านั้น การเปลี่ยนแปลงนี้จะมีผลเมื่อคุณคอมไพล์การใช้งานตัวแก้ไขเหล่านี้อีกครั้งโดยใช้ Compose เวอร์ชันนี้ Dependency แบบไบนารี / แบบทรานซิทีฟจะไม่ได้รับผลกระทบ หากคุณใช้การติดตั้งใช้งานข้อบ่งชี้ที่เลิกใช้งานแล้วกับLocalIndicationและใช้ API เหล่านี้ จะทำให้เกิดข้อขัดข้องในรันไทม์ การเปลี่ยนแปลงลักษณะการทำงานนี้จำเป็นต่อการเปิดใช้ประสิทธิภาพที่ดียิ่งขึ้น และช่วยให้ฟังก์ชันที่ประกอบกันได้ซึ่งใช้ตัวปรับแต่งเหล่านี้ข้ามระหว่างการจัดองค์ประกอบใหม่ได้ คุณสามารถใช้ComposeFoundationFlags.isNonComposedClickableEnabled=falseเพื่อเลือกไม่ใช้การเปลี่ยนแปลงลักษณะการทำงานนี้ชั่วคราว เพื่อเปิดใช้การอัปเกรด Compose โดยไม่ถูกบล็อกในการย้ายข้อมูลนี้ เราจะนำฟีเจอร์นี้ออกหลังจากการเปิดตัวเวอร์ชันเสถียร 1 ครั้ง หากต้องการแก้ไข ให้ย้ายข้อมูลการติดตั้งใช้งานการระบุที่เลิกใช้งานแล้วเพื่อใช้IndicationNodeFactoryแทน นอกจากนี้ คุณยังใช้การโอเวอร์โหลดกับพารามิเตอร์ Indication ที่ชัดเจนได้ด้วย โดยการโอเวอร์โหลดเหล่านี้จะยังคงรองรับอินสแตนซ์ที่ไม่ใช่IndicationNodeFactoryของ Indication ต่อไป แม้ว่าเราจะไม่แนะนำด้วยเหตุผลด้านประสิทธิภาพก็ตาม (I6bcdc, b/316914333)
การเปลี่ยนแปลง API
- เปิดตัว API สำหรับสร้างรายการหัวข้อย่อยที่กำหนดเองผ่าน
AnnotatedString(I1d066, b/383269496, b/139326648) - อนุญาตให้ฟีเจอร์เขียนอีเมลทริกเกอร์
ViewTreeObserver.OnScrollChangedลักษณะการทำงานนี้จะเปิดตัวภายใต้ฟีเจอร์isOnScrollChangedCallbackEnabledนอกจากนี้ เรายังเปิดตัวฟังก์ชันส่วนขยายของDelegatableNode dispatchOnScrollChangedด้วย (I34b9d, b/238109286) - โปรเจ็กต์ที่เผยแพร่ด้วย Kotlin 2.0 ต้องใช้ KGP 2.0.0 ขึ้นไปจึงจะใช้งานได้ (Idb6b5)
- เพิ่มการรองรับการตรวจสอบ Lint สำหรับ
TextFieldStateเพื่อให้แน่ใจว่าระบบจะจดจำไว้ในองค์ประกอบ ลองใช้rememberTextFieldStateแทน (I53d74) - เพิ่มการรองรับการตรวจสอบ Lint สำหรับ
FocusRequesterเพื่อให้แน่ใจว่าระบบจะจดจำไว้ในการเขียน (I6bf91) - เพิ่มการรองรับการตรวจสอบ Lint สำหรับ
BringIntoViewRequesterเพื่อให้แน่ใจว่าระบบจะจดจำไว้ในองค์ประกอบ (Ibfba6) - เปิดตัวขอบเขตสำหรับ
schedulePrefetchในกลยุทธ์ตารางและรายการเพื่อให้สอดคล้องกับLazyListPrefetchStateที่มีความสามารถในการให้ข้อมูลขนาดและดัชนี (Iad80c) - การเปลี่ยนแปลงที่ทำให้เกิดข้อขัดข้อง: โอเวอร์โหลด
clickable,combinedClickable,selectable,toggleableและtriStateToggleableที่ไม่มีพารามิเตอร์ Indication จะรองรับเฉพาะอินสแตนซ์IndicationNodeFactoryที่ระบุโดยใช้LocalIndicationเท่านั้น การเปลี่ยนแปลงนี้จะมีผลเมื่อคุณคอมไพล์การใช้งานตัวแก้ไขเหล่านี้อีกครั้งโดยใช้ Compose เวอร์ชันนี้ Dependency แบบไบนารี / แบบทรานซิทีฟจะไม่ได้รับผลกระทบ หากคุณใช้การติดตั้งใช้งานข้อบ่งชี้ที่เลิกใช้งานแล้วกับLocalIndicationและใช้ API เหล่านี้ จะทำให้เกิดข้อขัดข้องในรันไทม์ การเปลี่ยนแปลงลักษณะการทำงานนี้จำเป็นต่อการเปิดใช้ประสิทธิภาพที่ดียิ่งขึ้น และช่วยให้ฟังก์ชันที่ประกอบกันได้ซึ่งใช้ตัวปรับแต่งเหล่านี้ข้ามระหว่างการจัดองค์ประกอบใหม่ได้ คุณสามารถใช้ComposeFoundationFlags.isNonComposedClickableEnabled=falseเพื่อเลือกไม่ใช้การเปลี่ยนแปลงลักษณะการทำงานนี้ชั่วคราว เพื่อเปิดใช้การอัปเกรด Compose โดยไม่ถูกบล็อกในการย้ายข้อมูลนี้ เราจะนำฟีเจอร์นี้ออกหลังจากการเปิดตัวเวอร์ชันเสถียร 1 ครั้ง หากต้องการแก้ไข ให้ย้ายข้อมูลการติดตั้งใช้งานการระบุที่เลิกใช้งานแล้วเพื่อใช้IndicationNodeFactoryแทน นอกจากนี้ คุณยังใช้การโอเวอร์โหลดกับพารามิเตอร์ Indication ที่ชัดเจนได้ด้วย โดยการโอเวอร์โหลดเหล่านี้จะยังคงรองรับอินสแตนซ์ที่ไม่ใช่IndicationNodeFactoryของ Indication ต่อไป แม้ว่าเราจะไม่แนะนำด้วยเหตุผลด้านประสิทธิภาพก็ตาม (I6bcdc, b/316914333) - เพิ่ม Flag สำหรับควบคุมลักษณะการทำงานของการดึงข้อมูลล่วงหน้าแบบซ้อนอัตโนมัติ:
isAutomaticNestedPrefetchEnabled(I8d448) - แนะนำการโอเวอร์โหลดสำหรับ
LazyGridStateและrememberLazyGridStateที่ใช้LazyLayoutCacheWindow(I51151) - เพิ่มไม้บรรทัดสำหรับระยะขอบหน้าต่าง เพิ่ม
DerivedRulerเพื่อให้คำนวณไม้บรรทัดจากไม้บรรทัดอื่นได้ แก้ไขPlacmentScopeเพื่อใช้ความหนาแน่น (I658bc, b/359260964) - เพิ่มฟังก์ชัน Factory
WindowInsets()ที่ไม่มีอาร์กิวเมนต์เพื่อสร้างWindowInsetsที่ว่างเปล่าได้อย่างง่ายดาย (I65f62, b/395311689) - เพิ่ม
PaddingValues.ZeroสำหรับPaddingValuesที่ว่างเปล่า (If193e, b/386255688)
การแก้ไขข้อบกพร่อง
stateการโอเวอร์โหลดของBasicTextFieldจะทำให้เคอร์เซอร์เลื่อนเข้ามาในมุมมองเมื่อขนาดเปลี่ยนแปลง (I0eb41, b/406187741)- อัปเดต API ของ
onVisibleItemsUpdatedในLazyListPrefetchStrategyและLazyGridPrefetchStrategyเพื่อแจ้งสถานะเริ่มต้น (If2cfa)
เวอร์ชัน 1.8
เวอร์ชัน 1.8.3
18 มิถุนายน 2025
androidx.compose.foundation:foundation-*:1.8.3 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.3 มีการคอมมิตเหล่านี้
เวอร์ชัน 1.8.2
20 พฤษภาคม 2025
androidx.compose.foundation:foundation-*:1.8.2 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.2 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขไม่ให้การคำนวณจำนวนรายการที่จะโหลดสำหรับการค้นหาโฟกัสทำให้เกิดการหารด้วย 0 ใช้การตรวจสอบกับเลย์เอาต์ทั้งหมดที่ใช้
LazyLayoutBeyondBoundsState(8e6dc8)
เวอร์ชัน 1.8.1
7 พฤษภาคม 2025
androidx.compose.foundation:foundation-*:1.8.1 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.1 มีการคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องใน
BasicTextและTextAutoSizeที่การใช้TextOverflow.Ellipsizeจะทำให้ข้อความมีขนาดเล็กกว่าที่ควร (I1e1d8, b/396582066) - แก้ไขข้อบกพร่องใน
BasicTextFieldที่ทำให้เกิดข้อขัดข้องเบ็ดเตล็ดเมื่อTextFieldDecoratorข้ามการเรียกinnerTextField(I2638c), b/308398612 - แก้ไขข้อบกพร่องใน
TextFieldที่ทำให้แถบเครื่องมือข้อความและแฮนเดิลการเลือกหายไปโดยสมบูรณ์เมื่อเปลี่ยนอินสแตนซ์TextFieldState(I8068a), b/390477786 - แก้ไขข้อบกพร่องใน
BasicTextซึ่งการเปลี่ยนข้อจำกัดความกว้างขั้นต่ำไม่ได้อัปเดตตำแหน่งของข้อความเมื่อตั้งค่าtextAlignเป็นค่าที่ไม่ใช่ค่าเริ่มต้น (I77a96), b/406305552
เวอร์ชัน 1.8.0
23 เมษายน 2025
androidx.compose.foundation:foundation-*:1.8.0 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0 มีการเปลี่ยนแปลงเหล่านี้
เวอร์ชัน 1.8.0-rc03
9 เมษายน 2025
androidx.compose.foundation:foundation-*:1.8.0-rc03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-rc03 มีการคอมมิตเหล่านี้
เวอร์ชัน 1.8.0-rc02
26 มีนาคม 2025
androidx.compose.foundation:foundation-*:1.8.0-rc02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-rc02 มีการเปลี่ยนแปลงเหล่านี้
เวอร์ชัน 1.8.0-rc01
12 มีนาคม 2025
androidx.compose.foundation:foundation-*:1.8.0-rc01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-rc01 มีการคอมมิตเหล่านี้
เวอร์ชัน 1.8.0-beta03
26 กุมภาพันธ์ 2025
androidx.compose.foundation:foundation-*:1.8.0-beta03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-beta03 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- เพิ่มพร็อพเพอร์ตี้เชิงความหมายใหม่
InputTextที่บันทึกค่าของช่องข้อความก่อนที่จะใช้การแปลงเอาต์พุต (Iae46a, b/395911609, b/176949051) - นำโอเวอร์โหลด
AutoSizeที่เลิกใช้งานแล้วออก โปรดใช้ API ของTextAutoSizeที่มีฟังก์ชันเดียวกัน (I2c90f) - แก้ไขปัญหาการแคชใน
TextAutoSizeซึ่งการส่งเลย์เอาต์ครั้งที่ 2 ที่มีข้อจำกัดเดียวกันอาจทำให้ใช้ขนาดแบบอักษรที่ใหญ่เป็นอันดับ 2 แทนที่จะเป็นขนาดที่ใหญ่ที่สุด (Id367f)
เวอร์ชัน 1.8.0-beta02
12 กุมภาพันธ์ 2025
androidx.compose.foundation:foundation-*:1.8.0-beta02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-beta02 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาที่การใช้งานการเลื่อนเกินโดยใช้
LayoutModifierNodeจะทำงานไม่ถูกต้องภายในคอนเทนเนอร์ที่เลื่อนได้
เวอร์ชัน 1.8.0-beta01
29 มกราคม 2025
androidx.compose.foundation:foundation-*:1.8.0-beta01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-beta01 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
SemanticsNodeInteraction.semanticsId()ถูกลบออกไปแล้ว โปรดใช้SemanticsNodeInteraction.fetchSemanticsNode().idแทน (Ie397a)- เขียน
requestAutofillAPI ใหม่ให้อยู่นอกเครื่องมือจัดการการป้อนข้อความอัตโนมัติ (Id1929) ContextualFlowRowและContextualFlowColumnได้รับการทำเครื่องหมายว่าเลิกใช้งานแล้ว เราเปิดตัวคอมโพเนนต์เวอร์ชันทดลองนี้ในเวอร์ชัน 1.7 และยังไม่ได้ปรับให้เสถียร รวมถึงเห็นว่าการใช้งานไม่เป็นที่ต้องการ ในอนาคต เราอาจมีคอมโพเนนต์ที่แก้ปัญหา Use Case ที่คอมโพเนนต์นี้มีไว้แก้ปัญหาFlowRowและFlowColumnมีการโอเวอร์โหลดทดลองที่เปิดตัวในเวอร์ชัน 1.7 ซึ่งมีพารามิเตอร์overflowเราเลิกใช้งานพารามิเตอร์นี้แล้ว และคุณสามารถใช้การโอเวอร์โหลดที่ไม่มีพารามิเตอร์นี้แทนได้ ลักษณะการทำงาน "overflow" เริ่มต้นสำหรับการโอเวอร์โหลดเหล่านี้จะเป็น "Clip" เหมือนกับที่เคยเป็นมาตั้งแต่เปิดตัว- กรณีการใช้งานจำนวนมากสำหรับ
ContextualFlowRowสามารถทำได้โดยใช้FlowRowแต่เราทราบดีว่าไม่ใช่ทุกกรณีContextualFlowRowสามารถติดตั้งใช้งานในพื้นที่ผู้ใช้ได้อย่างสมบูรณ์ และคุณสามารถพยายามคัดลอกการติดตั้งใช้งานและปรับเปลี่ยนได้หากต้องการ ในอนาคต เราหวังว่าจะแก้ปัญหาในกรณีการใช้งานเหล่านี้ด้วยวิธีที่แตกต่างออกไป (Ibafec)
การแก้ไขข้อบกพร่อง
- แก้ไขเลย์เอาต์ข้อความที่มีจุดไข่ปลาซึ่งบางครั้งแปลไม่ถูกต้องระหว่างภาพเคลื่อนไหว ดูข้อมูลเพิ่มเติมได้ที่ b/389707025 (Ie55b1, b/389707025)
- แก้ไขข้อบกพร่องใน
BasicTextโดยตั้งค่าTextAutoSizeและmaxLinesเป็น 1 (Ic0450, b/376834366) - ตอนนี้ความสูงขั้นต่ำของข้อความจะพิจารณาพารามิเตอร์
minLinesแล้ว ซึ่งหมายความว่าความสูงขององค์ประกอบภายในขั้นต่ำที่รายงานจะไม่น้อยกว่าความสูงที่จำเป็นเพื่อให้เป็นไปตามพารามิเตอร์minLines(I225f9, b/388299762)
เวอร์ชัน 1.8.0-alpha08
15 มกราคม 2025
androidx.compose.foundation:foundation-*:1.8.0-alpha08 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-alpha08 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- AutoSize: เปลี่ยนชื่อ
AutoSizeเป็นTextAutoSizeและเผยแพร่ API ที่ช่วยให้สร้างการติดตั้งใช้งานTextAutoSizeที่กำหนดเองได้ ดูตัวอย่างการใช้งานขนาดข้อความอัตโนมัติที่กำหนดเองได้ที่TextAutoSizeSample(I85756) - ย้ายแฟล็กฟีเจอร์
DetectTapGesturesEnableNewDispatchingBehaviorไปยังComposeFoundationFlagsและเปลี่ยนชื่อเป็นisDetectTapGesturesImmediateCoroutineDispatchEnabledเราเลิกใช้งานฟีเจอร์เก่าแล้ว และตอนนี้จะมอบสิทธิ์ให้ComposeFoundationFlags.isDetectTapGesturesImmediateCoroutineDispatchEnabledแทน (I62932)
การแก้ไขข้อบกพร่อง
- เปิดใช้
DetectTapGesturesEnableNewDispatchingBehaviorโดยค่าเริ่มต้น ตอนนี้ API ของTapGestureDetectorใช้ลักษณะการทำงานในการส่งใหม่ (การส่งทันที) โดยค่าเริ่มต้น (I9f2bc, b/369648479) - แก้ไข
requiredWidth/Height/Sizeตัวปรับเพื่อจัดการขนาดโดยธรรมชาติอย่างเหมาะสม (Ie3d7d, b/368113212)
การมีส่วนร่วมภายนอก
BasicTooltipที่ใช้กันทั่วไปใน Foundation และBasicTooltip/Tooltipใน Material3 (Ifc2e6)- เพิ่มอินเทอร์เฟซคลิปบอร์ดใหม่และองค์ประกอบในเครื่องสำหรับการใช้งาน (I80809)
เวอร์ชัน 1.8.0-alpha07
11 ธันวาคม 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha07 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-alpha07 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- ลบ
ComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabledธงที่ช่วยย้อนกลับการนำgraphicsLayerภายในออกจากBasicTextหากคุณใช้ฟีเจอร์นี้ โปรดแจ้งให้เราทราบถึงเหตุผลโดยการรายงานข้อบกพร่อง นอกจากนี้ คุณยังส่งModifier.graphicsLayer()ไปยังการเรียกใช้BasicTextเพื่อให้ได้ลักษณะการทำงานแบบเดิมได้ด้วย (Id9f90) - เพิ่มการติดตั้งใช้งานเริ่มต้นสำหรับ
stickyHeaderDSL ใหม่ (I68986) - มี
LocalAutofillHighlightColorองค์ประกอบการใช้งานในพื้นที่เป็นประเภทสี (I0e05b) - เปลี่ยนชื่อ
OverscrollEffect#withoutDrawingเป็นOverscrollEffect#withoutVisualEffectแล้ว (I1a154)
การแก้ไขข้อบกพร่อง
- การแก้ไขเพิ่มเติมสำหรับปัญหาในการคำนวณเป้าหมายของ
AnchoredDraggableซึ่งอาจทำให้มีการตั้งค่าที่จุดยึดที่ไม่ถูกต้องสำหรับการปัดบางรายการ (I23b87, b/367660226)
การมีส่วนร่วมภายนอก
- เพิ่ม
BringIntoViewResponderModifierNodeลงใน UI ซึ่งเป็นวิธีใหม่ในการใช้ฟังก์ชันการทำงานของ Bring Into View รวมถึงอนุญาตให้ใช้ในระดับแพลตฟอร์ม (Ia6dd8) - เรากำลังเปลี่ยนแปลงวิธีวาดเคอร์เซอร์เล็กน้อย คุณใช้
LocalCursorBlinkEnabledเพื่อปิดใช้การวาดเคอร์เซอร์ในการทดสอบได้ (I4c697)
เวอร์ชัน 1.8.0-alpha06
13 พฤศจิกายน 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha06 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-alpha06 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มตัวปรับแต่ง
stylusHoverIcon(Iff20a, b/331289114) - เลิกใช้งาน
confirmValueChangeของAnchoredDraggableStateแล้ว แทนที่จะยับยั้งการเปลี่ยนแปลงสถานะ แองเคอร์ที่ไม่ได้รับอนุญาตไม่ควรอยู่ในชุดแองเคอร์ที่ใช้งานอยู่ และควรใช้OverscrollEffectเพื่อระบุว่าการดำเนินการที่ขอไม่พร้อมใช้งาน (Ia717f) - เปลี่ยนเครื่องมือจัดการการป้อนข้อความอัตโนมัติให้เป็นอินเทอร์เฟซ (I84914, b/376080755)
- เพิ่ม API
OverscrollEffect#withoutDrawingและOverscrollEffect#withoutEventHandling- API เหล่านี้สร้างอินสแตนซ์ที่ห่อหุ้มของเอฟเฟกต์การเลื่อนเกินที่ระบุซึ่งไม่ได้วาด / จัดการเหตุการณ์ตามลำดับ ซึ่งช่วยให้แสดงผลการเลื่อนเกินในคอมโพเนนต์แยกต่างหากจากคอมโพเนนต์ที่ส่งเหตุการณ์ได้ เช่น ปิดใช้การวาดการเลื่อนเกินในรายการแบบ Lazy แล้ววาดการเลื่อนเกินแยกกันที่ด้านบน / ที่อื่น (Idbb3d, b/266550551, b/204650733, b/255554340, b/229537244) - เพิ่มการรองรับการป้อนข้อความอัตโนมัติในแถบเครื่องมือข้อความ (Ie6a4c)
- เลิกใช้งาน
OverscrollConfigurationและLocalOverscrollConfigurationและเพิ่มrememberPlatformOverscrollFactoryเพื่อสร้างอินสแตนซ์ของ / ปรับแต่งพารามิเตอร์ของการใช้งานการเลื่อนเกินเริ่มต้น หากต้องการปิดใช้การเลื่อนเกิน ให้ใช้LocalOverscrollFactory provides nullแทนLocalOverscrollConfiguration provides nullหากต้องการเปลี่ยนสีเรืองแสง / ระยะขอบ ให้ใช้LocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding)แทนLocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding)(Ie71f9, b/255554340, b/234451516) - เปลี่ยนพร็อพเพอร์ตี้
effectModifierในOverscrollEffectเป็นnode: DelegatableNodeเพื่อให้สอดคล้องกับ API อื่นๆ (Ic0b46, b/255554340) - นํา
GlobalAssertionsAPI เวอร์ชันทดลองออกแล้ว โดยมีวัตถุประสงค์เพื่อใช้ในการเรียกใช้การตรวจสอบการช่วยเหลือพิเศษ โปรดดูenableAccessibilityChecks()เพื่อวัตถุประสงค์ดังกล่าวแทน (I59322)
เวอร์ชัน 1.8.0-alpha05
30 ตุลาคม 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha05 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-alpha05 มีการเปลี่ยนแปลงเหล่านี้
ฟีเจอร์ใหม่
- รองรับการปรับขนาดข้อความอัตโนมัติ ส่งอินสแตนซ์
AutoSize(เช่นAutoSize.StepBased) ไปยัง Composable ของข้อความที่คุณชื่นชอบ (เช่นBasicText) แล้วดูว่าข้อความปรับขนาดให้พอดีกับพื้นที่ที่มีอยู่ได้อย่างไร (Ice7e0, b/139320827) - เพิ่ม API ของ
OverscrollFactoryและLocalOverscrollFactoryเพื่ออนุญาตให้กำหนดค่าการเลื่อนเกินภายในลำดับชั้น ระบบจะใช้ค่าที่ระบุผ่านLocalOverscrollFactoryเป็นค่าเริ่มต้นในการสร้างOverscrollEffectหากต้องการสร้างและจดจำเอฟเฟกต์จากโรงงานที่ระบุในปัจจุบัน ให้ใช้rememberOverscrollEffect()(I51ca4, b/255554340)
การเปลี่ยนแปลง API
- เปิดตัว
CompositionLocalที่ใช้เพื่อแก้ไขเฉดสีของไฮไลต์การป้อนข้อความอัตโนมัติที่สำเร็จ (I32092) - นำ
ScrollableDefaults.overscrollEffectออกแล้ว คุณควรใช้rememberOverscrollEffectแทน ซึ่งจะสร้างอินสแตนซ์ของการใช้งานการเลื่อนเลยขอบเขตปัจจุบันที่มาพร้อมกับLocalOverscrollFactory(I1651a, b/255554340),(b/234451516) - เปิดตัว
AutofillManagerอินเทอร์เฟซใหม่ที่ใช้ปรับแต่งเส้นทางการป้อนข้อความอัตโนมัติของผู้ใช้ได้ และisSemanticAutofillEnabledฟีเจอร์ที่ใช้เปิดใช้การป้อนข้อความอัตโนมัติเวอร์ชันใหม่นี้ (I9d484) - นำ
CombinedClickableNodeออก เราได้เปิดเผย API เวอร์ชันทดลองนี้ชั่วคราวเพื่อปลดบล็อกงานด้านประสิทธิภาพ แต่ตอนนี้ไม่จำเป็นต้องใช้แล้ว แต่คุณควรใช้Modifier.combinedClickableโดยตรงเหมือนกับ API ตัวแก้ไขอื่นๆ (I4b658) - เพิ่มการโอเวอร์โหลดให้กับ
horizontalScroll,verticalScroll,LazyColumn,LazyRow,LazyHorizontalGrid,LazyVerticalGrid,LazyHorizontalStaggeredGrid,LazyVerticalStaggeredGrid,HorizontalPagerและVerticalPagerพร้อมรองรับการระบุOverscrollEffectที่กำหนดเองOverscrollEffectที่ระบุจะได้รับเหตุการณ์และแสดงผลภายในขอบเขตของคอมโพเนนต์เหล่านี้ โปรดทราบว่าระบบไม่รองรับการวาดOverscrollEffectเดียวกัน 2 ครั้ง คุณจึงวาดOverscrollEffectเดียวกันที่ระบุไว้ในคอมโพเนนต์ใดคอมโพเนนต์หนึ่งเหล่านี้แยกกันด้วยModifier.overscrollไม่ได้ เราจะพิจารณา Use Case ของการวาดการเลื่อนเกินขอบเขตของคอมโพเนนต์เหล่านี้แยกต่างหากในอนาคต (I2dc42, b/266550551, b/234274772, b/224572538, b/353805117)
เวอร์ชัน 1.8.0-alpha04
16 ตุลาคม 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha04 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-alpha04 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มการเรียกกลับ
DelegatableNode#onDensityChangeและDelegatableNode#onLayoutDirectionChangeเพื่ออนุญาตให้อัปเดตสถานะโหนดเมื่อมีการเปลี่ยนแปลง (I04f3e, b/340662451) - ตอนนี้ย่อหน้าและ
ParagraphIntrinsicsจะใช้รายการคำอธิบายประกอบทั้งหมดที่ใช้กับAnnotatedStringซึ่งก่อนหน้านี้มีเพียงรายการSpanStylesเท่านั้น (I12f80) - เปิดตัว
PointerInputModifierNode#touchBoundsExpansionซึ่งใช้เพื่อขยายขอบเขตการแตะของตัวแก้ไขอินพุตพอยน์เตอร์เดียวได้ (Iccf02, b/335339283)
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องที่ไม่ได้พิจารณาเกณฑ์ตำแหน่งที่ส่งไปยัง
AnchoredDraggableDefaults.flingBehaviorอย่างถูกต้องในบางสถานการณ์ (Ifdf0d, b/367660226) - เปิดตัวการแก้ไขสำหรับรายการที่เลื่อนได้แบบซ้อนกันซึ่งถูกนำออกจากแผนผังโหนดระหว่างการปัดที่กำลังดำเนินการอยู่ ตอนนี้โหนดเหล่านี้จะยกเลิกการส่งและส่งเหตุการณ์
onPostFlingอย่างถูกต้องด้วยความเร็วที่เหลือ นอกจากนี้ เรายังเปิดตัวฟีเจอร์NewNestedScrollFlingDispatchingEnabledเพื่อควบคุมลักษณะการทำงานในกรณีที่เกิดการถดถอย เราจะนำฟีเจอร์นี้ออกก่อนเปิดตัวเวอร์ชันเบต้า (I05c37, b/371168883) - แก้ไขข้อบกพร่องในเรื่องที่
OverscrollEffectsที่ส่งไปยังModifier.anchoredDraggableจะได้รับเดลต้า 2 มิติแทนที่จะเป็น 1 มิติ (Ie52c0)
เวอร์ชัน 1.8.0-alpha03
2 ตุลาคม 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-alpha03 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- อัปเดต Kotlin เป็นเวอร์ชัน 1.9 (I1a14c)
- เปิดตัวฟีเจอร์ที่ต้องเปิดใช้
DraggableAddDownEventFixEnabled(I848d5) - เปิดตัวบทบาทเชิงความหมายใหม่ที่เรียกว่า Carousel เพื่อจำลองลักษณะการทำงานของรายการใน Pager สำหรับบริการ a11y (Id354b, b/354109776, b/239672673)
- นำตัวแก้ไข
graphicsLayerโดยนัยออกจาก ComposableBasicTextเพิ่มแฟล็กComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabledทดลองเพื่อเปลี่ยนกลับไปใช้ลักษณะการทำงานแบบเดิมได้ (Ie478d) - เพิ่ม
Modifier.recalculateWindowInsets()เพื่ออนุญาตให้บุตรหลานในลำดับชั้นใช้insetsPaddingได้แม้ว่าผู้ปกครองจะจัดกลุ่มบุตรหลานโดยไม่มีconsumeWindowInsets()ก็ตาม (I7f9e4)
การแก้ไขข้อบกพร่อง
- ใช้การเลือกด้วยท่าทางสัมผัสใน
detectDragGestures, รายการที่ลากได้ และรายการที่เลื่อนได้ ตอนนี้หากองค์ประกอบที่ลากได้ของบุตรหลานยกเลิกท่าทางสัมผัส ผู้ปกครองจะมีโอกาสเลือกองค์ประกอบดังกล่าว ซึ่งจะช่วยให้การจัดการท่าทางสัมผัสมีความต่อเนื่องและผสานรวมมากขึ้น (Ic88fe) - อัปเดตลักษณะการทำงานของการยกเลิกการปัดในรายการที่เลื่อนได้ ตอนนี้หากการปัดที่เลื่อนได้ชนขอบเขต ระบบจะส่งต่อความเร็วในการปัดไปยังรายการที่เลื่อนได้ถัดไปในเชนอย่างถูกต้องแทนที่จะปัดต่อไป (I9326a)
เวอร์ชัน 1.8.0-alpha02
18 กันยายน 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-alpha02 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
TextOverflow.StartEllipsisและTextOverflow.MiddleEllipsisพร้อมใช้งานแล้ว ซึ่งช่วยให้วางจุดไข่ปลาที่จุดเริ่มต้นหรือตรงกลางของบรรทัดข้อความบรรทัดเดียวได้ (I38913, b/185418980)
เวอร์ชัน 1.8.0-alpha01
4 กันยายน 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-alpha01 มีการเปลี่ยนแปลงเหล่านี้
เวอร์ชัน 1.7
เวอร์ชัน 1.7.8
12 กุมภาพันธ์ 2025
androidx.compose.foundation:foundation-*:1.7.8 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.8 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขข้อขัดข้องใน
BasicTextFieldที่มีการเปลี่ยนรูปแบบอินพุตเมื่อแทนที่ข้อความที่วางบางส่วน (I73702)
เวอร์ชัน 1.7.7
29 มกราคม 2025
androidx.compose.foundation:foundation-*:1.7.7 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.7 มีการคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขข้อขัดข้องของ
IndexOutOfBoundด้วยคำอธิบายประกอบลิงก์ (Ic96d2) - แก้ไขการประกอบซ้ำไม่สิ้นสุดในกรณีที่พบได้ยากบางกรณีที่มีลิงก์ (I04a03)
ข้อบกพร่องที่ทราบ
- เราพบข้อบกพร่องที่อาจทำให้ข้อความขึ้นบรรทัดใหม่โดยไม่คาดคิดในสถานการณ์ที่พบได้ยากใน Android ระดับ API 35 เราไม่สามารถแก้ไขในเวอร์ชัน 1.7 ได้ จึงจะแก้ไขในเวอร์ชัน 1.8 (b/391378120)
เวอร์ชัน 1.7.6
11 ธันวาคม 2024
androidx.compose.foundation:foundation-*:1.7.6 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.6 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาเนื้อหาในบรรทัดของข้อความคงที่ที่บริการการช่วยเหลือพิเศษมองไม่เห็น
- แก้ไขปัญหาที่
AndroidEmbeddedExternalSurfaceจะรีเซ็ตไม่ถูกต้องและค้างเมื่อนำไปใช้ซ้ำในรายการแบบเลื่อน
เวอร์ชัน 1.7.5
30 ตุลาคม 2024
androidx.compose.foundation:foundation-*:1.7.5 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.5 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- ตรวจสอบว่าไม่มีการคอมโพสย่อยรายการที่ปักหมุด 2 ครั้งในพื้นที่การเว้นวรรคเนื้อหา (Ic6224)
เวอร์ชัน 1.7.4
16 ตุลาคม 2024
androidx.compose.foundation:foundation-*:1.7.4 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.4 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องที่ทำให้เกิดข้อขัดข้องในช่องข้อความ (I475c6, b/313010266)
- นำ
ReusableContentHostที่รูทของรายการเลย์เอาต์แบบ Lazy ออกแล้ว ซึ่งเป็นสาเหตุที่เป็นไปได้ที่ทำให้เกิดข้อขัดข้อง "มีการเรียกใช้เมตริกในโหนดที่ปิดใช้งาน" (Id6e60)
เวอร์ชัน 1.7.3
2 ตุลาคม 2024
androidx.compose.foundation:foundation-*:1.7.3 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.3 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาหน่วยความจำรั่วด้วย
BasicTextเมื่อตั้งค่า minLines เป็นค่าที่ไม่ใช่ค่าเริ่มต้น
เวอร์ชัน 1.7.2
18 กันยายน 2024
androidx.compose.foundation:foundation-*:1.7.2 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.2 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาเกี่ยวกับองค์ประกอบที่ลากได้ซึ่งไม่มีเหตุการณ์ "ลง" ซึ่งทำให้การปัดดูช้ากว่าปกติ
เวอร์ชัน 1.7.1
10 กันยายน 2024
- ไม่มีการเปลี่ยนแปลงอาร์ติแฟกต์ Android ระบบได้นำอาร์ติแฟกต์
-desktopออกแล้ว และเพิ่มอาร์ติแฟกต์-jvmStubsและ-linuxx64Stubsเป้าหมายเหล่านี้ไม่มีไว้ให้ใช้งาน แต่เป็นตัวยึดตำแหน่งเพื่อช่วยให้ Jetbrains Compose ทำงานได้
เวอร์ชัน 1.7.0
4 กันยายน 2024
androidx.compose.foundation:foundation-*:1.7.0 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.0 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 1.6.0
- เราได้ปรับปรุงประสิทธิภาพของ
Modifier.clickable,Modifier.focusable,Modifier.indication,Modifier.scrollableและModifier.draggableอย่างมาก การเปลี่ยนแปลง API ต่อไปนี้เป็นส่วนหนึ่งของความพยายามนี้ นอกเหนือจากการเปลี่ยนแปลงภายใน- เพิ่ม Indication API ใหม่
IndicationNodeFactoryซึ่งจะช่วยให้การติดตั้งใช้งานการระบุมีประสิทธิภาพมากขึ้นเมื่อเทียบกับrememberUpdatedInstanceAPI ก่อนหน้า (ปัจจุบันเลิกใช้งานแล้ว) ดูข้อมูลการย้ายข้อมูลได้ที่ developer.android.com - ตอนนี้
clickable/combinedClickable/selectable/toggleableยอมรับพารามิเตอร์MutableInteractionSourceที่กำหนดให้เป็น Null ได้แล้ว หากเป็น Null และ Indication ที่ระบุเป็นIndicationNodeFactoryระบบจะสร้าง Indication แบบเลื่อนเวลาได้เฉพาะเมื่อจำเป็นเท่านั้น ซึ่งจะช่วยปรับปรุงประสิทธิภาพ หากคุณไม่ได้ยกและใช้MutableInteractionSourceขอแนะนําให้ส่งค่า Null แทนการส่งremember { MutableInteractionSource() } Indication#rememberUpdatedInstanceเลิกใช้งานแล้ว ซึ่งมีโทษด้านประสิทธิภาพที่หลีกเลี่ยงไม่ได้สูง และป้องกันการเพิ่มประสิทธิภาพอื่นๆ แต่คุณควรใช้IndicationNodeFactoryAPI ใหม่แทน
- เพิ่ม Indication API ใหม่
BasicTextFieldโดยการใช้TextFieldStateตอนนี้เสถียรแล้ว และเราขอแนะนำให้เว็บไซต์ที่ใช้การโทรทั้งหมดเริ่มย้ายข้อมูลจากBasicTextField(value, onValueChange)ไปยังBasicTextField(TextFieldState)ClickableTextถูกเลิกใช้งานแล้ว หากต้องการเพิ่มลิงก์ที่คลิกได้ลงในข้อความ ให้ใช้BasicTextพร้อมคำอธิบายประกอบLinkAnnotationใหม่ในAnnotatedStringLinkAnnotationช่วยให้จัดรูปแบบที่กำหนดเองได้ตามสถานะของลิงก์ (เช่น โฟกัส วางเมาส์)- ขอแนะนำ
ContextualFlowRowและEnhanced FlowRow/Columnที่มีMaxLinesและOverflowเรายินดีที่จะประกาศการปรับปรุงFlowRowและFlowColumnเวอร์ชันทดลอง ซึ่งตอนนี้มีmaxLinesและการรองรับการล้น รวมถึงการเปิดตัวContextualFlowRowและContextualFlowColumnการอัปเดตนี้ออกแบบมาเพื่อให้คอมโพเนนต์ที่มีประสิทธิภาพสูงสุด โดยContextualFlow*เหมาะสำหรับสินค้าจำนวนมากที่ใช้การกำหนดค่า maxLines ขนาดเล็กและปุ่มดูเพิ่มเติมแบบไดนามิก +N ส่วนFlowRowและFlowColumnเหมาะสำหรับสินค้าจำนวนน้อย ซึ่งมีสินค้าน้อยกว่า 100 รายการ สำคัญ: หากต้องการคงลักษณะการทำงานที่มีอยู่ไว้ในFlowRowหรือFlowColumnที่รายการทั้งหมดประกอบขึ้นโดยไม่คำนึงว่ารายการนั้นจะพอดีกับแกนไขว้สูงสุดหรือไม่ ให้ตั้งค่าการล้นเป็นFlowRowOverflow.VisibleหรือFlowColumnOverflow.Visibleในระหว่างการเริ่มต้น ดูตัวอย่างการใช้งานฟีเจอร์ใหม่เหล่านี้ได้ในContextualFlowRowSampleและFlowRowSample(Ib9135, b/293577082) - เพิ่มการรองรับภาพเคลื่อนไหวการปรากฏและหายไปของไอเทมใน
LazyColumnและLazyRowก่อนหน้านี้ คุณสามารถเพิ่มModifier.animateItemPlacement()ตัวแก้ไขเพื่อรองรับภาพเคลื่อนไหวของตำแหน่ง (การจัดลำดับใหม่) เราได้เลิกใช้งานตัวแก้ไขนี้และเปิดตัวตัวแก้ไขใหม่ที่ไม่ใช่เวอร์ชันทดลองที่ชื่อModifier.animateItem()ซึ่งช่วยให้คุณรองรับภาพเคลื่อนไหวทั้ง 3 ประเภท ได้แก่ การปรากฏ (จางเข้า) การหายไป (จางออก) และการจัดลำดับใหม่ (I2d7f7, b/150812265) - ใช้การรองรับแบบทดลองสำหรับภาพหน้าจอยาวในคอนเทนเนอร์เลื่อนของ Compose โดยใช้ Android API อย่างเป็นทางการ (
ScrollCaptureCallback) NestedScrollแหล่งที่มาของ Drag and Fling จะถูกแทนที่ด้วยUserInputและSideEffectเพื่อรองรับคำจำกัดความที่ขยายออกไปของแหล่งที่มาเหล่านี้ ซึ่งตอนนี้รวมถึงภาพเคลื่อนไหว (Side Effect) และล้อเมาส์และคีย์บอร์ด (UserInput)LazyLayoutตอนนี้สามารถทำเครื่องหมายคำขอแบบดึงข้อมูลล่วงหน้าเป็นด่วนได้แล้ว ซึ่งหมายความว่าเราคาดว่ารายการนี้จะต้องใช้ในเฟรมถัดไป และต้องการไม่สนใจงบประมาณเฟรมเพื่อให้แน่ใจว่าได้ทำงานล่วงหน้ามากขึ้น (Id513f)- รองรับฟีเจอร์ลายมือด้วยสไตลัสในอุปกรณ์ที่ใช้ Android U ขึ้นไป (I002e4)
- มีการเลื่อนระดับ API ต่างๆ เป็นเวอร์ชันเสถียร
- เพจเจอร์ การสแนป การแทรกหน้าต่าง
เวอร์ชัน 1.7.0-rc01
21 สิงหาคม 2024
androidx.compose.foundation:foundation-*:1.7.0-rc01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.0-rc01 มีการคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขการถดถอยที่ทำให้เกิดข้อขัดข้องเมื่อมีการโฟกัสองค์ประกอบใดก็ตามภายในองค์ประกอบหลักที่โฟกัสได้ (หรือคลิกได้) และปิดใช้ (b/317561689)
เวอร์ชัน 1.7.0-beta07
7 สิงหาคม 2024
androidx.compose.foundation:foundation-*:1.7.0-beta07 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.0-beta07 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- ตอนนี้อินพุตข้อความที่เกี่ยวข้องกับ
SemanticsNodeInteractionฟังก์ชันperformTextReplacementperformTextInputและperformTextClearanceจะแสดงข้อผิดพลาดในการยืนยันเมื่อมีการเรียกใช้ในTextFieldsแบบอ่านอย่างเดียว (I4ae8f) - แก้ไขข้อบกพร่องด้านภาพในไฮเปอร์ลิงก์ (I23311)
- แก้ไขตัวแก้ไข
contentReceiverที่ใช้ไม่ได้กับ IME บางตัว - การสร้างความเร็ว: ป้องกันการแพร่กระจายค่า NaN ใน Compose UI และ Foundation
เวอร์ชัน 1.7.0-beta06
24 กรกฎาคม 2024
androidx.compose.foundation:foundation-*:1.7.0-beta06 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.0-beta06 มีการเปลี่ยนแปลงเหล่านี้
เวอร์ชัน 1.7.0-beta05
10 กรกฎาคม 2024
androidx.compose.foundation:foundation-*:1.7.0-beta05 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.0-beta05 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขการจัดการค่า Nan ใน
SnapFlingBehaviorและ Pager
เวอร์ชัน 1.7.0-beta04
26 มิถุนายน 2024
androidx.compose.foundation:foundation-*:1.7.0-beta04 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.0-beta04 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- หลีกเลี่ยงการขัดข้องเมื่อวัดบรรทัดข้อความขนาดใหญ่มาก (เช่น 10,000 อักขระ) (8157ab)
- แก้ไขการวัดข้อความขนาดใหญ่มากซึ่งทำให้เกิดข้อขัดข้องใน
BasicTextFieldใหม่ (6b7575) - เปลี่ยนกลับการเปลี่ยนแปลงลักษณะการทํางานในการวัดแถว/คอลัมน์ที่ทําให้การใช้ข้อความใช้งานไม่ได้ในบางสถานการณ์ (69e8ba)
เวอร์ชัน 1.7.0-beta03
12 มิถุนายน 2024
androidx.compose.foundation:foundation-*:1.7.0-beta03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.0-beta03 มีการเปลี่ยนแปลงเหล่านี้
เวอร์ชัน 1.7.0-beta02
29 พฤษภาคม 2024
androidx.compose.foundation:foundation-*:1.7.0-beta02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.0-beta02 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม API เวอร์ชันทดลองสำหรับการกำหนดค่าลักษณะการทำงานของการดึงข้อมูลล่วงหน้าของ
LazyGridsคล้ายกับ API เวอร์ชันทดลองที่มีอยู่สำหรับLazyListsซึ่งรวมถึงการรองรับการดึงข้อมูลล่วงหน้าของรายการในLazyGridsที่ซ้อนกัน เช่นเดียวกับLazyListPrefetchStrategyค่าเริ่มต้นของการใช้งานคือการดึงข้อมูลล่วงหน้าสำหรับรายการที่ซ้อนกัน 2 รายการแรกของแต่ละตารางกริด แต่สามารถกำหนดค่าได้โดยใช้ APILazyGridPrefetchStrategy(nestedPrefetchItemCount)และLazyListPrefetchStrategy#onNestedPrefetchใหม่ (I591c4) - เปลี่ยนชื่อ
SemanticsProperties.Editableเป็นIsEditableและเปลี่ยนSemanticsPropertyReceiver.editableเป็นค่าisEditableตอนนี้พร็อพเพอร์ตี้เป็นบูลีนและระบุโดยช่องข้อความเสมอ (I8acd8) - ย้ายค่าเริ่มต้นของ
basicMarqueeไปยังออบเจ็กต์MarqueeDefaults(I12ff6) - เปลี่ยนชื่อพารามิเตอร์
basicMarqueedelayMillisเป็นrepeatDelayMillis(I12ff6) - อัปเดต API สำหรับการจัดรูปแบบลิงก์: ย้าย
TextLinkStylesไปยังTextStyleและนำTextDefaultsออกจาก Material (I5477b)
การแก้ไขข้อบกพร่อง
- เปลี่ยนชื่อ
LayoutCoordinates.introducesFrameOfReferenceเป็นLayoutCoordinates.introducesMotionFrameOfReferenceเพื่อให้สะท้อนวัตถุประสงค์ได้ดียิ่งขึ้น เปลี่ยนชื่อฟังก์ชันที่เกี่ยวข้องเพื่อคำนวณพิกัดตามธงนั้น (I3a330) - นำ "ค่าเริ่มต้น" ออกจากพร็อพเพอร์ตี้
MarqueeDefaults(I1d8a0) - นำ "Marquee" ออกจากพร็อพเพอร์ตี้
MarqueeDefaults(Iad4f4) - นำ
TextLinkStylesออกจากชั้นเรียนTextStyleแล้ว แต่TextLinkStylesเป็นส่วนหนึ่งของตัวสร้างLinkAnntationและเมธอดAnnotatedString.fromHtml(I90b2b) - แก้ไขข้อบกพร่องที่ทำให้ Pager จะดีดเมื่อปัดไปทางขอบเขตขณะที่อยู่ที่ขอบเขตอยู่แล้ว (I9f373, b/339171222)
- ตอนนี้ BTF2 มีท่าทางสัมผัสการเลือกด้วยเมาส์ที่ถูกต้องแล้ว (Ibe8c6)
การมีส่วนร่วมภายนอก
- ส่ง "Make compose/measure time calculation content-type based in prefetch to improve accuracy" อีกครั้ง (Iea622)
- สร้างเนื้อหาการคำนวณเวลาในการเขียน/วัดผลตามประเภทเนื้อหาในการดึงข้อมูลล่วงหน้าเพื่อปรับปรุงความแม่นยำ (Ibccb1)
- ทำให้ตัวแก้ไข
WindowInsetsPaddingพร้อมใช้งานจากชุดซอร์สทั่วไป (I070b2)
เวอร์ชัน 1.7.0-beta01
14 พฤษภาคม 2024
androidx.compose.foundation:foundation-*:1.7.0-beta01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.0-beta01 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มพร็อพเพอร์ตี้
KeyboardOptions.shouldShowKeyboardOnFocusกลับมาเป็นพร็อพเพอร์ตี้ที่ซ่อนไว้ซึ่งเลิกใช้งานแล้วเพื่อความเข้ากันได้แบบไบนารี (I15cfe) Modifier.anchoredDraggableจะกลับค่าเดลต้าการลากโดยค่าเริ่มต้นสำหรับคอมโพเนนต์ที่มีการวางแนวนอนเมื่อใช้ในเลย์เอาต์ RTL (I3c6d9)- ตอนนี้
AnnotatedString.hasEqualsAnnotationsเปลี่ยนชื่อเป็นhasEqualAnnotationsแล้ว (I685c0) - อัปเดต API สำหรับรับลิงก์ที่มีธีม Material ในข้อความ กล่าวคือ เราได้นำวิธีการต่างๆ ออกจาก
TextDefaultsสำหรับการสร้างLinkAnnotationsที่มีธีมและแยกวิเคราะห์ HTML ด้วยลิงก์ที่มีธีม แต่ได้เพิ่มTextLinkStylesคลาสที่อนุญาตให้จัดรูปแบบลิงก์เป็นพารามิเตอร์ไปยัง Text composable แทน (I31b93) - แทนที่
onDragStartedและonDragStoppedด้วยการเรียกกลับที่ไม่ระงับ (I59de8)
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องที่ทำให้ Pager ขัดข้องเมื่อ
contentPaddingมีขนาดใหญ่กว่าข้อจำกัดขาเข้า ตอนนี้ Pager จะบังคับให้ค่าลบที่แสดงผลจากPageSizeเป็น 0 (Iba5d8, b/314008560)
เวอร์ชัน 1.7.0-alpha08
1 พฤษภาคม 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha08 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.0-alpha08 มีการเปลี่ยนแปลงเหล่านี้
ฟีเจอร์ใหม่
- เพิ่มเมนูตามบริบทเมื่อคลิกขวาใน
BasicTextFieldและSelectionContainerพร้อมรายการสำหรับการดำเนินการตัด คัดลอก วาง และเลือกทั้งหมด (If8c93, Ia2b49, I6f268)
การเปลี่ยนแปลง API
LazyLayoutตอนนี้สามารถทำเครื่องหมายคำขอแบบดึงข้อมูลล่วงหน้าเป็นด่วนได้แล้ว ซึ่งหมายความว่าเราคาดว่ารายการนี้จะต้องใช้ในเฟรมถัดไป และต้องการไม่สนใจงบประมาณเฟรมเพื่อให้แน่ใจว่าได้ทำงานล่วงหน้ามากขึ้น (Id513f)- เปลี่ยนชื่อ
isPositionedByParentWithDirectManipulationเป็นintroducesFrameOfReferenceแล้ว โปรดทราบว่าตอนนี้การตั้งค่านี้มีผลในทางตรงกันข้าม ซึ่งหมายความว่าโดยค่าเริ่มต้นLayoutCoordinatesส่วนใหญ่จะใช้เฟรมอ้างอิง และพร็อพเพอร์ตี้จะเป็นเท็จเมื่อวางไว้ภายใต้การจัดการโดยตรงเท่านั้น หากต้องการค้นหาตำแหน่งที่มีเฉพาะตำแหน่งที่แนะนำกรอบอ้างอิง ให้ใช้positionInLocalFrameOfReference(...)หรือpositionInLocalLookaheadFrameOfReferenceจากLookaheadScope(Ifc5f7) - เปลี่ยนชื่อ
onClickedเป็นonClickในLinkInteractionListener(Iaa35c) แล้ว - เปลี่ยน Lambda การดำเนินการสำหรับ
getScrollViewportLengthตามความคิดเห็นจากสภา API (Ibc74a) - เปลี่ยนชื่อ API การมอบสิทธิ์การเขียนด้วยลายมือโดยใช้สไตลัส (Ica45f, b/327271923)
- เปลี่ยนชื่อ
TextInclusionStrategy.isInsideเป็นisIncludedทำให้Paragraph/MultiParagraph#getRangeForRect()ประเภทการแสดงผลไม่เป็นค่าว่าง (I51f26)
การแก้ไขข้อบกพร่อง
- เพิ่ม "เลือกทั้งหมด" ลงในเมนูตามบริบทของข้อความทั้งหมดใน
SelectionContainer(Ib750e, b/240143283) - แก้ไขการจับภาพหน้าจอแบบยาวสำหรับคอนเทนเนอร์ที่เลื่อนได้ด้วย
reverseScrolling=true(I7c59c) - แก้ไขปัญหาที่
AnchoredDraggableStateของcurrentValueจะเปลี่ยนเมื่อเข้าใกล้ขอบเขตของรัฐ (Iea30b, b/333846848)
การมีส่วนร่วมภายนอก
- เปลี่ยนชื่อ
PrefetchExecutor->PrefetchSchedulerเพื่อให้สะท้อนถึงความรับผิดชอบได้ดียิ่งขึ้น (Ib9154) - เพิ่มการรองรับการดึงข้อมูลล่วงหน้าของรายการใน
LazyListsที่ซ้อนกัน (เช่นLazyColumnที่แสดงผลLazyRowsที่ซ้อนกัน) การเปลี่ยนแปลงนี้คาดว่าจะช่วยลดเฟรมหลุดระหว่างการเลื่อนสำหรับLazyListsเหล่านี้ การติดตั้งใช้งานเริ่มต้นคือการดึงข้อมูลล่วงหน้าของรายการที่ซ้อนกัน 2 รายการแรก แต่ลักษณะการทำงานนี้สามารถควบคุมได้โดยใช้ APILazyLayoutPrefetchStrategy(nestedPrefetchItemCount)และLazyListPrefetchStrategy#onNestedPrefetchใหม่ (I51952)
เวอร์ชัน 1.7.0-alpha07
17 เมษายน 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha07 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.0-alpha07 มีการเปลี่ยนแปลงเหล่านี้
ฟีเจอร์ใหม่
- เพิ่มออบเจ็กต์
TextDefaultsที่มีเมธอดในการสร้างLinkAnnotationและแยกวิเคราะห์สตริงที่ติดแท็ก HTML ซึ่งใช้MaterialThemeกับลิงก์ (I98532, b/139312671) - เพิ่มการรองรับภาพเคลื่อนไหวการปรากฏและหายไปของไอเทมใน
LazyVerticalGridและLazyHorizontalGridก่อนหน้านี้ คุณสามารถเพิ่มModifier.animateItemPlacement()ตัวแก้ไขเพื่อรองรับภาพเคลื่อนไหวของตำแหน่ง (การเรียงลำดับใหม่) เราได้เลิกใช้งานตัวแก้ไขนี้และเปิดตัวตัวแก้ไขใหม่ที่ไม่ใช่เวอร์ชันทดลองที่ชื่อModifier.animateItem()ซึ่งช่วยให้คุณรองรับภาพเคลื่อนไหวทั้ง 3 ประเภท ได้แก่ การปรากฏ (จางเข้า) การหายไป (จางออก) และการจัดลำดับใหม่ (Ib7d12, b/330510929) - เพิ่มการรองรับภาพเคลื่อนไหวการปรากฏและหายไปของไอเทมใน
LazyVerticalStaggeredGridและLazyHorizontalStaggeredGridก่อนหน้านี้ คุณสามารถเพิ่มModifier.animateItemPlacement()ตัวแก้ไขเพื่อรองรับภาพเคลื่อนไหวของตำแหน่ง (การเรียงลำดับใหม่) เราได้เลิกใช้งานตัวแก้ไขนี้และเปิดตัวตัวแก้ไขใหม่ที่ไม่ใช่เวอร์ชันทดลองที่ชื่อModifier.animateItem()ซึ่งช่วยให้คุณรองรับภาพเคลื่อนไหวทั้ง 3 ประเภท ได้แก่ การปรากฏ (จางเข้า) การหายไป (จางออก) และการจัดลำดับใหม่ (I69bc9, b/330511290)
การเปลี่ยนแปลง API
- เพิ่ม
ContextMenuColorsและLocalContextMenuThemeProvidableCompositionLocalที่เกี่ยวข้อง คุณสามารถแก้ไขสีของเมนูบริบทในช่องข้อความและข้อความที่เลือกได้โดยระบุองค์ประกอบในเครื่อง (Ifa154) - ลิงก์ข้อความมีตัวเลือกการจัดรูปแบบสถานะที่กดนอกเหนือจากการจัดรูปแบบปกติ การวางเมาส์ และการโฟกัส (I5f864, b/139312671)
- เปิดตัว
ViewConfiguration.HandwritingGestureLineMarginสำหรับท่าทางสัมผัสลายมือ รองรับท่าทางเขียนด้วยลายมือสำหรับBasicTextField(Ie6e13, b/325660505) - นำ
DelegatableNode.scrollIntoViewออกสำหรับการเปิดตัวเวอร์ชัน 1.7 เนื่องจากเราไม่มีเวลาที่จะทำให้ API ที่เกี่ยวข้องอื่นๆ เสถียร เราจะนำฟังก์ชันนี้กลับมาใช้ในเวอร์ชัน 1.8 (I6cf61, b/333421581, b/332900232) - เมื่อค้นหาพิกัดเลย์เอาต์ ตอนนี้คุณสามารถใช้อาร์กิวเมนต์
excludeDirectManipulationOffsetเพื่อยกเว้นออฟเซ็ตที่กำหนดโดยเลย์เอาต์หลักซึ่งวางองค์ประกอบย่อยโดยใช้Placeable.PlacementScope.withDirectManipulationPlacementได้แล้ว ในทำนองเดียวกัน ตอนนี้เลย์เอาต์ที่เปลี่ยนตำแหน่งขององค์ประกอบย่อยบ่อยๆ อาจวางองค์ประกอบย่อยโดยใช้withDirectManipulationPlacement(เช่น Scroll ซึ่งมีการติดตั้งใช้งานโดยค่าเริ่มต้น) ซึ่งช่วยให้approachLayoutภาพเคลื่อนไหวตามเส้นทางใช้งานง่ายขึ้น เนื่องจากตอนนี้คุณมีโอกาสที่จะแยกความแตกต่างระหว่างสิ่งที่ต้องชดเชยเพื่อเคลื่อนไหวกับสิ่งที่ต้องใช้โดยตรงเมื่อตัดสินใจที่จะเคลื่อนไหวตามเส้นทาง (I60ec7) - ขอแนะนำ
requestScrollToItemสำหรับLazyStaggeredGridตอนนี้ไคลเอ็นต์สามารถเลือกไม่ใช้การรักษาดัชนีตามคีย์ได้โดยการเรียกใช้requestScrollToItemสำหรับการวัดผลแต่ละครั้ง การดำเนินการนี้จะไม่เปลี่ยนแปลงลักษณะการทำงานที่มีอยู่แต่อย่างใด เว้นแต่จะมีการเรียกใช้requestScrollToItem(I63983) - ขอแนะนำ
requestScrollToPageใน Pager ตอนนี้ไคลเอ็นต์สามารถเลือกไม่ใช้การรักษาดัชนีตามคีย์ได้โดยการเรียกใช้requestScrollToPageสำหรับการวัดผลแต่ละครั้ง การดำเนินการนี้จะไม่เปลี่ยนแปลงลักษณะการทำงานที่มีอยู่แต่อย่างใด เว้นแต่จะมีการเรียกใช้requestScrollToPage(Ic4213) - เปิดตัว
requestScrollToItemสำหรับLazyGridsตอนนี้ไคลเอ็นต์สามารถเลือกไม่ใช้การรักษาดัชนีตามคีย์ได้โดยการเรียกใช้requestScrollToItemสำหรับการวัดผลแต่ละครั้ง การดำเนินการนี้จะไม่เปลี่ยนแปลงลักษณะการทำงานที่มีอยู่แต่อย่างใด เว้นแต่จะมีการเรียกใช้requestScrollToItem(I0a7a0) ClickableTextถูกทำเครื่องหมายว่าเลิกใช้งานแล้ว หากต้องการเพิ่มลิงก์ไปยังข้อความ ให้สร้างAnnotatedStringที่มีLinkAnnotationที่สอดคล้องกับลิงก์ แล้วส่งAnnotatedStringนี้ไปยัง ComposableText(I34d4b, b/323346994)UrlAnnotationเลิกใช้งานแล้ว โปรดใช้LinkAnnotation.Urlแทน หากใช้การจัดธีม Material ให้ใช้ออบเจ็กต์TextDefaultsเพื่อสร้างคำอธิบายประกอบที่มีการจัดธีม Material (I8d180, b/323346545)String.parseAsHtmlเปลี่ยนชื่อเป็นAnnotatedString.Companion.fromHtml(I43dcd)- เพิ่มอาร์กิวเมนต์การจัดรูปแบบ (
linkStyle,focusedLinkStyle,hoveredLinkStyle) และเครื่องมือตรวจหาการโต้ตอบลิงก์ไปยังเมธอดparseAsHtmlเมื่อแยกวิเคราะห์สตริงที่ติดแท็ก HTML ด้วยแท็ก<a>เมธอดจะสร้างLinkAnnotation.Urlสำหรับแท็กดังกล่าวแต่ละแท็ก และส่งออบเจ็กต์การจัดรูปแบบและเครื่องมือฟังการโต้ตอบลิงก์ไปยังคำอธิบายประกอบแต่ละรายการ (I7c977) - ตอนนี้
LinkAnnotationรับอาร์กิวเมนต์การจัดรูปแบบตามสถานะและLinkInteractionListenerแล้ว เพิ่มคำอธิบายประกอบนี้ลงในAnnotatedStringเพื่อรับไฮเปอร์ลิงก์ การส่งfocusedStateและ/หรือhoveredStateจะช่วยให้คุณกำหนดค่าภาพสำหรับลิงก์เมื่อมีการโฟกัสและ/หรือวางเมาส์เหนือลิงก์ได้ (I81ce4, b/139312671) - เราได้นำแฟล็กฟีเจอร์สำหรับภาพหน้าจอยาวออกแล้ว (I28648, b/329128246)
LazyColumnจะแสดงผลส่วนหัวที่ไม่เคลื่อนที่อย่างถูกต้องในภาพหน้าจอแบบยาว (I8d239, b/329296635)- ปรับ API เวอร์ชันทดลองที่เหลือส่วนใหญ่ให้เสถียร ซึ่ง API เหล่านี้เปิดตัวพร้อมกับ
BasicTextFieldเวอร์ชันใหม่ (I714e2) - เพิ่มพารามิเตอร์
textObfuscationCharacterลงในBasicSecureTextFieldซึ่งควบคุมว่าจะใช้อักขระใดขณะที่ทำให้เนื้อหาอ่านไม่ออก (I0588b) NestedScrollแหล่งที่มา การลากและดีดจะถูกแทนที่ด้วยUserInputและSideEffectเพื่อรองรับคำจำกัดความที่ขยายออกไปของแหล่งที่มาเหล่านี้ ซึ่งตอนนี้รวมถึงภาพเคลื่อนไหว (Side Effect) และล้อเมาส์และคีย์บอร์ด (UserInput) (I40579)- ขอแนะนำ
LocalBringIntoViewSpecซึ่งเป็นลักษณะการทำงานของการเลื่อนโฟกัสที่ขึ้นอยู่กับแพลตฟอร์มซึ่งใช้ที่เลเยอร์ตัวแก้ไขที่เลื่อนได้ (I27aa5, b/317453911) - นำ
TextFieldCharSequenceออกแล้วTextFieldBuffer.originalValuesจะแทนที่ด้วยTextFieldBuffer.originalTextและTextFieldBuffer.originalSelection(I2c7d6) ImeOptions.hintLocalesจะไม่ใช่ค่า Null อีกต่อไป หากต้องการส่งรายการภาษาที่ว่างเปล่า โปรดใช้LocaleList.Empty(Ic5bc4)- เปลี่ยนชื่อ
getOffsetFractionForPageเป็นgetOffsetDistanceInPagesแล้ว (Ia05e2)
การแก้ไขข้อบกพร่อง
- เมื่อรวม
InputTransformationsกับnextแล้วKeyboardOptionsจะผสานอย่างถูกต้องตามตัวเลือกแต่ละรายการโดยใช้วิธีการKeyboardOptions.mergeใหม่ (Ie5304, b/295951492) AnchoredDraggableStatetargetValueจะไม่พิจารณาเกณฑ์ตำแหน่งอีกต่อไป ตอนนี้มีเกณฑ์โดยนัยที่ 50% ซึ่งหมายความว่าtargetValueจะเปลี่ยนที่จุดกึ่งกลางระหว่างจุดยึด 2 จุด (I82c2c)
การมีส่วนร่วมภายนอก
- เปลี่ยนชื่อ API การเลื่อน 2 รายการ (I56a75)
เวอร์ชัน 1.7.0-alpha06
3 เมษายน 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha06 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.0-alpha06 มีการเปลี่ยนแปลงเหล่านี้
ฟีเจอร์ใหม่
- เพิ่มการรองรับภาพเคลื่อนไหวการปรากฏและหายไปของไอเทมใน
LazyColumnและLazyRowก่อนหน้านี้ คุณสามารถเพิ่มModifier.animateItemPlacement()ตัวแก้ไขเพื่อรองรับภาพเคลื่อนไหวของตำแหน่ง (การจัดลำดับใหม่) เราได้เลิกใช้งานตัวแก้ไขนี้และเปิดตัวตัวแก้ไขใหม่ที่ไม่ใช่เวอร์ชันทดลองที่ชื่อModifier.animateItem()ซึ่งช่วยให้คุณรองรับภาพเคลื่อนไหวทั้ง 3 ประเภท ได้แก่ การปรากฏ (จางเข้า) การหายไป (จางออก) และการจัดลำดับใหม่ (I2d7f7, b/150812265) - ตอนนี้ลูกค้าของ
LazyColumn/LazyRowสามารถเลือกไม่ใช้ดัชนีตามคีย์สำหรับการวัดผลที่จะเกิดขึ้นได้โดยการเรียกใช้LazyListState.requestToScrollที่ไม่ระงับ (I98036, b/209652366) - เพิ่มเมธอด
parseAsHtmlสำหรับสตริงที่มีสไตล์ ซึ่งช่วยให้แปลงสตริงที่ทำเครื่องหมายด้วยแท็ก HTML เป็นAnnotatedStringได้ โปรดทราบว่าระบบไม่รองรับแท็กบางรายการ เช่น คุณจะยังแสดงรายการหัวข้อย่อยไม่ได้ (I84d3d) - เพิ่มการรองรับเวอร์ชันทดลองสำหรับภาพหน้าจอยาวในคอนเทนเนอร์เลื่อนของ Compose โดยใช้ Android API อย่างเป็นทางการ (
ScrollCaptureCallback) ฟีเจอร์นี้เป็นเวอร์ชันทดลองและอาจยังจัดการบางกรณีได้ไม่ถูกต้อง ด้วยเหตุนี้ เราจึงปิดใช้ฟีเจอร์นี้โดยค่าเริ่มต้นในขณะนี้ หากต้องการเลือกใช้ ให้ตั้งค่า FlagComposeFeatureFlag_LongScreenshotsEnabledเป็น true เราจะนำฟีเจอร์นี้ออกก่อนเวอร์ชันเบต้า 1.7 (I2b055, b/329296471) - เปิดตัว
GraphicsLayerAPI ใหม่เพื่อให้มีความยืดหยุ่นมากขึ้นในการจัดวางและการแสดงผลอินสแตนซ์GraphicsLayerและรองรับฟีเจอร์การแสดงผลโดยธรรมชาติโดยไม่ต้องประสานงานกับการติดตั้งใช้งานที่ประกอบได้เพื่อระบุอินสแตนซ์ตัวแก้ไขGraphicsLayer
การเปลี่ยนแปลง API
- ตอนนี้
KeyboardOptionsพารามิเตอร์ทั้งหมดมีค่า "ไม่ได้ระบุ" โดยค่าเริ่มต้น เพิ่มKeyboardOptions.mergeแล้ว - เปลี่ยนชื่อ
KeyboardOptions.autoCorrectเป็นautoCorrectEnabledและทำให้เป็นค่า 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)variant และBasicSecureTextFieldจะใช้KeyboardActionHandlerแทนKeyboardActionsในการประมวลผลการกระทำที่แป้นพิมพ์เสมือนดำเนินการ (I58dda)- API การมอบสิทธิ์การเขียนด้วยลายมือโดยใช้สไตลัสเพื่อรองรับการเขียนด้วยลายมือโดยใช้สไตลัสในช่องป้อนข้อความ "ปลอม" (I9c09c, b/327271923)
- เปลี่ยนชื่อ
KeyboardOptions.shouldShowKeyboardOnFocusเป็นshowKeyboardOnFocusแล้ว (Ib4b7a, b/295951492) - นำพารามิเตอร์
hintMediaTypesออกจากModifier.contentReceiverแล้ว เราแนะนำให้นักพัฒนาแอปตรวจสอบประเภทสื่อของTransferableContentที่ได้รับอยู่แล้ว เนื่องจากอาจเข้ากันไม่ได้กับhintMediaTypesที่กำหนดค่าไว้ (I82f99) - จัดเรียงพารามิเตอร์ของ
BasicSecureTextFieldใหม่ นำพารามิเตอร์keyboardTypeและimeActionออกเพื่อใช้คลาสKeyboardOptionsแบบเต็ม ในขณะที่ยังคงค่าเริ่มต้นเดิมที่เหมาะสมกับBasicSecureTextFieldนอกจากนี้ยังนำพารามิเตอร์scrollStateออกด้วย (Ibbfa9) - เปลี่ยนประเภทของ
TextFieldState.textจากTextFieldCharSequenceเป็นCharSequenceดังนั้น เราจึงเพิ่มTextFieldState.selection: TextRangeและTextFieldState.composition: TextRange?เพื่ออ่านค่าการเลือกและการจัดองค์ประกอบปัจจุบันจากออบเจ็กต์สถานะโดยตรง - นำ
TextFieldState.forEachTextValueออกแล้ว (Idb2a2) - นำฟังก์ชัน
ClipboardManager.getClipMetadataและClipboardManager.hasClipออกแล้ว โปรดใช้clipEntry.getMetadata()เพื่ออ่านข้อมูลเมตาของรายการคลิปปัจจุบัน นอกจากนี้ ให้ตรวจสอบผลลัพธ์ของClipboardManager.getClipว่าเป็นค่าว่างหรือไม่ เพื่อดูว่าคลิปบอร์ดมีคลิปปัจจุบันหรือไม่ (I50498) - ตอนนี้
ClipboardManager.setClipยอมรับค่า Null เพื่อล้างคลิปบอร์ดได้แล้ว (I7d2e9) ReceiveContentListenerจะแปลงเป็นอินเทอร์เฟซฟังก์ชัน นอกจากนี้ ระบบยังนำโอเวอร์โหลดModifier.receiveContentที่รับ Lambda ออกด้วยเนื่องจากตอนนี้ReceiveContentListenerเป็นอินเทอร์เฟซฟังก์ชันแล้ว- เปลี่ยนชื่อ
Modifier.receiveContentเป็นModifier.contentReceiverแล้ว (I1e6af) - เปลี่ยนชื่อ
TransferableContent.consumeEachเป็นTransferableContent.consumeแล้ว (I1e462) rememberTextFieldStateได้รับการอัปเกรดเป็น Stable API แล้ว (I37999)
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องที่ทำให้รูปแบบ
BasicTextField(state)ใช้กับคีย์บอร์ด CJK(อิงตามการเขียน) ไม่ได้ (I54425) - แก้ไขข้อบกพร่องที่
Modifier.dragAndDropTarget()อาจอ้างอิงข้อมูลที่ล้าสมัยในบางสถานการณ์ที่มีการนำModifier.Nodeกลับมาใช้ซ้ำ (I05bb1) - ย้อนกลับการเปลี่ยนแปลงสัญญาล่าสุดที่การเรียกใช้
AnchoredDraggableState#anchoredDragจะสิ้นสุดเมื่อการดำเนินการanchoredDragสิ้นสุด (I95715)
เวอร์ชัน 1.7.0-alpha05
20 มีนาคม 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha05 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.0-alpha05 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- นำองค์ประกอบ
LocalTextLinkStyleเวอร์ชันทดลองออกแล้วเพื่อจัดรูปแบบไฮเปอร์ลิงก์ (Iebfa7) - นำการลบล้างการทดสอบของ
BasicTextออกด้วยอาร์กิวเมนต์onLinkClickedและเราจะเปิดตัว API ที่มาแทนที่การรองรับไฮเปอร์ลิงก์ในอนาคต (I107d5) - นำเมธอดและพร็อพเพอร์ตี้ที่เกี่ยวข้องกับ Codepoint ออกภายใต้
TextFieldStateและTextFieldBufferนอกจากนี้ เรายังนำคำต่อท้ายinCharsออกจาก API ที่เหลือที่เกี่ยวข้องกับการเลือกและการจัดองค์ประกอบด้วย (Ief7ce) - ตอนนี้
currentValueของAnchoredDraggableจะอัปเดตเมื่อผ่านจุดยึด ใช้settledValueเพื่อรับความหมายของcurrentValueก่อนหน้า โดยจะอัปเดตเมื่อมีการชำระที่จุดยึดเท่านั้น ตอนนี้ความคืบหน้าจะแสดงเป็นฟังก์ชัน (ต้องระบุจุดเริ่มต้นและจุดสิ้นสุด) แทนที่จะเป็นพร็อพเพอร์ตี้ (Ibe6e8, b/318707189, b/298271489, b/294991954) BasicTextField(state),TextFieldState,InputTransformation,OutputTransformation,TextFieldLineLimits,TextFieldDecoratorได้รับการอัปเกรดเป็นเวอร์ชันเสถียรแล้ว (I9582b)- เปิดตัว
InterceptPlatformTextInputเพื่อช่วยเขียนการทดสอบที่เกี่ยวข้องกับ IME ระดับต่ำและ Use Case อื่นๆ ของ IME ระดับต่ำPlatformTextInputTestOverrideเลิกใช้งานแล้ว (I862ed, b/322680547) - แยก
restrictedConstraints()เป็น 2 วิธี ได้แก่fitPrioritizingWidth()และfitPrioritizingHeight()(I6d7fd)
การมีส่วนร่วมภายนอก
- เพิ่ม API ใหม่ 2 รายการ
isLastScrollForward/isLastScrollBackwardเพื่อตรวจสอบทิศทางการเลื่อนสำหรับการดำเนินการเลื่อนล่าสุด และแสดงผลเป็นเท็จหากยังไม่มีการดำเนินการเลื่อน (I63a0e)
เวอร์ชัน 1.7.0-alpha04
6 มีนาคม 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha04 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.0-alpha04 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- รองรับฟีเจอร์ลายมือด้วยสไตลัสในอุปกรณ์ที่ใช้ Android U ขึ้นไป (I002e4)
- เพิ่ม
hintLocalesในKeyboardOptionsเพื่อให้TextFieldsสามารถแนะนำ IME ด้วยภาษาที่เฉพาะเจาะจงเพื่อตั้งค่าภาษาที่ต้องการล่วงหน้า (Id18c2) - นำการโอเวอร์โหลด
BasicTextField2และBasicSecureTextFieldที่ทดลองใช้ออก ซึ่งใช้พารามิเตอร์value: StringและonValueChange: () -> String(I568b4) - เพิ่มฟังก์ชัน
applySemanticsที่ไม่บังคับลงในInputTransformationเพื่อส่งผลต่อความหมายของBasicTextField2ที่ใช้ (I74a2f, b/170648072) - ใน CL นี้ เราจะเพิ่ม
GetScrollViewportLengthการดำเนินการเชิงความหมายเพื่อให้เราสามารถส่งข้อมูลเกี่ยวกับคอมโพเนนต์ที่กำลังเลื่อนใน Compose ไปยังระบบ a11y ได้ CL นี้ยังใช้การใช้งานพร็อพเพอร์ตี้ดังกล่าวในรายการที่เลื่อนได้ของ Foundation ด้วย (Ic5fa2) - เปลี่ยนชื่อ
BasicTextField2เป็นBasicTextFieldแล้ว (Ie5713) FocusRequester.createRefsตอนนี้เสถียรแล้ว (I4d92c, b/261436820)- เปิดตัว
DelegatableNode.scrollIntoView()เพื่อให้โหนดตัวแก้ไขส่งคำขอscrollIntoViewได้โดยตรง (I2b3b7, b/299939840) - เปิดตัว
DelegatableNode.requireView()เพื่อให้โหนดตัวแก้ไขรับViewของ Android ปัจจุบันได้โดยไม่ต้องอ่าน CompositionLocal (I40768) - ขอแนะนำข้อมูลเลย์เอาต์ตามบริบทภายในขอบเขตแถวของโฟลว์ตามบริบทและขอบเขตคอลัมน์ของโฟลว์ตามบริบท ซึ่งมีดัชนีบรรทัด ตำแหน่ง และข้อจำกัดเกี่ยวกับความกว้างและความสูงสูงสุดเพื่อให้คงอยู่ในตำแหน่งที่ระบุ รายการที่มีความกว้าง/สูงเกินค่าสูงสุดอาจไหลไปยังบรรทัดถัดไปหรือถูกละเว้นตามการตั้งค่าการล้น (Id13f8, b/292114798)
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องที่ทำให้การสลับแอตทริบิวต์
enabledหรือreadOnlyของTextFieldทำให้เกิดข้อขัดข้องในบางกรณี (Iae17b)
เวอร์ชัน 1.7.0-alpha03
21 กุมภาพันธ์ 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.0-alpha03 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เปิดตัว
DelegatableNode.requireLayoutCoordinates()เพื่อเป็นวิธีรับModifier.NodeปัจจุบันของLayoutCoordinatesโดยไม่ต้องลบล้างonPlacedและจัดเก็บพิกัดในพร็อพเพอร์ตี้ด้วยตนเอง (Ia8657) - เปิดตัว
DelegatableNode.currentLayoutCoordinatesเพื่อเป็นวิธีรับModifier.NodeปัจจุบันของLayoutCoordinatesโดยไม่ต้องลบล้างonPlacedและจัดเก็บพิกัดในพร็อพเพอร์ตี้ด้วยตนเอง (Iaebaa) - การเพิ่มประสิทธิภาพใน
DraggableAnchorsที่ใช้โดยAnchoredDraggable(I89cff) BasicTextField2และ API ที่เกี่ยวข้องในแพ็กเกจandroidx.compose.foundation.text2จะย้ายไปที่androidx.compose.foundation.text(I9f635)BasicTextField2ไม่รับพารามิเตอร์CodepointTransformationอีกต่อไป ใช้BasicSecureTextFieldหรือOutputTransformation(Id34ff)- เพิ่มวิธีการเปรียบเทียบเฉพาะคำอธิบายประกอบของ
AnnotatedStrings2 รายการ (I32659) - ขอแนะนำ
ContextualFlowRowและFlowRow/Columnที่ได้รับการปรับปรุงด้วยMaxLinesและOverflowเรายินดีที่จะประกาศการปรับปรุงFlowRowและFlowColumnเวอร์ชันทดลอง ซึ่งตอนนี้มีmaxLinesและการรองรับการล้น รวมถึงการเปิดตัวContextualFlowRowและContextualFlowColumnการอัปเดตนี้ออกแบบมาเพื่อให้คอมโพเนนต์ที่มีประสิทธิภาพสูงสุด โดยContextualFlow*เหมาะสำหรับสินค้าจำนวนมากที่ใช้การกำหนดค่าmaxLinesขนาดเล็กและปุ่มดูเพิ่มเติมแบบไดนามิก +N ส่วนFlowRowและFlowColumnเหมาะสำหรับสินค้าจำนวนน้อย ซึ่งมีสินค้าน้อยกว่า 100 รายการ สำคัญ: หากต้องการคงลักษณะการทำงานที่มีอยู่ไว้ในFlowRowหรือFlowColumnที่รายการทั้งหมดประกอบขึ้นโดยไม่คำนึงว่ารายการนั้นจะพอดีกับแกนไขว้สูงสุดหรือไม่ ให้ตั้งค่าoverflowเป็นFlowRowOverflow.VisibleหรือFlowColumnOverflow.Visibleในระหว่างการเริ่มต้น ดูตัวอย่างการใช้งานฟีเจอร์ใหม่เหล่านี้ได้ในContextualFlowRowSampleและFlowRowSample(Ib9135, b/293577082)
การแก้ไขข้อบกพร่อง
- ภาพเคลื่อนไหวของเคอร์เซอร์จะไม่ขอเฟรมระหว่างสถานะเปิดและปิดอีกต่อไป (Ia2253)
KeyboardOptionsตอนนี้ตัวสร้างสำเนาที่เลิกใช้งานแล้วจะคัดลอกพร็อพเพอร์ตี้ทั้งหมดได้อย่างถูกต้อง (If12de)
เวอร์ชัน 1.7.0-alpha02
7 กุมภาพันธ์ 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.0-alpha02 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
HorizontalPager,VerticalPagerและPagerStateได้รับการเลื่อนชั้นเป็นเวอร์ชันเสถียร (I67660, b/316966909)- เพิ่ม
LocalTextLinkStylecomposition local ที่ช่วยให้เปลี่ยนรูปแบบของลิงก์ในข้อความทั่วทั้งแอปได้ หากคุณใช้ธีมของคุณเองในแอป คุณควรตั้งค่า composition local นี้ตามการกำหนดธีมของคุณ เมื่อใช้ธีม Material ระบบจะตั้งค่าสีของลิงก์เป็นสีหลักของ Material โดยค่าเริ่มต้น (I7eb10) - เปิดตัวตัวปรับแต่ง
receiveContentที่ช่วยให้นักพัฒนาแอปมีวิธีรับข้อมูลอย่างละเอียดใน Jetpack Compose receiveContentทำงานร่วมกับBasicTextField2เพื่อรับข้อมูลอย่างละเอียดที่มาจากแป้นพิมพ์เสมือน หรือผ่านการวางจากคลิปบอร์ด (I81b72)- ในการเปลี่ยนแปลงนี้ เราจะแทนที่
SnapFlingBehaviorด้วยTargetedFlingBehaviorในเพจเจอร์เพื่อปลดล็อก Use Case อื่นๆ และมอบความยืดหยุ่นที่มากขึ้น (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 APIIndicationNodeFactoryใหม่ ซึ่งจะช่วยให้การติดตั้งใช้งานIndicationมีประสิทธิภาพมากขึ้นเมื่อเทียบกับrememberUpdatedInstanceAPI ก่อนหน้า (ซึ่งตอนนี้เลิกใช้งานแล้ว) ดูข้อมูลการย้ายข้อมูลได้ที่ developer.android.com clickable / combinedClickable / selectable / toggleableตอนนี้ยอมรับพารามิเตอร์MutableInteractionSourceที่กำหนดให้เป็น Null ได้แล้ว หากเป็น Null และIndicationที่ระบุเป็นIndicationNodeFactoryระบบจะสร้างIndicationแบบเลซีได้เมื่อจำเป็นเท่านั้น ซึ่งจะช่วยปรับปรุงประสิทธิภาพ หากไม่ได้ยกและใช้MutableInteractionSourceขอแนะนำให้ส่งค่าเป็น null
การเปลี่ยนแปลง API
- การเปลี่ยนแปลงนี้ซึ่งเปิดตัวใน
DecayAnimationในAnchoredDraggableจะเพิ่มพารามิเตอร์decayAnimationSpecลงในAnchoredDraggableเพื่อให้ใช้ภาพเคลื่อนไหวการลดทอนเมื่อตั้งค่าเป็นหนึ่งในจุดยึด การเปลี่ยนแปลงนี้ยังรวมถึงการเปลี่ยนชื่อanimationSpecที่มีอยู่เป็นsnapAnimationSpecเพื่อช่วยให้เข้าใจกรณีการใช้งานของแต่ละข้อกำหนด BasicTextField2พร้อมให้ใช้งานในเวอร์ชันทดลองแล้ว โดยควรมีฟีเจอร์ที่เทียบเท่ากับBasicTextFieldและลักษณะการทำงานควรพร้อมใช้งานจริง อย่างไรก็ตาม API ยังคงอยู่ในเวอร์ชันทดลองในตอนนี้ ก่อนที่จะทำให้เสถียร ระบบจะเปลี่ยนชื่อเป็นBasicTextFieldและย้ายไปไว้ในแพ็กเกจเดียวกัน- เปิดตัวร่างแรกของ
OutputTransformationAPI สำหรับBasicTextField2API นี้จะแทนที่ Use Case ส่วนใหญ่ของVisualTransformationในBasicTextFieldเวอร์ชันเก่า อย่างไรก็ตาม API นี้ยังไม่สมบูรณ์และบางอย่างอาจทำงานไม่ถูกต้อง แต่เรายินดีรับฟังความคิดเห็นเกี่ยวกับความสามารถในการใช้งาน API สำหรับกรณีการใช้งานของคุณ (aosp/2708848) - เปิดตัว
LinkAnnotationที่อนุญาตให้เพิ่มลิงก์และข้อความที่คลิกได้ลงในข้อความ ฟีเจอร์ลิงก์ยังไม่สมบูรณ์และจะมีการเปลี่ยนแปลง API เพิ่มเติม - เปิดตัวตัวปรับแต่ง
receiveContentที่ช่วยให้นักพัฒนาแอปมีวิธีรับข้อมูลอย่างละเอียดใน Jetpack Compose receiveContentทำงานร่วมกับBasicTextField2เพื่อรับข้อมูลอย่างละเอียดที่แป้นพิมพ์เสมือนให้มา หรือผ่านการวางจากคลิปบอร์ดKeyboardOptions.shouldShowKeyboardOnFocusช่วยให้คุณปิดใช้ลักษณะการทำงานเริ่มต้นของBasicTextFieldในการขอแป้นพิมพ์เสมือนเมื่อโฟกัสได้- ตอนนี้เราเลิกใช้งาน
TextInputServiceและLocalTextInputServiceแล้ว ใช้PlatformTextInputModifierNodeเพื่อผสานรวมกับ IME API ของแพลตฟอร์มโดยตรงแทน (aosp/2862698) Indication#rememberUpdatedInstanceเลิกใช้งานแล้ว ซึ่งมีโทษด้านประสิทธิภาพที่หลีกเลี่ยงไม่ได้สูง และป้องกันการเพิ่มประสิทธิภาพอื่นๆ แต่คุณควรใช้IndicationNodeFactoryAPI ใหม่แทน
การแก้ไขข้อบกพร่อง
- ตอนนี้
BasicTextFieldจะตรวจสอบการแมปออฟเซ็ตที่เลือกไว้เล็กน้อยล่วงหน้าเมื่อมีการส่งVisualTransformationซึ่งจะช่วยตรวจจับข้อผิดพลาดในการเขียนโค้ดที่พบบ่อยซึ่งนำไปสู่ข้อยกเว้นที่กู้คืนไม่ได้ในพาสการวัดหรือการวาดในภายหลัง การส่งข้อยกเว้นระหว่างการคอมโพสจะช่วยให้นักพัฒนาแอปมีแนวโน้มที่จะเห็นข้อผิดพลาดเหล่านี้ในระหว่างการพัฒนา ซึ่งจะช่วยหลีกเลี่ยงการขัดข้องในเวอร์ชันที่ใช้งานจริง (I0fd42) VisualTransformationจะไม่แสดงข้อผิดพลาดหากคุณส่งคืนดัชนีที่ไม่ถูกต้องสำหรับดัชนีที่ไม่ถูกต้อง (b/316401857 )
เวอร์ชัน 1.6
เวอร์ชัน 1.6.8
12 มิถุนายน 2024
androidx.compose.foundation:foundation-*:1.6.8 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.8 มีการเปลี่ยนแปลงเหล่านี้
เวอร์ชัน 1.6.7
1 พฤษภาคม 2024
androidx.compose.foundation:foundation-*:1.6.7 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.7 มีการเปลี่ยนแปลงเหล่านี้
เวอร์ชัน 1.6.6
17 เมษายน 2024
androidx.compose.foundation:foundation-*:1.6.6 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.6 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องที่ทำให้การสลับแอตทริบิวต์
enabledหรือreadOnlyของTextFieldทำให้เกิดข้อขัดข้องในบางกรณี (Iae17b)
เวอร์ชัน 1.6.5
3 เมษายน 2024
androidx.compose.foundation:foundation-*:1.6.5 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.5 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- เพิ่มบันทึกการแก้ไขข้อบกพร่องไปยังข้อบกพร่องที่ทำซ้ำได้ยากในแถว/คอลัมน์: (b/300280216 และ b/297974033)
เวอร์ชัน 1.6.4
20 มีนาคม 2024
androidx.compose.foundation:foundation-*:1.6.4 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.4 มีการคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- ท่าทางการเลือกโดยการกดค้างแล้วลากซึ่งเลื่อนออกนอกขอบเขตเลย์เอาต์ของข้อความในเฟรมแรกของการลากจะไม่ทำให้เกิดข้อขัดข้องอีกต่อไป (Icdf90, b/325307463)
เวอร์ชัน 1.6.3
6 มีนาคม 2024
androidx.compose.foundation:foundation-*:1.6.3 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.3 มีการเปลี่ยนแปลงเหล่านี้
เวอร์ชัน 1.6.2
21 กุมภาพันธ์ 2024
androidx.compose.foundation:foundation-*:1.6.2 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.2 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหา
AnimateContentSizeรีเซ็ตไม่ถูกต้อง (I07051) - แก้ไขปัญหาที่
intrinsicHeightของข้อความจะแคชมากเกินไปในบางกรณี (3cd398, b/217910352)
เวอร์ชัน 1.6.1
7 กุมภาพันธ์ 2024
androidx.compose.foundation:foundation-*:1.6.1 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.1 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขการวัดตารางกริดแบบเหลื่อมเมื่อเลื่อนเกินขีดจำกัด (bffc39)
- เพิ่มการตรวจสอบเลย์เอาต์ที่มีขนาดใหญ่ (e74af5)
- แก้ไขการจัดวางรายการที่มีขนาด 0 ที่จุดเริ่มต้นของตารางกริดแบบสลับ (785f94)
- เรียกใช้การเรียกกลับ onRelease ตามลำดับเดียวกับ onForgotten (31ce3b)
เวอร์ชัน 1.6.0
24 มกราคม 2024
androidx.compose.foundation:foundation-*:1.6.0 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.0 มีคอมมิตเหล่านี้
การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 1.5.0
- ตัวแก้ไขใหม่
Modifier.anchoredDraggableที่ช่วยให้ลากและเคลื่อนไหวระหว่างชุดจุดยึดที่กำหนดไว้ล่วงหน้าได้ ตัวแก้ไขนี้มีไว้เพื่อแทนที่Modifier.swipeableดูวิธีใช้และวิธีย้ายข้อมูลจากModifier.swipeableได้ในคำแนะนำในการย้ายข้อมูล - เพิ่มฟังก์ชันการลากและวางระหว่างแอปและคอมโพเนนต์ ดู
DragAndDropTarget,Modifier.dragAndDropSourceและ API อื่นๆ เพื่อเริ่มต้นใช้งาน Modifier.draggable2Dคือแป้นกดร่วมใหม่ที่ช่วยให้รองรับการลากใน 2 มิติได้อย่างง่ายดาย ดูตัวอย่าง- เราได้เพิ่ม
AndroidExternalSurfaceและAndroidEmbeddedExternalSurfaceเพื่อให้เพิ่มคอมโพเนนต์ที่ขับเคลื่อนด้วยพื้นผิวใน Compose ได้ง่ายขึ้น - การเปลี่ยนแปลงและการปรับปรุง API ต่างๆ ใน
PagerและsnapFlingBehaviour - เราได้เลื่อนระดับ API ต่างๆ ที่เกี่ยวข้องกับโฟกัส ข้อความ และการแทรก ให้เป็น API ที่เสถียรแล้ว
เวอร์ชัน 1.6.0-rc01
10 มกราคม 2024
androidx.compose.foundation:foundation-*:1.6.0-rc01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.0-rc01 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- เราได้นำตัวสร้างส่วนขยาย
DragAndDropTarget()ออกแล้ว สร้างอินสแตนซ์ใหม่โดยใช้object: DragAndDropTarget {}(I32318)
เวอร์ชัน 1.6.0-beta03
13 ธันวาคม 2023
androidx.compose.foundation:foundation-*:1.6.0-beta03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.0-beta03 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขข้อขัดข้องที่ส่งผลต่อข้อความขนาดใหญ่มากซึ่งวัดด้วยข้อจำกัดที่ไม่มีที่สิ้นสุด (I1a7df, b/312294386)
- ตอนนี้
PlatformImeOptionsเป็นคลาสที่เฉพาะเจาะจงแทนที่จะเป็นอินเทอร์เฟซ (If40a4)
เวอร์ชัน 1.6.0-beta02
29 พฤศจิกายน 2023
androidx.compose.foundation:foundation-*:1.6.0-beta02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.0-beta02 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาที่
canScrollไม่อัปเดตหลังจากเลื่อนเฉพาะการจัดวางใหม่ (I60a86) - แก้ไขสำหรับ
Modifier.animateItemPlacement()และLookaheadScopeหลังจากเลื่อนเล็กน้อย (I3a2b7)
เวอร์ชัน 1.6.0-beta01
15 พฤศจิกายน 2023
androidx.compose.foundation:foundation-*:1.6.0-beta01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.0-beta01 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ตอนนี้ตัวแก้ไข
DragAndDropTargetจะรับDragAndDropTargetที่รับอย่างชัดเจนและมี Lambda เพื่อเลือกใช้เซสชันการลากและวาง ตอนนี้มีฟังก์ชัน Factory 2 รายการสำหรับDragAndDropModifierNode1 สำหรับรับการโอนและ 1 สำหรับโอนข้อมูล (I69481) - อัปเดต
maximumFlingVelocityให้แสดงเป็น Float อัปเดตเอกสารประกอบให้ชัดเจนยิ่งขึ้นเกี่ยวกับmaximumFlingVelocityunity (I8adc7) onDragAndDropStartในDragAndDropModifierNodeโรงงานเปลี่ยนชื่อเป็นacceptDragAndDropTransferแล้วเพิ่ม
acceptsDragAndDropTransferลงในdragAndDropTargetModifierเพื่อยอมรับจากเซสชันการลากและวาง Lambda นี้จะแสดงผลDragAndDropTargetที่ใช้งานได้หากสนใจเซสชันการลากและวาง ระบบได้แทนที่ Lambda อื่นๆ สำหรับการประมวลผลเหตุการณ์การลากด้วย Lambda นี้เพิ่ม
DragAndDropTargetฟังก์ชันโรงงานเพื่อรับจากเซสชันการลากและวาง (Iebf3a)การเปิดเผย
startDragImmediatelyในAnchoredDraggableจะช่วยให้ควบคุมการตรวจหาท่าทางการลากเมื่อใช้ได้ การตั้งค่านี้มีประโยชน์เมื่อวิดเจ็ตเคลื่อนไหวไปยังจุดยึดเป้าหมาย ดูตัวอย่าง (Ie6d13, b/285139987)ตอนนี้ Foundation Tooltip API อยู่ในเวอร์ชัน
@ExperimentalFoundationApi(I30b0b) แล้วนำ
DragAndDropInfoออกเนื่องจากเป็นประเภทDragAndDropModifierNode.dragตอนนี้ใช้พารามิเตอร์สำหรับtransferData, ขนาดการตกแต่ง และ Lambda การตกแต่งแบบลากDrawScopeDragAndDropTargetมีเมธอดสำหรับเหตุการณ์การลากและวางที่เฉพาะเจาะจงแทนที่จะเป็นเมธอดนามธรรมเดียวonDragAndDropEventในฟังก์ชัน Factory สำหรับDragAndDropModifierNodeได้เปลี่ยนชื่อเป็นonDragAndDropStartเพื่อสื่อสารให้ทราบได้ดียิ่งขึ้นว่าDragAndDropTargetที่ระบุใช้ได้กับเซสชันการลากและวางที่กำหนดเท่านั้นระบบนำ
DragAndDropEventTypeออกแล้ว (I645b1)เปลี่ยนชื่อ
PlatformTextInputModifierNode.runTextInputSessionเป็นestablishTextInputSessionแล้ว (I03cd0)แทนที่
OriginalTextด้วยTextSubstitution(Ifa5a8)เปลี่ยนชื่อ
PlatformTextInputModifierNode.textInputSessionเป็นrunTextInputSessionแล้ว (Ie9c6b)ระบบจะถือว่าองค์ประกอบย่อยของ
SubcomposeLayout(และเลย์เอาต์ที่คล้ายกัน เช่นLazyColumnที่อิงตาม ) ซึ่งเก็บไว้เพื่อนำกลับมาใช้ใหม่ในอนาคตนั้นปิดใช้งานอยู่ เราได้เปิดตัวassertIsDeactivated()test API ใหม่เพื่อทดสอบโหนดดังกล่าว ส่วน API ทดสอบอื่นๆ จะกรองโหนดที่ปิดใช้งานออกโดยค่าเริ่มต้น (I2ef84, b/187188981)เปลี่ยนชื่อพารามิเตอร์
clippingEnabledของModifier.magnifierเป็นclipเราได้ทำให้พารามิเตอร์
magnifierCenterของModifier.magnifierเป็นค่า Null ได้โดยยังคงลักษณะการทำงานเริ่มต้นไว้เหมือนเดิม (I6aa66)ตอนนี้ API ของ Material
SwipeToReveal(สำหรับการ์ดและชิป) ใช้ API ที่อิงตามช่อง (ตามที่ Compose แนะนำ) แทนอินสแตนซ์ที่อิงตามคลาสข้อมูลเพื่อสร้างช่องเหล่านั้น นี่เป็นการเปลี่ยนแปลงที่ทำให้เกิดข้อขัดข้อง โปรดดูการสาธิตและโค้ดตัวอย่างเพื่อดูตัวอย่างวิธีใช้ API ใหม่ (Ia8943)
การแก้ไขข้อบกพร่อง
- ใช้ equals และ hashcode สำหรับ
PageSize.Fixed(Ie3ede, b/300134276) - แก้ไขข้อบกพร่องที่ทำให้เลย์เอาต์
BasicTextไม่หดเมื่อminWidthเปลี่ยนแปลงและminWidthน้อยกว่าข้อจำกัดการวัดเริ่มต้นmaxWidth(Idb19c) - เพิ่มการรองรับโปรแกรมแสดงผลสำหรับการไล่ระดับสีแบบกวาดใน
ArcLine(I4d5bb) - แก้ไขปัญหาความเข้ากันได้ของไบนารีกับการเปลี่ยนแปลง Window Inset (Iee695)
- นำเลเยอร์หลักของ Material ออกสำหรับชิป/ปุ่ม Material3 เนื่องจาก Microbenchmark แสดงให้เห็นว่าไม่มีเลเยอร์ดังกล่าวแล้วประสิทธิภาพจะดีกว่า (I55555)
เวอร์ชัน 1.6.0-alpha08
18 ตุลาคม 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha08 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.0-alpha08 มีคอมมิตต่อไปนี้
ฟีเจอร์ใหม่
Modifier.draggable2Dคือแป้นกดร่วมใหม่ที่ช่วยให้รองรับการลากใน 2 มิติได้อย่างง่ายดาย ดูตัวอย่าง (Id95f5, b/214412658)
การเปลี่ยนแปลง API
Modifier.dragAndDrawSourceได้เปลี่ยนชื่อ lambdaonDrawDragShadowเป็นdrawDragDecorationและDragAndDropInfoได้เปลี่ยนชื่อพารามิเตอร์ขนาดเป็นdragDecorationSize(Id0e30, b/303904810)- พารามิเตอร์
decorationBoxของBasicTextField2เปลี่ยนชื่อเป็นdecoratorแล้ว และประเภทของเกมจะเปลี่ยนเป็นอินเทอร์เฟซที่สนุกเทียบเท่ากันTextFieldDecorator(I23c1c)
การแก้ไขข้อบกพร่อง
- ปรับปรุงเอกสารเกี่ยวกับ
BasicTextFieldข้อกำหนดของonValueChange(I90fc9, b/160257648)
เวอร์ชัน 1.6.0-alpha07
4 ตุลาคม 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha07 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.0-alpha07 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- เปิดตัว
PlatformTextInputMethodTestOverrideสำหรับการเขียนการทดสอบสำหรับโปรแกรมแก้ไขข้อความที่กำหนดเอง (Id159b) - เปลี่ยนชื่อ
GraphicsSurfaceเป็นAndroidExternalSurface(I11680) - เพิ่ม
DisableNonLinearFontScalingInComposeฟีเจอร์ชั่วคราวเพื่อปิดใช้การปรับขนาดแบบอักษรที่ไม่ใช่แบบเชิงเส้น ตั้งค่าDisableNonLinearFontScalingInCompose = trueในการทดสอบหากคุณต้องการเวลาในการล้างข้อมูล เราจะนำฟีเจอร์นี้ออกใน Compose 1.6.0-beta01 (Ic9486) - เพิ่มคอลเล็กชัน
ColorListและColorSetที่หลีกเลี่ยงการจัดสรร (I744bd) - การเปลี่ยนแปลงนี้จะนำ
shortSnapVelocityThresholdออก ซึ่งได้กลายเป็นรายละเอียดการใช้งานของการใช้งานSnapLayoutInfoProvider(I65f6d) - เพิ่มตัวแก้ไข
dragAndDropSourceสำหรับการเริ่มเซสชันการลากและวาง และตัวแก้ไขdragAndDropTargetสำหรับการรับจากเซสชันการลากและวาง (Ib7828, b/286038936) - อัปเดตเอกสารและวิธีการระบุตำแหน่งของ
SnapPositionInLayoutเพิ่มระยะขอบเนื้อหาลงในเมธอดตำแหน่งในSnapPositionInLayout(Id7938, b/300116110) - เพิ่ม
UndoStateลงในTextFieldStateซึ่งช่วยให้เลิกทำ/ทำซ้ำการเปลี่ยนแปลงที่ผู้ใช้ทำได้ (Icc024)
การแก้ไขข้อบกพร่อง
- แก้ไข
basicMarqueeไม่เคลื่อนไหวหลังจากเปลี่ยนความเร็ว (Id2e77, b/297974036)
เวอร์ชัน 1.6.0-alpha06
20 กันยายน 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha06 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.0-alpha06 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- ใหม่: 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)
การเปลี่ยนแปลงพฤติกรรม
- ตอนนี้ Compose ใช้การปรับขนาดแบบอักษรที่ไม่ใช่แบบเชิงเส้นเพื่อให้อ่านและเข้าถึงได้ง่ายขึ้น เมื่อการปรับขนาดแบบอักษร > 100% ในการตั้งค่าระบบ ข้อความขนาดเล็กจะเพิ่มขนาดตามปกติ แต่ข้อความที่มีขนาดใหญ่อยู่แล้วจะเพิ่มขนาดเพียงเล็กน้อย นอกจากนี้ ความสูงของบรรทัดที่กำหนดไว้ใน SP จะปรับโดยอัตโนมัติเพื่อให้สัดส่วนยังคงเท่ากับความสูงที่ตั้งใจไว้ที่ระดับ 100% ดูข้อมูลเพิ่มเติมได้ที่แนวทางปฏิบัติแนะนำในการปรับขนาดแบบอักษร (I11518)
การแก้ไขข้อบกพร่อง
- นำการใช้
rememberSaveableสำหรับเคล็ดลับเครื่องมือออก (Icc131, b/299500338)
เวอร์ชัน 1.6.0-alpha05
6 กันยายน 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha05 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.0-alpha05 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- เพิ่มการโอเวอร์โหลดสำหรับ
BasicSecureTextFieldที่ยอมรับค่าที่ไม่เปลี่ยนแปลงและโค้ดเรียกกลับเพื่อเปลี่ยนค่านั้น เช่นเดียวกับ APIBasicTextFieldปัจจุบัน (Ia4882) - เพิ่ม
Modifier.preferKeepClear()เพื่อทำเครื่องหมายว่าสามารถคอมโพสได้เนื่องจากต้องการหลีกเลี่ยงหน้าต่างลอยใน API 33 ขึ้นไป (Ib51d5, b/297260115) - ความเร็วในการดีดในคอมโพเนนต์ View เช่น
ScrollViewและRecyclerViewจะจำกัดไว้ที่ViewConfiguration.ScaledMaximumFlingVelocityตอนนี้ Compose มีmaximumFlingVelocityเวอร์ชันของตัวเองซึ่งใช้กับDraggableได้แล้ว (Ibf974) - นำการโอเวอร์โหลด
PagerและPagerStateที่เลิกใช้งานแล้วออก (Iea07e) - เพิ่ม
BasicTooltipBoxลงในcompose.foundationและอัปเดตPlainTooltipBoxกับRichTooltipBoxให้ใช้TooltipBoxกับ ComposablePlainTooltipและRichTooltipใหม่ (I79e1d)
เวอร์ชัน 1.6.0-alpha04
23 สิงหาคม 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha04 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.0-alpha04 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- เพิ่มอินเทอร์เฟซ
ReusableCompositionสำหรับจัดการวงจรและนำองค์ประกอบย่อยกลับมาใช้ซ้ำ (I812d1, b/252846775) Modifier.focusGroupได้รับการเลื่อนขั้นเป็น API ที่เสถียรแล้ว (I7ffa3)- เพิ่มการโอเวอร์โหลดสำหรับ
BasicTextField2ที่ยอมรับค่าที่ไม่เปลี่ยนแปลงและโค้ดเรียกกลับเพื่อเปลี่ยนค่านั้น เช่นเดียวกับ APIBasicTextFieldปัจจุบัน (I3f2b8) - ตอนนี้
GridItemSpan::currentLineSpanเป็น API ที่เสถียรแล้ว (Icc29c) - ตอนนี้ Canvas ที่ยอมรับ
contentDescriptionเป็น API ที่เสถียรแล้ว (Ib3d29) - เปิดตัว
viewportSizeในScrollStateซึ่งเป็นวิธีทราบviewPortขนาดของคอมโพเนนต์ที่ใช้ScrollStateหลังจากวัดผลแล้ว (I8b85a, b/283102682) - แก้ไขปัญหาที่การดึงข้อมูลล่วงหน้าใน Pager ไม่ตรงกับลักษณะการทำงานใน Views (I93352, b/289088847)
- ตอนนี้
Modifier.consumeWindowInsets(PaddingValues)เสถียรแล้ว- ตอนนี้เราได้นำ
Deprecated Modifier.consumedWindowInsetsAPI ออกแล้ว โปรดใช้Modifier.consumeWindowInsetsแทน (Id72bb)
- ตอนนี้เราได้นำ
เวอร์ชัน 1.6.0-alpha03
9 สิงหาคม 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.0-alpha03 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- เพิ่มการโอเวอร์โหลดของ
LazyLayoutโดยจะยอมรับ Lambda ของLazyLayoutItemProviderไม่ใช่ออบเจ็กต์ธรรมดาเหมือนก่อน เราเลิกใช้งานการโอเวอร์โหลดก่อนหน้าแล้ว (I42a5a) - เพิ่มการรองรับการกำหนดค่า
privateImeOptions(Idb772)
การแก้ไขข้อบกพร่อง
- แก้ไขช่องข้อความแบบคงที่ที่แสดงแป้นพิมพ์และแก้ไขได้เมื่อ
readOnlyเป็นจริง นอกจากนี้ ยังแก้ไขปัญหาที่แป้นพิมพ์ไม่แสดงเมื่อเปลี่ยนreadOnlyจากจริงเป็นเท็จขณะโฟกัส (I34a19, b/246909589)
เวอร์ชัน 1.6.0-alpha02
26 กรกฎาคม 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.0-alpha02 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เปิดตัว
PagerLayoutInfoพร้อมข้อมูลที่รวบรวมหลังจากผ่านการวัดผลในPagerนอกจากนี้ เรายังได้เปิดตัวPageInfoซึ่งเป็นข้อมูลเกี่ยวกับหน้าเว็บเดียวที่วัดผลในPager(Iad003, b/283098900) - คำอธิบายประกอบเพิ่มเติมเพื่อระบุอินพุตที่อนุญาตไปยัง Composable (I51109)
- เพิ่ม
SemanticsNodeInteraction.requestFocusเพื่อให้เป็นวิธีที่สะดวกและค้นพบได้ง่ายขึ้นในการขอโฟกัสในการทดสอบ (Ie8722) - ออกแบบ
PlatformTextInput*API ใหม่ทั้งหมด (I6c93a, b/274661182, b/267235947, b/277380808) SoftwareKeyboardControllerและLocalSoftwareKeyboardControllerไม่ใช่ฟีเจอร์ทดลองอีกต่อไป นอกจากนี้LocalSoftwareKeyboardControllerยังเป็นCompositionLocalอย่างเป็นทางการแล้วด้วย (I4c364)- ตอนนี้
Modifier.transformableมีเดลต้าการแพนในพารามิเตอร์canPanเพื่อช่วยกำหนดทิศทางการแพนเพื่ออนุญาตหรือไม่อนุญาต (I692aa, b/266829800) - อัปเดตตัวแก้ไข
consumeWindowInsetsเพื่อขยายซูเปอร์คลาสAbstractComposeView(Iacd74, b/269479941)
เวอร์ชัน 1.6.0-alpha01
21 มิถุนายน 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.0-alpha01 มีคอมมิตต่อไปนี้
ฟีเจอร์ใหม่
- เปิดตัว
AnchoredDraggableAPI ใหม่ใน Foundation ซึ่งใช้เพื่อสร้างคอมโพเนนต์ที่ลากระหว่างสถานะที่ไม่ต่อเนื่องได้ เช่น ชีตด้านล่างแบบโมดัล API นี้จะมาแทนที่SwipeableAPI ของ Material (I4a2ed)
การเปลี่ยนแปลง API
- การสนับสนุน
InputConnection#requestCursorUpdates(I0c69b) - เปิดตัว
scrollAnimationSpecเพื่ออนุญาตข้อกำหนดภาพเคลื่อนไหวที่กำหนดเอง อัปเดตBringIntoViewCalculatorเป็นBringIntoViewScrollerแล้ว (Idb741) - เพิ่ม
ResourceResolutionExceptiontype เพื่อห่อ Throwable ที่เกิดขึ้นเมื่อพยายามโหลดชิ้นงานบิตแมปพร้อมคำอธิบายเส้นทางชิ้นงานที่โหลดไม่สำเร็จ (I19f44, b/230166331, b/278424788) - เพิ่มพร็อพเพอร์ตี้และการดำเนินการทางความหมายเพื่อรองรับการแปลข้อความ (I4a6bc)
- เปิดตัว
BringIntoViewCalculatorAPI ที่ใช้ปรับแต่งวิธีที่คอมโพเนนต์ต่างๆ เช่นScrollableตอบสนองต่อคำขอbringIntoViewเปลี่ยนการโอเวอร์โหลดของ Scrollable เพื่อยอมรับอินสแตนซ์ของBringIntoViewCalculatorโดยไม่บังคับ (Iaf5af)
การแก้ไขข้อบกพร่อง
- เพิ่มการตรวจสอบ Lint เพื่อเตือนหากคุณสร้าง
MutableInteractionSourceในการจัดองค์ประกอบโดยไม่จดจำ ซึ่งคล้ายกับการตรวจสอบ Lint สำหรับการสร้างสถานะที่เปลี่ยนแปลงได้ /Animatable(I5daae) - เพิ่มการรองรับการเลือกด้วยเมาส์ การเลือกแบบสัมผัสจะขยายตามคำและลดตามอักขระ (Ic0c6c, b/180639271)
- เพิ่ม
FocusTargetModifierNodeอินเทอร์เฟซที่ใช้สร้างFocusTargetที่กำหนดเองได้ (I9790e)
รุ่น 1.5
เวอร์ชัน 1.5.4
18 ตุลาคม 2023
androidx.compose.foundation:foundation-*:1.5.4 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.5.4 มีคอมมิตเหล่านี้
เวอร์ชัน 1.5.3
4 ตุลาคม 2023
androidx.compose.foundation:foundation-*:1.5.3 ได้รับการเผยแพร่แล้ว เวอร์ชันนี้ไม่มีการเปลี่ยนแปลง
รุ่น 1.5.2
27 กันยายน 2023
androidx.compose.foundation:foundation-*:1.5.2 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.5.2 มีคอมมิตต่อไปนี้
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องในข้อความที่ทำให้เกิดข้อขัดข้องในบางกรณีเมื่อมีการลบล้างความหมาย
รุ่น 1.5.1
6 กันยายน 2023
androidx.compose.foundation:foundation-*:1.5.1 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.5.1 มีคอมมิตต่อไปนี้
การแก้ไขข้อบกพร่อง
- แก้ไขช่องข้อความแบบคงที่ที่แสดงแป้นพิมพ์และแก้ไขได้เมื่อ
readOnlyเป็นจริง นอกจากนี้ ยังแก้ไขปัญหาที่แป้นพิมพ์ไม่แสดงเมื่อเปลี่ยนreadOnlyจากจริงเป็นเท็จขณะโฟกัส (I34a19, b/246909589)
เวอร์ชัน 1.5.0
9 สิงหาคม 2023
androidx.compose.foundation:foundation-*:1.5.0 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.5.0 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 1.4.0
- ตัวแก้ไขพื้นฐานหลายรายการ รวมถึง
Modifier.clickable,Modifier.draggable,Modifier.scrollable, ตัวแก้ไขเลย์เอาต์ และอื่นๆ ได้รับการย้ายข้อมูลไปยังModifier.NodeAPI แล้ว ซึ่งจะช่วยลดค่าใช้จ่ายในการคอมโพสิตเริ่มต้น - การปรับปรุงความเสถียรของ Pager เราได้แก้ไขข้อบกพร่องหลายอย่างแล้ว
- ตอนนี้พารามิเตอร์
pageCountอยู่ในPagerStateแทนที่จะอยู่ใน Pager เอง
เวอร์ชัน 1.5.0-rc01
26 กรกฎาคม 2023
androidx.compose.foundation:foundation-*:1.5.0-rc01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.5.0-rc01 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
คุณสามารถเลือกตรวจสอบเพื่อแนะนำให้ย้ายข้อมูลการเรียก
mutableStateOf()ไปยังประเภทเฉพาะทางที่เกี่ยวข้องสำหรับ Primitive ได้ รหัสการตรวจสอบคือ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)
การแก้ไขข้อบกพร่อง
- ลดการจัดสรรระหว่างการวัดรายการ/ตารางกริด/ฯลฯ ที่ไม่ได้ใช้งาน (Iaf9e2)
- ลดการจัดสรรเมื่อใช้สแนปชอต (I65c09)
- นำการจัดสรรออกจากภาพเคลื่อนไหวสปริง (Ie9431)
- นำการจัดสรรออกจาก
TextLayout(I0fd11) - นำการจัดสรรหลายรายการในการติดตามความเร็วของเคอร์เซอร์ออก (I26bae)
เวอร์ชัน 1.5.0-alpha04
10 พฤษภาคม 2023
androidx.compose.foundation:foundation:1.5.0-alpha04 และ androidx.compose.foundation:foundation-layout:1.5.0-alpha04 เปิดตัวแล้ว เวอร์ชัน 1.5.0-alpha04 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม
TextStyle.merge(...)ที่เพิ่มประสิทธิภาพพร้อมรายการพารามิเตอร์ทั้งหมด (Iad234, b/246961787) - เปิดตัว
SnapLayoutInfoProviderที่ใช้กับLazyGridStateได้ (I92134, b/269237141, b/260914964) - เพิ่ม
Modifier.animateItemPlacement()เวอร์ชันทดลองสำหรับขอบเขตรายการของตารางกริดแบบสลับที่โหลดแบบ Lazy Loading แล้ว คุณใช้กับรายการเพื่อสร้างภาพเคลื่อนไหวการเปลี่ยนตำแหน่ง/การเรียงลำดับใหม่โดยอัตโนมัติได้ (I4b62d, b/257034719) - โปรโมต
GridCells.FixedSizeเป็นเวอร์ชันเสถียรFixedSizeจะกำหนดLazyGridโดยที่แต่ละเซลล์จะมีขนาดที่แน่นอนบนแกนไขว้ และพื้นที่ที่เหลือจะกระจายตามการจัดเรียงแกนไขว้ (I8542f) - เปิดตัวขอบเขตตัวรับ
PagerScopeสำหรับ Pager และฟังก์ชันยูทิลิตีสำหรับการคำนวณออฟเซ็ตหน้าเว็บที่กำหนด (If2577) - ใช้
snapPositionalThresholdเมื่อสร้างลักษณะการปัด Snap ใช้พารามิเตอร์นี้เพื่อระบุเกณฑ์ตำแหน่งสำหรับการสแนปแบบย่อในเพจเจอร์ (If8f7f) - แทนที่
SnapLayoutInfoProvider.calculateSnappingOffsetBoundsด้วยcalculateSnappingOffsetแล้ว ในวิธีใหม่นี้ เราเพียงขอออฟเซ็ตถัดไปเพื่อสแนป การคำนวณขอบเขตควรดำเนินการที่ระดับการติดตั้งใช้งาน เนื่องจากอาจแตกต่างกันไปตามวิธีที่ต้องใช้ในการสแนป (I923a4) LazyStaggeredGridAPI ได้รับการเลื่อนขั้นเป็นเวอร์ชันเสถียรแล้ว (I633a5)- นำ
pageCountออกจากHorizontal/VerticalPagerควรระบุเมื่อสร้างสถานะ อัปเดตPagerStateและrememberPagerStateเพื่อยอมรับpageCount(Ieb52d, b/266965072) - นำ
pageCountออกจากHorizontal/VerticalPagerควรระบุเมื่อสร้างสถานะ อัปเดตPagerStateและrememberPagerStateเพื่อยอมรับpageCount(Ifa3cb, b/266965072) - ขอแนะนำ
shortSnapVelocityThresholdในSnapFlingBehaviorของ Pager (I7379e, b/275579012) - เพิ่ม
FlowRowScopeและFlowColumnScope(I54fe2)
การแก้ไขข้อบกพร่อง
- การเรียกใช้เพื่อรับความหมายในข้อความเมื่อข้อจำกัดมี
minWidthและminHeightจะไม่ทำให้เกิดข้อขัดข้องอีกต่อไป (Ibd072) - แก้ไขการถดถอยที่แป้นพิมพ์ไม่แสดงสำหรับช่องข้อความภายในกล่องโต้ตอบที่ไม่ได้สร้างโดย
DialogComposable (I82551, b/262140644)
เวอร์ชัน 1.5.0-alpha03
19 เมษายน 2023
androidx.compose.foundation:foundation:1.5.0-alpha03 และ androidx.compose.foundation:foundation-layout:1.5.0-alpha03 เปิดตัวแล้ว เวอร์ชัน 1.5.0-alpha03 มีคอมมิตต่อไปนี้
การเปิดตัวนี้จะเปิดใช้สแต็กการแสดงข้อความใหม่สำหรับ Compose สแต็กใหม่นี้ได้รับการเพิ่มประสิทธิภาพด้านประสิทธิภาพ และคุณจะไม่เห็นการเปลี่ยนแปลงใดๆ
หากเห็นการเปลี่ยนแปลงในข้อความที่แสดงผล คุณสามารถแก้ไขข้อบกพร่องได้โดยการตั้งค่า NewTextRendering1_5 = false เพื่อยืนยันความแตกต่างของลักษณะการทำงาน การตั้งค่านี้จะบังคับให้มีการจัดองค์ประกอบใหม่ โปรดรายงานความแตกต่างของลักษณะการทำงานเป็นข้อบกพร่อง
เราจะนำแฟล็กการแก้ไขข้อบกพร่องออกก่อนการเปิดตัว 1.5 beta01 (Iada23, b/246960758)
การเปลี่ยนแปลง API
- ทำให้
FlowColumn/FlowRowอยู่ในบรรทัด (Idab37)
เวอร์ชัน 1.5.0-alpha02
5 เมษายน 2023
androidx.compose.foundation:foundation:1.5.0-alpha02 และ androidx.compose.foundation:foundation-layout:1.5.0-alpha02 เปิดตัวแล้ว เวอร์ชัน 1.5.0-alpha02 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มการรองรับเซลล์ขนาดคงที่ใน
LazyGridและการจัดเรียงด้วยการจัดเรียงแกนไขว้ (I83ed9, b/235121277, b/267942510) - เพิ่มการรองรับเลนขนาดคงที่ใน
LazyStaggeredGridและจัดเรียงด้วยการจัดเรียงแกนไขว้ (I7d519) - ตอนนี้คุณเปิด
UrlAnnotationในAnnotatedStringได้แล้วผ่านบริการช่วยเหลือพิเศษ เช่นTalkBack(If4d82, b/253292081) - เพิ่ม
InsertTextAtCursorการดำเนินการเชิงความหมายสำหรับช่องข้อความ (I11ed5) - ตอนนี้การดำเนินการทดสอบที่เกี่ยวข้องกับข้อความ (เช่น
performTextInput) จะขอโฟกัสโดยตรงโดยใช้การดำเนินการทางความหมายแทนการคลิกช่อง (I6ed05) - เพิ่มการรองรับการเว้นวรรค/การจัดเรียงแกนไขว้โดยใช้
verticalArrangementในFlowRowและhorizontalArrangementในFlowColumnนอกจากนี้ เรายังนำverticalAlignmentและhorizontalAlignmentระดับบนสุดในFlowRow/FlowColumnออกด้วย นักพัฒนาแอปสามารถใช้Modifier.alignแทนได้ ซึ่งจะช่วยลดความสับสนระหว่างรูปแบบการตั้งชื่อของverticalAlignmentกับverticalArrangement(I87b60, b/268365538)
เวอร์ชัน 1.5.0-alpha01
22 มีนาคม 2023
androidx.compose.foundation:foundation:1.5.0-alpha01 และ androidx.compose.foundation:foundation-layout:1.5.0-alpha01 เปิดตัวแล้ว เวอร์ชัน 1.5.0-alpha01 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ข้อความและ
BasicTextได้รับการปรับโครงสร้างใหม่เพื่อใช้ระบบตัวแก้ไขใหม่ ซึ่งจะช่วยปรับปรุงประสิทธิภาพได้อย่างมากในหลายๆ กรณี ไม่ควรมีการเปลี่ยนแปลงที่มองเห็นได้ (If1d17, b/246961435) - เพิ่ม
PerformImeActionการดำเนินการเชิงความหมายเพื่อเรียกใช้การดำเนินการ IME ในโหนดเอดิเตอร์ข้อความ (Ic606f, b/269633506)
การแก้ไขข้อบกพร่อง
- อัปเดตส่วนประกอบภายในของ
Modifier.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
- เปิดตัว
PlatformTextInputAdapterAPI ระดับต่ำใหม่สำหรับการสร้างการใช้งานอินพุตข้อความที่กำหนดเองซึ่งสื่อสารกับ API ของแพลตฟอร์มโดยตรง (I58df4) - เพิ่มการรองรับเลย์เอาต์ย้อนกลับใน
LazyStaggeredGrid(I3ef4a)
การแก้ไขข้อบกพร่อง
- ตอนนี้การดำเนินการตามความหมายของ
BasicTextFieldSetTextจะอัปเดตบัฟเฟอร์ข้อความโดยใช้เส้นทางโค้ดเดียวกันกับการอัปเดต IME และฟังก์ชันการทดสอบ (เช่นperformTextReplacement) - ฟังก์ชันการทดสอบข้อความ
performTextClearance,performTextReplacementและperformTextSelectionจะใช้SemanticsActionsแล้ว (I0807d, b/269633168, b/269624358)
เวอร์ชัน 1.4.0-beta02
22 กุมภาพันธ์ 2023
androidx.compose.foundation:foundation:1.4.0-beta02 และ androidx.compose.foundation:foundation-layout:1.4.0-beta02 เปิดตัวแล้ว เวอร์ชัน 1.4.0-beta02 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- เพิ่ม
Modifier.Node.onReset()การเรียกกลับใหม่ที่ช่วยให้คุณรีเซ็ตสถานะในเครื่องบางอย่างเพื่อจัดการกรณีที่Layoutจะนำกลับมาใช้ใหม่ได้อย่างเหมาะสม (เช่น เป็นรายการของLazyColumn) แก้ไขFocusTargetModifierNodeเพื่อรีเซ็ตสถานะที่โฟกัสอย่างถูกต้อง (I65495, b/265201972) - เพิ่มพารามิเตอร์
BlendModeลงในเมธอดDrawScope.drawText,Paragraph.paintและMultiParagraph.paintเพื่อรองรับอัลกอริทึมการผสมผสานที่แตกต่างกันเมื่อวาดข้อความบน Canvas (I57508) - นำ
modifierElementOf()API ออกแล้ว โปรดขยายจากModifierNodeElementโดยตรงแทน (Ie6d21)
การแก้ไขข้อบกพร่อง
- การปรับแฮนเดิลการเลือกจะเลือกอักขระบางส่วนไม่ได้อีกต่อไป (Idedd1)
- แก้ไขข้อขัดข้องเมื่อกด Ctrl + Backspace ใน
TextFieldที่ว่างเปล่า (I0427f, b/244185537)
เวอร์ชัน 1.4.0-beta01
8 กุมภาพันธ์ 2023
androidx.compose.foundation:foundation:1.4.0-beta01 และ androidx.compose.foundation:foundation-layout:1.4.0-beta01 เปิดตัวแล้ว เวอร์ชัน 1.4.0-beta01 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- ตั้งแต่เวอร์ชัน 1.3 เราได้เพิ่มการผสานรวมความเข้ากันได้ของอีโมจิกับ
TextและTextFieldรวมถึงย่อหน้าระดับล่าง ระบบจะเปิดใช้โดยค่าเริ่มต้นเมื่อกำหนดค่า emojicompat EmojiCompatสามารถกำหนดค่าในข้อความที่เฉพาะเจาะจงได้โดยใช้PlatformParagraphStyle
การเปลี่ยนแปลง API
- เพิ่มการติดตั้งใช้งานทั่วไปของ
PinnableContainerAPI ที่ใช้ในLazyLayoutsทั้งหมดเพื่อเก็บรายการที่ออกจากองค์ประกอบ แต่ยังต้องใช้งานอยู่ (If45a4) - เปลี่ยนชื่อ
PinnableContainer.PinnedHandle.unpin()เป็นrelease()แล้ว (I4667a)
การมีส่วนร่วมภายนอก
- เพิ่มพร็อพเพอร์ตี้
mainAxisItemSpacingลงในLazyListLayoutInfo,LazyGridLayoutInfoและLazyStaggeredGridItemInfo(I52fad)
เวอร์ชัน 1.4.0-alpha05
25 มกราคม 2023
androidx.compose.foundation:foundation:1.4.0-alpha05 และ androidx.compose.foundation:foundation-layout:1.4.0-alpha05 เปิดตัวแล้ว เวอร์ชัน 1.4.0-alpha05 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เพิ่มการรองรับการครอบคลุมทั้งบรรทัดใน
LazyStaggeredGrid(I28252) - เพิ่ม
onHoverเวอร์ชันทดลองลงในClickableText(I6938f) - เปิดตัวการโอเวอร์โหลดทดลองใหม่สำหรับฟังก์ชัน
runComposeUiTestและฟังก์ชันcreate*ComposeRuleที่ยอมรับพารามิเตอร์CoroutineContextระบบจะใช้บริบทในการเรียบเรียงการทดสอบ รวมถึงการเรียกใช้LaunchedEffectและrememberCoroutineScope()ในการเรียบเรียง (I10614, b/265177763)
การเปลี่ยนแปลง API
- ผสานรวม API ก่อน/หลังของ
OverscrollEffectเข้ากับฟังก์ชันapplyToScrollและapplyToFlingที่รวมกัน ดูตัวอย่างที่อัปเดตแล้วในเอกสารประกอบเพื่อดูตัวอย่างวิธีใช้เอฟเฟกต์การเลื่อนเกินด้วยรูปร่าง API ใหม่ (I8a9c4, b/255554340) - ประเภท/ค่า Null ของฟังก์ชันในบรรทัด/ที่เลิกใช้งานแล้ว/ที่ซ่อนอยู่เพิ่มเติม (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เครื่องมือสร้างที่มีvariationSettingsตอนนี้เป็น API ที่เสถียรแล้ว และสามารถใช้เพื่อสร้างตัวอธิบายแบบอักษรประเภทใหม่ได้ (I5adcc, b/261565807)- เปิดตัว
PinnableContainerAPI ที่เผยแพร่โดย Lazy List ผ่าน Composition Local ซึ่งช่วยให้ปักหมุดรายการปัจจุบันได้ ซึ่งหมายความว่าระบบจะไม่ทิ้งรายการดังกล่าวเมื่อเลื่อนออกจากมุมมอง เช่นModifier.focusable()จะปักหมุดรายการที่โฟกัสปัจจุบันผ่านกลไกนี้ (Ib8881, b/259274257, b/195049010) - เขียนวิธีที่องค์ประกอบที่เลื่อนได้ตอบสนองต่อ
bringIntoViewRequestersและองค์ประกอบที่โฟกัสได้ใหม่เพื่อจำลองความซับซ้อนของการดำเนินการเหล่านั้นได้ดียิ่งขึ้นและจัดการกับกรณีขอบได้มากขึ้น (I2e5fe, b/241591211, b/192043120, b/237190748, b/230756508, b/239451114) - ความสามารถในการเว้นว่างของประเภทการแสดงผลของฟังก์ชันที่เลิกใช้งานและซ่อนไว้ (Ibf7b0)
- เพิ่ม
TextMotionทดลองTextStyleเพื่อกำหนดข้อความให้เป็นStatic(default)หรือเคลื่อนไหว ใช้TextMotion.Animatedหากจะปรับขนาด แปล หรือหมุนข้อความผ่านภาพเคลื่อนไหว (I24dd7) - เพิ่ม
TextFieldFocusModifierเพื่อแก้ไขลักษณะการทำงานของการนำทางด้วยโฟกัสสำหรับแพลตฟอร์ม Android (I00303) - แทนที่อาร์กิวเมนต์
maxSize: IntSizeในdrawTextด้วยsize: Sizeเพื่อให้สอดคล้องกับฟังก์ชันDrawScopeอื่นๆsizeจะตั้งค่าเป็นSize.Unspecifiedโดยค่าเริ่มต้น ซึ่งไม่ควรเปลี่ยนลักษณะการทำงานเริ่มต้นก่อนหน้า (Icd27d)
การแก้ไขข้อบกพร่อง
- ปรับฟิสิกส์การสแนปใน
SnapFlingBehaviourเพื่อให้รู้สึกเป็นธรรมชาติมากขึ้น
ปัญหาที่ทราบ
- เมื่ออัปเดตจาก
androidx.compose.foundation:1.4.0-alpha03เป็นandroidx.compose.foundation:1.4.0-alpha04คุณอาจพบข้อผิดพลาดjava.lang.NoSuchFieldErrorที่นี่คือที่ที่มีการรายงานปัญหาครั้งแรก เราได้ส่งการแก้ไขแล้ว และการแก้ไขนี้จะพร้อมใช้งานในการอัปเดต Compose ครั้งถัดไป วิธีแก้ปัญหาชั่วคราวคืออัปเดตไลบรารีandroidx.compose.materialและandroidx.compose.material3เป็นเวอร์ชันล่าสุด(1.1.0-alpha04) หรือดาวน์เกรดandroidx.compose.foundationเป็น 1.4.0-alpha03
เวอร์ชัน 1.4.0-alpha03
7 ธันวาคม 2022
androidx.compose.foundation:foundation:1.4.0-alpha03 และ androidx.compose.foundation:foundation-layout:1.4.0-alpha03 เปิดตัวแล้ว เวอร์ชัน 1.4.0-alpha03 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ในการทดสอบ UI โดยใช้กฎ Compose ระบบจะไม่ส่งต่อการดำเนินการต่อที่กลับมาทำงานอีกครั้งในระหว่างการเรียกกลับ
withFrameNanosจนกว่าการเรียกกลับของเฟรมทั้งหมดจะทำงานเสร็จ ซึ่งจะตรงกับลักษณะการทำงานของ Compose เมื่อเรียกใช้ตามปกติ อย่างไรก็ตาม การทดสอบที่อิงตามลักษณะการทำงานแบบเก่าอาจล้มเหลว การเปลี่ยนแปลงนี้ควรส่งผลต่อโค้ดที่เรียกใช้withFrameNanosหรือwithFrameMillisโดยตรงเท่านั้น และมีตรรกะภายนอก Callback ที่ส่งไปยังฟังก์ชันเหล่านั้น ซึ่งอาจต้องย้ายไปไว้ภายใน Callback ดูการเปลี่ยนแปลงการทดสอบภาพเคลื่อนไหวได้ใน CL นี้เพื่อดูตัวอย่าง - เพิ่มพารามิเตอร์
onPerformTraversals: (Long) -> Unitที่ไม่บังคับลงในตัวสร้างTestMonotonicFrameClockและฟังก์ชัน Factory เพื่อเรียกใช้โค้ดหลังจาก Callback ของwithFrameNanosแต่ก่อนที่จะกลับมาใช้ Coroutine ของผู้โทร (Idb413, b/254115946, b/222093277, b/255802670) - แนะนำการดำเนินการเพื่อการช่วยเหลือพิเศษในหน้าเว็บ:
PageUp,PageDown,PageLeft,PageRightโปรดทราบว่าฟีเจอร์เหล่านี้ใช้ได้ตั้งแต่ API 29 เป็นต้นไปเท่านั้น (Ida4ab) - ขอแนะนำ
HorizontalPagerและVerticalPagerซึ่งเป็นวิธีแสดง Composable ในลักษณะของ Pager เปิดตัวPagerStateเพื่อควบคุม Pager รวมถึงค้นหาข้อมูลเกี่ยวกับสถานะปัจจุบันของ Pager เปิดตัวPageSizeซึ่งเป็นวิธีควบคุมขนาดหน้าของ Pager โดยสามารถใช้เพื่อสร้างภาพสไลด์เหมือน Pager ได้ เปิดตัวPagerSnapDistanceซึ่งเป็นวิธีควบคุมการทำงานของการสแนปในลักษณะการปัดของ Pager (I01120) - เพิ่มการโอเวอร์โหลดใน
SnapFlingBehavior.performFlingเพื่อช่วยให้เข้าใจว่าการตวัดจะหยุดที่ใด (I569f6) - นำ
OverscrollEffect#isEnabledออกแล้ว คุณไม่จำเป็นต้องจดจำและตั้งค่าสถานะนี้ เพียงแค่ไม่ต้องส่งเหตุการณ์ไปยังเอฟเฟกต์การเลื่อนเกินในกรณีที่คุณไม่ต้องการให้แสดงการเลื่อนเกิน (เช่น หากScrollableState#canScrollForward/backwardทั้ง 2 รายการแสดงผลเป็นเท็จ) (I1a4b0, b/255554340, b/255557085) - เพิ่ม
ScrollableState#canScrollForwardและScrollableState#canScrollBackwardเพื่อสอบถามว่าScrollableStateมีพื้นที่ให้เลื่อนในทิศทางใดทิศทางหนึ่งหรือไม่ (ไม่ว่าจะอยู่ที่ค่าต่ำสุด / สูงสุดของช่วงหรือไม่) ค่าเริ่มต้นจะเป็นจริงเพื่อให้เข้ากันได้แบบย้อนหลังกับการติดตั้งใช้งานScrollableStateที่มีอยู่ ผู้ใช้สามารถใช้สิ่งนี้เพื่อแสดงให้ผู้ใช้เห็นว่ายังเลื่อนได้ และยังใช้เพื่อหลีกเลี่ยงการส่งเดลต้าไปยังScrollableStatesที่ไม่มีที่ว่างให้เลื่อนในทิศทางที่กำหนดได้ด้วย เพื่อลดการทำงานที่ไม่จำเป็น (Idf1a0, b/255557085) - เพิ่ม Modifier API เพื่อค้นหาข้อมูลการเลื่อนขององค์ประกอบระดับบน (I2ba9d, b/203141462)
- ใช้ใน
Clickableเพื่อหน่วงเวลาการโต้ตอบการกดอย่างถูกต้อง เมื่อท่าทางสัมผัสอาจกลายเป็นเหตุการณ์การเลื่อน - แก้ไขปัญหาที่
Clickablesไม่หน่วงการกระเพื่อมอย่างถูกต้องเมื่อใช้ภายในScrollable ViewGroup - อัปเดตลิ้นชักและชีตเพื่อหน่วงเวลาการกดอย่างถูกต้องในกรณีที่ท่าทางสัมผัสอาจกลายเป็นเหตุการณ์การเลื่อน
- อัปเดตการตั้งชื่อ
snapStepSizeให้สอดคล้องกับวิธีการอื่นๆ ในSnapLayoutInfoProvider(Ife67c) - เพิ่ม
EmojiCompatในCompose(Ibf6f9, b/139326806) - เปลี่ยนชื่อ
consumedWindowInsets()เป็นconsumeWindowInsets()และwithConsumedWindowInsets()เป็นonConsumedWindowInsetsChanged()รวมถึงเปิดตัวตัวแก้ไขต่อสาธารณะ (Ie44e1)
การแก้ไขข้อบกพร่อง
- แก้ไขข้อขัดข้องกับ
Modifier.animateItemPlacement()และ Lazy Grid แล้ว ปัญหานี้เกิดขึ้นในบางกรณีเมื่อจำนวนสินค้าใหม่น้อยกว่าจำนวนสินค้าก่อนหน้า (I0bcac, b/253195989)
เวอร์ชัน 1.4.0-alpha02
9 พฤศจิกายน 2022
androidx.compose.foundation:foundation:1.4.0-alpha02 และ androidx.compose.foundation:foundation-layout:1.4.0-alpha02 เปิดตัวแล้ว เวอร์ชัน 1.4.0-alpha02 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ตอนนี้
awaitFirstDownและwaitForUpOrCancellationยอมรับPointerEventPassเพื่อให้มีความยืดหยุ่นมากขึ้น (I7579a, b/212091796) - เปลี่ยน
beyondBoundCountAPI จาก Lazy* API กลับ (I12197) - เปิดตัวพารามิเตอร์ใน Lazy API เพื่อจัดวางและวางรายการนอกวิวพอร์ต (I69e89, b/172029355)
- เพิ่มพารามิเตอร์
minLinesลงในBasicTextและBasicTextFieldซึ่งช่วยให้ตั้งค่าความสูงขั้นต่ำของ Composable เหล่านี้ได้ในแง่ของ จำนวนบรรทัด (I24294, b/122476634)
เวอร์ชัน 1.4.0-alpha01
24 ตุลาคม 2022
androidx.compose.foundation:foundation:1.4.0-alpha01 และ androidx.compose.foundation:foundation-layout:1.4.0-alpha01 เปิดตัวแล้ว เวอร์ชัน 1.4.0-alpha01 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มวิธีการใหม่
awaitEachGesture()สำหรับเครื่องตรวจจับท่าทางสัมผัส ซึ่งทำงานคล้ายกับforEachGesture()แต่การวนซ้ำท่าทางจะทำงานภายในAwaitPointerEventScopeทั้งหมด ดังนั้นเหตุการณ์จึงไม่สูญหายระหว่างการวนซ้ำ - เราเลิกใช้งาน
forEachGesture()แล้วและหันมาใช้awaitEachGesture()แทน เนื่องจาก ช่วยให้ระบบไม่พลาดเหตุการณ์ที่เกิดขึ้นระหว่างท่าทางสัมผัส (Iffc3f, b/251260206) - เพิ่ม
WindowInsets.imeAnimationSource และWindowInsets.imeAnimationTargetเพื่อกำหนดความคืบหน้าของภาพเคลื่อนไหวและทราบว่า IME จะอยู่ที่ใดหลังจากภาพเคลื่อนไหวเสร็จสมบูรณ์ (I356f1, b/217770337)
เวอร์ชัน 1.3
เวอร์ชัน 1.3.1
9 พฤศจิกายน 2022
androidx.compose.foundation:foundation:1.3.1 และ androidx.compose.foundation:foundation-layout:1.3.1 เปิดตัวแล้ว เวอร์ชัน 1.3.1 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาด้านประสิทธิภาพใน
BeyondBoundsLayout(aosp/2255266) ContentInViewModifierจะไม่อ่านพิกัดเลย์เอาต์เว้นแต่จะแนบมาด้วย (aosp/2241316)
เวอร์ชัน 1.3.0
24 ตุลาคม 2022
androidx.compose.foundation:foundation:1.3.0 และ androidx.compose.foundation:foundation-layout:1.3.0 เปิดตัวแล้ว เวอร์ชัน 1.3.0 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลงสำคัญตั้งแต่เวอร์ชัน 1.2.0
- เปิดตัวเวอร์ชันทดลองของ
LazyVerticalStaggeredGridและLazyHorizontalStaggeredGrid SnapFlingBehavior,rememberSnapFlingBehaviorและ API อื่นๆ ที่เกี่ยวข้องได้รับการเพิ่มเป็นเวอร์ชันทดลอง- ตอนนี้
Modifier.clickable,Modifier.toggleableและModifier.selectableจะแสดงระลอกคลื่นหากคลิกด้วยแป้นพิมพ์หรือ D-pad บนรีโมตคอนโทรล
เวอร์ชัน 1.3.0-rc01
5 ตุลาคม 2022
androidx.compose.foundation:foundation:1.3.0-rc01 และ androidx.compose.foundation:foundation-layout:1.3.0-rc01 เปิดตัวแล้ว เวอร์ชัน 1.3.0-rc01 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- เปิดตัว
lowVelocityAnimationSpecที่ใช้โดยขั้นตอนการเข้าใกล้เมื่อความเร็วในการดีดไม่เพียงพอที่จะลดลง (Iaeb27) - เพิ่ม API ไฮเฟนทดลองใหม่เพื่อรองรับการใส่ไฮเฟนอัตโนมัติในข้อความ (Iaa869)
เวอร์ชัน 1.3.0-beta03
21 กันยายน 2022
androidx.compose.foundation:foundation:1.3.0-beta03 และ androidx.compose.foundation:foundation-layout:1.3.0-beta03 เปิดตัวแล้ว เวอร์ชัน 1.3.0-beta03 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มตัวเลือกเพื่อปรับแต่งการขึ้นบรรทัดใหม่ในข้อความ (I86907)
- ตอนนี้
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โรงงานด้วยคลาสSnapFlingBehaviorที่เฉพาะเจาะจงSnapLayoutInfoProviderเมธอดที่กำหนดขอบเขตให้กับความหนาแน่นเพื่อให้ผู้ใช้ API แปลง Dp<->Px ได้ง่ายขึ้น (I54a11) - อัปเดต
LazyLayoutMeasureScope.measureเพื่อแสดงรายการของวัตถุที่วางได้ โดยเน้นความคงที่ที่ต้องการของค่าที่แสดงผล (I48b7c) - เปิดตัว
SnapLayoutInfoProviderซึ่งใช้LazyListStateเพื่อสร้างอินสแตนซ์ของSnapLayoutInfoProviderที่ใช้เปิดใช้ SnapFlingBehaviorสำหรับLazyListsได้ (I2dd10)
การแก้ไขข้อบกพร่อง
- ปรับโครงสร้าง
AwaitPointerEventScope#awaitLongPressOrCancellationให้ตรงกับฟังก์ชัน await อื่นๆ (I646e6)
เวอร์ชัน 1.3.0-beta01
24 สิงหาคม 2022
androidx.compose.foundation:foundation:1.3.0-beta01 และ androidx.compose.foundation:foundation-layout:1.3.0-beta01 เปิดตัวแล้ว เวอร์ชัน 1.3.0-beta01 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- นำ
pointerPositionออกจากOverscrollEffect- เอฟเฟกต์ที่สนใจตำแหน่งเคอร์เซอร์สามารถใช้Modifier.pointerInput { }ในeffectModifierเพื่อรับตำแหน่งเคอร์เซอร์ปัจจุบันแทนได้ (I9f606, b/241239306) - เปิดเผย
AwaitPointerEventScope#awaitLongPressOrCancellationเป็นองค์ประกอบที่ใช้สร้างสรรค์เพิ่มเติมสำหรับการตรวจหาท่าทางสัมผัสที่ซับซ้อนยิ่งขึ้น (I04374, b/181577176) - เปิดตัว
lazyListSnapLayoutInfoProviderเพื่อเปิดใช้การสแนปใน Lazy List (I3ecdf) - เปิดตัว
SnapFlingBehaviorซึ่งเป็นลักษณะการปัดที่ช่วยให้รายการสแนปได้ ระบุอินสแตนซ์ของSnapLayoutInfoProviderพร้อมข้อมูลเกี่ยวกับเลย์เอาต์การสแนป (Ie754c)
เวอร์ชัน 1.3.0-alpha03
10 สิงหาคม 2022
androidx.compose.foundation:foundation:1.3.0-alpha03 และ androidx.compose.foundation:foundation-layout:1.3.0-alpha03 เปิดตัวแล้ว เวอร์ชัน 1.3.0-alpha03 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ตอนนี้แบบอักษรทรัพยากรรองรับการตั้งค่าตัวแปรแบบอักษร (API 26 ขึ้นไป) แล้ว (I900dd, b/143703328)
- การรองรับแบบอักษรที่ปรับแต่งได้ใน
DeviceFontFamilyNameFont(Ic1279, b/143703328) - นำคำอธิบายประกอบเวอร์ชันทดลองออกจาก
PlatformTextStyleและLineHeightStyleแล้ว (I64bef) - ตอนนี้ฟิลด์ข้อความจะแสดงข้อยกเว้นที่ละเอียดยิ่งขึ้นเมื่อ
OffsetMappingที่VisualTransformationระบุส่งคืนดัชนีที่ไม่ถูกต้อง (Ie73f9, b/229378536) - เปิดตัว API แบบทดลองเพื่อแชร์ตรรกะของผู้ให้บริการไอเทมระหว่างเลย์เอาต์แบบ Lazy (Ic891c)
ScrollableDefaults.reverseDirection()ไม่ใช่ฟีเจอร์ทดลองอีกต่อไป (Iba646)- เลิกใช้งาน
SemanticsModifier.idและย้ายรหัสความหมายไปที่LayoutInfo.semanticsIdแทน (Iac808, b/203559524) checkScrollableContainerConstraints()ไม่ใช่ฟีเจอร์ทดลองอีกต่อไป (I2c290)Modifier.clipScrollableContainer()ไม่ใช่ฟีเจอร์ทดลองอีกต่อไป (Ia2b44)- เลิกใช้งาน
TextInputService.show|hideSoftwareKeyboardโปรดใช้SoftwareKeyboardControllerในโค้ดแอปและTextInputSessionในโค้ดการจัดการ IME แทน (I14e4c, b/183448615)
เวอร์ชัน 1.3.0-alpha02
27 กรกฎาคม 2022
androidx.compose.foundation:foundation:1.3.0-alpha02 และ androidx.compose.foundation:foundation-layout:1.3.0-alpha02 เปิดตัวแล้ว เวอร์ชัน 1.3.0-alpha02 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มฟังก์ชันส่วนขยาย
drawTextในDrawScopeเพื่อให้วิธีวาดข้อความหลายรูปแบบใน Composable และตัวแก้ไขที่ทำงานในDrawScopeเช่นCanvasและdrawBehind(I16a62, b/190787898)
การแก้ไขข้อบกพร่อง
- ตอนนี้ระบบจะซ่อนแป้นพิมพ์เสมือนเมื่อปิดใช้ช่องข้อความขณะโฟกัส (I6e3e4, b/237308379)
- เมื่อเพิ่มเหตุการณ์
InputEventChangeลงใน Velocity Tracker เราจะพิจารณาเดลต้าแทนตำแหน่ง ซึ่งจะรับประกันว่าระบบจะคำนวณความเร็วได้อย่างถูกต้องในทุกกรณี แม้ว่าองค์ประกอบเป้าหมายจะเคลื่อนที่ (Icea9d, b/216582726, b/223440806, b/227709803) - ตอนนี้เมื่อองค์ประกอบที่เลื่อนได้มีองค์ประกอบย่อยที่โฟกัสอยู่ ระบบจะเลื่อนอย่างถูกต้องเพื่อให้องค์ประกอบย่อยที่โฟกัสอยู่แสดงในมุมมองเมื่อมีการลดขนาด แม้ว่าจะมีการเคลื่อนไหวขนาดก็ตาม (I80867, b/230756508, b/220119990)
- แก้ไขข้อขัดข้องที่เกิดขึ้นเมื่อล้างและเติม
TextFieldขณะที่การเลือกใช้งานอยู่ (I1235b, b/208655565, b/214253689)
เวอร์ชัน 1.3.0-alpha01
29 มิถุนายน 2022
androidx.compose.foundation:foundation:1.3.0-alpha01 และ androidx.compose.foundation:foundation-layout:1.3.0-alpha01 เปิดตัวแล้ว เวอร์ชัน 1.3.0-alpha01 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เปิดตัว
UrlAnnotationประเภทคำอธิบายประกอบและเมธอดที่เกี่ยวข้องเพื่อรองรับTalkBackการรองรับลิงก์ในAnnotatedString(I1c754, b/231495122)
การแก้ไขข้อบกพร่อง
BasicTextFieldcursorBrushสามารถเคลื่อนไหวได้แล้วโดยไม่ต้องรีสตาร์ทตัวจับเวลาเคอร์เซอร์ (I812e6, b/236383522)
เวอร์ชัน 1.2
เวอร์ชัน 1.2.1
10 สิงหาคม 2022
androidx.compose.foundation:foundation:1.2.1 และ androidx.compose.foundation:foundation-layout:1.2.1 เปิดตัวแล้ว เวอร์ชัน 1.2.1 มีคอมมิตต่อไปนี้
เวอร์ชัน 1.2.0
27 กรกฎาคม 2022
androidx.compose.foundation:foundation:1.2.0 และ androidx.compose.foundation:foundation-layout:1.2.0 เปิดตัวแล้ว เวอร์ชัน 1.2.0 มีคอมมิตเหล่านี้
การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 1.1.0
- ตอนนี้
LazyVerticalGridและLazyHorizontalGridเสถียรแล้ว - ตอนนี้คุณระบุประเภทเนื้อหาสำหรับรายการในรายการและตารางแบบ Lazy ได้แล้ว ซึ่งจะช่วยให้คอมโพเนนต์นำองค์ประกอบกลับมาใช้ซ้ำได้อย่างมีประสิทธิภาพมากขึ้น
- ตอนนี้รายการและตารางแบบเลซี่มีพารามิเตอร์
userScrollEnabledซึ่งช่วยให้ปิดใช้การเลื่อนผ่านท่าทางของผู้ใช้ได้ - เพิ่ม API เวอร์ชันทดลองใหม่ชื่อ
LazyLayoutซึ่งเป็น API ที่เราใช้ภายในเพื่อขับเคลื่อนรายการและตารางแบบ Lazy OverscrollEffectเราได้เปิดตัว API ในเวอร์ชันทดลอง คุณสามารถกำหนดเอฟเฟกต์การเลื่อนเกินที่กำหนดเอง รวมถึงเพิ่มเอฟเฟกต์แพลตฟอร์มมาตรฐานลงในคอนเทนเนอร์ที่เลื่อนได้ที่กำหนดเอง- เราได้เปิดตัว API ความสามารถในการทำงานร่วมกันของการเลื่อนที่ซ้อนกันเพื่อให้สามารถทำงานร่วมกันระหว่างมุมมองและนักแสดงการเลื่อนของ Compose
- เราได้เพิ่มการเลื่อนด้วยเมาส์และแทร็กแพดลงในคอนเทนเนอร์ที่เลื่อนได้ทั้งหมด
เวอร์ชัน 1.2.0-rc03
29 มิถุนายน 2022
androidx.compose.foundation:foundation:1.2.0-rc03 และ androidx.compose.foundation:foundation-layout:1.2.0-rc03 เปิดตัวแล้ว เวอร์ชัน 1.2.0-rc03 มีคอมมิตต่อไปนี้
- ไม่มีการเปลี่ยนแปลงตั้งแต่ 1.2.0-rc02
เวอร์ชัน 1.2.0-rc02
22 มิถุนายน 2022
androidx.compose.foundation:foundation:1.2.0-rc02 และ androidx.compose.foundation:foundation-layout:1.2.0-rc02 เปิดตัวแล้ว เวอร์ชัน 1.2.0-rc02 มีคอมมิตต่อไปนี้
เวอร์ชัน 1.2.0-rc01
15 มิถุนายน 2022
androidx.compose.foundation:foundation:1.2.0-rc01 และ androidx.compose.foundation:foundation-layout:1.2.0-rc01 เปิดตัวแล้ว เวอร์ชัน 1.2.0-rc01 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เราได้เปิดตัว
OverscrollEffectเวอร์ชันทดลองเพื่ออนุญาตให้ใช้เอฟเฟกต์การเลื่อนเกินแบบกำหนดเองควบคู่ไปกับโอเวอร์โหลดModifier.scrollableที่ยอมรับเอฟเฟกต์ดังกล่าว LocalOverScrollConfigurationเวอร์ชันทดลองได้ย้ายจากfoundation.gestureไปยังแพ็กเกจพื้นฐานและเปลี่ยนชื่อเป็นLocalOverscrollConfiguration(If19fb, b/204650733)- ตอนนี้อินเทอร์เฟซในไลบรารี Compose สร้างขึ้นโดยใช้เมธอดอินเทอร์เฟซเริ่มต้นของ jdk8 (I5bcf1)
- เปิดตัว API เวอร์ชันทดลอง
checkScrollableContainerConstraints()ซึ่งช่วยให้ตรวจสอบได้ว่าเราไม่ได้ซ้อนคอนเทนเนอร์ที่เลื่อนได้ คุณสามารถใช้ฟีเจอร์นี้เมื่อสร้างเลย์เอาต์แบบเลื่อนได้ที่โหลดแบบ Lazy ของคุณเองผ่านLazyLayout(Id6fab, b/233352497) - นำ
LazyVerticalGridที่เลิกใช้งานแล้วออกจากแพ็กเกจandroidx.compose.foundation.lazyAPI ใหม่ที่เสถียรจะอยู่ในandroidx.compose.foundation.lazy.grid(I73c76, b/225192009)
เวอร์ชัน 1.2.0-beta03
1 มิถุนายน 2022
androidx.compose.foundation:foundation:1.2.0-beta03 และ androidx.compose.foundation:foundation-layout:1.2.0-beta03 เปิดตัวแล้ว เวอร์ชัน 1.2.0-beta03 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม
IntervalListและMutableIntervalListเวอร์ชันทดลองใหม่ ซึ่งช่วยให้แสดงรายการค่าบางอย่างผ่านช่วงเวลาหลายช่วงได้ ซึ่งจะมีประโยชน์เมื่อคุณต้องการกำหนด DSL ของคุณเองที่คล้ายกับ DSL ที่ใช้โดยLazyColumnซึ่งกำหนดรายการได้ผ่านการเรียกใช้ item/items หลายครั้ง (I2d05e, b/228580728)
การแก้ไขข้อบกพร่อง
- ชี้แจงเอกสารประกอบสำหรับ
WindowInsets.imeเพื่อระบุว่าระบบจะรายงานระยะขอบimeย้อนกลับไปจนถึง API 23 แต่จะเคลื่อนไหวได้เฉพาะใน API 30 ขึ้นไป (Ia7fc0, b/230756508) - การกดปุ่มลบไปข้างหน้าเมื่อเคอร์เซอร์อยู่ที่ท้ายช่องข้อความจะไม่ทำให้เกิดข้อขัดข้องอีกต่อไป
DeleteSurroundingTextCommandและDeleteSurroundingTextInCodePointsCommandกำหนดให้อาร์กิวเมนต์ของตัวสร้างต้องไม่เป็นลบ (Ica8e6, b/199919707)
เวอร์ชัน 1.2.0-beta02
18 พฤษภาคม 2022
androidx.compose.foundation:foundation:1.2.0-beta02 และ androidx.compose.foundation:foundation-layout:1.2.0-beta02 เปิดตัวแล้ว เวอร์ชัน 1.2.0-beta02 มีคอมมิตเหล่านี้
- ความละเอียดของแบบอักษรที่ดาวน์โหลดได้ซึ่งไม่เปลี่ยนขนาดเลย์เอาต์ของข้อความหรือ
TextFieldก่อนหน้านี้จะไม่วาดใหม่ ซึ่งส่งผลให้แบบอักษรแสดงผลไม่ถูกต้อง การแก้ไขข้อบกพร่องนี้ช่วยให้มั่นใจได้ว่าเลย์เอาต์ข้อความจะทริกเกอร์การวาดใหม่เสมอ (b/229727404) (I1d49e, b/229727404)
เวอร์ชัน 1.2.0-beta01
11 พฤษภาคม 2022
androidx.compose.foundation:foundation:1.2.0-beta01 และ androidx.compose.foundation:foundation-layout:1.2.0-beta01 เปิดตัวแล้ว เวอร์ชัน 1.2.0-beta01 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- นี่คือเวอร์ชันเบต้า 1.2 รุ่นแรก
การเปลี่ยนแปลง API
- เพิ่ม
BeyondBoundsIntervalเวอร์ชันทดลองที่สามารถใช้ โดยการติดตั้งใช้งานLazyListที่กำหนดเองเมื่อจัดวางรายการนอกขอบเขตที่มองเห็นได้ (Ifabfb, b/184670295) LineHeightBehaviorเปลี่ยนชื่อเป็นLineHeightStyleLineVerticalAlignmentเปลี่ยนชื่อเป็นLineHeightStyle.Alignment- เปลี่ยนชื่อ
LineHeightTrimเป็นLineHeightStyle.Trim - นำค่าเริ่มต้นของตัวสร้างจาก
LineHeightStyleออกแล้ว (I582bf, b/181155707) - เพิ่มค่าเริ่มต้นสำหรับสมาชิกที่ไม่บังคับของอินเทอร์เฟซ
LazyLayoutItemProvider(Iba8a0) - ใน
LazyLayoutItemProviderAPI แทนที่จะให้ Factory ส่งคืน Lambda ที่ประกอบได้ตามดัชนี ตอนนี้เรามีฟังก์ชันที่ประกอบกันได้ที่ง่ายกว่าเดิมคือ Item ซึ่งยอมรับดัชนี (Id2196) - เปลี่ยนชื่อ LazyLayoutItemsProvider เป็น LazyLayoutItemProvider (I0638c)
LazyLayoutItemsProvider.itemsCountเปลี่ยนชื่อเป็นitemCount(Id409c)- เพิ่มแปรงใน
TextStyleและSpanStyleเพื่อให้วาดข้อความด้วยการไล่สีได้ (I53869, b/187839528) - แอตทริบิวต์
trimFirstLineTop,trimLastLineBottomของLineHeightBehaviorเปลี่ยนเป็น Enum เดียว:LineHeightTrimLineHeightTrimมีค่า 4 สถานะที่กำหนดโดยบูลีน 2 รายการFirstLineTop,LastLineBottom, ทั้งคู่ และไม่มี (Ifc6a5, b/181155707) เพิ่ม
LineHeightBehaviorลงในตัวควบคุมTextStyleและParagraphStyle. LineHeightBehaviorเพื่อกำหนดว่าจะใช้ความสูงของบรรทัดกับด้านบนของบรรทัดแรกและด้านล่างของบรรทัดสุดท้ายหรือไม่ นอกจากนี้ยังกำหนดการจัดแนวบรรทัดในช่องว่างที่TextStyle(lineHeight) จัดไว้ให้ด้วยเช่น คุณสามารถรับลักษณะการทำงานที่คล้ายกับที่ CSS กำหนดผ่าน
LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false)การกำหนดค่า
trimFirstLineTop,trimLastLineBottomจะทำงานอย่างถูกต้อง เมื่อincludeFontPaddingเป็นเท็จเท่านั้น (I97332, b/181155707)เพิ่มตัวแก้ไข
imeNestedScroll()เวอร์ชันทดลองเพื่อให้ผู้พัฒนาควบคุม IME ผ่านการเลื่อนได้ (I60759)
การแก้ไขข้อบกพร่อง
- แก้ไขการถดถอยที่ช่องข้อความจะไม่ซ่อนแป้นพิมพ์เมื่อนำออกจากคอมโพสิชันขณะโฟกัส (I7a410, b/230536793, b/225541817)
- รองรับจุดไข่ปลาเมื่อความสูงจำกัดและไม่พอดีกับข้อความทุกบรรทัด (Ie528c, b/168720622)
BringIntoViewRequester.bringIntoViewจะระงับเสมอจนกว่าคำขอจะเสร็จสมบูรณ์หรือถูกขัดจังหวะด้วยคำขอใหม่กว่าซึ่งไม่ทับซ้อนกัน ระบบจะจัดคิวคำขอที่ซ้อนทับกัน (I43e7f, b/216790855)- ตอนนี้การเรียกใช้
BringIntoViewRequester.bringIntoViewพร้อมกันสำหรับสี่เหลี่ยมผืนผ้าที่ทับซ้อนกันโดยสมบูรณ์จะพิจารณาเฉพาะคำขอของสี่เหลี่ยมผืนผ้าที่ใหญ่กว่า (I34be7, b/216790855, b/184760918) - เปิดโดยค่าเริ่มต้น
includeFontPaddingคุณปิดincludeFontPaddingได้โดยใช้แอตทริบิวต์TextStyle.platformTextStyleในอนาคตอันใกล้นี้ เราจะเปลี่ยนลักษณะการทำงานเริ่มต้น แต่ในระหว่างนี้ การดำเนินการนี้จะช่วยให้เราผสานรวมการปรับปรุงความสูงของบรรทัด (aosp/2058653) ได้ดียิ่งขึ้น และแก้ปัญหาการตัดTextFieldได้ (I01423, b/171394808) Modifier.bringIntoViewRequesterไม่ได้ใช้onGloballyPositionedอีกต่อไป (I630f5)
การมีส่วนร่วมภายนอก
MouseInjectionScope.scroll(delta = someDelta)จะกลับด้านใน Android เมื่อเลื่อนในแนวตั้ง (หาก someDelta เป็นบวก ระบบจะเลื่อนลง) (Ifb697, b/224992993)
เวอร์ชัน 1.2.0-alpha08
20 เมษายน 2022
androidx.compose.foundation:foundation:1.2.0-alpha08 และ androidx.compose.foundation:foundation-layout:1.2.0-alpha08 เปิดตัวแล้ว เวอร์ชัน 1.2.0-alpha08 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- แสดงความหนาทั้งหมดที่มีสำหรับแบบอักษรของระบบใน Android เมื่อใช้
FontFamily.SansSerifซึ่งจะใช้ชื่อแบบอักษรสำรอง เช่น sans-serif-medium ภายใน API 21-28 นี่เป็นการเปลี่ยนแปลงลักษณะการทำงาน เนื่องจากก่อนหน้านี้ API 21-28 รองรับเฉพาะน้ำหนัก 400 และ 700 (I380fe, b/156048036, b/226441992) - ตอนนี้ Paragraph และ MultiParagraph รองรับพารามิเตอร์ Constraints แล้ว การส่ง
Constraints.maxHeightจะไม่มีผลในตอนนี้ แต่จะช่วยให้ ทำการคำนวณบางอย่างได้ในอนาคต เช่น การย่อข้อความตามความสูง (I6afee, b/168720622) SubcomposeSlotReusePolicy.getSlotsToRetain()ตอนนี้ยอมรับคลาสที่กำหนดเองซึ่งคล้ายกับ MutableSet ซึ่งไม่อนุญาตให้เพิ่มรายการใหม่ในคลาส (Icd314)PointerInputChangeเลิกใช้งานการดูบางส่วน (ลงหรือตำแหน่ง) แล้ว คุณใช้consume()เพื่อใช้การเปลี่ยนแปลงให้เสร็จสมบูรณ์ได้ คุณใช้isConsumedเพื่อพิจารณาว่ามีบุคคลอื่นใช้การเปลี่ยนแปลงไปก่อนหน้านี้หรือไม่PointerInputChange::copy()จะสร้างสำเนาแบบตื้นเสมอ ซึ่งหมายความว่าระบบจะใช้สำเนาของPointerInputChangeเมื่อมีการใช้สำเนาใดสำเนาหนึ่ง หากต้องการสร้างPointerInputChangeที่ไม่มีขอบเขต ให้ใช้เครื่องมือสร้างแทน (Ie6be4, b/225669674)- เปิดตัว
LazyLayoutAPI เวอร์ชันทดลองใหม่ ซึ่งจะช่วยให้คุณสร้างคอมโพเนนต์ของคุณเองได้ เช่นLazyColumnของLazyVerticalGridโปรดทราบว่า API อยู่ในช่วงเริ่มต้นและอาจมีการเปลี่ยนแปลงในรุ่นต่อๆ ไป (Iba2bc, b/166591700) - ตอนนี้
AndroidFontใช้typefaceLoaderเป็นพารามิเตอร์ของตัวสร้าง (I2c971) WindowInsetsอุปกรณ์ที่ใช้ร่วมกัน ตอนนี้จะแสดงระดับการมองเห็น (ไม่ว่าจะอยู่บนหน้าจอหรือไม่ ไม่ว่าจะมีส่วนทับซ้อนกับหน้าต่างหรือไม่) และขนาดที่อาจเป็นได้หากพร้อมใช้งานในอุปกรณ์ แต่ไม่ได้ใช้งานอยู่ในปัจจุบัน (I65182, b/217770337)
เวอร์ชัน 1.2.0-alpha07
6 เมษายน 2022
androidx.compose.foundation:foundation:1.2.0-alpha07 และ androidx.compose.foundation:foundation-layout:1.2.0-alpha07 เปิดตัวแล้ว เวอร์ชัน 1.2.0-alpha07 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม
PinnableParentAPI ที่อนุญาตให้องค์ประกอบย่อยของเลย์เอาต์แบบ Lazy ป้องกันไม่ให้ระบบทิ้งรายการที่คอมโพสอยู่ในปัจจุบัน (Ibbdd0, b/184670295) - ตอนนี้
LazyListLayoutInfoและLazyGridLayoutInfoมีช่องbeforeContentPaddingและafterContentPaddingแล้ว (I3b628, b/200920410) - เพิ่ม
KeyboardType.Decimalเป็นทางเลือกแทนKeyboard.Numberเพื่อรวมตัวคั่นทศนิยมใน IME โดยเฉพาะ (Iec4c8, b/209835363) - เพิ่มตัวอธิบายแบบอักษรใหม่ Font(DeviceFontFamilyName) เพื่อ ค้นหาแบบอักษรที่ติดตั้งในระบบโดยไม่บังคับในระหว่างเชนการแทนที่แบบอักษร (I30468, b/219754572)
PointerEventType.ScrollและPointerEvent.scrollDeltaเป็น API ที่เสถียรแล้ว (I574c5, b/225669674)- เพิ่มการกำหนดค่าความเข้ากันได้ชั่วคราวสำหรับ
includeFontPaddingในTextStyle/ParagraphStyle. includeFontPaddingซึ่งสามารถเปลี่ยนแปลงได้ผ่านTextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false))นี่เป็นตัวเลือกการกำหนดค่าชั่วคราวเพื่อเปิดใช้การย้ายข้อมูลและจะถูกนำออก (If47be, b/171394808) - อัปเดต
FontFamily.Resolverเพื่อผสานรวมการตั้งค่าการช่วยเหลือพิเศษสำหรับข้อความตัวหนาทั้งระบบ (I6c1e7) - พร็อพเพอร์ตี้ส่วนขยาย
consumeWindowInsetsของComposeViewช่วยให้นักพัฒนาแอปปิดใช้การใช้ Android WindowInsets ได้ ซึ่งช่วยให้ComposeViewsแยกกันในลำดับชั้นใช้WindowInsetsได้โดยไม่รบกวนกัน (I0ef08, b/220943142)
เวอร์ชัน 1.2.0-alpha06
23 มีนาคม 2022
androidx.compose.foundation:foundation:1.2.0-alpha06 และ androidx.compose.foundation:foundation-layout:1.2.0-alpha06 เปิดตัวแล้ว เวอร์ชัน 1.2.0-alpha06 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- เพิ่มการดำเนินการทางความหมาย
RequestFocusเพื่อขอให้โฟกัสที่เป้าหมายที่โฟกัสได้ (I17b71) - ตอนนี้เราได้รวม
FocusOrderเข้ากับFocusPropertiesแล้ว และfocusProperties()ก็มีความสามารถทั้งหมดของfocusOrder()แล้วFocusOrderและfocusOrder()เลิกใช้งานแล้วfocusOrder()ที่ยอมรับfocusRequesterควรแทนที่ด้วยตัวแก้ไขfocusRequester()ร่วมกับfocusProperties()ซึ่งช่วยให้ตัวแก้ไขแยกความกังวลได้ชัดเจนยิ่งขึ้น (I601b7) WindowInsets.asPaddingValues(Density)ได้รับการเพิ่มเพื่อให้ผู้พัฒนาสามารถทำการแปลงได้โดยไม่ต้องอยู่ในองค์ประกอบ (I94c35)- อัปเดตการแยกวิเคราะห์ Vector Drawable เพื่อรองรับการมิเรอร์อัตโนมัติเพื่อพลิกเนื้อหาของ
VectorPainterหากเลย์เอาต์ปัจจุบัน เป็นแบบ RTL (I79cd9, b/185760237)
การแก้ไขข้อบกพร่อง
- ตอนนี้ตัวปรับแต่งการเลื่อน (
Modifier.verticalScroll(),Modifier.horizontalScroll()และModifier.scrollable()) จะเลื่อนเพื่อให้ Composable ที่โฟกัสยังคงมองเห็นได้หากมีการปรับขนาดพื้นที่เลื่อนและ Composable ที่โฟกัสเคยปรากฏให้เห็นก่อนหน้านี้ - ตอนนี้ระบบจะเก็บ TextField ไว้เหนือแป้นพิมพ์เมื่อมีการโฟกัสและแสดงแป้นพิมพ์ เมื่ออยู่ภายในรายการที่เลื่อนได้แบบไม่เลซีและโหมดป้อนข้อมูลแบบนุ่มเป็น
ADJUST_RESIZE(I4a485, b/190539358, b/192043120, b/216842427)
เวอร์ชัน 1.2.0-alpha05
9 มีนาคม 2022
androidx.compose.foundation:foundation:1.2.0-alpha05 และ androidx.compose.foundation:foundation-layout:1.2.0-alpha05 เปิดตัวแล้ว เวอร์ชัน 1.2.0-alpha05 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- ตอนนี้
LazyVerticalGridและLazyHorizontalGridเสถียรแล้ว (I307c0) LazyGridItemInfo.Unknownถูกแทนที่ด้วยLazyGridItemInfo.UnknownRowและLazyGridItemInfo.UnknownColumnแยกกัน (I56d51)LazyVerticalGrid/LazyHorizontalGridและ API ที่เกี่ยวข้องทั้งหมดถูกย้ายไปไว้ในแพ็กเกจย่อย.gridโปรดอัปเดตการนำเข้าจากandroidx.compose.foundation.lazyเป็นandroidx.compose.foundation.lazy.grid(I2d446, b/219942574)- ข้อความ:
includeFontPaddingจะปิดอยู่โดยค่าเริ่มต้น เราได้includeFontPadding=falseจัดการปัญหาการตัด แล้ว และไม่ควรมีการตัดสคริปต์ที่ยาว (I31c84, b/171394808) - ตอนนี้อินเทอร์เฟซที่วัดผลได้จะแสดงพร็อพเพอร์ตี้ parentData (I3313f)
- เปิดตัวฟีเจอร์ทดลอง
Modifier.onFocusedBoundsChangedเพื่ออนุญาต การสังเกตขอบเขตขององค์ประกอบที่โฟกัสได้ขององค์ประกอบย่อย (I14283, b/220030968, b/190539358, b/192043120, b/216842427) - เพิ่ม LazyHorizontalGrid แล้ว (I61ae7, b/191238807)
- เพิ่ม
LazyVerticalGridAPI ใหม่เพื่อกำหนดขนาดแกนไขว้ (I17723) - เพิ่มตัวแก้ไข FocusGroup (I64bc0, b/213508274, b/184670295)
การแก้ไขข้อบกพร่อง
WindowInsets.toString()จะแสดงค่าที่ถูกต้องแล้วในตอนนี้ (I1585d)
การมีส่วนร่วมภายนอก
- อัปเดตให้ใช้ Kotlinx coroutines 1.6.0 (I3366d)
เวอร์ชัน 1.2.0-alpha04
23 กุมภาพันธ์ 2022
androidx.compose.foundation:foundation:1.2.0-alpha04 และ androidx.compose.foundation:foundation-layout:1.2.0-alpha04 เปิดตัวแล้ว เวอร์ชัน 1.2.0-alpha04 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
BringIntoViewRespondersไม่จำเป็นต้องส่งคำขอไปยังผู้ตอบกลับที่เป็นผู้ปกครองด้วยตนเองอีกต่อไป แต่จะต้องส่งคืนสี่เหลี่ยมผืนผ้าที่ต้องการให้ผู้ปกครองนำเข้ามาในมุมมองทันทีแทน (I8e66a)- รองรับการโหลดแบบอักษรแบบไม่พร้อมกันในข้อความ (I77057, b/214587005)
LazyVerticalGridรองรับline breakingก่อนรายการที่มีช่วงไม่พอดีกับบรรทัดปัจจุบันแล้ว (I05c40, b/207462103)- เปลี่ยนชื่อ
excludeFromSystemGesturesเป็นsystemGesturesExclusion(I19526) - ตอนนี้
LazyVerticalGridรองรับ reverseLayout แล้ว (I6d7d7, b/215572963, b/211753558) - เพิ่ม
WindowInsets.only()method เพื่ออนุญาตให้นักพัฒนาแอป รวมเฉพาะมิติข้อมูลจาก WindowInsets (I14c94, b/217768486) เพิ่ม
ComposableTarget,ComposableTargetMarkerและComposableOpenTargetที่ช่วยให้รายงานเวลาคอมไพล์ได้เมื่อ มีการเรียกใช้ฟังก์ชันที่ประกอบกันได้ซึ่งกำหนดเป้าหมายไปยัง Applier ที่ไม่ได้ ออกแบบมาให้ใช้ในกรณีส่วนใหญ่ ปลั๊กอินคอมไพเลอร์ Compose จะอนุมานคำอธิบายประกอบได้ ดังนั้นการใช้คำอธิบายประกอบเหล่านี้โดยตรงจึงไม่ค่อยเกิดขึ้น กรณีที่อนุมานไม่ได้ ได้แก่ การสร้างและ การใช้ Applier ที่กำหนดเอง ฟังก์ชันที่ประกอบกันได้แบบแอบสแตรก (เช่น เมธอดอินเทอร์เฟซ) ฟิลด์ หรือตัวแปรส่วนกลางที่เป็น แลมบ์ดาที่ประกอบกันได้ (ระบบจะอนุมานตัวแปรและพารามิเตอร์ในเครื่อง) หรือ เมื่อใช้
ComposeNodeหรือฟังก์ชันที่ประกอบกันได้ที่เกี่ยวข้องสำหรับตัวใช้ที่กำหนดเอง ฟังก์ชันที่ประกอบกันได้ซึ่งเรียกใช้
ComposeNodeหรือReusableComposeNodeต้องเพิ่ม คำอธิบายประกอบCompoableTargetสำหรับฟังก์ชันและประเภทพารามิเตอร์แลมบ์ดาที่ประกอบกันได้ อย่างไรก็ตาม เราขอแนะนำ ให้สร้างคำอธิบายประกอบที่มีคำอธิบายประกอบเป็นComposableTargetMarkerแล้วใช้คำอธิบายประกอบที่ทำเครื่องหมาย แทนComposableTargetโดยตรง คำอธิบายประกอบที่สามารถเขียนร่วมกันได้ ซึ่งทำเครื่องหมายด้วยComposableTargetMarkerจะเทียบเท่ากับComposbleTargetที่มีชื่อที่สมบูรณ์ในตัวเองของแอตทริบิวต์ คลาสเป็นพารามิเตอร์ของแอปพลิเคชัน ดูตัวอย่างการใช้ComposableTargetMarkerได้ที่anroidx.compose.ui.UiComposable(I38f11)
การแก้ไขข้อบกพร่อง
- ตอนนี้อนุญาตให้ส่งออฟเซ็ตการเลื่อนเชิงลบไปยัง
LazyGridState.scrollToItem()และLazyGridState.animateScrollToItem()แล้ว (I025c6, b/211753558) - รองรับการโหลดแบบอักษรแบบไม่พร้อมกันสำหรับ TextField (Icc4bf, b/214587005)
เวอร์ชัน 1.2.0-alpha03
9 กุมภาพันธ์ 2022
androidx.compose.foundation:foundation:1.2.0-alpha03 และ androidx.compose.foundation:foundation-layout:1.2.0-alpha03 เปิดตัวแล้ว เวอร์ชัน 1.2.0-alpha03 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- ตอนนี้เราเลิกใช้งานเมธอด
notifyFocusedRectในTextInputSessionและTextInputServiceแล้ว และจะไม่เรียกใช้เมธอดดังกล่าว โปรดใช้BringIntoViewRequesterแทน (Ia4302, b/192043120, b/216842427, b/178211874) - เปิดใช้ภาพเคลื่อนไหวสำหรับรายการของ Lazy Grid ด้วย Modifier.animateItemPlacement() (Ib6621, b/211753218)
BringIntoViewRequesterจะส่งต่อคำขอไปยัง Android View ที่โฮสต์ (Ia7a51)FontFamilyResolverพร้อมให้บริการแล้วผ่านLocalFontFamilyResolver.current- เพิ่ม
createFontFamilyResolver(context)และcreateFontFamilyResolver(context, coroutineScope)เพื่อสร้างตัวแก้ไข FontFamily ใหม่นอกการใช้งาน Compose - ตอนนี้ Paragraph และ MultiParagraph ใช้
FontFamily.Resolver - ตอนนี้
TextLayoutResult.layoutInput.fontFamilyResolverมี รีโซลเวอร์ที่ใช้สำหรับเลย์เอาต์นี้ ซึ่งเลิกใช้งานTextLayoutResult.layoutInput.resourceLoaderแล้วเนื่องจากไม่มีการใช้งานอีกต่อไป (Id5a45, b/174162090)
- เพิ่ม
- เพิ่ม
AndroidFontซึ่งเป็น API ระดับต่ำตัวใหม่สำหรับระบุตัวอธิบายทรัพยากรแบบอักษรประเภทใหม่ ใน Android เช่น การโหลดแบบอักษรจาก แบ็กเอนด์เฉพาะแอป การค้นหาแบบอักษรที่ติดตั้งไว้ล่วงหน้า ในอุปกรณ์ หรือการโหลดแบบอักษรจากทรัพยากรที่ไม่ได้มาจาก โรงงานแบบอักษรปัจจุบัน- ขยาย
Font.ResourceLoadedAPI เพื่อรองรับการโหลดแบบไม่พร้อมกันและแบบไม่บังคับ ของแบบอักษร ไม่แนะนำให้นักพัฒนาแอปพลิเคชันใช้ API นี้โดยตรง หากต้องการเพิ่มแบบอักษรประเภทใหม่ โปรดดู AndroidFont - ฟังก์ชันส่วนขยาย
Font.AndroidResourceLoaderอนุญาต การสร้างFont.ResourceLoaderเมื่ออยู่นอกการจัดองค์ประกอบ - เพิ่มพารามิเตอร์
loadingStrategyลงในแบบอักษรที่อิงตามทรัพยากรเพื่อให้โหลดแบบไม่พร้อมกันได้เมื่อ XML แบบอักษรที่ดาวน์โหลดได้อ้างอิงแบบอักษรทรัพยากร (Ie5aea, b/174162090)
- ขยาย
- เลิกใช้งานตัวสร้าง
Typeface(FontFamily)แล้ว ก่อนหน้านี้ใช้เพื่อโหลดแบบอักษรไว้ล่วงหน้า ซึ่งอาจใช้เวลาสูงสุด 10 วินาทีสำหรับ แบบอักษรที่ดาวน์โหลดได้ หากใช้แบบอักษรที่ดาวน์โหลดได้ การเรียกนี้อาจถูกบล็อกเป็นเวลา 10 วินาที ให้ใช้FontFamilyResolver.preloadแทนfontResource(FontFamily): Typefaceเลิกใช้งานแล้ว ก่อนหน้านี้ใช้เพื่อโหลดแบบอักษรไว้ล่วงหน้า ซึ่งอาจใช้เวลาสูงสุด 10 วินาทีสำหรับ แบบอักษรที่ดาวน์โหลดได้ แต่ให้ใช้FontFamilyResolver.preload(If8e7c, b/174162090) แทน
- ตอนนี้คุณระบุประเภทเนื้อหาสำหรับรายการของฟังก์ชัน
LazyVerticalGrid- item/items ได้แล้ว โดยตอนนี้LazyGridScopeยอมรับพารามิเตอร์ดังกล่าวแล้ว การให้ข้อมูลดังกล่าวจะช่วยให้ตรรกะการนำองค์ประกอบของสินค้ากลับมาใช้ซ้ำมีประสิทธิภาพมากขึ้น และนำเนื้อหาระหว่างสินค้าประเภทเดียวกันกลับมาใช้ซ้ำเท่านั้น (I7b355, b/215372836) LazyListLayoutInfoและLazyGridLayoutInfoมีพร็อพเพอร์ตี้ใหม่แล้ว ได้แก่viewportSize,orientation,reverseLayout(Ifc8ed, b/200920410)- ตอนนี้คุณระบุประเภทเนื้อหาสำหรับรายการของฟังก์ชัน LazyColumn/LazyRow - item/items ใน LazyListScope ได้แล้ว เนื่องจากตอนนี้ฟังก์ชันดังกล่าวยอมรับพารามิเตอร์ดังกล่าวแล้ว การให้ข้อมูลดังกล่าวจะช่วยให้ตรรกะการนำองค์ประกอบของสินค้ากลับมาใช้ซ้ำมีประสิทธิภาพมากขึ้น และนำเนื้อหาระหว่างสินค้าประเภทเดียวกันกลับมาใช้ซ้ำเท่านั้น (I26506)
- ตอนนี้เราเลิกใช้งานตัวสร้าง
SubcomposeLayoutStateที่ยอมรับmaxSlotsToRetainForReuseแล้ว แต่เรามีตัวสร้างใหม่ที่รับSubcomposeSlotReusePolicyซึ่งเป็นอินเทอร์เฟซใหม่ที่ช่วยให้ควบคุมได้อย่างละเอียดยิ่งขึ้นว่าจะเก็บช่องใดไว้เพื่อนำกลับมาใช้ใหม่ในอนาคต (I52c4d) - เพิ่มตัวแก้ไขสำหรับ WindowInsets ทั้งสำหรับการเว้นวรรค และการปรับขนาด ซึ่งจะช่วยให้เนื้อหาบางส่วนขยายไปยังส่วนที่เว้นไว้ และยังคงมีเนื้อหาหลักอยู่นอกส่วนที่เว้นไว้ เช่น คุณสามารถใช้ windowInsetsPadding เพื่อเพิ่มระยะขอบให้กับพื้นที่เนื้อหา เพื่อหลีกเลี่ยงพื้นที่ที่อาจถูกบดบังบางส่วนหรือทั้งหมด (Id0395, b/213942085)
การแก้ไขข้อบกพร่อง
- ตอนนี้ TextField จะอยู่เหนือแป้นพิมพ์เมื่อมีการโฟกัสและแสดงแป้นพิมพ์เมื่อโหมดป้อนข้อมูลแบบนุ่มเป็น
ADJUST_PAN(I8eaeb, b/190539358, b/192043120) - เดสก์ท็อปใช้ Composition Local สำหรับ
FontFamily.Resolver- เลิกใช้งานเดสก์ท็อป
FontLoaderแล้ว createFontFamilyResolverใหม่ในเดสก์ท็อป (I6bbbb, b/174162090)
- เลิกใช้งานเดสก์ท็อป
- ประเภทการป้อนข้อมูลของแป้นพิมพ์เสมือนจะไม่กะพริบอีกต่อไปเมื่อเปลี่ยน โฟกัสระหว่างช่องข้อความ (I1bf50, b/187746439)
- ช่องข้อความไม่จำเป็นต้องกดปุ่มย้อนกลับอีกครั้งเมื่อ แฮนเดิลเคอร์เซอร์แสดงอยู่ (Ideb4b, b/205726883)
- เราได้ปรับปรุงลักษณะการทำงานของแว่นขยายการเลือกข้อความให้ สอดคล้องกับแว่นขยายของแพลตฟอร์ม (Idd918, b/206833278)
เวอร์ชัน 1.2.0-alpha02
26 มกราคม 2022
androidx.compose.foundation:foundation:1.2.0-alpha02 และ androidx.compose.foundation:foundation-layout:1.2.0-alpha02 เปิดตัวแล้ว เวอร์ชัน 1.2.0-alpha02 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- เพิ่ม
NonRestartableComposableให้กับเมธอดที่โอเวอร์โหลด ของเมธอดที่มีอยู่โดยไม่มีตรรกะที่ซับซ้อน ซึ่งจะช่วยลดการตรวจสอบการจดจำ (เท่ากับ) ที่คอมไพเลอร์ สร้างขึ้นสำหรับพารามิเตอร์ทั้งหมดที่ ซ้ำกันในฟังก์ชันด้านในที่เรียกใช้ (I90490) - เพิ่มตัวแก้ไข
excludeFromSystemGestureเพื่อให้เข้าถึงsetSystemGestureExclusionRects(I46f07) ของ Android ได้ง่ายขึ้น
การแก้ไขข้อบกพร่อง
- เราได้ปรับปรุงลักษณะการทำงานของแว่นขยายการเลือกข้อความให้ สอดคล้องกับแว่นขยายของแพลตฟอร์ม (Idd918, b/206833278)
LazyColumn,LazyRow,Modifier.verticalScrollและคอนเทนเนอร์อื่นๆ ที่ใช้Modifier.scrollableรองรับการเลื่อนด้วยล้อเมาส์แล้ว (I2b5e1, b/198214718)
เวอร์ชัน 1.2.0-alpha01
12 มกราคม 2022
androidx.compose.foundation:foundation:1.2.0-alpha01 และ androidx.compose.foundation:foundation-layout:1.2.0-alpha01 เปิดตัวแล้ว เวอร์ชัน 1.2.0-alpha01 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เราได้เพิ่มพารามิเตอร์ใหม่
userScrollEnabledลงในLazyColumn,LazyRowและLazyVerticalGridเพื่อให้ผู้ใช้ปิดใช้การเลื่อนที่ผู้ใช้เริ่มต้นชั่วคราวหรือถาวรผ่านท่าทางสัมผัสหรือการดำเนินการเพื่อการช่วยเหลือพิเศษ ระบบจะยังคงอนุญาตให้เลื่อนแบบเป็นโปรแกรมผ่านเมธอดในสถานะ (I7eae9, b/201150093) - เพิ่มการเรียกกลับ
onSizeChangedไปยังตัวแก้ไขแว่นขยาย (I6879f) - ตอนนี้วิดเจ็ตแว่นขยายจะแสดงเมื่อลากแฮนเดิลการเลือกใน
SelectionContainer(I30b38, b/139320979)
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหา
TextFieldแฮนเดิลเคอร์เซอร์ไม่ซ่อนเมื่อเลื่อนออกนอกมุมมอง (I14552, b/208883748)
การอัปเดตทรัพยากร 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 และทําให้มีลักษณะการทํางานที่สอดคล้องกันหากคุณใช้ทั้ง View และ Compose การเปลี่ยนแปลงนี้ยังช่วยให้มั่นใจได้ว่าเมื่อคุณสร้าง UI โดยใช้คอมโพเนนต์ Material ของ Compose ระบบจะปฏิบัติตามข้อกำหนดขั้นต่ำสำหรับการช่วยเหลือพิเศษของเป้าหมายการสัมผัส
- การรองรับ Navigation Rail อย่างเสถียร
- เปลี่ยน API แบบทดลองก่อนหน้านี้หลายรายการให้เป็น API ที่เสถียร
- การรองรับ Kotlin เวอร์ชันใหม่กว่า
เวอร์ชัน 1.1.0-rc03
26 มกราคม 2022
androidx.compose.foundation:foundation:1.1.0-rc03 และ androidx.compose.foundation:foundation-layout:1.1.0-rc03 เปิดตัวแล้ว เวอร์ชัน 1.1.0-rc03 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- อัปเดตเพื่อรองรับ Compose Material 1.1.0-rc03
เวอร์ชัน 1.1.0-rc01
15 ธันวาคม 2021
androidx.compose.foundation:foundation:1.1.0-rc01 และ androidx.compose.foundation:foundation-layout:1.1.0-rc01 เปิดตัวแล้ว เวอร์ชัน 1.1.0-rc01 มีคอมมิตต่อไปนี้
การแก้ไขข้อบกพร่อง
- ตอนนี้อนุญาตให้ส่งออฟเซ็ตการเลื่อนเชิงลบไปยัง
LazyListState.scrollToItem()และLazyListState.animateScrollToItem()แล้ว (Iceb90, b/184252837) - แก้ไขข้อบกพร่องที่ทำให้การเลื่อนเพื่อการช่วยเหลือพิเศษหายไป (I7cbfb)
เวอร์ชัน 1.1.0-beta04
1 ธันวาคม 2021
androidx.compose.foundation:foundation:1.1.0-beta04 และ androidx.compose.foundation:foundation-layout:1.1.0-beta04 เปิดตัวแล้ว เวอร์ชัน 1.1.0-beta04 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- อัปเดตให้เข้ากันได้กับ Kotlin
1.6.0
การเปลี่ยนแปลง API
- ล้างค่า Null ใน
androidx.core.view(I7078a, b/204917439) - เราได้เพิ่ม API เชิงทดลองที่อนุญาตให้ใช้ PointerInputchange ทั้งหมด หรือตรวจสอบว่ามีการใช้หรือไม่ (I2e59d)
- แสดงวิดเจ็ตแว่นขยายเมื่อลากเคอร์เซอร์หรือ แฮนเดิลการเลือกภายในช่องข้อความ (I5391e, b/203781358)
การแก้ไขข้อบกพร่อง
- แก้ไขแฮนเดิลข้อความที่ไม่ขยับเมื่อระดับการมองเห็น IME เปลี่ยนไป (I25f2e)
เวอร์ชัน 1.1.0-beta03
17 พฤศจิกายน 2021
androidx.compose.foundation:foundation:1.1.0-beta03 และ androidx.compose.foundation:foundation-layout:1.1.0-beta03 เปิดตัวแล้ว เวอร์ชัน 1.1.0-beta03 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มการรองรับช่วงแนวนอนใน LazyVerticalGrid (I7e2fa, b/176758183)
เพิ่มความสามารถในการทดลองเพื่อทำให้ตำแหน่งของรายการ Lazy List เคลื่อนไหว มีตัวแก้ไขใหม่พร้อมใช้งานภายใน LazyItemScope ชื่อ
Modifier.animateItemPlacement()ตัวอย่างการใช้งานvar list by remember { mutableStateOf(listOf("A", "B", "C")) } LazyColumn { item { Button(onClick = { list = list.shuffled() }) { Text("Shuffle") } } items(list, key = { it }) { Text("Item $it", Modifier.animateItemPlacement()) } }- เมื่อระบุคีย์ผ่าน
LazyListScope.itemหรือLazyListScope.itemsตัวแก้ไขนี้จะเปิดใช้ภาพเคลื่อนไหวการเรียงลำดับรายการใหม่ นอกจากการจัดเรียงรายการใหม่แล้ว การเปลี่ยนแปลงตำแหน่งอื่นๆ ทั้งหมดที่เกิดจากเหตุการณ์ต่างๆ เช่น การจัดเรียงหรือการจัดแนวใหม่ จะมีการเคลื่อนไหวด้วย (I59e7b, b/150812265)
- เมื่อระบุคีย์ผ่าน
เวอร์ชัน 1.1.0-beta02
3 พฤศจิกายน 2021
androidx.compose.foundation:foundation:1.1.0-beta02 และ androidx.compose.foundation:foundation-layout:1.1.0-beta02 เปิดตัวแล้ว เวอร์ชัน 1.1.0-beta02 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- ตอนนี้การกระเพื่อมและข้อบ่งชี้อื่นๆ จะล่าช้าก็ต่อเมื่ออยู่ภายในคอนเทนเนอร์
Modifier.scrollable()เท่านั้น แทนที่จะล่าช้าเสมอสำหรับเหตุการณ์ที่ระบบหยุดทำงาน (Ibefe0, b/203141462) - เพิ่ม BringIntoView API เวอร์ชันทดลองที่ให้คุณส่งคำขอไปยังผู้ปกครองเพื่อให้เลื่อนเพื่อนำรายการมาแสดง (Ib918d, b/195353459)
การมีส่วนร่วมภายนอก
- เพิ่ม
Modifier.pointerHoverIconแล้ว (I95f01)
เวอร์ชัน 1.1.0-beta01
27 ตุลาคม 2021
androidx.compose.foundation:foundation:1.1.0-beta01 และ androidx.compose.foundation:foundation-layout:1.1.0-beta01 เปิดตัวแล้ว เวอร์ชัน 1.1.0-beta01 มีการคอมมิตต่อไปนี้
การแก้ไขข้อบกพร่อง
- เพิ่ม BringIntoView API เวอร์ชันทดลองที่ให้คุณส่งคำขอไปยังผู้ปกครองเพื่อให้เลื่อนเพื่อนำรายการมาแสดง (Ib918d, b/195353459)
เวอร์ชัน 1.1.0-alpha06
13 ตุลาคม 2021
androidx.compose.foundation:foundation:1.1.0-alpha06 และ androidx.compose.foundation:foundation-layout:1.1.0-alpha06 เปิดตัวแล้ว เวอร์ชัน 1.1.0-alpha06 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- เพิ่มการโอเวอร์โหลดที่ไม่มีองค์ประกอบย่อยสำหรับเลย์เอาต์พร้อมประสิทธิภาพที่ดียิ่งขึ้น (Ib0d9a)
- ตอนนี้
SemanticsNodeInteraction.performSemanticsActionจะแสดงผลSemanticsNodeInteractionที่มีการเรียกใช้ฟังก์ชัน (I9e5db) - เพิ่ม
performScrollToNode(matcher: SemanticsMatcher)ที่ เลื่อนคอนเทนเนอร์ที่เลื่อนได้ไปยังเนื้อหาที่ตรงกันโดย ตัวจับคู่ที่ระบุ (Ic1cb8)
เวอร์ชัน 1.1.0-alpha05
29 กันยายน 2021
androidx.compose.foundation:foundation:1.1.0-alpha05 และ androidx.compose.foundation:foundation-layout:1.1.0-alpha05 เปิดตัวแล้ว เวอร์ชัน 1.1.0-alpha05 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- เพิ่มตัวชี้ประวัติการทดลองไปยัง PointerEventChange (Ic1fd8, b/197553056, b/199921305)
การแก้ไขข้อบกพร่อง
- แก้ไขการรองรับการช่วยเหลือพิเศษสำหรับรายการที่เลื่อนได้ (ทั้งแบบเลื่อนและแบบไม่เลื่อน) เกี่ยวกับการเลื่อน (I6cdb0)
เวอร์ชัน 1.1.0-alpha04
15 กันยายน 2021
androidx.compose.foundation:foundation:1.1.0-alpha04 และ androidx.compose.foundation:foundation-layout:1.1.0-alpha04 เปิดตัวแล้ว เวอร์ชัน 1.1.0-alpha04 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- เลิกใช้งาน
performGestureและGestureScopeซึ่งถูกแทนที่ด้วยperformTouchInputและTouchInjectionScope(Ia5f3f, b/190493367) - เพิ่ม
touchBoundsInRootในSemanticsNodeที่ มีขนาดเป้าหมายการสัมผัสขั้นต่ำ เพื่อให้นักพัฒนาแอป มั่นใจได้ว่าเป้าหมายการสัมผัสเป็นไปตามข้อกำหนดขั้นต่ำด้านการช่วยเหลือพิเศษ (I2e14b, b/197751214)
การแก้ไขข้อบกพร่อง
- เพิ่มการรองรับการเลื่อนเกินขอบเขตแบบยืดในอุปกรณ์ Android 12 แล้ว (Iccf3c, b/171682480)
เวอร์ชัน 1.1.0-alpha03
1 กันยายน 2021
androidx.compose.foundation:foundation:1.1.0-alpha03 และ androidx.compose.foundation:foundation-layout:1.1.0-alpha03 เปิดตัวแล้ว เวอร์ชัน 1.1.0-alpha03 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- อัปเดต Compose
1.1.0-alpha03ให้ขึ้นอยู่กับ Kotlin1.5.30(I74545)
การเปลี่ยนแปลง API
- เพิ่มเอฟเฟกต์เรืองแสงสำหรับการเลื่อนแล้ว เพิ่ม API OverScrollConfiguration เวอร์ชันทดลองใหม่เพื่อให้กำหนดค่าเอฟเฟกต์ภาพเมื่อเลื่อนเกินขอบเขตได้ ระบุ null เพื่อปิดเอฟเฟกต์การเลื่อนเกิน (I0c304, b/171682480)
- ตอนนี้ AwaitPointerEventScope มี withTimeout() และ withTimeoutOrNull() แล้ว (I507f0, b/179239764, b/182397793)
- เพิ่มวิธีการทดสอบเพื่อรับขอบเขตที่ตัดแล้ว (I6b28e)
- เพิ่มขนาดเป้าหมายการสัมผัสขั้นต่ำลงใน ViewConfiguration เพื่อใช้ในอินพุตเชิงความหมายและอินพุตของเคอร์เซอร์เพื่อให้มั่นใจว่ามีการช่วยเหลือพิเศษ (Ie861c)
เวอร์ชัน 1.1.0-alpha02
18 สิงหาคม 2021
androidx.compose.foundation:foundation:1.1.0-alpha02 และ androidx.compose.foundation:foundation-layout:1.1.0-alpha02 เปิดตัวแล้ว เวอร์ชัน 1.1.0-alpha02 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มเวอร์ชัน DpSize สำหรับ
Modifier.sizeและrequiredSize(I3fc7e, b/194219828)
เวอร์ชัน 1.1.0-alpha01
4 สิงหาคม 2021
androidx.compose.foundation:foundation:1.1.0-alpha01 และ androidx.compose.foundation:foundation-layout:1.1.0-alpha01 เปิดตัวแล้ว เวอร์ชัน 1.1.0-alpha01 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- อัปเดต
DrawScope#drawImageเมธอดที่ ใช้สี่เหลี่ยมผืนผ้าต้นทางและปลายทาง เพื่อใช้พารามิเตอร์ FilterQuality ที่ไม่บังคับ ซึ่งมีประโยชน์สำหรับพิกเซล อาร์ตที่ต้องการให้เป็นพิกเซล เมื่อขยายขนาดสำหรับอาร์ตแบบพิกเซล อัปเดต BitmapPainter + Image composable ให้ใช้พารามิเตอร์ FilterQuality ที่ไม่บังคับด้วย (Ie4fb0, b/180311607) - ตอนนี้ TextField จะล้างการเลือกเมื่อกดปุ่มย้อนกลับ ซึ่งตรงกับลักษณะการทำงานของ EditText ใน Android (I3ca16, b/174173645)
- เพิ่มแฮนเดิลเคอร์เซอร์ (I07a82, b/173016579)
การแก้ไขข้อบกพร่อง
- ตอนนี้การเลื่อนผ่านการดำเนินการทางความหมายสำหรับรายการที่โหลดแบบ Lazy และคอมโพเนนต์การเลื่อนปกติจะมีการเคลื่อนไหวแล้ว (Id9066, b/190742024)
การมีส่วนร่วมภายนอก
LazyVerticalGridตอนนี้ยอมรับทั้งพารามิเตอร์การจัดเรียงแนวนอนและแนวตั้งแล้ว (If9c92)
รุ่น 1.0
เวอร์ชัน 1.0.5
3 พฤศจิกายน 2021
androidx.compose.foundation:foundation:1.0.5 และ androidx.compose.foundation:foundation-layout:1.0.5 เปิดตัวแล้ว เวอร์ชัน 1.0.5 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขข้อขัดข้องในการติดตามอินสแตนซ์ derivedStateOf (aosp/1792247)
เวอร์ชัน 1.0.4
13 ตุลาคม 2021
androidx.compose.foundation:foundation:1.0.4 และ androidx.compose.foundation:foundation-layout:1.0.4 เปิดตัวแล้ว เวอร์ชัน 1.0.4 มีคอมมิตเหล่านี้
การอัปเดตทรัพยากร 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) - เปลี่ยน enum Role และ LiveRegionMode เป็นคลาสอินไลน์ ที่มีตัวสร้างส่วนตัว (Id1890)
- ระบบจะแปลง KeyboardCapitalization เป็นคลาสอินไลน์ (Id5a1c)
- เปลี่ยน TextOverflow เป็นคลาสอินไลน์ (I433af)
การแก้ไขข้อบกพร่อง
- ตอนนี้เมื่อคุณระบุคีย์ที่ไม่ซ้ำกันสำหรับรายการ LazyColumn/Row ระบบจะรักษาตำแหน่งการเลื่อนตามคีย์ ซึ่งหมายความว่าหากคุณเพิ่ม/นำรายการออกก่อนรายการที่มองเห็นในปัจจุบัน ระบบจะเก็บรายการที่มีคีย์ที่ระบุไว้เป็นรายการแรกที่มองเห็น (Id263f, b/184257857)
- ค่าคงที่หลักคือ @ExperimentalComposeUiApi ในตอนนี้ โค้ดที่ใช้ สามารถประกาศค่าคงที่ส่วนตัวก่อนการทำให้เสถียรได้ (Ia5d48)
- เพิ่ม IdlingStrategy ลงใน AndroidComposeTestRule ซึ่งเฟรมเวิร์กการทดสอบสามารถใช้เพื่อติดตั้งกลไกทางเลือกในการรอหรือบรรลุสถานะหยุดทำงาน ใช้
AndroidComposeTestRule.setIdlingStrategyFactory()ก่อนการทดสอบ จะเริ่มขึ้นเพื่อติดตั้งกลยุทธ์ของคุณเอง (I608fa)
กฎโปรไฟล์ที่เพิ่ม
การเปิดตัวนี้จะเพิ่มกฎโปรไฟล์ลงในโมดูลการเขียนต่อไปนี้ (I14ed6)
- androidx.compose.animation
- androidx.compose.animation-core
- androidx.compose.foundation
- androidx.compose.foundation-layout
- androidx.compose.material
- androidx.compose.material-ripple
- androidx.compose.runtime
- androidx.compose.ui
- androidx.compose.ui.geometry
- androidx.compose.ui.graphics
- androidx.compose.ui.text
- androidx.compose.ui.text
- androidx.compose.ui.unit
- androidx.compose.ui.util
กฎของโปรไฟล์คืออะไร
กฎโปรไฟล์สำหรับไลบรารีจะระบุไว้ในไฟล์ข้อความ
baseline-prof.txtซึ่งอยู่ในไดเรกทอรีsrc/mainหรือไดเรกทอรีที่เทียบเท่า ไฟล์จะระบุกฎต่อบรรทัด โดยในกรณีนี้กฎคือรูปแบบสำหรับการจับคู่กับเมธอดหรือคลาสในไลบรารี ไวยากรณ์ของกฎเหล่านี้เป็นซูเปอร์เซ็ตของรูปแบบโปรไฟล์ ART ที่มนุษย์อ่านได้ ซึ่งใช้เมื่อใช้adb shell profman --dump-classes-and-methods ...กฎเหล่านี้มี 2 รูปแบบเพื่อกำหนดเป้าหมายไปยังเมธอดหรือคลาสกฎของเมธอดจะมีรูปแบบต่อไปนี้
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>และกฎของชั้นเรียนจะมีรูปแบบดังนี้
<CLASS_DESCRIPTOR>โดย
<FLAGS>คืออักขระH,SและPอย่างน้อย 1 ตัวเพื่อระบุว่าควรติดป้ายกำกับเมธอดนี้เป็น "มาแรง" "สตาร์ทอัป" หรือ "หลังสตาร์ทอัป" หรือไม่<CLASS_DESCRIPTOR>คือตัวอธิบายสำหรับคลาสที่เมธอดเป้าหมายเป็นของ เช่น คลาสandroidx.compose.runtime.SlotTableจะมีตัวอธิบายเป็นLandroidx/compose/runtime/SlotTable;<METHOD_SIGNATURE>คือลายเซ็นของเมธอด ซึ่งรวมถึงชื่อ ประเภทพารามิเตอร์ และประเภทการคืนค่าของเมธอด เช่น เมธอดfun isPlaced(): BooleanในLayoutNodeมีลายเซ็นisPlaced()Zรูปแบบเหล่านี้มีไวลด์การ์ด (
**,*และ?) ได้เพื่อให้กฎเดียวครอบคลุมหลายวิธีหรือหลายคลาส
กฎมีไว้ทำอะไร
เมธอดที่มีแฟล็ก
Hแสดงว่าเมธอดนี้เป็นเมธอด "ยอดนิยม" และควรคอมไพล์ล่วงหน้าเมธอดที่มีแฟล็ก
Sแสดงว่าเป็นเมธอดที่เรียกใช้เมื่อเริ่มต้น และควรคอมไพล์ล่วงหน้าเพื่อหลีกเลี่ยงค่าใช้จ่ายในการคอมไพล์และการตีความเมธอดเมื่อเริ่มต้นเมธอดที่มีแฟล็ก
Pแสดงว่าเป็นเมธอดที่เรียกใช้หลังจากเริ่มต้นคลาสที่มีอยู่ในไฟล์นี้บ่งชี้ว่ามีการใช้คลาสในระหว่างการเริ่มต้นระบบ และควรจัดสรรล่วงหน้าในฮีปเพื่อหลีกเลี่ยงค่าใช้จ่ายในการโหลดคลาส
ระบบนี้ทำงานอย่างไร
- โดยไลบรารีสามารถกำหนดกฎเหล่านี้ซึ่งจะรวมอยู่ในอาร์ติแฟกต์ AAR เมื่อสร้างแอปที่มีอาร์ติแฟกต์เหล่านี้ ระบบจะผสานกฎเหล่านี้เข้าด้วยกันและใช้กฎที่ผสานแล้วเพื่อสร้างโปรไฟล์ ART แบบไบนารีขนาดกะทัดรัดที่เฉพาะเจาะจงสำหรับแอปนั้นๆ จากนั้น ART จะใช้ประโยชน์จากโปรไฟล์นี้เมื่อติดตั้งแอปในอุปกรณ์เพื่อคอมไพล์ล่วงหน้าซึ่งเป็นชุดย่อยที่เฉพาะเจาะจงของแอปพลิเคชันเพื่อปรับปรุงประสิทธิภาพของแอปพลิเคชัน โดยเฉพาะอย่างยิ่งการเรียกใช้ครั้งแรก โปรดทราบว่าการดำเนินการนี้จะไม่มีผลกับแอปพลิเคชันที่แก้ไขข้อบกพร่องได้
เวอร์ชัน 1.0.0-beta08
2 มิถุนายน 2021
androidx.compose.foundation:foundation:1.0.0-beta08 และ androidx.compose.foundation:foundation-layout:1.0.0-beta08 เปิดตัวแล้ว เวอร์ชัน 1.0.0-beta08 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ระบบจะแทนที่ enum NestedScrollSource ด้วยคลาสแบบอินไลน์ (Ie321b, b/187055290)
- ปรับโครงสร้างการใช้งาน enum เป็นคลาสแบบอินไลน์เพื่อหลีกเลี่ยง ปัญหาเกี่ยวกับคำสั่ง when แบบครอบคลุมเมื่อ มีการเพิ่มค่า enum ใหม่ (I2b5eb)
- เพิ่มการหมดเวลาแตะไปยังองค์ประกอบที่คลิกได้ / สลับได้เพื่อป้องกันไม่ให้แสดงเอฟเฟกต์ระลอกระหว่างการเลื่อน / ลาก (Ia2704, b/168524931)
- พร็อพเพอร์ตี้ ContentDescription และ Text semantics ไม่ใช่ค่าเดียวอีกต่อไป แต่เป็นรายการ ซึ่งจะช่วยให้ผสานรวมได้โดยไม่ต้องต่อกัน นอกจากนี้ เรายังได้จัดเตรียม API การทดสอบที่ดีขึ้นเพื่อใช้ประโยชน์จากการเปลี่ยนแปลงเหล่านี้ (Ica6bf, b/184825850)
Modifier.focusModifier()เลิกใช้งานแล้วและแทนที่ด้วยModifier.focusTarget()(I6c860)- แทนที่ enum KeyboardType ด้วยคลาสแบบอินไลน์ (I73045, b/187055290)
- แทนที่ enum
FocusStateด้วยอินเทอร์เฟซFocusState(Iccc1a, b/187055290) - แทนที่ enum ImeAction ด้วยคลาสแบบอินไลน์ (I18be5, b/187055290)
AnnotatedString.withAnnotationตอนนี้เป็น ExperimentalTextApi แทน ExperimentalComposeApi แล้ว (I0cd0a)- ตอนนี้ตัวสร้าง TextUnit ที่มี TextUnitType จะเป็น ExperimentalTextApi แทนที่จะเป็น ExperimentalComposeApi
- ตอนนี้ PaddingValues คือ
@Stableแทนที่จะเป็น@Immutable(I88c50)
การแก้ไขข้อบกพร่อง
- แก้ไขข้อขัดข้องเมื่อกดพื้นที่ว่างค้างไว้ในข้อความที่ไม่ว่างเปล่า (I33ab5, b/187437299)
- แสดงแถบเครื่องมือหลังจาก SelectAll (I495d9, b/185919613)
- แก้ไขคอนเทนเนอร์ที่เลื่อนได้ซึ่งตัดองค์ประกอบย่อยในแกนไขว้ ซึ่งสามารถทำซ้ำได้ง่ายหากคุณมี LazyRow ที่มีรายการ Card ตอนนี้เงาจะไม่ถูกตัด (Icb635, b/186318448)
- แก้ไขปัญหาที่บางครั้งการกระเพื่อม / การบ่งชี้อื่นๆ จะค้างเมื่อคลิกแบบยาวเมื่อใช้ Modifier.combinedClickable (I2298c, b/186223077)
- ตอนนี้
detectDragGesures,detectVerticalGesturesและdetectHorizontalGesturesจะใช้การเปลี่ยนแปลงตำแหน่งโดยอัตโนมัติ ไม่จำเป็นต้องเรียกใช้ change.consumePositionChange ในการเรียกกลับ onDrag (I42fc4, b/185096350, b/187320697) Modifier.onGloballyPositioned()เปลี่ยนเป็นรายงานพิกัดของตัวแก้ไขนี้ในเชนตัวแก้ไข ไม่ใช่พิกัดเลย์เอาต์หลังจากใช้ตัวแก้ไขทั้งหมด ซึ่งหมายความว่าตอนนี้ลำดับของตัวแก้ไขจะส่งผลต่อพิกัดที่จะรายงาน (Ieb67d, b/177926591)
เวอร์ชัน 1.0.0-beta07
18 พฤษภาคม 2021
androidx.compose.foundation:foundation:1.0.0-beta07 และ androidx.compose.foundation:foundation-layout:1.0.0-beta07 เปิดตัวแล้ว เวอร์ชัน 1.0.0-beta07 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- มีการเปิดตัวตรรกะการดึงข้อมูลล่วงหน้าของรายการที่มองเห็นถัดไปสำหรับ LazyColumn/Row (I8a4bc, b/184940225)
- เพิ่มแฮนเดิลการเลือกคลิป (Iff80d, b/183408447)
การแก้ไขข้อบกพร่อง
- ตอนนี้ LazyColumn/Row จะเก็บรายการที่มองเห็นก่อนหน้านี้สูงสุด 2 รายการให้ใช้งานอยู่ (ไม่ทิ้ง) แม้ว่าจะเลื่อนออกไปแล้วก็ตาม ซึ่งจะช่วยให้คอมโพเนนต์นำองค์ประกอบย่อยที่ใช้งานอยู่กลับมาใช้ซ้ำได้เมื่อเราต้องสร้างรายการใหม่ ซึ่งจะช่วยปรับปรุงประสิทธิภาพการเลื่อน (Ie5555)
- นำ paintBackground ออก (I38660)
- วาดพื้นหลังการเลือกโดยใช้ DrawScope (I73c61, b/186674472)
- แก้ไขการถดถอยในเบต้า 06 ที่ส่งผลต่อแถว/คอลัมน์ที่ใช้การจัดเรียง spacedBy เพื่อจัดวางองค์ประกอบย่อยที่มีการถ่วงน้ำหนัก (Ifaf8c, b/187326588)
เวอร์ชัน 1.0.0-beta06
5 พฤษภาคม 2021
androidx.compose.foundation:foundation:1.0.0-beta06 และ androidx.compose.foundation:foundation-layout:1.0.0-beta06 เปิดตัวแล้ว เวอร์ชัน 1.0.0-beta06 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- แก้ไขความขัดแย้งด้วยท่าทางการนำทาง (I1145e)
- เพิ่ม API การช่วยเหลือพิเศษ CollectionInfo และ CollectionItemInfo ที่อนุญาตให้ทำเครื่องหมายคอลเล็กชันและรายการของคอลเล็กชันสำหรับบริการการช่วยเหลือพิเศษ (Id54ef, b/180479017)
- เพิ่ม
SemanticsActions.ScrollToIndexเพื่อเลื่อนรายการที่มี รายการที่จัดทำดัชนีไปยังรายการที่มีดัชนีที่เฉพาะเจาะจง และSemanticsProperties.IndexForKeyเพื่อรับดัชนีของรายการในรายการ ที่มีรายการที่ใช้คีย์ การดำเนินการทั้ง 2 อย่างนี้จะดำเนินการโดย LazyList- เพิ่ม
SemanticsNodeInteraction.performScrollToIndexที่ เลื่อนรายการไปยังดัชนีที่ระบุ และSemanticsNodeInteraction.performScrollToKeyที่เลื่อนรายการไปยัง รายการที่มีคีย์ที่ระบุ (I4fe63, b/178483889, b/161584524)
- เพิ่ม
- การรองรับการบันทึก AnnotatedString ไปยัง TextFieldValue.Saver เพิ่มฟังก์ชันยูทิลิตี addTtsAnnotation และ withAnnotation ลงใน AnnotatedString.Builder (I8cbdc, b/178446304)
- เพิ่มค่าพารามิเตอร์เริ่มต้น
0.dpลงในPaddingValues(horizontal, vertical)(I05571, b/181336792)
การแก้ไขข้อบกพร่อง
- แถวและคอลัมน์ที่มี
weight(fill = false)จะไม่ทำให้องค์ประกอบหลักเติมเต็มพื้นที่แกนหลักที่ใช้ได้ทั้งหมดอีกต่อไป (Ied94d, b/186012444, b/184355105)
เวอร์ชัน 1.0.0-beta05
21 เมษายน 2021
androidx.compose.foundation:foundation:1.0.0-beta05 และ androidx.compose.foundation:foundation-layout:1.0.0-beta05 เปิดตัวแล้ว เวอร์ชัน 1.0.0-beta05 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ตอนนี้อินเทอร์เฟซ FlingBehavior มีการทำเครื่องหมายเป็น @Stable แล้ว การติดตั้งใช้งานทั้งหมดควรเป็นไปตามสัญญา
@Stable(I93354, b/184830577)
การแก้ไขข้อบกพร่อง
- แก้ไขการดำเนินการเลื่อนเพื่อการช่วยเหลือพิเศษ
ACTION_SCROLL_FORWARD,ACTION_SCROLL_BACKWARD,accessibilityActionScrollLeft,accessibilityActionScrollUp,accessibilityActionScrollRightและaccessibilityActionScrollDownตอนนี้การเลื่อนจะเลื่อนไปทีละหน้าจอในทิศทางที่กำหนดแทนที่จะเลื่อนไปจนสุดของ เลื่อนได้ (Ieccb0) - ตอนนี้ไฟล์ AndroidManifest จาก ui-test-manifest และ ui-tooling-data ใช้งานร่วมกับ Android 12 ได้แล้ว (I6f9de, b/184718994)
เวอร์ชัน 1.0.0-beta04
7 เมษายน 2021
androidx.compose.foundation:foundation:1.0.0-beta04 และ androidx.compose.foundation:foundation-layout:1.0.0-beta04 เปิดตัวแล้ว เวอร์ชัน 1.0.0-beta04 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เปลี่ยนชื่อ hideSoftwareKeyboard และ showSoftwareKeyboard ใน
SoftwareKeyboardController เป็น
hide()และshow()ตามลำดับ- ระบุอินเทอร์เฟซ CompositionLocal แบบเต็มสำหรับ LocalSoftwareKeyboardController เพื่อให้ตั้งค่าได้ (มีประโยชน์อย่างยิ่ง ในการทดสอบ) (I579a6)
- เปิดตัว
TextOverflow.Visible(Ic8f89) - เราได้นำอินสแตนซ์สาธารณะของ
RowScope,ColumnScope,BoxScope,BoxWithConstraintsScopeออกแล้ว (I4e83e, b/181869067)
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาที่รายการของ
LazyColumn/LazyRowซึ่งอยู่บริเวณขอบได้รับการจัดตำแหน่งอย่างไม่ถูกต้องหลังจากที่โยนอย่างรวดเร็ว (Ie4d13, b/183877420) ก่อนการเปลี่ยนแปลงนี้ ฟังก์ชันที่ใช้ร่วมกันได้ในเครื่องจะข้ามได้ตามพารามิเตอร์ หลังจากทำการเปลี่ยนแปลงนี้แล้ว ฟังก์ชันที่ใช้ร่วมกันได้ในเครื่องจะไม่ข้าม การเปลี่ยนแปลงนี้เกิดขึ้นเนื่องจากฟังก์ชันในเครื่องมักจะดึงพารามิเตอร์จากฟังก์ชันหลัก และการข้ามพารามิเตอร์ดังกล่าวเป็นแหล่งที่มาของข้อบกพร่องที่พบบ่อย
สรุปได้ว่า ตัวอย่างต่อไปนี้
@Composable fun Counter(count: Int, onCountChange: (Int) -> Unit) { @Composable fun ShowCount() { Text("Count: $count") } ShowCount() Button(onClick={ onCountChange(count + 1) }) { Text("Increment") } }ก่อนการเปลี่ยนแปลงนี้
ShowCountฟังก์ชันที่ประกอบกันได้จะข้ามเสมอ แม้ว่าจะมีการอัปเดตพารามิเตอร์countแล้วก็ตาม แต่เหตุการณ์ดังกล่าวจะไม่เกิดขึ้นแล้ว (I5648a)
เวอร์ชัน 1.0.0-beta03
24 มีนาคม 2021
androidx.compose.foundation:foundation:1.0.0-beta03 และ androidx.compose.foundation:foundation-layout:1.0.0-beta03 เปิดตัวแล้ว เวอร์ชัน 1.0.0-beta03 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
DefaultMonotonicFrameClockเลิกใช้งานแล้ว การเรียกใช้withFrameNanosหรือRecomposer.runRecomposeAndApplyChangesที่ไม่มีMonotonicFrameClockจะส่งIllegalStateException(I4eb0d)
การแก้ไขข้อบกพร่อง
- ตอนนี้ระบบจะเรียกใช้
FlingBehavior.performFling()แม้ว่าความเร็วจะเป็น 0 (I0b6e5, b/181237123)
เวอร์ชัน 1.0.0-beta02
10 มีนาคม 2021
androidx.compose.foundation:foundation:1.0.0-beta02 และ androidx.compose.foundation:foundation-layout:1.0.0-beta02 เปิดตัวแล้ว เวอร์ชัน 1.0.0-beta02 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มการเพิ่มประสิทธิภาพเล็กๆ น้อยๆ หลายรายการในตรรกะการวัด LazyColumn (Ic6889)
- เพิ่ม
LocalSoftwareKeyboardControllercomposition local API ใหม่เพื่อแทนที่อินเทอร์เฟซ SoftwareKeyboardController ก่อนหน้าใน TextField (I5951e, b/168778053) - เพิ่ม
LocalSoftwareKeyboardControllercomposition local API ใหม่เพื่อแทนที่อินเทอร์เฟซ SoftwareKeyboardController ก่อนหน้าใน TextField (I84472, b/168778053)
การแก้ไขข้อบกพร่อง
- บังคับใช้ข้อจำกัดในการใช้งาน API เวอร์ชันทดลองต่อสาธารณะ (I6aa29, b/174531520)
เวอร์ชัน 1.0.0-beta01
24 กุมภาพันธ์ 2021
androidx.compose.foundation:foundation:1.0.0-beta01 และ androidx.compose.foundation:foundation-layout:1.0.0-beta01 เปิดตัวแล้ว เวอร์ชัน 1.0.0-beta01 มีคอมมิตเหล่านี้
นี่คือ Compose 1.0.0 เวอร์ชันเบต้าที่เปิดตัวเป็นครั้งแรก
การเปลี่ยนแปลง API
- เพิ่มการเรียกกลับ onStart ไปยัง
detectDragGestures(I67269, b/179995594) แล้ว - ตัวปรับแต่งสำหรับการปรับขนาดให้ตรงกับ Intrinsics ไม่ได้อยู่ในระยะทดลองอีกต่อไป (I15744)
- นำการยืนยัน dp ออก (I798d2)
- นำการเรียกกลับ SoftwareKeyboardController ออกจากฟิลด์ข้อความทั้งหมด เพื่อแทนที่ด้วย API ใหม่ในเร็วๆ นี้ (Iae869, b/168778053)
- เราเปลี่ยนชื่อ MeasureBlocks เป็น MeasurePolicy ซึ่งกลายเป็นอินเทอร์เฟซที่สนุกสนาน เราได้อัปเดต / ลดความซับซ้อนของ Layout API เพื่อให้ใช้ MeasurePolicy ได้ (Icab48, b/167662468, b/156751158)
InteractionStateถูกแทนที่ด้วย[Mutable]InteractionSource- อินเทอร์เฟซมีหน้าที่ในการปล่อย / รวบรวมเหตุการณ์การโต้ตอบ
- แทนที่จะส่ง
interactionState = remember { InteractionState() }ไปยังคอมโพเนนต์ เช่นButtonและModifier.clickable()ให้ใช้interactionSource = remember { MutableInteractionSource() } - แทนที่จะเป็น:
Interaction.Pressed in interactionStateคุณควรใช้ฟังก์ชันส่วนขยายใน InteractionSource แทน เช่น InteractionSource.collectIsPressedAsState() - สำหรับกรณีการใช้งานที่ซับซ้อน คุณสามารถใช้ InteractionSource.interactions เพื่อสังเกตสตรีมของการโต้ตอบได้ ดูข้อมูลเพิ่มเติมได้ที่เอกสารประกอบและตัวอย่าง InteractionSource
- (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
- นำเมธอด LayoutCoordinates ที่เลิกใช้งานแล้วออก ให้ใช้ฟังก์ชันแทนพร็อพเพอร์ตี้สำหรับ positionInParent และ boundsInParent (I580ed, b/169874631, b/175142755)
- สร้าง TextInputSession ใหม่สำหรับเซสชันการป้อนข้อมูลจากคอมโพเนนต์ข้อความระดับต่ำ เช่น CoreTextField (I8817f, b/177662148)
- ตอนนี้ Placeable จะแสดง measuredSize ซึ่งแสดงถึงขนาดที่เลย์เอาต์ย่อยวัดจริง ขนาดนี้อาจไม่เป็นไปตามข้อจำกัดในการวัด (Ib2729, b/172560206, b/172338608)
- เพิ่มตัวแก้ไข selectionGroup ที่อนุญาตให้ทำเครื่องหมายคอลเล็กชันของแท็บหรือ RadioButton เพื่อวัตถุประสงค์ในการช่วยเหลือพิเศษ (Ie5c29)
เพิ่ม LazyListState.animateScrollToItem
เมธอดนี้จะเลื่อนรายการอย่างราบรื่นไปยังรายการที่เฉพาะเจาะจงในรายการ (I4bfd7)
เปลี่ยนชื่อ ScrollableState.smoothScrollBy() เป็น animateScrollBy() เปลี่ยนชื่อ LazyListState.snapToItemIndex() เป็น scrollToItem() เปลี่ยนชื่อ ScrollState.smoothScrollTo() เป็น animateScrollTo() (I35ded)
Modifier.zoomable ถูกแทนที่ด้วย Modifier.transformable และมีการเพิ่ม smoothPanBy, smoothRotationBy เป็นฟังก์ชันการทำงาน (Ifc32b, b/175294473)
ตอนนี้ต้องระบุ
defaultFactoryสำหรับcompositionLocalOfและstaticCompositionLocalOfแทนที่จะเป็น ไม่บังคับการเปลี่ยนแปลงนี้จะนำข้อผิดพลาดเกี่ยวกับประเภทที่อาจเกิดขึ้นสำหรับประเภทที่ไม่เป็น Null ออก ในกรณีที่ไม่ได้ระบุโรงงานเริ่มต้น ก่อนหน้านี้ จะให้การอ้างอิงเป็น Null สำหรับประเภทที่กำหนดให้ไม่ใช่ Null
สำหรับประเภทที่กำหนดให้เป็น Null ได้ ให้พิจารณาใส่
{ null }เป็นค่าเริ่มต้น factoryเราไม่แนะนำให้ใช้ภาษาที่มีประเภทที่กำหนดให้ต้องมีค่า เว้นแต่จะระบุค่าเริ่มต้นที่เหมาะสมได้ หากไม่มีค่าเริ่มต้นที่เหมาะสม Lambda
defaultFactoryควรแสดงข้อยกเว้น อย่างไรก็ตาม การส่งข้อยกเว้นหมายความว่าผู้บริโภคของภาษาจะมีการ อ้างอิงโดยนัยว่ามีการระบุภาษาดังกล่าวซึ่งไม่ได้บังคับใช้ โดยระบบประเภท (Ifbd2a)เปลี่ยน
Indication#createIndication()เป็นIndication#rememberUpdatedIndication(InteractionState)และนำพารามิเตอร์InteractionStateออกจาก IndicationInstance#drawIndication()IndicationInstance ควรมีหน้าที่วาดเอฟเฟกต์ภาพเท่านั้น และไม่ควรเปิดตัวภาพเคลื่อนไหว / เขียนสถานะเพื่อตอบสนองต่อการเปลี่ยนแปลง InteractionState ภาพเคลื่อนไหวและการเขียนสถานะเหล่านี้ควรเกิดขึ้นภายในrememberUpdatedIndication()แทน นอกจากนี้ พารามิเตอร์indicationในModifier.indicationยังเปลี่ยนเป็นพารามิเตอร์ที่ต้องระบุด้วย (Ic1764, b/152525426)ตอนนี้การดำเนินการกับข้อความจะตรวจสอบโฟกัสโดยอัตโนมัติ (I13777, b/179648629)
นำออกแล้ว
runBlockingWithManualClock(I15cdc, b/179664814)ตอนนี้ตำแหน่งการเลื่อนใน Modifier.verticalScroll()/horizontalScroll() จะแสดงด้วย Ints (I81298)
เปลี่ยนแพ็กเกจของเมธอด smoothScrollBy และ scrollBy เป็น
androidx.compose.foundation.gestures.*(I3f7c1, b/175294473)เราได้เปลี่ยนชื่อ FlingConfig เป็น FlingBehavior แล้ว ซึ่งตอนนี้จะช่วยให้ปรับแต่งภาพเคลื่อนไหวระงับได้แทนที่จะใช้ Decays ที่กำหนดไว้ล่วงหน้า (I02b86, b/175294473)
มีการเปลี่ยนชื่อตัวปรับขนาด เปลี่ยนชื่อ Modifier.width/height/size เป็น requiredWidth/requiredHeight/requiredSize เปลี่ยนชื่อ Modifier.preferredWidth/preferredHeight/preferredSize เป็น width/height/size (I5b414)
เปลี่ยนชื่อ defaultMinSizeConstraints เป็น defaultMinSize (I4eaae)
นำ Modifier.tapGestureFilter ออกแล้ว ให้ใช้
Modifier.pointerInput { detectTapGestures(...) }แทน (I266ed, b/175294473)นำการใช้งานบางส่วนออกจากระบบการป้อนข้อมูลด้วยเคอร์เซอร์ วิธีที่แนะนำในการประสานการใช้งานบางส่วนคือ Modifier.nestedScroll (Ie9c9b)
ย้ายการปฐมนิเทศไปไว้ในแพ็กเกจพื้นฐานแล้ว VelocirtTracker ย้ายจาก ui.gesture ไปยัง ui.input.pointer (Iff4a8, b/175294473)
นำ AnimationClockObservable และคลาสย่อยออกแล้ว นำ AnimatedFloat ออกแล้ว (Icde52, b/177457083)
ตอนนี้ drawerState.open() และ drawerState.close() เป็นฟังก์ชันที่ระงับแล้ว ใช้ rememberCoroutineScope() เพื่อรับขอบเขตของการจัดองค์ประกอบเพื่อเรียกใช้ (I16f60, b/175294473)
เปลี่ยนชื่อ Providers เป็น CompositionLocalProvider แล้ว
- ตัวสร้าง Composition ไม่รับพารามิเตอร์คีย์อีกต่อไป และเลิกใช้งานแล้ว
- currentCompositeKeyHash ได้รับการเปลี่ยนให้เป็นพร็อพเพอร์ตี้ระดับบนสุดที่ประกอบกันได้แทนที่จะเป็นฟังก์ชันระดับบนสุดที่ประกอบกันได้
- CompositionData และ CompositionGroup ได้รับการย้ายไปยังเนมสเปซ androidx.compose.runtime.tooling แล้ว
- เราได้เปลี่ยน ComposableLambda ให้เป็นอินเทอร์เฟซแทนที่จะเป็นคลาสที่เฉพาะเจาะจง และไม่มีพารามิเตอร์ประเภทอีกต่อไป
- เราได้เปลี่ยน ComposableLambdaN ให้เป็นอินเทอร์เฟซแทนที่จะเป็นคลาสที่เฉพาะเจาะจง และไม่มีพารามิเตอร์ประเภทอีกต่อไป
- ฟังก์ชัน snapshotFlow ย้ายไปที่เนมสเปซ androidx.compose.runtime แล้ว
- วิธีการผสานของ SnapshotMutationPolicy ไม่ใช่เวอร์ชันทดลองอีกต่อไป
- เราได้นำ
@TestOnlyฟังก์ชัน clearRoots ระดับบนสุดออกแล้ว ไม่จำเป็นต้องดำเนินการอีกต่อไป - ระบบได้นำฟังก์ชัน keySourceInfoOf และ resetSourceInfo ออกแล้ว ไม่จำเป็นต้องดำเนินการอีกต่อไป
- ระบบได้นำ Composer.collectKeySourceInformation ออกแล้ว ไม่จำเป็นต้องดำเนินการอีกต่อไป
- ระบบได้นำเมธอด isJoinedKey, joinedKeyLeft และ joinedKeyRight ออกแล้ว ไม่จำเป็นต้องดำเนินการอีกต่อไป
- เราได้ย้ายและจัดระเบียบ API ระดับบนสุดต่างๆ ลงในไฟล์ที่แตกต่างกัน เนื่องจากความหมายของคลาสไฟล์ของ Kotlin การดำเนินการนี้จะทำให้ความเข้ากันได้แบบไบนารีใช้งานไม่ได้ แต่จะไม่ทำให้ความเข้ากันได้ของแหล่งที่มาใช้งานไม่ได้ ดังนั้นผู้ใช้ส่วนใหญ่จึงไม่น่าจะพบปัญหา
- (I99b7d, b/177245490)
เราได้ปรับปรุง Modifier.scrollable ใหม่ ตอนนี้จะใช้อินเทอร์เฟซที่เลื่อนได้แทนคลาส ScrollableController (I4f5a5, b/174485541, b/175294473)
ตอนนี้ Modifier.draggable รับ DraggableState แทนที่จะเป็น Lambda แบบง่ายแล้ว คุณสามารถสร้างสถานะผ่าน
rememberDraggableState { delta -> }เพื่อให้ได้ลักษณะการทำงานแบบเดิม (Ica70f, b/175294473)เพิ่มตัวแก้ไข requiredWidth(IntrinsicSize) และ requiredHeight(IntrinsicSize) สำหรับการกำหนดขนาดที่จำเป็นเป็นขนาดโดยเนื้อแท้ (I0a6b4)
นำ
emptyContent()ที่เลิกใช้งานแล้วออก โปรดใช้{}แทน (Idb33f, b/179432510)ลบ API บางรายการที่เลิกใช้งานไปก่อนหน้านี้ (Ice5da, b/178633932)
การแก้ไขข้อบกพร่อง
- เพิ่มองค์ประกอบ LocalSoftwareKeyboardController ใหม่ API เพื่อแทนที่อินเทอร์เฟซ SoftwareKeyboardController ก่อนหน้าใน TextField (I658b6, b/168778053)
เวอร์ชัน 1.0.0-alpha12
10 กุมภาพันธ์ 2021
androidx.compose.foundation:foundation:1.0.0-alpha12 และ androidx.compose.foundation:foundation-layout:1.0.0-alpha12 เปิดตัวแล้ว เวอร์ชัน 1.0.0-alpha12 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- ตอนนี้ Modifier.pointerInput ต้องใช้คีย์ remember เพื่อระบุ เมื่อควรเริ่มโครูทีนการตรวจหาอินพุตของเคอร์เซอร์ใหม่สำหรับ การอ้างอิงใหม่ (I849cd)
- การอัปเดตการทดสอบ: hasText() จะตรวจสอบทั้งข้อความอินพุตและข้อความป้ายกำกับ/คำแนะนำ/ตัวยึดตำแหน่งในช่องข้อความ (Iab803)
- เพิ่ม PaddingValues.Absolute แล้ว และสามารถใช้ใน API ที่ยอมรับ PaddingValues ได้ (Ia5f30)
- เลิกใช้งาน onImeActionPerformed แล้ว ให้ใช้ KeyboardActions แทน (If0bbd, b/179071523)
- เราได้เปลี่ยนชื่อ ImagePainter เป็น BitmapPainter เพื่อให้สอดคล้องกับ VectorPainter มากขึ้น และเพื่อให้เป็นไปตามหลักเกณฑ์การตั้งชื่อของ ImageBitmap และ ImageVector (Iba381, b/174565889)
- API การทดสอบสตริงย่อยที่ดีขึ้นโดยมีสตริงย่อยเป็นอาร์กิวเมนต์ (Icbe78)
- เพิ่มองค์ประกอบ
InfiniteAnimationPolicyCoroutineContext ที่จะใช้ในภาพเคลื่อนไหวแบบวนซ้ำ โดยค่าเริ่มต้น ระบบจะไม่ติดตั้งนโยบายใดๆ ยกเว้นเมื่อเรียกใช้การทดสอบด้วยComposeTestRule(I50ec4, b/151940543) - ตอนนี้ Animatable.snapTo และ Animatable.stop เป็นฟังก์ชันระงับแล้ว (If4288)
- ComponentActivity.setContent ย้ายไปอยู่ที่ androidx.activity.compose.setContent ในโมดูล androidx.activity:activity-compose แล้ว (Icf416)
- ระบบได้นำเมธอด Destructuring และ copy() ออกจาก หลายๆ คลาสที่ไม่ได้ใช้บ่อย (I26702, b/178659281)
เพิ่มการรองรับคีย์ที่กำหนดเองสำหรับ LazyColumn/LazyRow แล้ว ซึ่งจะช่วยให้เราจัดการการเรียงลำดับรายการใหม่ได้อย่างชาญฉลาดยิ่งขึ้น ดังนั้น สถานะที่คุณจัดเก็บไว้ในบล็อก remember {} จะย้ายไปพร้อมกับรายการเมื่อคุณเรียงลำดับองค์ประกอบใหม่หรือนำรายการออกจากตรงกลาง
LazyColumn { items(users, key = { user -> user.id }) { ... } }เปลี่ยน Indication#createInstance เป็น @Composable และเปลี่ยน LocalIndication ให้มี Indication ไม่ใช่ () -> Indication (I5eeea, b/157150564)
ระบบได้แทนที่
Constraints.enforceด้วยConstraints.constrain(I8b8ea)เลิกใช้งาน loadFontResource แล้ว ใช้ fontResource แทน imageResource, loadImageResource, vectorResource และ loadVectorResource เลิกใช้งานแล้ว ใช้ painterResource แทน (I6b809)
ตอนนี้ตรรกะของ ScrollAxisRange จะใช้ Lambda ที่แสดงผล Float แทนค่า Float โดยตรงเพื่อเหตุผลด้านประสิทธิภาพ (If4a35, b/178657186)
เพิ่ม Semantics ของ EditableText เพื่อทำเครื่องหมายข้อความอินพุตที่แก้ไขได้ของช่องข้อความสำหรับการช่วยเหลือพิเศษ และเพิ่มวิธีการทดสอบที่เกี่ยวข้องเพื่อตรวจสอบ Semantics (I8e07a)
ตอนนี้ Modifier.clickable ไม่รองรับการคลิก 2 ครั้งและการคลิกแบบยาวแล้ว ใช้ Modifier.combinedClickable เพื่อให้ได้ฟังก์ชันนี้ (Iafad1)
เปลี่ยนชื่อ toIntPx() เป็น roundToPx() (I9b7e4, b/173502290)
เปลี่ยนชื่อ IntBounds เป็น IntRect และปรับปรุง API (I1f6ff)
เลิกใช้งาน Modifier.dragGestureFilter แล้ว ให้ใช้
Modifier.pointerInput { detectDragGestures (...)}แทน หรือใช้ Modifier.draggable สำหรับการลากแกนเดียว (I0ba93, b/175294473)เปลี่ยนชื่อ Ambients ให้ตรงกับการเปลี่ยนชื่อ Ambient -> CompositionLocal เดิมแอมเบียนต์ชื่อ AmbientFoo ตอนนี้คอมโพสิชันโลคัลชื่อ LocalFoo (I2d55d)
ย้ายการเลือกไปที่มูลนิธิแล้ว (I7892b)
เช่นเดียวกับที่เราเคยนำ
state { 0 }ที่ใช้ร่วมกันได้ออกไปก่อนหน้านี้ และตอนนี้เรากำลังส่งเสริมการใช้งานอย่างremember { mutableStateOf(0) }เราจะนำsavedInstanceState { 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 ได้แล้ว Closed recomposers จะ ทำการ Recomposition ต่อไปจนกว่าโครูทีนของ Composable Child จะเสร็จสมบูรณ์ เปลี่ยนชื่อ Recomposer.shutDown เป็น cancel เพื่อให้แตกต่างจาก close (Ib6d76)
API ที่เกี่ยวข้องกับ LazyVerticalGrid จะมีเครื่องหมายว่า "ทดลอง" (Ia53e3, b/178519862)
เปลี่ยนชื่อ rememberSavedInstanceState() เป็น rememberSaveable() และย้ายไปยังแพ็กเกจ androidx.compose.runtime.saveable (I1366e, b/177338004)
เปลี่ยนชื่อ RestorableStateHolder เป็น SaveableStateHolder และย้ายไปยังแพ็กเกจ androidx.compose.runtime.saveable เปลี่ยนชื่อเมธอดภายใน RestorableStateProvider เป็น SaveableStateProvider ระบบนำประเภททั่วไปออกเพื่อให้คุณส่ง Any เป็นคีย์ได้ ไม่จำเป็นต้องใช้คำอธิบายประกอบเวอร์ชันทดลองอีกต่อไป (I0902e, b/174598702)
ย้าย Saver, listSaver(), mapSaver(), autoSaver จาก androidx.compose.runtime.savedinstancestate ไปยัง androidx.compose.runtime.saveable (I77fe6)
เปลี่ยนชื่ออาร์ติแฟกต์ androidx:compose:runtime:runtime-saved-instance-state เป็น androidx:compose:runtime:runtime-saveable (I6dcac)
ลบ API ที่เลิกใช้งานมานานหลายรายการในแพ็กเกจ ui (I2f2dc)
ตอนนี้เราเลิกใช้งานอาร์ติแฟกต์ compose:runtime-dispatch แล้ว ตอนนี้คุณจะเห็น MonotonicFrameClock ใน compose:runtime และ AndroidUiDispatcher ใน compose:ui (Ib5c36)
เราได้เปลี่ยนชื่อพารามิเตอร์ใน RounderCornerShape, CutCornerShape และ CornerBasedShape จากซ้าย/ขวา เป็นเริ่ม/สิ้นสุด เพื่อรองรับการมิเรอร์อัตโนมัติของรูปร่างในทิศทาง RTL เราได้เปิดตัว AbsoluteRounderCornerShape และ AbsoluteCutCornerShape สำหรับกรณีที่ไม่ต้องการการมิเรอร์อัตโนมัติ (I61040, b/152756983)
นำ canDrag ออกจาก Modifier.scrollable แล้ว (Id66e7, b/175294473)
เราได้รีแฟคเตอร์ API ที่ปลั๊กอินคอมไพเลอร์ Compose กำหนดเป้าหมาย เพื่อใช้อินเทอร์เฟซแทน คลาสที่เฉพาะเจาะจง นอกจากนี้ อินเทอร์เฟซยังไม่ใช้พารามิเตอร์ประเภทอีกต่อไป
การเปลี่ยนแปลงนี้เป็นการเปลี่ยนแปลงภายในซึ่งไม่ควรส่งผลต่อความเข้ากันได้ของซอร์สโค้ด แต่เป็นการเปลี่ยนแปลงที่ทำให้ไบนารีใช้งานร่วมกันไม่ได้ (I3b922, b/169406779)
นำ Modifier.scaleGestureFilter ออกแล้ว โปรดใช้ Modifier.zoomable แทน หรือใช้
Modifier.pointerInput { detectMultitouchGestures { ... }}(Id5da1, b/175294473)ตอนนี้เราเลิกใช้งาน AnimatedValue/Float แล้ว โปรดใช้ Animatable แทน (I71345, b/177457083)
- นำ CoreText และ CoreTextField ออกจาก API สาธารณะ
- นำการโอเวอร์โหลด SelectionContainer ที่เลิกใช้งานแล้วออก (I99c19)
นำฟังก์ชันการเลื่อนที่ไม่ระงับที่เลิกใช้งานแล้วออก การเปลี่ยนแปลงจากรุ่นที่แล้วจะยังคงอยู่ และตอนนี้ระบบได้นำฟังก์ชันการเลื่อนที่ไม่ระงับออกทั้งหมดแล้ว โปรดแปลงเป็นฟังก์ชันระงับ ที่มีชื่อเดียวกัน โดยจะรับขอบเขตของโครูทีนได้ผ่าน rememberCoroutineScope() (I3d39c, b/178169563)
เลิกใช้งาน androidx.compose.foundation.layout.ConstraintLayout แล้วเพื่อใช้ androidx.constraintlayout.compose.ConstraintLayout แทน คุณจะต้องเพิ่มทรัพยากร Dependency ใน
androidx.constraintlayout:constraintlayout-compose:1.0.0-alpha01(I87adc)เลิกใช้งาน tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter และ pressIndicaitonGestureFilter แล้ว โปรดใช้ Modifier.clickable หรือ Modifier.pointerInput กับฟังก์ชัน detectTapGestures แทน (I6baf9, b/175294473)
นำ
Recomposer.current()ออกแล้ว [Abstract]ComposeView now default to lazily created, window-scoped Recomposers driven by the ViewTreeLifecycleOwner for the window. ระบบจะหยุดการจัดองค์ประกอบใหม่และเครื่องหมายภาพเคลื่อนไหวตาม withFrameNanos ชั่วคราวขณะที่หยุดวงจรของโฮสต์ (I38e11)ตอนนี้ Recomposer.runningRecomposers มี StateFlow ทั่วโลก ของ RecomposerInfo แบบอ่านอย่างเดียวสำหรับการสังเกตสถานะการจัดองค์ประกอบที่กำลังดำเนินการใน กระบวนการ ใช้ API นี้แทน Recomposer.current() ซึ่งตอนนี้เลิกใช้งานแล้ว (If8ebe)
เวอร์ชัน 1.0.0-alpha11
28 มกราคม 2021
androidx.compose.foundation:foundation:1.0.0-alpha11 และ androidx.compose.foundation:foundation-layout:1.0.0-alpha11 เปิดตัวแล้ว เวอร์ชัน 1.0.0-alpha11 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
เลิกใช้งาน scrollBy ที่ไม่ใช่แบบระงับชั่วคราว และนำ scrollTo ที่ไม่ใช่แบบระงับชั่วคราวออก
ตอนนี้เราขอแนะนำให้ใช้ฟังก์ชันระงับเพื่อควบคุมการเลื่อนและรอ ให้การเลื่อนเสร็จสิ้น เราจะเลิกใช้งานและ/หรือนำฟังก์ชันเวอร์ชันที่ไม่ระงับเหล่านี้ออกเป็นส่วนหนึ่งของการเปลี่ยนผ่านนี้ (Ie9ced)
เลิกใช้งาน smoothScrollBy ที่ไม่ใช่แบบระงับ ตอนนี้เราขอแนะนำให้ใช้ฟังก์ชันระงับเพื่อควบคุมการเลื่อนและรอ ให้การเลื่อนเสร็จสิ้น เราจะเลิกใช้งานฟังก์ชันเวอร์ชันที่ไม่ระงับ เหล่านี้ซึ่งเป็นส่วนหนึ่งของการเปลี่ยนผ่านนี้ (I12880)
เพิ่มพารามิเตอร์คำอธิบายเนื้อหาลงในรูปภาพและไอคอนแล้ว ใช้เพื่ออธิบายบริการการช่วยเหลือพิเศษ (I2ac4c)
BasicTextField ได้รับพารามิเตอร์ใหม่ชื่อ "decorationBox" ซึ่งช่วยให้เพิ่มการตกแต่ง เช่น ไอคอน ตัวยึดตำแหน่ง ป้ายกำกับ และอื่นๆ ที่คล้ายกับช่องข้อความ และเพิ่มพื้นที่เป้าหมายการเข้าชมของช่องข้อความ (I16996)
นำพารามิเตอร์ canDrag ออกจาก Modifier.draggable (Ic4bec, b/175294473)
นำ AnimatedFloat.fling ที่ยอมรับ FlingConfig ออกแล้ว โปรดใช้ suspend Animatable.animateDecay แทน (I4659b, b/177457083)
นำ
data classออกจากชั้นเรียนต่อไปนี้- InlineTextContent
- LocaleList
- (I605c7)
ตอนนี้คุณสร้างองค์ประกอบที่คลิกได้ เปิด/ปิดได้ และเลือกได้ภายนอก Composition ได้แล้ว (I0a130, b/172938345, b/175294473)
เลิกใช้งาน ScrollableColumn/Row แล้ว การใช้ ScrollableColumn มีประสิทธิภาพน้อยกว่าเมื่อเทียบกับ LazyColumn เมื่อคุณมีเนื้อหาที่เลื่อนได้จำนวนมาก เนื่องจาก LazyColumn จะคอมโพส/วัด/วาดเฉพาะองค์ประกอบที่มองเห็นได้ เพื่อป้องกันไม่ให้ผู้ใช้ใช้วิธีที่ไม่มีประสิทธิภาพ เราจึงตัดสินใจเลิกใช้งาน ScrollableColumn และ ScrollableRow แล้วแนะนำให้ใช้ LazyColumn และ LazyRow แทน ผู้ใช้ยังคงเลือกได้ว่าจะไม่ใช้ลักษณะการทำงานแบบเลซีและใช้ตัวแก้ไขโดยตรงได้ดังนี้ 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 หรือไม่ ค่าเริ่มต้นคือเท็จ (I0125b, b/152613457)
การแก้ไขข้อบกพร่อง
- onCommit, onDispose และ onActive ถูกเลิกใช้งานแล้วเพื่อรองรับ SideEffect และ DisposableEffect API (If760e)
- มีการปรับปรุง WithConstraints เป็น BoxWithConstraints และย้ายไปที่ foundation.layout (I9420b, b/173387208)
การเปลี่ยนแปลงฟังก์ชันจากโรงงานสำหรับ Font/FontFamily/Typeface
- เพิ่มฟังก์ชัน Factory ที่ขึ้นต้นด้วยตัวพิมพ์ใหญ่
- เลิกใช้งานฟังก์ชันโรงงานก่อนหน้าด้วยตัวพิมพ์เล็ก ตัวอักษรแรก
- ฟังก์ชัน Factory ใหม่จะแสดงผล FontFamily แทนคลาสย่อย
- ซ่อนตัวสร้างของคลาสย่อยเพื่อให้สร้างได้ผ่านฟังก์ชัน Factory เท่านั้น
- เปลี่ยนชื่อ Font.asFontFamily เป็น Font.toFontFamily
- (I42aa7)
เปิดตัว
ComposeContentTestRuleซึ่งขยายComposeTestRuleและกำหนดsetContentซึ่งถูกนำออกจากComposeTestRuleเพิ่มเมธอดจาก FactorycreateEmptyComposeRule()ซึ่งจะแสดงผลComposeTestRuleและไม่เปิดใช้กิจกรรมให้คุณ ใช้เมื่อต้องการเปิดใช้งานกิจกรรมระหว่างการทดสอบ เช่น ใช้ActivityScenario.launch(I9d782, b/174472899)ตอนนี้ animateAsState คือ animateFooAsState โดยที่ Foo คือ ประเภทของตัวแปรที่กำลังเคลื่อนไหว เช่น Float, Dp, Offset ฯลฯ (Ie7e25)
ตอนนี้ความหนาแน่นเป็นขอบเขตตัวรับสำหรับอินเทอร์เฟซการจัดเรียงแล้ว (I18aad)
TextFieldValue ยอมรับ AnnotatedString อย่างไรก็ตาม การเปลี่ยนแปลงนี้เป็น การเปลี่ยนแปลง API เท่านั้น และยังไม่ได้ ใช้การแก้ไขข้อความหลายสไตล์
- นำ
initialออกจากพารามิเตอร์ของตัวสร้าง EditingBuffer (I326d5)
- นำ
ตอนนี้เราเลิกใช้งาน invalidate และ compositionReference() แล้ว และแนะนำให้ใช้ currentRecomposeScope และ rememberCompositionReference แทนตามลำดับ (I583a8)
เปลี่ยน AnnotatedString ให้ขยายจาก kotlin.CharSequence ดังนั้น ตอนนี้ length และ subSequence จึงเป็นฟังก์ชันอินสแตนซ์ และระบบได้นำฟังก์ชันส่วนขยายออกแล้ว (Iaf429)
ระบบจะแทนที่ระยะเวลาและระยะเวลาทำงานด้วยมิลลิวินาทีแบบยาว และขั้นตอนนี้จะนำทรัพยากร Dependency ของอินพุตของ Pointer ในคลาสเหล่านั้นออก (Ia33b2, b/175142755, b/177420019)
โปรดทราบว่า RememberObserver จะแทนที่ CompositionLifecycleObserver และตอนนี้ CompositionLifecycleObserver เลิกใช้งานแล้ว
RememberObserverเป็นการแทนที่CompositionLifecycleObserverโดยมีการแก้ไขความหมายและ เปลี่ยนชื่อเมธอด การเปลี่ยนไปใช้ API ใหม่สามารถทำได้โดยอัตโนมัติ สำหรับออบเจ็กต์ที่ระบบจดจำเพียงครั้งเดียว ซึ่งเป็นแนวทางที่แนะนำ และยังคงเป็นแนวทางที่แนะนำต่อไป อย่างไรก็ตาม หากมีการจดจำข้อมูลอ้างอิงมากกว่า 1 ครั้งในองค์ประกอบonRememberedจะเรียกใช้ สำหรับข้อมูลอ้างอิงแต่ละรายการโดยที่onEnterจะเรียกใช้เพียงครั้งเดียวonEnterจะถูกเรียกใช้หลายครั้งหากใช้ออบเจ็กต์ในองค์ประกอบย่อย เช่นWithConstraintsและScaffoldซึ่งทำให้การรับประกันการเรียกใช้onEnterครั้งเดียวไม่น่าเชื่อถือและถูกนำออกสำหรับRememberObserverRememberObserverเพิ่มonAbandonedซึ่งจะเรียกใช้หากมีการส่งคืนอินสแตนซ์RememberObserverจากการเรียกกลับที่ส่งไปยังrememberแต่ไม่ได้จดจำไว้ในสถานะการเรียบเรียง และด้วยเหตุนี้ จึงจะไม่มีการเรียกใช้onRememberedปัญหานี้อาจเกิดขึ้นหากข้อยกเว้นสิ้นสุดการคอมโพสก่อนที่จะเสร็จสมบูรณ์ หรือระบบทิ้งการคอมโพสเนื่องจากสถานะที่ใช้สร้างการคอมโพสไม่อัปเดตแล้วหรือไม่จำเป็นอีกต่อไป หากอินสแตนซ์ของRememberObserverที่ตามคำแนะนำการอ้างอิงเดียวด้านบนติดตามแหล่งข้อมูลภายนอก ทั้งonForgottenและonAbandonedจะระบุว่า ไม่จำเป็นต้องใช้แหล่งข้อมูลอีกต่อไป หากออบเจ็กต์ติดตามงานที่เริ่มหรือทรัพยากรที่จัดสรรในonRememberedคุณสามารถละเว้นonAbandonedได้เนื่องจากระบบจะไม่เรียกใช้หากเรียกใช้onRemembered(I02c36)เปลี่ยนชื่อ TransformedText.transformedText เป็น TransformedText.text
- TransformedText ไม่ใช่คลาสข้อมูลอีกต่อไป (Ie672a)
ชั้นเรียนต่อไปนี้ไม่ใช่ชั้นเรียนข้อมูลอีกต่อไป
- AnnotatedString
- ParagraphStyle
- SpanStyle
- TextStyle
- FontWeight
- TextDecoration
- TextGeometricTransform
- TextIndex
- TextLayoutResult
- TextLayoutInput (Iaff99)
นำเมธอด monotonicFrameAnimationClockOf ที่เป็นเวอร์ชันทดลองออก (Ib753f, b/170708374)
เลิกใช้งานเมธอดพิกัดส่วนกลางและสร้าง เมธอดพิกัดใหม่ที่อิงตามหน้าต่าง (Iee284)
โปรดใช้ ImeAction.None แทน ImeAction.NoAction
- โปรดใช้ ImeAction.Default แทน ImeAction.Unspecified (Ie1bcc)
ตอนนี้เราได้ทำเครื่องหมาย FocusRequester.createRefs ว่าเป็นการทดลองแล้ว เนื่องจากอาจมีการเปลี่ยนแปลง (I2d898, b/177000821)
SemanticsPropertyReceiver.hidden เปลี่ยนชื่อเป็น invisibleToUser และทำเครื่องหมาย @ExperimentalComposeUiApi เปลี่ยนชื่อ AccessibilityRangeInfo เป็น ProgressBarRangeInfo เปลี่ยนชื่อ stateDescriptionRange เป็น progressBarRangeInfo AccessibilityScrollState เปลี่ยนชื่อเป็น ScrollAxisRange horizontalAccessibilityScrollState เปลี่ยนชื่อเป็น horizontalScrollAxisRange verticalAccessibilityScrollState เปลี่ยนชื่อเป็น verticalScrollAxisRange (Id3148)
เปลี่ยน VisualTransformation ให้เป็นอินเทอร์เฟซที่ใช้งานได้ (I3bba4)
ใช้ประโยชน์จาก TestCoroutineDispatcher ในการทดสอบ (I532b6)
นำ PointerInputData ออกและแก้ไข PointerInputChange เพื่อให้มีช่องทั้งหมดของ PointerInputData ทำให้ PointerInputEvent และ PointerInputEventData เป็นแบบภายในเนื่องจากไม่ได้ใช้ใน API สาธารณะใดๆ (Ifff97, b/175142755)
เปลี่ยนชื่อ TextInputService.onStateUpdated เป็น updateState (Id4853)
นำ displaySize ออกเนื่องจากควรหลีกเลี่ยง โดยปกติแล้ว ควรใช้ขนาดของ onRoot() หรือขนาดหน้าต่างเป็นอย่างน้อย (I62db4)
เวอร์ชัน 1.0.0-alpha10
13 มกราคม 2021
androidx.compose.foundation:foundation:1.0.0-alpha10 และ androidx.compose.foundation:foundation-layout:1.0.0-alpha10 เปิดตัวแล้ว เวอร์ชัน 1.0.0-alpha10 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- ImeOptions และ KeyboardOptions ไม่ใช่คลาสข้อมูลอีกต่อไป (I3c898, b/168684531)
- การเปลี่ยนแปลง VisualTransformation API
- เปลี่ยนชื่อ OffsetMap เป็น OffsetMapping
- เปลี่ยนชื่อ OffsetMapping.identityOffsetMap เป็น OffsetMapping.Identity
- PasswordTransformation ไม่ใช่คลาสข้อมูลอีกต่อไป
- ย้าย OffsetMapping ไปยังไฟล์ของตัวเอง
- (I0bdf3)
- การเปลี่ยนแปลง EditOperations API
- เปลี่ยนชื่อ EditOperation เป็น EditCommand
- เพิ่มคำต่อท้าย Command สำหรับการติดตั้งใช้งานจริงของ EditOperation
- EditCommand ไม่ใช่คลาสข้อมูลอีกต่อไป
- เปลี่ยนชื่อฟังก์ชัน EditOperation.process เป็น applyTo
- เปลี่ยนชื่อ InputEventListener เป็น InputEventCallback
- (I0a366)
- แก้ไขความเร็วให้มีส่วนประกอบและ การดำเนินการทางคณิตศาสตร์ (Ib0447)
- เปลี่ยนชื่อ @ExperimentalTesting เป็น @ExperimentalTestApi เพื่อให้สอดคล้องกับคำอธิบายประกอบ API ทดลองที่คล้ายกัน (Ia4502, b/171464963)
- เพิ่มเมธอด stickyHeader เวอร์ชันทดลองสำหรับ LazyColumn/LazyRow (I0a81d)
- เปลี่ยนชื่อ Color.useOrElse() เป็น Color.takeOrElse() (Ifdcf5)
- เลิกใช้งาน TestUiDispatcher แล้ว โปรดใช้ Dispatchers.Main แทน (Ic171f, b/175385255)
- เพิ่มสวิตช์เปิด/ปิดไปยัง foundation Strings.kt (I4a5b7, b/172366489)
- ย้าย nativeClass ไปยัง โมดูล ui และทำให้เป็นภายใน อัปเดตการใช้งาน nativeClass ในการติดตั้งใช้งาน equals เพื่อใช้ "is MyClass" แทน (I4f734)
- เลิกใช้งาน FlowRow และ FlowColumn แล้ว โปรดใช้เลย์เอาต์ที่กำหนดเองแทน (I09027)
- เลิกใช้งาน Modifier.focus() และ Modifier.focusRequester() แล้ว โปรดใช้ Modifier.focusModifier() และ Modifier.focusReference() แทน (I75a48, b/175160751, b/175160532, b/175077829)
- เปิดตัว SelectionRegistrar.notifySelectableChange เพื่อแจ้งการอัปเดตที่เลือกได้ไปยัง SelectionManager (I6ff30, b/173215242)
- เปลี่ยน
fun Dp.isFinite()เป็นval Dp.isFinite(I50e00) - เปลี่ยนชื่อ Constraints#satisfiedBy เป็น isSatisfiedBy (I9cf5c)
- เพิ่ม isSpecified, isUnspecified และ useOrElse สำหรับ คลาสอินไลน์ที่มีค่าคงที่ Unspecified (I93f7b, b/174310811)
การแก้ไขข้อบกพร่อง
- API ใหม่ที่ใช้โครูทีน
Animatableซึ่งรับประกันการแยกกันโดยเด็ดขาด ระหว่างภาพเคลื่อนไหว DecayAnimationSpec ใหม่เพื่อรองรับภาพเคลื่อนไหวแบบลดทอนหลายมิติ (I820f2, b/168014930) - เพิ่มการรองรับช่องข้อความที่ปิดใช้และแบบอ่านอย่างเดียว (I35279, b/171040474, b/166478534)
- ตอนนี้
animate()ถูกแทนที่ด้วยanimateAsState()ซึ่งจะแสดงผลเป็นState<T>แทนTซึ่งจะช่วยให้ประสิทธิภาพดีขึ้น เนื่องจากสามารถจำกัดขอบเขตการลบล้างให้แคบลง ในตำแหน่งที่อ่านค่าสถานะ (Ib179e) - เพิ่ม API บทบาทของ Semantics และเพิ่มบทบาทเป็นพารามิเตอร์ไปยัง SemanticsModifier ที่คลิกได้ เลือกได้ และสลับได้ เปลี่ยน Modifier.progressSemantics เพื่อให้แถบเลื่อนใช้ได้ด้วย (I216cd)
- ตอนนี้คุณเข้าถึง keyEvent ดั้งเดิมได้ผ่าน keyEvent.nativeKeyEvent (I87c57, b/173086397)
เวอร์ชัน 1.0.0-alpha09
16 ธันวาคม 2020
androidx.compose.foundation:foundation:1.0.0-alpha09 และ androidx.compose.foundation:foundation-layout:1.0.0-alpha09 เปิดตัวแล้ว เวอร์ชัน 1.0.0-alpha09 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
เพิ่มอินเทอร์เฟซที่เลื่อนได้
ซึ่งจะช่วยให้ถือว่า ScrollState และ LazyListState เป็นประเภททั่วไปได้ และช่วยให้สามารถใช้การเลื่อนที่กำหนดเองได้ในทั้ง 2 ประเภท
นอกจากนี้ ยังย้าย smoothScrollBy ไปยังฟังก์ชันส่วนขยายใน Scrollable เพื่อใช้ประโยชน์จากฟังก์ชันนี้ด้วย (I2153b)
เพิ่ม LazyVerticalGrid แล้ว (I17267, b/162213211)
เลิกใช้งาน LazyColumnFor, LazyRowFor, LazyColumnForIndexed และ LazyRowForIndexed ใช้ LazyColumn และ LazyRow แทน (I5b48c)
สำหรับ API การป้อนข้อมูลพอยน์เตอร์ที่ระงับแล้ว เราได้เปลี่ยนชื่อ HandlePointerInputScope เป็น AwaitPointerEventScope และ handlePointerInput() เป็น awaitPointerEventScope() (Idf0a1, b/175142755)
เพิ่ม LazyListState.layoutInfo ซึ่งแสดงรายการขนาดและออฟเซ็ตของรายการที่มองเห็นในปัจจุบัน (If8678, b/170472532)
นำคำอธิบายประกอบ ExperimentalPointerInput ออกแล้ว (Ia7a24)
เพิ่มการรองรับ InteractionState สำหรับ TextField แล้ว (I61d91)
เพิ่มพารามิเตอร์ reverseLayout สำหรับ LazyColumn/Row เมื่อ
trueจะมีการจัดองค์ประกอบรายการจากด้านล่างขึ้นด้านบน และLazyListState.firstVisibleItemIndex == 0จะหมายความว่ารายการแรกจะอยู่ที่ด้านล่าง (I552ae, b/166589935)เพิ่มพารามิเตอร์ verticalArrangement สำหรับ LazyColumn แล้ว เพิ่มพารามิเตอร์ horizontalArrangement สำหรับ LazyRow แล้ว การจัดเรียงช่วยให้เราเพิ่มช่องว่างระหว่างรายการและระบุการจัดเรียงรายการได้เมื่อมีรายการไม่เพียงพอที่จะเติมขนาดขั้นต่ำทั้งหมด (Icf79a, b/170394300)
ตอนนี้ detectMultitouchGestures ใช้การเรียกกลับ 1 รายการที่มีพารามิเตอร์ centroid, pan, zoom และ rotate ร่วมกัน (Ie6e1c)
ย้าย ContentDrawScope ไปยัง ui-graphics module เพื่อให้อยู่กับ DrawScope (Iee043, b/173832789)
การแก้ไขข้อบกพร่อง
- ตอนนี้ Lambda ในตัวปรับออฟเซ็ตจะแสดงผล IntOffset แทน Float (Ic9ee5, b/174137212, b/174146755)
นำ SlotTable, SlotReader และ SlotWriter ออกจาก API สาธารณะ ก่อนหน้านี้ฟังก์ชันเหล่านี้ถูกทำเครื่องหมายเป็น InternalComposeAPI ตอนนี้ฟีเจอร์นี้อยู่ภายใน โมดูล Compose
เราได้เพิ่ม CompositionData และ CompositionGroup เพื่อใช้แทน ui-tooling API ในการดึงข้อมูลองค์ประกอบ API เหล่านี้เป็นแบบสาธารณะ แต่ไม่ได้มีไว้สำหรับใช้ภายนอก API เครื่องมือ UI เนื่องจาก API เหล่านี้ให้ข้อมูลดิบที่ API เครื่องมือ UI ตีความ (I31a9c)
ปรับโครงสร้าง ShaderBrush เพื่อสร้างอินสแตนซ์ Shader แบบเลซีเมื่อมีข้อมูลการปรับขนาดของสภาพแวดล้อมการวาด ซึ่งมีประโยชน์ในการกำหนดการไล่ระดับสีที่ ครอบคลุมขอบเขตการวาดทั้งหมดของ Composable ในเวลาที่ทำการคอมโพส โดยไม่ต้อง ใช้การติดตั้งใช้งาน DrawModifier ที่กำหนดเอง
เลิกใช้งาน API ตัวสร้างฟังก์ชันการไล่ระดับสี เพื่อสนับสนุนเมธอด Factory ในออบเจ็กต์การไล่ระดับสี (I511fc, b/173066799)
เลิกใช้งาน Modifier.focusObserver แล้ว ใช้ Modifier.onFocusChanged หรือ Modifier.onFocusEvent แทน (I30f17, b/168511863, b/168511484)
ตอนนี้ Autofill API เป็น API เวอร์ชันทดลองและต้องเลือกใช้ (I0a1ec)
เพิ่มการประกาศการแยกโครงสร้างเพื่อสร้างอินสแตนซ์ FocusRequester (I35d84, b/174817008)
เปลี่ยนชื่อ accessibilityLabel เป็น contentDescription เปลี่ยนชื่อ accessibilityValue เป็น stateDescription (I250f2)
เปิดตัวฟังก์ชันใหม่หลายรายการใน SelectionRegistrar และเปลี่ยนชื่อ onPositionChange เป็น notifyPositionChange (Ifbaf7)
AndroidOwner made internal (Ibcad0, b/170296980)
ฟังก์ชัน infiniteRepeatable ใหม่สำหรับสร้าง InfiniteRepeatableSpec (I668e5)
Applierอินเทอร์เฟซมีการเปลี่ยนแปลงเพื่อลดความซับซ้อน ในการสร้างแผนผังจากล่างขึ้นบนแทนที่จะเป็นจากบนลงล่างเปลี่ยนชื่อเมธอด
insert()เป็นinsertTopDown()แล้วเพิ่มวิธีการใหม่
insertBottomUp()แล้วโดยแอปพลิเคชันจะแทรกโหนดลงในทรีที่กำลังแก้ไข โดยใช้
insertTopDown()หรือinsertBottomUp()ขึ้นอยู่กับ ว่ารายการใดทำงานได้ดีกว่าต้นไม้บางต้น เช่น
LayoutNodeและViewการสร้างจากล่างขึ้นบนจะมีประสิทธิภาพมากกว่าจากบนลงล่าง ก่อนการเปลี่ยนแปลงนี้ ต้องมีสแต็กของแทรกเพื่อใช้การสร้างจากล่างขึ้นบน ซึ่ง ต้องคัดลอกไปยังทุกแอปพลิเคชันที่ต้องใช้การสร้างจากล่างขึ้นบน เพื่อประสิทธิภาพ การเปลี่ยนแปลงนี้จะApplierลบล้างinsertBottomUp()เพื่อสร้างแผนภูมิต้นไม้จากล่างขึ้นบนและinsertTopDown()เพื่อสร้างแผนภูมิต้นไม้จากบนลงล่าง (Icbdc2)เพิ่ม PainterResource API เพื่อจัดการการโหลดออบเจ็กต์ Painter แบบทึบ จากรูปแบบชิ้นงานที่แปลงเป็นแรสเตอร์ (เช่น PNG) หรือ VectorDrawable ผู้บริโภคไม่จำเป็นต้องระบุประเภทของชิ้นงานล่วงหน้าอีกต่อไป และสามารถเรียกใช้เมธอดนี้เพื่อรับออบเจ็กต์ Painter เพื่อใช้ใน Composable ของรูปภาพหรือตัวแก้ไข Painter (I2c703, b/173818471)
เพิ่มฟังก์ชัน Factory buildAnnotatedString เพื่อสร้าง AnnotatedString ฟังก์ชัน builder ของ AnnotatedString ที่เลิกใช้งานแล้ว (Idfe0b)
เวอร์ชัน 1.0.0-alpha08
2 ธันวาคม 2020
androidx.compose.foundation:foundation:1.0.0-alpha08 และ androidx.compose.foundation:foundation-layout:1.0.0-alpha08 เปิดตัวแล้ว เวอร์ชัน 1.0.0-alpha08 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- นำพารามิเตอร์
maxLinesออกจากCoreTextFieldหากต้องการจำกัดความสูงของช่องข้อความตามจำนวนบรรทัด ให้ใช้BasicTextFieldแทน (Iec002) - เปลี่ยนวิธีการ
await*TouchSlop()เพื่อไม่ให้ตรวจหาการวางเคอร์เซอร์ลงและเปลี่ยนชื่อเป็น*OrCancellationนอกจากนี้ยังนำความจำเป็นในการใช้พารามิเตอร์orientationLockออกด้วย (Ie96e1) - เพิ่มการตรวจสอบ Lint สำหรับการตั้งชื่อและตำแหน่งของพารามิเตอร์ Lambda ที่ใช้ร่วมกันได้ เพื่อตรวจสอบความสอดคล้องกับหลักเกณฑ์ของ Compose
นอกจากนี้ เรายังย้ายข้อมูล API บางรายการโดยใช้
childrenเป็นชื่อของ Lambda ต่อท้ายไปยังcontentตามการตรวจสอบและคำแนะนำของ Lint (Iec48e) - ย้าย API ของ
foundation:foundation-textไปยังfoundation:foundationแล้ว โครงสร้างแพ็กเกจยังคงเหมือนเดิม (Id3eb2) - เครื่องตรวจจับท่าทางสัมผัสแบบมัลติทัชใหม่ ซึ่งรวมถึง ฟังก์ชันช่วยในการตรวจจับการหมุน การซูม และการเลื่อน (Ic459d)
- เครื่องตรวจจับท่าทางลากแบบใหม่ที่ระงับ API อินพุตของเคอร์เซอร์ รวมถึงการล็อกการวางแนว (Icef25)
- เปลี่ยนชื่อ VectorAsset เป็น ImageVector ย้ายและเปลี่ยนชื่อ VectorAsset เป็น Builder เพื่อ ให้เป็นคลาสในของ ImageVector ตาม หลักเกณฑ์ของสภา API เพิ่มชื่อแทนของ VectorAssetBuilder เพื่อลิงก์ไปยัง ImageVector.Builder เพื่อความเข้ากันได้ (Icfdc8)
- เปลี่ยนชื่อ ImageAsset และ เมธอดที่เกี่ยวข้องเป็น ImageBitmap (Ia2d99)
- ย้ายพร็อพเพอร์ตี้ความหมายพื้นฐานไปยัง ui (I6f05c)
เพิ่ม API การเลื่อนตามโครูทีน
เพิ่ม LazyListState.snapToItem และ LazyListState.smoothScrollBy รวมถึง API ระดับล่าง สำหรับการควบคุมการเลื่อน API เหล่านี้มีอินเทอร์เฟซระงับเพื่อควบคุมการเลื่อน ซึ่งจะรอจนกว่าการเลื่อนจะเสร็จสิ้นก่อนจึงจะแสดงผล (Ie5642)
เพิ่มพารามิเตอร์ singleLine ลงใน BasicTextField, TextField และ OutlinedTextField ตั้งค่าพารามิเตอร์นี้เป็น true เพื่อให้ช่องข้อความเป็นบรรทัดเดียวที่เลื่อนได้ในแนวนอน (I57004, b/168187755)
เพิ่มเครื่องตรวจจับท่าทางสัมผัสสำหรับการแตะ แตะสองครั้ง กดค้าง และการกดโดยใช้การป้อนข้อมูลตัวชี้แบบระงับใหม่ นอกจากนี้ เรายังได้เพิ่มยูทิลิตีบางอย่างเพื่อให้ นักพัฒนาแอปเขียนเครื่องตรวจจับท่าทางสัมผัสของตนเองได้ง่ายขึ้น (I00807)
มีการเพิ่ม Modifier.focusable ใน Foundation ใช้เพื่อเพิ่มลักษณะการทำงานที่โฟกัสได้ให้กับคอมโพเนนต์ โดยมีซีแมนทิกส์และการช่วยเหลือพิเศษที่ถูกต้อง (I41eb9, b/152525426, b/162865824)
ระบบได้นำ API ที่เลิกใช้งานไปก่อนหน้านี้ออกแล้ว โดยได้นำ Border ออกและใช้ BorderStroke แทน เรานำ Modifier.drawBorder ออกแล้ว โปรดใช้ Modifier.border แทน เราได้นำ Modifier.gravity ออกแล้ว โปรดใช้ Modifier.align แทน นำ Stack ออกแล้ว ให้ใช้ Box แทน (I32c2b, b/172470874)
AbsoluteArrangement เปลี่ยนชื่อเป็น Arrangement.Absolute แล้ว (If26f2)
การแก้ไขข้อบกพร่อง
- ย้าย 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)
- พารามิเตอร์การจัดแนวของ Box เปลี่ยนชื่อเป็น contentAlignment (I2c957)
- เปลี่ยนชื่อตัวแก้ไข offsetPx เป็น offset ตอนนี้ฟังก์ชันเหล่านี้รับพารามิเตอร์ Lambda แทน State แล้ว (Ic3021, b/173594846)
- เพิ่ม WindowManager.isWindowFocused เพื่อตรวจสอบว่าหน้าต่างโฮสต์อยู่ในโฟกัสหรือไม่ และ WindowFocusObserver ที่ให้การเรียกกลับ onWindowFocusChanged (I53b2a, b/170932874)
- เพิ่มพารามิเตอร์ resetInput ไปยัง TextInputService#onStateUpdated (I3e8f5, b/172239032, b/171860947)
- อัปเดต TextFieldValue API
- ทำให้ TextFieldValue.composition เป็นแบบอ่านอย่างเดียว
- นำข้อยกเว้นที่เกิดขึ้นสำหรับช่วงการเลือกที่ไม่ถูกต้องออกแล้ว (I4a675, b/172239032)
- เลิกใช้งาน Ambient ที่มี
Ambientเป็นคำต่อท้าย และแทนที่ด้วยพร็อพเพอร์ตี้ใหม่ที่ขึ้นต้นด้วย Ambient ตามหลักเกณฑ์อื่นๆ ของ Ambient และ Compose API (I33440) - เพิ่ม Wrapper ของแบบอักษร Android แล้ว คุณโหลด Android
Typeface ผ่านฟังก์ชัน
typefaceได้ เช่นtypeface(Typeface.DEFAULT)เปลี่ยนชื่อtypefaceFromFontFamily()เป็นtypeface()(I52ab7) ด้วย - เพิ่มการตรวจสอบ Lint เพื่อตรวจสอบว่าโรงงานตัวแก้ไขใช้
androidx.compose.ui.composed {}ภายในแทนที่จะทำเครื่องหมายเป็น@Composable(I3c4bc) - เพิ่มการตรวจสอบ Lint เพื่อตรวจสอบว่าฟังก์ชัน Factory ของตัวแก้ไขได้รับการกำหนดเป็นส่วนขยายในตัวแก้ไข เพื่อให้สามารถเชื่อมโยงเข้าด้วยกันได้อย่างราบรื่น (I07981)
- เปลี่ยนชื่ออาร์กิวเมนต์ Semantics mergeAllDescendants เป็น mergeDescendants (Ib6250)
- การควบคุมเวลาในการทดสอบ (TestAnimationClock และการใช้งาน) อยู่ในระยะทดลองแล้ว (I6ef86, b/171378521)
- Remove old ui-test module and its stubs (I3a7cb)
- เปลี่ยนชื่อ TextUnit.Inherit เป็น TextUnit.Unspecified เพื่อให้สอดคล้องกับหน่วยอื่นๆ (Ifce19)
- เราได้อัปเดตอินเทอร์เฟซการจัดแนวและทำให้ใช้งานได้ (I46a07, b/172311734)
foundation:foundation-textmodule has been merged intofoundation:foundation(Idac0f)- เลิกใช้งาน place(Offset) และ placeRelative(Offset) ใช้การโอเวอร์โหลดที่มีออฟเซ็ต int แทน (I4c5e7)
- เปลี่ยนชื่อ
idเป็นlayoutIdสำหรับLayoutIdParentDataแล้ว เปลี่ยนชื่อMeasurable.idเป็นMeasurable.layoutIdแล้ว (Iadbcb, b/172449643)
เวอร์ชัน 1.0.0-alpha07
11 พฤศจิกายน 2020
androidx.compose.foundation:foundation:1.0.0-alpha07, androidx.compose.foundation:foundation-layout:1.0.0-alpha07 และ androidx.compose.foundation:foundation-text:1.0.0-alpha07 จะเปิดตัว เวอร์ชัน 1.0.0-alpha07 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- เช่นเดียวกับ
Modifier.fillMaxSize[Width|Height]ตอนนี้เรารองรับเศษส่วนในModifier.fillParentMaxSize[Width|Height]ภายในขอบเขตของLazyColumn/Row(I797e2, b/166586426) - นำ
KeyboardOptions.toImeOptionsออกจาก API สาธารณะแล้ว (Ic2e45) - เลิกใช้งาน AmbientTextStyle, ProvideTextStyle และ AmbientContentColor แล้ว แต่ให้ใช้เวอร์ชันใหม่ที่มีอยู่ในคลัง Material แทน สำหรับแอปพลิเคชันที่ไม่ใช่ Material คุณควรสร้างระบบการออกแบบของคุณเองแทน โดยเฉพาะอย่างยิ่งธีมแอมเบียนต์ที่สามารถใช้ในคอมโพเนนต์ของคุณเองได้ (I74acc, b/172067770)
- เลิกใช้งาน foundation.Text แล้วและแทนที่ด้วย material.Text หากต้องการใช้ API ข้อความพื้นฐานที่ไม่แสดงความคิดเห็นซึ่งไม่ได้ใช้ค่าจากธีม โปรดดู androidx.compose.foundation.BasicText (If64cb)
- เพิ่ม maxLines ลงใน TextField (Ib2a5b)
- อัปเดต TextField ให้ยอมรับ KeyboardOptions (Ida7f3)
- เพิ่ม KeyboardOptions สำหรับใช้ใน TextField (I9ca32)
- เพิ่ม BasicText เป็น API ที่ไม่มีข้อจำกัดด้านการออกแบบสำหรับข้อความ ซึ่งเทียบเท่ากับ BasicTextField (I28268)
- นำ ExperimentalLazyDsl annotation ออกแล้ว ตอนนี้คุณใช้ LazyColumn/LazyRow ได้โดยไม่ต้องเพิ่ม @OptIn (Idab7a, b/166584730)
- เลิกใช้งาน BaseTextField แล้ว โปรดใช้ BasicTextField แทน (I896eb)
- เพิ่ม BasicTextField เพื่อแทนที่ทั้ง CoreTextField และ BaseTextField (Id4cea)
- นำ LazyColumnItems/LazyRowItems ที่เลิกใช้งานแล้วออก (I1d8a8)
- ระบบได้นำ Composable ที่เลิกใช้งานแล้วสำหรับการปรับขนาดให้เป็นการวัดค่าโดยธรรมชาติออกแล้ว (I18537, b/171811496)
- เปลี่ยนชื่อ relativePaddingFrom เป็น paddingFrom เพิ่มตัวแก้ไข paddingFromBaseline เพื่อความสะดวกในการระบุระยะห่างจากขอบเขตเลย์เอาต์ไปยังบรรทัดฐานของข้อความ (I0440a, b/170633813)
- พารามิเตอร์ matchHeightConstraintsFirst ได้รับการเพิ่มลงในตัวแก้ไข aspectRatio ซึ่งใช้เพื่อระบุตัวแก้ไขให้ปรับขนาดตามข้อจำกัดด้านความสูงก่อนที่จะลองใช้ข้อจำกัดด้านความกว้าง (Ie7c43, b/155290593)
- นำ DpConstraints ที่เลิกใช้งานแล้วออกแล้ว (I87884, b/171702471)
การแก้ไขข้อบกพร่อง
- เปิดตัวคลาส ScaleFactor
inline เพื่อแสดงปัจจัย
การปรับขนาดสำหรับแกนนอนและแกนตั้ง
โดยไม่ขึ้นต่อกันเพื่อ
รองรับกรณีการใช้งานการปรับขนาดที่ไม่สม่ำเสมอ
- เพิ่มเมธอด computeScaleFactor ลงใน ContentScale
- เพิ่ม ContentScale.FillBounds เพื่อทำการ ปรับขนาดแบบไม่สม่ำเสมอเพื่อยืดขอบเขต src ให้ครอบคลุมปลายทางทั้งหมด
- เพิ่มวิธีการดำเนินการเพื่อคำนวณ พารามิเตอร์ ScaleFactor ด้วยพารามิเตอร์ Size
- (Ic96a6, b/172291582)
- ย้าย captureToBitmap ไปยัง captureToImage (I86385)
- ทำเครื่องหมาย CoreText เป็น @InternalTextApi ใช้ BasicText แทน (I6aaeb)
- เปลี่ยนชื่อ KeyboardOptions เป็น ImeOptions (I82f36)
- ย้าย KeyboardType และ ImeAction ไปยัง KeyboardOptions (I910ce)
- มีการทำเครื่องหมาย CoreTextField เป็น @InternalTextApi ใช้ BasicTextField แทน (Ie2469)
- นำ ExperimentalSubcomposeLayoutApi ออกแล้ว ตอนนี้คุณใช้ SubcomposeLayout ได้โดยไม่ต้องเพิ่ม @OptIn (I708ad)
- เปิดตัวโมดูล ui-test-junit4 (Ib91f8)
- อัปเดต Icon API เพื่อรับ Color.Unspecified เป็นสีการปรับสีที่เป็นไปได้ ซึ่งจะวาดชิ้นงานหรือ Painter ที่ระบุโดยไม่มี ColorFilter ก่อนหน้านี้ การพยายามไม่สนใจการปรับสีด้วย Color.Unspecified จะปรับสีด้วยสีโปร่งใส และไม่มีการแสดงผลใดๆ เลย (I049e2, b/171624632)
- ย้าย MeasureResult ออกจาก MeasureScope (Ibf96d, b/171184002)
- เราได้ย้ายสัญลักษณ์ที่เกี่ยวข้องกับเลย์เอาต์หลายรายการจาก androidx.compose.ui ไปยัง androidx.compose.layout.ui (I0fa98, b/170475424)
- ย้าย androidx.ui.test ไปยัง androidx.compose.ui.test (I9ffdb)
- ย้าย FirstBaseline และ LastBaseline ไปยังแพ็กเกจ androidx.compose.ui.layout (Ied2e7)
- เพิ่ม SelectionContainer โดยไม่มีการเรียกกลับ (Ibfadb)
- เพิ่มการทดสอบสำหรับตำแหน่งของ SelectionHandles ใน SelectionContainer (Ie93db)
- เพิ่มตัวเลือก IME การแก้ไขอัตโนมัติของแป้นพิมพ์ (I57b8d)
เวอร์ชัน 1.0.0-alpha06
28 ตุลาคม 2020
androidx.compose.foundation:foundation:1.0.0-alpha06, androidx.compose.foundation:foundation-layout:1.0.0-alpha06 และ androidx.compose.foundation:foundation-text:1.0.0-alpha06 จะเปิดตัว เวอร์ชัน 1.0.0-alpha06 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ย้าย androidx.compose.foundation.Icon ไปยัง androidx.compose.material.Icon แล้ว นอกจากนี้ คุณยังใช้คอมโพเนนต์รูปภาพ / Modifier.paint() กับ Painter ได้หากไม่ต้องการใช้ไลบรารี Material (I9f622)
- เพิ่ม interactionState ใน Modifier.scrollable, ScrollableColumn และ LazyColumnFor (I81566, b/169509805)
- เพิ่ม alignByBaseline ลงใน RowScope และเปลี่ยนชื่อ alignWithSiblings เป็น alignBy (I06503, b/170628732)
- Box ได้รับการปรับให้เป็นฟังก์ชันอินไลน์ (Ibce0c, b/155056091)
- เพิ่ม maxLines ลงใน CoreTextField (Ibee58, b/143687793)
- เพิ่มการตัดข้อความใน CoreTextField (I21a4b)
การแก้ไขข้อบกพร่อง
- เลิกใช้งาน VectorPainter เพื่อใช้ rememberVectorPainter แทนเพื่อระบุให้ดียิ่งขึ้นว่า Composable API ใช้ "remember" ภายในเพื่อคงข้อมูลไว้ในองค์ประกอบต่างๆ (Ifda43)
- เปิดใช้การเปลี่ยนฉากใน ComposeTestRule และนำตัวเลือกในการ เปิดใช้เคอร์เซอร์กะพริบออกจาก ComposeTestRule (If0de3)
- เพิ่มตัวเลือกแป้นพิมพ์แบบบรรทัดเดียวลงใน CoreTextField (I72e6d)
- เปลี่ยนชื่อ Radius API เป็น CornerRadius เพื่อให้แสดงถึงวิธีใช้ใน Compose ได้ดียิ่งขึ้น อัปเดตเอกสารประกอบเพื่อระบุว่า รัศมีมุมที่เป็นลบจะถูกจำกัด เป็น 0 (I130c7, b/168762961)
- เพิ่มความสามารถในการระบุข้อมูลเครื่องมือตรวจสอบในตัวแก้ไขที่ประกอบขึ้น (Idee08, b/163494569)
- เพิ่มตัวเลือก IME สำหรับการใช้อักษรตัวพิมพ์ใหญ่ในแป้นพิมพ์ (I8ac38)
- แก้ไขตำแหน่งแฮนเดิล RTL (I6e1e0)
- การเปลี่ยนแปลงที่ทำให้เกิดข้อขัดข้อง: นำค่าที่ส่งคืนออกจาก PointerInputFilter.onPointerEvent(...) เนื่องจากค่าเดียวที่ควรเปลี่ยนได้ในเหตุการณ์ของเคอร์เซอร์คือข้อมูลการใช้งาน ตอนนี้คุณสามารถเปลี่ยนข้อมูลการใช้งานของ PointerEvents ที่ส่งผ่านได้แทนที่จะส่งคืนข้อมูลจาก PointerInputFilter.onPointerEvent(...) (I6acd0)
- เพิ่มตัวเลือก "เลือกทั้งหมด" ลงในเมนูการเลือก (Ief02b)
เวอร์ชัน 1.0.0-alpha05
14 ตุลาคม 2020
androidx.compose.foundation:foundation:1.0.0-alpha05, androidx.compose.foundation:foundation-layout:1.0.0-alpha05 และ androidx.compose.foundation:foundation-text:1.0.0-alpha05 จะเปิดตัว เวอร์ชัน 1.0.0-alpha05 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- ตอนนี้ CoreTextField รองรับฟังก์ชันเคอร์เซอร์แล้ว (Id23aa)
เลิกใช้งาน API contentColor() และ currentTextStyle() แล้วแทนที่ด้วย AmbientContentColor และ AmbientTextStyle ตามลำดับ คุณเข้าถึงค่าปัจจุบันได้โดยใช้
.currentในพร็อพเพอร์ตี้โดยรอบ เช่นเดียวกับพร็อพเพอร์ตี้โดยรอบอื่นๆ การเปลี่ยนแปลงนี้มีขึ้นเพื่อความสอดคล้องและหลีกเลี่ยงการมีหลายวิธีในการทำสิ่งเดียวกัน นอกจากนี้ ยังเปลี่ยนชื่อพร็อพเพอร์ตี้โดยรอบบางรายการเพื่ออธิบายวัตถุประสงค์ได้ดียิ่งขึ้น ดังนี้- ContentColorAmbient -> AmbientContentColor
- TextStyleAmbient -> AmbientTextStyle
- IndicationAmbient -> AmbientIndication
- EmphasisAmbient -> AmbientEmphasisLevels
- RippleThemeAmbient -> AmbientRippleTheme (I37b6d)
การแก้ไขข้อบกพร่อง
- เนื่องจากเป็นส่วนหนึ่งของการกำหนดค่า Sentinel สำหรับคลาสอินไลน์ให้เป็นมาตรฐาน จึงเปลี่ยนชื่อ Color.Unset เป็น Color.Unspecified เพื่อให้สอดคล้องกับคลาสอินไลน์อื่นๆ (I97611, b/169797763)
- เพิ่มการดำเนินการสำหรับการช่วยเหลือพิเศษในการคัดลอก/วาง/ตัด (I6db4f)
- เปิดตัว TextOverflow.None เมื่อการล้นเป็น None ข้อความจะไม่จัดการการล้นอีกต่อไป และจะรายงานขนาดจริงไปยัง LayoutNode (I175c9, b/158830170)
- อัปเดตพารามิเตอร์ Size.Unspecified เป็น Float.NaN แทน Float.POSITIVE_INFINITY อัปเดตการใช้งาน Painter เพื่อ ตรวจสอบกับ Size.Unspecified รวมถึง ขนาดที่ไม่ใช่ค่าจำกัด (I95a7e)
- เพิ่มโมดูล Paging Compose และการผสานรวม Paging (Ib85da)
- แก้ไข LazyListScope เพื่อรับค่าที่กำหนดให้เป็น Null ได้ (I1765b)
- เปลี่ยนชื่อ OnPositionedModifier เป็น OnGloballyPositionedModifier และเปลี่ยนชื่อ onPositioned() เป็น onGloballyPositioned() (I587e8, b/169083903)
- เพิ่มตัวอย่างสำหรับ LazyColumn/Row (Idc16d)
- แก้ไขเมธอด items และ itemsIndexed เพื่ออนุญาต emptyList (I06647)
- เพิ่ม DSL สำหรับระบุข้อมูลเครื่องมือตรวจสอบ (Ic9a22)
- ย้าย LongPress ไปยัง Text (Iff2bc)
- ปิดใช้การเลือกในข้อความและเดโม (Ie7e97)
- รองรับการแปลง AnnotatedString เป็น SpannableString เพื่อการช่วยเหลือพิเศษ (Ief907)
- นำ
PointerInputFilter.onPointerInput(...)ออกแล้ว คุณควรใช้PointerInputFilter.onPointerEvent(...)แทน (I6f04a)
เวอร์ชัน 1.0.0-alpha04
1 ตุลาคม 2020
androidx.compose.foundation:foundation:1.0.0-alpha04, androidx.compose.foundation:foundation-layout:1.0.0-alpha04 และ androidx.compose.foundation:foundation-text:1.0.0-alpha04 จะเปิดตัว เวอร์ชัน 1.0.0-alpha04 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- เปลี่ยนชื่อ Stack เป็น Box แล้ว ระบบจะเลิกใช้งาน foundation.Box ที่มีอยู่ก่อนหน้านี้เพื่อรองรับ Box ใหม่ใน compose.foundation.layout ลักษณะการทำงานของ Box ใหม่คือการวางองค์ประกอบย่อยซ้อนกันเมื่อมีองค์ประกอบย่อยหลายรายการ ซึ่งแตกต่างจาก Box ก่อนหน้าซึ่งทำงานคล้ายกับคอลัมน์ (I94893, b/167680279)
- เลิกใช้งานพารามิเตอร์การตกแต่งกรอบแล้ว หากต้องการมีการตกแต่ง/การเว้นที่ว่างในช่อง ให้ใช้ตัวแก้ไขแทน (Modifier.background, Modifier.border, Modifier.padding) (Ibae92, b/167680279)
- เพิ่มคลาส LazyListState ใหม่ ซึ่งช่วยให้สังเกตและควบคุมตำแหน่งการเลื่อนของคอมโพเนนต์ LazyRow และ LazyColumn ได้ คุณสร้างอินสแตนซ์ได้โดยใช้ rememberLazyListState() และส่งไปยังพารามิเตอร์สถานะของคอมโพเนนต์ ปัจจุบันคุณจะเห็นรายการแรกที่มองเห็นได้และออฟเซ็ตในเวอร์ชันเริ่มต้นนี้ (Ic7cb7, b/159307669)
- ตอนนี้ระบบจะบันทึกตำแหน่งรายการที่เลื่อนและออฟเซ็ตการเลื่อน และกู้คืนเมื่อสร้างกิจกรรมใหม่ (Ie045f, b/166589058)
- เพิ่มการดำเนินการตามความหมายของการคลิกแบบยาว (I6281b, b/156468846)
- เพิ่มยูทิลิตี MutatorMutex เพื่อเก็บ Mutator เดียวของ สถานะที่แชร์ไว้ตลอดเวลาและยกเลิก Mutator ที่ขัดแย้งกันตามลำดับความสำคัญ (I3f975)
- ใส่คำอธิบายประกอบ rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled และ textInputServiceFactory ด้วย @VisibleForTesting เพื่อให้เป็น API ภายในและซ่อน KDoc (I554eb, b/168308412)
- นำพารามิเตอร์ inlineContent ออกจากข้อความที่มีอินพุตสตริง ระบบจะไม่ใช้เนื่องจาก inlineContent ต้องทำงานร่วมกับ AnnotatedString (Ief403)
- นำ API การจัดการที่กำหนดเองที่เลิกใช้งานแล้วออก (Ic576d, b/168297922, b/168297923)
- มีการเพิ่มพารามิเตอร์
unboundedลงในตัวแก้ไข wrapContentSize ซึ่งช่วยให้วัดองค์ประกอบเลย์เอาต์ด้วยข้อจำกัดสูงสุดแบบไม่จำกัดได้ (I77951, b/158559319) - เราป้องกันการนำเข้าแบบคงที่ของเนื้อหาขอบเขตเลย์เอาต์ (เช่น alignWithSiblings ใน RowScope) ควรใช้ขอบเขตที่ชัดเจนแทน:
with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }(I216be, b/166760797)
การแก้ไขข้อบกพร่อง
- อัปเดต Graphics API หลายรายการ
- อัปเดต API การเปลี่ยนรูปแบบการปรับขนาดและการหมุน เพื่อใช้พารามิเตอร์ออฟเซ็ตเดียว เพื่อแสดงพิกัดจุดหมุน แทนพารามิเตอร์ลอยตัวแยกกัน สำหรับพิกัด x/y ใน DrawScope และ DrawTransform
- นำเมธอด Rect.expandToInclude และ Rect.join ออกแล้ว
- อัปเดตเอกสารประกอบเกี่ยวกับรัศมีให้ระบุว่าวงรี นอกเหนือจากวงกลม
- เพิ่มเอกสารเพื่อระบุว่าไม่ควรเรียกใช้ ตัวสร้างสาธารณะสําหรับคลาส Radius แบบอินไลน์โดยตรง แต่ควรสร้างอินสแตนซ์ออบเจ็กต์ Radius ผ่านตัวสร้างฟังก์ชัน แทน
- นำ API RoundRect ออกเพื่อค้นหา topRight, bottomRight, bottomCenter ฯลฯ
- เลิกใช้ Rect.shift เพื่อใช้ Rect.translate แทน
- นำ API RoundRect.grow และ Rect.shrink ออกแล้ว
- เปลี่ยนชื่อ RoundRect.outerRect เป็น Rect.boundingRect
- นำเมธอด RoundRect.middleRect/tallMiddleRect/wideMiddleRect และ Rect.isStadium ออก
- เปลี่ยนชื่อ RoundRect.longestSide เป็น RoundRect.maxDimension
- เปลี่ยนชื่อ RoundRect.shortestSide เป็น RoundRect.minDimension
- เปลี่ยน RoundRect.center ให้เป็นพร็อพเพอร์ตี้แทนที่จะเป็นฟังก์ชัน
- อัปเดตตัวสร้าง RoundRect เพื่อใช้พร็อพเพอร์ตี้ Radius แทนพารามิเตอร์แต่ละรายการสำหรับค่ารัศมี x/y
- นำ API ขนาดที่ถือว่าเป็นสี่เหลี่ยมผืนผ้าที่มี ต้นทางที่ 0,0 ออกแล้ว
- เพิ่ม API ที่ทำลายตัวเองลงใน Radius
- ย้ายฟังก์ชันส่วนขยาย RoundRect ต่างๆ ไปเป็น พร็อพเพอร์ตี้แทน
- (I8f5c7, b/168762961)
- การเพิ่มประสิทธิภาพการเลื่อน LazyColumnFor/LazyRowFor โดยไม่ทำการจัดองค์ประกอบใหม่ที่ไม่จำเป็นทุกครั้งที่เลื่อน (I64f65, b/168293643, b/167972292, b/165028371)
- แก้ไขข้อขัดข้องใน LazyColumnFor/LazyRowFor หลังจากเลื่อนแล้วเปลี่ยนรายการ และใช้การเลื่อนขึ้นอัตโนมัติเมื่อนำรายการที่มองเห็นก่อนหน้านี้ออก เพื่อไม่ให้แสดงช่องว่างเปล่าที่ส่วนท้ายอีกต่อไป (I220ab, b/161480164, b/167855468)
- ไม่อนุญาตให้ซ้อนคอนเทนเนอร์ที่เลื่อนได้ในทิศทางเดียวกัน เช่น ScrollableContainer และ LazyColumnFor อีกต่อไป ซึ่งไม่เคยได้รับการรองรับและทำให้การปัดรวมถึงความสะดวกในการเขียนรายการของ LazyColumnFor (I6e101) ไม่สามารถใช้งานได้
- อัปเดต Graphics API หลายรายการ
- อัปเดต DrawScope API ด้วยเมธอดการเปลี่ยนรูปแบบที่กำหนดขอบเขต เพื่อระบุว่า การเปลี่ยนรูปแบบจะใช้ภายใน การเรียกกลับเท่านั้นและจะนำออกหลังจากเรียกใช้การเรียกกลับแล้ว
- อัปเดตเอกสารประกอบ clipPath เพื่ออ้างอิงถึง Path แทนสี่เหลี่ยมผืนผ้าโค้งมน
- แก้ไขการเว้นวรรคในเอกสารสำหรับพารามิเตอร์ด้านขวา ใน clipPath
- เปลี่ยนชื่อ DrawScope.drawCanvas เป็น drawIntoCanvas และ นำพารามิเตอร์ขนาดออก
- เปลี่ยนชื่อพารามิเตอร์ dx/dy ในเมธอด Inset เป็น horizontal และ vertical
- เพิ่มการโอเวอร์โหลด Inset ที่ให้ค่า Inset เดียวกันกับขอบทั้ง 4 ด้าน
- นำเอกสารเกี่ยวกับวิธีการส่วนที่เว้นไว้ออก ซึ่งระบุว่าระบบจะใช้ส่วนที่เว้นไว้กับทั้ง 4 ด้าน
- อัปเดตเอกสารประกอบสำหรับคลาส Rect
- อัปเดตความคิดเห็นเกี่ยวกับพารามิเตอร์ Rect ให้ตรงกับสไตล์ kdoc
- นำ Rect.join และ Rect.expandToInclude ออกแล้ว
- สร้างการโอเวอร์โหลดสำหรับ Rect.translate(offset) และ เลิกใช้งาน Rect.shift
- (If086a, b/167737376)
- เพิ่ม AccessibilityScrollState ลงในพร็อพเพอร์ตี้ความหมาย (Ifeda9)
- ทำให้ TextRange เป็นแบบอินไลน์เพื่อหลีกเลี่ยงการสร้างออบเจ็กต์ (Id034b)
- นำ ParagraphConstraints ออกแล้ว ตอนนี้ระบบจะส่งความกว้างไปยัง Paragraph โดยตรง (Ica712)
เวอร์ชัน 1.0.0-alpha03
16 กันยายน 2020
androidx.compose.foundation:foundation:1.0.0-alpha03, androidx.compose.foundation:foundation-layout:1.0.0-alpha03 และ androidx.compose.foundation:foundation-text:1.0.0-alpha03 จะเปิดตัว เวอร์ชัน 1.0.0-alpha03 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- เปลี่ยนชื่อ InnerPadding เป็น PaddingValues (I195f1, b/167389171)
- การใช้งานแรงโน้มถ่วงได้รับการเปลี่ยนชื่ออย่างสม่ำเสมอเป็น "การจัดแนว" หรือ "การจัดตำแหน่ง" ใน Layout API (I2421a, b/164077038)
- เพิ่มพารามิเตอร์การจัดแนวลงใน Stack ซึ่งช่วยให้ระบุการจัดแนวเริ่มต้นสำหรับองค์ประกอบย่อยทั้งหมดของ Stack ได้ (Ie80ca, b/164085265)
การแก้ไขข้อบกพร่อง
- เราได้เลิกใช้งาน DpConstraints และ API ที่ใช้ DpConstraints แล้ว (I90cdb, b/167389835)
- เปลี่ยนชื่อพารามิเตอร์
minWidthและmaxWidthของwidthInเป็นminและmaxเช่นเดียวกับpreferredWidthIn,heightIn,preferredHeightIn(I0e5e1, b/167389544) - เพิ่ม onNode และเมธอดส่วนกลางอื่นๆ ใน ComposeTestRule เนื่องจาก เมธอดส่วนกลางปัจจุบันจะเลิกใช้งาน (Ieae36)
- แก้ไขการคำนวณขนาดและตำแหน่งคงที่ใน GestureScope ซึ่ง ทำให้เกิดท่าทางสัมผัสการปัดที่ไม่ถูกต้อง (Iaf358, b/166589947)
- ย้าย
createAndroidComposeRuleและAndroidInputDispatcherจากandroidx.ui.test.androidไปยังandroidx.ui.test(Idef08, b/164060572)
เวอร์ชัน 1.0.0-alpha02
2 กันยายน 2020
androidx.compose.foundation:foundation:1.0.0-alpha02, androidx.compose.foundation:foundation-layout:1.0.0-alpha02 และ androidx.compose.foundation:foundation-text:1.0.0-alpha02 จะเปิดตัว เวอร์ชัน 1.0.0-alpha02 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- TestUiDispatcher มีการทำเครื่องหมายว่าเป็นการทดลอง (Iae99d, b/161247083)
เพิ่ม
ManualFrameClock.hasAwaitersเพื่อดูว่ามีอะไรที่รอเฟรมจากนาฬิกานั้นหรือไม่runWithManualClockเป็นตัวแทนของrunBlockingเมื่อเรียกใช้การทดสอบที่ต้องใช้ ManualFrameClockTestUiDispatcher.Mainซึ่งช่วยให้เข้าถึงตัวจัดส่ง UI หลักในการทดสอบได้ง่ายเช่น
@Test fun myTest() = runWithManualClock { clock -> // set some compose content withContext(TestUiDispatcher.Main) { clock.advanceClock(1000L) } if (clock.hasAwaiters) { println("The clock has awaiters") } else { println("The clock has no more awaiters") } }
เวอร์ชัน 1.0.0-alpha01
26 สิงหาคม 2020
androidx.compose.foundation:foundation:1.0.0-alpha01, androidx.compose.foundation:foundation-layout:1.0.0-alpha01 และ androidx.compose.foundation:foundation-text:1.0.0-alpha01 จะเปิดตัว เวอร์ชัน 1.0.0-alpha01 มีคอมมิตต่อไปนี้
เวอร์ชัน 0.1.0-dev
เวอร์ชัน 0.1.0-dev17
19 สิงหาคม 2020
androidx.compose.foundation:foundation:0.1.0-dev17, androidx.compose.foundation:foundation-layout:0.1.0-dev17 และ androidx.compose.foundation:foundation-text:0.1.0-dev17 จะเปิดตัว เวอร์ชัน 0.1.0-dev17 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มการจัดเรียง spacedBy สำหรับแถวและคอลัมน์ เพื่อให้วางเลย์เอาต์ขององค์ประกอบย่อยได้โดยมีการเว้นระยะห่างคงที่ นอกจากนี้ ยังมีการเพิ่มการจัดเรียงที่สอดคล้องกันเพื่อให้วางเลย์เอาต์ขององค์ประกอบย่อยไว้ข้างกันและจัดแนวในแถว/คอลัมน์ตามการจัดแนว เราได้เลิกใช้งานเมธอด Arrangement.Vertical#arrange และ Arrangement.Horizontal#arrange ก่อนหน้านี้แล้ว และจะไม่รองรับการเขียนการจัดเรียงที่กำหนดเองในอนาคต (I6733d, b/161985975)
- Offset กลายเป็นคลาสอินไลน์ (Iaec70)
- นำการเรียกกลับ onFocusChanged ออกจาก TextField ใช้ Modifier.focusObserver แทน (I51089, b/161297615)
- เลิกใช้งาน Modifier.drawBorder แล้ว โปรดใช้ Modifier.border แทน เราได้แทนที่คลาสข้อมูลเส้นขอบด้วย BorderStroke (I4257d, b/158160576)
- ระบบได้นำ VerticalScroller และ HorizontalScroller ออกแล้ว ใช้ ScrollableColumn/Row แทน นำ Modifier.drawBackground ออกแล้ว ใช้ Modifier.background (I73b0d, b/163019183)
- นำตัวแก้ไข fillMax* ที่ทำเครื่องหมายว่าเลิกใช้งานแล้วออกจาก LazyItemScope เนื่องจากทำให้การเพิ่มตัวแก้ไขดังกล่าวอย่างถูกต้องสำหรับรายการที่ไม่ใช่ลูกโดยตรงของ LazyColumnFor ทำได้ยากขึ้น (Ifa78d)
- เพิ่มการใช้งาน LazyColumn/LazyRow เป็น DSL (I93cc6)
- ตอนนี้ข้อจำกัดเป็นคลาสแบบอินไลน์แล้ว (I88736)
- เพิ่มความสามารถในการกำหนดขนาดเลย์เอาต์เป็นเศษส่วนของพื้นที่ว่างโดยใช้ตัวแก้ไข fillMaxWidth, fillMaxHeight และ fillMaxSize (I945bb, b/161562591)
การแก้ไขข้อบกพร่อง
- เพิ่มพารามิเตอร์ตัวแก้ไขลงใน SelectionContainer (I4aada, b/161487952)
- เพิ่ม Lambda mergePolicy ไปยัง SemanticsPropertyKey แล้ว ซึ่งสามารถ ใช้เพื่อกำหนดนโยบายที่กำหนดเองสำหรับความหมายของ mergeAllDescendants การผสาน นโยบายเริ่มต้นคือการใช้ค่าระดับบนหากมีอยู่แล้ว ไม่เช่นนั้นจะใช้ค่าระดับล่าง (Iaf6c4, b/161979921)
PlacementScope.placeAbsolute()เปลี่ยนชื่อเป็นPlacementScope.place()และPlacementScope.place()ก่อนหน้าเปลี่ยนชื่อเป็นPlacementScope.placeRelative()ด้วยเหตุนี้ วิธีPlacementScope.place()จะไม่สะท้อนตำแหน่งในบริบทจากขวาไปซ้ายโดยอัตโนมัติอีกต่อไป หากต้องการใช้ฟีเจอร์นี้ โปรดใช้PlacementScope.placeRelative()แทน (I873ac, b/162916675)- นำคอมโพเนนต์ FilledTextField ที่เลิกใช้งานแล้วออก โปรดใช้ TextField แทนเพื่อรับการใช้งาน Material Design ของช่องข้อความที่กรอก (I5e889)
- เพิ่มพารามิเตอร์ backgroundColor ลงใน LinearProgressIndicator และนำการเว้นวรรคภายในออกจาก CircularProgressIndicator เพิ่ม ProgressIndicatorConstants.DefaultProgressAnimationSpec ใหม่ ซึ่งใช้เป็น AnimationSpec เริ่มต้นได้เมื่อเคลื่อนไหวความคืบหน้าระหว่างค่า (If38b5, b/161809914, b/161804677)
- ตอนนี้เราเลิกใช้งาน
state { ... }ที่ใช้ร่วมกันได้แล้วเพื่อ เรียกใช้remember { mutableStateOf(...) }อย่างชัดเจนเพื่อความชัดเจน ซึ่งจะช่วยลดพื้นผิว API โดยรวมและจำนวนแนวคิดสำหรับการจัดการสถานะ และตรงกับรูปแบบby mutableStateOf()สำหรับการมอบสิทธิ์พร็อพเพอร์ตี้คลาส (Ia5727) - เปลี่ยนชื่อ RRect เป็น RoundRect เพื่อให้สอดคล้องกับรูปแบบการตั้งชื่อของ Compose มากขึ้น สร้างตัวสร้างฟังก์ชันที่คล้ายกัน สำหรับ RRect และเลิกใช้งานตัวสร้างฟังก์ชัน RRect (I5d325)
- นำ Removed onChildPositioned และ OnChildPositionedModifier ออก นักพัฒนาแอปควรใช้ onPositioned และ OnPositionedModifier ในเลย์เอาต์ย่อยแทน (I4522e, b/162109766)
- ตอนนี้ IntSize เป็นคลาสแบบอินไลน์ (I2bf42) แล้ว
- กดพื้นที่ว่างค้างไว้เพื่อแก้ไข (Ib1e5b)
- ซ่อน FloatingToolbar หลังจากแตะข้อความ (If4525)
- ซ่อน FloatingToolbar เมื่ออัปเดตการเลือก (I8444c)
- ยกเลิกการเลือกเมื่อเบลอ (I781a2)
เวอร์ชัน 0.1.0-dev16
5 สิงหาคม 2020
androidx.compose.foundation:foundation:0.1.0-dev16, androidx.compose.foundation:foundation-layout:0.1.0-dev16 และ androidx.compose.foundation:foundation-text:0.1.0-dev16 จะเปิดตัว เวอร์ชัน 0.1.0-dev16 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม LazyItemScope สำหรับพารามิเตอร์ itemContent ของรายการ Lazy โดยจะระบุตัวแก้ไขเพื่อเติมขนาดสูงสุดขององค์ประกอบระดับบน ซึ่งจะแก้ Use Case เมื่อรายการควรเติมวิวพอร์ตและ Modifier.fillMaxSize() ปกติใช้ไม่ได้เนื่องจากระบบวัดรายการด้วยข้อจำกัดแบบอนันต์ (Ibd3b2, b/162248854)
- ย้ายกล่องโต้ตอบไปยัง UI (I47fa6)
- เพิ่ม LazyColumnForIndexed/LazyRowForIndexed - เวอร์ชันของ LazyColumnFor/LazyRowFor ซึ่งมีทั้งดัชนีและรายการใน itemCallback ซึ่งจะมีประโยชน์เมื่อคุณต้องการทราบดัชนีปัจจุบันนอกเหนือจากรายการปัจจุบัน (I65ff3)
- เปลี่ยนชื่อ Modifier.deternimateProgress เป็น Modifier.progressSemantics (I9c0b4)
- เปลี่ยนชื่อ LazyColumnItems เป็น LazyColumnFor แล้ว LazyRowItems เปลี่ยนชื่อเป็น LazyRowFor (I84f84)
- เพิ่มเครื่องหมาย/คำอธิบายประกอบเพื่อเป็นแนวทางปฏิบัติแนะนำ (I66b20)
- แพ็กเกจ foundation.shape.corner ถูกทำให้แบนเป็น foundation.share (I46491, b/161887429)
- เพิ่มพารามิเตอร์แรงโน้มถ่วงของแกนไขว้สำหรับ LazyRowItems/LazyColumnItems ตอนนี้ LazyRowItems/LazyColumnItems รองรับลักษณะการทำงานของเนื้อหาที่ตัดข้อความแล้ว (Ib39fc)
- เปลี่ยนชื่อ ZoomableState เป็น ZoomableController แล้ว เพิ่มการรองรับเส้นโค้งที่กำหนดเองสำหรับ smoothScale แล้ว เพิ่มฟังก์ชันการทำงาน
enabledและonZoomStarted(If8b8f) - เราเปลี่ยนชื่อ Material FilledTextField เป็น TextField และเปลี่ยนชื่อ TextField พื้นฐานเป็น BaseTextField เพื่อให้ค้นพบและใช้งาน API ที่ต้องการได้ง่ายที่สุด (Ia6242, b/155482676)
- ระบบได้นำ AdapterList ที่เลิกใช้งานไปก่อนหน้านี้ออกแล้ว ใช้ LazyColumnItems แทน (I12b9b)
- เปลี่ยนชื่อ Modifier.drawBackground เป็น Modifier.background (I13677)
- นำ DSL ของ ConstraintLayout เวอร์ชันเก่าออกแล้ว เปลี่ยนชื่อ ConstraintSet2 เป็น ConstraintSet แล้ว (If58d1, b/162450908)
- เพิ่ม Modifier.absoluteOffset() และ Modifier.absoluteOffsetPx() ซึ่งแตกต่างจากตัวแก้ไขออฟเซ็ตตรงที่ตัวแก้ไขออฟเซ็ตแบบสัมบูรณ์จะไม่ทำมิเรอร์อัตโนมัติในบริบทจากขวาไปซ้าย (I3aa21)
- ตอนนี้
RowและColumnเป็นฟังก์ชันแบบอินไลน์แล้ว ซึ่งช่วยลดค่าใช้จ่ายในการใช้งานได้อย่างมาก (I75c10)
การแก้ไขข้อบกพร่อง
- แก้ไข API แบบกว้าง (I077bc)
- นำอินเทอร์เฟซ OffsetBase ที่ไม่ได้ใช้ออก
- จัดแนวคลาส Offset และ IntOffset ให้มี API ที่สอดคล้องกัน
- เปลี่ยนชื่อ IntOffset.Origin เป็น IntOffset.Zero เพื่อให้สอดคล้องกับ Offset API
- ย้ายเมธอด nativeCanvas ออกจากอินเทอร์เฟซ Canvas เพื่อรองรับผู้ใช้ในการสร้างอินสแตนซ์ Canvas ของตนเอง
- สร้างคลาส EmptyCanvas ที่เป็น Stub เพื่อทำการรีแฟคเตอร์ DrawScope ให้เป็นพารามิเตอร์ที่ไม่ใช่ Null แทน lateinit และตรวจสอบว่าฟิลด์ไม่ใช่ Null
- เปลี่ยนชื่อ Enum ของ ClipOp ให้เป็น Pascal Case
- เปลี่ยนชื่อ Enum FilterQuality ให้เป็น Pascal Case
- เปลี่ยนชื่อ enum StrokeJoin ให้เป็น Pascal Case
- เปลี่ยนชื่อ Enum ของ PointMode ให้เป็น Pascal Case
- เปลี่ยนชื่อการแจงนับ PaintingStyle ให้เป็น Pascal Case
- เปลี่ยนชื่อ enum ของ PathFillType ให้เป็น Pascal Case
- เปลี่ยนชื่อการแจงนับ StrokeCap เป็น Pascal Case
- อัปเดตการใช้งาน DrawCache เพื่อไม่ให้ใช้พารามิเตอร์ lateinit อีกต่อไป
- อัปเดต DrawScope เพื่อไม่ให้ใช้การมอบสิทธิ์แบบเลื่อนเวลา สำหรับพารามิเตอร์ภายใน fillPaint และ strokePaint อีกต่อไป
- อัปเดต Composable ของรูปภาพเพื่อหลีกเลี่ยงการใช้ Box เพื่อลดค่าใช้จ่าย
- อัปเดตคลาส Outline ให้มีคำอธิบายประกอบ @Immutable
- อัปเดต PathNode ให้มีคำอธิบายประกอบ @Immutable สำหรับ แต่ละคำสั่งเส้นทาง
- อัปเดตองค์ประกอบย่อยของเวกเตอร์เพื่อนำการตรวจสอบแบบมีเงื่อนไขที่ซ้ำซ้อนออก สำหรับการตรวจสอบความเท่ากัน เนื่องจาก Compose จัดการ การตรวจสอบดังกล่าวอยู่แล้ว
- เลิกใช้งานเมธอดตัวสร้าง Rect Companion เพื่อใช้ตัวสร้างฟังก์ชันแทน
- อัปเดตคลาส Brush และตัวสร้างฟังก์ชันด้วย @Immutable และ @Stable API
- อัปเดตการแจงนับ VertexMode ให้เป็น PascalCase
- อัปเดตเมธอด selectPaint ของ DrawScope เพื่อเขียนทับพารามิเตอร์การขีดเขียนแบบมีเงื่อนไขในสีหากมีการเปลี่ยนแปลง
- อัปเดตขนาดเพื่อเพิ่ม API การแยกโครงสร้าง เปลี่ยนชื่อ UnspecifiedSize เป็น Unspecified และนำเมธอดที่ไม่ได้ใช้ออก
เพิ่ม MonotonicFrameAnimationClock ที่ช่วยให้คุณใช้ MonotonicFrameClock เป็น AnimationClockObservable เพื่อเชื่อมช่องว่าง ระหว่างนาฬิกาและ API ใหม่ที่อิงตามโครูทีนกับนาฬิกาและ API ที่ยังใช้แบบเก่า ที่อิงตามการเรียกกลับ
ตอนนี้ MonotonicFrameClock ที่เทียบเท่ากับ ManualAnimationClock คือ ManualFrameClock (I111c7, b/161247083)
นำ
SemanticsNodeInteraction.performPartialGestureออกแล้ว โปรดใช้SemanticsNodeInteraction.performGestureแทน (Id9b62)เปลี่ยนชื่อ
SemanticsNodeInteraction.getBoundsInRoot()เป็นSemanticsNodeInteraction.getUnclippedBoundsInRoot()(Icafdf, b/161336532)เราได้อัปเดต API สำหรับการรองรับจากขวาไปซ้ายแล้ว เพิ่ม LayoutDirectionAmbient ซึ่งใช้เพื่ออ่านและเปลี่ยนทิศทางเลย์เอาต์ได้ นำ Modifier.rtl และ Modifier.ltr ออกแล้ว (I080b3)
เลิกใช้งาน Modifier.plus แล้ว โปรดใช้ Modifier.then แทน "จากนั้น" มีสัญญาณที่ชัดเจนกว่าในการเรียงลำดับ และยังห้ามพิมพ์
Modifier.padding().background() + anotherModifierซึ่งจะทำให้การอ่านยากขึ้น (Iedd58, b/161529964)เพิ่ม
isFocused()และisNotFocused()SemanticsMatcher (I0b760)เพิ่ม RemeasurementModifier แล้ว ซึ่งช่วยให้ผู้ใช้สามารถวัดเลย์เอาต์อีกครั้งพร้อมกันได้ โดยทั่วไปแล้ว คุณไม่จำเป็นต้องใช้พารามิเตอร์นี้เนื่องจากระบบจะทำการวัดซ้ำ/จัดเลย์เอาต์ใหม่โดยอัตโนมัติ แต่เราใช้พารามิเตอร์นี้ภายใน LazyColumnItems ระหว่างการเลื่อน (I5f331, b/160791058)
ตอนนี้ isSystemInDarkTheme จะพิจารณาการตั้งค่าธีมมืดทั่วทั้งระบบเสมอ และจะไม่สนใจสถานะการประหยัดพลังงานก่อน Q ตามคำแนะนำล่าสุด (I0c10c)
เลิกใช้งาน OnChildPositioned แล้ว ให้ใช้ OnPositioned ในองค์ประกอบย่อยแทน (I87f95, b/162109766)
เปลี่ยนชื่อ AndroidComposeTestRule เป็น createAndroidComposeRule (I70aaf)
เพิ่มการดำเนินการสำหรับการช่วยเหลือพิเศษเพื่อรับ TextLayoutResult (I9d6e6)
เวอร์ชัน 0.1.0-dev15
22 กรกฎาคม 2020
androidx.compose.foundation:foundation:0.1.0-dev15, androidx.compose.foundation:foundation-layout:0.1.0-dev15 และ androidx.compose.foundation:foundation-text:0.1.0-dev15 จะเปิดตัว เวอร์ชัน 0.1.0-dev15 มีคอมมิตต่อไปนี้
หากต้องการใช้ Compose เวอร์ชัน 0.1.0-dev15 คุณจะต้องทำดังนี้
การอัปเดตการขึ้นต่อกัน
- หากต้องการใช้ Compose เวอร์ชัน
0.1.0-dev15คุณจะต้องอัปเดตการอ้างอิง ตามข้อมูลโค้ดใหม่ที่แสดงด้านบนในส่วนการประกาศการอ้างอิง
การเปลี่ยนแปลง API
- เช่นเดียวกับพารามิเตอร์ใหม่ใน ScrollableColumn/ScrollableRow ตอนนี้ LazyColumnItems/LazyRowItems ก็มีพารามิเตอร์ contentPadding ซึ่งช่วยให้เพิ่มระยะขอบสำหรับเนื้อหาได้หลังจากที่ตัดเนื้อหาแล้ว ซึ่งทำไม่ได้ผ่านพารามิเตอร์ตัวแก้ไขเพียงอย่างเดียว นอกจากนี้ ยังช่วยให้เพิ่มระยะห่างได้เฉพาะก่อนรายการแรก/หลังรายการสุดท้าย (Ibc24e)
- เปลี่ยนชื่อการเรียกกลับ onFocusChange ในช่องข้อความเป็น onFocusChanged (Ida4a1)
- เลิกใช้งาน VerticalScroller และ HoriziontalScroller แล้ว ใช้ ScrollableColumn และ ScrollableRow เพื่อสร้างประสบการณ์การใช้งานในตัวที่มีลักษณะการทำงานและพารามิเตอร์ของ Column/Row หรือ Modifier.verticalScroll และ Modifier.horizontalScroll ในองค์ประกอบของคุณเอง ในทำนองเดียวกัน เราได้เลิกใช้งาน ScrollerPosition เพื่อให้ใช้ ScrollState' แทน (I400ce, b/157225838, b/149460415, b/154105299)
- เราได้ปรับปรุง API ของ Modifier.draggable และ Modifier.scrollable ใหม่ เราได้นำ DragDirection ออกเพื่อใช้ Orientation แทน เราได้ปรับปรุงข้อกำหนดของรัฐสำหรับรายการที่เลื่อนได้ เปลี่ยนชื่อ ScrollableState เป็น ScrollableController (Iab63c, b/149460415)
- ตอนนี้พร็อพเพอร์ตี้เชิงความหมายแบบค่าเดียวใช้รูปแบบการเรียก
เช่น ตอนนี้เขียน 'semantics { hidden = true }' เป็น
semantics { hidden() }(Ic1afd, b/145951226, b/145955412) - ตอนนี้ขนาดมุมที่ใช้โดย RoundedCornerShape และ CutCornerShape สามารถมีขนาดใหญ่กว่า 50% ได้แล้ว (Id2340, b/160400213)
- เปลี่ยนพารามิเตอร์ ContentScale เริ่มต้นสำหรับ Image composable จาก Inside เป็น Fit การดำเนินการนี้มีขึ้นเพื่อ ให้ลักษณะการทำงานปรับขนาด Painter พื้นฐานได้หากขนาดเลย์เอาต์ใหญ่กว่า ขนาดโดยธรรมชาติของ Painter ขณะที่ รักษาสัดส่วนภาพไว้ ลักษณะการทำงานนี้ตรงกับความคาดหวังในการระบุขนาดคงที่ให้กับรูปภาพได้ดียิ่งขึ้น โดยไม่ส่งผลต่อลักษณะการทำงานเริ่มต้น หากใช้เฉพาะขนาดโดยธรรมชาติในการ คำนวณขนาดของคอมโพสได้ (I40ae3, b/159838006)
- ใช้ AnimationSpec แทน AnimationBuilder ใน API ระดับบนสุด เพื่ออธิบายแนวคิดของข้อกำหนดภาพเคลื่อนไหวแบบคงที่ - ปรับปรุง DSL การเปลี่ยนโดยการนำข้อกำหนด Lambda ออกสำหรับ การสร้าง AnimationSpec เช่น Tween, Spring แต่จะใช้พารามิเตอร์ของเครื่องมือสร้างโดยตรงแทน - ปรับปรุงความสะดวกในการใช้งาน AnimationSpec โดยรวมด้วยการเปิดตัว ตัวสร้างแทนการใช้ตัวสร้าง - เปลี่ยนระยะเวลาและการหน่วงเวลาสำหรับ KeyFrame และ Tween เป็น Int ซึ่งจะ ช่วยลดการแคสต์ประเภทที่ไม่จำเป็นและการโอเวอร์โหลดเมธอด (เพื่อ รองรับทั้ง Long และ Int) (Ica0b4)
- นำ Clickable ออกแล้ว ใช้ Modifier.clickable (I84bdf)
- เพิ่ม LazyRowItems - การเลื่อนแนวนอนที่คล้ายกับ LazyColumnItems (Ibbcf7)
- เปิดตัว API ภาพเคลื่อนไหวแบบไม่มีสถานะระดับต่ำ API เหล่านี้ (I63bf7)
- เลิกใช้งาน androidx.ui.foundation.TextFieldValue และ androidx.ui.input.EditorValue แล้ว นอกจากนี้ ยังมีการเลิกใช้งาน Composable TextField, FilledTextField และ CoreTextField ที่ใช้ประเภทดังกล่าวด้วย โปรดใช้ androidx.ui.input.TextFieldValue แทน (I4066d, b/155211005)
- แทนที่การใช้งาน IntPx ด้วย Int แทนที่ IntPxPosition ด้วย IntOffset แทนที่ IntPxSize ด้วย IntSize (Ib7b44)
- นำ androidx.ui.foundation.shape.RectangleShape ออกแล้ว ใช้ androidx.ui.graphics.RectangleShape (I94939, b/154507984)
- เพื่อรวมจำนวนคลาสที่ใช้เพื่อแสดงข้อมูลการปรับขนาด ให้ใช้คลาส Size แทน PxSize ซึ่งจะให้ประโยชน์ ของคลาสอินไลน์เพื่อใช้ประโยชน์จาก Long ในการแพ็กค่า Float 2 ค่าเพื่อแสดง ความกว้างและความสูงที่แสดงเป็น Float (Ic0191)
- เพื่อรวมจำนวนคลาสที่ใช้เพื่อแสดงข้อมูลการวางตำแหน่ง ให้ใช้คลาส Offset แทน PxPosition ซึ่งจะให้ประโยชน์ ของคลาสอินไลน์เพื่อใช้ประโยชน์จาก long ในการแพ็กค่าลอยตัว 2 ค่าเพื่อแสดงออฟเซ็ต x และ y ที่แสดงเป็นค่าลอยตัว (I3ad98)
- เพิ่ม Modifier.zoomable สำหรับฟังก์ชันการบีบเพื่อซูม (Id5d63)
- เลิกใช้งานคอมโพเนนต์ที่สลับได้แล้ว ใช้ Modifier.toggleable แทน (I35220, b/157642842)
- เลิกใช้งาน MutuallyExclusiveSetItem แล้ว โปรดใช้ Modifier.selectable แทน (I02b47, b/157642842)
- ตอนนี้เราเลิกใช้งาน TestTag แล้ว โปรดใช้ Modifier.testTag แทน (If5110, b/157173105)
- เพิ่มพารามิเตอร์ fontWeight ลงในข้อความ ซึ่งก่อนหน้านี้ไม่ได้เพิ่มโดยไม่ตั้งใจ (I56937)
- แทนที่การใช้งานคลาส Px ในคลาส Compose ต่างๆ ซึ่งเป็นส่วนหนึ่งของความพยายามในการปรับโครงสร้างขนาดใหญ่เพื่อใช้เฉพาะ Dp และประเภทดั้งเดิมสำหรับพารามิเตอร์พิกเซล (I19d02)
- ตอนนี้ VerticalScroller มี Column ให้ใช้งานได้ทันที ตอนนี้ HorizontalScroller มี Row ให้ใช้งานได้ทันที (Ieca5d, b/157020670)
- แทนที่การใช้คลาส Px ในคลาส Compose ต่างๆ ซึ่งเป็นส่วนหนึ่งของความพยายามในการปรับโครงสร้างขนาดใหญ่ เพื่อให้ใช้เฉพาะ Dp และประเภทดั้งเดิมสำหรับพารามิเตอร์พิกเซล (Iede0b)
- เพิ่ม Modifier.indication ลงในแพ็กเกจพื้นฐานแล้ว ใช้เพื่อแสดงการกด/ลาก/การบ่งชี้อื่นๆ ในองค์ประกอบที่โต้ตอบได้ที่กำหนดเอง (I8425f, b/155287131)
- ตอนนี้ VerticalScroller และ HorizontalScroller รองรับการเลื่อนแบบย้อนกลับแล้วเมื่อตั้งค่า isReversed ใน ScrollerPosition (I953bd)
- รองรับการเพิ่ม Composable ลงในเลย์เอาต์ข้อความ (I1373c)
- การใช้งาน CanvasScope ที่รวมกัน ตอนนี้จึงมีเพียง DrawScope และ ContentDrawScope เปลี่ยนชื่อ CanvasScope เป็น DrawScope อัปเดต DrawScope เพื่อใช้ Density interface และระบุ LayoutDirection อัปเดตคลาสย่อย DrawScope ที่ลบแล้วใน ContentDrawScope Painter และ PainterModifier เพื่อไม่ให้รักษาพร็อพเพอร์ตี้ RTL ด้วยตนเองอีกต่อไป เนื่องจาก DrawScope มีพร็อพเพอร์ตี้นี้อยู่แล้ว โดยไม่ต้องระบุด้วยตนเอง (I1798e)
- นำ DrawBackground API ที่เลิกใช้งานแล้วออกเพื่อใช้ drawBackground extension API ใน Modifier แทน ปรับโครงสร้าง การใช้งานสี แปรง และ paint drawBackground เพื่อลดเส้นทางโค้ด รวมถึง นำข้อกำหนดในการสร้าง Modifier เป็นส่วนหนึ่งของการจัดองค์ประกอบออก (I0343a)
- อัปเดต API Compose ระดับสูงขึ้น ซึ่งแสดง Canvas เพื่อ แสดง CanvasScope แทน ซึ่งจะช่วยให้ผู้บริโภคไม่ต้องดูแลออบเจ็กต์ Paint ของตนเอง สำหรับผู้บริโภคที่ยังคงต้องเข้าถึง Canvas สามารถใช้วิธี drawCanvas extension ซึ่งมีฟังก์ชันเรียกกลับเพื่อออกคำสั่งวาดด้วย Canvas พื้นฐาน (I80afd)
- HorizontalScroller และ VerticalScroller ไม่คืนค่าตำแหน่งการเลื่อนโดยใช้สถานะอินสแตนซ์ที่บันทึกไว้ (Ia0fae, b/155075048)
- นำ FocusManagerAmbient ออกแล้ว ใช้ FocusModifier.requestFocus เพื่อรับโฟกัส (Ic4826)
- เราได้นำเลย์เอาต์ตารางออกชั่วคราวและจะนำกลับมาให้บริการอีกครั้งพร้อมกับ API ที่อัปเดต (Id88a7)
สร้าง CanvasScope API ที่ครอบคลุมออบเจ็กต์ Canvas เพื่อแสดงพื้นผิว API การวาดภาพแบบประกาศที่ไม่มีสถานะ การเปลี่ยนรูปแบบจะอยู่ในขอบเขตของตัวรับสัญญาณเอง และข้อมูลการปรับขนาดจะอยู่ในขอบเขตของขอบเขตส่วนที่เว้นไว้ที่เกี่ยวข้องด้วย โดยไม่จำเป็นต้องให้ผู้ใช้ดูแลรักษาสถานะ Paint ของตนเอง เพื่อกำหนดค่าการดำเนินการวาด
เพิ่ม CanvasScopeSample รวมถึง อัปเดตแอปเดโมให้มีเดโมกราฟิกแบบประกาศ (Ifd86d)
นำ ColoredRect ออกแล้ว ใช้ User Box ที่มีตัวแก้ไข drawBackground แทน (I983c7, b/152753731)
เพิ่มการปรับแต่งสีเคอร์เซอร์ลงใน TextField (I6e33f)
ตอนนี้คุณสามารถซ่อน/แสดงแป้นพิมพ์เสมือนได้โดยใช้ SoftwareKeyboardController ซึ่งส่งผ่านโดยการเรียกกลับ onTextInputStarted (I8dc44, b/151860051)
ตอนนี้ TextFieldValue ที่ใช้กับ TextField จะยังคงอยู่เมื่อมีการสร้างกิจกรรมใหม่เมื่อใช้ในลักษณะนี้
var text by savedInstanceState(saver = TextFieldValue.Saver) { TextFieldValue() }(I5c3ce, b/155075724)เพิ่มพารามิเตอร์ที่ใช้กันโดยทั่วไปลงใน Text() หากปัจจุบันคุณสร้างรูปแบบข้อความในเครื่องเพื่อส่งพารามิเตอร์เหล่านี้จํานวนเล็กน้อย เช่น
Text(style = TextStyle(textAlign = TextAlign.Center))ตอนนี้คุณสามารถระบุพารามิเตอร์ได้โดยตรง:Text(textAlign = TextAlign.Center)(I82768)แทนที่พารามิเตอร์ focusIdentifier ของ CoreTextField/TextField ด้วย FocusNode เพื่อผสานรวมกับระบบย่อยโฟกัส (I7ea48)
การอัปเดต TextField - ในมิติแนวนอนจะใช้พื้นที่ว่างทั้งหมดที่ได้รับ (Ib08df, b/154638552)
เพิ่ม InteractionState และ Interaction เพื่อให้สร้างคอมโพเนนต์ที่ตอบสนองต่อการเปลี่ยนแปลงสถานะ UI เช่น การกดและการลาก ได้ง่ายขึ้น (Icfe25, b/152525426)
ย้าย RectangleShape จาก androidx.ui.foundation.shape.* ไปยัง androidx.ui.graphics.* (Ia74d5, b/154507984)
แทนที่การใช้ Color ที่อนุญาตให้เป็น Null ทั้งหมดใน API ด้วย ที่ไม่ใช่ Null และใช้ Color.Unset แทน Null (Iabaa7)
อัปเดต TextField API - ผสานรวมฟังก์ชันเรียกกลับ onFocus และ onBlur เป็นฟังก์ชันเรียกกลับ onFocusChange(Boolean) เดียวที่มีพารามิเตอร์ (I66cd3)
เปลี่ยนชื่อ ScaleFit เป็น ContentScale ย้าย ContentScale จาก ui-graphics ไปยัง ui-core โมดูลเพื่อให้อยู่ในโมดูลเดียวกับ Alignment API เปลี่ยนชื่อ FillMaxDimension เป็น Crop เปลี่ยนชื่อ FillMinDimension เป็น Fit เปลี่ยนชื่อ Fit to Inside เพื่อให้ตรงกับ ImageView.ScaleType มากขึ้น เพิ่มเอกสารที่ระบุว่าการรวม Crop และ Alignment.Center จะให้ผลลัพธ์เหมือนกับ ImageView.ScaleType.CENTER_CROP และ Fit ที่ใช้กับ Alignment.Center จะให้ผลลัพธ์เหมือนกับ ImageView.ScaleType.FIT_CENTER Inside ที่ใช้กับ Alignment.Center จะให้ผลลัพธ์เหมือนกับ ImageView.ScaleType.CENTER_INSIDE (I45f09, b/152842521)
นำ ProvideContentColor ออก แล้วใช้ ContentColorAmbient โดยตรงกับ
Providers(Iee942)เพิ่มพารามิเตอร์สีลงในข้อความ ซึ่งช่วยให้คุณลบล้างสีของรูปแบบข้อความได้โดยไม่ต้องผสานกับรูปแบบที่ระบุไว้ในธีมด้วยตนเอง (I41a66)
ปรับปรุง DrawModifier API:
- สร้างขอบเขตตัวรับสำหรับ draw() ContentDrawScope
- นำพารามิเตอร์ทั้งหมดใน draw() ออกแล้ว
- DrawScope มีอินเทอร์เฟซเหมือนกับ CanvasScope รุ่นก่อน
- ContentDrawScope มีเมธอด drawContent() (Ibaced, b/152919067)
เลิกใช้งาน ColoredRect แล้ว ให้ใช้
Box(Modifier.preferredSize(width, height).drawBackground(color))แทน (I499fa, b/152753731)ระบบการกำหนดธีมรูปร่างได้รับการอัปเดตตามข้อกำหนดการออกแบบ Material ตอนนี้คุณสามารถระบุรูปร่างขนาดเล็ก กลาง และใหญ่เพื่อให้คอมโพเนนต์ส่วนใหญ่ใช้ได้ (Ifb4d1)
แทนที่ตัวแก้ไขและตัวดำเนินการด้วยฟังก์ชันส่วนขยายของโรงงาน (I225e4)
ย้าย Draggable ไปยังตัวแก้ไขแล้ว (Id9b16, b/151959544)
ย้าย
Textไปยังแพ็กเกจ androidx.ui.foundation จาก androidx.ui.core (I87ce5)เพิ่มพารามิเตอร์
enabledลงในช่องทำเครื่องหมาย สวิตช์ และสลับได้ (I41c16)ตอนนี้ Ripple เป็นตัวปรับแต่งแล้ว แม้ว่า Clickable จะยังไม่ได้แปลง แต่การใช้งานที่แนะนําคือ
Clickable(onClick = { ... }, modifier = ripple())(Ie5200, b/151331852, b/150060763)เพิ่ม VectorPainter API เพื่อ แทนที่ Subcomposition API ที่มีอยู่สำหรับ กราฟิกแบบเวกเตอร์ ผลลัพธ์ขององค์ประกอบย่อย คือออบเจ็กต์ VectorPainter แทน DrawModifier เลิกใช้งาน DrawVector Composables ก่อนหน้าเพื่อใช้ VectorPainter
เปลี่ยนชื่อ
Image(Painter)API เป็นPaintBox(Painter)สร้าง Composable ของ Vector ที่ทำงานเหมือน Composable ของรูปภาพ ยกเว้นใช้ VectorAsset แทน ImageAsset (I9af9a, b/149030271)CreatedImage Composable เพื่อจัดการ การปรับขนาด/เลย์เอาต์ นอกเหนือจากการวาด ImageAsset ที่ระบุไปยังหน้าจอ Composable นี้ยังรองรับการวาดอินสแตนซ์ Painter ใดๆ โดยคำนึงถึงขนาดโดยธรรมชาติ รวมถึงรองรับขนาดคงที่หรือขนาดขั้นต่ำที่กำหนด (Ibcc8f)
ตอนนี้ปุ่ม, FloatingActionButton และ Clickable มี
enabledแยกกันแล้ว มีการเปลี่ยนชื่อหรือจัดเรียงพารามิเตอร์บางรายการในปุ่มใหม่ (I54b5a)เปลี่ยนชื่อ Image เป็น ImageAsset เพื่อให้เห็นความแตกต่างระหว่างข้อมูล Image กับ Composable ของ Image ที่กำลังจะเปิดตัวซึ่งใช้ในการเข้าร่วมเลย์เอาต์และวาด เนื้อหาได้ชัดเจนยิ่งขึ้น
สร้างเมธอดส่วนขยายใน android.graphics.Bitmap,
Bitmap.asImageAsset()เพื่อสร้างอินสแตนซ์ของ ImageAsset ที่มีประโยชน์สำหรับการรวมการพัฒนาแอปพลิเคชัน Android แบบเดิม เข้ากับเฟรมเวิร์ก Compose (Id5bbd)นำ Composable DrawImage ออกแล้ว ใช้ ImagePainter เพื่อวาดรูปภาพในเลย์เอาต์ที่มีอยู่ หรือใช้ SimpleImage เพื่อแทรกรูปภาพที่ใช้พื้นที่ (I595e1, b/149827027)
คอมโพเนนต์ Stack รองรับทิศทางจากขวาไปซ้าย (Ic9e00)
เพิ่ม Icon, IconButton และ IconToggleButton โดยนำ AppBarIcon ออก คุณสามารถแทนที่การใช้งาน AppBarIcon ที่มีอยู่ด้วย IconButton ได้โดยตรง และตอนนี้ปุ่มดังกล่าวจะมีเป้าหมายการสัมผัสที่ถูกต้องแล้ว ดูตัวอย่างสำหรับ ข้อมูลการใช้งาน และดูไอคอนสำหรับไอคอน Material ที่ระบุ ซึ่งคุณใช้กับคอมโพเนนต์เหล่านี้ได้โดยตรง (I96849)
นำ Composable DrawShape ออกแล้ว ใช้ตัวแก้ไข DrawBackground แทน (I7ceb2)
เพิ่ม AdapterList ซึ่งเป็นคอมโพเนนต์รายการที่เลื่อนได้ซึ่ง จัดองค์ประกอบและวางรายการที่มองเห็นได้เท่านั้น ปัญหาที่ทราบในปัจจุบัน คือมีเฉพาะแนวตั้งและไม่สามารถจัดการการเปลี่ยนแปลงทั้งหมด ในกรณีที่เปลี่ยนแปลงองค์ประกอบย่อย (Ib351b)
เพิ่มคอมโพเนนต์ที่เลื่อนได้ ซึ่งช่วยให้สร้าง Scroller/List ที่กำหนดเองได้ (I5fd37)
เปลี่ยนชื่อพื้นหลังเป็น DrawBackground และตั้งค่าให้ระบบจดจำโดยค่าเริ่มต้น (Ia0bd3)
เพิ่มระยะขอบ เส้นขอบ รูปร่าง และพารามิเตอร์พื้นหลังลงใน Box (I05027, b/148147281)
เพิ่มคอมโพเนนต์ Canvas แล้ว Composable นี้ใช้พื้นที่บางส่วน (ผู้ใช้ระบุ) และช่วยให้คุณวาดโดยใช้ CanvasScope (I0d622) ได้
เปลี่ยนชื่อตัวปรับแต่ง
Borderเป็นDrawBorder(I8ffcc)เพิ่มคอมโพเนนต์ Box สำหรับรวมเลย์เอาต์และฟังก์ชันการวาดภาพทั่วไป (I6e2a7)
ตอนนี้แถบเลื่อนจะแสดงลักษณะการทำงานของการปัดแบบเนทีฟของ Android (I922af, b/147493715)
แทนที่ DrawBorder ด้วยตัวแก้ไขเส้นขอบ (Id335a)
เราเปลี่ยนชื่อ Modifier.tag เป็น Modifier.layoutId เพื่อไม่ให้สับสนกับ Modifier.testTag (I995f0)
พารามิเตอร์เปอร์เซ็นต์เมื่อสร้างแนวทาง ConstraintLayout ได้รับการเปลี่ยนชื่อเป็นเศษส่วนแล้ว (Ida2db)
เพิ่มการรองรับระยะขอบของ Barrier ใน ConstraintLayout (I47ffe)
แก้ไขการรองรับ RTL ใน ConstraintLayout เพิ่ม API ที่ไม่รองรับ RTL (I3b1c7)
เพิ่ม DSL ใหม่สำหรับ ConstraintLayout แล้ว โปรดดูรายละเอียดเพิ่มเติมในตัวอย่าง (Icaa9a)
เพิ่มคำอธิบายประกอบ @ExperimentalLayout ตอนนี้เราได้ติดแท็ก ConstraintLayout, FlowRow และ FlowColumn เพื่อระบุว่า API ขององค์ประกอบเหล่านี้จะมีการเปลี่ยนแปลง (I412a8)
เพิ่ม
Modifier.padding(InnerPadding)แล้ว (I94985, b/157133803)นำ RowAlign และ ColumnAlign ที่เลิกใช้งานแล้วในแถวและคอลัมน์ออก (If60d4, b/155858731)
นำ LayoutTag() ที่เลิกใช้งานแล้วออก โปรดใช้ Modifier.tag() แทน นำ Modifier.matchParent() ที่เลิกใช้งานแล้วออก โปรดใช้ Modifier.matchParentSize() แทน (If8044)
เพิ่มตัวแก้ไขเลย์เอาต์ offsetPx ซึ่งใช้เพื่อกำหนดออฟเซ็ต (แบบไดนามิก) ในหน่วย px ได้ (I5af57)
เลิกใช้งาน Composable AlignmentLineOffset แล้ว โปรดใช้ตัวแก้ไข relativePaddingFrom() แทน นำ Composable CenterAlignmentLine ออกแล้ว (I60107)
เพิ่มตัวแก้ไขเลย์เอาต์ defaultMinSizeConstraints ซึ่งจะตั้งค่าข้อจำกัดด้านขนาดให้กับเลย์เอาต์ที่ห่อไว้เฉพาะเมื่อไม่ได้ระบุข้อจำกัดที่เกี่ยวข้องที่เข้ามา (0 สำหรับข้อจำกัดขั้นต่ำและอนันต์สำหรับข้อจำกัดสูงสุด) (I311ea, b/150460257)
ระบบนำคอนเทนเนอร์ออกแล้ว ใช้ Box แทน (Ibbc2b, b/151407926)
นำตัวแก้ไข LayoutWidth/Height/Size ที่เลิกใช้งานแล้วออก (Ib0bc1)
เพิ่มค่าพารามิเตอร์เริ่มต้นสำหรับตัวแก้ไขออฟเซ็ต (I37f06)
เพิ่มตัวแก้ไขระยะห่างจากขอบแบบสมมาตร (I39840)
นำตัวแก้ไข LayoutAspectRatio ที่เลิกใช้งานแล้วออก (I65a74)
นำตัวแก้ไข LayoutAlign ที่เลิกใช้งานแล้วออก (I10877)
แก้ไขข้อบกพร่องในตัวแก้ไขความกว้างและความสูงที่ทำให้เลย์เอาต์ที่ตัดคำได้รับการวัดโดยไม่มีข้อจำกัดแกนตรงข้าม (I210b8, b/154797971)
เพิ่มพารามิเตอร์ verticalGravity และ horizontalGravity ลงใน Row และ Column ตามลำดับ (I7dc5a)
อัปเดต wrapContentWidth และ wrapContentHeight เพื่อให้คาดหวังการจัดแนวแนวตั้งหรือแนวนอนแทนที่จะเป็นการจัดแนวใดก็ได้ เราได้อัปเดตตัวแก้ไขแรงโน้มถ่วงเพื่อให้ยอมรับการจัดแนวแนวตั้งหรือแนวนอน อัปเดตแถว คอลัมน์ และกองซ้อนให้รองรับการจัดแนวต่อเนื่องที่กำหนดเองแล้ว (Ib0728)
ทำให้ Alignment สร้างอินสแตนซ์ได้ด้วยค่าที่กำหนดเอง เพิ่มการจัดแนว 1 มิติ (Ia0c05)
เปลี่ยนชื่อ EdgeInsets เป็น InnerPadding เปลี่ยนชื่อพารามิเตอร์ innerPadding ของปุ่ม Material เป็น padding (I66165)
ตอนนี้ alignToSiblings ยอมรับ Measured แทน Placeable แล้ว (I5788d)
เพิ่มตัวแก้ไขสำหรับการปรับขนาดให้กับการวัดค่าโดยธรรมชาติ และเลิกใช้งานคอมโพเนนต์ที่ใช้เพื่อวัตถุประสงค์นี้ (I8295d)
เพิ่มการรองรับการปรับแต่งมิติข้อมูลขององค์ประกอบย่อยของ ConstraintLayout (Idb1a5)
นำ Composable ของ Wrap และ Center ที่เลิกใช้งานแล้วออก (I29e23)
เพิ่ม LayoutModifier2 ซึ่งเป็น API ใหม่สําหรับการกําหนดตัวแก้ไขเลย์เอาต์ เลิกใช้งาน LayoutModifier (If32ac)
ตอนนี้คุณเข้าถึงสมาชิก RowScope และ ColumnScope ได้จากภายนอกแถวและคอลัมน์แล้ว (I3a641)
เลิกใช้งานคอนเทนเนอร์แล้ว โปรดใช้ Box แทน (I675ce, b/151407926)
เพิ่มตัวแก้ไข LayoutOffset สำหรับการชดเชยตำแหน่งเลย์เอาต์ (I0b8a3)
การรองรับ RTL ในเลย์เอาต์ Compose ในช่วงแรก (Ia5519)
อัปเดต LayoutAlign เพื่อไม่ให้เติมพื้นที่ว่างอีกต่อไป (I2b14f)
นำ Composable ของ AspectRatio ออกเพื่อใช้ตัวปรับแต่งแทน ลบ FlexColumn, FlexRow ที่เลิกใช้งานแล้ว และตัวแก้ไข Spacing (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 ใช้ Ripple เป็นข้อบ่งชี้เริ่มต้น (หากคุณตั้งค่า MaterialTheme {} ในแอปพลิเคชัน) ดังนั้นในกรณีส่วนใหญ่ คุณเพียงแค่ใช้ Clickable และรับข้อบ่งชี้ Ripple ได้ฟรี หากต้องการปรับแต่งพารามิเตอร์สี / ขนาด / ขอบเขตสำหรับ Ripple คุณสามารถสร้าง RippleIndication ด้วยตนเองและส่งไปยัง Clickable เป็นพารามิเตอร์การระบุ (I663b2, b/155375067)
- นำ API สำหรับการทดสอบขนาดที่ล้าสมัยออกแล้ว (Iba0a0)
- สร้าง LayoutNode Experimental API (I4f2e9)
- เราได้ใช้การล็อกการวางแนวการเลื่อนเวอร์ชัน 1 ใน Compose (I1ce7a, b/150289741)
- ตอนนี้ป๊อปอัป กล่องโต้ตอบ และเมนูจะรับค่า MaterialTheme ตามบริบทแล้ว (Ia3665, b/156527485)
- นำพารามิเตอร์ทิศทางเลย์เอาต์ออกจากบล็อกการวัดของฟังก์ชัน Layout() อย่างไรก็ตาม คุณสามารถดูทิศทางเลย์เอาต์ได้ภายในโค้ดเรียกกลับผ่านออบเจ็กต์ขอบเขตการวัด (Ic7d9d)
- เพิ่ม AbsoluteArrangement - อนุญาตให้จัดเรียงองค์ประกอบย่อยภายในแถวโดยไม่ต้องมีการมิเรอร์อัตโนมัติใน RTL (I3a1df)
- เราเลิกใช้งาน @Untracked annotation แล้ว แทนที่ด้วย @ComposableContract(tracked=false) (Id211e)
- ก่อนการเปลี่ยนแปลงนี้ ปลั๊กอินคอมไพเลอร์ Compose จะดักจับการเรียกไปยังตัวสร้างภายในฟังก์ชัน @Composable อย่างไม่ชัดเจน หากมี (I5205a, b/158123804)
- เพิ่ม
viewModel()Composable ซึ่งช่วยให้สร้างหรือรับ ViewModel ที่สร้างไว้แล้วได้ในลักษณะเดียวกับที่ทำงานใน Activity หรือ Fragment (I5fdd1) ปรับโครงสร้างคลาส Radius ให้เป็น คลาสอินไลน์ นำวิธีการสร้างองค์ประกอบเสริมออก เพื่อใช้ตัวสร้างฟังก์ชัน ที่มีพารามิเตอร์เริ่มต้นเพื่อให้รัศมี ตามแกน y ตรงกับพารามิเตอร์รัศมีแกน x ที่จำเป็น
อัปเดต DrawScope.drawRoundRect เพื่อใช้พารามิเตอร์ Radius เดียวแทนค่าทศนิยม 2 ค่าแยกกันสำหรับรัศมีตามแกน x และ y (I46d1b)
แทนที่การใช้งานคลาส Px ในคลาส Compose ต่างๆ ซึ่งเป็นส่วนหนึ่งของความพยายามในการ ปรับโครงสร้างครั้งใหญ่เพื่อใช้เฉพาะ Dp และประเภทดั้งเดิมสำหรับพารามิเตอร์พิกเซล ลบคลาส Px ทั้งหมด (I3ff33)
แทนที่การใช้งานคลาส Px ในคลาส Compose ต่างๆ ซึ่งเป็นส่วนหนึ่งของความพยายามในการปรับโครงสร้างโค้ดครั้งใหญ่ เพื่อใช้เฉพาะ Dp และประเภทดั้งเดิมสำหรับพารามิเตอร์พิกเซล (I086f4)
แทนที่การใช้คลาส Px ในคลาส Compose ต่างๆ ซึ่งเป็นส่วนหนึ่งของความพยายามในการปรับโครงสร้างโค้ดครั้งใหญ่ เพื่อใช้เฉพาะ Dp และประเภทดั้งเดิมสำหรับพารามิเตอร์พิกเซล (Id3434)
แทนที่การใช้คลาส Px ในคลาส Compose ต่างๆ ซึ่งเป็นส่วนหนึ่งของความพยายามในการ ปรับโครงสร้างครั้งใหญ่เพื่อใช้เฉพาะ Dp และประเภทดั้งเดิมสำหรับพารามิเตอร์พิกเซล (I97a5a)
เคอร์เซอร์ของ TextField มีภาพเคลื่อนไหวแบบกะพริบ (Id10a7)
ท่าทางสัมผัสบางส่วนไม่จำเป็นต้องส่งต่อ GestureToken (Id7ae5) อีกต่อไป
แทนที่การใช้คลาส Px ในคลาส Compose ต่างๆ ซึ่งเป็นส่วนหนึ่งของความพยายามในการ ปรับโครงสร้างขนาดใหญ่เพื่อให้ใช้เฉพาะ Dp และประเภทดั้งเดิมสำหรับพารามิเตอร์พิกเซล (I57bff)
เราได้ยกเลิกการเลิกใช้งาน Modifier.semantics เพื่ออนุญาตให้ใช้กับคอมโพเนนต์ระดับสูง (I4cfdc)
เปลี่ยนชื่อ AnnotatedString.Builder.addAnnotationString เป็น addStringAnnotation (I5059e)
อัปเดต Alignment API และเพิ่มการรองรับการจัดแนวแบบสัมบูรณ์ (ซึ่งจะไม่พลิกภาพโดยอัตโนมัติในบริบท RTL) (I38cd3)
เลย์เอาต์และองค์ประกอบย่อย LayoutModifier สามารถวัดได้ด้วยทิศทางเลย์เอาต์ที่แตกต่างกัน (Ibd731)
เพิ่มพารามิเตอร์ rect ที่ไม่บังคับเพิ่มเติมลงใน ImagePainter เพื่อรองรับ การวาดภาพส่วนย่อยของ ImageAsset พื้นฐาน (I0ea9e)
แก้ไขการขัดข้องใน AdapterList เมื่อนำรายการออก (Ic64b0, b/153195921)
เราได้เปลี่ยนวิธีวัดเลย์เอาต์แรกที่คุณใส่ไว้ในบล็อก activity.setContent { } ก่อนหน้านี้ระบบจะบังคับให้วิดเจ็ตเติมเต็มทั้งหน้าจอกิจกรรม แต่ตอนนี้วิดเจ็ตจะทำงานราวกับว่าคุณวางเลย์เอาต์ไว้ใน Stack โดยวิดเจ็ตจะมีขนาดเล็กกว่าหน้าจอและจะวางอยู่ที่ด้านซ้ายบนของหน้าจอ หากต้องการให้ทำงานแบบเดิม คุณสามารถใช้ Modifier.fillMaxSize() กับเลย์เอาต์ได้ (Ie88a7, b/153453714)
เปลี่ยนชื่อโมดูล ui-text-compose เป็น ui-text ui-text ตอนนี้มี Composable ของ CoreText และ CoreTextField แล้ว (Ib7d47)
เปลี่ยนชื่อโมดูล ui-text เป็น ui-text-core (I57dec)
ย้าย Composable ui-framework/CoreText, CoreTextField ไปไว้ภายใต้ ui-text-compose คุณอาจต้องรวม ui-text-compose ไว้ในโปรเจ็กต์ (I32042)
runOnIdleComposeและrunOnUiThreadตอนนี้เป็นฟังก์ชันส่วนกลางแล้ว แทนที่จะเป็นเมธอดใน ComposeTestRule (Icbe8f)[Mutable]State property delegate operators moved to extensions to support Kotlin 1.4 property delegate optimizations. ผู้โทรต้องเพิ่ม imports เพื่อใช้
by state { ... }หรือby mutableStateOf(...)ต่อไป (I5312c)ตอนนี้ DrawLayerModifier และ drawLayer() จะตั้งค่าเริ่มต้น clipToBounds และ clipToOutline เป็น false (I0eb8b, b/152810850)
เปลี่ยนชื่อ LayoutResult เป็น MeasureResult (Id8c68)
เลิกใช้งาน Composable ของ Center แล้ว ควรแทนที่ด้วยตัวแก้ไข LayoutSize.Fill + LayoutAlign.Center หรือด้วย Composable Box หรือ Stack รายการใดรายการหนึ่งที่มีตัวแก้ไขที่เหมาะสม (Idf5e0)
เปลี่ยนชื่อ LayoutFlexible เป็น LayoutWeight เปลี่ยนชื่อพารามิเตอร์ "แน่น" เป็น "เติม" (If4738)
เราได้เปลี่ยน DrawVector จากฟังก์ชันที่ประกอบกันได้ตามปกติ เป็นการแสดงผล Modifier drawVector() ที่ จะวาดเวกเตอร์เป็นพื้นหลังของเลย์เอาต์ (I7b8e0)
แทนที่ฟังก์ชันที่ประกอบกันได้ Clip ด้วยตัวปรับแต่ง drawClip() DrawClipToBounds เป็นตัวปรับแต่งที่สะดวกในการใช้เมื่อคุณต้องการตัดเฉพาะขอบเขตเลเยอร์ด้วยรูปร่างสี่เหลี่ยมผืนผ้า (If28eb)
แทนที่ฟังก์ชันที่ประกอบกันได้ DrawShadow ด้วยตัวแก้ไข drawShadow() ตอนนี้ระบบจะวาดเงาเป็นส่วนหนึ่งของ LayerModifier (I0317a)
ย้าย androidx.compose.ViewComposer ไปยัง androidx.ui.node.UiComposer แล้ว นำ androidx.compose.Emittable ออกแล้ว เนื่องจากซ้ำกับ ComponentNode. androidx.compose.ViewAdapters จึงถูกนำออก และไม่ได้เป็นกรณีการใช้งานที่รองรับอีกต่อไป เลิกใช้งาน Compose.composeInto แล้ว โปรดใช้
setContentหรือsetViewContentแทน เลิกใช้งาน Compose.disposeComposition แล้ว โปรดใช้เมธอดdisposeในCompositionที่setContentส่งคืนแทน androidx.compose.Compose.subcomposeInto ย้ายไปที่ androidx.ui.core.subcomposeInto แล้ว เปลี่ยนชื่อ ComponentNode#emitInsertAt เป็น ComponentNode#insertAt แล้ว เปลี่ยนชื่อ ComponentNode#emitRemoveAt เป็น ComponentNode#removeAt แล้ว เปลี่ยนชื่อ ComponentNode#emitMode เป็น ComponentNode#move แล้ว (Idef00)เลิกใช้งาน Composable 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 ฯลฯ
- เพิ่มชุด API @Composable แบบ Lightweight ใหม่สำหรับการเปลี่ยนค่าแบบเคลื่อนไหว
- (I79530)
การเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบของ Ambient API ดูรายละเอียดได้ในบันทึกและเอกสาร
Ambient<T>(I4c7ee, b/143769776)ตอนนี้ตำแหน่ง Int ของเส้นการจัดแนวที่ส่งกลับจาก Placeable#get(AlignmentLine) จะไม่ใช่ค่าว่างแล้ว หากไม่มีบรรทัดการจัดแนวที่ค้นหา ระบบจะแสดงผล AlignmentLine.Unspecified (I896c5, b/158134875)
แก้ไขข้อบกพร่องของ ConstraintLayout ที่ทำให้เกิดข้อขัดข้องในการจัดองค์ประกอบใหม่ (Ibee5a, b/158164341)
มีการเปลี่ยนแปลง WithConstraints trailing lambda API ตอนนี้แทนที่จะมี 2 พารามิเตอร์ ก็จะมีขอบเขตตัวรับซึ่งนอกเหนือจากข้อจำกัดและ layoutDirection แล้ว ยังมีพร็อพเพอร์ตี้ minWidth, maxWidth, minHeight และ maxHeight ใน Dp (I91b9a, b/149979702)
เปลี่ยนชื่อ LayoutModifier2 เป็น LayoutModifier (Id29f3)
ฟังก์ชันการวัดค่าโดยธรรมชาติใน Layout และ LayoutModifier2 มีตัวรับ IntrinsicMeasureScope แล้ว ซึ่งมี API การค้นหาค่าโดยธรรมชาติพร้อมทิศทางการจัดวางที่ส่งต่อโดยนัย (Id9945)
เลิกใช้งาน LayoutDirectionAmbient แล้ว หากต้องการอ่านทิศทางเลย์เอาต์ที่กำหนดโดยภาษา ให้ใช้ localeLayoutDirection ใน ConfigurationAmbient (I851b1)
เพิ่ม positionInParent และ boundsInParent สำหรับ LayoutCoordinates (Icacdd, b/152735784)
เลิกใช้งาน Composable ของ ParentData แล้ว คุณควรสร้างตัวแก้ไขที่ใช้การเชื่อมต่อ ParentDataModifier หรือใช้ตัวแก้ไข LayoutTag หากเพียงต้องการติดแท็กองค์ประกอบย่อยของเลย์เอาต์เพื่อจดจำองค์ประกอบเหล่านั้นภายในบล็อกการวัด (I51368, b/150953183)
เพิ่ม OnPositionedModifier และ OnChildPositionedModifier เพื่อแทนที่ฟังก์ชันที่ใช้ได้ของ OnPositioned และ OnChildPositioned (I2ec8f)
ไม่อนุญาตให้ใช้ระยะเว้นเชิงลบใน LayoutPadding ควรใช้ LayoutOffset แทนสำหรับการชดเชยตำแหน่งเชิงลบ (Ifb5b1)
WithConstraints มีพารามิเตอร์ LayoutDirection (I6d6f7)
อัปเดตแฟล็ก
ComposeFlags.COMPOSER_PARAMเป็นtrueซึ่งจะเปลี่ยนกลยุทธ์การสร้างโค้ดสำหรับปลั๊กอิน Compose ในระดับสูง การดำเนินการนี้จะทำให้มีการสร้างฟังก์ชัน @Composable พร้อมพารามิเตอร์สังเคราะห์เพิ่มเติม ซึ่งจะส่งผ่านไปยังการเรียก @Composable ที่ตามมาเพื่อให้รันไทม์จัดการการดำเนินการได้อย่างเหมาะสม การเปลี่ยนแปลงนี้เป็นการเปลี่ยนแปลงที่สำคัญในระดับไบนารี แต่ควรคงความเข้ากันได้ในระดับแหล่งที่มาในการใช้งาน Compose ที่ได้รับอนุญาตทั้งหมด (I7971c)เปลี่ยน LayoutCoordinates เพื่อให้ providedAlignmentLines เป็นชุดแทนที่จะเป็นแผนที่ และให้ LayoutCoordinates ใช้ตัวดำเนินการ get() แทนสำหรับการดึงค่า ซึ่งจะช่วยให้ผู้แก้ไขแก้ไขค่าอย่างน้อย 1 ค่าของชุดได้ง่ายขึ้นโดยไม่ต้องสร้างคอลเล็กชันใหม่สำหรับตัวแก้ไขแต่ละรายการ (I0245a)
LayoutCoordinates ไม่มีพร็อพเพอร์ตี้ตำแหน่งอีกต่อไป พร็อพเพอร์ตี้ position ไม่มีความหมายเมื่อพิจารณา LayoutModifiers, rotation หรือการปรับขนาด นักพัฒนาแอปควรใช้ parentCoordinates และ childToLocal() เพื่อคำนวณการเปลี่ยนจาก LayoutCoordinate หนึ่ง ไปยังอีก LayoutCoordinate หนึ่งแทน
LayoutCoordinates ใช้ IntPxSize สำหรับพร็อพเพอร์ตี้ขนาดแทน PxSize เลย์เอาต์ใช้ขนาดพิกเซลจำนวนเต็มสำหรับเลย์เอาต์ ดังนั้นขนาดเลย์เอาต์ทั้งหมด ควรใช้จำนวนเต็มและไม่ใช่ค่าทศนิยม (I9367b)
การปรับปรุงแพลตฟอร์ม API ของข้อจํากัด (I0fd15)
เพิ่ม TextDirection.Content (I48f36)
ปรับเมนูแถบเครื่องมือเพื่อให้แสดงการคัดลอก ตัด วางได้อย่างถูกต้อง (Id3955)
เพิ่ม FloatingToolbar สำหรับการเลือก TextField (Ie8b07)
เปลี่ยนชื่อ TextDirectionAlgorithm เป็น TextDirection (I75ce8)
เปลี่ยนชื่อ TextDirection เป็น ResolvedTextDirection (I3ff38)
เพิ่ม HapticFeedback ลงในการเลือก TextField (I58050)
เพิ่มวิธีการคัดลอก ตัด และวางลงในการเลือก TextField (Idb70b)
ระบบได้ลบ TestTag และ Semantics แล้ว ให้ใช้ Modifier.testTag และ Modifier.semantics แทน (I15ff0, b/158841414)
เปลี่ยนชื่อแพ็กเกจสำหรับ Locale และ LocaleList จาก androidx.ui.text เป็น androidx.ui.intl (I8132c)
การเปลี่ยนแปลง API:
AnnotatedString(builder: Builder)เปลี่ยนชื่อเป็นannotatedString(builder: Builder)(Ia6377)การเปลี่ยนแปลง API:
AnnotatedString.Itemเปลี่ยนชื่อเป็นAnnotatedString.Range(I2d44d)เพิ่มแถบเครื่องมือสำหรับการดำเนินการที่เกี่ยวข้องกับข้อความ (I49d53)
ตอนนี้ LifecycleOwnerAmbient ใหม่พร้อมใช้งานแล้ว ตอนนี้ Activity ที่คุณใช้กับ Compose UI ควรขยาย androidx.activity.ComponentActivity (หรือ AppCompatActivity) ระบบได้เลิกใช้งาน setContent ใน android.app.Activity แล้ว (Idb25a, b/153141084)
แทนที่ชื่อแพ็กเกจ ui-android-text (androidx.text) ด้วย androidx.ui.text.platform เพื่อให้สอดคล้องกับนโยบาย androidx (I42711)