UI การเขียน
androidx.compose.ui
androidx.compose.ui.geometry
androidx.compose.ui.graphics
androidx.compose.ui.platform
androidx.compose.ui.test
(ดูเอกสารอ้างอิง API สำหรับแพ็กเกจ Compose ทั้งหมด)
| อัปเดตล่าสุด | รุ่นที่เสถียร | รุ่นที่อาจได้รับการเผยแพร่ | รุ่นเบต้า | รุ่นอัลฟ่า |
|---|---|---|---|---|
| 17 มิถุนายน 2026 | 1.11.3 | - | 1.12.0-beta01 | - |
โครงสร้าง
Compose คือการรวมรหัสกลุ่ม Maven 7 รายการภายใน androidx แต่ละกลุ่ม
มีฟังก์ชันการทำงานย่อยที่กำหนดเป้าหมาย ซึ่งแต่ละกลุ่มจะมีชุดหมายเหตุประจำรุ่นของตัวเอง
ตารางนี้อธิบายกลุ่มและลิงก์ไปยังชุดหมายเหตุประจำรุ่นแต่ละชุด
| กลุ่ม | คำอธิบาย |
|---|---|
| compose.animation | สร้างภาพเคลื่อนไหวในแอปพลิเคชัน Jetpack Compose เพื่อยกระดับประสบการณ์ของผู้ใช้ |
| compose.compiler | แปลงฟังก์ชัน @Composable และเปิดใช้การเพิ่มประสิทธิภาพด้วยปลั๊กอินคอมไพเลอร์ Kotlin |
| compose.foundation | เขียนแอปพลิเคชัน Jetpack Compose ด้วยองค์ประกอบพื้นฐานที่พร้อมใช้งาน และขยายพื้นฐานเพื่อสร้างชิ้นส่วนระบบการออกแบบของคุณเอง |
| compose.material | สร้าง UI ของ Jetpack Compose ด้วยคอมโพเนนต์ Material Design ที่พร้อมใช้งาน ซึ่งเป็นจุดแรกเข้าของ Compose ในระดับที่สูงขึ้น ออกแบบมาเพื่อจัดหาคอมโพเนนต์ที่ตรงกับคอมโพเนนต์ที่อธิบายไว้ที่ www.material.io |
| compose.material3 | สร้าง UI ของ Jetpack Compose ด้วยคอมโพเนนต์ Material Design 3 ซึ่งเป็นวิวัฒนาการขั้นถัดไปของ Material Design Material 3 มีการอัปเดตธีมและคอมโพเนนต์ รวมถึงฟีเจอร์การปรับเปลี่ยนในแบบของคุณของ Material You เช่น สีแบบเปลี่ยนอัตโนมัติ และออกแบบมาให้สอดคล้องกับสไตล์ภาพและ UI ของระบบ Android 12 ใหม่ |
| compose.runtime | บล็อกการสร้างพื้นฐานของรูปแบบการเขียนโปรแกรมและการจัดการสถานะของ Compose รวมถึงรันไทม์หลักสำหรับปลั๊กอินคอมไพเลอร์ Compose เพื่อกำหนดเป้าหมาย |
| compose.ui | คอมโพเนนต์พื้นฐานของ UI ของ Compose ที่จำเป็นต่อการโต้ตอบกับอุปกรณ์ ซึ่งรวมถึงเลย์เอาต์ การวาด และอินพุต |
การประกาศทรัพยากร Dependency
หากต้องการเพิ่มทรัพยากร Dependency ใน Compose คุณต้องเพิ่มที่เก็บ Maven ของ Google ลงในโปรเจ็กต์ อ่านข้อมูลเพิ่มเติมได้ที่ที่เก็บ Maven ของ Google
เพิ่มทรัพยากร Dependency สำหรับอาร์ติแฟกต์ที่ต้องการในไฟล์ build.gradle สำหรับ
แอปหรือโมดูล
Groovy
dependencies { implementation "androidx.compose.ui:ui:1.11.3" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.ui:ui:1.11.3") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
ดูข้อมูลเพิ่มเติมเกี่ยวกับการพึ่งพาได้ที่เพิ่มการพึ่งพาบิลด์
ความคิดเห็น
ความคิดเห็นของคุณช่วยให้ Jetpack ทำงานได้ดีขึ้น โปรดแจ้งให้เราทราบหากพบปัญหาใหม่หรือมี ไอเดียในการปรับปรุงไลบรารีนี้ โปรดดูปัญหาที่มีอยู่ ในไลบรารีนี้ก่อนสร้างปัญหาใหม่ คุณสามารถโหวตปัญหาที่มีอยู่ได้โดย คลิกปุ่มดาว
ดูข้อมูลเพิ่มเติมได้ในเอกสารประกอบของ Issue Tracker
เวอร์ชัน 1.12
เวอร์ชัน 1.12.0-beta01
17 มิถุนายน 2026
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.12.0-beta01 เวอร์ชัน 1.12.0-beta01 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- ไม่มี (ย้ายแฟล็กฟีเจอร์ของนักพัฒนาแอปภายใน) (Iaf2c4, b/368702588)
- ไม่เกี่ยวข้อง - ย้ายแฟล็กฟีเจอร์ (I24668, b/521811270)
- เพิ่มแฟล็กฟีเจอร์ทดลอง
ComposeUiFlagsisTrackpadPinchReinterpretationEnabledเพื่อตีความท่าทางสัมผัสแบบบีบแทร็กแพดใหม่เป็นเหตุการณ์ของเมาส์ที่มีค่าตัวคูณมาตราส่วน (Id3477, b/478053727) - เปลี่ยนชื่อฟังก์ชันทดสอบเพื่อทริกเกอร์เหตุการณ์ตัวชี้ทางอ้อม (I3ee35, b/509618414)
- เพิ่มการเพิ่มประสิทธิภาพให้กับ
BasicTextและBasicTextFieldซึ่งตอนนี้การตั้งค่าความสูงของบรรทัดสำหรับข้อความที่มี softwrap=false จะคำนวณได้อย่างเหมาะสมยิ่งขึ้น (I2150a)
การแก้ไขข้อบกพร่อง
- การแพร่กระจายสถานะการจับภาพการเลื่อนที่เพิ่มประสิทธิภาพในองค์ประกอบย่อย เพื่อป้องกันการประกอบ UI ใหม่โดยไม่จำเป็น (I05830)
- เปิดใช้แฟล็กฟีเจอร์ทดลอง
ComposeUiFlagsisTrackpadPinchReinterpretationEnabledโดยค่าเริ่มต้น (I35ab8, b/478053727) - แก้ไขปัญหาในการแยกวิเคราะห์ทรัพยากร Vector Drawable ซึ่งระบบจะละเว้นองค์ประกอบ
<clip-path>หลักหากมีองค์ประกอบ<group>ที่ซ้อนกัน (Id4ea9, b/474530439) - เพิ่มการรองรับกฎการลองทดสอบ JUnit 4 มาตรฐานอีกครั้งใน
AndroidComposeTestRuleโดยการสร้างสภาพแวดล้อมการทดสอบภายในและขอบเขตของโครูทีนใหม่ระหว่างความพยายามในการดำเนินการ (Iafaa7, b/235383900)
การมีส่วนร่วมจากภายนอก
- เปิดเผยอินเทอร์เฟซ
AndroidClipboardสำหรับการทดสอบเพื่อจำลองการใช้งานคลิปบอร์ด (Ie4d72, b/512924975) - เพิ่มความเข้ากันได้แบบย้อนหลังสำหรับ
TextAttributeตัวแปรของcommitText()และsetComposingText()สำหรับ SDK>=37 บริการช่วยเหลือพิเศษ จะประกาศได้ว่ามีการเลือกข้อความแทนที่ ที่แนะนำหรือไม่ สำหรับ SDK<37 จะไม่ส่งผลต่อความคิดเห็นที่พูด (กล่าวคือลักษณะการทำงานที่มีอยู่) (I90e3d, b/439879822)
เวอร์ชัน 1.12.0-alpha03
19 พฤษภาคม 2026
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.12.0-alpha03 เวอร์ชัน 1.12.0-alpha03 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม
credentialRequestพร็อพเพอร์ตี้ Semantics ใหม่และCredentialRequestDataตัวช่วยใน API 34 ขึ้นไปเพื่อให้ช่องข้อความ Jetpack Compose ผสานรวมกับ Credential Manager ของ Android ผ่านเฟรมเวิร์กการป้อนข้อความอัตโนมัติได้ (Ida2bf, b/488446455) - เพิ่ม
ParagraphIntrinsicsฟังก์ชัน Factory ที่รับอาร์กิวเมนต์softWrapและอื่นๆ ภายใน เราอาจใช้เป็นสัญญาณว่าข้อความแสดงเป็นบรรทัดเดียวและทำการเพิ่มประสิทธิภาพบางอย่าง (I66ca4, b/485495112) - เพิ่มการรองรับเสียงโต้ตอบอัตโนมัติ (การคลิกและการไปยังส่วนต่างๆ ด้วยโฟกัส) ให้กับคอมโพเนนต์ Compose โดยมี
SoundEffectOnInteractionComposable ใหม่ที่อนุญาตให้เลือกไม่ใช้ โปรดทราบว่าผลจากการเปลี่ยนแปลงนี้ ตอนนี้ต้องเรียกใช้เครื่องมือฟังการคลิกเชิงความหมายจากเทรดหลัก ซึ่งอาจส่งผลต่อกรณีทดสอบจำนวนเล็กน้อย (I78f65) Fontฟังก์ชันจากโรงงานที่เสถียรvariationSettings(I183f2)- พร็อพเพอร์ตี้
ResourceFontloadingStrategyและเมธอดcopyที่เสถียร (I40d84) - API ของ
InterceptPlatformTextInputและPlatformTextInputInterceptorที่เสถียร (Id2784) - เราได้ย้าย
registerIdlingResourceและunregisterIdlingResourceไปยังฟังก์ชันส่วนขยายเพื่อปรับปรุงการแยกแพลตฟอร์ม คุณอาจต้องอัปเดตการนำเข้า (I21d3d, b/471148519) - เปิดตัว
runWithoutImplicitWaitในComposeTestRuleและComposeUiTestเพื่อปรับปรุงประสิทธิภาพการทดสอบระหว่างการตรวจสอบสถานะ API นี้ช่วยให้สามารถเรียกใช้บล็อกโค้ดโดยปิดใช้การซิงค์โดยนัย ซึ่งจะช่วยหลีกเลี่ยงค่าใช้จ่ายในการซิงค์ซ้ำๆ สำหรับการค้นหาแต่ละโหนด ซึ่งจะส่งผลให้การดำเนินการทดสอบเร็วขึ้นอย่างมาก โดยเฉพาะอย่างยิ่งสำหรับการทดสอบที่ต้องผ่านเฟรมด้วยตนเองและสุ่มตัวอย่างพร็อพเพอร์ตี้หลายรายการ เช่น ในการทดสอบภาพเคลื่อนไหว (Ie00e9, b/490270394) - ตอนนี้คุณใช้คำอธิบายประกอบ
@PreviewWrapperกับคลาสคำอธิบายประกอบMultiPreviewได้แล้ว ซึ่งช่วยให้นักพัฒนาแอปสร้างการกำหนดค่าตัวอย่างที่ห่อหุ้มไว้ล่วงหน้าและนำกลับมาใช้ใหม่ได้ (I8ae66, b/511170361) - เปิดตัว
MeshGradientPainterสำหรับการแสดงผลการไล่ระดับสีแบบตาข่ายModifier.meshGradientนำModifier.meshGradientออกแล้ว ให้ใช้MeshGradientPainterกับModifier.paintแทนMeshGradientRendererเป็นแบบภายในแล้ว (I2d170, b/508110246) - ตอนนี้คุณสามารถระบุไม้บรรทัดแต่ละอันได้โดยการระบุ Lambda ที่ตอบสนองว่าสามารถระบุไม้บรรทัดได้หรือไม่ พร้อมกับ Lambda แยกต่างหากที่ระบุค่าของไม้บรรทัด ระบบจะไม่สังเกตการณ์แลมบ์ดา
isRulerProvidedและควรพิจารณาในแง่ดีว่าสามารถระบุค่าได้หรือไม่ เราสังเกตrulerProviderlambda เพื่อให้หากค่าใดเปลี่ยนแปลง ระบบจะอัปเดตค่าของไม้บรรทัดและผู้อ่านทั้งหมดของไม้บรรทัด (Ie9089) - ใน Style API เวอร์ชันทดลอง เราได้เพิ่มการรองรับการสร้างประเภทสไตล์ที่กำหนดเองซึ่งมีขอบเขตสไตล์ที่กำหนดเองได้ ซึ่งจะช่วยให้คุณเลือกพร็อพเพอร์ตี้ที่ตั้งค่าได้ตามสไตล์ (เช่น การนำเลเยอร์กราฟิกหรือพร็อพเพอร์ตี้ข้อความออกทั้งหมด) รวมถึงช่วยให้ขยายขอบเขตได้โดยไม่ขึ้นอยู่กับสไตล์อื่นๆ (เช่น รองรับเฉพาะไวยากรณ์
playing { }ในMediaPlayerที่ประกอบได้) การเปลี่ยนแปลงนี้ทำให้ความเข้ากันได้ของไบนารีและซอร์สไม่สามารถใช้งานได้ การเปลี่ยนแปลงหลักที่ทำให้แหล่งที่มาไม่สามารถใช้งานร่วมกันได้คือฟังก์ชันตัวช่วยในStyleScopeได้ย้ายไปเป็นฟังก์ชันส่วนขยายแล้ว (เช่น ตอนนี้fun contentProperty(all: Dp)เป็นฟังก์ชันส่วนขยาย) การนำเข้าฟังก์ชันส่วนขยายที่จำเป็นหรือการนำเข้าสัญลักษณ์ทั้งหมดจาก androidx.compose.foundation.styles ควรเป็นสิ่งเดียวที่จำเป็นเพื่อให้โค้ดที่เรียกใช้เมธอดเหล่านี้คอมไพล์ได้อย่างถูกต้อง (I1ef27, b/493676648) - เพิ่ม
updatePointerBy()โดยมีอาร์กิวเมนต์เริ่มต้นสำหรับรหัสพอยน์เตอร์ (I99f30, b/502001776) DeferredTargetAnimationไม่ใช่เวอร์ชันทดลองอีกต่อไป โปรดนำการเลือกใช้ดังกล่าวออก" ไปยัง androidx-main- เพิ่ม Flag
isClearNestedScrollCoroutineScopeFixEnabledเพื่อควบคุมการแก้ไข (Ibd394, b/505343254) DeferredTargetAnimationไม่ใช่ฟีเจอร์ทดลองอีกต่อไป โปรดนำการเลือกใช้ฟีเจอร์ออก (I1e4ae, b/500030165)- Enum ใหม่เพื่อรองรับทริกเกอร์ใน ui-tooling (I6e198, b/478807872)
- ระบบ
ComposeViewContextอนุญาตให้สร้างโดยไม่ต้องแนบมุมมองอ้างอิง แต่ยังคงกำหนดให้ต้องแนบ View อ้างอิงก่อนเรียกใช้setContent()(Id0952)
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาที่
focusRestorerไม่คืนค่าโฟกัสอย่างถูกต้องเมื่อมีการเรียกใช้การบันทึกหลายครั้งสำหรับเลย์เอาต์เดียวกัน (I10277, b/505371994) - การปรับปรุงประสิทธิภาพก่อนหน้านี้ส่งผลข้างเคียงคือไม่อนุญาตให้วัด
ComposeViewsที่ไม่ได้แนบ การเปลี่ยนแปลงนี้ช่วยให้ทำได้โดยไม่ต้องกลับไปเจอปัญหาด้านประสิทธิภาพอีก (I9b2c5, b/508650647) - ตอนนี้ระบบจะสร้างการเรียบเรียงใหม่เมื่อมีการเปลี่ยนแปลง
ComposeViewContextเพื่อให้เข้าถึงComposeViewContextได้เร็วขึ้น (I3b3a8, b/487364963) - อนุญาตให้ Compose ตั้งค่าสีที่ไม่ใช่ sRGB ใน Paint และ Shader บน Android เพื่อรักษาช่วงสีแบบกว้างโดยการแมปพื้นที่สีของ Compose กับพื้นที่สีที่เทียบเท่าในแพลตฟอร์มอย่างถูกต้อง พื้นที่สีที่ไม่รองรับสำหรับการดำเนินการแสดงผลของแพลตฟอร์ม (เช่น CIE XYZ, CIE Lab, OkLab) หรือไม่พร้อมใช้งานในระดับ API ปัจจุบันจะเปลี่ยนกลับไปใช้พื้นที่สี Srgb อย่างปลอดภัย (I3efb5, b/388511109)
การมีส่วนร่วมจากภายนอก
androidx.compose.ui.platform.NativeClipboardtypealias เลิกใช้งานแล้ว โปรดใช้android.content.ClipboardManagerโดยตรงแทน (Ibc611)- แทนที่พร็อพเพอร์ตี้
Clipboard.nativeClipboardด้วยส่วนขยายClipboard.nativeClipboardManagerเพื่อหลีกเลี่ยงการเปิดเผยประเภทแพลตฟอร์มในcommonMainsourceset ผ่านtypealias(Ibc611)
เวอร์ชัน 1.12.0-alpha02
6 พฤษภาคม 2026
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.12.0-alpha02 เวอร์ชัน 1.12.0-alpha02 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ขอแนะนำ
MeshGradientตัวปรับแต่ง (Ia9a08, b/455752719) - นำการเรียกกลับการบันทึกการแก้ไขข้อบกพร่องของการป้อนข้อความอัตโนมัติในตัวออก คุณสามารถใช้ฟังก์ชันการทำงานเดียวกันได้โดยการบันทึกจาก
AutofillManager.AutofillCallback(I631c7, b/502279690) - รองรับการตั้งค่าตัวแปรสำหรับแบบอักษรที่ดาวน์โหลดได้ (Ic25c7, b/496278020)
- อัปเดต
mediaQueryและderivedMediaQueryเพื่อแสดงผลประเภททั่วไปแทนBooleanซึ่งจะช่วยให้ใช้งานได้ยืดหยุ่นมากขึ้นเมื่อสร้าง UI แบบปรับได้ (I93830, b/498698350)
เวอร์ชัน 1.12.0-alpha01
22 เมษายน 2026
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.12.0-alpha01 เวอร์ชัน 1.12.0-alpha01 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- นำแฟล็กฟีเจอร์
ComposeUiFlags.isIndirectPointerNavigationGestureDetectorEnabled(I82be3, b/455601135) ออก - ทำให้
mediaQueryเป็นฟังก์ชันแบบอินไลน์ (Ie9457, b/498698350) ComposeViewContextได้ย้ายออกจากระยะทดลองแล้ว และนำคำอธิบายประกอบExperimentalComposeViewContextApiออกแล้ว (I32eca)ComposeView.disableWindowInsetsRulers()ไม่ใช่ฟีเจอร์เวอร์ชันทดลองอีกต่อไป (Ia81a5)- เพิ่ม
hasPendingWork()API เพื่อให้ตรวจสอบได้โดยไม่ต้องดำเนินการใดๆ ว่า UI ของ Compose มีงานที่รอดำเนินการอยู่หรือไม่ โดยไม่ต้องรอหรือเลื่อนเวลา ซึ่งจะมีประโยชน์สำหรับการทดสอบนาฬิกาด้วยตนเองเพื่อพิจารณาว่าภาพเคลื่อนไหวหรืองานอื่นๆ ในเบื้องหลังเสร็จสิ้นเมื่อใด (Ic54e3) - นำแฟล็กฟีเจอร์
AndroidComposeUiFlags.isForceChildLayoutAfterMeasurementEnabled(I7fd25, b/491111451) ออกแล้ว - นำแฟล็กฟีเจอร์
AndroidComposeUiFlags.isSharedFontEnabled(I2cebe, b/479898293) ออกแล้ว - เพิ่ม
KeyboardTypeตัวเลือกเพิ่มเติมเพื่อทำให้ชุดตัวเลือกแป้นพิมพ์ที่รองรับใน Android สมบูรณ์ยิ่งขึ้น ซึ่งรวมถึงวันที่ เวลา วันที่และเวลา ทศนิยมที่มีการลงนาม และอื่นๆ (I3713e, b/202353328) - นำธง
AndroidComposeUiFlags.isSharedHapticsEnabledออกแล้ว (I6a1d4, b/479895628) - นำฟีเจอร์ที่ต้องเปิดใช้ด้วย
AndroidComposeUiFlags.isSharedClipboardManagerEnabledออกแล้ว (I41e3c, b/479895130) - นำธง
AndroidComposeUiFlags.isSharedViewConfigurationEnabledออกแล้ว (I6d3aa, b/479890645) - นำแฟล็กฟีเจอร์
AndroidComposeUiFlags.isSharedDrawingEnabledออกแล้ว (I27912, b/479849019) - นำแฟล็กฟีเจอร์
AndroidComposeUiFlags.isSharedAccessibilityManagerEnabledออกแล้ว (I6b726, b/479845566) - นำฟีเจอร์ที่ทำเครื่องหมายเป็น
AndroidComposeUiFlags.isSharedWindowInfoEnabledออก (Ife9a9, b/479837249) - นำ
AndroidComposeUiFlags.isSharedComposeViewContextEnabledแฟล็กออก (Ic522a, b/479834257) - เพิ่มการตั้งค่าตัวแปรเพื่อปรับแต่งแบบอักษรแบบแปรผันที่ดาวน์โหลดได้ (Ifdc93, b/223262013)
- เพิ่มการตั้งค่าตัวแปรเพื่อปรับแต่งแบบอักษรที่ปรับแต่งได้ซึ่งดาวน์โหลดได้ (I390af, b/223262013)
- นำการแจ้งว่าไม่เหมาะสมออก
isTraversableDelegatesFixEnabled(Ia7dfe, b/485962494) - เปิดตัว
runWhenIdleและตัวแปรที่ระงับawaitAndRunWhenIdleในComposeTestRuleและComposeUiTestเพื่อปรับปรุงประสิทธิภาพการทดสอบและความเสถียรของสถานะ API เหล่านี้จะซิงค์ UI เพียงครั้งเดียว จากนั้นจะเรียกใช้บล็อกโค้ดโดยไม่มีค่าใช้จ่ายในการซิงค์ซ้ำสำหรับการดำเนินการแต่ละครั้ง ซึ่งจะส่งผลให้การดำเนินการทดสอบเร็วขึ้นอย่างมากและมีความน่าเชื่อถือน้อยลง โดยเฉพาะอย่างยิ่งสำหรับการทดสอบที่สุ่มตัวอย่างพร็อพเพอร์ตี้จำนวนมาก เช่น ในการทดสอบภาพเคลื่อนไหว (Iabf66, b/490270394) - เพิ่ม
LayerOutsetsไปยังGraphicsLayerและModifier.graphicsLayerซึ่งใช้เพื่อเพิ่มขอบเขตภาพของเลเยอร์ให้เกินขนาดที่วัดได้ ซึ่งใช้เพื่อหลีกเลี่ยงลักษณะการทำงานของclipToBoundsโดยนัยเมื่อเลเยอร์ได้รับการเลื่อนระดับเป็นบัฟเฟอร์นอกหน้าจอ (Ic1189) - ปิดใช้การบันทึกเหตุการณ์อินพุตการป้อนข้อความอัตโนมัติโดยค่าเริ่มต้น ตอนนี้คุณเปิดใช้ได้โดยโทรหา
ComposeView.setAutofillDebugEnabled(I5b430, b/487947860) - เปลี่ยน VelocityTracker ให้ใช้การติดตั้งใช้งานที่ Android Framework จัดเตรียมไว้ให้ (กำหนดค่าได้ด้วย
AndroidComposeUiFlags.isFrameworkVelocityTrackerEnabled) (Ibc7e2, b/359962905) - เมื่อ
AndroidComposeUiFlags.isForceChildLayoutAfterMeasurementEnabledเป็นจริง View ขององค์ประกอบย่อยจะมีการเรียกใช้เลย์เอาต์หลังจากการวัดผลเสมอในระหว่างการส่งผ่านเลย์เอาต์ Compose ไม่ได้วางเลย์เอาต์องค์ประกอบย่อยเสมอไปหลังจากการวัด แต่ View ต้องใช้เลย์เอาต์ดังกล่าวเพื่อการจัดการสถานะที่เหมาะสม (Ib4fe9, b/430974758) - เพิ่ม
isVirtualในLayoutInfo(I3e5cd, b/494243978) - ล้างข้อมูลใน
isGraphicsLayerShapeSemanticsEnabledแล้ว (I44be0, b/455600081) - เพิ่ม Font API ใหม่เพื่อใช้แบบอักษรที่ดาวน์โหลดได้โดยไม่ต้องเพิ่มใบรับรองแบบอักษรลงในโค้ดเบสด้วยตนเอง (I30b86, b/479454159)
- เพิ่ม
onRootWithViewInteractionเพื่อกำหนดขอบเขตการค้นหาเชิงความหมายของ Compose ให้กับ Android View ที่เฉพาะเจาะจง ซึ่งจะช่วยให้การทดสอบ UI แบบไฮบริด เช่นRecyclerViewsง่ายขึ้นโดยไม่ต้องใช้แท็กทดสอบที่ไม่ซ้ำกันในโค้ดจริง (Ic02c4, b/175226753)
การแก้ไขข้อบกพร่อง
- ตอนนี้
captureToImage()API ช่วยให้คุณบันทึกป๊อปอัปหรือกล่องโต้ตอบพร้อมกับจุดยึดในบิตแมปเดียวได้แล้ว (I9b83a, b/443137545) - อัปเดต Compose
compileSdkเป็น API 37 ซึ่งหมายความว่าเมื่อใช้ Compose จะต้องใช้ AGP เวอร์ชัน 9.2.0 เป็นอย่างน้อย (Id45cd, b/413674743) - การตั้งค่า
ContentDataType.Noneในความหมายจะป้องกันไม่ให้ฟีเจอร์เขียนส่งเหตุการณ์การป้อนข้อความอัตโนมัติ ซึ่งจะช่วยป้องกันค่าใช้จ่ายในการเริ่มต้นที่เกี่ยวข้องกับการขอใช้บริการป้อนข้อความอัตโนมัติ (I8fbda, b/487947860)
เวอร์ชัน 1.11
เวอร์ชัน 1.11.3
17 มิถุนายน 2026
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.11.3 เวอร์ชัน 1.11.3 มีการเปลี่ยนแปลงเหล่านี้
เวอร์ชัน 1.11.2
19 พฤษภาคม 2026
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.11.2 เวอร์ชัน 1.11.2 มีการเปลี่ยนแปลงเหล่านี้
เวอร์ชัน 1.11.1
6 พฤษภาคม 2026
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.11.1 เวอร์ชัน 1.11.1 มีการคอมมิตเหล่านี้
เวอร์ชัน 1.11.0
22 เมษายน 2026
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.11.0 เวอร์ชัน 1.11.0 มีการเปลี่ยนแปลงเหล่านี้
เวอร์ชัน 1.11.0-rc01
8 เมษายน 2026
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.11.0-rc01 เวอร์ชัน 1.11.0-rc01 มีการเปลี่ยนแปลงเหล่านี้
เวอร์ชัน 1.11.0-beta02
25 มีนาคม 2026
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.11.0-beta02 เวอร์ชัน 1.11.0-beta02 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- เปลี่ยนชื่อ
PreviewWrapperAPI เพื่อให้สอดคล้องกัน (I62659, b/490085948) ComposeViewContextช่วยให้ComposeViewเขียนได้โดยไม่ต้องแนบกับลำดับชั้นการแสดงผล ใช้AbstractComposeView.createComposition(composeViewContext)เพื่อเริ่มเขียนโดยไม่ต้องแนบComposeView(I46e6f)- เพิ่ม
delayMillisลงใน API การทดสอบแทร็กแพดสำหรับpanEndและscaleEnd(If80fe)
การแก้ไขข้อบกพร่อง
ClipboardและClipboardManagerจะขอใช้บริการของระบบในการเรียกใช้เมธอดครั้งแรก (If0016, b/487947860)- ระบบจะคืนค่าโฟกัสอย่างถูกต้องภายในคอนเทนเนอร์แบบเลซีซึ่งมีการนำโหนดและกลุ่มโฟกัสกลับมาใช้ซ้ำ (I18d36, b/481564275)
- ป๊อปอัปที่มี
clippingEnabled = falseจะใช้ขอบเขตหน้าต่างทั้งหมดอย่างถูกต้องเพื่อแสดงแบบขอบจรดขอบ (I206408, b/327017902)
เวอร์ชัน 1.11.0-beta01
11 มีนาคม 2026
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.11.0-beta01 เวอร์ชัน 1.11.0-beta01 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มการรองรับ
windowTokenที่กำหนดเองลงในกล่องโต้ตอบ Jetpack Compose (Ic7728) - เพิ่มการรองรับ
windowTokenและwindowTypeที่กำหนดเองลงในป๊อปอัป Jetpack Compose แล้ว (I0a04f) - ขอแนะนำอินเทอร์เฟซ
PreviewWrapperและผู้ให้บริการคำอธิบายประกอบ ซึ่งจะช่วยให้นักพัฒนาแอปสามารถรวมตัวอย่างเข้ากับลักษณะการทำงานที่กำหนดเองได้อย่างราบรื่น (I29f54, b/484306729) - เมื่อ
AndroidComposeUiFlags.isSharedFontEnabledเป็นจริง คุณจะแชร์อินสแตนซ์ออบเจ็กต์ที่เกี่ยวข้องกับแบบอักษร เช่นFontLoaderและFontFamilyResolverในอินสแตนซ์ComposeViewภายในComposeViewContextได้ (I403e8) - ตัวประมวลผลเชิงความหมายของ Compose จะใช้ view.handler แทน
mainLooperเพื่อหลีกเลี่ยงข้อขัดข้องในมุมมองที่ใช้ตัวแฮนเดิลที่ไม่ใช่ตัวแฮนเดิลหลัก (I671c3, b/486235925) - เพิ่มแฟล็ก
isSkipNonImportantSemanticsNodesHitTestEnabledที่ป้องกันการแก้ไขข้อบกพร่องสำหรับการทดสอบการแตะเพื่อสำรวจเชิงความหมาย ซึ่งส่งผลต่อการแตะเพื่อสำรวจของTalkBack(I2933f, b/481011169, b/454377558, b/461360154) - เพิ่มการรองรับการแสดงกล่องโต้ตอบ Jetpack Compose จากบริการ Android แล้ว การระบุประเภทหน้าต่างที่กำหนดเองผ่านพารามิเตอร์
windowTypeใหม่ในDialogPropertiesช่วยให้นักพัฒนาแอปแสดงกล่องโต้ตอบในหน้าต่างซ้อนทับได้แล้ว (I7c504, b/478214962) - เปลี่ยนชื่อพร็อพเพอร์ตี้
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การแยกนี้ช่วยให้ส่งข้อมูลเพิ่มเติมเกี่ยวกับการเริ่มต้นและสิ้นสุดของท่าทางสัมผัสการแพนและการปรับขนาดที่แพลตฟอร์มตีความได้ ซึ่งจะช่วยให้ตัวแฮนเดิลอินพุตของ Pointer ใน Compose ใช้ข้อมูลนี้เพื่อตรวจหาเหตุการณ์ได้อย่างเหมาะสม และโดยเฉพาะอย่างยิ่งทราบเมื่อการแพนหรือการปรับขนาดเสร็จสิ้น (I4daf6, b/479285849, b/481333653) - เมื่อ
AndroidComposeUiFlags.isSharedHapticsEnabledเป็นจริงComposeViewContextจะมีอินสแตนซ์ของตัวควบคุมการโต้ตอบการสัมผัสที่แชร์ (Icd79a) - เปิดตัว API
mediaQuery,derivedMediaQueryและUiMediaScopeเวอร์ชันทดลอง (ทำเครื่องหมายเป็น@ExperimentalMediaQueryApi) เพื่อเปิดใช้การพัฒนา UI แบบปรับได้เชิงประกาศตามขนาดหน้าต่าง ท่าทางหน้าต่าง และความสามารถอื่นๆ ของอุปกรณ์และสภาพแวดล้อม (I2d21e, b/479800750)
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาที่
Modifier.dropShadowและModifier.innerShadowที่มีขอบเขตระดับบล็อกจะไม่วาดใหม่เมื่อพารามิเตอร์รูปร่างมีการเปลี่ยนแปลงแบบไดนามิก (Ida262, b/486202623) - แก้ไขข้อบกพร่องที่ทำให้เนื้อหาในบรรทัดวางผิดที่ในเลย์เอาต์ RTL ที่มีข้อความ LTR หรือเลย์เอาต์ LTR ที่มีข้อความ RTL (I09789)
- แก้ไขข้อบกพร่องที่ทำให้ระบบแสดงข้อยกเว้นเมื่อใช้
ComposeViewในทรานซิชันของ Fragment (Ia425f, b/484100557)
การมีส่วนร่วมจากภายนอก
- เพิ่มพร็อพเพอร์ตี้
InputTextSuggestionStateเพื่อช่วยระบุสถานะต่างๆ ที่อินพุตการทับศัพท์อาจอยู่ในเมื่อมีคำแนะนำในการแทนที่ข้อความ นอกจากนี้ ยังมีการเปิดตัวTextCompositionRangeเพื่อติดตามช่วงของช่วงการเรียบเรียงข้อความการทับศัพท์ปัจจุบัน ค่า Null แสดงว่าไม่มีการเรียบเรียง (I7a67f, b/476472318)
เวอร์ชัน 1.11.0-alpha06
25 กุมภาพันธ์ 2026
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.11.0-alpha06 เวอร์ชัน 1.11.0-alpha06 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เราได้แทนที่แฟล็ก
ComposeUiFlags.areWindowInsetsRulersEnabledด้วยComposeView.disableWindowInsetsRulers()API แล้ว (Idcdb4, b/455590696) - ย้ายฟีเจอร์แฟล็กเวอร์ชันทดลองสำหรับ Android เท่านั้น
isAccessibilityShowOnScreenNestedScrollingEnabledไปยัง (I1c13a) - เพิ่มการรองรับการเดินขึ้น (I1c13a)
- รายงานโหนดเชิงความหมายนอกหน้าจอซึ่งเป็นโหนดย่อยของโหนดการผสานที่มองเห็นได้บางส่วนในคอนเทนเนอร์ที่เลื่อนได้เพื่อประสบการณ์ของผู้ใช้ที่ดีขึ้นด้วยโปรแกรมอ่านหน้าจอและบริการการช่วยเหลือพิเศษที่คล้ายกัน (I71df9, b/434782764)
- เมื่อ
AndroidComposeUiFlags.isSharedClipboardManagerEnabledเป็นจริง คุณจะแชร์อินสแตนซ์ที่เกี่ยวข้องกับคลิปบอร์ดในComposeViewsโดยใช้ComposeViewContext(I65e2c) ได้ ComposeUiFlags.isRectManagerOffsetUsageFromLayoutCoordinatesEnabledถูกนำออกแล้ว (I6e14a, b/455601894)
เวอร์ชัน 1.11.0-alpha05
11 กุมภาพันธ์ 2026
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.11.0-alpha05 เวอร์ชัน 1.11.0-alpha05 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
AndroidComposeUiFlags.isSharedWindowInfoEnabledจะย้ายข้อมูลWindowInfoไปยังComposeViewContextการปิดใช้ฟีเจอร์นี้จะทำให้WindowInfoควบคุมโดยAndroidComposeView(I3b364)- ระบบจะย้ายโครงสร้างทั่วไปภายใน
ComposeViewไปยังComposeViewContextที่แชร์ นี่เป็นการเปลี่ยนแปลงครั้งแรกที่ย้ายCoroutineContextไปยังComposeViewContextเมื่อAndroidComposeUiFlags.isSharedComposeViewContextEnabledเป็นจริง ระบบจะแชร์ค่าโดยอัตโนมัติ หากเป็นเท็จ ระบบจะไม่แชร์ (I9364d, b/461566955) - เพิ่มการรองรับท่าทางสัมผัสบนแทร็กแพดและการแปลงจากเหตุการณ์อินพุตของแทร็กแพดเป็นเมาส์ การเปลี่ยนแปลงนี้จะทำให้ระบบรายงานเหตุการณ์เคอร์เซอร์ของแทร็กแพดที่ควบคุมเคอร์เซอร์เหมือนในแท็บเล็ตหรือแล็ปท็อปเป็นเคอร์เซอร์ของเมาส์โดยทั่วไป ซึ่งจะช่วยปรับปรุงลักษณะการทำงานเกี่ยวกับการเลื่อนเคอร์เซอร์ การเลื่อน และการวางเมาส์เหนือองค์ประกอบ ระบบจะรายงานท่าทางสัมผัสการแพนและการปรับขนาดพร้อมข้อมูลเพิ่มเติมที่มีในการเปลี่ยนแปลงเหตุการณ์ของเคอร์เซอร์ โดยมี PointerEventType.Pan และ PointerEventType.Scale ใหม่ที่ระบุว่าระบบจะตั้งค่าเหล่านี้ (Id071a, b/315527861, b/459831570)
การแก้ไขข้อบกพร่อง
- ส่ง
CONTENT_CHANGE_TYPE_CHECKEDสำหรับการเปลี่ยนแปลงพร็อพเพอร์ตี้ที่สลับได้ (I6ac64, b/476894689, b/474538004, b/475754416)
การมีส่วนร่วมจากภายนอก
androidx.compose.ui.graphics.NativePaintเลิกใช้งานแล้ว โปรดใช้android.graphics.Paintโดยตรงแทน (I6303c, b/477394763)- แทนที่ส่วนขยาย
Paint.asFrameworkPaint()ด้วยPaint.nativePaintเพื่อหลีกเลี่ยงการเปิดเผยประเภทแพลตฟอร์มในcommonMainsourceset ผ่านtypealias(I6303c, b/477394763) - เพิ่มการรองรับคีย์การเคลื่อนไหว
NumPad(I1ff12)
เวอร์ชัน 1.11.0-alpha04
28 มกราคม 2026
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.11.0-alpha04 เวอร์ชัน 1.11.0-alpha04 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- เปิดเผย
TestCoroutineSchedulerเพื่อเปิดใช้runCurrent()และตรวจสอบว่าเข้าถึงอินสแตนซ์เครื่องมือจัดตารางเวลาที่แชร์ได้ (Iea662, b/254115946) - เพิ่มการรองรับการเลื่อนขึ้นแบบซ้อนกันเพื่อตอบสนองต่อ
android.R.id.accessibilityActionShowOnScreenจากการช่วยเหลือพิเศษ (Ib2723, b/431148846)
การแก้ไขข้อบกพร่อง
- แก้ไขการแปลงพื้นที่สี RGB ของ Android ที่กำหนดเอง การแปลงระดับสีเทาที่กำหนดเองแปลงระหว่างพื้นที่สี RGB ของ Compose ที่กำหนดเองและ Android อย่างไม่ถูกต้อง(ebd45,b/377021410)
เวอร์ชัน 1.11.0-alpha03
14 มกราคม 2026
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.11.0-alpha03 เวอร์ชัน 1.11.0-alpha03 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- นำธง
ComposeUiTestFlags.isStandardTestDispatcherSupportEnabledออกแล้ว ตอนนี้ API v2run*ComposeUiTestและcreate*ComposeRuleจะใช้StandardTestDispatcherโดยค่าเริ่มต้น หากต้องการใช้UnconfinedTestDispatcherต่อไป คุณสามารถใช้ API ที่เลิกใช้งานแล้วได้ แต่เราขอแนะนำอย่างยิ่งให้ย้ายข้อมูลไปยัง API เวอร์ชัน 2 เพื่อให้ควบคุมการดำเนินการของโครูทีนได้ดียิ่งขึ้น (Iecc9c, b/455601592) - เปิดตัว
androidx.compose.ui.test.junit4.v2.create*ComposeRuleAPI API ใหม่เหล่านี้ใช้StandardTestDispatcherโดยค่าเริ่มต้นเพื่อจำลองลักษณะการทำงานของการผลิตได้ดียิ่งขึ้น ซึ่งจะจัดคิวโครูทีนแทนที่จะดำเนินการทันที ดูข้อมูลเพิ่มเติมได้ที่คำแนะนำในการย้ายข้อมูล (I1870e, b/254115946) - เปิดตัว
androidx.compose.ui.test.v2.run*ComposeUiTestAPI API ใหม่เหล่านี้ใช้StandardTestDispatcherโดยค่าเริ่มต้นเพื่อจำลองลักษณะการทำงานของการผลิตได้ดียิ่งขึ้น ซึ่งจะจัดคิวโครูทีนแทนที่จะดำเนินการทันที ดูข้อมูลเพิ่มเติมได้ที่คำแนะนำในการย้ายข้อมูล (I4f782, b/254115946) - ตอนนี้คุณแชร์โครงสร้างทั่วไปภายใน
ComposeViewได้แล้ว เมื่อComposeUiFlags.isSharedComposeViewContextEnabledเป็นจริง ระบบจะแชร์ค่าโดยอัตโนมัติ หากเป็นเท็จ ระบบจะไม่แชร์ (I0d1b4, b/463540495, b/460468959, b/461503366, b/463641813)
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องที่การนำเนื้อหาทั้งหมดออกจาก
ComposeViewไม่ได้นำเนื้อหาที่วาดออก (I8b382, b/299503084) - แก้ไขข้อขัดข้องที่มีการเขียนที่หยุดชั่วคราวเมื่อเคลื่อนไหวด้วย
LookaheadScope(I7e649, b/469669851) - แก้ไขปัญหาที่การส่งสตริงที่ยาวเกินไปไปยังบริการป้อนข้อความอัตโนมัติทำให้เกิดข้อขัดข้อง เพื่อป้องกันปัญหานี้ ตอนนี้ระบบจะตัดข้อความให้มีความยาวที่ถูกต้องโดยอัตโนมัติก่อนที่จะส่ง
- แก้ไขข้อบกพร่องที่การวางเมาส์เหนือองค์ประกอบแล้วออกจากองค์ประกอบอาจทำให้เกิดการคลิกภายใต้เงื่อนไขที่เฉพาะเจาะจงมาก (a3d5a0f)
- แก้ไขการส่งเหตุการณ์การวางเมาส์เหนือสไตลัสสำหรับการทดสอบ และเตรียมการทดสอบเมาส์สำหรับการทดสอบสไตลัสใหม่ (9ca9bc9)
- เพิ่มการรองรับการวาง/ไม่วางองค์ประกอบ UI ด้วยอินพุตของพอยน์เตอร์ (d0742b0, b/BUD_ID)
- แก้ไขข้อบกพร่องใน Jetpack Compose
Popupซึ่งมีการส่งพิกัดสัมบูรณ์ของขอบเขตของ Anchor ไปยังPopupPositionProviderซึ่งทำให้วางป๊อปอัปไม่ถูกต้อง ตอนนี้การคำนวณตำแหน่งป๊อปอัปใช้พิกัดสัมพัทธ์ที่ถูกต้องแล้ว(1f7edf,b/469940907)
เวอร์ชัน 1.11.0-alpha02
17 ธันวาคม 2025
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.11.0-alpha02 เวอร์ชัน 1.11.0-alpha02 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- ตอนนี้
MultiModalInjectionScopeAPI เสถียรแล้ว ซึ่งรวมถึงperformKeyInputและperformRotaryScrollInputรวมถึง API สำหรับคีย์และโรตารีที่เกี่ยวข้อง ระบบได้นำคำอธิบายประกอบเวอร์ชันทดลองออกแล้ว (Ie8bbc, b/261561237) - เพิ่ม API การทดสอบแทร็กแพด ซึ่งคล้ายกับ API สำหรับการทดสอบเมาส์ และแทรกเหตุการณ์ที่เลียนแบบลักษณะการทำงานของแทร็กแพดของแท็บเล็ตหรือแล็ปท็อป จุดแรกเข้าหลักคือ
SemanticsNodeInteraction.performTrackpadInputและMultiModalInjectionScope.trackpad(I2ce67), b/432326139
การแก้ไขข้อบกพร่อง
- แก้ไขความสามารถในการทำงานร่วมกันของอินพุตการเลื่อนด้วยล้อเมาส์ให้ใช้ได้เฉพาะในกรณีที่ใช้ใน Compose เท่านั้น ไม่ใช่ในกรณีที่ส่งใน Compose (I5e0c4)
เวอร์ชัน 1.11.0-alpha01
3 ธันวาคม 2025
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.11.0-alpha01 เวอร์ชัน 1.11.0-alpha01 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- นำฟีเจอร์แฟล็ก UI
isSemanticAutofillEnabledออกเนื่องจากเปิดใช้การป้อนข้อความอัตโนมัติเชิงความหมายโดยค่าเริ่มต้น (I849cf, b/455587954) - เปลี่ยนวิธีที่เมธอดที่สามารถข้ามผ่านได้ find
findNearestAncestorค้นหาโหนดที่เกี่ยวข้อง ตอนนี้ผู้แทนประเภทเดียวกัน (NodeKind) จะมองเห็นได้ในระหว่างการข้าม การเปลี่ยนแปลงนี้ได้รับการป้องกันโดย FlagisTraversableDelegatesFixEnabled(Ia3165, b/280804097) - เพิ่ม
TextEntryKeyการแมปสำหรับANI#isTextEntryKey(Ifde7b, b/399540654) Modifier.onFirstVisible()เลิกใช้งานแล้วเนื่องจากลักษณะการทำงานทำให้เกิดความเข้าใจผิดและไม่ได้เป็นไปตามสัญญาที่ชื่อกล่าวอ้างเสมอไป เช่น เมื่อเพิ่มในรายการของLazyColumnระบบจะเรียกใช้ Callback นี้ทุกครั้งที่รายการนี้ปรากฏขึ้นหลังจากเลื่อน ซึ่งไม่ใช่สิ่งที่ผู้ใช้ตัวแก้ไขที่มีชื่อนี้อาจคาดหวัง ขอแนะนำให้ใช้Modifier.onVisibilityChanged()แทน และติดตามด้วยตนเองหากเลย์เอาต์แสดงก่อนหน้านี้แล้วตามข้อกำหนดของกรณีการใช้งานที่เฉพาะเจาะจง (Ia7095, b/447601783)- เปิดตัว
MeasuredSizeAwareModifierNodeซึ่งจำเป็นเมื่อคุณต้องการใช้การเรียกกลับonRemeasured()โปรดใช้อินเทอร์เฟซนี้โดยตรงแทนการใช้LayoutAwareModifierNodeที่เป็นแบบทั่วไปมากขึ้นเมื่อคุณไม่ต้องการการเรียกกลับอื่นๆ (If6fb0)
เวอร์ชัน 1.10
เวอร์ชัน 1.10.6
25 มีนาคม 2026
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.10.6 เวอร์ชัน 1.10.6 มีการเปลี่ยนแปลงเหล่านี้
เวอร์ชัน 1.10.5
11 มีนาคม 2026
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.10.5 เวอร์ชัน 1.10.5 มีการเปลี่ยนแปลงเหล่านี้
เวอร์ชัน 1.10.4
25 กุมภาพันธ์ 2026
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.10.4 เวอร์ชัน 1.10.4 มีการเปลี่ยนแปลงเหล่านี้
เวอร์ชัน 1.10.3
11 กุมภาพันธ์ 2026
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.10.3 เวอร์ชัน 1.10.3 มีการเปลี่ยนแปลงเหล่านี้
เวอร์ชัน 1.10.2
28 มกราคม 2026
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.10.2 เวอร์ชัน 1.10.2 มีการเปลี่ยนแปลงเหล่านี้
เวอร์ชัน 1.10.1
14 มกราคม 2026
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.10.1 เวอร์ชัน 1.10.1 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขการขัดข้องขององค์ประกอบที่หยุดชั่วคราวได้เมื่อเคลื่อนไหวด้วย
LookaheadScope(I7e649, b/469669851) - แก้ไขข้อบกพร่องใน Jetpack Compose
Popupซึ่งมีการส่งพิกัดสัมบูรณ์ของขอบเขตของ Anchor ไปยังPopupPositionProviderซึ่งทำให้วางป๊อปอัปไม่ถูกต้อง ตอนนี้การคำนวณตำแหน่งป๊อปอัปใช้พิกัดสัมพัทธ์ที่ถูกต้องแล้ว(1f7edf,b/469940907)
เวอร์ชัน 1.10.0
3 ธันวาคม 2025
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.10.0 เวอร์ชัน 1.10.0 มีการคอมมิตเหล่านี้
เวอร์ชัน 1.10.0-rc01
19 พฤศจิกายน 2025
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.10.0-rc01 เวอร์ชัน 1.10.0-rc01 มีการคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- ส่งการเรียกกลับ
visibilityChangedอย่างถูกต้องโดยมีค่าเป็นเท็จเมื่อminDurationMsไม่ใช่ 0 (2ac08b8, b/456384555) - อย่าเรียกใช้
onVisibilityChangedcallback เมื่อมองไม่เห็นโหนดในตอนแรก (3969e8d, b/447364998)
เวอร์ชัน 1.10.0-beta02
5 พฤศจิกายน 2025
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.10.0-beta02 เวอร์ชัน 1.10.0-beta02 มีการเปลี่ยนแปลงเหล่านี้
เวอร์ชัน 1.10.0-beta01
22 ตุลาคม 2025
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.10.0-beta01 เวอร์ชัน 1.10.0-beta01 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มการเพิ่มประสิทธิภาพสำหรับการส่งการเปลี่ยนแปลงโฟกัส คุณปิดใช้ฟีเจอร์นี้ได้ด้วย
isOptimizedFocusEventDispatchEnabled = false(I919fb, b/449228515) - อัปเดต API การแตะโดยอ้อมทั้งหมดให้ใช้ชื่อ API พอยน์เตอร์โดยอ้อมเพื่อให้ตรงกับ API อินพุตพอยน์เตอร์ (I238ce, b/451607214)
- ตอนนี้ฟังก์ชัน
TextDirection,TextAlign,Hyphens,FontSynthesisvalueOfจะแสดงข้อผิดพลาดIllegalArgumentExceptionเมื่อได้รับค่าที่ไม่รู้จัก (I07c67) - อัปเดต
CompositionDataTree.makeTreeเพื่อส่งค่าเริ่มต้นแทนฟังก์ชัน Wrapper (Id64a6, b/445229688) - API กฎการทดสอบ
createComposeRule,createAndroidComposeRuleและcreateEmptyComposeRuleซึ่งยอมรับพารามิเตอร์effectContextมีความเสถียรและพารามิเตอร์จะตั้งค่าเริ่มต้นเป็นEmptyCoroutineContext(If400c, b/450540702) - เปลี่ยนชื่อ
UnplacedStateAwareModifierNodeเป็นUnplacedAwareModifierNode(I6a551, b/449719932) - เลิกทำการเพิ่มประสิทธิภาพการจับภาพเนื้อหา (Ic000b, b/442364065)
- เพิ่มแฟล็กฟีเจอร์
ComposeUiFlags.isRectManagerOffsetUsageFromLayoutCoordinatesEnabledแล้ว ซึ่งช่วยให้เพิ่มประสิทธิภาพได้โดยที่คำขอพิกัด เช่นLayoutCoordinates.positionInRoot()จะใช้ค่าออฟเซ็ตที่แคชไว้ซึ่งเรามีอยู่แล้วในRectManagerแทนที่จะต้องค้นหาทั้งโครงสร้างในแต่ละการเรียก (Ieaadc)
การแก้ไขข้อบกพร่อง
PlaceholderSpanตอนนี้ใช้การปรับขนาดแบบอักษรที่ไม่ใช่แบบเชิงเส้นสำหรับการกำหนดขนาดอย่างถูกต้องแล้ว (Id2ead, b/324462728)- ใช้
ViewCompatเพื่อดำเนินการกับค่าคงที่ของการตอบสนองแบบรู้สึกได้ที่รองรับในระดับแพลตฟอร์ม โดยอาศัยการรองรับแบบสำรองสำหรับค่าคงที่ใหม่กว่า (Ib5a00)
เวอร์ชัน 1.10.0-alpha05
8 ตุลาคม 2025
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.10.0-alpha05 เวอร์ชัน 1.10.0-alpha05 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องที่ทำให้ป๊อบอัปที่ซ้อนกันจัดตำแหน่งที่ด้านบนของหน้าจออย่างไม่ถูกต้อง ตอนนี้ป๊อบอัปจะยึดกับป๊อบอัปหลักอย่างถูกต้องแล้ว (Id4603, b/191279752)
- แก้ไขปัญหาการเปลี่ยนโฟกัสไปยัง View อื่นๆ ในลำดับชั้น (I95223, b/446028624)
- แก้ไขฟิลด์ที่ไม่มีพารามิเตอร์แบบอินไลน์ซึ่งหายไปจากเครื่องมือตรวจสอบใน Lambda ที่สร้างโดย Kotlin 2.2.20 (I9855d, b/447110005)
- แก้ไขการซ้อนทับชื่อของทรัพยากรการป้อนข้อความอัตโนมัติระหว่างโมดูล UI และโมดูลพื้นฐาน (I5da5a)
การมีส่วนร่วมจากภายนอก
UiModesเปลี่ยนชื่อเป็น AndroidUiModes เพื่อให้สอดคล้องกับค่าคงที่ที่นำมาจาก Android API (Ia0a77)
เวอร์ชัน 1.10.0-alpha04
24 กันยายน 2025
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.10.0-alpha04 เวอร์ชัน 1.10.0-alpha04 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เราได้เลื่อนระดับตัวแปรของกฎการทดสอบการเขียนที่ยอมรับพารามิเตอร์
CoroutineContextเป็นเวอร์ชันที่เสถียรแล้ว เราได้นำคำอธิบายประกอบเวอร์ชันทดลองออกแล้ว และนักพัฒนาแอปไม่จำเป็นต้องเลือกใช้เพื่อใช้ API นี้อีกต่อไป (I74e6e) - นำ
ComposeUiFlags.isRectTrackingEnabledออกแล้ว โดยระบบอาจไม่ได้เปิดใช้ตรรกะนี้เสมอไป (Id78df) - เลิกใช้งานการโอเวอร์โหลดอินไลน์ของ
Updater#setเนื่องจากมีการ Boxing ค่าที่ระบุหลายครั้งเกินไป (Id679e) - ทำเครื่องหมายพร็อพเพอร์ตี้เชิงความหมาย
onAutofillTextว่าเลิกใช้งานแล้ว (I6f81c) - เปิดตัว
UnplacedStateAwareModifierNodeโดยจะมีการเรียกกลับเมื่อเลย์เอาต์ที่วางไว้ก่อนหน้านี้ไม่ได้วางอีกต่อไป (I8fdd8, b/309776096) - แก้ไขเอกสารประกอบของ
RetainObserver.onRetainedและเพิ่มRetainObserver.onUnusedซึ่งเหมือนกับRememberObserver.onAbandoned(Ia6fc5) - เพิ่ม
onVisibilityChangedNode()ซึ่งสร้างModifier.Nodeที่Modifier.onVisibilityChanged()ใช้ผ่านการมอบสิทธิ์ ซึ่งช่วยให้ขยายฟังก์ชันการทำงานนี้ในModifier.Nodeที่กำหนดเองได้ (I70d84, b/443001320)
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาที่เนื้อหาในบรรทัดแสดงผลไม่สำเร็จเมื่อวางไว้ในบรรทัดสุดท้ายของข้อความแบบหลายบรรทัดที่ใช้เครื่องหมายจุดไข่ปลา แม้ว่าตัวยึดตำแหน่งจะอยู่ก่อนหน้าภูมิภาคที่ใช้เครื่องหมายจุดไข่ปลาก็ตาม (I76aaf, b/441829208)
เวอร์ชัน 1.10.0-alpha03
10 กันยายน 2025
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.10.0-alpha03 เวอร์ชัน 1.10.0-alpha03 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- เปลี่ยนชื่อ
DelegatableNode.invalidateLayoutForSubtreeเป็นDelegatableNode.invalidateMeasurementForSubtree(I94257, b/430106107) - นำ
isInHiddenAccessibilitySubtreeตัวจับคู่ที่ซ้ำซ้อนออก (I4476c, b/443792965) - เปิดตัวร่องรอยสแต็กของ Compose ที่อิงตามคีย์กลุ่ม ซึ่งเปิดใช้โดยค่าเริ่มต้นสำหรับแอปที่ย่อขนาดทั้งหมด ปลั๊กอิน Gradle ของคอมไพเลอร์ Compose จะสร้างการเชื่อมโยง ProGuard สำหรับการติดตามเหล่านี้โดยเริ่มจาก Kotlin 2.3.0 (Ifbcb5)
Modifier.skipToLookaheadSizeตอนนี้ใช้ Lambda ที่เปิดใช้โดยค่าเริ่มต้นซึ่งจะเปิดใช้การข้ามขนาดเมื่อการเปลี่ยนที่แชร์ใช้งานอยู่เท่านั้น เช่นเดียวกับModifier.skipToLookaheadPosition(Ibe0f5, b/432485585)- ระบบจะนำ
ComposeUiFlags.isOutOfFrameDeactivationEnabledออกและเปิดใช้ฟังก์ชันนี้เสมอ (I421ed) - ย้ายฟังก์ชัน Factory สำหรับสร้างอินสแตนซ์
FillableDataไปยังออบเจ็กต์เสริม ให้ใช้เมธอดใหม่ของ FactoryFillableData.createFrom(value)แทนการเรียกใช้FillableData(value)(I2e200, b/441719650) - เปิดตัว
BeyondBoundsLayoutModifierNodeโหนดตัวแก้ไขใหม่เพื่อดำเนินการนอกเลย์เอาต์ที่ผูกไว้สำหรับการค้นหาโฟกัส (I39be1, b/416133658) FocusTargetModifierNode.requestFocus()จะส่งโฟกัสไปยังองค์ประกอบย่อยรายการใดรายการหนึ่งเมื่อตัวมันเองโฟกัสไม่ได้ ตอนนี้ลักษณะการทำงานนี้สอดคล้องกับFocusRequester.requestFocus()และFocusRequesterModifierNode.requestFocus()แล้ว หากไม่ต้องการลักษณะการทำงานนี้ ให้ตั้งค่าแฟล็กComposeUiFlags.isRequestFocusOnNonFocusableFocusTargetEnabledเป็น false ในแอป (Icca5c, b/436863604)- ระบุขนาดหน้าต่างตาม DP ใน
WindowInfo(I9322b, b/424442112) - นำธง
isNestedScrollDispatcherNodeFixEnabledออกแล้ว (If451a) - เพิ่มการรองรับค่าวันที่ในการป้อนข้อความอัตโนมัติใน
FillableDataAPIval dateMillisValue: Longเพิ่มเพื่อดึงข้อมูลวันที่ และเพิ่มตัวสร้างFillableData(dateMillisValue: Long)ที่เกี่ยวข้องเพื่อสร้างอินสแตนซ์FillableDataตามวันที่ (Id072a)
การมีส่วนร่วมจากภายนอก
UiModesobject ได้รับการเปิดตัวเพื่อประกาศค่าคงที่ที่ใช้สำหรับคำอธิบายประกอบUiMode(I03cb8)
เวอร์ชัน 1.10.0-alpha02
27 สิงหาคม 2025
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.10.0-alpha02 เวอร์ชัน 1.10.0-alpha02 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- อัปเดต
FillableDataเพื่อรองรับคอมโพเนนต์ที่ไม่ใช่ข้อความ เช่น สวิตช์เปิด/ปิดและลิสต์ รวมถึงค่าบูลีนและค่าจำนวนเต็มภายในFillableDataและตัวสร้างจาก Factory เพื่อสร้างอินสแตนซ์บูลีนและลิสต์ของFillableDataที่แปลเป็นAutofillValueของแพลตฟอร์ม ระบบจะเพิ่มพร็อพเพอร์ตี้และการดำเนินการเชิงความหมายที่เกี่ยวข้องด้วย (Ia8105, Icc5cf) - ในโหมดที่ไม่ใช่แบบสัมผัส ระบบมุมมองจะกำหนดโฟกัสเริ่มต้น/ค่าเริ่มต้นให้กับรายการที่โฟกัสได้รายการใดรายการหนึ่งบนหน้าจอ ฟีเจอร์นี้จะเพิ่มลงใน Compose และเปิดใช้ได้โดยการเปิดใช้
ComposeUiFlags.isInitialFocusOnFocusableAvailable(Ib9178) - นำธง
isPointerInteropFilterDispatchingFixEnabledออกแล้ว (Iaa589) - นำธง
isNestedScrollInteropPostFlingFixEnabledออกแล้ว (I2a756) - เพิ่มตัวจับคู่ความหมาย
isHiddenFromAccessibility()และisInHiddenAccessibilitySubtree()(I9f5a1) - เพิ่ม
runCurrent()ลงในMainTestClockเพื่อเรียกใช้งานทั้งหมดที่กำหนดไว้ในตัวกำหนดเวลาระดับล่าง ซึ่งมีไว้เพื่อรองรับการทดสอบในStandardTestDispatcherโดยจะเพิ่มงานลงในตัวกำหนดตารางเวลาแทนที่จะดำเนินการทันทีเมื่อมีความล่าช้า 0 มิลลิวินาที คุณตั้งค่าการทดสอบให้ใช้StandardTestDispatcherได้โดยสร้างComposeTestRuleและส่งStandardTestDispatcherไปยังComposeTestRuleโดยค่าเริ่มต้น การทดสอบจะทำงานในUnconfinedTestDispatcherในกรณีนี้จึงไม่จำเป็นต้องเรียกใช้runCurrent() - เพิ่มการรองรับการเรียกใช้การทดสอบใน
StandardTestDispatcherในอดีต เฟรมเวิร์กการทดสอบได้รับการตั้งค่า (และยังคงตั้งค่า) โดยใช้UnconfinedTestDispatcherซึ่งแตกต่างจากสภาพแวดล้อมฮาร์ดแวร์และซอฟต์แวร์ในรายละเอียดเล็กๆ น้อยๆ ตอนนี้คุณสามารถเปลี่ยนการตั้งค่านี้ได้โดยการสร้างStandardTestDispatcherของคุณเองและเพิ่มลงในeffectContextเมื่อสร้างComposeTestRule(หรือเมื่อเรียกใช้ runComposeUiTest) (I334d0, b/254115946) - อัปเดตรหัสสำหรับการสร้างโครงสร้างแบบต้นไม้ของโหนดจาก
SlotTree(I997d3)
การแก้ไขข้อบกพร่อง
- ตอนนี้ Compose UI จะติดตั้ง
RetainScopesที่รับรู้ถึงวงจรขององค์ประกอบ UI ใน Android ตอนนี้ลักษณะการทำงานเริ่มต้นจะยังคงค่าที่retainไว้เมื่อมีการเปลี่ยนแปลงการกำหนดค่า (Id4a09, b/177562901)
การมีส่วนร่วมจากภายนอก
- เพิ่มความสามารถให้
VelocityTrackerคํานวณความเร็วของเคอร์เซอร์ตามเหตุการณ์เคอร์เซอร์ที่ติดตามโดยใช้ลักษณะการทํางานเฉพาะแพลตฟอร์ม (I621e8)
เวอร์ชัน 1.10.0-alpha01
13 สิงหาคม 2025
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.10.0-alpha01 เวอร์ชัน 1.10.0-alpha01 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- ตอนนี้การกดเคอร์เซอร์ด้วยเมาส์หรือทัชแพดใน
ComposeViewจะล้างโฟกัสโดยอัตโนมัติหากการกดเคอร์เซอร์ไม่ได้เกิดขึ้นในขอบเขตของโหนดที่โฟกัส ซึ่งจะส่งผลให้เกิด UX "แตะเพื่อล้างโฟกัส" ที่คาดการณ์ได้มากกว่าลักษณะการทำงานปัจจุบันเมื่อใช้อุปกรณ์ป้อนข้อมูลแบบพอยน์เตอร์ คุณเลือกไม่ใช้ลักษณะการทำงานนี้ได้ด้วยAbstractComposeView.isClearFocusOnPointerDownEnabledAPI ใหม่ (I6322b, b/282963174) - เปิดตัว
FillableDataอินเทอร์เฟซเพื่อรองรับคอมโพเนนต์การป้อนข้อความอัตโนมัติประเภทต่างๆ นอกเหนือจากข้อความ (If9bd2) - API ใหม่ที่อนุญาตให้เปิดและปิดใช้องค์ประกอบที่แชร์แบบไดนามิก ซึ่งยังช่วยให้สามารถพิจารณาได้ว่ามีการเปลี่ยนองค์ประกอบที่แชร์อย่างต่อเนื่องอยู่แล้วหรือไม่ API ใหม่เพื่อตั้งค่าขอบเขตเป้าหมายสำรองเมื่อมีการทิ้งองค์ประกอบที่แชร์เป้าหมายระหว่างการเปลี่ยน API ใหม่สำหรับรับ
LayoutCoordinatesของLookaheadScope(I18dd4, b/409819304, b/395670637) - เปิดตัว Flag
isNestedScrollInteropIntegerPropagationEnabledเพื่อควบคุมการทดสอบการส่งจำนวนเต็มที่ถูกต้องไปยังการทำงานร่วมกันของการเลื่อนที่ซ้อนกัน (If8316) - เพิ่ม
requestFocusForChildInRootBounds()ในDelegatableNodeเพื่อย้ายโฟกัสไปยังองค์ประกอบย่อยที่ทับซ้อนกับสี่เหลี่ยมผืนผ้าที่ระบุ (I001ef) - ธงที่ถูกนำออก
isOnScrollChangedCallbackEnabled,isAdjustPointerInputChangeOffsetForVelocityTrackerEnabled,isFlingContinuationAtBoundsEnabled,isAutomaticNestedPrefetchEnabled,DragGesturePickUpEnabled,isPointerInteropFilterDispatchingFixEnabled,isNestedScrollInteropPostFlingFixEnabled,isNestedScrollDispatcherNodeFixEnabled(I36c18) - เพิ่ม
@CheckResultคำอธิบายประกอบในSemanticsNodeฟังก์ชันค้นหาและตัวเลือกเพื่อบังคับใช้ค่าที่ส่งคืน (I6f86e, b/201652748) - ปรับปรุงประสิทธิภาพของกระบวนการจับภาพเนื้อหา (I3c7c0)
- เปิดตัว
CompositionLocalที่ใช้แก้ไขแปรงไฮไลต์การเติมที่สำเร็จของการป้อนข้อความอัตโนมัติได้ (I52329) - เปิดตัวอินเทอร์เฟซ Interpolatable ใหม่ที่ช่วยให้สามารถประมาณค่าระหว่างประเภทต่างๆ ได้โดยอัตโนมัติ โดยสมมติว่าประเภทหนึ่งทราบวิธีแปลงจากอีกประเภทหนึ่ง อินเทอร์เฟซนี้ใช้ในประเภทการเขียนหลายประเภท เช่น แปรงและรูปร่าง แต่ก็ใช้ภายนอกได้เช่นกัน (I58eab)
- ตอนนี้ Scrollable รองรับเหตุการณ์การเลื่อนล้อของเมาส์แบบ 2 มิติได้ดีขึ้นแล้ว เราได้เปิดตัว API การทดสอบใหม่เพื่อช่วยทดสอบกรณีการใช้งานใน
MouseInjectionScopeนอกจากนี้ เรายังได้เปิดตัวการโอเวอร์โหลดใหม่สำหรับเมธอดเลื่อนในMouseInjectionScopeและ Flag เพื่อควบคุมลักษณะการทำงานใหม่ที่เรียกว่าisMouseWheel1DAxisLockingEnabled(I136df) - เพิ่ม
DeviceConfigurationOverridesสำหรับประเภทและสถานะแป้นพิมพ์ ประเภทและสถานะการนำทาง สถานะหน้าจอสัมผัส และประเภทโหมด UI (I282f0) - เพิ่ม
LineHeightStyle.Modeใหม่ชื่อTightโหมดนี้ช่วยบังคับใช้ความสูงของบรรทัดที่เล็กลงได้ แม้ว่าอาจตัดกลีฟที่สูงกว่าก็ตาม (Id3849) BaselineShiftมีค่า "ไม่ระบุ" เพื่อป้องกันการจัดกลุ่มBaselineShift,Hyphens,LineBreak,TextAlignและTextDirectionมีฟังก์ชันตัวช่วยisSpecifiedHyphens,TextAlign,TextDecorationและTextDirectionมีเมธอดvalueOf()และเมธอดค่าที่ช่วยให้การซีเรียล/ดีซีเรียลมีประสิทธิภาพ (I8d44c)- เพิ่ม
getDisplayNameอินเทอร์เฟซเมธอดใหม่เพื่อให้ใช้ชื่อที่แสดงที่กำหนดเองสำหรับอินสแตนซ์พารามิเตอร์ตัวอย่างได้ (I19bdf, b/241699422) - เมื่อเปรียบเทียบค่า Dp กับค่า Unspecified โดยใช้เครื่องหมายน้อยกว่าหรือมากกว่า ระบบจะแสดงผลเป็นเท็จเสมอ การใช้
Dp.compareTo(Unspecified)จะแสดงผลเป็น 0 เสมอ การตั้งค่าสถานะComposeUiUnitFlags.isDpCompareToChangedเป็น false จะเปลี่ยนลักษณะการทำงานของDp.compareTo()กลับไปเป็นแบบเดิม ซึ่งการเปรียบเทียบ Unspecified กับน้อยกว่าและมากกว่าไม่ได้ส่งคืนค่าเป็น false เสมอไป และcompareTo()กับ Unspecified จะมีลักษณะการทำงานเหมือนกับFloat.compareTo()(Ifa88b, b/429221319)
การแก้ไขข้อบกพร่อง
- ย้าย minSdk เริ่มต้นจาก API 21 ไปยัง API 23 (Ibdfca, b/380448311, b/435705964, b/435705223)
- แก้ไขปัญหาที่ทำให้สร้าง
AndroidComposeViewsใหม่ไม่ได้ขณะที่การเปลี่ยนผ่านกำลังดำเนินอยู่ (I2e23e, b/340894487, b/287484338) - แก้ไขข้อบกพร่องเกี่ยวกับสีเมื่อใช้ Vector Drawable ที่ใช้สีเดียวและ
fillColorไม่ทึบแสงหรือโปร่งแสงทั้งหมด (I3b041, b/328677973) - แก้ไขปัญหาที่ไอคอนซึ่งโหลดผ่าน
painterResourceที่มีสีเฉพาะธีมไม่อัปเดตเมื่อมีการเปลี่ยนแปลงธีม (I85ea0, b/424416571) - เปิดตัวความหมายของ
onFillDataและfillableData(I45d9e) - ตอนนี้ระบบจะเปิดใช้การเข้ารหัสสถานะเฉพาะแพลตฟอร์มใน
StateRestorationTesterเสมอ ซึ่งจะช่วยให้ลักษณะการทำงานของการทดสอบสอดคล้องกับการคืนค่าสถานะแอปพลิเคชันจริง เช่น การแปลงเป็น Parcel ใน Android (I38211, b/408154192, b/382294247) - แก้ไขข้อขัดข้องที่เกิดขึ้นเป็นครั้งคราวเมื่อขอโฟกัส (57b31a11, b/431111149)
เวอร์ชัน 1.9
เวอร์ชัน 1.9.5
19 พฤศจิกายน 2025
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.9.5 เวอร์ชัน 1.9.5 มีการเปลี่ยนแปลงเหล่านี้
เวอร์ชัน 1.9.4
22 ตุลาคม 2025
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.9.4 เวอร์ชัน 1.9.4 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาที่เนื้อหาข้อความในบรรทัดหายไปหากอยู่บรรทัดสุดท้ายของข้อความที่มีหลายบรรทัดซึ่งมีจุดไข่ปลา แม้ว่าเนื้อหาในบรรทัดจะไม่ได้อยู่ในภูมิภาคที่มีจุดไข่ปลาก็ตาม (I76aaf, b/441829208)
- แก้ไขปัญหาที่ระบบไม่ได้เรียกใช้การเรียกกลับของตัวแก้ไข
onLayoutRectChangedเสมอไปเมื่อdebounceMillisไม่เป็น 0 (72aba47, b/445324854)
เวอร์ชัน 1.9.3
8 ตุลาคม 2025
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.9.3 เวอร์ชัน 1.9.3 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องที่ทำให้
onVisibilityChanged/onFirstVisible/onLayoutRectChangedตัวแก้ไขไม่ได้รับการเรียกกลับหากเลย์เอาต์ที่ย้ายมีลูกหลานมากกว่า 170 รายการ (4f2fdd, b/445356774)
เวอร์ชัน 1.9.2
24 กันยายน 2025
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.9.2 เวอร์ชัน 1.9.2 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- ตอนนี้
Modifier.onVisibilityChanged()จะทริกเกอร์อย่างถูกต้องเมื่อมีการแยกหรือนำโหนดกลับมาใช้ใหม่ (Ic5ce20) - ตอนนี้
Modifier.onVisibilityChanged()และonLayoutRectChanged()จัดการเลย์เอาต์หลักอย่างถูกต้องโดยใช้placeWithLayer()เพื่อวางองค์ประกอบย่อย (Ia05ac9) - สำหรับ
Modifier.onVisibilityChanged()และonLayoutRectChanged()ให้แจ้งอย่างถูกต้องในกรณีที่ซับซ้อน เช่น การนำเลเยอร์/ตัวแก้ไขเลเยอร์ออกหรือการอัปเดตพร็อพเพอร์ตี้เลเยอร์ (Ia05ac)
เวอร์ชัน 1.9.1
10 กันยายน 2025
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.9.1 เวอร์ชัน 1.9.1 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องเกี่ยวกับสีเมื่อใช้ Vector Drawable ที่ใช้สีเดียวและ
fillColorไม่ทึบแสงหรือโปร่งแสงทั้งหมด (I3b041, b/328677973)
เวอร์ชัน 1.9.0
13 สิงหาคม 2025
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.9.0 เวอร์ชัน 1.9.0 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 1.8.0
- การเปลี่ยนแปลงที่สำคัญในเวอร์ชัน 1.9.0 จะกล่าวถึงในบล็อกโพสต์นี้
- การตรวจสอบ Lint ที่มาพร้อมกับ Compose ต้องใช้ AGP เวอร์ชัน 8.8.2 เป็นอย่างน้อย หากอัปเกรด AGP ไม่ได้ คุณสามารถอัปเกรด Lint ด้วยตนเองได้โดยใช้
android.experimental.lint.version=8.8.2(หรือเวอร์ชันที่ใหม่กว่า) ในgradle.propertiesคุณต้องใช้ Android Studio Ladybug หรือเวอร์ชันใหม่กว่าจึงจะเรียกใช้การตรวจสอบ Lint ของ Compose ภายใน IDE ได้ - การเปลี่ยนแปลงที่ทำให้เกิดข้อขัดข้อง: ตอนนี้โหนดตัวแก้ไข
graphicsLayerจะใช้SemanticsModifierNodeแล้ว ซึ่งอาจส่งผลให้มีการเพิ่มSemanticsNodesใหม่ลงในแผนผังความหมาย และทำให้การทดสอบที่ตั้งสมมติฐานเกี่ยวกับโครงสร้างแผนผังความหมายไม่สำเร็จ ตัวอย่างเช่น การทดสอบที่ใช้onChild,onParent,onSiblingและวิธีอื่นๆ ที่คล้ายกันเพื่อยืนยันอาจล้มเหลวหากมีการเพิ่มโหนดใหม่ระหว่างโหนดปัจจุบันและโหนดเป้าหมาย วิธีที่แนะนำในการแก้ไขข้อผิดพลาดเหล่านี้คือการเพิ่มtestTagลงในโหนดเป้าหมายโดยตรง อีกวิธีหนึ่งคือการใช้ตัวเทียบที่ยืดหยุ่นกว่า เช่นonNode(hasAnyAncestor(hasText("ancestor")) and hasText("target"))(I638b5)
เวอร์ชัน 1.9.0-rc01
30 กรกฎาคม 2025
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.9.0-rc01 เวอร์ชัน 1.9.0-rc01 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาที่ไอคอนซึ่งโหลดผ่าน
painterResourceที่มีสีเฉพาะธีมไม่อัปเดตเมื่อมีการเปลี่ยนแปลงธีมของระบบ (I85ea0, b/424416571) - แก้ไขข้อผิดพลาดใน API 21(Lollipop) และ 28(Pie) ซึ่งมีการเปลี่ยนชื่อเมธอดกราฟิกที่สำคัญขณะเพิ่มประสิทธิภาพ (Iebf99, b/425120571, b/420462749)
- ตรวจสอบว่าระบบเรียกใช้
onLayoutRectChangedตัวแก้ไขที่แทรกใหม่ในตอนแรก (l9aa91), (lb348a) - แก้ไขการล้างข้อมูลแคชออฟเซ็ตอย่างไม่ถูกต้อง ซึ่งทำให้มีการเรียกใช้ตัวแก้ไข
onLayoutRectChangedโดยใช้พิกัดที่ไม่ถูกต้อง (ibd4cd), (lddc57) - แก้ไขเลย์เอาต์ที่หมุน/เอียงซึ่งได้รับพิกัดไม่ถูกต้องโดยตัวแก้ไข
onLayoutRectChanged(lddc57, b/426750475)
การมีส่วนร่วมจากภายนอก
- แก้ไขปัญหาที่รายการ
dragAndDropSourceในLazyListหายไปเมื่อเลื่อน ขอบคุณ Victor Rendina! (dc3bcd3, b/425894792)
เวอร์ชัน 1.9.0-beta03
16 กรกฎาคม 2025
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.9.0-beta03 เวอร์ชัน 1.9.0-beta03 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาที่เงาด้านในที่เบลออย่างสม่ำเสมอไม่เคลื่อนที่อย่างถูกต้องเมื่อมีการออฟเซ็ต
เวอร์ชัน 1.9.0-beta02
2 กรกฎาคม 2025
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.9.0-beta02 เวอร์ชัน 1.9.0-beta02 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- เปลี่ยนออบเจ็กต์คู่เป็นทดลองเพื่อให้ตรงกับคลาส (I8452a)
- นำ Flag การทดสอบ
isTrackFocusEnabled(I003fd) ออกแล้ว
การแก้ไขข้อบกพร่อง
- เมื่อไม่มี
WindowInsetsการละเมิดเนื้อหาของComposeViewระบบจะไม่ระบุค่าWindowInsetsRulers(I71221)
เวอร์ชัน 1.9.0-beta01
18 มิถุนายน 2025
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.9.0-beta01 เวอร์ชัน 1.9.0-beta01 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ
- ตอนนี้โหนดตัวแก้ไข
graphicsLayerจะใช้SemanticsModifierNodeแล้ว ซึ่งอาจส่งผลให้มีการเพิ่มSemanticsNodesใหม่ลงในแผนผังความหมาย และทำให้การทดสอบที่ตั้งสมมติฐานเกี่ยวกับโครงสร้างแผนผังความหมายไม่สำเร็จ ตัวอย่างเช่น การทดสอบที่ใช้onChild,onParent,onSiblingและวิธีอื่นๆ ที่คล้ายกันเพื่อยืนยันอาจล้มเหลวหากมีการเพิ่มโหนดใหม่ระหว่างโหนดปัจจุบันและโหนดเป้าหมาย วิธีที่แนะนำในการแก้ไขข้อผิดพลาดเหล่านี้คือการเพิ่มtestTagลงในโหนดเป้าหมายโดยตรง อีกวิธีหนึ่งคือการใช้ตัวเทียบที่ยืดหยุ่นกว่า เช่นonNode(hasAnyAncestor(hasText("ancestor")) and hasText("target"))(I638b5)
การเปลี่ยนแปลง API
- เปลี่ยน
ShadowContextให้เป็นอินเทอร์เฟซที่ปิดผนึก (I3ce40) - เพิ่มวิธีข้ามโมดูลเพื่อสร้างเหตุการณ์สัมผัสทางอ้อม (สําหรับการทดสอบ) (I22e4c)
- ทำให้
IndirectTouchEvent.nativeEventเป็นเวอร์ชันทดลอง (I6fda5) - แก้ไขแพลตฟอร์ม API ตามความคิดเห็นจากสภา API (Ibf378)
- นำค่าคงที่
FrameRateCategory.NoPreferenceออก เปลี่ยนชื่อModifier.requestedFrameRateเป็นModifier.preferredFrameRate(I2f976) WindowInsetsRulers: เปลี่ยนrulersIgnoringVisibilityเป็นสูงสุด เปลี่ยนgetDisplayCutoutBounds()ให้เป็นฟังก์ชันส่วนขยายของPlacementScopeWindowInsetsAnimationPropertiesเปลี่ยนเป็นWindowInsetsAnimationและgetAnimationProperties()เปลี่ยนเป็นgetAnimation()แล้ว (I3816f)- เปลี่ยนชั้นเรียน
ShadowParamsเป็นShadow(I11cca) - เปลี่ยนแพ็กเกจสำหรับ API อัตราเฟรมจาก
androidx.compose.ui.uiเป็นandroidx.compose.ui(I8994e) - เปลี่ยน
InsetsRulersให้เป็นโค้ดทั่วไปที่มีชื่อWindowInsetsRulersปรับ API ให้เรียบง่ายขึ้นเพื่อให้แทรกทั้งหมดเป็นWindowInsetsRulersแยกพร็อพเพอร์ตี้ภาพเคลื่อนไหวที่ไม่ใช่ไม้บรรทัดไปยังคลาสAnimationPropertiesWindowInsetsRulers.innermostOf()ใช้เพื่อผสานWindowInsetsRulersหลายรายการได้ (I2f0c6, b/415012444) - เพิ่ม API เครื่องมือสำหรับการแยกวิเคราะห์ข้อมูลแหล่งที่มาที่คอมไพเลอร์ Compose เพิ่ม (Iceaf9, b/408492167)
การแก้ไขข้อบกพร่อง
- เราได้นำธงสำหรับ
isGetFocusedRectReturnEmptyEnabledออกแล้วเนื่องจากฟีเจอร์นี้ได้รับการยืนยันอย่างสมบูรณ์แล้ว (Ife722) - แก้ไขข้อบกพร่องใน
performScrollToNodeซึ่งในบางกรณีไม่ถึงโหนดเป้าหมาย การแก้ไขนี้จะช่วยให้การเชื่อมต่อไปถึงโหนดเป้าหมายในกรณีดังกล่าวเสมอ ผลข้างเคียงของการเปลี่ยนแปลงนี้คือตำแหน่งการเลื่อนที่แน่นอนเมื่อสิ้นสุดการดำเนินการอาจแตกต่างออกไป ซึ่งส่งผลต่อการทดสอบภาพหน้าจอและการทดสอบที่ใช้สมมติฐานเกี่ยวกับตำแหน่งการเลื่อนที่แน่นอน (I2c8a1)
เวอร์ชัน 1.9.0-alpha04
4 มิถุนายน 2025
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.9.0-alpha04 เวอร์ชัน 1.9.0-alpha04 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม API ตัวแก้ไขสำหรับเงาที่ปรับแต่งได้ (I2058d, b/160665122)
- เพิ่มพร็อพเพอร์ตี้
SemanticsModifierNode.isImportantForBoundsที่กำหนดว่าควรพิจารณาโหนดเมื่อคำนวณขอบเขตหรือไม่ โดยค่าเริ่มต้น พร็อพเพอร์ตี้จะเป็นจริง และสามารถตั้งค่าเป็นเท็จเพื่อระบุว่าไม่ควรนำโหนดมาพิจารณาสำหรับขอบเขต (I7ebec) - เพิ่ม
SemanticsPropertyKeyฟังก์ชันโรงงานสำหรับการประกาศพร็อพเพอร์ตี้ความหมายเฉพาะของ Android ที่พร้อมใช้งานเป็นส่วนเสริมการช่วยเหลือพิเศษที่แสดงผ่านAccessibilityNodeInfo.getExtras(I2ed51) - นำการใช้งาน
ComposeUiFlags.isRemoveFocusedViewFixEnabledออกและเลิกใช้งานฟีเจอร์ (I50328) - เปิดตัวเฟรมเวิร์กเงาแบบใหม่ที่ปรับแต่งได้ ซึ่งรวมถึง
DropShadowPainterและInnerShadowPainterรวมถึงการขึ้นต่อกันของDropShadow/InnerShadowโครงสร้างพื้นฐานแบบเงาจะได้รับการแชร์เพื่อให้สามารถแชร์เงาที่สร้างขึ้นเดียวกันในตำแหน่งที่เรียกใช้หลายแห่งโดยไม่ต้องสร้างเงาใหม่ n ครั้ง (I24f7a, b/160665122) - แนะนำ
CompositeShaderและCompositeShaderBrushซึ่งสร้างผลลัพธ์ที่คอมโพสระหว่าง 2 เชเดอร์ นอกจากนี้ ให้เพิ่มShaderBrush#transformเพื่อตั้งค่าเมทริกซ์การเปลี่ยนรูปแบบสำหรับ Shader (I2621a, b/160665122)
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องใน
NestedScrollInteropConnectionซึ่งทำให้วิธีการปัดอยู่ในลำดับที่ไม่ถูกต้องเมื่อเทียบกับมุมมอง (I56ad4) - ก่อนหน้านี้ กล่องโต้ตอบที่วาดแบบเต็มหน้าจอไม่ได้วาดภายในภูมิภาครอยบากของจอแสดงผล เราได้แก้ไขข้อบกพร่องนี้เพื่อให้กล่องโต้ตอบที่มี
decorFitsSystemWindows = falseและusePlatformDefaultWidth = falseสามารถใช้พื้นที่หน้าจอรอยบากได้ (I9e975) - แก้ไขข้อบกพร่องที่ตัวบ่งชี้โฟกัสสีเขียวของ
TalkBackไม่แสดงหลังจากเปิดไว้ขณะที่แอป Compose ทำงานในเบื้องหลัง (Ifd12a)
เวอร์ชัน 1.9.0-alpha03
20 พฤษภาคม 2025
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.9.0-alpha03 เวอร์ชัน 1.9.0-alpha03 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- Flag
ComposeUiFlags.isGetFocusedRectReturnEmptyEnabledทำให้เมื่อไม่มีอะไรที่โฟกัสได้ในComposeViewระบบจะตั้งค่า Rect เป็นค่าว่าง ซึ่งจะป้องกันไม่ให้การค้นหาโฟกัสเลือกมุมมองที่จะโฟกัส ซึ่งมีความสำคัญอย่างยิ่งในกรณีที่ IME มีตัวเลือกถัดไปและอาจพยายามโฟกัสที่ComposeViewและrequestFocus()ไม่สำเร็จ (Ibd0e2, b/369256395) - ขอแนะนำฟีเจอร์แจ้งว่าไม่เหมาะสม
isNestedScrollDispatcherNodeFixEnabled(I0d24a) - เปลี่ยนชื่อ
DialogProperties'dialogContentTitleเป็นwindowTitle(Ibd27b) - เราได้เปิดตัวตัวแก้ไข
Modifier.onFirstVisibleและModifier.onVisibilityChangedซึ่งเป็นตัวแก้ไขระดับสูงที่สร้างขึ้นบนModifier.onLayoutRectChangedตัวแก้ไขเหล่านี้สร้างขึ้นมาเพื่อจัดการข้อกำหนดการใช้งานทั่วไปจำนวนมากโดยเฉพาะ เช่น การบันทึกการแสดงผล การเล่นวิดีโออัตโนมัติ เป็นต้น ตัวแก้ไขเหล่านี้สร้างขึ้นโดยคำนึงถึงประสิทธิภาพเป็นหลักเพื่อให้สามารถใช้ในสถานการณ์ที่สำคัญซึ่งอิงตามรายการได้โดยไม่ต้องเสี่ยงต่อการลดประสิทธิภาพการเลื่อน นอกจาก API ตัวแก้ไขเหล่านี้แล้ว เรายังได้เพิ่ม API อื่นๆ เพื่อRelativeLayoutBoundsเพื่อรองรับ Use Case เหล่านี้ รวมถึงช่วยให้นักพัฒนาแอปสร้างตัวแก้ไขที่กำหนดเองที่คล้ายกันซึ่งเหมาะกับ Use Case ของตนเองได้อย่างง่ายดาย (I759b8) - เปลี่ยน
setDiagnosticStackTraceEnabledเป็น "ทดลอง" เพื่อรองรับการพัฒนาฟีเจอร์นี้ในอนาคต (I11db3) - เปิดตัว
Modifier.scrollable2D,Scrollable2DStateและ API ที่แสดงร่วมสำหรับการสร้างสถานะ นอกจากนี้ ยังได้เปิดตัวฟังก์ชันส่วนขยายการเลื่อนทั่วไปด้วย (Ic61c8, b/214410040) - ค่าสีของ Compose 64 บิตไม่สามารถเปรียบเทียบกับ Android
ColorLongsได้โดยตรงเนื่องจากรหัสพื้นที่สีบางรายการไม่ได้เรียงตามลำดับ เราได้เพิ่ม API ใหม่ 2 รายการ ได้แก่toColorLong()และfromColorLong()เพื่อใช้แปลงเป็นและจากพื้นที่สีของ Android (I36899) - เปิดตัว
ViewConfiguration.minimumFlingVelocityเพื่อให้ควบคุมความเร็วในการโยนขอบเขตล่างได้ (I11aab)
เวอร์ชัน 1.9.0-alpha02
7 พฤษภาคม 2025
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.9.0-alpha02 เวอร์ชัน 1.9.0-alpha02 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม
dialogContentTitleในDialogPropertiesซึ่งจะตั้งค่าชื่อหน้าต่างเนื้อหา bf9d670
การแก้ไขข้อบกพร่อง
- เราได้ปิดใช้ไม้บรรทัดขอบหน้าต่างชั่วคราวขณะแก้ไขการทดสอบภายใน 8d1402
- แก้ไขวิธีเพิ่มการเปลี่ยนแปลงอินพุตของเคอร์เซอร์ใน
VelocityTrackerในDragGestureNodeซึ่งควบคุมได้ด้วยฟีเจอร์ใหม่isAdjustPointerInputChangeOffsetForVelocityTrackerEnabled254ddb
เวอร์ชัน 1.9.0-alpha01
23 เมษายน 2025
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*: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 ได้
การเปลี่ยนแปลง API
- นำ Flag ออกเพื่อเปิดใช้คำสั่ง Trace สำหรับเครื่องมือติดตามเส้นทางของ Hit (แก้ไขข้อบกพร่อง) (I1b2a1)
- เปลี่ยน
InnerRectRulersและOuterRectRulesให้เป็นเมธอดแทน นำพารามิเตอร์ชื่อออกจากRectRulersAPI สาธารณะDerivedRulersตอนนี้เป็นตัวเลือกของเครื่องมือสร้างสำหรับไม้บรรทัดแนวตั้งและแนวนอนแล้วMergedHorizontalRulersและMergedVerticalRulersถูกแทนที่ด้วยวิธีการminOfและmaxOfเพื่อสร้างอินสแตนซ์ (Iee89f, b/408192133) - เลิกใช้งาน
androidx.compose.ui.LocalSavedStateRegistryOwnerเพื่อให้ใช้androidx.savedstate.compose.LocalSavedStateRegistryOwnerแทน (I5439f, b/377946781) - เพิ่ม
Modifier.keepScreenOnเพื่อตั้งค่าให้จอแสดงผลไม่เข้าสู่โหมดพักขณะนำเสนอ (Ib5af4, b/408284174) - เพิ่มพร็อพเพอร์ตี้เชิงความหมายใหม่
Shapeซึ่งอาจตั้งค่าได้เมื่อรูปร่างขององค์ประกอบ UI แตกต่างจากสี่เหลี่ยมผืนผ้าล้อมรอบ เช่น สี่เหลี่ยมผืนผ้าที่มีมุมโค้ง (I1376f) - แก้ไขปัญหาเกี่ยวกับการส่งเหตุการณ์ของเคอร์เซอร์ใน
AndroidViewsและเพิ่ม FlagisPointerInteropFilterDispatchingFixEnabledเพื่อป้องกันการเปลี่ยนแปลง (I0e272, b/372055500, b/408002332) FocusRestorerจะไม่ปักหมุดรายการที่โฟกัสก่อนหน้านี้อีกต่อไป ผู้ใช้ควรใช้คีย์เพื่อให้แน่ใจว่ารายการที่โฟกัสก่อนหน้านี้มีแฮชองค์ประกอบเดียวกัน เพื่อให้ระบบคืนค่าโฟกัสได้สำเร็จ (I4203b, b/330696779)- อนุญาตให้ฟีเจอร์เขียนทริกเกอร์
ViewTreeObserver.OnScrollChangedเราได้เปิดตัวลักษณะการทำงานนี้ภายใต้ฟีเจอร์ทดลองisOnScrollChangedCallbackEnabledนอกจากนี้ เรายังเปิดตัวฟังก์ชันส่วนขยายของDelegatableNode dispatchOnScrollChangedด้วย (I34b9d, b/238109286) currentCompositeKeyHashเลิกใช้งานแล้ว โปรดใช้currentCompositeKeyHashCodeแทน API การแทนที่จะเข้ารหัสแฮชเดียวกันด้วยบิตที่มากขึ้น ซึ่งจะช่วยลดโอกาสที่กลุ่มแบบสุ่ม 2 กลุ่มที่ไม่เกี่ยวข้องในลําดับชั้นการจัดองค์ประกอบจะมีคีย์แฮชเดียวกันได้อย่างมาก (I4cb6a, b/177562901)- โปรเจ็กต์ที่เผยแพร่ด้วย Kotlin 2.0 ต้องใช้ KGP 2.0.0 ขึ้นไปจึงจะใช้งานได้ (Idb6b5)
- เพิ่มการรองรับการตรวจสอบ Lint สำหรับ
FocusRequesterเพื่อให้แน่ใจว่าระบบจะจดจำไว้ในการเขียน (I6bf91) - เพิ่มความสามารถในการตั้งค่าอัตราเฟรมที่ต้องการหรือหมวดหมู่อัตราเฟรมใน Composable ที่ควรแสดง (Ie5201)
- เปิดเผย
MotionEventเนทีฟใน Android (I17286) - เพิ่ม
getChecked() + setChecked(int)เลิกใช้งานisChecked + setChecked(boolean)(Iaac9d) - ตอนนี้ตัวแก้ไข
graphicsLayerยอมรับblendModeและcolorFilter(Iab0e6) แล้ว - เพิ่ม
LocalResourcesองค์ประกอบที่อยู่ใกล้กับทรัพยากรการค้นหา การเรียกใช้LocalResources.currentจะจัดองค์ประกอบใหม่เมื่อการกำหนดค่าเปลี่ยนแปลง ดังนั้นการเรียกใช้ API เช่นstringResource()จะแสดงค่าที่อัปเดตแล้ว (I50c13, b/274786917) - เปิดเผย API เวอร์ชันทดลองสำหรับ Composable เพื่อจัดการเหตุการณ์การแตะโดยอ้อม (Icff57)
- รุ่นนี้ปรับปรุงการรายงานข้อยกเว้นที่ไม่ได้จัดการซึ่งเกิดขึ้นในระหว่างเลย์เอาต์และขั้นตอนการวาดของเนื้อหาที่ใช้ร่วมกันได้ ก่อนหน้านี้ ข้อยกเว้นที่ไม่ได้แคชที่นี่จะทำให้โปรแกรมเรียกใช้การทดสอบขัดข้องและสิ้นสุดชุดโปรแกรมทดสอบก่อนเวลา ตอนนี้คุณสามารถรายงานข้อยกเว้นเหล่านี้ได้อย่างราบรื่นมากขึ้นโดยไม่ต้องสิ้นสุดชุดโปรแกรมทดสอบ (I9928b, b/314128080)
- เลิกใช้งาน
GlobalAssertionsAPI เวอร์ชันทดลอง โดยมีวัตถุประสงค์เพื่อใช้ในการตรวจสอบการช่วยเหลือพิเศษ โปรดดูenableAccessibilityChecks()เพื่อวัตถุประสงค์ดังกล่าวแทน (I50aa5) SemanticsNodeInteraction.performTextInputSelectionไม่ใช่ฟีเจอร์ทดลองอีกต่อไป และตอนนี้รองรับพารามิเตอร์relativeToOriginalเพิ่มเติมซึ่งช่วยให้คุณใช้การเลือกกับข้อความเดิมที่ไม่ได้แปลงหรือข้อความที่แปลงแล้วก็ได้ (I3a905, b/261561038, b/277018945)- เปิดตัว API สำหรับสร้างรายการหัวข้อย่อยที่กำหนดเองผ่าน
AnnotatedString(I1d066, b/383269496, b/139326648) - เลิกใช้งาน
runWithTimingDisabledเพื่อใช้runWithMeasurementDisabledแทน ซึ่งอธิบายลักษณะการทำงานได้ชัดเจนกว่า นั่นคือระบบจะหยุดเมตริกทั้งหมดชั่วคราว นอกจากนี้ ให้แสดงคลาสซูเปอร์คลาสMicrobenchmarkScopeเนื่องจากประกาศฟังก์ชันrunWithMeasurementDisabledอีกครั้งเพื่อเปิดการเข้าถึงไม่ได้เนื่องจากเป็นฟังก์ชันอินไลน์ (I9e23b, b/389149423, b/149979716) - อัปเดต API อุปกรณ์ ui-tooling ให้รวมอุปกรณ์รุ่นใหม่ๆ (Ia2ac1)
- เพิ่มแท็บเล็ตแนวตั้งในคอลเล็กชันขนาดหน้าจอแสดงตัวอย่างเพื่อช่วยให้นักพัฒนาแอปพิจารณาหน้าต่างที่ใหญ่ขึ้น (Ia1976)
- เปิดตัว Trace Value API สำหรับการทำเครื่องหมาย/บันทึกการติดตามด้วยค่า ณ จุดเวลาที่กำหนด ค่าการติดตามจะแสดงใน Prefetto เป็นเลนใหม่ที่ดูได้ผ่านไทม์ไลน์ของการติดตาม ใน Android จะมีการติดตั้งใช้งานโดยใช้
Trace.setCounter(Idcf48)
การแก้ไขข้อบกพร่อง
- แก้ไขการเรียกใช้ Observer ของ remember ใน Composition ที่หยุดชั่วคราวได้เพื่อหลีกเลี่ยงการเรียกใช้ remembered/forgotten ในการใช้เดียวกัน (I570b2, b/404645679, b/407931790)
- ตอนนี้คุณตั้งค่า
android:dialogThemeเพื่อควบคุมพร็อพเพอร์ตี้ของกล่องโต้ตอบได้แล้วเมื่อdecorFitsSystemWindowsเป็นเท็จ (I7922f, b/246909281) - แก้ไขข้อบกพร่องที่เหตุการณ์การเคลื่อนไหวที่ตรวจพบนอกกล่องโต้ตอบสามารถปิดกล่องโต้ตอบได้ (Ia78fd)
- ตอนนี้การตรวจสอบ Lint ของ Compose ต้องใช้ AGP เวอร์ชัน 8.8.2 ขึ้นไปจากบรรทัดคำสั่ง และต้องใช้ Android Studio Ladybug ขึ้นไปสำหรับการรองรับ IDE หากใช้ AGP เวอร์ชันเก่า คุณสามารถตั้งค่า
android.experimental.lint.version=8.8.2ใน gradle.properties เพื่ออัปเกรด Lint เวอร์ชันได้โดยไม่ส่งผลต่อ AGP (I6f2a8) - เพิ่มพร็อพเพอร์ตี้ความหมายใหม่
InputTextที่บันทึกค่าของtextfieldก่อนที่จะใช้การเปลี่ยนรูปแบบเอาต์พุต (Iae46a, b/395911609, b/176949051) - ย้าย
enableAccessibilityChecks()API ที่เปิดการตรวจสอบการช่วยเหลือพิเศษสำหรับ Android ไปยังแพ็กเกจแยกต่างหากซึ่งเป็นcompose:ui:ui-test-accessibilityหากคุณไม่ได้ใช้TestRuleและcompose:ui:ui-test-junit4-accessibilityเมื่อเรียกใช้TestRule(I3c318, b/391560768) - เพิ่มการรองรับการเขียน Stack Trace ใน
LaunchedEffectและrememberCoroutineScope(I705c0, b/354163858)
การมีส่วนร่วมจากภายนอก
- เปลี่ยนฟังก์ชัน
runComposeUiTestทดลองเพื่อยอมรับบล็อกการระงับ นอกจากนี้ ยังเพิ่มฟังก์ชันrunComposeUiTestที่เลิกใช้งานแล้วเพื่อความเข้ากันได้แบบไบนารี (I3b88c, b/361577328)
เวอร์ชัน 1.8
เวอร์ชัน 1.8.3
18 มิถุนายน 2025
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.8.3 เวอร์ชัน 1.8.3 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- เราได้นำธงสำหรับ
isGetFocusedRectReturnEmptyEnabledออกแล้วเนื่องจากฟีเจอร์นี้ได้รับการยืนยันอย่างสมบูรณ์แล้ว (Ife722) - Flag
ComposeUiFlags.isGetFocusedRectReturnEmptyEnabledทำให้เมื่อไม่มีอะไรที่โฟกัสได้ในComposeViewระบบจะตั้งค่า Rect เป็นค่าว่าง ซึ่งจะป้องกันไม่ให้การค้นหาโฟกัสเลือกมุมมองที่จะโฟกัส ซึ่งมีความสำคัญอย่างยิ่งในกรณีที่ IME มีตัวเลือกถัดไปและอาจพยายามโฟกัสที่ComposeViewและrequestFocus()ไม่สำเร็จ (Ibd0e2, b/369256395)
เวอร์ชัน 1.8.2
20 พฤษภาคม 2025
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.8.2 เวอร์ชัน 1.8.2 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไข NPE เมื่อมีการนำกล่องโต้ตอบออกในระหว่างสตรีมเหตุการณ์ที่ใช้งานอยู่ในกล่องโต้ตอบ (6a7e7f)
- แก้ไขปัญหา
onLayoutRectChangeไม่อัปเดตตามไทม์ไลน์ที่ถูกจำกัดเมื่อมีการอัปเดตแบบวาดอย่างเดียว (03b82d)
เวอร์ชัน 1.8.1
7 พฤษภาคม 2025
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.8.1 เวอร์ชัน 1.8.1 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาบางอย่างเกี่ยวกับ
onLayoutRectChangedและLazyLayoutd791b11 - ข้ามคำขอวัดซ้ำสำหรับรายการที่ประกอบไว้ล่วงหน้า ข้อบกพร่องนี้ส่งผลต่อประสิทธิภาพการเลื่อนเลย์เอาต์แบบ Lazy เนื่องจากในบางกรณีการดึงข้อมูลล่วงหน้าทำงานได้อย่างไม่มีประสิทธิภาพ และการวัดผลเกิดขึ้นภายในเฟรม 742087a
เวอร์ชัน 1.8.0
23 เมษายน 2025
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.8.0 เวอร์ชัน 1.8.0 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 1.7.0
- Compose 1.8 มีการรองรับการป้อนข้อความอัตโนมัติเชิงความหมายที่เพิ่มเข้ามาใหม่ ตรวจสอบว่า UI และ Foundation ที่คุณใช้เป็นเวอร์ชัน 1.8 ขึ้นไป เนื่องจากการป้อนข้อความอัตโนมัติสำหรับคอมโพเนนต์ข้อความต้องใช้โมดูลทั้ง 2 เวอร์ชันล่าสุด ดูรายละเอียดการใช้งาน API และตัวอย่างได้ในเอกสารประกอบเกี่ยวกับการป้อนข้อความอัตโนมัติที่นี่
- Compose 1.8 รองรับการตอบสนองแบบรู้สึกได้เพิ่มเติม ได้แก่
Confirm,ContextClick,GestureEnd,GestureThresholdActivate,Reject,SegmentFrequentTick,SegmentTick,ToggleOn,ToggleOff,VirtualKeyคุณเข้าถึงได้ผ่านLocalHapticFeedbackและใน Android ฟีเจอร์นี้จะพร้อมใช้งานโดยค่าเริ่มต้นเมื่อ Vibrator API ระบุว่ารองรับการสั่น - ตอนนี้ Focus API หลายรายการเสถียรแล้ว ซึ่งรวมถึง
Modifier.focusRestorer()และonEnterรวมถึงonExitFocusProperties(I6e667) ตอนนี้คุณระบุFocusDirectionเมื่อโทรหาrequestFocusได้แล้ว เราได้เพิ่มrequestFocus(FocusDirection)API ลงในทั้งfocusRequesterและFocusTargetModifierNodeเพื่อให้โฟกัสไปในทิศทางที่เฉพาะเจาะจงได้ (I5d9ec][https://android-review.googlesource.com/#/q/I5d9eca3a2cd283c1b84ad6b77d929ef9a49ce4cc], b/245755256)
เวอร์ชัน 1.8.0-rc03
9 เมษายน 2025
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.8.0-rc03 เวอร์ชัน 1.8.0-rc03 มีการคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- ปิดใช้การแก้ไขการทำงานร่วมกันของโฟกัสบางอย่างที่ทำให้เกิดการถดถอย (b9d998, b/369256395, b/378570682, b/376142752, b388590015/, b/389994198, b/391378895)
เวอร์ชัน 1.8.0-rc02
26 มีนาคม 2025
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.8.0-rc02 เวอร์ชัน 1.8.0-rc02 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาที่มุมมองที่โฟกัสซึ่งฝังอยู่ในลำดับชั้นของ Compose จะทำให้เกิดการจัดองค์ประกอบซ้ำเมื่อนำมุมมองที่โฟกัสออกจาก LazyList (765562)
เวอร์ชัน 1.8.0-rc01
12 มีนาคม 2025
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.8.0-rc01 เวอร์ชัน 1.8.0-rc01 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขข้อขัดข้องเมื่อนำ
AndroidViewที่โฟกัสอยู่ออกขณะที่แป้นพิมพ์เสมือนทำงานอยู่ (Ic725a) - แก้ไขปัญหาบางอย่างในการติดตั้งใช้งานการจัดการสถานะโฟกัสใหม่ (b/395895685)
- แก้ไขปัญหาที่บล็อกการป้อนข้อความอัตโนมัติเมื่อใช้
LaunchedEffectเพื่อขอโฟกัสในช่องข้อความ (b/392539099)
เวอร์ชัน 1.8.0-beta03
26 กุมภาพันธ์ 2025
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.8.0-beta03 เวอร์ชัน 1.8.0-beta03 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- ย้าย
enableAccessibilityChecks()API ที่เปิดการตรวจสอบการช่วยเหลือพิเศษสำหรับ Android ไปยังแพ็กเกจแยกต่างหาก ซึ่งคือcompose:ui:ui-test-accessibilityหากคุณไม่ได้ใช้ TestRule และcompose:ui:ui-test-junit4-accessibilityเมื่อเรียกใช้ในTestRule(I547ef, b/391560768) - เพิ่มพร็อพเพอร์ตี้ความหมายใหม่
InputTextที่บันทึกค่าของช่องข้อความก่อนที่จะใช้การแปลงเอาต์พุต (Iae46a)
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาที่ทำให้บริการป้อนข้อความอัตโนมัติบันทึกข้อความเอาต์พุตที่แปลงแล้วแทนที่จะเป็นข้อความอินพุต (Iae46a, b/395911609, b/176949051)
เวอร์ชัน 1.8.0-beta02
12 กุมภาพันธ์ 2025
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.8.0-beta02 เวอร์ชัน 1.8.0-beta02 มีการเปลี่ยนแปลงเหล่านี้
ฟีเจอร์ใหม่
- เพิ่มการตรวจสอบ Lint เพื่อเตือนการเรียกใช้
Configuration#screenWidth/heightDp-LocalWindowInfo.current.containerSizeสามารถใช้แทนเพื่อดึงขนาดหน้าต่างปัจจุบันได้
เวอร์ชัน 1.8.0-beta01
29 มกราคม 2025
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.8.0-beta01 เวอร์ชัน 1.8.0-beta01 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
ContextualFlowRowและContextualFlowColumnได้รับการทำเครื่องหมายว่าเลิกใช้งานแล้ว คอมโพเนนต์ทดลองนี้เปิดตัวในเวอร์ชัน 1.7 และยังไม่เสถียร รวมถึงการใช้งานถือว่าไม่พึงประสงค์ ในอนาคต เราอาจมีคอมโพเนนต์ที่แก้กรณีการใช้งานที่คอมโพเนนต์นี้มีไว้แก้FlowRowและFlowColumnมีการโอเวอร์โหลดแบบทดลองที่เปิดตัวในเวอร์ชัน 1.7 ซึ่งมีพารามิเตอร์overflowเราเลิกใช้งานพารามิเตอร์นี้แล้ว และคุณสามารถใช้การโอเวอร์โหลดที่ไม่มีพารามิเตอร์นี้แทนได้ ลักษณะการทำงาน "ล้น" เริ่มต้นสำหรับการโอเวอร์โหลดเหล่านี้จะเป็น "ตัด" เช่นเดียวกับตั้งแต่เปิดตัว- กรณีการใช้งานจำนวนมากสำหรับ
ContextualFlowRowสามารถทำได้โดยใช้ FlowRow แต่เราทราบดีว่าไม่ใช่ทุกกรณีContextualFlowRowสามารถติดตั้งใช้งานในพื้นที่ผู้ใช้ได้อย่างสมบูรณ์ และคุณสามารถพยายามคัดลอกการติดตั้งใช้งานและปรับเปลี่ยนได้หากต้องการ ในอนาคต เราหวังว่าจะแก้ปัญหา Use Case เหล่านี้ได้ด้วยวิธีอื่น (Ibafec)
SemanticsNodeInteraction.semanticsId()ถูกลบออกไปแล้ว โปรดใช้SemanticsNodeInteraction.fetchSemanticsNode().idแทน (Ie397a)- เราเลิกใช้งาน API การป้อนข้อความอัตโนมัติแบบเดิมแล้ว โปรดใช้ API ที่อิงตามความหมายใหม่แทน (I943ff)
- เขียน
requestAutofillAPI ใหม่ให้อยู่นอกเครื่องมือจัดการการป้อนข้อความอัตโนมัติ (Id1929)
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาโฟกัสที่
requestFocus()ที่มีพารามิเตอร์previouslyFocusedRectที่ไม่สมเหตุสมผล (เกี่ยวข้องกับทิศทางโฟกัส) จะข้ามComposeView(Ifdc2f, b/388590015) - แก้ไข NPE ที่เกิดขึ้นเป็นครั้งคราวเมื่อใช้
GraphicsLayer.record { this@ContentDrawScope.drawContent() }หากคุณบันทึกdrawContent()ด้วยวิธีนี้ โปรดใช้ฟังก์ชันส่วนขยายGraphicsLayer#recordภายในDrawScopeและไม่ใช่ฟังก์ชันสมาชิกในGraphicsLayer(I75fc0, b/389046242) - แก้ไขเลย์เอาต์ข้อความที่มีจุดไข่ปลาซึ่งบางครั้งแปลไม่ถูกต้องระหว่างภาพเคลื่อนไหว ดูข้อมูลเพิ่มเติมได้ที่ b/389707025 (Ie55b1, b/389707025)
เวอร์ชัน 1.8.0-alpha08
15 มกราคม 2025
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.8.0-alpha08 เวอร์ชัน 1.8.0-alpha08 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- การทำให้
AutofillManagerเป็นคลาสแบบนามธรรม (I0a3b0) - แก้ไขปัญหาที่เกี่ยวข้องกับโฟกัสหลายอย่าง รวมถึงปัญหาแอปขัดข้องเมื่อ IME พยายามโฟกัสที่
ComposeViewโดยไม่มีรายการที่โฟกัสได้ การเปลี่ยนโฟกัสภายในAndroidViewsขององค์ประกอบย่อย และคำขอโฟกัสที่ทำให้AndroidViewค้างอยู่ (Ia03c3, b/369256395, b/378570682, b/376142752) - เปลี่ยน
FocusEnterExitScope.cancelFocus()เป็นcancelFocusChange()(I89959) - ตอนนี้คุณสามารถคำนวณการบดบังที่ประกอบได้ด้วย
RectInfo.calculateOcclusions() - เพิ่มฟังก์ชันส่วนขยายใน
DelegatableNodeเพื่อลงทะเบียน Listener สำหรับการเปลี่ยนแปลงเลย์เอาต์ส่วนกลาง (I68b59)
การแก้ไขข้อบกพร่อง
- กิจกรรมที่ใช้เป็นโฮสต์สำหรับ Composable ที่อยู่ภายใต้การทดสอบเมื่อใช้
ComposeContentTestRule.setContentจะใช้ธีมTheme.Material.Light.NoActionBarเพื่อหลีกเลี่ยงไม่ให้ActionBarทับซ้อนกับเนื้อหาการทดสอบเมื่อกำหนดเป้าหมายเป็น SDK 35 หากต้องการเลือกไม่ใช้ลักษณะการทำงานนี้ คุณสามารถนำทรัพยากร Dependency ในui-test-manifestออก และเพิ่มรายการกิจกรรมใน AndroidManifest.xml ของแอปทดสอบสำหรับComponentActivityด้วยธีมที่คุณเลือก (I7ae1b, b/383368165) - ตอนนี้ฟอนต์ทรัพยากรที่มีการตั้งค่ารูปแบบเดียวกันจะหลีกเลี่ยงการแคชมากเกินไป ซึ่งทำให้มีการใช้การตั้งค่ารูปแบบที่ไม่ถูกต้อง (If3dff, b/372044241)
- ตอนนี้
AnnotatedString.fromHtmlรองรับแท็ก<ul>/<li>แล้ว (I7c2fe, b/299662276, b/139326648)
การมีส่วนร่วมจากภายนอก
- เพิ่มอินเทอร์เฟซคลิปบอร์ดใหม่และองค์ประกอบการเขียนสำหรับอินเทอร์เฟซดังกล่าว (I80809)
เวอร์ชัน 1.8.0-alpha07
11 ธันวาคม 2024
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.8.0-alpha07 เวอร์ชัน 1.8.0-alpha07 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เปิดเผยเจ้าของจาก
LayoutNodeสำหรับเครื่องมือ (I26f7f) - มีองค์ประกอบ
LocalAutofillHighlightColorที่ใช้ในเครื่องเป็นประเภทสี (I0e05b) - คงค่า
UrlAnnotationที่เลิกใช้งานแล้วและทำเครื่องหมายวิธีการของคลาสนี้ว่าเป็นการทดลอง (Ic0021)
การแก้ไขข้อบกพร่อง
- แก้ไขข้อขัดข้อง
IndexOutOfBoundsExceptionเมื่อใช้LinkAnnotationภายในBasicTextหรือ Text composable (be7605, b/374115892) - แก้ไขปัญหาที่ช่องข้อความที่กรอกซึ่งมีรูปร่างที่กำหนดเองไม่ตัดเส้นตัวบ่งชี้ (I4f87f, b/380704151)
- แก้ไขพื้นหลังที่หายไปเมื่อใช้ภาพหน้าจอยาว (I4d57a)
- ตอนนี้ไลบรารีนี้ใช้คำอธิบายประกอบเกี่ยวกับค่า Null ของ JSpecify ซึ่งเป็นการใช้งานประเภท นักพัฒนาซอฟต์แวร์ Kotlin ควรใช้อาร์กิวเมนต์คอมไพเลอร์ต่อไปนี้เพื่อบังคับใช้การใช้งานที่ถูกต้อง
-Xjspecify-annotations=strict(นี่คือค่าเริ่มต้นที่เริ่มต้นด้วยคอมไพเลอร์ Kotlin เวอร์ชัน 2.1.0) (Idfef8, b/326456246) - อัปเดตการรองรับ Compose สำหรับสีแบบไวด์แกมมาและ HDR เมื่อเรียกใช้ใน Android Q ขึ้นไป (Icd8be, b/379135036)
- ตอนนี้หากโหลดแบบอักษรของทรัพยากรไม่สำเร็จ ระบบจะเปลี่ยนกลับไปใช้แบบอักษรเริ่มต้นโดยไม่มีการแจ้งเตือนแทนที่จะแสดงข้อยกเว้นในการวัดผลเหมือนก่อนหน้านี้ (Ib6a49)
- แก้ไขปัญหาโฟกัสหายเมื่อ
AndroidViewถูกแยกออกและติดใหม่ (I53446) - ยอมรับ
requestFocus()จากการดำเนินการเลย์เอาต์ที่อยู่นอกขอบเขต (Ia8461)
การมีส่วนร่วมจากภายนอก
- เพิ่ม
BringIntoViewResponderModifierNodeลงใน UI ซึ่งเป็นวิธีใหม่ในการใช้ฟังก์ชัน "นำมาแสดง" รวมถึงอนุญาตให้ใช้ในระดับแพลตฟอร์ม (Ia6dd8)
เวอร์ชัน 1.8.0-alpha06
13 พฤศจิกายน 2024
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.8.0-alpha06 เวอร์ชัน 1.8.0-alpha06 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มตัวปรับแต่ง
stylusHoverIcon(Iff20a, b/331289114) - เปลี่ยนเครื่องมือจัดการการป้อนข้อความอัตโนมัติให้เป็นอินเทอร์เฟซ (I84914, b/376080755)
- เพิ่ม
requestFocus(FocusDirection)ให้กับทั้งfocusRequesterและFocusTargetModifierNodeเพื่อให้โฟกัสไปในทิศทางที่เฉพาะเจาะจง (I5d9ec, b/245755256) FocusProperties.enterและFocusProperties.exitถูกแทนที่ด้วยonEnterและonExitโดยใช้ขอบเขตผู้รับแทนพารามิเตอร์FocusDirection(I6e667)- เพิ่มการรองรับการป้อนข้อความอัตโนมัติในแถบเครื่องมือข้อความ (Ie6a4c)
- การเปลี่ยนแปลง API ใน
Modifier.focusRestorer()(I99c03) มีดังนี้- เปลี่ยนชื่อพารามิเตอร์เป็น "fallback"
- ตอนนี้พารามิเตอร์เป็น
FocusRequesterไม่ใช่ Lambda - ตอนนี้พารามิเตอร์เป็นแบบไม่เป็นค่าว่างโดยมีค่าเริ่มต้นเป็น "ค่าเริ่มต้น"
- นำคำอธิบายประกอบ
@Experimentalออกจากอินเทอร์เฟซเครื่องมือจัดการการป้อนข้อความอัตโนมัติ ฟีเจอร์นี้ยังอยู่ระหว่างการพัฒนาเพื่อเปิดตัวในรุ่นนี้ แต่เราไม่ต้องการเปิดตัว @Expemiental API (Id8398) LocalHapticFeedbackตอนนี้มีการใช้งานHapticFeedbackเริ่มต้นเมื่อ Vibrator API ระบุว่ารองรับการโต้ตอบการสัมผัส เราได้เพิ่มรายการต่อไปนี้ลงในHapticFeedbackType-Confirm,ContextClick,GestureEnd,GestureThresholdActivate,Reject,SegmentFrequentTick,SegmentTick,ToggleOn,ToggleOff,VirtualKeyตอนนี้คอมโพเนนต์ที่คลิกค้างได้ของ Wear Compose เช่นButton,IconButton,TextButtonและCardจะแสดงLONG_PRESSการสั่นเมื่อมีการระบุตัวแฮนเดิลการคลิกค้าง (I5083d)- นำ
OverscrollConfigurationและLocalOverscrollConfigurationออก และเพิ่มrememberPlatformOverscrollFactoryเพื่อสร้างอินสแตนซ์ของ / ปรับแต่งพารามิเตอร์ของการใช้งานการเลื่อนเกินเริ่มต้น หากต้องการปิดใช้การเลื่อนเกิน ให้ใช้LocalOverscrollFactory provides nullแทนLocalOverscrollConfiguration provides nullหากต้องการเปลี่ยนสีเรืองแสง / ระยะขอบ ให้ใช้LocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding)แทนLocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding)(Ie71f9, b/255554340, b/234451516) - นำ
GlobalAssertionsAPI เวอร์ชันทดลองออก โดยมีวัตถุประสงค์เพื่อใช้ในการเรียกใช้การตรวจสอบการช่วยเหลือพิเศษ โปรดดูenableAccessibilityChecks()เพื่อวัตถุประสงค์ดังกล่าวแทน (I59322)
เวอร์ชัน 1.8.0-alpha05
30 ตุลาคม 2024
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.8.0-alpha05 เวอร์ชัน 1.8.0-alpha05 มีการเปลี่ยนแปลงเหล่านี้
ฟีเจอร์ใหม่
ฟีเจอร์ป้อนข้อความอัตโนมัติจะแสดงอยู่หลังแฟล็กฟีเจอร์ในรุ่นนี้ เรากำลังดำเนินการปรับปรุงประสิทธิภาพและมองหาความคิดเห็นเบื้องต้นเกี่ยวกับ API คาดว่า API จะได้รับการพัฒนาให้ดียิ่งขึ้นก่อนที่จะมีเสถียรภาพโดยอิงตามความคิดเห็น
- หากต้องการเปิดใช้การป้อนข้อความอัตโนมัติ ให้ตั้งค่า
ComposeUiFlags.isSemanticAutofillEnabledเป็น "true" ในonCreateและใช้ Compose Snapshot ล่าสุด - การป้อนข้อความอัตโนมัติเวอร์ชันนี้รองรับการบันทึกข้อมูลเข้าสู่ระบบด้วยตนเอง ผ่านฟีเจอร์แนะนำรหัสผ่านที่รัดกุม และผ่านการไปยังส่วนต่างๆ นอกจากนี้ยังรองรับการป้อนข้อมูลเมื่อช่องที่ป้อนข้อความอัตโนมัติได้ได้รับโฟกัส หรือเมื่อมีการทริกเกอร์การป้อนข้อความอัตโนมัติผ่านแถบเครื่องมือข้อความในคอมโพเนนต์ข้อความ คอมโพเนนต์จะไฮไลต์เพื่อระบุเมื่อการป้อนข้อความอัตโนมัติเสร็จสมบูรณ์
การเปลี่ยนแปลง API
- แก้ไขอินเทอร์เฟซการป้อนข้อความอัตโนมัติให้เป็นไปตามโครงสร้าง
expect/actual(I22dce) - ขอแนะนำ
CompositionLocalที่ใช้เพื่อแก้ไขเฉดสีของไฮไลต์การป้อนข้อความอัตโนมัติที่สำเร็จ (I32092) - เพิ่ม
Modifier.onRectChangedAPI ซึ่งเป็น API ที่อนุญาตให้ผู้ใช้สมัครรับข้อมูลตำแหน่งและขนาดที่สัมพันธ์กับรูท/หน้าต่าง/หน้าจอของLayoutNodeAPI นี้แก้ปัญหาในกรณีการใช้งานหลายอย่างที่ตัวแก้ไขonGloballyPositionedที่มีอยู่ทำได้ แต่ API นี้มีค่าใช้จ่ายที่น้อยกว่ามาก และมีสิ่งอำนวยความสะดวกในการดีบาวซ์และการควบคุมอัตราการเรียกกลับตามที่กรณีการใช้งานต้องการ (Id28c7, b/372765423, b/372757007, b/372994338) - ขยายเครื่องมือจัดการการป้อนข้อความอัตโนมัติให้รวม API ของ
commit()และcancel()ที่ช่วยให้ผู้ใช้บันทึกข้อมูลเข้าสู่ระบบที่ป้อนใหม่ได้ (I2da00) - เปิดตัว
AutofillManagerอินเทอร์เฟซใหม่ที่ใช้ปรับแต่งเส้นทางการป้อนข้อความอัตโนมัติของผู้ใช้ได้ และisSemanticAutofillEnabledฟีเจอร์แฟล็กเพื่อเปิดใช้การป้อนข้อความอัตโนมัติเวอร์ชันใหม่นี้ (I9d484) - เพิ่ม
Modifier.onRectChangedAPI ซึ่งเป็น API ที่อนุญาตให้ผู้ใช้สมัครรับข้อมูลตำแหน่งและขนาดที่สัมพันธ์กับรูท/หน้าต่าง/หน้าจอของLayoutNodeAPI นี้แก้ปัญหาในกรณีการใช้งานหลายอย่างที่ตัวแก้ไขonGloballyPositionedที่มีอยู่ทำได้ แต่ API นี้มีค่าใช้จ่ายที่น้อยกว่ามาก และมีสิ่งอำนวยความสะดวกในการดีบาวซ์และการควบคุมอัตราการเรียกกลับตามที่กรณีการใช้งานต้องการ (I3c8fa) - เพิ่มพร็อพเพอร์ตี้เชิงความหมายและประเภทข้อมูลเพื่อรองรับการป้อนข้อความอัตโนมัติเพิ่มเติม (I52c7d)
- ตอนนี้เมธอดทั้งหมดในเครื่องมือสร้าง
AnnotatedStringไม่ใช่เวอร์ชันทดลองแล้ว (Ia89c8, b/261561823)
การแก้ไขข้อบกพร่อง
- ตอนนี้ View ที่ฝังใน Compose สามารถรับเหตุการณ์การหมุนได้หากมีการโฟกัส (I4d53a, b/320510084)
- แก้ไขปัญหาที่ทรัพยากรประเภทต่างๆ จะไม่อัปเดตเมื่อมีการเปลี่ยนแปลงการกำหนดค่า (Ia9b99, b/352336694)
- แก้ไขปัญหาที่ทำให้
TextFieldทำงานไม่ถูกต้องเมื่อใช้แป้นพิมพ์ภาษาญี่ปุ่น POBox ในอุปกรณ์ Sony รุ่นเก่าบางรุ่น (Ia9b99, b/373743376) - แก้ไขปัญหาเกี่ยวกับกล่องโต้ตอบที่แสดงที่ด้านล่างของหน้าจอแทนที่จะอยู่ตรงกลาง (Ia2ec, b/373093006)
- การกำหนดเป้าหมาย API 35 ขึ้นไปจะไม่บังคับให้กล่องโต้ตอบมี
decorFitsSystemWindowsตั้งค่าเป็นเท็จอีกต่อไป (Ibc94, b/364492593) - แก้ไขข้อขัดข้องเมื่อย้ายเลเยอร์ระหว่างหน้าต่าง (เช่น กล่องโต้ตอบและเนื้อหาหลัก) (I675ba, b/330955281)
เวอร์ชัน 1.8.0-alpha04
16 ตุลาคม 2024
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.8.0-alpha04 เวอร์ชัน 1.8.0-alpha04 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มการเรียกกลับ
DelegatableNode#onDensityChangeและDelegatableNode#onLayoutDirectionChangeเพื่ออนุญาตให้อัปเดตสถานะโหนดเมื่อมีการเปลี่ยนแปลง (I04f3e, b/340662451) - เพิ่ม
WindowInfo#containerSizeเพื่อระบุขนาดคอนเทนเนอร์เนื้อหาของหน้าต่างปัจจุบัน คุณเรียกข้อมูลนี้ได้โดยใช้LocalWindowInfo(Idc38c, b/369334429, b/360343819) - แก้ไขปัญหาเกี่ยวกับรายการที่เลื่อนได้แบบซ้อนกันซึ่งถูกนำออกจากแผนผังโหนดระหว่างการปัดที่กำลังดำเนินอยู่ ตอนนี้โหนดเหล่านี้จะยกเลิกการปัดและส่งเหตุการณ์
onPostFlingอย่างถูกต้องด้วยความเร็วที่เหลือ นอกจากนี้ เรายังเปิดตัวฟีเจอร์NewNestedScrollFlingDispatchingEnabledเพื่อควบคุมลักษณะการทำงานในกรณีที่เกิดการถดถอย เราจะนำฟีเจอร์นี้ออกก่อนเปิดตัวเวอร์ชันเบต้า (I05c37, b/371168883) - เปิดตัว
PointerInputModifierNode#touchBoundsExpansionซึ่งใช้เพื่อขยายขอบเขตการแตะของตัวแก้ไขอินพุตตัวชี้เดียวได้ (Iccf02, b/335339283) - เพิ่ม
WindowInfo#containerSizeเพื่อระบุขนาดคอนเทนเนอร์เนื้อหาของหน้าต่างปัจจุบัน คุณเรียกข้อมูลนี้ได้โดยใช้LocalWindowInfo(I27767, b/369334429, b/360343819) - นำ
readOnlyออกจากTextFieldsเพื่อปักหมุดเวอร์ชันพื้นฐานที่เสถียร (I3aaba) ParagraphและParagraphIntrinsicsจะรับรายการคำอธิบายประกอบทั้งหมดที่ใช้กับAnnotatedStringซึ่งก่อนหน้านี้มีเพียงรายการSpanStyles(I12f80)
การแก้ไขข้อบกพร่อง
- อัปเดตวิธีจัดการย่อหน้าใน
AnnotatedStringก่อนหน้านี้คุณสร้างได้เฉพาะย่อหน้าที่ไม่ทับซ้อนกัน ตอนนี้AnnotatedStringอนุญาตให้ย่อหน้าที่ทับซ้อนกันอย่างสมบูรณ์ซึ่งจะผสานรวมกัน และย่อหน้าที่ซ้อนกันในกรณีที่ย่อหน้าด้านนอกจะแยกตามขอบเขตของย่อหน้าด้านใน และรูปแบบของย่อหน้าด้านในจะผสานรวมกับรูปแบบของย่อหน้าด้านนอก (Ic9554) - แก้ไขข้อขัดข้องใน
AnnotatedStringด้วยLinkAnnotationที่มีความยาวเป็น 0 (89aac6)
เวอร์ชัน 1.8.0-alpha03
2 ตุลาคม 2024
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.8.0-alpha03 เวอร์ชัน 1.8.0-alpha03 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- อัปเดต Kotlin เป็นเวอร์ชัน 1.9 (I1a14c)
- เปิดตัวบทบาทเชิงความหมายใหม่ที่เรียกว่า Carousel เพื่อจำลองลักษณะการทำงานของรายการใน Pager สำหรับบริการ a11y (Id354b, b/354109776, b/239672673)
- เปลี่ยนชื่อ
invisibleToUser()เป็นhideFromAccessibilityโดยฟังก์ชันการทำงานจะยังคงเหมือนเดิม ดูรายละเอียดเพิ่มเติมในเอกสารประกอบ (Ib43a3)
การแก้ไขข้อบกพร่อง
- การอัปเดตเอกสารสำหรับตัวแก้ไข
SensitiveContent(Ib0442) - แก้ไขปัญหาที่ระบบจะไม่สนใจคลิป Outline ทั่วไปบางรายการเมื่อใช้ร่วมกับเงาความสูงใน Android บางเวอร์ชัน
- แก้ไขปัญหาที่ระบบจะใช้คลิปที่ว่างเปล่าเมื่อมีการระบุคลิป Outline ทั่วไปใน Android บางเวอร์ชัน
- แก้ไขข้อยกเว้นที่เกิดขึ้นเมื่อ IME ทำงานใน View ภายนอกและใช้การดำเนินการถัดไปเพื่อเข้าสู่โฟกัสใน
ComposeViewclearFocus()มีลักษณะการทำงานสอดคล้องกับลักษณะการทำงานของ View ใน API < 28 ซึ่งclearFocus()อาจทำให้ระบบโฟกัส View เริ่มต้น - แก้ไขปัญหาที่การวางเกิดขึ้นในโหนดที่แยกออกมาใน
LazyListโดยแยกการจัดการองค์ประกอบย่อยสำหรับการส่งผ่านเลย์เอาต์ที่แตกต่างกัน - แก้ไขปัญหาที่แป้นพิมพ์ซอฟต์แวร์กะพริบเมื่อโฟกัสเปลี่ยนจาก
TextFieldเป็นEditTextหรือเอดิเตอร์อื่นๆ ที่อิงตามมุมมอง - ตอนนี้โหนด Nested Scroll จะส่งเหตุการณ์
onPostFlingอย่างถูกต้องหลังจากที่แยกออกแล้ว - การปรับปรุงประสิทธิภาพทั่วไป
เวอร์ชัน 1.8.0-alpha02
18 กันยายน 2024
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.8.0-alpha02 เวอร์ชัน 1.8.0-alpha02 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ตอนนี้คุณใช้
TextOverflow.StartEllipsisและTextOverflow.MiddleEllipsisได้แล้ว ซึ่งจะช่วยให้คุณใส่เครื่องหมายจุดไข่ปลาที่จุดเริ่มต้นหรือตรงกลางของบรรทัดข้อความบรรทัดเดียวได้ (I38913, b/185418980)
การแก้ไขข้อบกพร่อง
- แก้ไข Dalog
dismissOnClickoutside(39a3d, b/364508685) - อย่าตัดเงาของเนื้อหาในกล่องโต้ตอบ (e8e2f, b/363027803)
- แก้ไขลักษณะการทำงานที่ไม่ถูกต้องเมื่อการค้นหาโฟกัสย้ายระหว่าง "เขียน" กับ "ดู" (58377, b/350534714)
การมีส่วนร่วมจากภายนอก
- ตอนนี้
AlignmentLinesMapรับประเภทคอนกรีตVerticalAlignmentLineหรือHorizontalAlignmentLineแล้ว (I02912) ByteArray.decodeToImageBitmap(): ImageBitmapวิธีByteArray.decodeToImageBitmap(): ImageBitmapใหม่ที่ใช้กันโดยทั่วไป (I83c21)
เวอร์ชัน 1.8.0-alpha01
4 กันยายน 2024
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.8.0-alpha01 เวอร์ชัน 1.8.0-alpha01 มีการคอมมิตเหล่านี้
เวอร์ชัน 1.7
เวอร์ชัน 1.7.8
12 กุมภาพันธ์ 2025
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.7.8 เวอร์ชัน 1.7.8 มีการเปลี่ยนแปลงเหล่านี้
เวอร์ชัน 1.7.7
29 มกราคม 2025
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.7.7 เวอร์ชัน 1.7.7 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไข
IndexOutOfBoundsExceptionเมื่อส่งAnnotatedStringที่มีLinkAnnotationไปยัง Text Composable (Ic96d2) - แก้ไขปัญหาการหมดเวลาในการทดสอบในบางกรณีที่เกิดขึ้นไม่บ่อยนักเมื่อใช้
LinkAnnotationในAnnotatedString(I04a03)
เวอร์ชัน 1.7.6
11 ธันวาคม 2024
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.7.6 เวอร์ชัน 1.7.6 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- ก่อนหน้านี้เราเคยแสดงข้อผิดพลาดทุกครั้งที่พบเหตุการณ์สำคัญเมื่อระบบโฟกัสมีการลบล้างที่รอดำเนินการ ตอนนี้เราจะบันทึกข้อผิดพลาดแทน (I7ea0, b/346370327)
- นำคำอธิบายประกอบเวอร์ชันทดลองออกจาก
SemanticsPropertyReceiver.invisibleToUser()แล้ว โดยจะเลิกใช้งานในเวอร์ชัน 1.8 และแทนที่ด้วยSemanticsPropertyReceiver.hideFromAccessibility()(I448f0, b/376479686) - แก้ไขปัญหาที่ทำให้
TextFieldทำงานไม่ถูกต้องเมื่อใช้แป้นพิมพ์ภาษาญี่ปุ่น POBox ในอุปกรณ์ Sony รุ่นเก่าบางรุ่น (I94e0e, b/373743376) - แก้ไขปัญหาด้านการช่วยเหลือพิเศษที่
BasicTextไม่ได้ประกาศTalkBackของBasicText(I67bcb, b/376479686)
เวอร์ชัน 1.7.5
30 ตุลาคม 2024
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.7.5 เวอร์ชัน 1.7.5 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาที่การยกระดับและการตัดด้วยเส้นขอบที่กำหนดเองไม่แสดงผลอย่างถูกต้อง
- แก้ไขข้อความขัดข้องที่เกิดขึ้นกับ
LinkAnnotationที่มีความกว้างเป็น 0 (Ic1e2e) - แก้ไขการประกาศใน
Talkbackของปุ่มเมื่อสร้างเป็น Text composable ที่คลิกได้ (I1f588)
เวอร์ชัน 1.7.4
16 ตุลาคม 2024
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.7.4 เวอร์ชัน 1.7.4 มีการเปลี่ยนแปลงเหล่านี้
เวอร์ชัน 1.7.3
2 ตุลาคม 2024
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.7.3 เวอร์ชัน 1.7.3 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาที่การระบุคลิปโครงร่างทั่วไปจะทําให้ขอบเขตคลิปว่างใน Android บางเวอร์ชัน
- แก้ไขข้อยกเว้นที่เกิดขึ้นเมื่อ IME ทำงานใน View ภายนอกและใช้การดำเนินการถัดไปเพื่อเข้าสู่โฟกัสใน
ComposeViewclearFocus()มีลักษณะการทำงานสอดคล้องกับลักษณะการทำงานของ View ใน API < 28 ซึ่งclearFocus()อาจทำให้ระบบโฟกัส View เริ่มต้น - แก้ไขปัญหาที่ใช้
placeOrderไม่ถูกต้องสำหรับการลบล้างการคาดการณ์ จึงแก้ไขกรณีขอบที่ข้ามการวางโฆษณาแบบคาดการณ์
เวอร์ชัน 1.7.2
18 กันยายน 2024
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.7.2 เวอร์ชัน 1.7.2 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- ปรับปรุงประสิทธิภาพของข้อมูลโหนดการช่วยเหลือพิเศษและเหตุการณ์ความหมายโดยการนำการติดตามแบบละเอียดออก (I89156, b/362530618)
ComposeViewจะไม่ขัดข้องอีกต่อไปเมื่อมีการส่งขนาดการวัดที่ใหญ่มากผิดปกติ (da5db, b/347036173)- แก้ไขปัญหาโปรแกรมอ่านหน้าจอสำหรับการช่วยเหลือพิเศษที่
LiveRegionไม่ประกาศบนปุ่ม (f66fa7, b/348590026)
เวอร์ชัน 1.7.1
10 กันยายน 2024
- ไม่มีการเปลี่ยนแปลงอาร์ติแฟกต์ Android ระบบได้นำอาร์ติแฟกต์
-desktopรายการออกแล้ว และเพิ่มอาร์ติแฟกต์-jvmStubsและ-linuxx64Stubsรายการ เป้าหมายเหล่านี้ไม่มีไว้ให้ใช้งาน แต่เป็นตัวยึดตำแหน่งเพื่อช่วยให้ Jetbrains Compose ทำงานได้
เวอร์ชัน 1.7.0
4 กันยายน 2024
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.7.0
การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 1.6.0
การเปลี่ยนแปลงที่สำคัญในเวอร์ชัน 1.7.0 จะกล่าวถึงในบล็อกโพสต์นี้
เวอร์ชัน 1.7.0-rc01
21 สิงหาคม 2024
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.7.0-rc01 เวอร์ชัน 1.7.0-rc01 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลงที่สำคัญ
- ตอนนี้โมดูล ui:ui จะบังคับให้ต้องใช้ foundation:foundation เวอร์ชันขั้นต่ำเป็น 1.7.0-rc01 ขึ้นไป การบังคับใช้ดังกล่าวมีขึ้นเพื่อแก้ไขความไม่เข้ากันของลักษณะการทำงานระหว่าง UI กับ Foundation ในส่วนของการเปลี่ยนแปลง
NestedScrollSourceที่เกิดขึ้นในช่วงต้นของ 1.7.0-alpha01
เวอร์ชัน 1.7.0-beta07
7 สิงหาคม 2024
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.7.0-beta07 เวอร์ชัน 1.7.0-beta07 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- ตอนนี้อินพุตข้อความที่เกี่ยวข้องกับ
SemanticsNodeInteractionฟังก์ชันperformTextReplacement,performTextInputและperformTextClearanceจะแสดงข้อผิดพลาดในการยืนยันเมื่อมีการเรียกใช้ในTextFieldsแบบอ่านอย่างเดียว (I4ae8f)
เวอร์ชัน 1.7.0-beta06
24 กรกฎาคม 2024
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.7.0-beta06 เวอร์ชัน 1.7.0-beta06 มีการเปลี่ยนแปลงเหล่านี้
เวอร์ชัน 1.7.0-beta05
10 กรกฎาคม 2024
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.7.0-beta05 เวอร์ชัน 1.7.0-beta05 มีการคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องที่การเปลี่ยนแป้นพิมพ์ซอฟต์แวร์จะทำให้
TextFieldไม่รับอินพุตจากแป้นพิมพ์ใหม่จนกว่าโฟกัสจะหายไปและกลับมาอีกครั้ง - แก้ไขปัญหาที่การพยายามคงเนื้อหาเลเยอร์จะทำให้เกิดผลข้างเคียงที่ไม่พึงประสงค์เมื่อแสดงผลด้วยเนื้อหา
SurfaceView
เวอร์ชัน 1.7.0-beta04
26 มิถุนายน 2024
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.7.0-beta04 เวอร์ชัน 1.7.0-beta04 มีการคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- หลีกเลี่ยงการขัดข้องเมื่อวัดบรรทัดข้อความขนาดใหญ่มาก (เช่น 10,000 อักขระ) (8157ab)
- ปิดใช้การรองรับการแสดงผลซอฟต์แวร์สำหรับ
GraphicsLayerAPI (35ddd8) - แก้ไขการขัดข้องในตรรกะการคงอยู่ของเลเยอร์ (70b13e)
- เราได้เปลี่ยนกลับการเพิ่มประสิทธิภาพการใช้ออบเจ็กต์เลเยอร์ซ้ำ เนื่องจากทำให้เกิดปัญหาในการแสดงผล (70b13e)
เวอร์ชัน 1.7.0-beta03
12 มิถุนายน 2024
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.7.0-beta03 เวอร์ชัน 1.7.0-beta03 มีการเปลี่ยนแปลงเหล่านี้
เวอร์ชัน 1.7.0-beta02
29 พฤษภาคม 2024
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.7.0-beta02 เวอร์ชัน 1.7.0-beta02 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- เปลี่ยนชื่อ
SemanticsProperties.Editableเป็นIsEditableและเปลี่ยนSemanticsPropertyReceiver.editableเป็นค่าisEditableตอนนี้พร็อพเพอร์ตี้เป็นบูลีนและระบุโดยช่องข้อความเสมอ (I8acd8) - เปลี่ยนชื่อพารามิเตอร์การเปรียบเทียบการช่วยเหลือพิเศษ (I3d440)
- อัปเดต API สำหรับการจัดรูปแบบลิงก์: ตอนนี้
TextLinkStylesเป็นส่วนหนึ่งของตัวสร้างLinkAnnotationและเมธอดAnnotatedString.fromHtml(I90b2b) แล้ว นอกจากนี้ ยังนำTextDefaultsออกจากเนื้อหา (I5477b) ด้วย
การแก้ไขข้อบกพร่อง
- เปลี่ยนชื่อ
LayoutCoordinates.introducesFrameOfReferenceเป็นLayoutCoordinates.introducesMotionFrameOfReferenceเพื่อให้สะท้อนวัตถุประสงค์ได้ดียิ่งขึ้น เปลี่ยนชื่อฟังก์ชันที่เกี่ยวข้องเพื่อคำนวณพิกัดตามธงนั้น (I3a330)
เวอร์ชัน 1.7.0-beta01
14 พฤษภาคม 2024
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.7.0-beta01 เวอร์ชัน 1.7.0-beta01 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เปลี่ยนชื่อ
performCustomAccessibilityActionLabelledเป็นperformCustomAccessibilityActionWithLabelและperformCustomAccessibilityActionWhereเป็นperformCustomAccessibilityActionWithLabelMatching(I5387f) AnnotatedString.hasEqualsAnnotationsเปลี่ยนชื่อเป็นhasEqualAnnotationsแล้ว (I685c0)- อัปเดต API สำหรับรับลิงก์ที่มีธีม Material ในข้อความ โดยเฉพาะอย่างยิ่ง เราได้นำวิธีการต่างๆ ออกจาก
TextDefaultsสำหรับการสร้างLinkAnnotationsที่มีธีมและแยกวิเคราะห์ HTML ด้วยลิงก์ที่มีธีม แต่ได้เพิ่มTextLinkStylesคลาสที่อนุญาตให้จัดรูปแบบลิงก์เป็นพารามิเตอร์ไปยัง Text ที่ใช้ร่วมกันได้แทน (I31b93)
การแก้ไขข้อบกพร่อง
- แก้ไข Use Case เพิ่มเติมเมื่อเพิ่มตัวแก้ไขอินพุตของเคอร์เซอร์แบบไดนามิกระหว่างเหตุการณ์ 63e1504
เวอร์ชัน 1.7.0-alpha08
1 พฤษภาคม 2024
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.7.0-alpha08 เวอร์ชัน 1.7.0-alpha08 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มการรองรับการใช้งานรูปร่างที่เปลี่ยนแปลงได้
Shape#createOutlineตอนนี้จะสังเกตได้ภายในเลเยอร์กราฟิก ดังนั้นการอ่านค่าสถานะภายในจะทำให้เกิดการลบล้างเมื่อสถานะเปลี่ยนแปลง ซึ่งช่วยให้ภาพเคลื่อนไหวของรูปร่างมีประสิทธิภาพมากขึ้น (Id1629, b/326070216) - เปลี่ยนชื่อ
isPositionedByParentWithDirectManipulationเป็นintroducesFrameOfReferenceแล้ว โปรดทราบว่าตอนนี้การตั้งค่านี้มีผลตรงกันข้าม ซึ่งหมายความว่าโดยค่าเริ่มต้นLayoutCoordinatesส่วนใหญ่จะใช้เฟรมอ้างอิง และพร็อพเพอร์ตี้จะเป็นเท็จเมื่อวางไว้ภายใต้การจัดการโดยตรงเท่านั้น หากต้องการค้นหาตำแหน่งที่มีเฉพาะตำแหน่งที่แนะนำกรอบอ้างอิง ให้ใช้positionInLocalFrameOfReference(...)หรือpositionInLocalLookaheadFrameOfReferenceจากLookaheadScope(Ifc5f7) LookaheadScopeAPI มีความเสถียรแล้ว (I21507)- เปลี่ยน Lambda การดำเนินการสำหรับ
getScrollViewportLengthตามความคิดเห็นจากสภา API (Ibc74a) - อัปเดต
GraphicsLayerOutline API เพื่อใช้พารามิเตอร์แบบลอยแทนพารามิเตอร์แบบจำนวนเต็ม นำค่าUnsetOffset/UnsetSize IntSizeSentinel ออกเพื่อใช้ค่าคงที่ Unspecified ที่มีอยู่แล้วในคลาสอินไลน์ Offset และ Size ที่อิงตาม Float (I2fb03, b/333863462) - เมื่อแทรกอินพุตจากเมาส์ระหว่างการทดสอบ ตอนนี้
MouseInjectionScope.click(),MouseInjectionScope.doubleClick(),MouseInjectionScope.tripleClick(),MouseInjectionScope.longClick()จะยอมรับพารามิเตอร์button: MouseButtonเพื่อให้ใช้ได้ในวงกว้างมากขึ้น ค่าเริ่มต้นคือMouseButton.Primaryสำหรับทุกวิธี (I31a23, b/190493367, b/261439695) - เปลี่ยนชื่อ
onClickedเป็นonClickในLinkInteractionListenerแล้ว (Iaa35c) - เปลี่ยนชื่อ
TextInclusionStrategy.isInsideเป็นisIncludedทำให้Paragraph/MultiParagraph#getRangeForRect()ประเภทการแสดงผลไม่เป็นค่าว่าง (I51f26)
การแก้ไขข้อบกพร่อง
- แก้ไขการจับภาพหน้าจอแบบยาวสำหรับคอนเทนเนอร์ที่เลื่อนได้ด้วย
reverseScrolling=true(I7c59c)
การมีส่วนร่วมจากภายนอก
- เพิ่มการรองรับการดึงข้อมูลล่วงหน้าของรายการใน
LazyListsที่ซ้อนกัน (เช่นLazyColumnที่แสดงผลLazyRowsที่ซ้อนกัน) การเปลี่ยนแปลงนี้คาดว่าจะช่วยลดเฟรมหลุดระหว่างการเลื่อนสำหรับLazyListsเหล่านี้ การติดตั้งใช้งานเริ่มต้นคือการดึงข้อมูลล่วงหน้าของรายการที่ซ้อนกัน 2 รายการแรก แต่คุณควบคุมลักษณะการทำงานนี้ได้ด้วย APILazyLayoutPrefetchStrategy(nestedPrefetchItemCount)และLazyListPrefetchStrategy#onNestedPrefetchใหม่ (I51952)
เวอร์ชัน 1.7.0-alpha07
17 เมษายน 2024
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.7.0-alpha07 เวอร์ชัน 1.7.0-alpha07 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
ClickableTextมีการทำเครื่องหมายว่าเลิกใช้งานแล้ว หากต้องการเพิ่มลิงก์ไปยังข้อความ ให้สร้างAnnotatedStringที่มีLinkAnnotationที่สอดคล้องกับลิงก์ แล้วส่งAnnotatedStringนี้ไปยัง Text composable (I34d4b, b/323346994)- เปิดตัว
ViewConfiguration.HandwritingGestureLineMarginสำหรับท่าทางสัมผัสลายมือ รองรับท่าทางสัมผัสJoinOrSplitสำหรับBasicTextField(Ie6e13, b/325660505) FocusProperties.enterและFocusProperties.exitไม่ใช่ฟีเจอร์ทดลองอีกต่อไปFocusDirection.EnterและFocusDirection.Exitไม่ใช่ฟีเจอร์ทดลองอีกต่อไปFocusRequester.Cancelไม่ใช่เวอร์ชันทดลองอีกต่อไป (I461a1, b/261564106)- เมื่อค้นหาพิกัดเลย์เอาต์ ตอนนี้คุณสามารถใช้อาร์กิวเมนต์
excludeDirectManipulationOffsetเพื่อยกเว้นออฟเซ็ตที่ตั้งค่าโดยเลย์เอาต์หลักซึ่งวางองค์ประกอบย่อยโดยใช้Placeable.PlacementScope.withDirectManipulationPlacementในทำนองเดียวกัน ตอนนี้เลย์เอาต์ที่เปลี่ยนตำแหน่งขององค์ประกอบย่อยบ่อยๆ อาจวางองค์ประกอบย่อยโดยใช้withDirectManipulationPlacement(เช่น Scroll ซึ่งมีการติดตั้งใช้งานโดยค่าเริ่มต้น) ซึ่งจะช่วยให้approachLayoutภาพเคลื่อนไหวตามการชดเชยใช้งานได้ง่ายขึ้น เนื่องจากตอนนี้มีโอกาสที่จะแยกความแตกต่างระหว่างการชดเชยที่จะเคลื่อนไหวกับการชดเชยที่จะใช้โดยตรงเมื่อตัดสินใจที่จะเคลื่อนไหวแนวทางของตน (I60ec7) - เราได้นำแฟล็กฟีเจอร์สำหรับภาพหน้าจอยาวออกแล้ว (I28648, b/329128246)
LazyColumnจะแสดงผลส่วนหัวที่ไม่เคลื่อนที่ในภาพหน้าจอแบบยาวได้อย่างถูกต้องแล้ว (I8d239, b/329296635)NestedScrollแหล่งที่มา Drag และ Fling จะถูกแทนที่ด้วยUserInputและSideEffectเพื่อรองรับคำจำกัดความที่ขยายออกไปของแหล่งที่มาเหล่านี้ ซึ่งตอนนี้รวมถึงภาพเคลื่อนไหว (Side Effect) และล้อเมาส์และคีย์บอร์ด (UserInput) (I40579)ApproachLayoutModifierNodeและModifier.approachLayoutมีความเสถียรแล้ว โดยมีisMeasurementApproachInProgress()และisPlacementApproachInProgress()ใหม่มาแทนที่isMeasurementApproachComplete()และisPlacementApproachComplete()ตามลำดับ- นำตัวแก้ไข
intermediateLayoutที่เลิกใช้งานแล้วออก (I3e91c) - เปลี่ยนชื่อ
GraphicsLayer#buildLayerเป็น record เพื่อให้สอดคล้องกับเมธอด begin/endRecording ของ API ที่มี Displaylist เป็นข้อมูลสำรอง เช่นRenderNodeและ Picture - อัปเดต
rememberGraphicsLayerเพื่อใช้ประโยชน์จากrememberObserver(I312c1, b/288494724, b/330758155) UrlAnnotationเลิกใช้งานแล้ว โปรดใช้LinkAnnotation.Urlแทน หากใช้การจัดธีม Material ให้ใช้ออบเจ็กต์TextDefaultsเพื่อสร้างคำอธิบายประกอบที่มีการจัดธีม Material (I8d180, b/323346545)- ลิงก์ข้อความมีตัวเลือกการจัดรูปแบบสถานะที่กดนอกเหนือจากการจัดรูปแบบปกติ การวางเมาส์ และการโฟกัส (I5f864, b/139312671)
- เปลี่ยนชื่อ
String.parseAsHtmlเป็นAnnotatedString.Companion.fromHtmlแล้ว (I43dcd) - เพิ่มอาร์กิวเมนต์การจัดรูปแบบ (
linkStyle,focusedLinkStyle,hoveredLinkStyle) และเครื่องมือตรวจหาการโต้ตอบลิงก์ไปยังเมธอดparseAsHtmlเมื่อแยกวิเคราะห์สตริงที่ติดแท็ก HTML ด้วยแท็ก<a>เมธอดจะสร้างLinkAnnotation.Urlสำหรับแท็กดังกล่าวแต่ละแท็ก และส่งออบเจ็กต์การจัดรูปแบบและเครื่องมือฟังการโต้ตอบลิงก์ไปยังคำอธิบายประกอบแต่ละรายการ (I7c977) - ตอนนี้
LinkAnnotationรับอาร์กิวเมนต์การจัดรูปแบบตามสถานะและLinkInteractionListenerแล้ว เพิ่มคำอธิบายประกอบนี้ลงในAnnotatedStringเพื่อรับไฮเปอร์ลิงก์ การส่งfocusedStateและ/หรือhoveredStateจะช่วยให้คุณกำหนดconfigurationภาพสำหรับลิงก์เมื่อมีการโฟกัสและ/หรือวางเมาส์เหนือลิงก์ได้ (I81ce4, b/139312671) ImeOptions.hintLocalesจะไม่เป็นค่าว่างอีกต่อไป หากต้องการส่งรายการภาษาที่ว่างเปล่า โปรดใช้LocaleList.Empty(Ic5bc4)
การแก้ไขข้อบกพร่อง
- จัดการข้อมูลเหตุการณ์อินพุตย้อนหลังที่ไม่ถูกต้อง/เสียหายอย่างเหมาะสม (ไม่สนใจข้อมูลออฟเซ็ตที่ไม่ถูกต้อง)
- แก้ไขเหตุการณ์ของเคอร์เซอร์ที่ไม่คาดคิดเมื่อมีการเพิ่มตัวแก้ไขอินพุตของเคอร์เซอร์แบบไดนามิกก่อนตัวแก้ไขอินพุตของเคอร์เซอร์อื่นในระหว่างสตรีมเหตุการณ์อินพุตของเคอร์เซอร์ที่ใช้งานอยู่ (เช่น ระหว่างการวางเมาส์และการวางเมาส์ออก [เมาส์/สไตลัส])
เวอร์ชัน 1.7.0-alpha06
3 เมษายน 2024
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.7.0-alpha06 เวอร์ชัน 1.7.0-alpha06 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เพิ่ม
parseAsHtmlเมธอดสำหรับสตริงที่มีสไตล์ ซึ่งช่วยให้แปลงสตริงที่ทำเครื่องหมายด้วยแท็ก HTML เป็นAnnotatedStringได้ โปรดทราบว่าระบบไม่รองรับแท็กบางแท็ก เช่น คุณยังแสดงรายการหัวข้อย่อยไม่ได้ (I84d3d, I30626, b/139326648) - ใช้การรองรับแบบทดลองสำหรับภาพหน้าจอยาวในคอนเทนเนอร์เลื่อนของ Compose โดยใช้ Android API อย่างเป็นทางการ (
ScrollCaptureCallback) ฟีเจอร์นี้เป็นเวอร์ชันทดลองและอาจยังจัดการบางกรณีได้ไม่ถูกต้อง ด้วยเหตุนี้ ฟีเจอร์นี้จึงปิดใช้อยู่โดยค่าเริ่มต้นในขณะนี้ หากต้องการเลือกใช้ ให้ตั้งค่า FlagComposeFeatureFlag_LongScreenshotsEnabledเป็น true (I2b055, b/329296471)
การเปลี่ยนแปลง API
- เปลี่ยน
fun ClipEntry.getMetadata()เป็นval ClipEntry.clipMetadataแล้ว (I50155) - นำฟังก์ชัน
ClipboardManager.getClipMetadataและClipboardManager.hasClipออกแล้ว โปรดใช้clipEntry.getMetadata()เพื่ออ่านข้อมูลเมตาของรายการคลิปปัจจุบัน นอกจากนี้ ให้ตรวจสอบผลลัพธ์ของClipboardManager.getClipว่าเป็นค่าว่างหรือไม่ เพื่อดูว่าคลิปบอร์ดมีคลิปปัจจุบันหรือไม่ (I50498) - ตอนนี้คุณส่งออบเจ็กต์
GraphicsLayerไปยังฟังก์ชันplaceable.placeWithLayer()ได้แล้ว (I1b22f) - ตอนนี้
ClipboardManager.setClipยอมรับค่า Null เพื่อล้างคลิปบอร์ดได้แล้ว (I7d2e9) - เพิ่มรหัสทรัพยากรเพื่อช่วยในการซ่อนมุมมองที่ใช้เป็นรายละเอียดการติดตั้งใช้งานภายในเครื่องมือสร้าง (I99531)
- เพิ่มเมธอด
GraphicsLayer#toImageBitmapเพื่อรองรับการแสดงผลเนื้อหาของบิตแมปเป็นGraphicsLayerนี่คือการดำเนินการเรนเดอร์ที่เร่งด้วยฮาร์ดแวร์ในระดับ API 22 ขึ้นไป (รวม) ซึ่งรองรับอุปกรณ์ Android ทั้งหมดกว่า 99% ใน Android API ระดับ 21 ระบบจะกลับไปใช้การแสดงผลซอฟต์แวร์ (I9e114) - เมธอดช่วยในการแปลง
RectFของ Android เป็นComposeRect(I39925, b/325660505) - ตอนนี้
KeyboardOptionsพารามิเตอร์ทั้งหมดมีค่า "ไม่ได้ระบุ" เป็นค่าเริ่มต้น เพิ่มKeyboardOptions.mergeแล้ว - เปลี่ยนชื่อ
KeyboardOptions.autoCorrectเป็นautoCorrectEnabledและทำให้เป็นค่า Null ได้ ซึ่งค่า Null จะบ่งบอกว่าไม่ได้ระบุค่า (Ia8ba0, b/295951492) BasicTextField(state)และBasicSecureTextFieldจะใช้KeyboardActionHandlerแทนKeyboardActionsในการประมวลผลการดำเนินการที่แป้นพิมพ์เสมือนทำ (I58dda)
เวอร์ชัน 1.7.0-alpha05
20 มีนาคม 2024
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.7.0-alpha05 เวอร์ชัน 1.7.0-alpha05 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เปิดตัว
GraphicsLayerAPI ใหม่เพื่อบันทึกคำสั่งการวาดในรายการที่แสดง รวมถึงพร็อพเพอร์ตี้เพิ่มเติมที่มีผลต่อการแสดงผลของรายการที่แสดง ซึ่งจะช่วยกำหนดขอบเขตการแยกเพื่อแบ่งฉากที่ซับซ้อนออกเป็นชิ้นเล็กๆ ที่อัปเดตแยกกันได้โดยไม่ต้องสร้างฉากทั้งหมดขึ้นมาใหม่ การเปลี่ยนรูปแบบที่ทำกับGraphicsLayerสามารถทำได้โดยไม่ต้องบันทึกรายการแสดงซ้ำGraphicsLayerอนุญาตให้แสดงเนื้อหาที่ประกอบได้ในที่อื่นๆ และมีประโยชน์ในกรณีการใช้งานแบบภาพเคลื่อนไหวที่คาดว่าจะแสดงเนื้อหาในฉากต่างๆModifier.graphicsLayer
การเปลี่ยนแปลง API
GraphicsLayer.draw(Canvas)ไม่ใช่ API สาธารณะอีกต่อไป โปรดใช้ฟังก์ชันส่วนขยายDrawScope.drawLayer(GraphicsLayer)แทนเพื่อวาดเลเยอร์ (I7a7c0)- แยก
restrictedConstraints()เป็น 2 วิธี ได้แก่fitPrioritizingWidth()และfitPrioritizingHeight()(I6d7fd) - เปิดตัว
HardwareCanvasสตับสำหรับการใช้งาน Android L (I1c3b5, b/288494724) - อัปเดตเฟรมเวิร์ก Compose เพื่อแสดง
GraphicsContextCompositionLocal พร้อมกับการอัปเดต OwnerDelegateableNodeและการติดตั้งใช้งานdrawWithCacheModifier เพื่อแสดงสิทธิ์เข้าถึงGraphicsContextสำหรับการเข้าถึงที่กำหนดขอบเขตซึ่งจะล้างข้อมูลอินสแตนซ์GraphicsLayerโดยอัตโนมัติเมื่อมีการลบ Modifier (I64a2f, b/288494724) - เปิดตัว
InterceptPlatformTextInputเพื่อช่วยเขียนการทดสอบที่เกี่ยวข้องกับ IME ระดับต่ำและ Use Case อื่นๆ ของ IME ระดับต่ำPlatformTextInputTestOverrideเลิกใช้งานแล้ว (I862ed, b/322680547) - เพิ่มฟังก์ชันส่วนขยาย
GraphicsLayer.setOutline(Outline)แล้ว (Ib81f4) - เปิดตัวตัวสร้างฟังก์ชัน
GraphicsContextเพื่อสร้าง Factory สำหรับสร้างอินสแตนซ์GraphicsLayer(Ib98d6, b/288494724) - เปิดเผย
GraphicsLayerAPI เพื่อให้ความยืดหยุ่นที่นักพัฒนาซอฟต์แวร์กำหนดในการบันทึกคำสั่งการวาดภาพที่สามารถใช้ในการวาดที่อื่น และยังใช้เอฟเฟกต์ภาพต่างๆ กับผลลัพธ์สุดท้ายได้อีกด้วย (I80245, b/288494724) - ขอแนะนำ
Paragraph#getRangeForRectซึ่งจะแสดงผลช่วงของข้อความที่ครอบคลุมพื้นที่สี่เหลี่ยมที่กำหนด (Iee516, b/325660505) - นำการลบล้างการทดสอบของ
BasicTextที่มีอาร์กิวเมนต์onLinkClickedออกแล้ว เราจะเปิดตัว API ที่จะมาแทนที่การรองรับไฮเปอร์ลิงก์ในอนาคต (I107d5)
การแก้ไขข้อบกพร่อง
- เพิ่มคำจำกัดความ API ของ
GraphicsLayerexpect/actual เพื่อรองรับการบันทึกและเล่นซ้ำคำสั่งการวาดภาพพร้อมเอฟเฟกต์ภาพและการเปลี่ยนรูปแบบการคอมโพสิตที่ไม่บังคับ เปิดตัวอินเทอร์เฟซGraphicsContextเพื่อเก็บการอ้างอิงกราฟิก รวมถึงการสร้างและการจัดการอินสแตนซ์GraphicsLayer(I4a8d6, b/288494724) - แก้ไขปัญหาการทำงานร่วมกันกับการค้นหาโฟกัส 1 มิติ ซึ่งโฟกัสจะติดอยู่ภายใน
ComposeViewที่ฝังอยู่ระหว่างมุมมองอื่นๆ (I08fd4)
การมีส่วนร่วมจากภายนอก
LocalLifecycleOwnerย้ายจาก Compose UI ไปยังlifecycle-runtime-composeเพื่อให้ใช้ API ตัวช่วยที่อิงตาม Compose นอก Compose UI ได้ ขอขอบคุณ Jake Wharton สำหรับการมีส่วนร่วม (I6c41b, b/328263448)- แสดงพร็อพเพอร์ตี้การลอยตัวของอคติอย่างสม่ำเสมอในประเภทการจัดแนวตามอคติทั้งหมด (I69f0f, b/328088992)
เวอร์ชัน 1.7.0-alpha04
6 มีนาคม 2024
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.7.0-alpha04 เวอร์ชัน 1.7.0-alpha04 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- รองรับฟีเจอร์การเขียนด้วยลายมือโดยใช้สไตลัสสำหรับ BasicTextField2 ในอุปกรณ์ที่ใช้ Android U ขึ้นไป (I002e4)
- ใน CL นี้ เราจะเพิ่ม
GetScrollViewportLengthการดำเนินการเชิงความหมายเพื่อให้เราสามารถส่งข้อมูลเกี่ยวกับคอมโพเนนต์ที่กำลังเลื่อนใน Compose ไปยังระบบ A11y ได้ CL นี้ยังใช้การใช้งานพร็อพเพอร์ตี้นี้ในรายการที่เลื่อนได้ของ Foundation ด้วย (Ic5fa2) FocusRequester.createRefsตอนนี้เสถียรแล้ว (I4d92c, b/261436820)- เปิดตัว
DelegatableNode.requireView()เพื่อให้โหนดตัวแก้ไขรับViewของ Android ปัจจุบันได้โดยไม่ต้องอ่าน CompositionLocal (I40768) - API ใหม่
Path.reverse()เพื่อย้อนกลับทิศทางของเส้นทาง (I36348) - เพิ่ม
hintLocalesลงในKeyboardOptionsเพื่อให้TextFieldsสามารถแนะนำ IME ด้วยภาษาเฉพาะเพื่อตั้งค่าภาษาที่ต้องการล่วงหน้า - เปิดเผยพร็อพเพอร์ตี้
platformLocaleจากLocaleที่แสดงผลออบเจ็กต์แพลตฟอร์มพื้นฐาน เช่นjava.util.Locale(I921c6)
เวอร์ชัน 1.7.0-alpha03
21 กุมภาพันธ์ 2024
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.7.0-alpha03 เวอร์ชัน 1.7.0-alpha03 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- ขอแนะนำ
ContextualFlowRowและFlowRow/Columnที่ปรับปรุงแล้วด้วย MaxLines และ Overflow เรายินดีที่จะประกาศการปรับปรุงFlowRowและFlowColumnเวอร์ชันทดลอง ซึ่งตอนนี้รองรับ maxLines และ overflow แล้ว พร้อมกับการเปิดตัวContextualFlowRowและContextualFlowColumnการอัปเดตนี้ออกแบบมาเพื่อให้คอมโพเนนต์ที่มีประสิทธิภาพสูงสุด โดยContextualFlow*เหมาะสำหรับสินค้าจำนวนมากที่ใช้การกำหนดค่าmaxLinesขนาดเล็กและปุ่มดูเพิ่มเติมแบบไดนามิก +N ส่วนFlowRowและFlowColumnเหมาะสำหรับสินค้าจำนวนน้อย ซึ่งมีสินค้าน้อยกว่า 100 รายการ สำคัญ: หากต้องการคงลักษณะการทำงานที่มีอยู่เดิมในFlowRowหรือFlowColumnที่รายการทั้งหมดประกอบขึ้นโดยไม่คำนึงว่ารายการนั้นๆ จะพอดีกับแกนไขว้สูงสุดหรือไม่ ให้ตั้งค่าoverflowเป็นFlowRowOverflow.VisibleหรือFlowColumnOverflow.Visibleในระหว่างการเริ่มต้น ดูตัวอย่างการใช้งานฟีเจอร์ใหม่เหล่านี้ได้ที่ContextualFlowRowSampleและFlowRowSample(Ib9135, b/293577082) - เพิ่มพร็อพเพอร์ตี้
maxTextLengthsemantics ที่ควรตั้งค่าในช่องข้อความซึ่งกรองจำนวนอักขระสูงสุดที่อนุญาต (I24d9f, b/170648072) - เราเลิกใช้งานเครื่องหุ้ม
Modifier.inspectableแล้ว API นี้จะสร้างการลบล้างตัวแก้ไขมากกว่าที่จำเป็น จึงไม่แนะนำให้ใช้ เราขอแนะนำให้นักพัฒนาแอปใช้เมธอดinspectableProperties()ในModifierNodeElementหากต้องการแสดงพร็อพเพอร์ตี้ตัวแก้ไขต่อเครื่องมือ (Ib3236) - เครื่องมือสร้างใหม่สำหรับ
PopupPropertiesซึ่งช่วยให้ควบคุมแฟล็กWindowManager.LayoutParamsได้อย่างเต็มที่ (Ibb33e, b/312485503) - เปิดตัว
DelegatableNode.requireLayoutCoordinates()เพื่อเป็นวิธีรับModifier.NodeLayoutCoordinatesปัจจุบันโดยไม่ต้องลบล้างonPlacedและจัดเก็บพิกัดในพร็อพเพอร์ตี้ด้วยตนเอง (Ia8657) - เปิดตัว
DelegatableNode.currentLayoutCoordinatesเพื่อเป็นวิธีรับModifier.NodeLayoutCoordinatesปัจจุบันโดยไม่ต้องลบล้างonPlacedและจัดเก็บพิกัดในพร็อพเพอร์ตี้ด้วยตนเอง (Iaebaa) BasicTextField2และ API ที่เกี่ยวข้องในแพ็กเกจandroidx.compose.foundation.text2จะย้ายไปที่androidx.compose.foundation.text(I9f635)- เพิ่ม
ApproachLayoutModifierNodeAPI ใหม่เพื่อรองรับการสร้างตรรกะแนวทางที่กำหนดเองในโหนดตัวแก้ไขที่ชัดเจน นอกจากนี้ ยังได้เพิ่มDeferredTargetAnimationAPI แบบทดลองใช้ใหม่สำหรับภาพเคลื่อนไหวที่ไม่ทราบเป้าหมายเมื่อสร้างอินสแตนซ์ (I60745) PathAPI ใหม่สำหรับค้นหาทิศทางของเส้นทางและดึงเส้นชั้นความสูงจากPath(I63d04)- เพิ่ม
PathHitTestและPath.contains(Offset)เพื่อตรวจสอบว่าPathมีจุดที่เฉพาะเจาะจงหรือไม่ (I3b218) - ตอนนี้
TextLayoutResultแสดงเมธอดgetLineBaseline(lineIndex)แล้ว ซึ่งช่วยให้อ่านบรรทัดฐานของข้อความบรรทัดใดก็ได้ นอกเหนือจากพร็อพเพอร์ตี้ความสะดวกที่มีอยู่firstBaselineและlastBaseline(Ide4e8, b/237428541) - เพิ่มวิธีเปรียบเทียบเฉพาะคำอธิบายประกอบของ
AnnotatedStrings2 รายการ (I32659)
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาความเข้ากันได้แบบย้อนหลังกับ
SemanticsPropertyReceiver.performImeActionและSemanticsActions.PerformImeAction(Id0528, b/322269946)
เวอร์ชัน 1.7.0-alpha02
7 กุมภาพันธ์ 2024
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.7.0-alpha02 เวอร์ชัน 1.7.0-alpha02 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- แก้ไขปัญหาความเข้ากันได้ของไบนารีกับ
SemanticsPropertyReceiver.performImeActionแล้ว (I65865, b/322269946) PopupPropertiesconstructor ที่ใช้พารามิเตอร์usePlatformDefaultWidthไม่ใช่ฟีเจอร์ทดลองอีกต่อไป (I8f8d2)- เพิ่มการโอเวอร์โหลดของ
ComposeTestRule.waitUntilที่ใช้คำอธิบายสตริงของเงื่อนไขที่จะรวมไว้ในข้อความหมดเวลา (I9413e) - API ความหมายใหม่
unset()เพื่อนำพร็อพเพอร์ตี้ความหมายที่เพิ่มในเชนตัวแก้ไขเดียวกันออก พร็อพเพอร์ตี้ความหมายใหม่isOpaque(I8c583, b/317966058, b/246056649) - นำ
originalEventPositionออกจากเมธอดคัดลอกใน API สาธารณะของPointerInputChange(I7bead)
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องด้านการช่วยเหลือพิเศษที่อนุญาตให้คลิกองค์ประกอบที่ไม่ใช่แท็บและไม่ใช่ปุ่มตัวเลือกได้เมื่อเลือก (I2181c)
VelocityTrackerจะมีการแก้ไขเพื่อเพิ่มคะแนนโดยค่าเริ่มต้น คุณยังคงปิดการแก้ไขได้โดยตั้งค่าVelocityTrackerAddPointsFixเป็น false หากพบปัญหา (Ib3877, b/269487059)- แก้ไขความไม่เข้ากันของไบนารีแบบย้อนหลังใน
TextStyleและParagraphStyle(I179f0, b/320819734)
การมีส่วนร่วมจากภายนอก
- เพิ่ม
DialogPropertiesตัวสร้างใหม่ที่ไม่มีพารามิเตอร์เฉพาะแพลตฟอร์ม (I45829) - เพิ่ม
PopupPropertiesตัวสร้างใหม่ที่ไม่มีพารามิเตอร์เฉพาะแพลตฟอร์ม (I9a038)
เวอร์ชัน 1.7.0-alpha01
24 มกราคม 2024
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.7.0-alpha01 เวอร์ชัน 1.7.0-alpha01 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- ขยาย
ClipboardManagerโดยเพิ่มClipEntryและClipMetadataเพื่อรองรับเนื้อหาที่กำหนดเอง เช่น รูปภาพ - เพิ่ม
DeviceConfigurationOverrideAPI ไปยังui-testเพื่ออนุญาตให้ลบล้างลักษณะการทำงานของเนื้อหาที่อยู่ระหว่างการทดสอบในเครื่อง เช่น ระบุขนาด ภาษา ทิศทางเลย์เอาต์ ขนาดแบบอักษร หรือธีมที่ใช้ได้
เวอร์ชัน 1.6
เวอร์ชัน 1.6.8
12 มิถุนายน 2024
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.6.8 เวอร์ชัน 1.6.8 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขความไม่สอดคล้องกันในการปรับขนาดแบบอักษรเมื่อการปรับขนาดแบบอักษรน้อยกว่าตารางที่กำหนดต่ำสุด ในกรณีนี้ เราจะประมาณค่าระหว่างสเกลเชิงเส้น 1 เท่ากับตารางที่กำหนดต่ำสุด เพื่อให้ขนาดแบบอักษรเพิ่มขึ้นอย่างต่อเนื่องเมื่อสเกลเพิ่มขึ้น (Icbae3)
เวอร์ชัน 1.6.7
1 พฤษภาคม 2024
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.6.7 เวอร์ชัน 1.6.7 มีการเปลี่ยนแปลงเหล่านี้
เวอร์ชัน 1.6.6
17 เมษายน 2024
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.6.6 เวอร์ชัน 1.6.6 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไข
BasicTextFieldข้อขัดข้องที่เกิดขึ้นไม่บ่อยนัก
เวอร์ชัน 1.6.5
3 เมษายน 2024
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.6.5 เวอร์ชัน 1.6.5 มีการเปลี่ยนแปลงเหล่านี้
เวอร์ชัน 1.6.4
20 มีนาคม 2024
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.6.4 เวอร์ชัน 1.6.4 มีการเปลี่ยนแปลงเหล่านี้
เวอร์ชัน 1.6.3
6 มีนาคม 2024
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.6.3 เวอร์ชัน 1.6.3 มีการคอมมิตเหล่านี้
เวอร์ชัน 1.6.2
21 กุมภาพันธ์ 2024
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.6.2 เวอร์ชัน 1.6.2 มีคอมมิตเหล่านี้
เวอร์ชัน 1.6.1
7 กุมภาพันธ์ 2024
androidx.compose.ui:ui-*:1.6.1 เปิดตัวแล้ว เวอร์ชัน 1.6.1 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาความเข้ากันได้แบบย้อนหลังกับ
SemanticsPropertyReceiver.performImeActionและSemanticsActions.PerformImeAction(Ie0bb2, b/322269946) - ตอนนี้เลย์เอาต์จะแสดงข้อผิดพลาดขณะวัดเมื่อเลย์เอาต์ใดเลย์เอาต์หนึ่งแสดงขนาดที่ใหญ่ผิดปกติ ข้อผิดพลาดประเภทนี้มักเกิดขึ้นเมื่อการวัดใช้ข้อจํากัดสูงสุดโดยตรงโดยไม่ได้ตรวจสอบ
Constraints.Infinityการตรวจสอบนี้จะช่วยให้นักพัฒนาแอปพบปัญหาเกี่ยวกับเลย์เอาต์ที่มีขนาดไม่ถูกต้องแทนที่จะเป็นเลย์เอาต์ที่มีปัญหา (I339a9)
เวอร์ชัน 1.6.0
24 มกราคม 2024
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.6.0 เวอร์ชัน 1.6.0 มีคอมมิตเหล่านี้
เวอร์ชัน 1.6.0-rc01
10 มกราคม 2024
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.6.0-rc01 เวอร์ชัน 1.6.0-rc01 มีคอมมิตต่อไปนี้
การแก้ไขข้อบกพร่อง
- การใช้กราฟิกแบบเวกเตอร์ที่เพิ่มประสิทธิภาพเพื่อปรับปรุงประสิทธิภาพโดยลดการจัดองค์ประกอบใหม่เพิ่มเติม
เวอร์ชัน 1.6.0-beta03
13 ธันวาคม 2023
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.6.0-beta03 เวอร์ชัน 1.6.0-beta03 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- ตอนนี้คุณสามารถแยก
LayoutCoordinatesออกได้โดยไม่ต้องแยกโหนด ป้องกันไม่ให้เกิดเหตุการณ์ดังกล่าวในเครื่องมือตรวจสอบเลย์เอาต์ของ Compose (If693)
การแก้ไขข้อบกพร่อง
- ตอนนี้
PlatformImeOptionsเป็นคลาสที่เฉพาะเจาะจงแทนที่จะเป็นอินเทอร์เฟซ (If40a4) - แก้ไขการจัดองค์ประกอบใหม่ของสตรีมดาวน์สตรีมเพิ่มเติมที่เกิดจาก
LocalSoftwareKeyboardControllerและLocalTextInputServiceที่ได้รับค่าใหม่ทุกครั้งที่มีการจัดองค์ประกอบใหม่ของรูท (I42190, b/310510985)
เวอร์ชัน 1.6.0-beta02
29 พฤศจิกายน 2023
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.6.0-beta02 เวอร์ชัน 1.6.0-beta02 มีคอมมิตเหล่านี้
เวอร์ชัน 1.6.0-beta01
15 พฤศจิกายน 2023
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*: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ลงในตัวแก้ไขdragAndDropTargetเพื่อยอมรับจากเซสชันการลากและวาง Lambda นี้จะแสดงผลDragAndDropTargetที่ใช้งานได้หากสนใจเซสชันการลากและวาง เราได้แทนที่ Lambda อื่นๆ สำหรับการประมวลผลเหตุการณ์การลากด้วย Lambda นี้ และเพิ่มฟังก์ชัน FactoryDragAndDropTargetเพื่อรับจากเซสชันการลากและวาง (Iebf3a)นำ
DragAndDropInfoออกจากประเภทDragAndDropModifierNode.dragตอนนี้ใช้พารามิเตอร์สำหรับ Lambda ของtransferData, ขนาดการตกแต่ง และการลากการตกแต่งDrawScopeDragAndDropTargetมีเมธอดสำหรับเหตุการณ์การลากและวางที่เฉพาะเจาะจงแทนที่จะเป็นเมธอดนามธรรมเดียวonDragAndDropEventในฟังก์ชัน Factory สำหรับDragAndDropModifierNodeได้เปลี่ยนชื่อเป็นonDragAndDropStartเพื่อสื่อสารให้ดียิ่งขึ้นว่าDragAndDropTargetที่ระบุใช้ได้เฉพาะเซสชันการลากและวางที่กำหนดเท่านั้นระบบได้นำ
DragAndDropEventTypeออกแล้ว (I645b1)เปลี่ยนชื่อ
PlatformTextInputModifierNode.runTextInputSessionเป็นestablishTextInputSessionแล้ว (I03cd0)ปรับปรุงชื่อ API ของโหนดที่เดินหน้าได้เพื่อให้เข้าใจได้ง่ายขึ้น (Ia4474)
แทนที่
OriginalTextด้วยTextSubstitution(Ifa5a8)เปลี่ยนชื่อ
PlatformTextInputModifierNode.textInputSessionเป็นrunTextInputSessionแล้ว (Ie9c6b)ระบบจะถือว่าองค์ประกอบย่อยของ
SubcomposeLayout(และเลย์เอาต์ที่คล้ายกัน เช่นLazyColumnที่อิงตามSubcomposeLayout) ซึ่งเก็บไว้เพื่อนำกลับมาใช้ใหม่ในอนาคตนั้นปิดใช้งานแล้ว เราได้เปิดตัวassertIsDeactivated()test API ใหม่เพื่อทดสอบโหนดดังกล่าว ส่วน API ทดสอบอื่นๆ จะกรองโหนดที่ปิดใช้งานออกโดยค่าเริ่มต้น (I2ef84, b/187188981)นำ
FocusDirection.InและFocusDirection.Outออกแล้ว ให้ใช้FocusDirection.EnterและFocusDirection.Exitแทน (I2f660)ตอนนี้ Material
SwipeToRevealAPI (สำหรับ Card และชิป) ใช้ API ที่อิงตามช่อง (ตามที่ Compose แนะนำ) แทนอินสแตนซ์ที่อิงตามคลาสข้อมูลเพื่อสร้างช่องเหล่านั้น นี่เป็นการเปลี่ยนแปลงที่ทำให้เกิดข้อขัดข้อง โปรดดูการสาธิตและโค้ดตัวอย่างเพื่อดูตัวอย่างวิธีใช้ API ใหม่ (Ia8943)เลิกใช้งานตัวสร้าง
FontStyle(int)แล้ว โปรดใช้FontStyle.NormalหรือFontStyle.Italicแทน (I66610)เปลี่ยนชื่ออินเทอร์เฟซ
FontScalableเป็นFontScaling(Ie804a)
การแก้ไขข้อบกพร่อง
SoftwareKeyboardController.show()จะไม่แสดงแป้นพิมพ์เสมือนอีกต่อไปหากไม่มีการโฟกัสที่โปรแกรมแก้ไขข้อความ (I2165a, b/301477279)- ตอนนี้ระบบจะละเว้นเหตุการณ์กดขึ้นของคีย์ฮาร์ดแวร์สำหรับคีย์ที่ยังไม่ได้รับเหตุการณ์กดลงในมุมมองการเขียนเดียวกัน (Ib37b4, b/305518328)
- เพิ่มการรองรับโปรแกรมแสดงผลสำหรับ Sweep Gradient ใน
ArcLine(I4d5bb) - ใช้ equals และ hashcode สำหรับ
PageSize.Fixed(Ie3ede, b/300134276) - แก้ไขปัญหาความเข้ากันได้ของไบนารีกับการเปลี่ยนแปลง Window Inset (Iee695)
- นำเลเยอร์หลักของ Material ออกสำหรับชิป/ปุ่ม Material3 เนื่องจาก Microbenchmark แสดงให้เห็นว่าไม่มีเลเยอร์ดังกล่าวจะให้ประสิทธิภาพที่ดีกว่า (I55555)
TestDispatchers ที่ส่งเป็นeffectContextเพื่อทดสอบ Compose จะใช้ในการสร้างการทดสอบและกรอบนาฬิกา (Ia7178)
เวอร์ชัน 1.6.0-alpha08
18 ตุลาคม 2023
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.6.0-alpha08 เวอร์ชัน 1.6.0-alpha08 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
Modifier.dragAndDrawSourceได้เปลี่ยนชื่อ LambdaonDrawDragShadowเป็นdrawDragDecorationและDragAndDropInfoได้เปลี่ยนชื่อพารามิเตอร์ขนาดเป็นdragDecorationSize(Id0e30, b/303904810)- แนะนำ
SemanticsNodeInteraction.isDisplayed()และSemanticsNodeInteraction.isNotDisplayed()เพื่อตรวจสอบว่าโหนดที่ตรงกันมองเห็นได้หรือไม่โดยไม่ต้องยืนยัน (I2c196, b/302100809) - เปิดตัวค่า
Unspecifiedพิเศษสำหรับฟิลด์TextAlign,TextDirection,HyphensและLineBreakของParagraphTextStyleเพื่อแทนที่nullเนื่องจากคลาสเหล่านี้เป็นคลาสอินไลน์ การแทนที่ค่าที่อนุญาตให้เป็น Null ด้วย Unspecified จะช่วยหลีกเลี่ยงการ Boxing ประเภทดั้งเดิมได้ เราได้อัปเดตตัวสร้าง ตัวรับ และเมธอดอื่นๆ ในTextStyleและรูปแบบย่อหน้าให้ยอมรับพารามิเตอร์ที่กล่าวถึงเป็นประเภทที่ไม่ใช่ Null (I4197e, b/299490814) - เพิ่ม
GoogleFontoverload สำหรับการอ่านGoogleFontจาก XML (If8f59) LoremIpsumPreviewParameterProviderเป็นชั้นเรียนแบบเปิด (I41bf5, b/266918816, b/300116360)
การแก้ไขข้อบกพร่อง
- ตอนนี้
FontFamilyResolverใช้Dispatchers.Mainสำหรับโครูทีนการจัดการแคชแล้ว (Ie8dd9) AndroidViewBindingจะนำอินสแตนซ์Fragmentที่เพิ่มขึ้นโดยการใส่FragmentContainerViewในเลย์เอาต์เป็นส่วนหนึ่งของonReleaseออกพร้อมกันโดยใช้commitNow(แทนcommitที่ใช้ก่อนหน้านี้) ซึ่งจะช่วยแก้ไขปัญหาเกี่ยวกับวิธีการของ Live Edit ในการแทนที่คอมโพสิตเมื่อมีการเปลี่ยนแปลง (I58fbf)
เวอร์ชัน 1.6.0-alpha07
4 ตุลาคม 2023
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.6.0-alpha07 เวอร์ชัน 1.6.0-alpha07 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- เปิดตัว
PlatformTextInputMethodTestOverrideสำหรับการเขียนการทดสอบสำหรับโปรแกรมแก้ไขข้อความที่กำหนดเอง (Id159b) - เพิ่มตัวแก้ไข
dragAndDropSourceสำหรับเริ่มเซสชันการลากและวาง และตัวแก้ไขdragAndDropTargetสำหรับรับจากเซสชันการลากและวาง (Ib7828, b/286038936) - เพิ่มคอลเล็กชัน
ColorListและColorSetที่หลีกเลี่ยงการจัดสรร (I744bd) - เพิ่ม
DisableNonLinearFontScalingInComposeฟีเจอร์ชั่วคราวเพื่อปิดใช้การปรับขนาดแบบอักษรที่ไม่ใช่แบบเชิงเส้น ตั้งค่าDisableNonLinearFontScalingInCompose = trueในการทดสอบหากคุณต้องการเวลาในการล้างข้อมูล เราจะนำแฟล็กนี้ออกใน Compose 1.6.0-beta01 (Ic9486)
การแก้ไขข้อบกพร่อง
- การแยกวิเคราะห์เวกเตอร์ที่ถอนออกได้ XML ที่ได้รับการเพิ่มประสิทธิภาพ (Ibb015)
เวอร์ชัน 1.6.0-alpha06
20 กันยายน 2023
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.6.0-alpha06 เวอร์ชัน 1.6.0-alpha06 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- การเพิ่มประสิทธิภาพเพิ่มเติมสำหรับไอคอน Material (I3e08d)
- เพิ่มความสามารถในการเลื่อนขึ้น/ลงในโครงสร้างตัวแก้ไขเพื่อค้นหาโหนดที่คล้ายกัน (I2d234)
- เพิ่มการเรียกกลับ
onRestoreFailed()ไปยังตัวแก้ไขfocusRestorer()(Ie1d43) - เพิ่มคำอธิบายประกอบ androidx ลงใน Graphics API ต่างๆ เพื่อระบุ
ColorInt,FloatRange,IntRange,Sizeและอื่นๆ (Id65c8, b/290950582) - เพิ่ม
showSystemUi=trueลงในคำจำกัดความของPreviewScreenSizes(Ib61d3)
การเปลี่ยนแปลงพฤติกรรม
- ตอนนี้ Compose ใช้การปรับขนาดแบบอักษรแบบไม่เชิงเส้นเพื่อให้อ่านได้ง่ายขึ้นและเข้าถึงได้ดีขึ้น เมื่อการปรับขนาดแบบอักษร > 100% ในการตั้งค่าระบบ ข้อความขนาดเล็กจะเพิ่มขนาดตามปกติ แต่ข้อความที่มีขนาดใหญ่อยู่แล้วจะเพิ่มขนาดเพียงเล็กน้อย นอกจากนี้ ความสูงของบรรทัดที่กำหนดใน SP จะปรับโดยอัตโนมัติเพื่อให้สอดคล้องกับความสูงที่ตั้งใจไว้ที่ระดับการปรับขนาด 100% ดูข้อมูลเพิ่มเติมได้ที่แนวทางปฏิบัติแนะนำในการปรับขนาดแบบอักษร (I11518)
เวอร์ชัน 1.6.0-alpha05
6 กันยายน 2023
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.6.0-alpha05 เวอร์ชัน 1.6.0-alpha05 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- เปิดใช้การจับภาพเนื้อหาใน
AndroidComposeViewAccessibilityDelegateCompat(Ib2969) - ความเร็วในการปัดในคอมโพเนนต์ View เช่น
ScrollViewและRecyclerViewจะจำกัดไว้ที่ViewConfiguration.ScaledMaximumFlingVelocityตอนนี้ Compose มีmaximumFlingVelocityเวอร์ชันของตัวเองซึ่งตอนนี้ใช้กับDraggableแล้ว (Ibf974) - เพิ่มโครงสร้างเริ่มต้นเพื่อรองรับ API การลากและวางของแพลตฟอร์ม (If84ce)
- เพิ่ม
deviceIdลงในRotaryScrollEvent(Iba3bf) - อัปเดต
ui-toolingDevices API เพื่อรวมอุปกรณ์รุ่นใหม่กว่า (Ib25b4)
เวอร์ชัน 1.6.0-alpha04
23 สิงหาคม 2023
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.6.0-alpha04 เวอร์ชัน 1.6.0-alpha04 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มวิธีปิดใช้งาน
ReusableCompositionโดยนำการสังเกตการณ์ออกแต่ยังคงโหนดไว้ คุณเปิดใช้งานการเรียบเรียงที่ปิดใช้งานแล้วได้อีกครั้งโดยโทรหาsetContent(Ib7f31) - เพิ่มอินเทอร์เฟซ
ReusableCompositionสำหรับจัดการวงจรและการนำองค์ประกอบย่อยกลับมาใช้ซ้ำ (I812d1, b/252846775) Modifier.focusGroupได้รับการเลื่อนขั้นเป็น API ที่เสถียรแล้ว (I7ffa3)- เพิ่มคำอธิบายประกอบ androidx ลงใน Graphics API ต่างๆ เพื่อระบุ
ColorInt,FloatRange,IntRange,Sizeและอื่นๆ (I70487, b/290950582) - อัปเดต
ColorFilterAPI ให้มีประเภทคลาสย่อยที่เฉพาะเจาะจงเพื่อปรับปรุงความสามารถในการตรวจสอบพารามิเตอร์ (I5fe29) - เปิดตัวไลบรารี wear-tooling-preview เพื่อแสดงรายการอุปกรณ์ Wear ที่ใช้ได้ซึ่งใช้แสดงตัวอย่าง UI ได้ (Ib036e)
- สร้าง
FontScalableอินเทอร์เฟซเพื่อจัดการส่วนการปรับขนาดแบบอักษรของอินเทอร์เฟซความหนาแน่น (I2cf3f)
เวอร์ชัน 1.6.0-alpha03
9 สิงหาคม 2023
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.6.0-alpha03 เวอร์ชัน 1.6.0-alpha03 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- การเปลี่ยนฉากเข้า/ออกประเภทใหม่ที่ปรับขนาดเนื้อหาตามขนาดของคอนเทนเนอร์ที่เคลื่อนไหวระหว่างภาพเคลื่อนไหวเข้าและออก
LookaheadScopeตอนนี้ฟีเจอร์สนุกๆ และอินเทอร์เฟซที่ประกอบได้ก็เสถียรแล้ว (Ifb2ce) - เพิ่มการรองรับการกำหนดค่า
privateImeOptions(Idb772)
การแก้ไขข้อบกพร่อง
- ตอนนี้
PopupPositionProvider.calculatePositionจะอัปเดตตำแหน่งของป๊อปอัปโดยอัตโนมัติเมื่อมีการเปลี่ยนแปลงสถานะที่อ่านในการคำนวณ (I676a1, b/292257547) - แก้ไขช่องข้อความที่แสดงแป้นพิมพ์และแก้ไขได้เมื่อ
readOnlyเป็นจริง นอกจากนี้ ยังแก้ไขปัญหาที่แป้นพิมพ์ไม่แสดงเมื่อเปลี่ยนreadOnlyจากจริงเป็นเท็จขณะโฟกัส (I34a19, b/246909589) - การขยายการใช้การยืนยันส่วนกลางในการทดสอบ UI (I1f90d)
เวอร์ชัน 1.6.0-alpha02
26 กรกฎาคม 2023
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.6.0-alpha02 เวอร์ชัน 1.6.0-alpha02 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มอินเทอร์เฟซตัวระบุตำแหน่งบริการที่ผู้ใช้ Composition สามารถนำไปใช้ได้ ซึ่งจะช่วยให้การใช้งาน Composition ที่มอบสิทธิ์ให้การค้นหาบริการตัวแทน Composition อื่นไปยัง Composition เดิม ไม่ควรเรียกใช้โดยตรงและใช้เพื่อเปิดใช้การสร้าง API ทดสอบในรันไทม์ที่พบได้จากคอมโพสเซอร์เวอร์ชันที่ห่อหุ้มไว้ เช่น โมดูล UI (I296b9)
- ออกแบบ
PlatformTextInput*API ใหม่ทั้งหมด (I6c93a, b/274661182, b/267235947, b/277380808) SoftwareKeyboardControllerและLocalSoftwareKeyboardControllerไม่ใช่ฟีเจอร์ทดลองอีกต่อไป ตอนนี้LocalSoftwareKeyboardControllerเป็นCompositionLocalที่ถูกต้องแล้ว (I4c364)LookaheadLayoutและLookaheadLayoutScopeเลิกใช้งานแล้วใน 2-3 รุ่นที่ผ่านมา และตอนนี้ได้ถูกนำออกแล้ว API ที่ใช้แทนคือLookaheadScopeซึ่งใช้ได้กับทุกเลย์เอาต์ (I12ac3)- เพิ่ม
SemanticsNodeInteraction.requestFocusเพื่อให้เป็นวิธีที่สะดวกและค้นพบได้ง่ายขึ้นในการขอโฟกัสในการทดสอบ (Ie8722) - เพิ่ม API รุ่นทดลองสำหรับการลงทะเบียนการยืนยันส่วนกลาง เพื่อให้เฟรมเวิร์กการทดสอบใช้ในอนาคต (I12d77)
การแก้ไขข้อบกพร่อง
AndroidViewupdateการเรียกกลับครั้งแรกจะเลื่อนออกไปจนกว่าจะมีการแนบมุมมองแทนที่จะเรียกใช้เมื่อมีการใช้การจัดองค์ประกอบที่แนะนำAndroidViewซึ่งจะแก้ไขข้อบกพร่องที่ทำให้updateCallback ไม่ถูกต้องหากเอฟเฟกต์เปลี่ยนสถานะที่อ่านทันที (Ie9438, b/291094055)
เวอร์ชัน 1.6.0-alpha01
21 มิถุนายน 2023
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.6.0-alpha01 เวอร์ชัน 1.6.0-alpha01 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- รองรับการดูตัวอย่างใน
LazyListซึ่งจะช่วยให้LazyListในการส่งผ่านล่วงหน้าข้ามภาพเคลื่อนไหวใดๆ (เช่น ภาพเคลื่อนไหวการวางไอเทมAnimatedVisibilityฯลฯ) และคำนวณขนาดและตำแหน่งการส่งผ่านล่วงหน้าสำหรับองค์ประกอบย่อยทั้งหมดได้ หลังจากส่งผ่านล่วงหน้าแล้ว ลูกของLazyListจะเคลื่อนไหวได้อย่างอิสระตามความเป็นจริงที่เห็นในการส่งผ่านล่วงหน้า
การเปลี่ยนแปลงลักษณะการทำงาน: ตอนนี้ค่าเริ่มต้นของ includeFontPadding ใน Compose คือ false
ตอนนี้ includeFontPadding เป็นเท็จโดยค่าเริ่มต้น (21d806) ใน Compose
includeFontPadding เป็นแอตทริบิวต์เดิมที่ควบคุมว่าจะรวมการเว้นวรรคเพิ่มเติมที่ด้านบนของบรรทัดแรกและบรรทัดสุดท้ายของข้อความหรือไม่ เพื่อรองรับอักขระที่อาจขยายเหนือหรือใต้เส้นฐานของข้อความ
การอัปเดต Compose เวอร์ชันนี้จะแก้ไขวิธีแสดงข้อความทั้งหมดใน UI โดยการนำระยะเว้นเพิ่มเติมที่ด้านบนของบรรทัดแรกและบรรทัดสุดท้ายของข้อความทุกรายการที่คุณแสดงออก
การเปลี่ยนแปลงควรมีน้อยที่สุด ทั้งนี้ขึ้นอยู่กับข้อกำหนด UI และเมตริกแบบอักษรที่คุณใช้ อย่างไรก็ตาม คุณอาจพบอุปสรรคต่างๆ เช่น - การทดสอบภาพหน้าจอที่ใช้งานไม่ได้ แก้ไข UI หากจำเป็น และสร้างรูปภาพอ้างอิงใหม่ - ข้อความไม่ตรงกันเล็กน้อย นำระยะขอบเชิงลบที่กำหนดเองออก หรือเพิ่มระยะขอบหากจำเป็น
คุณเลือกใช้ includeFontPadding ได้โดยใช้ PlatformTextStyle สำหรับข้อความแต่ละรายการ
Text(
text = myText,
style = TextStyle(
lineHeight = 2.5.em,
platformStyle = PlatformTextStyle(
includeFontPadding = true/false
)
/* … */
)
)
คุณเลือกใช้ includeFontPadding สำหรับข้อความทั้งหมดได้โดยกำหนดค่ารูปแบบ Material โปรดทราบว่าชื่อพารามิเตอร์จะแตกต่างกันระหว่าง M2 กับ M3
val Typography = Typography(
body1 = TextStyle(
fontFamily = /* … */,
fontSize = /* … */,
platformStyle = PlatformTextStyle(
includeFontPadding = false
)
/* … */
)
)
MaterialTheme(
typography = Typography,
/* … */
)
ดูข้อมูลเพิ่มเติมเกี่ยวกับ Compose ได้includeFontPadding ในเอกสารประกอบสำหรับนักพัฒนาซอฟต์แวร์และบล็อกโพสต์นี้
หากพบปัญหา/ข้อบกพร่องที่เกี่ยวข้องกับการเปลี่ยนแปลงนี้ โปรดรายงานข้อบกพร่องโดยใช้ Issue Tracker
การเปลี่ยนแปลง API
- การสนับสนุน
InputConnection#requestCursorUpdates(I0c69b) - เพิ่ม
FocusRequester.saveFocusedChildและFocusRequester.restoreFocusedChild(Ic557e, b/272302679, b/275157318) - เพิ่ม
ResourceResolutionExceptiontype เพื่อห่อ Throwable ที่เกิดขึ้นเมื่อพยายามโหลดชิ้นงานบิตแมปพร้อมคำอธิบายเส้นทางชิ้นงานที่โหลดไม่สำเร็จ (I19f44, b/230166331, b/278424788) - เพิ่มประสิทธิภาพการช่วยเหลือพิเศษเพื่อการจัดสรรประสิทธิภาพและหน่วยความจำ (Iede48)
- เพิ่มพร็อพเพอร์ตี้และการดำเนินการทางความหมายเพื่อรองรับการแปลข้อความ (I4a6bc)
- พร็อพเพอร์ตี้ใหม่ใน
IntrinsincMeasureScopeและการติดตั้งใช้งาน (เช่นMeasureScope) เพื่อระบุว่าการวัดปัจจุบันเป็นการวัดแบบคาดการณ์หรือไม่ (I7a812) - อัปเดต
DrawScopeAPI เพื่อเพิ่มความสามารถในการกำหนดเป้าหมายใหม่ในการแสดงผลไปยัง Canvas อื่นที่มีความหนาแน่น/ทิศทางเลย์เอาต์ และขนาดอื่น - อัปเดต
DrawContextเพื่อรองรับการกำหนดค่าความหนาแน่นและทิศทางเลย์เอาต์ รวมถึงทำให้กำหนดค่า Canvas ได้ (Ie1f9b, b/225408150) - เพิ่ม
Paragraph#fillBoundingBoxesเพื่อคำนวณกรอบล้อมรอบอักขระ (If30ee) - เพิ่มชุด
MultiPreviewsทั่วไป (Ia5a27)
การแก้ไขข้อบกพร่อง
- เพิ่ม
FocusTargetModifierNodeอินเทอร์เฟซที่ใช้สร้างFocusTargetที่กำหนดเองได้ (I9790e) - เปลี่ยนชื่อพารามิเตอร์
fallback*ในเครื่องมือสร้างTextMeasurerเป็นdefault*(I940a5) - เปลี่ยนชื่อ
SemanticsPropertyReceiver.performImeActionเป็นonImeActionและSemanticsActions.PerformImeActionเป็นOnImeAction(I8e841) - เพิ่ม Wheel เพื่อแยกความแตกต่างระหว่างการเลื่อนเมาส์กับการลากในการเลื่อนที่ซ้อนกัน (โดยเฉพาะใน
NestedScrollConnection) (Ie57e4) - เพิ่ม
asComposePaintAPI เพื่อแทนที่toComposePaintเนื่องจากออบเจ็กต์ที่ส่งคืนจะรวมandroid.graphics.Paintเดิม (I22b4c) - เลิกใช้งาน
SemanticsProperties.imeActionและแทนที่ด้วยพารามิเตอร์ใหม่เป็นSemanticsActions.performImeAction(I4a587) - เพิ่มการรองรับการเลือกด้วยเมาส์ การเลือกแบบสัมผัสจะขยายตามคำและลดตามอักขระ (Ic0c6c, b/180639271)
- ตอนนี้เมธอด
Paragraphที่เคยส่งAssertionErrorสำหรับออฟเซ็ตที่อยู่นอกขอบเขตจะส่งIllegalArgumentExceptionแทนเช่นเดียวกับMultiParagraph(I549d3, b/243338896)
รุ่น 1.5
เวอร์ชัน 1.5.4
18 ตุลาคม 2023
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.5.4 เวอร์ชัน 1.5.4 มีคอมมิตเหล่านี้
เวอร์ชัน 1.5.3
4 ตุลาคม 2023
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.5.3 เวอร์ชัน 1.5.3 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- (b/301209788) บางครั้ง
TextFieldอาจใช้คำสั่งก่อนหน้าอย่างไม่ถูกต้องเมื่อโฟกัสและป้อนข้อมูลภาษาเกาหลี ทำให้ตัวอักษรหายไป
รุ่น 1.5.2
27 กันยายน 2023
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.5.2 เวอร์ชัน 1.5.2 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- เพิ่มวิธีแก้ปัญหาสำหรับข้อขัดข้องเมื่อเข้าถึง API การเลื่อนการช่วยเหลือพิเศษจากเธรดเบื้องหลัง
- แก้ไขการเพิ่มโหนดที่ไม่ได้แนบกับแผนผังความหมาย
รุ่น 1.5.1
6 กันยายน 2023
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.5.1 เวอร์ชัน 1.5.1 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขช่องข้อความที่แสดงแป้นพิมพ์และแก้ไขได้เมื่อ
readOnlyเป็นจริง นอกจากนี้ ยังแก้ไขปัญหาที่แป้นพิมพ์ไม่แสดงเมื่อเปลี่ยนreadOnlyจากจริงเป็นเท็จขณะโฟกัส (I34a19, b/246909589)
เวอร์ชัน 1.5.0
9 สิงหาคม 2023
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.5.0 เวอร์ชัน 1.5.0 มีคอมมิตเหล่านี้
เวอร์ชัน 1.5.0-rc01
26 กรกฎาคม 2023
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.5.0-rc01 เวอร์ชัน 1.5.0-rc01 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขข้อขัดข้องที่เกิดขึ้นเมื่อใช้
SubcomposeLayoutภายในmovableContentOf()
เวอร์ชัน 1.5.0-beta03
28 มิถุนายน 2023
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.5.0-beta03 เวอร์ชัน 1.5.0-beta03 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- เพิ่มอินเทอร์เฟซ FocusTargetModifierNode ที่ใช้สร้าง FocusTarget ที่กำหนดเองได้ (Ifb1d6)
- แก้ไขปัญหาเกี่ยวกับ Dialog และ Popup composables ที่อาจส่งผลให้หน้าต่างย่อยไม่ปรับขนาดตามที่คาดไว้เมื่อ
usePlatformDefaultWidth=true(I112ee)
เวอร์ชัน 1.5.0-beta02
7 มิถุนายน 2023
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.5.0-beta02 เวอร์ชัน 1.5.0-beta02 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม
asComposePaintAPI เพื่อเปิดใช้การใช้งานอินสแตนซ์android.graphics.Paintที่จะใช้ใน Compose
การแก้ไขข้อบกพร่อง
- เพิ่ม
asComposePaintAPI เพื่อแทนที่toComposePaintเนื่องจากออบเจ็กต์ที่ส่งคืนจะรวมandroid.graphics.Paintเดิม (I22b4c)
เวอร์ชัน 1.5.0-beta01
24 พฤษภาคม 2023
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.5.0-beta01 เวอร์ชัน 1.5.0-beta01 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- นำการจัดสรรในการจัดองค์ประกอบใหม่ ภาพเคลื่อนไหวสี และ
AndroidComposeView(Ib2bfa) ออกแล้ว - เพิ่มฟังก์ชันผู้ช่วยสนุกๆ
CacheDrawModifierNode()เพื่ออนุญาตการมอบสิทธิ์ (Icf8f9) - ขอแนะนำพร็อพเพอร์ตี้
isLookingAheadซึ่งเข้าถึงได้จากMeasureScopeเพื่อสังเกตผลลัพธ์การคาดคะเนและมีอิทธิพลต่อการส่งผ่านหลักหากต้องการ (Ibf4c3) - พร็อพเพอร์ตี้ความหมายใหม่
traversalIndexซึ่งเป็นค่าทศนิยมที่ใช้เพื่อจัดลําดับโหนดใหม่ในการข้ามผ่านTalkBack(ค่าที่ต่ำกว่าจะอยู่ก่อน) (I9a81b, b/186443263) - เปลี่ยนชื่อพร็อพเพอร์ตี้ Semantics
isContainerเป็นisTraversalGroup(I121f6) - ตอนนี้
ColorProducerมีoperator fun invokeแทนproduce(I4a9a2) - เพิ่ม
Pathtransform API เพื่อใช้การแปลงการแปล/การปรับขนาด/การหมุนกับออบเจ็กต์เส้นทาง (I23434, b/233772232) - เมธอดของ
ColorProducerเรียกว่าproduce(I78bde) - เปลี่ยนชื่อ
toFrameworkColorSpaceเป็นtoAndroidColorSpace(I4f547) - เปลี่ยนชื่อ
ColorLambdaเป็นColorProducer(I73b1a) - เปิดตัว API เพื่อแปลงระหว่างประเภทพื้นที่สีของ Android และ Compose (Ie7db4, b/279979665)
- เพิ่มพารามิเตอร์สีลงใน
BasicTextเพื่อให้สามารถเคลื่อนไหวหรือตั้งค่าสีข้อความได้อย่างมีประสิทธิภาพ (Iffd88, b/246961787) - เปลี่ยนชื่อ
TextRange.constrainเป็นTextRange.coerceInแล้ว (I31be2) - เพิ่ม
TextStyle.merge(...)ที่เพิ่มประสิทธิภาพพร้อมรายการพารามิเตอร์ทั้งหมด (Iad234, b/246961787) - ปรับปรุง API ข้อความหลายรายการ ซึ่งรวมถึง
Brush,DrawStyle,TextMotion,DrawScope.drawText,Paragraph.paint(Brush),MultiParagraph.paint(Brush)(I2f740, b/261581564, b/261581931, b/261561245) PlatformTextStyle.includeFontPaddingเลิกเลิกใช้งานแล้ว เดิมทีเราตั้งใจจะนำช่องนี้ออก แต่ความคิดเห็นแสดงให้เห็นว่านักพัฒนาแอปต้องการตัวเลือกการกำหนดค่านี้ จึงนำการเลิกใช้งานออกจากฟิลด์ (I98e96, b/277703184)- เพิ่มเมธอด
TextRange.constrainสาธารณะ (I97912) - ตอนนี้คุณเปิด
UrlAnnotationในAnnotatedStringได้แล้วผ่านบริการช่วยเหลือพิเศษ เช่นTalkBack(If4d82, b/253292081) - เพิ่ม
InsertTextAtCursorการดำเนินการเชิงความหมายสำหรับช่องข้อความ (I11ed5) LineHeightStyle.Alignment(topRatio)Constructor ได้รับการเลื่อนขั้นเป็น API ที่เสถียร (I79c32, b/261565383)TextMeasurerและ API ที่เกี่ยวข้องไม่ใช่เวอร์ชันทดลองอีกต่อไป (I74647, b/261581753)- เพิ่มการดำเนินการทางความหมาย
PerformImeActionเพื่อเรียกใช้การดำเนินการ IME ในโหนดเอดิเตอร์ข้อความ (Ic606f, b/269633506) PlatformTextInputAPI ไม่ใช่เวอร์ชันทดลองสำหรับ Android อีกต่อไป (I668eb)- เปลี่ยนชื่อพารามิเตอร์ค่าสำหรับ
Enum.valueOf(Ia9b89) - ข้อยกเว้นที่เกิดขึ้นเพิ่มเติมจาก enum valueOf (I818fe)
- เปิดตัว
PlatformTextInputAdapterAPI ระดับต่ำใหม่สำหรับการสร้างการใช้งานอินพุตข้อความที่กำหนดเองซึ่งสื่อสารกับ API ของแพลตฟอร์มโดยตรง (I58df4) - เพิ่มพารามิเตอร์
BlendModeลงในเมธอดDrawScope.drawText,Paragraph.paintและMultiParagraph.paintเพื่อรองรับอัลกอริทึมการผสมผสานที่แตกต่างกันเมื่อวาดข้อความบน Canvas (I57508) - เปลี่ยนชื่อ
Font.MaximumAsyncTimeoutเป็นFont.MaximumAsyncTimeoutMillisเปลี่ยนชื่อเท่านั้น (I07af5) - ค่า DPI ที่อัปเดตแล้วของ
@Previewอุปกรณ์อ้างอิง (Id6151, b/254528382) - เพิ่มพารามิเตอร์
brush,alphaลงในBasicTextเพื่อให้สามารถเคลื่อนไหวหรือตั้งค่าแปรงข้อความได้อย่างมีประสิทธิภาพ - กำหนดประเภท Lambda แบบไม่มีกล่องสำหรับ Float, Double, Long, Int, Short ใน :ui:ui-unit (I6f18d, b/246961787)
การแก้ไขข้อบกพร่อง
- นำการจัดสรรหลายรายการในการติดตามความเร็วของเคอร์เซอร์ออก (I26bae)
- ลดการจัดสรรในการจัดการอินพุตเลย์เอาต์และเคอร์เซอร์ (I5333a)
- เพิ่มประสิทธิภาพการใช้งานหน่วยความจำของ Vector และการแสดงเฟรมแรก (I2f3c6)
- นำการจัดสรรออกเมื่อวาดเส้นและจุดด้วย Canvas (I9f535)
- เพิ่มเอกสารสำหรับ
AndroidFont.fontVariationSettings(I7d9e2)
การมีส่วนร่วมจากภายนอก
- ปรับปรุงประสิทธิภาพและลดการจัดสรรใน Vector API (I906cb)
เวอร์ชัน 1.5.0-alpha04
10 พฤษภาคม 2023
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.5.0-alpha04 เวอร์ชัน 1.5.0-alpha04 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
Modifier.Nodeการปรับปรุงการมอบสิทธิ์ เพิ่มความสามารถในการมอบสิทธิ์ที่ดียิ่งขึ้นให้กับอินสแตนซ์Modifier.Nodeอื่นๆ จากDelegatingNodeซึ่งทำได้ด้วย APIdelegateและundelegateก่อนการเปลี่ยนแปลงนี้ API ทุกรายการจากโหนดที่มอบสิทธิ์จะต้องได้รับการมอบสิทธิ์อย่างชัดแจ้งไปยังโหนดที่ได้รับมอบสิทธิ์ หลังจากการเปลี่ยนแปลงนี้ ระบบจะมอบสิทธิ์อินเทอร์เฟซของโหนดโดยนัย เว้นแต่DelegatingNodeจะลบล้างอย่างชัดเจน (67352bc)
การเปลี่ยนแปลง API
- เปิดตัว
NestedScrollModifierNodeซึ่งเป็นNestedScroll Modifier.Nodeที่มอบสิทธิ์ให้ได้ (I69513) - เพิ่มพารามิเตอร์
onResetและonReleaseลงในAndroidViewBindingที่ประกอบได้ ซึ่งเป็นการจำลองAndroidViewที่ประกอบได้และเปิดใช้การรองรับการใช้ View ซ้ำด้วยViewBinding(I00b1e, b/276802519) - อัปเดต Compose Path API เพื่อรองรับการดำเนินการย้อนกลับเพื่อรองรับกรณีการใช้งานการจัดการเส้นทางบ่อยๆ ด้วยการนำกลับมาใช้ใหม่ที่เร็วขึ้น (I7b797)
- เพิ่ม
TextStyle.merge(...)ที่เพิ่มประสิทธิภาพพร้อมรายการพารามิเตอร์ทั้งหมด (Iad234, b/246961787) - ปรับปรุง API ข้อความหลายรายการ ซึ่งรวมถึง
Brush,DrawStyle,TextMotion,DrawScope.drawText,Paragraph.paint(Brush),MultiParagraph.paint(Brush)(I2f740, b/261581564, b/261581931, b/261561245) PlatformTextStyle.includeFontPaddingเลิกเลิกใช้งานแล้ว เดิมทีเราตั้งใจจะนำช่องนี้ออก แต่ความคิดเห็นแสดงให้เห็นว่านักพัฒนาแอปต้องการตัวเลือกการกำหนดค่านี้ จึงนำการเลิกใช้งานออกจากฟิลด์ (I98e96, b/277703184)
การแก้ไขข้อบกพร่อง
- แก้ไขการถดถอยที่แป้นพิมพ์ไม่แสดงสำหรับช่องข้อความภายในกล่องโต้ตอบที่ไม่ได้สร้างโดย
Dialogcomposable (I82551, b/262140644)
เวอร์ชัน 1.5.0-alpha03
19 เมษายน 2023
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.5.0-alpha03 เวอร์ชัน 1.5.0-alpha03 มีคอมมิตต่อไปนี้
ฟีเจอร์ใหม่
- ลักษณะการทำงานเริ่มต้นใหม่สำหรับ
SubcomposeLayoutในLookaheadScope:SubcomposeLayoutsที่ไม่มีช่องแบบมีเงื่อนไข (เช่นTabRow,Scaffold,BoxWithConstraintsฯลฯ) จะทำงานร่วมกับภาพเคลื่อนไหวแบบคาดการณ์ได้อย่างราบรื่น
การเปลี่ยนแปลง API
intermediateMeasurePolicyใหม่เริ่มต้นที่ใช้ซ้ำนโยบายการวัดผลจาก Lookahead Pass ช่วยให้ประเภทSubcomposeLayoutย่อยที่ไม่มีช่องแบบมีเงื่อนไข เช่นScaffold,TabRowและBoxWithConstraintsทำงานร่วมกับ Lookahead ได้โดยค่าเริ่มต้น (Id84c8)- ตอนนี้ Recomposer ที่สร้างขึ้นสำหรับหน้าต่าง Android จะบล็อกการเรียกใช้เฉพาะ
withFrameNanosเท่านั้น แทนที่จะบล็อกการคอมโพสทั้งหมดเมื่อได้รับการแจ้งเตือนON_STOPซึ่งหมายความว่าหน้าต่างที่เชื่อมโยงกับกิจกรรมที่หยุดแล้วจะยังคงจัดองค์ประกอบใหม่สำหรับการเปลี่ยนแปลงข้อมูล แต่ภาพเคลื่อนไหวหรือผู้เรียกอื่นๆ ของwithFrameNanosจะถูกบล็อก (Id9e7f, b/240975572) - เปลี่ยน
motionEventSpyเป็นเวอร์ชันเสถียร (Ic5ec4, b/261560988) - เพิ่มเมธอด
TextRange.constrainสาธารณะ (I97912) PlatformTextStyle.includeFontPaddingไม่ถือว่าเลิกใช้งานแล้วเพื่อกระตุ้นให้นักพัฒนาแอปใช้ API ความเข้ากันได้นี้เพื่อเปลี่ยนและทดสอบการตั้งค่าincludeFontPaddingเป็นเท็จ (I98e96, b/277703184)
เวอร์ชัน 1.5.0-alpha02
5 เมษายน 2023
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.5.0-alpha02 เวอร์ชัน 1.5.0-alpha02 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
SubcomposeLayoutAPI ใหม่ที่ใช้นโยบายการวัดผลระดับกลางเพิ่มเติมสำหรับการจัดการตรรกะการวัดผล/เลย์เอาต์ระหว่างภาพเคลื่อนไหวที่อิงตามการมองไปข้างหน้า (I017d3)- ตอนนี้ PointerInput จะทำงานแบบ Lazy และใช้ Modifier.Node เพื่อให้ประสิทธิภาพดียิ่งขึ้น (อ่านเกี่ยวกับการเปลี่ยนแปลงลักษณะการทำงานเล็กน้อย) (15dab9)
- เปลี่ยน API ที่ทดลองเป็น API ที่เสถียรด้วยเหตุการณ์สำคัญ (I9c7d8, b/261566839, b/261567368)
- เปลี่ยน API ทดลองเป็น API ที่เสถียรใน
PointerInputChange(I1b543, b/261560988, b/261565762, b/261565749) - เพิ่มวิธีสร้างอินสแตนซ์ของ
SuspendingPointerInputModifierNodeสำหรับการติดตั้งใช้งานModifier.Nodeที่ซับซ้อนมากขึ้น (Ic4933) - ตอนนี้คุณเปิด
UrlAnnotationในAnnotatedStringได้แล้วผ่านบริการช่วยเหลือพิเศษ เช่นTalkBack(If4d82, b/253292081) - เพิ่ม API เพื่อสกัดกั้นคีย์ฮาร์ดแวร์ก่อนที่จะส่งไปยังแป้นพิมพ์เสมือน (I4f4c6, b/186800395)
- เพิ่ม
InsertTextAtCursorการดำเนินการเชิงความหมายสำหรับช่องข้อความ (I11ed5) - ตอนนี้การดำเนินการทดสอบที่เกี่ยวข้องกับข้อความ (เช่น
performTextInput) จะขอโฟกัสโดยตรงโดยใช้การดำเนินการทางความหมายแทนการคลิกที่ช่อง (I6ed05)
การแก้ไขข้อบกพร่อง
- ตอนนี้การดำเนินการทดสอบข้อความต้องเปิดใช้ช่องข้อความ (Iab328)
เวอร์ชัน 1.5.0-alpha01
22 มีนาคม 2023
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.5.0-alpha01 เวอร์ชัน 1.5.0-alpha01 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- ตอนนี้ Modifier.intermediateLayout ไม่จำเป็นต้องมี LookaheadScope ที่ชัดเจนแล้ว บล็อกการวัดใน intermediateLayout มี IntermediateMeasureScope เป็นตัวรับ ซึ่งมี CoroutineScope, LookaheadScope และ MeasureScope ที่สะดวก (Ibe2e5)
- LookaheadLayout ถูกแทนที่ด้วย LookaheadScope ซึ่งไม่ใช่ Layout อีกต่อไป ซึ่งจะช่วยให้ MeasurePolicy ของผู้ปกครองควบคุมเนื้อหาของบุตรหลานใน LookaheadScope ได้โดยตรง (Ibe2e5)
- เพิ่ม
Modifier.Node#coroutineScopeเพื่ออนุญาตให้ Modifier.Nodes เปิดใช้โครูทีน (I76ef9) - อนุญาตให้ Modifier.Nodes อ่าน CompositionLocals โดยการใช้ CompositionLocalConsumerModifierNode interface (Ib44df)
- การส่งต่อคลาส @Deprecated ไปยังพร็อพเพอร์ตี้ (I882d1)
เวอร์ชัน 1.4
เวอร์ชัน 1.4.3
3 พฤษภาคม 2023
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.4.3 เวอร์ชัน 1.4.3 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาที่
AndroidViewอาจจัดวางไม่ถูกต้องเมื่อใช้กับตัวแก้ไขบางตัว (I4dc77, b/274797771) - แก้ไขข้อบกพร่องในการค้นหาโฟกัส 2 มิติที่ส่งผลต่อ
DropDownเมนู (b/276811828) - แก้ไขข้อบกพร่องในพร็อพเพอร์ตี้การเข้า/ออกโฟกัสที่กำหนดเองซึ่งเรียกใช้บล็อกการเข้า/ออกเฉพาะครั้งแรกที่เรียกใช้ Lambda (b/277234245)
- แก้ไขการถดถอยในระบบโฟกัสที่ทำให้เกิดข้อขัดข้องขณะอ่าน
focusProperties(b/271324781, b/274897776)
เวอร์ชัน 1.4.2
19 เมษายน 2023
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.4.2 เวอร์ชัน 1.4.2 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาที่
AndroidViewไม่นำตัวแก้ไขกลับมาใช้ซ้ำอย่างถูกต้อง ซึ่งอาจส่งผลให้เกิดลักษณะการทำงานที่ไม่คาดคิดและเกิดข้อขัดข้อง (Ib67ee, b/275919849) - แก้ไขการถดถอยที่แป้นพิมพ์ไม่แสดงสำหรับช่องข้อความภายในกล่องโต้ตอบที่ไม่ได้สร้างโดย
Dialogcomposable (I82551, b/262140644)
เวอร์ชัน 1.4.1
5 เมษายน 2023
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.4.1 เวอร์ชัน 1.4.1 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาที่
ParentDataModifierไม่ส่งผลต่อAndroidView(b/274797771)
เวอร์ชัน 1.4.0
22 มีนาคม 2023
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.4.0 เวอร์ชัน 1.4.0 มีคอมมิตเหล่านี้
การเปลี่ยนแปลงสำคัญตั้งแต่เวอร์ชัน 1.3.0
- เพิ่ม
PinnableContainerAPI ใหม่ที่อนุญาตให้ปักหมุดรายการใน Lazy List เพื่อไม่ให้ระบบทิ้งรายการเมื่อเลื่อนออกนอกขอบเขต เช่นModifier.focusable()ใช้กลไกนี้เพื่อปักหมุดรายการที่โฟกัสอยู่ (Ib8881, b/259274257, b/195049010) - เราเขียนระบบโฟกัสใหม่โดยใช้
Modifier.NodeAPI เวอร์ชันทดลองใหม่ (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589) - เพิ่มพร็อพเพอร์ตี้ความหมาย
IsContainerใน Surfaces ระบบจะใช้พร็อพเพอร์ตี้นี้ในการเปลี่ยนแปลงในภายหลังซึ่งจะกำหนดลำดับการข้ามตามความหมายเชิงความหมายขององค์ประกอบต่างๆ เช่น พื้นผิว (I63379) - เพิ่มบทบาทการช่วยเหลือพิเศษใหม่
DropdownListซึ่งใช้เพื่อจำลองลักษณะการทำงานของTalkBackเมื่อโฟกัสandroid.widget.Spinnerได้ (I177e5, b/236159001) - ตอนนี้คุณใช้
PlatformTextStyle(emojiSupportMatch)เพื่อปิดใช้การประมวลผลการรองรับอีโมจิสำหรับย่อหน้าเดียวได้แล้ว (ไม่บังคับ) (Ia7100, b/139326806) - ตอนนี้การทดสอบ UI ของ Android Compose จะเรียกใช้การส่งผ่านเลย์เอาต์สำหรับแต่ละเฟรมเมื่อดำเนินการเฟรมเพื่อให้เข้าสู่สถานะว่าง (เช่น ผ่าน
waitForIdle) ซึ่งอาจส่งผลต่อการทดสอบที่ยืนยันในแต่ละเฟรมของภาพเคลื่อนไหวเลย์เอาต์ (I8ea08, b/222093277) - เพิ่ม
TextMotionทดลองTextStyleเพื่อกำหนดข้อความให้เป็นStatic(default)หรือภาพเคลื่อนไหว ใช้TextMotion.Animatedหากจะปรับขนาด แปล หรือหมุนข้อความผ่านภาพเคลื่อนไหว (I24dd7)
เวอร์ชัน 1.4.0-rc01
8 มีนาคม 2023
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.4.0-rc01 เวอร์ชัน 1.4.0-rc01 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มฟังก์ชันที่ประกอบกันได้ของ
AndroidViewที่มีการโอเวอร์โหลด ซึ่งยอมรับพารามิเตอร์onResetซึ่งจะช่วยให้สามารถนำอินสแตนซ์ของ View กลับมาใช้ใหม่ได้เมื่อทิ้งโหนดในองค์ประกอบและนำกลับมาใช้ใหม่ในลักษณะที่เข้ากันได้ ซึ่งจะมีประโยชน์อย่างยิ่งสำหรับLazyRowsและLazyColumnsของยอดดู (I3f10d, b/230099236) - เปิดตัว
PlatformTextInputAdapterAPI ระดับต่ำใหม่สำหรับการสร้างการใช้งานอินพุตข้อความที่กำหนดเองซึ่งสื่อสารกับ API ของแพลตฟอร์มโดยตรง (I58df4)
การแก้ไขข้อบกพร่อง
- ตอนนี้การดำเนินการตามความหมายของ
BasicTextFieldSetTextจะอัปเดตบัฟเฟอร์ข้อความโดยใช้เส้นทางโค้ดเดียวกับการอัปเดต IME และฟังก์ชันการทดสอบ (เช่นperformTextReplacement) - ฟังก์ชันการทดสอบข้อความ
performTextClearance,performTextReplacementและperformTextSelectionจะใช้SemanticsActionsแล้ว (I0807d, b/269633168, b/269624358)
เวอร์ชัน 1.4.0-beta02
22 กุมภาพันธ์ 2023
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.4.0-beta02 เวอร์ชัน 1.4.0-beta02 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- นำ
modifierElementOf()API ออกแล้ว โปรดขยายเวลาจากModifierNodeElementโดยตรงแทน (I2256b) - เพิ่มการเรียกกลับ
Modifier.Node.onReset()ใหม่เพื่อให้คุณรีเซ็ตสถานะในเครื่องบางอย่างเพื่อจัดการกรณีที่Layoutจะนำกลับมาใช้ซ้ำได้อย่างเหมาะสม (เช่น เป็นรายการของLazyColumn) แก้ไขFocusTargetModifierNodeเพื่อรีเซ็ตสถานะที่โฟกัสอย่างถูกต้อง (I65495, b/265201972) - เพิ่มพารามิเตอร์
BlendModeลงในเมธอดDrawScope.drawText,Paragraph.paintและMultiParagraph.paintเพื่อรองรับอัลกอริทึมการผสมผสานที่แตกต่างกันเมื่อวาดข้อความบน Canvas (I57508)
การแก้ไขข้อบกพร่อง
- ปรับปรุงอัลกอริทึมลำดับการโฟกัสการช่วยเหลือพิเศษ เช่น แถบด้านบน/ด้านล่างมักจะอ่านเป็นอันดับแรก/สุดท้ายตามลำดับ (74e9c5)
เวอร์ชัน 1.4.0-beta01
8 กุมภาพันธ์ 2023
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.4.0-beta01 เวอร์ชัน 1.4.0-beta01 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เปลี่ยนชื่อ
PinnableContainer.PinnedHandle.unpin()เป็นrelease()แล้ว (I4667a) - เพิ่ม
waitUntilNodeCount,waitUntilAtLeastOneExists,waitUntilExactlyOneExistsและwaitUntilDoesNotExistเป็น API เวอร์ชันทดลองในComposeTestRuleเพื่อขยาย APIwaitUntilให้ยอมรับตัวจับคู่และจำนวนโหนดใดก็ได้ ดูเอกสารเพิ่มเติมได้ที่ComposeTestRule(Ifa1b9, b/226934294) - เปลี่ยนชื่อ
Font.MaximumAsyncTimeoutเป็นFont.MaximumAsyncTimeoutMillis(I07af5) - นำ
GoogleFont.Provider.AllFontsListUriออกและลิงก์ไปยังGoogleFont.Provider.AllFontsListUriใน ktdoc แทน (I16f29)
การแก้ไขข้อบกพร่อง
- เพิ่มเอกสารสำหรับ
AndroidFont.fontVariationSettings(I7d9e2)
เวอร์ชัน 1.4.0-alpha05
25 มกราคม 2023
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.4.0-alpha05 เวอร์ชัน 1.4.0-alpha05 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- เปิดตัวการโอเวอร์โหลดฟังก์ชันใหม่ที่ทดลองใช้สำหรับฟังก์ชัน
runComposeUiTestและฟังก์ชันcreate*ComposeRuleที่ยอมรับพารามิเตอร์CoroutineContextระบบจะใช้บริบทสำหรับการทดสอบองค์ประกอบและคำสั่งเรียกLaunchedEffectและrememberCoroutineScope()ในองค์ประกอบ (I10614, b/265177763) - เพิ่ม API ใหม่เพื่อติดตามความเร็ว 1 มิติ (If5a82)
- ตอนนี้
FocusRequesterมีเครื่องหมายระบุว่า@Stable(I580ee) - นำคำอธิบายประกอบเวอร์ชันทดลองออกจากเครื่องมือสร้าง
DialogPropertiesที่ใช้พารามิเตอร์usePlatformDefaultWidth(Ic4048) - เพิ่มฟังก์ชันในการคำนวณตำแหน่งและเส้นสัมผัสที่ระยะทางบนเส้นทางด้วย
PathMeasure.getPosition()และPathMeasure.getTangent()(I3b47c) - นำ Setter สาธารณะที่เปิดเผยโดยไม่ตั้งใจออกเมื่อวันที่
PlatformParagraphStyle(I07f47) - ประเภท/ค่า Null ของฟังก์ชันในบรรทัด/ที่เลิกใช้งานแล้ว/ที่ซ่อนอยู่เพิ่มเติม (I24f91)
- เพิ่ม
AnnotatedString.hasStringAnnotationsเพื่อค้นหาคำอธิบายประกอบที่มีการจัดสรรเป็น 0 (I94dfe, b/246960758) - เพิ่มการโอเวอร์โหลดใหม่สำหรับฟังก์ชัน
TextMeasurer.measureซึ่งรับStringเป็นข้อความ (I47b2d, b/242705342) LineBreakและHyphensAPI ใน TextStyle ได้รับการอัปเกรดเป็นเวอร์ชันที่เสถียรแล้ว (Ic1e1d)
การมีส่วนร่วมจากภายนอก
notifyFocusedRectในTextInputSessionและTextInputServiceจะไม่เลิกใช้งานอีก (I23a04, b/262648050)
เวอร์ชัน 1.4.0-alpha04
11 มกราคม 2023
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.4.0-alpha04 เวอร์ชัน 1.4.0-alpha04 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เพิ่ม
PinnableContainerAPI ใหม่ที่อนุญาตให้ปักหมุดรายการใน Lazy List เพื่อไม่ให้ระบบทิ้งรายการเมื่อเลื่อนออกนอกขอบเขต เช่นModifier.focusable()ใช้กลไกนี้เพื่อปักหมุดรายการที่โฟกัสอยู่ (Ib8881, b/259274257, b/195049010) - เราเขียนระบบโฟกัสใหม่โดยใช้
Modifier.NodeAPI เวอร์ชันทดลองใหม่ (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589) - เพิ่มพร็อพเพอร์ตี้ความหมาย
IsContainerใน Surfaces ระบบจะใช้พร็อพเพอร์ตี้นี้ในการเปลี่ยนแปลงในภายหลังซึ่งจะกำหนดลำดับการข้ามตามความหมายเชิงความหมายขององค์ประกอบต่างๆ เช่น พื้นผิว (I63379) - เพิ่มบทบาทการช่วยเหลือพิเศษใหม่
DropdownListซึ่งใช้เพื่อจำลองลักษณะการทำงานของTalkBack'sเมื่อโฟกัสandroid.widget.Spinnerได้ (I177e5, b/236159001) - ตอนนี้คุณใช้
PlatformTextStyle(emojiSupportMatch)เพื่อปิดใช้การประมวลผลการรองรับอีโมจิสำหรับย่อหน้าเดียวได้แล้ว (ไม่บังคับ) (Ia7100, b/139326806) - ตอนนี้การทดสอบ UI ของ Android Compose จะเรียกใช้การส่งผ่านเลย์เอาต์สำหรับแต่ละเฟรมเมื่อดำเนินการเฟรมเพื่อให้เข้าสู่สถานะว่าง (เช่น ผ่าน
waitForIdle) ซึ่งอาจส่งผลต่อการทดสอบที่ยืนยันในแต่ละเฟรมของภาพเคลื่อนไหวเลย์เอาต์ (I8ea08, b/222093277) - เพิ่ม
TextMotionทดลองTextStyleเพื่อกำหนดข้อความให้เป็นStatic(default)หรือภาพเคลื่อนไหว ใช้TextMotion.Animatedหากจะปรับขนาด แปล หรือหมุนข้อความผ่านภาพเคลื่อนไหว (I24dd7)
การเปลี่ยนแปลง API
- แทนที่อาร์กิวเมนต์
maxSize: IntSizeในdrawTextด้วยsize: Sizeเพื่อให้สอดคล้องกับฟังก์ชันDrawScopeอื่นๆsizeจะตั้งค่าเป็นSize.Unspecifiedโดยค่าเริ่มต้น ซึ่งไม่ควรเปลี่ยนลักษณะการทำงานเริ่มต้นก่อนหน้า (Icd27d) - นำตัวสร้างแบบอักษรทดลองที่เลิกใช้งานแล้วออก (I8a724, b/261435386)
- ตอนนี้คลาสข้อมูลเครื่องมือ UI
Groupมีฟิลด์isInlineที่ระบุว่ากลุ่มนี้ใช้สำหรับการเรียกฟังก์ชันที่ประกอบกันได้แบบอินไลน์หรือไม่ หากisInlineเป็นtrueแสดงว่าการเรียกใช้เป็นฟังก์ชันที่ประกอบกันได้แบบอินไลน์ อย่างไรก็ตาม ค่าอาจเป็นเท็จสำหรับการเรียกฟังก์ชันที่สามารถคอมโพสแบบอินไลน์ซึ่งมาจากโมดูลที่คอมไพล์ด้วยปลั๊กอินคอมไพเลอร์ Compose เวอร์ชันที่ไม่ได้สร้างข้อมูลฟังก์ชันอินไลน์ (Idb846) - เปลี่ยน API แบบทดลองก่อนหน้านี้หลายรายการให้เป็น API ที่เสถียร
- ตอนนี้ Rotary Scroll Event API เสถียรแล้ว (I42ad3, b/261561229)
FontVariationตอนนี้ API เสถียรแล้ว (I8779f, b/241016309)- ตอนนี้ตัวสร้าง
Font()ทั้งหมดเป็น API ที่เสถียรแล้ว (I5948b, b/261435386) DeviceFontFamilyNameตอนนี้เป็นเวอร์ชันเสถียรแล้ว (I8b640, b/261435386)- ตอนนี้ตัวสร้าง
AndroidFontที่มีvariationSettingsเป็น API ที่เสถียรแล้ว และสามารถใช้เพื่อสร้างตัวอธิบายแบบอักษรประเภทใหม่ได้ (I5adcc, b/261565807) createFontFamilyResolverAPI เสถียรแล้ว ซึ่งใช้เพื่อตรวจหาข้อยกเว้นที่ไม่ได้จัดการในระหว่างการโหลดแบบอักษรแบบไม่พร้อมกันได้ (Ibb481, b/261435386)Font.loadingStrategyAPI เสถียรแล้ว (I5937c, b/261435386)GoogleFontAPI เสถียรแล้ว (Ic90b0, b/261435386)TextUnit(float, TextUnitType)เป็น API ที่เสถียรแล้ว (I90c84, b/261561612)pluralStringResourceเป็น API ที่เสถียรแล้ว (I09849, b/261439703)
เวอร์ชัน 1.4.0-alpha03
7 ธันวาคม 2022
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.4.0-alpha03 เวอร์ชัน 1.4.0-alpha03 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- กำลังนำ
ExperimentalComposeUiApiออกจากPointerIcon(I23af8) - แนะนำการดำเนินการด้านการช่วยเหลือพิเศษของหน้าเว็บ:
PageUp,PageDown,PageLeft,PageRightโปรดทราบว่าฟีเจอร์เหล่านี้ใช้ได้ตั้งแต่ API 29 เป็นต้นไปเท่านั้น (Ida4ab) - อัปเดตมุมมองพารามิเตอร์
rememberNestedScrollConnectionจากมุมมองรูทเป็นมุมมองโฮสต์ (Ia5200) - เพิ่ม Modifier API เพื่อค้นหาข้อมูลการเลื่อนขององค์ประกอบระดับบน (I2ba9d, b/203141462)
- ใช้ใน
Clickableเพื่อหน่วงเวลาการโต้ตอบการกดอย่างถูกต้อง เมื่อท่าทางสัมผัสอาจกลายเป็นเหตุการณ์การเลื่อน - แก้ไขปัญหาที่
Clickablesไม่หน่วงการกระเพื่อมอย่างถูกต้องเมื่อใช้ภายในScrollable ViewGroup - อัปเดตลิ้นชักและชีตเพื่อหน่วงเวลาการกดอย่างถูกต้องในกรณีที่ท่าทางสัมผัสอาจกลายเป็นเหตุการณ์การเลื่อน
- เปลี่ยนชื่อ
CompositingStrategy.Alwaysเป็นOffscreenเพื่อระบุว่าgraphicsLayerจะได้รับการแสดงผลในบัฟเฟอร์กลาง (I47dc1) เสมอ - เลย์เอาต์ที่มีช่องเนื้อหาหลายช่องทำงานได้อย่างเสถียรแล้ว (I10566, b/248294649)
- เพิ่ม API ใหม่ในเวอร์ชันทดลอง
PerfettoTrace.record {}และPerfettoTraceRuleเพื่อบันทึกการติดตาม Perfetto (หรือที่เรียกว่าการติดตามระบบ) เป็นส่วนหนึ่งของการทดสอบ เพื่อตรวจสอบลักษณะการทำงานและประสิทธิภาพของการทดสอบ (I3ba16) - ในการทดสอบ UI โดยใช้กฎ Compose ระบบจะไม่ส่งต่อการดำเนินการต่อที่กลับมาทำงานต่อในระหว่างการเรียกกลับ
withFrameNanosจนกว่าการเรียกกลับของเฟรมทั้งหมดจะทำงานเสร็จ ซึ่งจะตรงกับลักษณะการทำงานของ Compose เมื่อทำงานตามปกติ อย่างไรก็ตาม การทดสอบที่อิงตามลักษณะการทำงานแบบเดิมอาจล้มเหลว การเปลี่ยนแปลงนี้ควรส่งผลต่อโค้ดที่เรียกใช้withFrameNanosหรือwithFrameMillisโดยตรงเท่านั้น และมีตรรกะภายนอกการเรียกกลับที่ส่งไปยังฟังก์ชันเหล่านั้น ซึ่งอาจต้องย้ายไปอยู่ภายในฟังก์ชันเรียกกลับ ดูตัวอย่างการเปลี่ยนแปลงการทดสอบภาพเคลื่อนไหวใน CL นี้ - เพิ่มพารามิเตอร์
onPerformTraversals: (Long) -> Unitที่ไม่บังคับลงในตัวสร้างTestMonotonicFrameClockและฟังก์ชัน Factory เพื่อเรียกใช้โค้ดหลังจาก Callback ของwithFrameNanosแต่ก่อนที่จะกลับมาใช้ Coroutine ของผู้โทร (Idb413, b/254115946, b/222093277, b/255802670) - เพิ่ม EmojiCompat ลงใน Compose (Ibf6f9, b/139326806)
- เพิ่มพารามิเตอร์วอลเปเปอร์ใหม่ลงใน
@Previewเพื่อรองรับสีแบบเปลี่ยนอัตโนมัติ (I9f512)
การแก้ไขข้อบกพร่อง
- ตอนนี้ระบบจะส่งการแจ้งเตือนการใช้สแนปชอตหลังจากที่
Recomposerใช้การเปลี่ยนแปลงเสร็จแล้ว (Iad6c0, b/222093277) - เปิดตัวการเปลี่ยนแปลงใน
captureToImageเพื่ออนุญาตให้จับภาพหน้าจอแบบหลายหน้าต่าง ซึ่งมีประโยชน์สำหรับการทดสอบภาพหน้าจอที่ใช้ป๊อปอัปของ Compose (I169c5)
การอัปเดตทรัพยากร Dependency
- ตอนนี้ UI ของ Compose และ Material ของ Compose ขึ้นอยู่กับ Lifecycle 2.5.1 แล้ว (I05ab0, b/258038814)
เวอร์ชัน 1.4.0-alpha02
9 พฤศจิกายน 2022
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.4.0-alpha02 เวอร์ชัน 1.4.0-alpha02 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- อัปเดต
GraphicsLayerScopeเพื่อแสดงขนาดปัจจุบันของgraphicsLayerซึ่งมีประโยชน์ในการคำนวณการเปลี่ยนรูปแบบgraphicsLayerเป็นฟังก์ชันของขนาดที่ประกอบได้ (If8c43,b/181387080) - เปิดตัว
CompositingStrategyเพื่อกำหนดเวลาที่จะใช้ประโยชน์จากเลเยอร์การคอมโพสิตนอกหน้าจอสำหรับการแสดงผลเนื้อหาgraphicsLayerอัตโนมัติจะคงลักษณะการทำงานเริ่มต้นซึ่งใช้เลเยอร์ภายในหากมีการใช้ค่าอัลฟ่าหรือRenderEffect/OverscrollAlways จะใช้บัฟเฟอร์นอกหน้าจอเสมอ ซึ่งModulateAlphaจะหลีกเลี่ยงการใช้บัฟเฟอร์นอกหน้าจอและจะปรับคำสั่งการวาดที่บันทึกไว้แต่ละรายการภายในgraphicsLayerแทนModulateAlphaจะยังคงใช้ประโยชน์จากบัฟเฟอร์นอกหน้าจอสำหรับการใช้งานRenderEffect/Overscroll(I25e82, b/256382834) - เพิ่ม
invalidateSubtree()ลงในModifier.Nodeเพื่ออนุญาตให้ลบล้างลำดับชั้นทั้งหมดสำหรับการจัดวางและการวาด (I4bd90) - เลื่อนเวอร์ชัน
rememberNestedScrollInteropConnectionเป็นเวอร์ชันเสถียร เปิดตัวความสามารถในการส่งมุมมองรูทไปยังrememberNestedScrollInteropConnectionซึ่งจะช่วยให้มุมมองที่กำหนดเองตอบสนองต่อข้อจำกัดในการเลื่อนได้ดียิ่งขึ้น โดยเฉพาะในมุมมองที่ไม่เป็นมาตรฐาน (เช่นModalBottomSheetDialog) (I9e107) - เพิ่มอินเทอร์เฟซ
ObserverNodeที่การติดตั้งใช้งานModifier.Nodeสามารถใช้เพื่อรับการแจ้งเตือนเมื่อค่าที่อ่านก่อนหน้านี้มีการเปลี่ยนแปลง (I5728b, b/247716483) - เพิ่มเครื่องมือสร้างใหม่ลงใน
Paintซึ่งยอมรับandroid.graphics.Paintดั้งเดิม นอกจากนี้ ยังเพิ่มฟังก์ชันส่วนขยายtoComposePaint()ที่แปลงออบเจ็กต์ Paint เนทีฟที่มีอยู่เป็น Compose Paint (Ica91b) - เพิ่ม
FontFamily.Resolver.resolveAsTypefaceใหม่เพื่อใช้ใน Android (I8950b) - เพิ่ม
ToolingStateเพื่ออนุญาตให้เครื่องมือเปลี่ยนสถานะภายในของ Composable (Ie6614) - ปรับโครงสร้างเครื่องมือเพื่อให้รองรับภาพเคลื่อนไหวใหม่ที่เพิ่มเข้ามาได้ดียิ่งขึ้น (I8677b)
- เพิ่มพารามิเตอร์
minLinesลงในข้อความ Material และ Material3TextFieldและOutlinedTextFieldซึ่งช่วยให้ตั้งค่าความสูงขั้นต่ำของคอมโพเนนต์ในแง่ของจำนวนบรรทัดได้ (I4af1d)
เวอร์ชัน 1.4.0-alpha01
24 ตุลาคม 2022
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.4.0-alpha01 เวอร์ชัน 1.4.0-alpha01 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มวิธีการใหม่
awaitEachGesture()สำหรับเครื่องตรวจจับท่าทางสัมผัส ซึ่งทำงานคล้ายกับforEachGesture()แต่การวนซ้ำเหนือท่าทางจะทำงานภายในAwaitPointerEventScopeทั้งหมด ดังนั้นเหตุการณ์จึงไม่สูญหายระหว่างการวนซ้ำ forEachGesture()เลิกใช้งานแล้วและเปลี่ยนไปใช้awaitEachGesture()แทน เนื่องจากช่วยป้องกันไม่ให้เหตุการณ์สูญหายระหว่างท่าทางสัมผัส (Iffc3f, b/251260206)- เลิกใช้งานการรีไซเคิลออบเจ็กต์การช่วยเหลือพิเศษใน androidx เราพบว่าการเปลี่ยนแปลงประสิทธิภาพนั้นไม่มีนัยสำคัญแม้ในเวอร์ชันที่เก่าที่สุดที่รองรับ (I0a961)
- เพิ่ม
DrawStyleเป็นแอตทริบิวต์เวอร์ชันทดลองในTextStyleและSpanStyleเพื่อเปิดใช้การวาดข้อความที่มีเส้นขอบ (If24b8, b/155421273) - ตอนนี้
AnnotatedString.Builderได้ติดตั้งใช้งานkotlin.text.Appendableแล้ว (I1a061, b/231030444) AnnotatedString.Builderมีเมธอดappend(AnnotatedString, start: Int, end: Int)สำหรับต่อสตริงย่อยของAnnotatedStringและรูปแบบที่ตัดกันแล้ว- เพิ่มพารามิเตอร์
DrawStyleลงในฟังก์ชันสีParagraphและMultiParagraphซึ่งช่วยให้วาดข้อความที่มีเส้นขอบได้ (Ic8102, b/155421273)
การมีส่วนร่วมจากภายนอก
- ขอขอบคุณสำหรับ
vighneshที่เพิ่มอุปกรณ์ทีวีลงในการแสดงตัวอย่าง (Ie15cd)
เวอร์ชัน 1.3
เวอร์ชัน 1.3.3
11 มกราคม 2023
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.3.3 เวอร์ชัน 1.3.3 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขข้อขัดข้องที่เกิดขึ้นในบางครั้งบน Android 9 เมื่อกิจกรรมบันทึกสถานะของมุมมองการเขียน (I0b755, b/260322832)
เวอร์ชัน 1.3.2
7 ธันวาคม 2022
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.3.2 เวอร์ชัน 1.3.2 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- อัปเดตให้ใช้ Profobuf 3.21.8 ซึ่งหลีกเลี่ยงการแจ้งเตือนความปลอดภัยใน
protobuf-javalite:3.19.4(CVE-2022-3171) (b/255545055)
เวอร์ชัน 1.3.1
9 พฤศจิกายน 2022
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.3.1 เวอร์ชัน 1.3.1 มีคอมมิตเหล่านี้
เวอร์ชัน 1.3.0
24 ตุลาคม 2022
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.3.0 เวอร์ชัน 1.3.0 มีคอมมิตเหล่านี้
การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 1.2.0
- ชุด API ทดลองใหม่
LookaheadLayout(ช่วยให้สร้างลักษณะการทำงานของภาพเคลื่อนไหวที่ก่อนหน้านี้ทำไม่ได้) - ชุด API ทดลองใหม่
Modifier.Node(ทางเลือกที่มีประสิทธิภาพสูงกว่าModifier.composed) - ปรับปรุงการรองรับการแทรกหน้าต่าง
- รองรับ D-Pad และแป้นพิมพ์ฮาร์ดแวร์ใน LazyList
- ลดระดับความสูงสูงสุดที่รองรับในกล่องโต้ตอบและป๊อปอัปเป็น 8dp (การเปลี่ยนแปลงที่ทำให้เกิดการหยุดทำงานสำหรับระบบการออกแบบที่กำหนดเองบางระบบ - เหตุผลในหมายเหตุประจำรุ่นเบต้า 01)
- การปรับปรุง API เล็กน้อยที่ไม่ทำให้เกิดการหยุดทำงานหลายรายการ
- แก้ไขข้อบกพร่องและปรับปรุงประสิทธิภาพหลายรายการ
เวอร์ชัน 1.3.0-rc01
5 ตุลาคม 2022
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.3.0-rc01 เวอร์ชัน 1.3.0-rc01 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม API ไฮเฟนทดลองใหม่เพื่อรองรับการใส่ไฮเฟนอัตโนมัติในข้อความ (Iaa869)
การแก้ไขข้อบกพร่อง
DeviceFontFamilyNameจะไม่กำหนดค่าwghtและการตั้งค่ารูปแบบitalโดยค่าเริ่มต้น แต่จะใช้การตั้งค่าแพลตฟอร์มสำหรับTypefaceที่โหลดแทน (Ia7a6d, b/246989332)- แก้ไข
LazyColumnการรั่วไหลของหน่วยความจำ -onModifierLocalsUpdatedไม่ได้รับการเรียกใช้ด้วยค่าเริ่มต้นเมื่อมีการนำตัวแก้ไขกลับมาใช้ใหม่ (b/230168389)
เวอร์ชัน 1.3.0-beta03
21 กันยายน 2022
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.3.0-beta03 เวอร์ชัน 1.3.0-beta03 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มตัวเลือกเพื่อปรับแต่งการขึ้นบรรทัดใหม่ในข้อความ (I86907)
- เปลี่ยนอาร์กิวเมนต์
size:IntSizeด้วยconstraints: ConstraintsในเมธอดTextMeasurer.measureเพื่อรองรับข้อจำกัดความกว้างขั้นต่ำ (I37530, b/242707525)
การแก้ไขข้อบกพร่อง
- ตอนนี้
BackHandlerAPI ของ AndroidX Activity ทำงานได้ภายใน ComposableDialogแล้ว (I35342)
เวอร์ชัน 1.3.0-beta02
7 กันยายน 2022
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.3.0-beta02 เวอร์ชัน 1.3.0-beta02 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- เพิ่มการโอเวอร์โหลดเวอร์ชันทดลองสำหรับเลย์เอาต์ซึ่งยอมรับรายการแลมบ์ดาเนื้อหาที่ประกอบได้หลายรายการ ซึ่งช่วยให้จัดการกับเมตริกที่วัดได้ซึ่งใส่ไว้ในแลมบ์ดาเนื้อหาต่างๆ ได้แตกต่างกัน (Ic1b4e)
การเปลี่ยนแปลง API โฟกัสเวอร์ชันทดลอง:
- เราเลิกใช้งาน
FocusDirection.InและFocusDirection.Outแล้ว และแทนที่ด้วยFocusDirection.EnterและFocusDirection.Exit(Ia4262, b/183746982) - เพิ่มพร็อพเพอร์ตี้โฟกัสใหม่ 2 รายการ ได้แก่ enter และ exit เพื่อระบุลักษณะการทำงานที่กำหนดเองสำหรับ
FocusManager.moveFocus(Enter)และFocusManager.moveFocus(Exit)(I5f3f9, b/183746982) - ตอนนี้คุณใช้
FocusRequester.Cancelเพื่อยกเลิกการย้ายโฟกัสได้แล้วFocusRequester.Cancelสามารถใช้ในพร็อพเพอร์ตี้โฟกัสต่อไปนี้ได้ ได้แก่ up, down, left, right, next, previous, start, end, enter และ exit (Ib300f)
เวอร์ชัน 1.3.0-beta01
24 สิงหาคม 2022
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.3.0-beta01 เวอร์ชัน 1.3.0-beta01 มีการคอมมิตเหล่านี้
การปรับโครงสร้างโหนดตัวแก้ไข
เราได้ปรับโครงสร้างเลเยอร์ที่จัดการอินสแตนซ์ Modifier/Modifier.Element และประสานงานลักษณะการทำงานของอินสแตนซ์เหล่านั้นใน LayoutNodes ใหม่ การเปลี่ยนแปลงนี้เป็นการปรับโครงสร้างใหม่ซึ่งไม่มีผลต่อ API สาธารณะของตัวแก้ไขต่างๆ ใน Compose และถือเป็นการเปลี่ยนแปลงเฉพาะการใช้งานเท่านั้น อย่างไรก็ตาม การเปลี่ยนแปลงนี้มีความสำคัญด้วยเหตุผลหลายประการ (Ie4313)
สรุปการเปลี่ยนแปลง
Modifier.Node API ที่ทดลองใช้ซึ่งเพิ่มเข้ามาจะมีการแยกส่วนที่ช่วยให้สามารถรักษาสถานะในอินสแตนซ์ที่จะคงอยู่ตามวงจรของโหนดเลย์เอาต์ และจะได้รับการจัดสรรต่อโหนดเลย์เอาต์และต่อการใช้งาน Modifier.Element ที่เกี่ยวข้องซึ่งสร้างขึ้น
โดยทั่วไปแล้ว การแยกข้อมูลนี้เป็นกลไกทางเลือกในการสร้างตัวแก้ไขแบบมีสถานะโดยไม่ต้องอาศัยกลไกของ API Modifier.composed
ความเสี่ยง
การเปลี่ยนแปลงนี้เข้ากันได้กับรุ่นก่อนหน้าอย่างแน่นอน และมีจุดประสงค์เพื่อให้เข้ากันได้แบบย้อนหลังในแง่ของลักษณะการทำงานที่สังเกตได้มากที่สุดเท่าที่จะเป็นไปได้และสมเหตุสมผล อย่างไรก็ตาม มีระบบย่อยบางส่วนของ Compose ที่การปรับโครงสร้างนี้ไม่ได้แตะต้อง และเป็นไปได้ที่ลักษณะการทำงานจะเปลี่ยนแปลงในลักษณะที่การทดสอบของเราไม่ได้ครอบคลุม และยังไม่พบและแก้ไข
โปรดอัปเกรดเป็นรุ่นนี้ด้วยความระมัดระวัง หากคุณเชื่อว่าการเปลี่ยนแปลงนี้ทำให้เกิดปัญหา โปรดแจ้งให้เราทราบ
API เวอร์ชันทดลอง
เราได้เพิ่ม API เวอร์ชันทดลองต่างๆ ซึ่งทั้งหมดเกี่ยวข้องกับแนวคิดใหม่ของ "โหนดตัวแก้ไข" ระบบจะสร้าง Modifier.Node ขึ้นเมื่อ
fun modifierElementOf(…): Modifierabstract class ModifierNodeElementabstract class Modifier.Nodeabstract class DelegatingNodeinterface LayoutModifierNodeinterface DrawModifierNodeinterface SemanticsNodeinterface PointerInputNodeinterface ModifierLocalNodeinterface ParentDataModifierNodeinterface LayoutAwareModifierNodeinterface GlobalPositionAwareModifierNodeinterface IntermediateLayoutModifierNode
การเปลี่ยนแปลงลักษณะการทำงานที่ทำให้เกิดข้อขัดข้อง
ลดระดับความสูงสูงสุดที่รองรับในกล่องโต้ตอบและป๊อปอัปเป็น 8dp
ระดับความสูงสูงสุดที่รองรับสำหรับกล่องโต้ตอบและป๊อปอัปของ Compose ลดลงจาก 30dp เป็น 8dp การเปลี่ยนแปลงนี้ส่งผลต่อทั้งกล่องโต้ตอบและป๊อปอัปที่กำหนดเองของ Material และ UI การเปลี่ยนแปลงนี้มีขึ้นเพื่อลดข้อบกพร่องด้านการช่วยเหลือพิเศษใน Android เวอร์ชันต่ำกว่า S และเพื่อให้มั่นใจว่าบริการช่วยเหลือพิเศษภายในหน้าต่างเหล่านั้นจะโต้ตอบกับเนื้อหาภายในกล่องโต้ตอบหรือป๊อปอัปได้
การเปลี่ยนแปลงนี้จะส่งผลต่อคุณก็ต่อเมื่อคุณสร้างการติดตั้งใช้งานกล่องโต้ตอบหรือป๊อปอัปที่กำหนดเองโดยตั้งค่าระดับการยกระดับสูงกว่า 8dp ลองลดระดับความสูงของกล่องโต้ตอบหรือป๊อปอัป หากต้องการเลือกไม่ใช้ลักษณะการทำงานใหม่นี้ ให้พิจารณาการแยกไดอะล็อกหรือป๊อปอัปของคุณเองโดยตั้งค่าการยกระดับที่ต้องการ เราไม่แนะนำให้ทำเช่นนี้ เนื่องจากอาจส่งผลเสียต่อการช่วยเหลือพิเศษ และนักพัฒนาแอปต้องตรวจสอบว่าส่วนล่างของกล่องโต้ตอบหรือป๊อปอัปสามารถโต้ตอบได้และบริการการช่วยเหลือพิเศษอ่านได้
การเปลี่ยนแปลง API
- แก้ไขปัญหาที่
painterResourceจะไม่อัปเดตเมื่อมีการเปลี่ยนแปลงการกำหนดค่า (I58e73, b/228862715) rememberTextMeasurerไม่รับพารามิเตอร์FontFamily.Resolver,DensityหรือLayoutDirectionอีกต่อไป โปรดใช้ตัวสร้างTextMeasurerเพื่อระบุค่าที่กำหนดเองสำหรับพารามิเตอร์เหล่านี้ (Ia1da3)- เพิ่มพร็อพเพอร์ตี้
DialogProperties.decorFitsSystemWindowsเพื่อให้กล่องโต้ตอบรองรับWindowInsets(I57742, b/229378542) - ย้ายตัวสร้างแบบอักษรกลับไปที่ไฟล์ Kotlin เดิมเพื่อรักษาความเข้ากันได้ของไบนารี ไม่มีการเปลี่ยนแปลงจากเวอร์ชันเสถียรล่าสุด (Ieb2f3)
- นำตัวดำเนินการที่ไม่จำเป็นออกจากคำจำกัดความของเครื่องหมายเท่ากับหลายรายการ ซึ่งไม่มีผลใดๆ (I6c309)
FontVariation.Settingเป็นอินเทอร์เฟซที่ปิดผนึกไว้เพื่ออนุญาตให้ใช้ API การหนีบในอนาคต (I11021, b/143703328)- เพิ่ม
CompositionGroup.findParametersไปยังSlotTree.ktซึ่งช่วยให้เครื่องมือดึงพารามิเตอร์สำหรับCompositionGroupได้โดยไม่ต้องแยกวิเคราะห์ตารางสล็อตทั้งหมด (I124fe)
เวอร์ชัน 1.3.0-alpha03
10 สิงหาคม 2022
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.3.0-alpha03 เวอร์ชัน 1.3.0-alpha03 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
LayoutCoordinates.findRootCoordinates()พร้อมใช้งานแล้ว (I7fa37, b/204723384)- เพิ่ม API เวอร์ชันทดลองเพื่อรับ
LayoutCoordinatesในPlacementScopeซึ่งจะช่วยให้นักพัฒนาแอปทราบว่าเลย์เอาต์ปัจจุบันอยู่ที่ใดเพื่อวางองค์ประกอบย่อยที่สัมพันธ์กับตำแหน่งของเลย์เอาต์ (I5482b, b/238632578) - เพิ่ม
LayoutCoordinates.transformFromเพื่อรับการเปลี่ยนรูปแบบเมทริกซ์จากLayoutCoordinatesหนึ่งไปยังอีกLayoutCoordinatesหนึ่ง (Ic5ab1, b/238632578) - เลิกใช้งาน
SemanticsModifier.idและย้ายรหัสความหมายไปที่LayoutInfo.semanticsIdแทน (Iac808, b/203559524) - ตอนนี้แบบอักษรของทรัพยากรรองรับการตั้งค่ารูปแบบแบบอักษรแล้ว (API 26 ขึ้นไป) (I900dd, b/143703328)
- การรองรับแบบอักษรที่ปรับแต่งได้ใน
DeviceFontFamilyNameFont(Ic1279, b/143703328) - ตอนนี้ตัวสร้างแบบอักษรยอมรับรายการ
FontVariation.Settingสำหรับการกำหนดค่าแบบอักษรตัวแปรในอุปกรณ์ O+ แล้ว (I11a9d, b/143703328) - เพิ่ม
FontVariationAPI สำหรับการกำหนดและการใช้ฟอนต์ตัวแปร (I3c40c, b/143703328) - ตอนนี้
LineHeightStyle.Alignmentconstructor เป็นแบบสาธารณะแล้ว (ทดลอง) (I4bbbe, b/235876330) - ตอนนี้ย่อหน้าเป็น expect|actual และกำหนดไว้สำหรับ Android และเดสก์ท็อปแล้ว (Id387e, b/239962983)
- ตอนนี้ Interface Paragraph ได้รับการผนึกเป็น Interface Paragarph แล้ว ไม่มี Use Case สำหรับการสร้างคลาสย่อยของย่อหน้า และเราขอแนะนำให้ติดต่อเราหากการเปลี่ยนแปลงนี้ส่งผลกระทบต่อคุณ (If5247, b/239962983)
- นำคำอธิบายประกอบเวอร์ชันทดลองออกจาก
PlatformTextStyleและLineHeightStyleแล้ว (I64bef) - เลิกใช้งาน
TextInputService.show|hideSoftwareKeyboardโปรดใช้SoftwareKeyboardControllerแทนในโค้ดแอป และTextInputSessionในโค้ดการจัดการ IME (I14e4c, b/183448615) - เพิ่ม API ใหม่สำหรับประเภทภาพเคลื่อนไหวที่มีอยู่ (I26179)
การแก้ไขข้อบกพร่อง
- เพิ่ม
@RequiresPermissionลงใน API ที่ต้องให้สิทธิ์POST_NOTIFICATIONSใน SDK 33 ขึ้นไป (Ie542e, b/238790278)
เวอร์ชัน 1.3.0-alpha02
27 กรกฎาคม 2022
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.3.0-alpha02 เวอร์ชัน 1.3.0-alpha02 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มพร็อพเพอร์ตี้
PointerInputChange#pressureใหม่เพื่อดึงข้อมูลแรงดัน (I45a5e, b/205164819) - เพิ่ม
rememberTextMeasurerเพื่อสร้างและจดจำอินสแตนซ์TextMeasurerในการคอมโพสได้อย่างง่ายดาย (I8d66e) - ตอนนี้
Rect,RoundRectและMutableRectรองรับไวยากรณ์inของ Kotlin สำหรับการเรียกฟังก์ชันcontainsแล้ว (Ie42b0, b/238642990) - นำฟังก์ชันที่ไม่จำเป็นออกจาก
KeyInjectionScopeเนื่องจากสามารถใช้ส่วนที่ง่ายกว่าของ API ได้ ฟังก์ชันที่ถูกนำออก ได้แก่pressKeys,keysDownและkeysUp(I81d77) - ปรับโครงสร้างชื่อค่าคงที่และพารามิเตอร์ใน
KeyInjectionScopeเพื่อรวมคำต่อท้าย "Millis" ในกรณีที่หน่วยของค่าคงที่และพารามิเตอร์ดังกล่าวเป็นมิลลิวินาที (Iabef5) - เพิ่ม
toStringForLog()วิธีไปยังEditCommandเพื่อช่วยแก้ปัญหาการแก้ไขข้อความ (I53354, b/228862731) - เพิ่มฟังก์ชันส่วนขยาย
drawTextในDrawScopeเพื่อให้วิธีวาดข้อความหลายรูปแบบใน Composable และ Modifier ที่ทำงานในDrawScopeเช่นCanvasและdrawBehind(I16a62, b/190787898) - เปิดตัว API ทดลองใหม่ที่ชื่อ
TextMeasurerซึ่งช่วยให้คำนวณเลย์เอาต์ข้อความที่กำหนดเองได้ ซึ่งจะสร้างผลลัพธ์ที่เหมือนกับBasicTextโดยไม่ขึ้นอยู่กับรันไทม์ของ Compose (I17101) - เพิ่ม
mapTreeไปยังSlotTree.ktซึ่งจะช่วยให้เครื่องมือตรวจสอบSlotTreeได้โดยไม่ต้องทำสำเนาในหน่วยความจำก่อนเหมือนกับ asTree สำหรับเครื่องมือตรวจสอบเลย์เอาต์ การดำเนินการนี้จะช่วยปรับปรุงประสิทธิภาพได้ประมาณ 10 เท่า (I5e113) - เปลี่ยนการแสดงตัวอย่าง Compose ให้จัดเก็บไว้ในไฟล์เอาต์พุตไบนารี เพื่อให้นักพัฒนาแอปเขียนและนำคำอธิบายประกอบ
MultiPreviewจากไลบรารีกลับมาใช้ใหม่ได้ (I85699, b/233511976)
การแก้ไขข้อบกพร่อง
- เมื่อเพิ่มเหตุการณ์
InputEventChangeลงในเครื่องมือติดตามVelocityเราจะพิจารณาเดลต้าแทนตำแหน่ง ซึ่งจะช่วยให้มั่นใจได้ว่าระบบจะคำนวณความเร็วอย่างถูกต้องในทุกกรณี แม้ว่าองค์ประกอบเป้าหมายจะเคลื่อนที่ (Icea9d, b/216582726, b/223440806, b/227709803) - แก้ไข NPE ที่เกิดจาก
AnnotatedString.toUpperCaseเมื่อมีคำอธิบายประกอบ (I0aca2, b/210899140)
เวอร์ชัน 1.3.0-alpha01
29 มิถุนายน 2022
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.3.0-alpha01 เวอร์ชัน 1.3.0-alpha01 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
LookaheadLayoutใหม่ที่รองรับการส่งผ่านล่วงหน้าก่อนการวัด/เลย์เอาต์จริง ซึ่งจะช่วยให้คำนวณเลย์เอาต์ล่วงหน้าได้เมื่อมีการเปลี่ยนแปลง ขณะเดียวกันก็อนุญาตให้การวัด/เลย์เอาต์หลังการมองไปข้างหน้าใช้ขนาด/ตำแหน่งที่คำนวณไว้ล่วงหน้าเพื่อเคลื่อนไหวขนาดและตำแหน่งไปยังเป้าหมายSubcomposeLayoutsยังไม่รองรับ แต่จะรองรับในรุ่นที่จะเปิดตัวเร็วๆ นี้ (I477f5)- เพิ่มพารามิเตอร์อัลฟ่าที่ไม่บังคับลงในลักษณะพู่กันของ
TextStyleและSpanStyleเพื่อแก้ไขความทึบแสงของTextทั้งหมด (Ic2fac, b/234117635) - เปิดตัว
UrlAnnotationประเภทคำอธิบายประกอบและเมธอดที่เกี่ยวข้องเพื่อรองรับTalkBackการรองรับลิงก์ในAnnotatedString(I1c754, b/231495122) - ย้ายฟังก์ชันการทำงานของยูทิลิตีไปยังรันไทม์ (I4f729)
การแก้ไขข้อบกพร่อง
TextLayoutResult.getLineForOffsetไม่แสดงข้อผิดพลาด (Idc5d6, b/235876324)
การมีส่วนร่วมจากภายนอก
- เพิ่ม API ใหม่
WindowInfo.keyboardModifiersเพื่อสังเกตสถานะภายในฟังก์ชันที่ใช้ได้กับ Compose หรือผ่าน snapshotFlow (Icdb8a)
เวอร์ชัน 1.2
เวอร์ชัน 1.2.1
10 สิงหาคม 2022
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.2.1 เวอร์ชัน 1.2.1 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไข Nullpointer ในเครื่องมือตรวจสอบ (b/237987764)
- แก้ไขข้อยกเว้นการแคสต์ชั้นเรียนระหว่างการจดจำในเครื่องมือตรวจสอบ (b/235526153)
เวอร์ชัน 1.2.0
27 กรกฎาคม 2022
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.2.0 เวอร์ชัน 1.2.0 มีคอมมิตเหล่านี้
การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 1.1.0
การปรับปรุงการไปยังส่วนต่างๆ ด้วยโฟกัส
- ตอนนี้การเลื่อนรายการแบบ Lazy ที่ขับเคลื่อนด้วยโฟกัสใช้งานได้แล้วโดยใช้
BeyondBoundsLayoutcore API ใหม่ - API การปรับแต่งลักษณะการทำงานใหม่ใน
FocusOrderและFocusProperties - ปรับปรุงลักษณะการทำงานเมื่อใช้แป้นพิมพ์จริงหรือรีโมตทีวี
- ตอนนี้การเลื่อนรายการแบบ Lazy ที่ขับเคลื่อนด้วยโฟกัสใช้งานได้แล้วโดยใช้
API ใหม่สำหรับ
- ส่วนที่เว้นไว้ในหน้าต่าง
- องค์ประกอบพื้นฐานหลักสำหรับภาพเคลื่อนไหวที่ขับเคลื่อนด้วยท่าทางสัมผัส ภาพเคลื่อนไหวแบบวนซ้ำ และภาพเคลื่อนไหวของเลย์เอาต์
GraphicsLayerรวมถึงRenderEffect
แก้ไขข้อบกพร่องและปรับปรุงประสิทธิภาพหลายรายการ
เวอร์ชัน 1.2.0-rc03
29 มิถุนายน 2022
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.2.0-rc03 เวอร์ชัน 1.2.0-rc03 มีคอมมิตเหล่านี้
- ไม่มีการเปลี่ยนแปลงตั้งแต่เวอร์ชัน 1.2.0-rc02
เวอร์ชัน 1.2.0-rc02
22 มิถุนายน 2022
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.2.0-rc02 เวอร์ชัน 1.2.0-rc02 มีคอมมิตเหล่านี้
เวอร์ชัน 1.2.0-rc01
15 มิถุนายน 2022
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.2.0-rc01 เวอร์ชัน 1.2.0-rc01 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ตอนนี้อินเทอร์เฟซในไลบรารี Compose สร้างขึ้นโดยใช้เมธอดอินเทอร์เฟซเริ่มต้นของ jdk8 (I5bcf1)
- เพิ่มฟังก์ชันลำดับที่สูงกว่าลงใน
KeyInjectionScopeสำหรับการแทรกการกดแป้นขณะที่กดแป้นอื่นค้างไว้หรือเปิด/ปิด ฟังก์ชันเหล่านี้ ได้แก่withKeysDown,withKeysToggledเป็นต้น นอกจากนี้ ยังเพิ่มพร็อพเพอร์ตี้สำหรับตรวจสอบว่ากดปุ่ม Meta ใดปุ่มหนึ่งค้างไว้หรือไม่ เช่นisCtrlDownเพื่อตรวจสอบว่ากดปุ่มควบคุมปุ่มใดปุ่มหนึ่งค้างไว้หรือไม่ โปรดดูเอกสารประกอบเกี่ยวกับแต่ละฟังก์ชันในKeyInjectionScope(I9f6cd, b/229831515) - เราได้เปิดตัว
OverscrollEffectเวอร์ชันทดลองเพื่ออนุญาตให้ใช้เอฟเฟกต์การเลื่อนเกินแบบกำหนดเองควบคู่ไปกับโอเวอร์โหลดModifier.scrollableที่ยอมรับเอฟเฟกต์ดังกล่าว LocalOverScrollConfigurationเวอร์ชันทดลองได้ย้ายจากfoundation.gestureไปยังแพ็กเกจพื้นฐานและเปลี่ยนชื่อเป็นLocalOverscrollConfiguration(If19fb, b/204650733)- เปลี่ยนชื่อ
runComposeUiTestWithoutActivity {}เป็นrunEmptyComposeUiTest {}เพื่อให้สอดคล้องกับcreateEmptyComposeRule()(I6fed7)
เวอร์ชัน 1.2.0-beta03
1 มิถุนายน 2022
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.2.0-beta03 เวอร์ชัน 1.2.0-beta03 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม
pressKeyTimesรวมถึงisCapsLockOnและเพื่อนๆ ลงในKeyInjectionScopeแล้ว นอกจากนี้ ตอนนี้ API ยังรองรับรูปแบบการแทรกที่รวมเมาส์และแป้นพิมพ์ เช่น การคลิกปุ่มเมาส์ขณะกดปุ่ม Meta ค้างไว้ (I4c8da, b/229831515) - เพิ่มการรองรับการแทรกเหตุการณ์สำคัญในเวอร์ชันทดลอง ใช้
performKeyInputเพื่อส่งเหตุการณ์สำคัญ หรือส่งผ่านพร็อพเพอร์ตี้keyของMultiModalInjectionScopeระหว่างท่าทางสัมผัสการป้อนข้อมูลหลายรูปแบบด้วยperformMultiModalInputดูเอกสารประกอบของ API ได้ที่KeyInjectionScope(Ic5000, b/229831515) - เพิ่ม
GoogleFont.Provider.AllFontsListUriใหม่สำหรับการดึงแหล่งที่มาของอินเทอร์เน็ตที่เชื่อถือได้ของ Google Fonts ที่ Android รองรับ - ปรับปรุงข้อความแสดงข้อผิดพลาดที่ส่งต่ออีกครั้งเมื่อ GoogleFonts โหลดใน Compose ไม่สำเร็จ (I0416c)
การแก้ไขข้อบกพร่อง
- เมื่อเพิ่มเหตุการณ์
InputEventChangeลงในเครื่องมือติดตามความเร็ว เราจะพิจารณาเดลต้าแทนตำแหน่ง ซึ่งจะช่วยให้มั่นใจได้ว่าระบบจะคำนวณความเร็วอย่างถูกต้องในทุกกรณี แม้ว่าองค์ประกอบเป้าหมายจะเคลื่อนที่ (I51ec3, b/216582726, b/223440806, b/227709803) - ตอนนี้ระบบจะใช้
Show Layout Boundsกับการเขียนคอมโพสได้ทันทีหลังจากสลับจากไทล์การตั้งค่าด่วน โดยไม่ต้องออกจากกิจกรรมแล้วกลับเข้าไปใหม่ (I843d5, b/225937688) - การค้นหาสตริงการช่วยเหลือพิเศษจะไม่ทริกเกอร์การโหลดแบบอักษร ก่อนหน้านี้ ระบบจะพยายามโหลดแบบอักษรสำหรับ
StyleSpansซึ่ง จะทำให้เกิดข้อขัดข้องหากมีการเขียนทับFontFamily.Resolver(I4609d) - การกดแป้นลบไปข้างหน้าเมื่อเคอร์เซอร์อยู่ที่ท้ายช่องข้อความจะไม่ทำให้เกิดข้อขัดข้องอีกต่อไป
- ตอนนี้
DeleteSurroundingTextCommandและDeleteSurroundingTextInCodePointsCommandกำหนดให้อาร์กิวเมนต์ของตัวสร้างต้องไม่เป็นค่าลบ (Ica8e6, b/199919707)
เวอร์ชัน 1.2.0-beta02
18 พฤษภาคม 2022
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.2.0-beta02 เวอร์ชัน 1.2.0-beta02 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- การนำฟังก์ชันการทำงานในตัวอย่างประเภทอื่นๆ กลับมาใช้ใหม่ (I19f39)
การแก้ไขข้อบกพร่อง
ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainerเปลี่ยนชื่อเป็นDisposeOnDetachedFromWindowOrReleasedFromPoolเพื่อให้สะท้อนถึงกรณีที่เกิดการจำหน่ายได้ดีขึ้น แทนที่จะเป็นเพียงกรณีที่ไม่มีการจำหน่าย (If15ca)
เวอร์ชัน 1.2.0-beta01
11 พฤษภาคม 2022
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.2.0-beta01 เวอร์ชัน 1.2.0-beta01 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- นี่คือรุ่นเบต้า 1.2 รุ่นแรก
การเปลี่ยนแปลง API
- เพิ่ม
BeyondBoundsIntervalเวอร์ชันทดลองที่การติดตั้งใช้งานLazyListที่กำหนดเองใช้ได้เมื่อจัดวางไอเทมเกินขอบเขตที่มองเห็นได้ (Ifabfb, b/184670295) - ตอนนี้เวอร์ชันที่ใช้คีย์ของ
Modifier.composedเป็น API ที่เสถียรแล้ว (Ie65e4, b/229988420) - ปรับปรุง
rememberNestedScrollConnectionAPI ให้ใช้ CompositionLocal เพื่อรับข้อมูลมุมมองปัจจุบัน (I67ca7) - ตอนนี้คุณสามารถใช้
@ComposableTargetคำอธิบายประกอบและคำอธิบายประกอบที่ทำเครื่องหมายด้วย@ComposableTargetMarkerในขอบเขตไฟล์ได้โดยใช้คำนำหน้า@fileการใช้คำอธิบายประกอบเป้าหมายที่ขอบเขตไฟล์จะทำให้คอมไพเลอร์ถือว่าฟังก์ชันที่ประกอบกันได้ทั้งหมดในไฟล์มีไว้เพื่อกำหนดเป้าหมาย Applier ที่เชื่อมโยง เช่น การใช้@file:UiComposableจะประกาศว่าฟังก์ชัน@Composableทั้งหมดกำหนดเป้าหมายไปยังตัวใช้ UI ของ Compose ฟังก์ชันที่ต้องกำหนดเป้าหมายผู้ใช้รายอื่นต้องระบุคำอธิบายประกอบเครื่องหมายเป้าหมายอย่างชัดเจนสำหรับผู้ใช้ที่ต้องการ (I40804) เปิดตัว API ทดสอบใหม่ที่ทดลองใช้ได้ ไม่ขึ้นกับแพลตฟอร์ม:
interface ComposeUiTestและfun runComposeUiTest(block: ComposeUiTest.() -> Unit)ซึ่งใช้เพื่อเรียกใช้การทดสอบ UI ของ Compose ได้ โดยไม่ต้องมีTestRuleหากต้องการเรียกใช้การทดสอบโดยไม่มีComposeTestRuleให้ส่งการทดสอบเป็น Lambda ไปยังrunComposeUiTestและใช้วิธีการและสมาชิกในขอบเขตตัวรับComposeUiTestซึ่งเป็นรายการเดียวกันกับในComposeContentTestRuleระบบจะเพิ่ม
interface AndroidComposeUiTestและfun runAndroidComposeUiTest(block: AndroidComposeUiTest.() -> Unit)เฉพาะของ Android เพื่อให้สิทธิ์เข้าถึง Activity พื้นฐาน ซึ่งคล้ายกับAndroidComposeTestRuleหากต้องการควบคุมมากยิ่งขึ้น คุณสามารถสร้างอินสแตนซ์ของclass AndroidComposeUiTestEnvironmentเองได้การติดตั้งใช้งานบนเดสก์ท็อปคือ
class DesktopComposeUiTestแต่ขณะนี้ยังไม่มีฟังก์ชันการเรียกใช้เฉพาะเดสก์ท็อปการย้ายข้อมูลการทดสอบจาก
ComposeTestRuleไปยังComposeUiTestสามารถทำได้ ดังนี้ (ตัวอย่าง Android) จาก:@RunWith(AndroidJUnit4::class) class MyTest { @get:Rule val rule = createComposeRule() @Test fun test() { rule.setContent { Text("Hello Compose!") } rule.onNodeWithText("Hello Compose!").assertExists() } }ถึง:
@RunWith(AndroidJUnit4::class) class MyTest { @Test @OptIn(ExperimentalTestApi::class) fun test() = runComposeUiTest { setContent { Text("Hello Compose!") } onNodeWithText("Hello Compose!").assertExists() } }ในตอนนี้
ComposeContentTestRuleและComposeTestRuleยังไม่ได้ขยายจากComposeUiTestซึ่งหมายความว่าฟังก์ชันส่วนขยายในComposeUiTestยังเรียกใช้ในอินเทอร์เฟซTestRuleไม่ได้ เมื่อComposeUiTestเปลี่ยนเป็น API ที่เสถียรแล้ว เราจะเปลี่ยนComposeContentTestRuleและComposeTestRuleให้ขยายจากComposeUiTest(Ib4e90)เปลี่ยนชื่อ
LineHeightBehaviorเป็นLineHeightStyleเปลี่ยนชื่อ
LineVerticalAlignmentเป็นLineHeightStyle.Alignmentเปลี่ยนชื่อ
LineHeightTrimเป็นLineHeightStyle.Trimนำค่าเริ่มต้นของตัวสร้างออกจาก
LineHeightStyle(I582bf, b/181155707)เพิ่ม
Brushไปยัง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)ฟังก์ชัน
PlatformParagraphStyle.lerpและPlatformSpanStyle.lerpเปลี่ยนเป็นฟังก์ชันระดับบนสุด (I9a268)
การแก้ไขข้อบกพร่อง
- ตอนนี้เอกสารประกอบของ
PointerInputChange::copyระบุอย่างถูกต้องว่าเป็นการคัดลอกแบบตื้น (I182f5) - รองรับจุดไข่ปลาเมื่อความสูงถูกจำกัดและไม่พอดีกับข้อความทุกบรรทัด (Ie528c, b/168720622)
- เปิดอยู่โดยค่าเริ่มต้น
includeFontPaddingคุณสามารถปิดincludeFontPaddingได้โดยใช้แอตทริบิวต์TextStyle.platformTextStyleในอนาคตอันใกล้นี้ เราจะเปลี่ยนลักษณะการทำงานเริ่มต้น แต่ในระหว่างนี้ การดำเนินการนี้จะช่วยให้เราผสานรวมการปรับปรุงความสูงของบรรทัด (aosp/2058653) ได้ดียิ่งขึ้น และแก้ปัญหาการตัดTextFieldได้ (I01423, b/171394808)
การมีส่วนร่วมจากภายนอก
MouseInjectionScope.scroll(delta = someDelta)จะกลับด้านใน Android หากเราเลื่อนในแนวตั้ง (หาก someDelta เป็นบวก ระบบจะเลื่อนลง) (Ifb697, b/224992993)
เวอร์ชัน 1.2.0-alpha08
20 เมษายน 2022
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.2.0-alpha08 เวอร์ชัน 1.2.0-alpha08 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- เราทำเครื่องหมายฟังก์ชัน
pluralStringResourceว่าเป็นฟังก์ชันทดลองเพื่ออนุญาตให้มีการพัฒนาเพื่อรองรับการแปลภาษาได้ดียิ่งขึ้นในอนาคต (If24e4) - ตอนนี้ Paragraph และ MultiParagraph ยอมรับพารามิเตอร์ข้อจำกัดแล้ว การส่ง
Constraints.maxHeightจะไม่มีผลในตอนนี้ แต่จะช่วยให้เราทำการคำนวณบางอย่างได้ในอนาคต เช่น การละข้อความตามความสูง (I6afee, b/168720622) SubcomposeSlotReusePolicy.getSlotsToRetain()ตอนนี้ยอมรับคลาสที่กำหนดเองซึ่งคล้ายกับ MutableSet ซึ่งไม่อนุญาตให้เพิ่มรายการใหม่ในคลาส (Icd314)- ตอนนี้ PointerIcon เป็นอินเทอร์เฟซ
@Stableแล้ว (I9dafe) - การดูบางส่วน (ลงหรือตำแหน่ง) เลิกใช้งานแล้วใน
PointerInputChangeคุณใช้consume()เพื่อใช้การเปลี่ยนแปลงทั้งหมดได้ คุณใช้isConsumedเพื่อดูว่ามีบุคคลอื่นใช้การเปลี่ยนแปลงไปก่อนหน้านี้หรือไม่ PointerInputChange::copy()จะสร้างสำเนาแบบตื้นเสมอ ซึ่งหมายความว่าระบบจะใช้สำเนาของPointerInputChangeเมื่อมีการใช้สำเนาใดสำเนาหนึ่ง หากต้องการสร้างPointerInputChangeที่ไม่มีขอบเขต ให้ใช้เครื่องมือสร้างแทน (Ie6be4, b/225669674)- เปิดใช้การทำงานร่วมกันของการเลื่อนที่ซ้อนกันระหว่าง Compose กับ View ในทิศทาง Compose > View ซึ่งหมายความว่าองค์ประกอบหลักที่ใช้เขียนจะรับเดลต้าการเลื่อนที่ซ้อนกันจาก NestedScrollView ได้ (If7949, b/174348612)
SemanticsProperty testTagsAsResourceIdใหม่ ซึ่งใช้เพื่อทำให้ Compose สอดคล้องกับการทดสอบ UIAutomator ที่ออกแบบมาสำหรับระบบ View (I39c20)- แสดงความหนาทั้งหมดที่มีสำหรับแบบอักษรของระบบใน Android เมื่อใช้
FontFamily.SansSerifซึ่งจะใช้ชื่อแบบอักษรสำรอง เช่น sans-serif-medium ภายใน API 21-28 นี่เป็นการเปลี่ยนแปลงลักษณะการทำงาน เนื่องจากก่อนหน้านี้ API 21-28 รองรับเฉพาะน้ำหนัก 400 และ 700 (I380fe, b/156048036, b/226441992) - ผู้สอนย่อหน้าและหลายย่อหน้าได้เรียงลำดับอาร์กิวเมนต์ตำแหน่งใหม่ให้อยู่ก่อนอาร์กิวเมนต์ที่ไม่บังคับ (Idafaa)
- ตอนนี้
AndroidFontใช้ typefaceLoader เป็นพารามิเตอร์ของตัวสร้าง (I2c971)
เวอร์ชัน 1.2.0-alpha07
6 เมษายน 2022
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.2.0-alpha07 เวอร์ชัน 1.2.0-alpha07 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มฟังก์ชันใหม่
Snapshot.withoutReadObservation { ... }แล้ว ซึ่งช่วยให้ผู้ใช้เรียกใช้ Lambda ที่ส่งผ่านได้โดยไม่ต้องสมัครรับข้อมูลการเปลี่ยนแปลงค่าสถานะที่อ่านในระหว่างบล็อกนี้ คุณอาจพบว่าฟีเจอร์นี้มีประโยชน์ในกรณีการใช้งานที่คุณต้องการใช้ประโยชน์จากการเขียน/อ่านที่ปลอดภัยแบบเธรดตามสแนปชอต แต่ต้องการอ่านค่าได้โดยไม่ต้องทำให้เกิดการจัดองค์ประกอบหรือการวัดซ้ำที่ไม่จำเป็น (I9f365, b/214054486) consumeWindowInsetsคุณสมบัติส่วนขยายของComposeViewช่วยให้นักพัฒนาแอปปิดใช้การใช้ AndroidWindowInsetsได้ ซึ่งช่วยให้ComposeViewsแยกกันในลำดับชั้นสามารถใช้WindowInsetsได้โดยไม่รบกวนกัน (I0ef08, b/220943142)- เพิ่ม
KeyboardType.Decimalเป็นทางเลือกแทนKeyboard.Numberเพื่อรวมตัวคั่นทศนิยมใน IME โดยเฉพาะ (Iec4c8, b/209835363) PointerEventType.ScrollและPointerEvent.scrollDeltaเป็น API ที่เสถียรแล้ว (I574c5, b/225669674)- เปิดใช้การทำงานร่วมกันของการเลื่อนที่ซ้อนกันระหว่าง View กับ Compose สำหรับคลาส View ที่ทำงานร่วมกัน ซึ่งหมายความว่าตอนนี้ Compose สามารถส่งส่วนต่างของการเลื่อนไปยัง View ระดับบน (ที่ทำงานร่วมกัน) ได้แล้ว (I5d1ac, b/174348612)
- อัปเดต
FontFamily.Resolverเพื่อผสานรวมการตั้งค่าการช่วยเหลือพิเศษสำหรับข้อความตัวหนาทั้งระบบ (I6c1e7) Font(AssetManager, String, ...)เลิกใช้งานแล้วและแทนที่ด้วยFont(String, AssetManager, ...)นี่คือ API เวอร์ชันทดลอง (I1c7a4)- เพิ่มตัวอธิบายแบบอักษรใหม่
Font(DeviceFontFamilyName)เพื่อค้นหาแบบอักษรที่ติดตั้งในระบบในระหว่างเชนการสำรองแบบอักษร (ไม่บังคับ) (I30468, b/219754572) - เพิ่มการกำหนดค่าความเข้ากันได้ชั่วคราวสำหรับ
includeFontPaddingใน TextStyle/ParagraphStyleincludeFontPaddingเปลี่ยนได้ผ่านTextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false))นี่เป็นตัวเลือกการกำหนดค่าชั่วคราวเพื่อเปิดใช้การย้ายข้อมูลและจะถูกนำออก (If47be, b/171394808) - เพิ่มส่วนขยาย
GoogleFont.Provider.isAvailableOnDeviceเพื่อรับความช่วยเหลือในการแก้ไขข้อบกพร่อง (I64e31) - เพิ่มตัวสร้าง
GoogleFont.Providerเพื่อใช้กับ@ArrayRes(Ic5ee1, b/225984280) - ตอนนี้
Compose GoogleFontเปลี่ยนชื่อเป็นFont(GoogleFont)แล้ว แต่ API ยังคงมีความเสถียร (I125f2)
การแก้ไขข้อบกพร่อง
- เพิ่มการตรวจสอบ Lint ใน Material/Scaffold เพื่อให้แน่ใจว่ามีการใช้ระยะเว้นภายใน (Ifb111)
เวอร์ชัน 1.2.0-alpha06
23 มีนาคม 2022
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.2.0-alpha06 เวอร์ชัน 1.2.0-alpha06 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มการดำเนินการตามความหมาย
RequestFocusเพื่อขอโฟกัสที่เป้าหมายที่โฟกัสได้ (I17b71) - อัปเดตการแยกวิเคราะห์ Vector Drawable เพื่อรองรับการมิเรอร์อัตโนมัติเพื่อพลิกเนื้อหาของ
VectorPainterหากเลย์เอาต์ปัจจุบัน เป็นแบบ RTL (I79cd9, b/185760237) อัปเดตสีเงา/สีโดยรอบให้เป็นพารามิเตอร์ต่อท้ายของ
Modifier.graphicsLayerเพื่อความเข้ากันได้ของ API (I3f864, b/160665122)เพิ่มการใช้งานเริ่มต้นให้กับสีเงา/สีโดยรอบใน
GraphicsLayerScopeเพื่อให้มั่นใจว่าการเปลี่ยนแปลง API จะไม่ทำให้เกิดข้อผิดพลาดเพิ่มเวลาของกิจกรรมลงในกิจกรรม RSB (Ief8ae)
ตอนนี้เราได้รวม
FocusOrderเข้ากับFocusPropertiesแล้ว และfocusProperties()ก็มีความสามารถทั้งหมดของfocusOrder()แล้วFocusOrderและfocusOrder()เลิกใช้งานแล้วfocusOrder()ที่ยอมรับfocusRequesterควรแทนที่ด้วยตัวแก้ไขfocusRequester()ร่วมกับfocusProperties()ซึ่งช่วยให้ตัวแก้ไขแยกความกังวลได้ชัดเจนยิ่งขึ้น (I601b7)การอัปเกรดทั้ง
RecyclerViewและComposeจะส่งผลให้ประสิทธิภาพการเลื่อนของ RecyclerView ที่มีมุมมอง Compose เป็นองค์ประกอบย่อยดีขึ้นมากเพิ่ม
ViewCompositionStrategy.Defaultเป็นวิธีการดึงกลยุทธ์เริ่มต้นในตัวเพิ่ม
ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainerซึ่งเป็นกลยุทธ์เริ่มต้นใหม่และจัดการคอนเทนเนอร์การจัดกลุ่มอย่างเหมาะสม เช่น RecyclerView (If7282)เพิ่มการรองรับการใส่คำอธิบายประกอบในคลาสคำอธิบายประกอบด้วย @Preview เป็นขั้นตอนแรกในการเพิ่มฟีเจอร์ Multipreview โดยสามารถใช้คำอธิบายประกอบดังกล่าวเพื่อใส่คำอธิบายประกอบในเมธอดที่ประกอบได้หรือคลาสคำอธิบายประกอบอื่นๆ ซึ่งจะถือว่ามีการใส่คำอธิบายประกอบโดยอ้อมด้วย @Preview ที่ระบุ (I12eff)
เพิ่มอุปกรณ์อ้างอิงลงในรายการอุปกรณ์สำหรับ @Preview (I071c9)
การแก้ไขข้อบกพร่อง
- อัปเดต API กราฟิกแบบเวกเตอร์ให้ใช้คำอธิบายประกอบที่เหมาะสมซึ่งก็คือ @VectorComposable แทน @UiComposable (I942bc)
- นำ crossinline ออกจาก
AnnotatedString.Builder.withStyle(If84d5)
การมีส่วนร่วมจากภายนอก
- compose-ui: เพิ่มพร็อพเพอร์ตี้
ambientShadowColorและspotShadowColorลงในGraphicsLayerScope(I1ba1a, b/160665122) - ตอนนี้ระบบรองรับทรัพยากรแบบพหูพจน์ผ่านฟังก์ชัน
pluralStringResourceแล้ว (Ib2f23, b/191375123)
เวอร์ชัน 1.2.0-alpha05
9 มีนาคม 2022
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.2.0-alpha05 เวอร์ชัน 1.2.0-alpha05 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ตอนนี้
TextToolbarรับอาร์กิวเมนต์ lambda แทนActionCallbackแล้ว (Ib2eb9, b/197950089) - อัปเดตค่า Null ใน Core และ Appcompat ให้ตรงกับ Tiramisu DP2 (I0cbb7)
- ตอนนี้อินเทอร์เฟซที่วัดได้จะแสดงพร็อพเพอร์ตี้ parentData (I3313f)
Modifier.onPlacedและอินเทอร์เฟซOnPlacedModifierมีความเสถียรแล้ว (Ib5482)- ไชโย! ตอนนี้ Compose Animation รองรับการตั้งค่า "สเกลระยะเวลาของ Animator" จากตัวเลือกสำหรับนักพัฒนาซอฟต์แวร์แล้ว (I5a4fc, b/161675988)
- เพิ่มตัวแก้ไข
BeyondBoundsLayoutlocal (If8b51, b/184670295) - ข้อความ: ตอนนี้ระบบจะปิด includeFontPadding โดยค่าเริ่มต้น
includeFontPadding=falseปัญหาการตัดข้อความอันเป็นผลมาจากincludeFontPadding=falseได้รับการจัดการแล้ว และไม่ควรมีการตัดข้อความสำหรับสคริปต์ที่มีความยาว (I31c84, b/171394808)
การแก้ไขข้อบกพร่อง
ComposeContentTestRule.setContentจะแสดงข้อผิดพลาดIllegalStateExceptionหากคุณพยายามตั้งค่าเนื้อหาเมื่อมีเนื้อหาอยู่แล้ว (I888a5, b/199631334)- แก้ไขข้อขัดข้องที่เกิดจากเนื้อหาในคลิปบอร์ดขณะอ่านจากคลิปบอร์ดใน Android (I06020, b/197769306)
- ปรับปรุงตัวอย่างการเลื่อน RSB (I6a596)
การมีส่วนร่วมจากภายนอก
- อัปเดตให้ใช้ Kotlinx coroutines 1.6.0 (I3366d)
เวอร์ชัน 1.2.0-alpha04
23 กุมภาพันธ์ 2022
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.2.0-alpha04 เวอร์ชัน 1.2.0-alpha04 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
เพิ่ม
ComposableTarget,ComposableTargetMarkerและComposableOpenTargetที่ช่วยให้รายงานเวลาคอมไพล์ได้เมื่อ มีการเรียกฟังก์ชันที่ประกอบกันได้ซึ่งกำหนดเป้าหมายไปยัง Applier ที่ไม่ได้ ออกแบบมาให้ใช้ในกรณีส่วนใหญ่ ปลั๊กอินคอมไพเลอร์ Compose จะอนุมานคำอธิบายประกอบได้ ดังนั้นการใช้คำอธิบายประกอบเหล่านี้โดยตรงจึงไม่ค่อยเกิดขึ้น กรณีที่อนุมานไม่ได้ ได้แก่ การสร้างและ การใช้ Applier ที่กำหนดเอง ฟังก์ชันที่ประกอบกันได้แบบนามธรรม (เช่น เมธอดอินเทอร์เฟซ) ฟิลด์ หรือตัวแปรร่วมที่เป็น แลมบ์ดาที่ประกอบกันได้ (ระบบจะอนุมานตัวแปรและพารามิเตอร์ภายใน) หรือเมื่อใช้
ComposeNodeหรือฟังก์ชันที่ประกอบกันได้ที่เกี่ยวข้องสำหรับตัวใช้ที่กำหนดเอง ฟังก์ชันที่ประกอบกันได้ซึ่งเรียกใช้
ComposeNodeหรือReusableComposeNodeต้องเพิ่ม คำอธิบายประกอบComposableTargetสำหรับฟังก์ชันและประเภทพารามิเตอร์แลมบ์ดาที่ประกอบกันได้ อย่างไรก็ตาม เราขอแนะนำ ให้สร้างคำอธิบายประกอบที่มีคำอธิบายประกอบเป็นComposableTargetMarkerแล้วใช้คำอธิบายประกอบที่ทำเครื่องหมาย แทนComposableTargetโดยตรง คำอธิบายประกอบที่ประกอบได้ ซึ่งทำเครื่องหมายด้วยComposableTargetMarkerจะเทียบเท่ากับComposbleTargetที่มีชื่อที่สมบูรณ์ในตัวเองของแอตทริบิวต์ คลาสเป็นพารามิเตอร์แอปพลิเคชัน ดูตัวอย่างการใช้ComposableTargetMarkerได้ที่anroidx.compose.ui.UiComposable(I38f11)Font(resId, ...)ตอนนี้ใช้ loadingStrategy ใน API ที่เสถียรแล้ว (Ief3d2)FontLoadingStrategyเป็น API ที่เสถียรแล้ว (I1ee35, b/174162090)รองรับการโหลดแบบอักษรแบบไม่พร้อมกันในข้อความ (I77057, b/214587005)
เพิ่ม Bridge API เพื่อแปลง
Font.ResourceLoaderที่กำหนดเองเป็นFontFamily.Resolver(Ia0060)
การแก้ไขข้อบกพร่อง
- โดยจะส่ง
FontFamily.Resolverไปยังองค์ประกอบย่อย เช่น ป๊อปอัป - โดยจะส่ง
Font.ResourceLoaderไปยังองค์ประกอบย่อย เช่น ป๊อปอัป (I48fa5)
เวอร์ชัน 1.2.0-alpha03
9 กุมภาพันธ์ 2022
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.2.0-alpha03 เวอร์ชัน 1.2.0-alpha03 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- ตอนนี้เราเลิกใช้งานเมธอด
notifyFocusedRectในTextInputSessionและTextInputServiceแล้ว และจะไม่เรียกใช้เมธอดดังกล่าว โปรดใช้BringIntoViewRequesterแทน (Ia4302, b/192043120, b/216842427, b/178211874) - เปิดตัวเมธอด
destroyDisplayListDataในคลาส Stub ของRenderNode(I1e659, b/216660268) - เพิ่ม API ใหม่ที่ช่วยให้วัดขนาดล่วงหน้าขององค์ประกอบย่อยของ
SubcomposeLayoutที่คุณคอมโพสล่วงหน้าได้ (I857ea) เพิ่ม
movableContentOfซึ่งแปลง Composable Lambda เป็น Lambda ที่ย้ายสถานะและโหนดที่เกี่ยวข้อง ไปยังตำแหน่งใหม่ที่เรียกใช้ เมื่อการโทรครั้งก่อนออกจาก การคอมโพส ระบบจะเก็บรักษาสถานะไว้ชั่วคราว และหากมีการโทรใหม่ ไปยัง Lambda เข้าสู่การคอมโพส ระบบจะย้ายสถานะและโหนดที่เชื่อมโยง ไปยังตำแหน่งของการโทรใหม่ หากไม่มีการเพิ่มการโทรใหม่ ระบบจะนำสถานะออกอย่างถาวรและจะแจ้งให้ผู้สังเกตการณ์ที่จดจำทราบหากมีการเรียกใช้
movableContentOfLambda หลายครั้งในการ คอมโพสเดียวกัน ระบบจะสร้างสถานะและโหนดใหม่สำหรับการเรียกใช้แต่ละครั้ง และเมื่อ การเรียกใช้สิ้นสุดลงและมีการเรียกใช้ใหม่ สถานะจะย้าย จากการเรียกใช้ที่สิ้นสุดครั้งแรกไปยังการเรียกใช้ใหม่ตามลำดับการเรียกใช้ ระบบจะนำสถานะทั้งหมดที่การเรียกใหม่ไม่ได้อ้างสิทธิ์ออกอย่างถาวร (Ib4850)FontFamilyResolverพร้อมให้บริการแล้วผ่านLocalFontFamilyResolver.currentเพิ่ม
createFontFamilyResolver(context)และcreateFontFamilyResolver(context, coroutineScope)เพื่อสร้างตัวแก้ไข FontFamily ใหม่นอกเหนือจากการใช้งาน Composeตอนนี้ Paragraph และ MultiParagraph ใช้เวลา
FontFamily.Resolverตอนนี้
TextLayoutResult.layoutInput.fontFamilyResolverมี รีโซลเวอร์ที่ใช้สำหรับเลย์เอาต์นี้ ซึ่งเลิกใช้งานแล้วTextLayoutResult.layoutInput.resourceLoaderเนื่องจากไม่ได้ใช้แล้ว (Id5a45, b/174162090)รองรับการโหลดแบบอิงค์และแบบไม่บังคับ พร้อมลักษณะการทำงานสำรอง เส้นทางนี้ใช้โดย Text และ TextField และแสดงผ่าน FontFamilyResolver
การรองรับการโหลดแบบอักษรล่วงหน้าผ่าน
FontFamilyResolver.preloadFontFamilyResolver.setAsyncLoadContextอนุญาตให้ตั้งค่า บริบทของโครูทีนส่วนกลางที่ใช้ในการโหลดแบบอักษรแบบไม่พร้อมกัน (I87fe8, 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) แทนตอนนี้เราเลิกใช้งานเครื่องมือสร้าง
SubcomposeLayoutStateที่รับmaxSlotsToRetainForReuseแล้ว แต่จะมีตัวสร้างใหม่ที่รับSubcomposeSlotReusePolicyซึ่งเป็นอินเทอร์เฟซใหม่ที่ช่วยให้ควบคุมได้อย่างละเอียดมากขึ้นว่าจะเก็บช่องใดไว้เพื่อนำกลับมาใช้ใหม่ในอนาคต (I52c4d)แสดงฟังก์ชัน HSV และ HSL ใน
Colorเป็น API ที่ไม่ใช่เวอร์ชันทดลอง ตอนนี้พื้นที่สี Oklab เป็น API สาธารณะแล้ว (I08fb6, b/180731008)เลิกใช้งาน
AndroidComposeTestRule.AndroidComposeStatementซึ่งไม่ได้มีไว้ใน API สาธารณะและไม่ได้ทำอะไรให้คุณ อยู่แล้ว (Ibc46b)เปลี่ยนชื่อคลาส kt ที่สร้างขึ้นภายใน (Ia0b9e, b/174162090)
นำออก
FontLoadingStrategy.values(I42a9d, b/174162090)ตอนนี้ตัวโหลดแบบอักษรส่วนกลางเปลี่ยนชื่อเป็น
FontFamilyResolverแล้ว (I4f773, b/174162090)ใช้ระบบการโหลดแบบอักษรใหม่สำหรับเดสก์ท็อป (I9ce5c, b/174162090)
FontFamily.Resolver.resolvereturnsState<Any>(I4406c, b/174162090)
การแก้ไขข้อบกพร่อง
- ตอนนี้ TextField จะอยู่เหนือแป้นพิมพ์เมื่อมีการโฟกัสและแป้นพิมพ์แสดงขึ้น เมื่อโหมดป้อนข้อมูลแบบนุ่มเป็น
ADJUST_PAN(I8eaeb, b/190539358, b/192043120) - เดสก์ท็อปใช้การคอมโพสิตในเครื่องสำหรับ
FontFamily.Resolver - เราเลิกใช้งานเดสก์ท็อป
FontLoaderแล้ว - ฟีเจอร์ใหม่ใน
createFontFamilyResolverบนเดสก์ท็อป (I6bbbb, b/174162090) - ประเภทการป้อนข้อมูลด้วยแป้นพิมพ์เสมือนจะไม่กะพริบอีกต่อไปเมื่อเปลี่ยน โฟกัสระหว่างช่องข้อความ (I1bf50, b/187746439)
เวอร์ชัน 1.2.0-alpha02
26 มกราคม 2022
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.2.0-alpha02 เวอร์ชัน 1.2.0-alpha02 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม
Modifier.onRotaryScrollEvent()และModifier.onPreRotaryScrollEvent()สำหรับอุปกรณ์สวมใส่ที่มีปุ่มด้านข้างแบบหมุน (I18bf5, b/210748686) - เพิ่มส่วนขยาย
View.createLifecycleAwareRecomposerเวอร์ชันทดลอง (I0cde6)
การมีส่วนร่วมจากภายนอก
PointerEvent.scrollDelta.yใน Android จะกลับด้านแล้ว (ตอนนี้จะแสดงผลเป็น 1 แทน -1 หากเราเอียงล้อเมาส์ไปทางขวา) (Ia9811)
เวอร์ชัน 1.2.0-alpha01
12 มกราคม 2022
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.2.0-alpha01 เวอร์ชัน 1.2.0-alpha01 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- เลิกใช้งานแล้ว
FontFamily.canLoadSynchronouslyพร็อพเพอร์ตี้นี้ไม่มีความหมายเชิงความหมาย (Ica5ef) - เพิ่มฟิลด์ข้อมูลประจำตัวลงใน
CompositionDataเพื่อสร้าง รหัสที่ไม่เปลี่ยนแปลงในเครื่องมือตรวจสอบเลย์เอาต์ (Ic116e) - เพิ่มรหัสอุปกรณ์ Wear OS ลงในรายการอุปกรณ์ตัวอย่าง (I93232)
การอัปเดตทรัพยากร Dependency
- ตอนนี้ต้องใช้ Kotlin
1.6.10
เวอร์ชัน 1.1
เวอร์ชัน 1.1.1
23 กุมภาพันธ์ 2022
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*: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.ui:ui-*: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 ระบบจะปฏิบัติตามข้อกำหนดขั้นต่ำสำหรับการช่วยเหลือพิเศษของเป้าหมายการสัมผัส
- การรองรับแถบนำทางด้านข้างที่เสถียร
- เปลี่ยน API แบบทดลองก่อนหน้านี้หลายรายการให้เป็น API ที่เสถียร
- การรองรับ Kotlin เวอร์ชันใหม่กว่า
เวอร์ชัน 1.1.0-rc03
26 มกราคม 2022
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.1.0-rc03 เวอร์ชัน 1.1.0-rc03 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- อัปเดตเพื่อรองรับ Compose Material 1.1.0-rc03
เวอร์ชัน 1.1.0-rc01
15 ธันวาคม 2021
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.1.0-rc01 เวอร์ชัน 1.1.0-rc01 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องที่ทำให้การเลื่อนเพื่อการช่วยเหลือพิเศษหายไป (I7cbfb)
SemanticsNodeInteraction.captureToImage()จะใช้งานได้ด้วยหากHardwareRenderer.isDrawingEnabled()เป็นfalseโดยการเปิดใช้ในระยะเวลาของการโทร (Idf3d0)
เวอร์ชัน 1.1.0-beta04
1 ธันวาคม 2021
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.1.0-beta04 เวอร์ชัน 1.1.0-beta04 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- อัปเดตให้เข้ากันได้กับ Kotlin
1.6.0
การเปลี่ยนแปลง API
- ล้างค่า Null ใน
androidx.core.view(I7078a, b/204917439) - เพิ่ม API ทดลองที่อนุญาตให้ผู้ใช้ใช้ PointerInputchange ทั้งหมดหรือตรวจสอบว่ามีการใช้หรือไม่ (I2e59d)
- เพิ่มการรองรับเหตุการณ์ล้อเลื่อนของเมาส์ในเลเยอร์ UI (Ia14eb, b/198214718)
- เพิ่ม
Modifier.composedโอเวอร์โหลดทดลองที่ยอมรับ คีย์เพื่อเปรียบเทียบความเท่ากันและมีสิทธิ์สำหรับการเพิ่มประสิทธิภาพการข้าม (Ice799, b/205851704) ComposeNotIdleExceptionจะขยายจากExceptionแทน ที่จะขยายจากThrowableโดยตรง โปรดทราบว่าการดำเนินการนี้หมายความว่า ข้อความที่ครอบคลุม ซึ่งเคยครอบคลุมExceptionอาจครอบคลุมComposeNotIdleExceptionในตอนนี้ ซึ่งก่อนหน้านี้ข้อความดังกล่าวจะไม่ครอบคลุม (I9c217)
การแก้ไขข้อบกพร่อง
- แก้ไขแฮนเดิลข้อความไม่เคลื่อนที่เมื่อมีการเปลี่ยนแปลงระดับการมองเห็นของ IME (I25f2e)
เวอร์ชัน 1.1.0-beta03
17 พฤศจิกายน 2021
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.1.0-beta03 เวอร์ชัน 1.1.0-beta03 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มตัวแก้ไข Modifier.onPlaced ใหม่เพื่อให้สังเกตการเปลี่ยนแปลงการวางได้ ดังนั้นจึงสามารถทำการเปลี่ยนแปลงเพิ่มเติมในออฟเซ็ตของตัวปรับแต่งย่อยได้ตาม การเปลี่ยนแปลงตำแหน่งที่สังเกตได้ (I558fd)
- นำ
InjectionScope.flush()และInjectionScope.dispose()ออกแล้ว การล้างเหตุการณ์ทั้งหมดและการทิ้ง ขอบเขตจะเกิดขึ้นเมื่อสิ้นสุดเมธอด perform*Input() ที่เรียกใช้เหมือน ก่อนหน้านี้ (I2bed8) - นำ
MultiModalInjectionScope.TouchและMultiModalInjectionScope.Mouseออกแล้ว หากต้องการแทรกเหตุการณ์การแตะและเมาส์ สำหรับท่าทางสัมผัสแบบหลายรูปแบบ ตอนนี้คุณสามารถใช้MultiModalInjectionScope.touch()และMultiModalInjectionScope.mouse()ซึ่งทั้ง 2 อย่างนี้ยอมรับ Lambda ที่มีขอบเขตตัวรับของรูปแบบนั้น (Idde18)
การแก้ไขข้อบกพร่อง
- ตอนนี้ระบบจะคำนวณค่าเริ่มต้นสำหรับ
durationMillisในTouchInjectionScope.swipeWithVelocityเพื่อให้ปัดได้ (I19deb)
เวอร์ชัน 1.1.0-beta02
3 พฤศจิกายน 2021
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.1.0-beta02 เวอร์ชัน 1.1.0-beta02 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม BringIntoView API เวอร์ชันทดลองที่ให้คุณส่งคำขอไปยังผู้ปกครองเพื่อให้เลื่อนเพื่อนำรายการมาแสดง (Ib918d, b/195353459)
- API ภาพเคลื่อนไหวใหม่สำหรับการสนับสนุนเครื่องมือ กล่าวคือ ช่วยให้เครื่องมือตรวจสอบภาพเคลื่อนไหวและการกำหนดค่าใน ทรานซิชันได้ (I4116e)
การมีส่วนร่วมจากภายนอก
- เพิ่ม Modifier.pointerHoverIcon (I95f01)
เวอร์ชัน 1.1.0-beta01
27 ตุลาคม 2021
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.1.0-beta01 เวอร์ชัน 1.1.0-beta01 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม
BringIntoViewAPI เวอร์ชันทดลองที่ให้คุณส่งคำขอไปยังผู้ปกครองเพื่อให้เลื่อนเพื่อนำรายการมาแสดง (Ib918d, b/195353459) - API ภาพเคลื่อนไหวใหม่สำหรับการสนับสนุนเครื่องมือ กล่าวคือ ช่วยให้เครื่องมือตรวจสอบภาพเคลื่อนไหวและการกำหนดค่าใน ทรานซิชันได้ (I4116e)
เวอร์ชัน 1.1.0-alpha06
13 ตุลาคม 2021
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.1.0-alpha06 เวอร์ชัน 1.1.0-alpha06 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- นำ
ExperimentalComposeUiApiออกจากViewRootForInspectorและLayoutInfo.ownerViewId(I5c2e3) - เพิ่มการโอเวอร์โหลดที่ไม่มีการส่งต่อสำหรับเลย์เอาต์พร้อมปรับปรุงประสิทธิภาพ (Ib0d9a)
- นำ
InternalCompilerApiออกจากเมธอด Composer ที่ ต้องเรียกใช้ข้ามโมดูล (I1aa0b) - ตอนนี้
SemanticsNodeInteraction.performSemanticsActionจะแสดงผลSemanticsNodeInteractionที่มีการเรียกใช้ฟังก์ชัน (I9e5db) - เพิ่ม CompositionLocal ของ LocalInputModeManager เพื่อตรวจหา TouchMode/NonTouchMode (I6a83c, b/175899786)
- เพิ่ม
viewConfiguration: ViewConfigurationในLayoutInfoเพื่อให้ผู้บริโภคได้รับค่าที่ถูกต้องสำหรับสิ่งต่างๆ เช่น การหมดเวลา การกดแบบยาว (I76ca6)- เพิ่ม
viewConfiguration: ViewConfigurationtoInjectionScopeเพื่อให้การทดสอบปรับการแทรกอินพุตตาม สิ่งต่างๆ เช่น การหมดเวลาการกดค้างหรือการเลื่อนด้วยการสัมผัส - เปลี่ยนระยะเวลาเริ่มต้นของการกดค้างและการแตะสองครั้งสําหรับทั้งการป้อนข้อมูลด้วยการสัมผัสและอินพุตจากเมาส์ให้เป็นไปตามค่าใน
InjectionScope.viewConfiguration
- เพิ่ม
- การใช้งาน ExposedDropdownMenu โดยอิงตาม ExposedDropdownMenuBox ที่มี TextField และ DropdownMenu อยู่ภายใน (If60b2)
- เพิ่ม dismissOnOutsideClick ลงใน PopupProperties เพื่อแทนที่ dismissOnClickOutside ซึ่งเลิกใช้งานแล้ว พร็อพเพอร์ตี้ใหม่จะได้รับตำแหน่งการคลิกและขอบเขตของจุดยึด ซึ่งช่วยให้ควบคุมได้ละเอียดยิ่งขึ้นว่าจะเรียกใช้ onDismissRequest หรือไม่ เช่น การตั้งค่านี้อาจมีประโยชน์ในการป้องกันไม่ให้เลิกใช้สมอเมื่อมีการแตะที่สมอ
- มีการเพิ่ม updateAndroidWindowManagerFlags ลงใน PopupProperties ซึ่งช่วยให้ควบคุมแฟล็กที่ป๊อปอัปส่งไปยัง WindowManager ของ Android ได้ในระดับต่ำ พารามิเตอร์ของ Lambda จะเป็นค่าสถานะที่คำนวณจากค่า PopupProperties ซึ่งส่งผลให้เกิดค่าสถานะ WindowManager เช่น focusable ผลลัพธ์ของ Lambda จะเป็น Flag สุดท้ายที่จะส่งไปยัง WindowManager ของ Android โดยค่าเริ่มต้น updateAndroidWindowManagerFlags จะไม่เปลี่ยนแปลงค่าสถานะที่คำนวณจากพารามิเตอร์ คุณควรใช้ API นี้ด้วยความระมัดระวัง เฉพาะในกรณีที่ป๊อปอัปมีข้อกำหนดด้านลักษณะการทำงานที่เฉพาะเจาะจงมาก (I6e9f9)
Recomposer.stateถูกเลิกใช้งานและแทนที่ด้วยRecomposer.currentStateเพื่อเปลี่ยนประเภทเป็น StateFlow (Ic2ab3, b/197773820)- เพิ่ม
flush()และdispose()ไปยังInjectionScopeแล้ว ใช้เมื่อต้องการล้างเหตุการณ์ทั้งหมดที่อยู่ในคิวทันทีและเมื่อต้องการทิ้งขอบเขตตามลำดับ (Ifb73a) - เพิ่ม
performScrollToNode(matcher: SemanticsMatcher)ที่ เลื่อนคอนเทนเนอร์ที่เลื่อนได้ไปยังเนื้อหาที่ตรงกันโดย ตัวจับคู่ที่ระบุ (Ic1cb8) - ตอนนี้
InjectionScopeได้ติดตั้งใช้งานDensityแล้ว ซึ่งช่วยให้คุณ แปลงระหว่าง px กับ dp ในperformTouchInputและอื่นๆ ได้อย่างง่ายดาย (I8fe1f)
การแก้ไขข้อบกพร่อง
- ตอนนี้ AndroidView จะส่งต่อ LocalLifecycleOwner และ LocalSavedStateRegistryOwner ไปยังมุมมองผ่าน ViewTreeLifecycleOwner และ ViewTreeSavedStateRegistryOwner (I38f96, b/179708470)
- แก้ไขปัญหาที่ WearOS SwipeToDismissBox ไม่จัดการการปัดในบางครั้ง (I9387e)
- เวลาเริ่มต้นระหว่างเหตุการณ์การป้อนข้อมูลที่แทรกมีการเปลี่ยนแปลงจาก 10 มิลลิวินาทีเป็น 16 มิลลิวินาที ซึ่งอาจเปลี่ยนผลลัพธ์ของการทดสอบ ที่ดำเนินการท่าทางสัมผัสอินพุต เช่น การปัดที่เฉพาะเจาะจง (I829fd)
เวอร์ชัน 1.1.0-alpha05
29 กันยายน 2021
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.1.0-alpha05 เวอร์ชัน 1.1.0-alpha05 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มการรองรับการสื่อสารระหว่างตัวแก้ไข (Id5467, b/198826874)
- เพิ่มตัวชี้ประวัติการทดสอบไปยัง PointerEventChange (Ic1fd8, b/197553056, b/199921305)
- เพิ่ม
density: DensityและlayoutDirection: LayoutDirectionไปยังLayoutInfoแล้ว ซึ่งช่วยให้ผู้ใช้LayoutInfoตีความมิติข้อมูลและตำแหน่งที่แสดงในLayoutInfoได้อย่างถูกต้อง (I002f1) - เพิ่มการรองรับการแทรกเหตุการณ์ของเมาส์ในเวอร์ชันทดลอง ใช้
performMouseInputเพื่อเริ่มส่งเหตุการณ์ของเมาส์ หรือส่งเหตุการณ์ของเมาส์ ผ่านพร็อพเพอร์ตี้MouseของMultiModalInjectionScopeระหว่าง ท่าทางสัมผัสการป้อนข้อมูลหลายรูปแบบด้วยperformMultiModalInputดูเอกสารประกอบเกี่ยวกับ API ที่พร้อมใช้งานได้ที่MouseInjectionScope(Iaa4a8, b/190493367)
การแก้ไขข้อบกพร่อง
- แก้ไขการรองรับการช่วยเหลือพิเศษสำหรับรายการที่เลื่อนได้ (ทั้งแบบเลื่อนและ แบบไม่เลื่อน) เกี่ยวกับการเลื่อน (I6cdb0)
- ได้รับการปรับปรุง
TouchInjectionScope.swipeWithVelocityตอนนี้ฟีเจอร์นี้ ยอมรับตัวแปรอินพุตได้หลากหลายมากขึ้น และจะแนะนำการเปลี่ยนแปลงอินพุตหากสร้างการปัดไม่ได้ (I40fbe, b/182477143)
เวอร์ชัน 1.1.0-alpha04
15 กันยายน 2021
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.1.0-alpha04 เวอร์ชัน 1.1.0-alpha04 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ตอนนี้
PointerEventมีPointerEventTypeเพื่อรองรับเหตุการณ์การวางเมาส์แล้ว (I091fa) - อนุญาตให้บุตรหลานยอมรับอินพุตของเคอร์เซอร์นอกขอบเขตอินพุตของเคอร์เซอร์ของ ผู้ปกครอง ผู้ปกครองอาจสกัดกั้นการเรียกเหล่านั้นด้วยพร็อพเพอร์ตี้ PointerInputScope.alwaysInterceptChildEvents (I9eae3, b/192479655)
- เลิกใช้งาน
performGestureและGestureScopeซึ่งถูกแทนที่ด้วยperformTouchInputและTouchInjectionScope(Ia5f3f, b/190493367) - เพิ่ม
touchBoundsInRootถึงSemanticsNodeซึ่ง รวมถึงขนาดเป้าหมายการสัมผัสขั้นต่ำ เพื่อให้นักพัฒนาแอป มั่นใจได้ว่าเป้าหมายการสัมผัสเป็นไปตามข้อกำหนดขั้นต่ำด้านการช่วยเหลือพิเศษ (I2e14b, b/197751214) - แก้ไขการติดตั้งใช้งานที่ตรวจสอบได้ (I927bc, b/191017532)
- เปลี่ยนชื่อพารามิเตอร์ของ inspectable ให้ตรงกับ composed (I3a482, b/191017532)
เปิดตัว
performTouchInputและTouchInjectionScopeเพื่อใช้แทนperformTouchInputและTouchInjectionScopeซึ่งเป็นการปูทางสำหรับรูปแบบอื่นๆ (เช่น เมาส์)TouchInjectionScopeมีเมธอดเหมือนกับGestureScopeยกเว้นmovePointerToและmovePointerByซึ่งเราได้เปลี่ยนชื่อเป็นupdatePointerToและupdatePointerByส่วนวิธีอื่นๆ ทั้งหมด จะเหมือนเดิมลักษณะการทำงานของ
TouchInjectionScopeจะเหมือนกับGestureScopeเกือบทุกประการ โดยมีรายละเอียดเล็กๆ 2 อย่างดังนี้- เมื่อส่งเหตุการณ์ "ลง" ขณะที่ย้ายเคอร์เซอร์โดยไม่ส่งเหตุการณ์ "ย้าย" (กล่าวคือ มีการใช้
updatePointerTo()แต่ไม่ได้ใช้move()แล้วเรียกใช้down()) การใช้งานก่อนหน้านี้จะเลื่อนเวลาของเหตุการณ์และส่งเหตุการณ์ "ย้าย" ก่อนส่งเหตุการณ์ "ลง" การติดตั้งใช้งานใหม่จะยังคงส่งเหตุการณ์ ย้าย แต่จะไม่เลื่อนเวลาเหตุการณ์ในสถานการณ์ นี้ - เมื่อส่งเหตุการณ์ "ขึ้น" ขณะที่ย้ายเคอร์เซอร์โดยไม่ส่งเหตุการณ์ "ย้าย" (คล้ายกับด้านบน) การติดตั้งใช้งานก่อนหน้าจะเลื่อนเวลาของเหตุการณ์และส่งเหตุการณ์ "ย้าย" ก่อนส่งเหตุการณ์ "ขึ้น" การติดตั้งใช้งานใหม่จะไม่ทำทั้ง 2 อย่างนี้ โดยตำแหน่งใหม่ของ เคอร์เซอร์จะแสดงผ่านเหตุการณ์ขึ้นเท่านั้น
สุดท้ายนี้
TouchInjectionScopeขอแนะนำวิธีใหม่currentPosition(pointerId: Int)ในการรับตำแหน่งปัจจุบันของ เคอร์เซอร์ที่ระบุ (If1191, b/190493367)- เมื่อส่งเหตุการณ์ "ลง" ขณะที่ย้ายเคอร์เซอร์โดยไม่ส่งเหตุการณ์ "ย้าย" (กล่าวคือ มีการใช้
การแก้ไขข้อบกพร่อง
- อนุญาตให้คลิปขยายขอบเขตเป้าหมายการสัมผัสเกินกว่า ภูมิภาคของคลิปเพื่อวัตถุประสงค์ของเป้าหมายการสัมผัสขั้นต่ำ (I43e10, b/171509422)
- เพิ่มการรองรับการเลื่อนเกินขอบเขตแบบยืดในอุปกรณ์ Android 12 แล้ว (Iccf3c, b/171682480)
เวอร์ชัน 1.1.0-alpha03
1 กันยายน 2021
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.1.0-alpha03 เวอร์ชัน 1.1.0-alpha03 มีคอมมิตต่อไปนี้
ฟีเจอร์ใหม่
- อัปเดต Compose
1.1.0-alpha03ให้ขึ้นอยู่กับ Kotlin1.5.30(I74545)
การเปลี่ยนแปลง API
- เพิ่ม
Modifier.inspectableสำหรับการรวมตัวแก้ไขอื่นๆ (I1909b, b/191017532) - เพิ่ม
BlurredEdgeTreatmentAPI เพื่อลดความซับซ้อนของ Use Case การเบลอให้เป็นชุดค่าผสมของ แฟล็กคลิปและ TileMode ที่ใช้กันโดยทั่วไป Use Case ส่วนใหญ่เกี่ยวข้องกับ การอนุญาตให้แสดงเนื้อหาที่เบลอ นอกขอบเขตของเนื้อหาต้นฉบับ และการเบลอภูมิภาคนอกขอบเขตเหล่านี้ ด้วยสีดำโปร่งใส หรือการตัดเนื้อหา ไปยังขอบเขตของเนื้อหาโดยการสุ่มตัวอย่างขอบที่ใกล้ที่สุด สำหรับเคอร์เนลเบลอที่ขยายออกไปนอกขอบเขตของเนื้อหา (I6b4b7, b/166927547) - เพิ่มการรองรับ RenderEffect ใน Compose Desktop เปิดตัว OffsetEffect และตัวแก้ไขเบลอเป็นวิธีง่ายๆ ในการเพิ่มเอฟเฟกต์ภาพเบลอลงในส่วนหนึ่งของลำดับชั้นการจัดองค์ประกอบ (I0f6aa, b/166927547)
- เปิดตัว RenderEffect API
ที่กำหนดค่าได้โดยไม่บังคับใน
Modifier.graphicsLayerเพื่อเปลี่ยน เนื้อหาของเลเยอร์เอง ซึ่งใช้เพื่อเบลอเนื้อหาของ Composable และ Composable ย่อยภายในลำดับชั้นการจัดองค์ประกอบได้ (I47c4d, b/166927547) - ตอนนี้ AwaitPointerEventScope มี withTimeout() และ withTimeoutOrNull() แล้ว (I507f0, b/179239764, b/182397793)
- เพิ่มขนาดเป้าหมายการสัมผัสขั้นต่ำลงใน ViewConfiguration เพื่อใช้ในอินพุตเชิงความหมายและอินพุตของเคอร์เซอร์เพื่อให้มั่นใจว่ามีการช่วยเหลือพิเศษ (Ie861c)
- เพิ่มการรองรับ TileMode.Decal ซึ่งมีประโยชน์ในการกำหนดขอบ ลักษณะการทำงานสำหรับ RenderEffect ที่อิงตามการเบลอ (I7e8ed, b/166927547)
performScrollToIndex,performScrollToKey,hasScrollToIndexActionและhasScrollToKeyActionเป็น API ที่เสถียรแล้ว (I142ae, b/178483889)- เพิ่มวิธีการทดสอบเพื่อรับขอบเขตที่ตัดแล้ว (I6b28e)
การแก้ไขข้อบกพร่อง
- นำเมธอด isBounded ออก จาก BlurredEdgeTreatment เพื่อ ตรวจสอบอย่างชัดเจนว่าพารามิเตอร์ รูปร่างเป็น Null หรือไม่ (I85d68)
เวอร์ชัน 1.1.0-alpha02
18 สิงหาคม 2021
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.1.0-alpha02 เวอร์ชัน 1.1.0-alpha02 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ตอนนี้ PointerEvent รองรับการอ่าน สถานะปุ่มเมาส์และสถานะตัวแก้ไขแป้นพิมพ์แล้ว (I6310c, b/180075467)
- ตอนนี้ท่าทางสัมผัสที่แทรกจะใช้เวลาของ MainTestClock เป็น
แหล่งข้อมูลที่ถูกต้องสำหรับเวลา ระบบจะเริ่มต้นเวลาปัจจุบันสำหรับเหตุการณ์ที่แทรกใน
performGestureเป็นเวลาปัจจุบันของ MainTestClock (Ifb364, b/192064452) - เพิ่มตัวสร้าง
DpRect(DpOffset, DpSize)(I2cf16, b/194219828) - เพิ่มคลาส DpSize (I7abb1, b/194219828)
การแก้ไขข้อบกพร่อง
- อัปเดตการแยกวิเคราะห์ XML กราฟิกแบบเวกเตอร์ เพื่อรองรับ ColorStateLists เป็น พร็อพเพอร์ตี้ย้อมสีรูทใน VectorDrawable (I86915, b/195668138)
เวอร์ชัน 1.1.0-alpha01
4 สิงหาคม 2021
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.1.0-alpha01 เวอร์ชัน 1.1.0-alpha01 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
RelocationRequester.bringIntoViewตอนนี้ยอมรับสี่เหลี่ยมผืนผ้าเป็นพารามิเตอร์แล้ว ซึ่งช่วยให้เรานำส่วนของ Composable มาแสดงได้ (Ice2c5, b/194330245)AnimatedImageVectorและ API ที่เกี่ยวข้องจะอยู่ในโมดูลใหม่androidx.compose.animation:animation-graphics(I60873)- เพิ่มตัวแก้ไขเวอร์ชันทดลองเพื่อจัดการคำขอเปลี่ยนเส้นทาง (I65a97, b/178211874)
เปิดตัว BrushPainter API เพื่อรองรับการวาด Brush ที่กำหนดเองภายใน Painter ซึ่งคล้ายกับ ColorPainter
อัปเดต Brush API ให้มีพารามิเตอร์ขนาดโดยธรรมชาติ ที่ค้นหาภายใน BrushPainter (Ia2752, b/189466433)
อัปเดตเมธอด DrawScope#drawImage ที่ ใช้สี่เหลี่ยมผืนผ้าต้นทางและปลายทาง เพื่อใช้พารามิเตอร์ FilterQuality ที่ไม่บังคับ ซึ่งมีประโยชน์สำหรับพิกเซล อาร์ตที่ตั้งใจให้เป็นพิกเซล เมื่อขยายขนาดสำหรับอาร์ตตามพิกเซล อัปเดต BitmapPainter + Image composable ให้ใช้พารามิเตอร์ FilterQuality ที่ไม่บังคับด้วย (Ie4fb0, b/180311607)
เพิ่มวิธีการ
GestureScope.advanceEventTimeเพื่อให้ควบคุมช่วงเวลาของเหตุการณ์ในท่าทางสัมผัสได้มากขึ้น (Ibf3e2)
การแก้ไขข้อบกพร่อง
- โปรดตรวจสอบว่าการติดตั้งใช้งาน Modifier.paint
เรียกใช้ drawsContent เพื่อให้รองรับการเชื่อมต่อตัวแก้ไขได้ดียิ่งขึ้น
ก่อนหน้านี้ Modifier.paint คาดว่าจะเป็นโหนดใบใน
ห่วงโซ่ของตัวปรับแต่ง แต่การทำเช่นนั้นจะป้องกันไม่ให้
กำหนดค่าในคอนเทนเนอร์ที่ใช้ได้ (เช่น กล่อง)
หรือเพิ่มการตกแต่งเพิ่มเติมด้านบน เช่น
Modifier.paint().border()การเรียก Modifier.paint drawContent หลังจากวาดเนื้อหาของ painter ที่ระบุทำให้เรามีความสอดคล้องด้านพฤติกรรมที่ดีขึ้นในพฤติกรรม ที่มีรูปแบบตัวแก้ไข (Ibb2a7, b/178201337, b/186213275) - ตอนนี้กล่องโต้ตอบจะทําตามลักษณะการปรับขนาดของแพลตฟอร์มแล้ว ตั้งค่า
usePlatformDefaultWidthเป็น false เพื่อลบล้างลักษณะการทำงานนี้ (Iffaed, b/192682388) - ย้าย
InfiniteAnimationPolicyไปยัง :compose:ui (I5eb09, b/160602714) - ตอนนี้การเลื่อนผ่านการดำเนินการทางความหมายสำหรับรายการที่โหลดแบบ Lazy และคอมโพเนนต์การเลื่อนปกติจะมีภาพเคลื่อนไหวแล้ว (Id9066, b/190742024)
รุ่น 1.0
เวอร์ชัน 1.0.5
3 พฤศจิกายน 2021
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.0.5 เวอร์ชัน 1.0.5 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขข้อขัดข้องในการติดตามอินสแตนซ์ derivedStateOf (aosp/1792247)
เวอร์ชัน 1.0.4
13 ตุลาคม 2021
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.0.4 เวอร์ชัน 1.0.4 มีคอมมิตเหล่านี้
การอัปเดตทรัพยากร Dependency
- อัปเดตให้ขึ้นอยู่กับ Kotlin
1.5.31
เวอร์ชัน 1.0.3
29 กันยายน 2021
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.0.3 เวอร์ชัน 1.0.3 มีคอมมิตเหล่านี้
การอัปเดตทรัพยากร Dependency
- อัปเดตให้ขึ้นอยู่กับ Kotlin
1.5.30
เวอร์ชัน 1.0.2
1 กันยายน 2021
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*: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.ui:ui-*:1.0.1 เวอร์ชัน 1.0.1 มีคอมมิตเหล่านี้
การอัปเดตทรัพยากร Dependency
- อัปเดตให้ขึ้นอยู่กับ Kotlin
1.5.21
เวอร์ชัน 1.0.0
28 กรกฎาคม 2021
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*: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.ui:ui-*:1.0.0-rc02 เวอร์ชัน 1.0.0-rc02 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- ตอนนี้กล่องโต้ตอบจะทําตามลักษณะการปรับขนาดของแพลตฟอร์มแล้ว ตั้งค่า
usePlatformDefaultWidthเป็น false เพื่อลบล้างลักษณะการทำงานนี้ (Iffaed, b/192682388)
เวอร์ชัน 1.0.0-rc01
1 กรกฎาคม 2021
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.0.0-rc01 เวอร์ชัน 1.0.0-rc01 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- แยกโมดูล ui-tooling ออกเป็น
ui-toolingและui-tooling-preview(Iefa28, b/190649014)
การเปลี่ยนแปลง API
- นำฟีเจอร์ทดลอง
FocusManager#moveFocusInและFocusManager#moveFocusOutที่เลิกใช้งานแล้วออก (I227d7, b/170154986, b/186567354, b/168510304) - ตอนนี้ Canvas รองรับพารามิเตอร์ contentDescription เพื่อ การช่วยเหลือพิเศษแล้ว (Ib547c)
- เปลี่ยนชื่อ
useDefaultMaxWidthในPopupPropertiesเป็นusePlatformDefaultWidthแล้ว (I05710) - ตอนนี้กล่องโต้ตอบสามารถใช้ความกว้างของทั้งหน้าจอได้แล้ว (I83929, b/190810877)
- เพิ่มการรองรับการแสดงสี HSV และ HSL ในเวอร์ชันทดลอง (Id7cf8, b/180731008)
การเปลี่ยนแปลงพฤติกรรม
- ตอนนี้ Compose
@PreviewมีLocalActivityResultRegistryOwnerที่ช่วยให้คุณ แสดงตัวอย่าง Composable ที่ใช้ API เช่นrememberLauncherForActivityResult()ซึ่งขึ้นอยู่กับ การมีอยู่ของเจ้าของนั้น (Ib13d1, b/185693006) - ตอนนี้ Compose
@PreviewมีLocalOnBackPressedDispatcherOwnerที่ช่วยให้คุณ แสดงตัวอย่าง Composables ที่ใช้ API เช่นBackHandlerซึ่งขึ้นอยู่กับการมีอยู่ของเจ้าของนั้น (Ia1c05, b/185693006)
การแก้ไขข้อบกพร่อง
- ย้าย
InfiniteAnimationPolicyไปยังandroidx.compose.ui:ui(I5eb09, b/160602714) แล้ว - เราได้นำ AnimatedImageVector ออกชั่วคราวเพื่อเปลี่ยนโครงสร้างโมดูล (I41906, b/160602714)
เวอร์ชัน 1.0.0-beta09
16 มิถุนายน 2021
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.0.0-beta09 เวอร์ชัน 1.0.0-beta09 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เปลี่ยน enum Role และ LiveRegionMode เป็นคลาสอินไลน์ ที่มีตัวสร้างส่วนตัว (Id1890)
- ระบบจะแปลง KeyboardCapitalization เป็นคลาสอินไลน์ (Id5a1c)
- เปลี่ยน HapticFeedbackType เป็นคลาสแบบอินไลน์ (I255ec)
- Modifier.pointerInteropFilter เป็น @ExperimentalComposeUiApi (Iede6c)
- ตอนนี้ TextAlign, FontSynthesis และ TextDirection เป็นคลาสแบบอินไลน์แล้ว (I212fe)
- เปลี่ยน TextOverflow เป็นคลาสอินไลน์ (I433af)
- ตอนนี้ FontStyle เป็นคลาสแบบอินไลน์แล้ว (I9e48b)
การแก้ไขข้อบกพร่อง
- ค่าคงที่หลักคือ @ExperimentalComposeUiApi ในตอนนี้ โค้ดที่ใช้สามารถประกาศค่าคงที่ส่วนตัวก่อนการทำให้เสถียรได้ (Ia5d48)
- ตอนนี้คุณสามารถเรียกใช้การทดสอบ Compose ใน Robolectric ได้แล้ว เราพบข้อจำกัดต่อไปนี้
- ไม่มีบิตแมปดั้งเดิม
ImageBitmap()จึงทำให้เกิด NullPointerException - ไม่มีการวาดภาพ ดังนั้น
captureToImage()จะรอการส่งผ่านการวาดภาพครั้งถัดไปอย่างไม่มีกำหนด (กล่าวคือ เกิดภาวะหยุดชะงัก) - ไม่มีการโหลดแบบอักษร ดังนั้นข้อความใดๆ จะวัดผลไม่ถูกต้อง อักขระทั้งหมด มีความสูงคงที่ประมาณ 20 พิกเซลและความกว้าง 1 พิกเซล
ComposeTestRule.waitUntil {}จะไม่เรียกใช้เธรดหลักขณะรอ ซึ่งทำให้มีประสิทธิภาพเหมือนกับComposeTestRule.mainClock.advanceTimeUntil {}คาดว่าจะพบข้อจำกัดเพิ่มเติมในอนาคต (I284fa)
- ไม่มีบิตแมปดั้งเดิม
เพิ่มกฎโปรไฟล์
รุ่นนี้เพิ่มกฎของโปรไฟล์ลงในโมดูลการเขียนต่อไปนี้ (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.ui:ui-*:1.0.0-beta08 เวอร์ชัน 1.0.0-beta08 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ระบบจะแทนที่
NestedScrollSourceenum ด้วยคลาสแบบอินไลน์ (Ie321b, b/187055290) - เปลี่ยนชื่อ
FocusManager.clearFocus(forcedClear = true)เป็นFocusManager.clearFocus(force = true)(Ia0c41) - ปรับโครงสร้างการใช้งาน enum เป็นคลาสอินไลน์เพื่อหลีกเลี่ยง ปัญหาเกี่ยวกับคำสั่ง when แบบครอบคลุมเมื่อมีการเพิ่ม ค่า enum ใหม่ (I2b5eb)
- นำ
@ExperimentalComposeUiApiออกจากPopupProperties(I01fa6) - เปลี่ยน
PointerTypeจาก Enum เป็นคลาสแบบอินไลน์ (If5058) - พร็อพเพอร์ตี้ ContentDescription และ Text semantics ไม่ใช่ค่าเดียวอีกต่อไป แต่เป็นรายการ ซึ่งจะช่วยให้ผสานรวมได้โดยไม่ต้องต่อกัน นอกจากนี้ เรายังได้จัดเตรียม API การทดสอบที่ดีขึ้นเพื่อใช้ประโยชน์จากการเปลี่ยนแปลงเหล่านี้ (Ica6bf, b/184825850)
Modifier.focusModifier()เลิกใช้งานแล้วและแทนที่ด้วยModifier.focusTarget()(I6c860)Modifier.onSizeChanged()และModifier.onGloballyPositioned()ไม่ใช่ฟังก์ชันแบบอินไลน์อีกต่อไป (I727f6, b/186109675)- ระบบจะแทนที่
KeyboardTypeenum ด้วยคลาสแบบอินไลน์ (I73045, b/187055290) - แทนที่ Enum
FocusStateด้วยอินเทอร์เฟซFocusState(Iccc1a, b/187055290) - ระบบจะแทนที่ enum ImeAction ด้วยคลาสแบบอินไลน์ (I18be5, b/187055290)
PlaceholderVerticalAlignจะแปลงเป็นคลาสแบบอินไลน์ (If6290)- ตอนนี้ TextUnitType เป็นคลาสแบบอินไลน์แล้ว (I4cba9)
AnnotatedString.withAnnotationตอนนี้ฟังก์ชันต่างๆ จะเป็น ExperimentalTextApi แทน ExperimentalComposeApi (I0cd0a)- ตอนนี้ตัวสร้าง TextUnit ที่มี TextUnitType จะเป็น ExperimentalTextApi แทนที่จะเป็น ExperimentalComposeApi
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องที่เกิดขึ้นใน beta07 ซึ่งรายการ LazyColumn/Row แสดงบางส่วนหลังจากเลื่อน (I8c9ac, b/188566058)
- ตอนนี้
detectDragGesures,detectVerticalGesturesและdetectHorizontalGesturesจะใช้การเปลี่ยนแปลงตำแหน่งโดยอัตโนมัติ คุณจึงไม่จำเป็นต้องเรียกใช้ change.consumePositionChange ในการเรียกกลับ onDrag (I42fc4, b/185096350, b/187320697) - แก้ไข LayoutModifiers ที่แสดงเส้นแนว แก้ไขข้อบกพร่องที่ทำให้ระบบไม่วัดขนาดองค์ประกอบหลักอีกครั้งเมื่อมีการเปลี่ยนเส้นแนวขององค์ประกอบย่อย (I4401f, b/174315652)
Modifier.onGloballyPositioned()เปลี่ยนเป็นรายงานพิกัดของตัวแก้ไขนี้ในเชนตัวแก้ไข ไม่ใช่พิกัดเลย์เอาต์หลังจากใช้ตัวแก้ไขทั้งหมด ซึ่งหมายความว่าตอนนี้ลำดับของตัวแก้ไขจะส่งผลต่อพิกัดที่จะรายงาน (Ieb67d, b/177926591)
เวอร์ชัน 1.0.0-beta07
18 พฤษภาคม 2021
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.0.0-beta07 เวอร์ชัน 1.0.0-beta07 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มอินเทอร์เฟซ
ViewRootForInspectorสำหรับใช้ในเครื่องมือตรวจสอบ (Ib70df) - ตอนนี้
SubcomposeLayoutStateรองรับการตั้งค่าจำนวนสล็อตที่ใช้ซ้ำได้แล้ว เลย์เอาต์จะเก็บช่องที่ใช้งานอยู่ไว้ตามจำนวนนี้แทนที่จะทิ้งช่องเหล่านั้น เพื่อให้ใช้ช่องซ้ำได้ในครั้งถัดไปที่เราต้องการช่องใหม่ (Ieb981) - แทนที่ enum KeyEventType ด้วยคลาสอินไลน์ (Id670a, b/187055290)
- ระบบจะแทนที่
FocusDirectionenum ด้วยคลาสแบบอินไลน์ (Ib6d03, b/187055290, b/184086802) - เพิ่มความสามารถในการยกสถานะ SubcomposeLayout ซึ่งช่วยให้คุณคอมโพสเนื้อหาล่วงหน้าลงใน slotId ที่จำเป็นได้ ซึ่งจะทำให้การวัดครั้งถัดไปเร็วขึ้น เนื่องจากเมื่อเราพยายามคอมโพสย่อยด้วย slotId ที่ระบุในครั้งถัดไป ก็จะไม่จำเป็นต้องคอมโพสอีก (I42580, b/184940225)
- เพิ่มแฮนเดิลการเลือกคลิป (Iff80d, b/183408447)
- นำ API ที่ไม่ได้ใช้ซึ่งเกี่ยวข้องกับการรองรับ LayoutInspector ออก (I2ac78)
การแก้ไขข้อบกพร่อง
- ตอนนี้ LazyColumn/Row จะเก็บรายการที่มองเห็นก่อนหน้านี้ไว้สูงสุด 2 รายการให้ใช้งานอยู่ (ไม่ได้ทิ้ง) แม้ว่าจะเลื่อนออกไปแล้วก็ตาม ซึ่งจะช่วยให้คอมโพเนนต์นำองค์ประกอบย่อยที่ใช้งานอยู่กลับมาใช้ซ้ำได้เมื่อเราต้องสร้างรายการใหม่ ซึ่งจะช่วยปรับปรุงประสิทธิภาพการเลื่อน (Ie5555)
- ระบบจะใช้
TextGeomerticTransformและTextDecorationในAnnotatedStringตามที่ระบุ (I61900, b/184760917)
เวอร์ชัน 1.0.0-beta06
5 พฤษภาคม 2021
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.0.0-beta06 เวอร์ชัน 1.0.0-beta06 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- แก้ไขความขัดแย้งด้วยท่าทางสัมผัสการนำทาง (I1145e)
@ComposeCompilerApiไม่@RequiresOptInอีกต่อไป (Iab690)- เพิ่ม API การช่วยเหลือพิเศษ CollectionInfo และ CollectionItemInfo ที่อนุญาตให้ทำเครื่องหมายคอลเล็กชันและรายการของคอลเล็กชันสำหรับบริการการช่วยเหลือพิเศษ (Id54ef, b/180479017)
- เพิ่ม
SemanticsActions.ScrollToIndexเพื่อเลื่อนรายการที่มี รายการที่จัดทำดัชนีไปยังรายการที่มีดัชนีหนึ่งๆ และSemanticsProperties.IndexForKeyเพื่อรับดัชนีของรายการในรายการ ที่มีรายการที่ใช้คีย์ ทั้ง 2 การดำเนินการนี้จะดำเนินการโดย LazyList- เพิ่ม
SemanticsNodeInteraction.performScrollToIndexที่เลื่อนรายการไปยังดัชนีที่ระบุ และSemanticsNodeInteraction.performScrollToKeyที่เลื่อนรายการไปยังรายการที่มีคีย์ที่ระบุ (I4fe63, b/178483889, b/161584524)
- เพิ่ม
- เพิ่ม ownerViewId ไปยัง GraphicLayerInfo (I19f62)
- เพิ่มการโอเวอร์โหลด Font() เพื่อโหลดแบบอักษร จากชิ้นงาน, File และ FileDescriptor (I5d382)
- เพิ่ม API การช่วยเหลือพิเศษ
errorที่อนุญาตให้ทำเครื่องหมายโหนดที่มีอินพุตที่ไม่ถูกต้อง (I12997, b/180584804, b/182142737) - เพิ่มการโอเวอร์โหลด
Font()เพื่อโหลดแบบอักษร จากชิ้นงาน, File และ FileDescriptor (I43007) - รองรับการบันทึก AnnotatedString ไปยัง
TextFieldValue.Saverเพิ่มฟังก์ชันยูทิลิตีaddTtsAnnotationและ withAnnotation ลงในAnnotatedString.Builder(I8cbdc, b/178446304) - เพิ่มฟังก์ชันตัวสร้าง TextUnit
TextUnit(value: Float, type: TextUnitType)(I7ecce, b/178446304)
เวอร์ชัน 1.0.0-beta05
21 เมษายน 2021
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.0.0-beta05 เวอร์ชัน 1.0.0-beta05 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มฟีเจอร์ทดลอง
FocusManager.moveFocus(In)และFocusManager.moveFocus(Out)(Ic5534, b/183746743) - เพิ่ม
performTextInputSelectionAPI (I2dcbb, b/178510628) เวอร์ชันทดลอง - อินเทอร์เฟซ
InputEventCallbackเลิกใช้งานแล้ว ไม่สามารถใช้อินเทอร์เฟซใน API สาธารณะใดๆ ได้ และไม่มีการใช้งานในโค้ด (I34a02, b/184003208) - ฟังก์ชัน
TextLayoutResult/createTextLayoutResultที่เลิกใช้งานแล้ว เป็นฟังก์ชันสาธารณะที่ไม่ได้ใช้ซึ่งเพิ่มเข้ามา เพื่อการทดสอบ ฟังก์ชันนี้ไม่ได้ทำอะไรที่ใช้ได้กับ Compose text APIs ตอนนี้เราเลิกใช้งานฟังก์ชันนี้แล้วและจะ นำออกในภายหลัง (I80413)
การแก้ไขข้อบกพร่อง
- แก้ไขการเลื่อนเพื่อการช่วยเหลือพิเศษ
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.ui:ui-*:1.0.0-beta04 เวอร์ชัน 1.0.0-beta04 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เปลี่ยนชื่อ
hideSoftwareKeyboardและshowSoftwareKeyboardในSoftwareKeyboardControllerเป็นhide()และshow()ตามลำดับ- ระบุอินเทอร์เฟซ CompositionLocal แบบเต็มสำหรับ LocalSoftwareKeyboardController เพื่อให้ตั้งค่าได้ (มีประโยชน์อย่างยิ่ง ในการทดสอบ) (I579a6)
- เพิ่ม API การช่วยเหลือพิเศษ LiveRegion หากมีการทำเครื่องหมายโหนดเป็นขอบเขตแบบสด บริการการช่วยเหลือพิเศษ จะแจ้งให้ผู้ใช้ทราบเกี่ยวกับการเปลี่ยนแปลงโดยอัตโนมัติ (Idcf6f, b/172590946)
- เปิดตัว TextOverflow.Visible (Ic8f89)
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาที่รายการของ
LazyColumn/LazyRowซึ่งอยู่บริเวณขอบได้รับการจัดวางอย่างไม่ถูกต้องหลังจากที่โยนอย่างรวดเร็ว (Ie4d13, b/183877420) - ตอนนี้
AndroidViewBindingจะนำ Fragment ที่ขยายผ่านFragmentContainerViewออกอย่างถูกต้องเมื่อ นำAndroidViewBindingออกจากลำดับชั้นของ Compose (Ib0248, b/179915946) AndroidViewBindingจะซ้อนกันอย่างถูกต้องแล้ว เมื่อมีการขยาย Fragment ผ่านFragmentContainerViewเมื่อComposeViewอยู่ภายในFragmentซึ่งจะช่วยแก้ไข ปัญหาเกี่ยวกับการบันทึกและกู้คืนสถานะของ Fragment เหล่านั้น (I70eb0, b/179915946)- ตอนนี้ Compose ViewBinding ขึ้นอยู่กับ
Fragment
1.3.2และตอนนี้จะแสดง Fragment ที่ขยายผ่านFragmentContainerViewอย่างสม่ำเสมอหลังจากการเปลี่ยนแปลงการกำหนดค่า (I0743d, b/179915946)
เวอร์ชัน 1.0.0-beta03
24 มีนาคม 2021
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.0.0-beta03 เวอร์ชัน 1.0.0-beta03 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เลื่อนการตรวจสอบการอ้างอิง ViewTree ของ ComposeView (I8dbbf, b/182466548)
- เพิ่มพารามิเตอร์
startX/endXและstartY/endYที่ไม่บังคับ ลงในฟังก์ชันswipeUp/swipeDown/swipeLeft/swipeRightในGestureScope(I49e2d, b/182063305)
เวอร์ชัน 1.0.0-beta02
10 มีนาคม 2021
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.0.0-beta02 เวอร์ชัน 1.0.0-beta02 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม
LocalSoftwareKeyboardControllerAPI การเขียนในเครื่อง ใหม่เพื่อแทนที่อินเทอร์เฟซ SoftwareKeyboardController ก่อนหน้าใน TextField (I5951e, b/168778053) - เพิ่ม
LocalSoftwareKeyboardControllerAPI การเขียนในเครื่อง ใหม่เพื่อแทนที่อินเทอร์เฟซ SoftwareKeyboardController ก่อนหน้าใน TextField (I84472, b/168778053) - เราได้นำ
SemanticsMatcherต่อไปนี้ออกแล้วhasWidth(width, tolerance)hasHeight(height, tolerance)hasLeftPosition(left, tolerance)hasTopPosition(top, tolerance)hasRightPosition(right, tolerance)hasBottomPosition(bottom, tolerance)(If16bd)
- ทำเครื่องหมาย
SemanticsMatchersต่อไปนี้เป็น @ExperimentalTestApi:hasWidth(width, tolerance)hasHeight(height, tolerance)hasLeftPosition(left, tolerance)hasTopPosition(top, tolerance)hasRightPosition(right, tolerance)hasBottomPosition(bottom, tolerance)(Ia600c)
- เพิ่ม
SemanticsMatcherต่อไปนี้hasWidth(width, tolerance)hasHeight(height, tolerance)hasLeftPosition(left, tolerance)hasTopPosition(top, tolerance)hasRightPosition(right, tolerance)hasBottomPosition(bottom, tolerance)(I2f502)
การแก้ไขข้อบกพร่อง
- บังคับใช้ข้อจำกัดในการใช้งาน API เวอร์ชันทดลองแบบสาธารณะ (I6aa29, b/174531520)
androidx.compose.ui:uiไม่ได้ขึ้นอยู่กับ AppCompat หรือ Fragment อีกต่อไป หากคุณใช้ ComposeView ในแอปพลิเคชัน และใช้ Fragment และ/หรือ AppCompat โปรดตรวจสอบว่าคุณใช้ AppCompat 1.3 ขึ้นไป / Fragment 1.3 ขึ้นไป เนื่องจากต้องใช้เวอร์ชันเหล่านี้เพื่อตั้งค่าเจ้าของวงจรและสถานะที่บันทึกไว้อย่างถูกต้อง ซึ่งจำเป็นสำหรับ ComposeView (I1d6fa, b/161814404)- แก้ไขปัญหา
rememberSaveable { mutableStateOf(0) }ที่ใช้งานไม่ได้เมื่อใช้ภายในปลายทางของ Navigation Compose (I1312b, b/180042685, b/180701630) - เพิ่ม
LocalSoftwareKeyboardControllerAPI การเขียนในเครื่อง ใหม่เพื่อแทนที่อินเทอร์เฟซ SoftwareKeyboardController ก่อนหน้าใน TextField (I658b6, b/168778053) - แก้ไขข้อผิดพลาด NoSuchElementException ที่พบได้ยากใน
ComposeRootRegistrytearDownRegistry()(Iddce1)
เวอร์ชัน 1.0.0-beta01
24 กุมภาพันธ์ 2021
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.0.0-beta01 เวอร์ชัน 1.0.0-beta01 มีคอมมิตเหล่านี้
นี่คือรุ่นแรกของ Compose 1.0.0 Beta
การเปลี่ยนแปลง API
- เพิ่มการเรียกกลับ onStart ไปยัง
detectDragGesturesแล้ว (I67269, b/179995594) - ตัวปรับแต่งสำหรับการปรับขนาดให้ตรงกับขนาด Intrinsics ไม่ได้อยู่ในขั้นทดลองอีกต่อไป (I15744)
- เราเปลี่ยนชื่อ MeasureBlocks เป็น MeasurePolicy ซึ่งกลายเป็นอินเทอร์เฟซที่สนุกสนาน เราได้อัปเดต / ลดความซับซ้อนของ Layout API เพื่อให้ใช้ MeasurePolicy ได้ (Icab48, b/167662468, b/156751158)
InteractionStateถูกแทนที่ด้วย[Mutable]InteractionSourceแล้ว- อินเทอร์เฟซมีหน้าที่รับผิดชอบในการปล่อย / รวบรวมเหตุการณ์การโต้ตอบ
- ใช้
interactionSource = remember { MutableInteractionSource() }แทนการส่งinteractionState = remember { InteractionState() }ไปยังคอมโพเนนต์ เช่นButtonและModifier.clickable() - แทนที่จะใช้
Interaction.Pressed in interactionStateคุณควรใช้ฟังก์ชันส่วนขยายใน InteractionSource แทน เช่น InteractionSource.collectIsPressedAsState() - สำหรับกรณีการใช้งานที่ซับซ้อน คุณสามารถใช้ InteractionSource.interactions เพื่อสังเกตสตรีมของการโต้ตอบได้ ดูข้อมูลเพิ่มเติมได้ในเอกสารประกอบและตัวอย่างของ InteractionSource
- (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
- เพิ่มอินเทอร์เฟซ AccessibilityMananger และ LocalAccessibilityMananger ใน CompositionLocals (I53520)
- นำเมธอด LayoutCoordinates ที่เลิกใช้งานแล้วออก ให้ใช้ฟังก์ชันแทนพร็อพเพอร์ตี้สำหรับ positionInParent และ boundsInParent (I580ed, b/169874631, b/175142755)
- แทนที่นามแฝงประเภทด้วยประเภทพื้นฐาน
ColorStopเปลี่ยนชื่อเป็นPair<Float, Color>แล้ว- ตอนนี้
SpanStyleRangeคือ `AnnotatedString.Range ParagraphStyleRangeเปลี่ยนชื่อเป็นAnnotatedString.Range<ParagraphStyle>แล้วStringAnnotationเปลี่ยนชื่อเป็นAnnotatedString.Range<String>แล้ว- (I8dd1a)
- สร้าง TextInputSession ใหม่สำหรับเซสชันอินพุตจากคอมโพเนนต์ข้อความระดับต่ำ เช่น CoreTextField (I8817f, b/177662148)
- ตอนนี้ Placeable จะแสดง measuredSize ซึ่งแสดงถึงขนาดที่เลย์เอาต์ย่อยวัดจริง ขนาดนี้อาจไม่เป็นไปตามข้อจำกัดในการวัด (Ib2729, b/172560206, b/172338608)
- เพิ่มตัวแก้ไข selectionGroup ที่อนุญาตให้ทำเครื่องหมายคอลเล็กชันของแท็บหรือ RadioButton เพื่อวัตถุประสงค์ในการช่วยเหลือพิเศษ (Ie5c29)
ตอนนี้คุณต้องระบุ
defaultFactoryสำหรับcompositionLocalOfและstaticCompositionLocalOfแทนที่จะระบุหรือไม่ก็ได้การเปลี่ยนแปลงนี้จะนำข้อผิดพลาดเกี่ยวกับประเภทที่อาจเกิดขึ้นสำหรับประเภทที่ไม่ใช่ Null ออก ในกรณีที่ไม่ได้ระบุ Factory เริ่มต้น ก่อนหน้านี้ จะให้การอ้างอิงเป็น Null สำหรับประเภทที่กำหนดให้ต้องมีค่า
สำหรับประเภทที่กำหนดให้เป็น Null ได้ ให้พิจารณาใส่
{ null }เป็นค่าเริ่มต้น factoryเราไม่แนะนําให้ใช้ locales กับประเภทที่กำหนดให้ต้องมีค่า เว้นแต่จะระบุค่าเริ่มต้นที่เหมาะสมได้ หากไม่มีค่าเริ่มต้นที่เหมาะสม Lambda
defaultFactoryควรแสดงข้อยกเว้น อย่างไรก็ตาม การส่งข้อยกเว้นหมายความว่าผู้ใช้ภาษาจะมี ทรัพยากร Dependency โดยนัยถึงการระบุภาษาดังกล่าว ซึ่งระบบประเภทไม่ได้บังคับ (Ifbd2a)นำเมธอดที่เลิกใช้งานแล้วออกจากโมดูล UI ออกแล้ว (I646f6)
มีการเปลี่ยนชื่อตัวแก้ไขขนาด เปลี่ยนชื่อ Modifier.width/height/size เป็น requiredWidth/requiredHeight/requiredSize เราเปลี่ยนชื่อ Modifier.preferredWidth/preferredHeight/preferredSize เป็น width/height/size (I5b414)
Modifier.tapGestureFilterถูกลบออกไปแล้ว โปรดใช้Modifier.pointerInput { detectTapGestures(...) }แทน (I266ed, b/175294473)นำการใช้งานบางส่วนออกจากระบบอินพุตของเคอร์เซอร์ วิธีที่แนะนำในการประสานการใช้งานบางส่วนคือ Modifier.nestedScroll (Ie9c9b)
เราได้ย้ายการปฐมนิเทศไปไว้ในแพ็กเกจพื้นฐานแล้ว VelocityTracker ย้ายจาก ui.gesture ไปยัง ui.input.pointer (Iff4a8, b/175294473)
ตอนนี้ imageResource และ vectorResource เป็นฟังก์ชันส่วนขยาย ใน ImageBitmap และ ImageVector ตามลำดับ ระบบได้ลบฟังก์ชัน
load{Image,Vector,Font}Resourceรายการแล้ว (I89130)เราได้นำ AnimationClockObservable และคลาสย่อยออกแล้ว นำ AnimatedFloat ออกแล้ว (Icde52, b/177457083)
เปลี่ยนชื่อ Providers เป็น CompositionLocalProvider แล้ว
- เครื่องมือสร้าง Composition ไม่รับพารามิเตอร์คีย์อีกต่อไปและเลิกใช้งานแล้ว
- currentCompositeKeyHash ได้รับการเปลี่ยนให้เป็นพร็อพเพอร์ตี้ระดับบนสุดที่ประกอบกันได้แทนที่จะเป็นฟังก์ชันระดับบนสุดที่ประกอบกันได้
- CompositionData และ CompositionGroup ได้รับการย้ายไปยังเนมสเปซ androidx.compose.runtime.tooling แล้ว
- เราได้เปลี่ยน ComposableLambda ให้เป็นอินเทอร์เฟซแทนที่จะเป็นคลาสที่เฉพาะเจาะจง และไม่มีพารามิเตอร์ประเภทอีกต่อไป
- เราได้เปลี่ยน ComposableLambdaN ให้เป็นอินเทอร์เฟซแทนที่จะเป็นคลาสที่เฉพาะเจาะจง และไม่มีพารามิเตอร์ประเภทอีกต่อไป
- ฟังก์ชัน snapshotFlow ย้ายไปที่เนมสเปซ androidx.compose.runtime แล้ว
- วิธีการผสานของ SnapshotMutationPolicy ไม่ใช่เวอร์ชันทดลองอีกต่อไป
- ระบบได้นำฟังก์ชัน clearRoots ระดับบนสุด @TestOnly ออกแล้ว ไม่จำเป็นอีกต่อไป
- ระบบได้นำฟังก์ชัน keySourceInfoOf และ resetSourceInfo ออกแล้ว จึงไม่จำเป็นต้องใช้แล้ว
- มีการนำ Composer.collectKeySourceInformation ออกแล้ว ไม่จำเป็นอีกต่อไป
- นำเมธอด isJoinedKey, joinedKeyLeft และ joinedKeyRight ออกแล้ว จึงไม่จำเป็นต้องใช้แล้ว
- เราได้ย้ายและจัดระเบียบ API ระดับบนสุดต่างๆ ไปยังไฟล์อื่น เนื่องจากความหมายของคลาสไฟล์ของ Kotlin การดำเนินการนี้จะทำให้ความเข้ากันได้แบบไบนารีใช้งานไม่ได้ แต่ความเข้ากันได้ของแหล่งที่มาจะยังคงใช้งานได้ ดังนั้นผู้ใช้ส่วนใหญ่จึงไม่น่าจะพบปัญหา
- (I99b7d, b/177245490)
เรานำ
ComponentActivity.setContent()ออกจาก Compose:ui แล้ว ใช้รหัสที่ได้จากandroidx.activity:activity-compose:1.3.0-alpha01ระบบได้นำviewModel()และLocalViewModelStoreOwnerออกจาก Compose:UI แล้ว ใช้รหัสจากandroidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01(I6f36b)เราได้ปรับปรุง Modifier.scrollable ใหม่ ตอนนี้ใช้ Scrollable interface แทนคลาส ScrollableController (I4f5a5, b/174485541, b/175294473)
นำการรองรับ CustomEvens จาก PointerInputModifier ออกแล้ว (I02707, b/175294473)
SnapshotStateObserver ไม่ใช่ฟีเจอร์ทดลองอีกต่อไป (Id2e6a)
ลบ API บางรายการที่เลิกใช้งานไปก่อนหน้านี้ (Ice5da, b/178633932)
เราได้นำ longPressGestureFilter และ doubleClickGestureFilter ออกแล้ว ให้ใช้ Modifier.pointerInput กับฟังก์ชันช่วย เช่น detectTapGestures (I2fedf, b/175294473)
นำ String.format API ออก ปรับโครงสร้างการใช้งานในเมธอด toString ต่างๆ เพื่อไม่ให้ใช้ String.format ภายใน (Id1290)
นำการยืนยัน dp ออก (I798d2)
นำ androidx.compose.runtime:runtime-dispatch ออกแล้ว (I55feb)
ตอนนี้การดำเนินการกับข้อความจะตรวจสอบโฟกัสโดยอัตโนมัติ (I13777, b/179648629)
นำออก
runBlockingWithManualClock(I15cdc, b/179664814)ตอนนี้ตำแหน่งการเลื่อนใน Modifier.verticalScroll()/horizontalScroll() จะแสดงด้วย Ints (I81298)
เราได้เปลี่ยนชื่อ FlingConfig เป็น FlingBehavior แล้ว ซึ่งตอนนี้อนุญาตให้ปรับแต่งภาพเคลื่อนไหวระงับแทนการลดทอนที่กำหนดไว้ล่วงหน้า (I02b86, b/175294473)
เพิ่มฟังก์ชันตัวช่วยที่ช่วย ตั้งค่าการดำเนินการเดียวกันสําหรับ Callback ImeAction ทั้งหมด (I63447, b/179226323)
นำการเรียกกลับ SoftwareKeyboardController ออกจากช่องข้อความทั้งหมด เพื่อแทนที่ด้วย API ใหม่ในเร็วๆ นี้ (Iae869, b/168778053)
ระบบจะไม่ใช้ FontSpan และ FontWeigthStyleSpan อีกต่อไปและได้นำออกแล้ว (Ie5b56, b/177423444)
ทำการเปลี่ยนแปลง Material API ดังนี้
- เพิ่มพารามิเตอร์ contentPadding ลงใน Top/BottomAppBar เพื่อให้ปรับแต่งระยะเว้นเริ่มต้นได้
- จัดเรียงพารามิเตอร์ใหม่ใน BackdropScaffold เพื่อให้เป็นไปตามหลักเกณฑ์ของ API สำหรับพารามิเตอร์ที่จำเป็นซึ่งอยู่ก่อนพารามิเตอร์ที่ไม่บังคับ
- ย้ายพารามิเตอร์
iconใน BottomNavigationItem ไปไว้หลังselectedและonClick - เปลี่ยนชื่อพารามิเตอร์
alwaysShowLabelsใน BottomNavigationItem เป็นalwaysShowLabel - เปลี่ยนชื่อพารามิเตอร์
bodyContentในคอมโพเนนต์บางรายการเป็นcontent - เรียงลำดับพารามิเตอร์ใหม่ใน
ButtonDefaults.buttonColors()โปรดทราบว่าเนื่องจากประเภทของพารามิเตอร์ไม่ได้เปลี่ยนแปลง การดำเนินการนี้จึงไม่ทำให้เกิดข้อผิดพลาดในโค้ด โปรดตรวจสอบว่าคุณใช้พารามิเตอร์ที่มีชื่อหรืออัปเดตลำดับด้วยตนเอง มิฉะนั้นโค้ดจะทำงานไม่เหมือนเดิม - เพิ่มพารามิเตอร์
secondaryVariantไปยังdarkColors()แล้ว โดยปกติแล้ว สีนี้จะเหมือนกับsecondaryในธีมมืด แต่เราได้เพิ่มสีนี้เพื่อให้มีความสอดคล้องกันและปรับแต่งเพิ่มเติมได้ - นำ ElevationDefaults และ animateElevation() ออกจาก API สาธารณะเนื่องจากไม่ได้ใช้กันทั่วไป / ไม่มีประโยชน์
- เปลี่ยนชื่อ
onValueChangeEndในSliderเป็นonValueChangeFinishedและทำให้เป็นค่าว่างได้ - เปลี่ยนชื่อพารามิเตอร์
textในSnackbarเป็นcontentเพื่อให้สอดคล้องกัน - เพิ่มพารามิเตอร์
contentPaddingลงในDropdownMenuItemเพื่ออนุญาตให้ปรับแต่งระยะขอบเริ่มต้น และทำให้contentเป็นส่วนขยายในRowScope - เปลี่ยนชื่อ
ModalDrawerLayoutเป็นModalDrawerแล้ว - เปลี่ยนชื่อ
BottomDrawerLayoutเป็นBottomDrawerแล้ว - (I1cc66)
การแก้ไขข้อบกพร่อง
- เพิ่ม API เพื่อใช้ทรัพยากร AnimatedVectorDrawable ใน Compose ใช้
animatedVectorResource เพื่อโหลด
<animated-vector>XML เป็น AnimatedImageVector และเคลื่อนไหว ด้วย painterFor (I8ea91) - เพิ่ม API LocalSoftwareKeyboardController composition local ใหม่เพื่อแทนที่อินเทอร์เฟซ SoftwareKeyboardController ก่อนหน้าใน TextField (I658b6, b/168778053)
เวอร์ชัน 1.0.0-alpha12
10 กุมภาพันธ์ 2021
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.0.0-alpha12 เวอร์ชัน 1.0.0-alpha12 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- นำการรองรับ ViewGroup ออกจาก UiApplier นำ Composable ของ emitView ที่เลิกใช้งานแล้วออก (Ifb214)
- ตอนนี้ Modifier.pointerInput ต้องใช้คีย์ remember เพื่อระบุเมื่อควรเริ่มโครูทีนการตรวจหาอินพุตของเคอร์เซอร์ใหม่สำหรับทรัพยากร Dependency ใหม่ (I849cd)
- เปลี่ยนชื่อ CompositionReference เป็น CompositionContext (I53fcb)
- เปลี่ยนชื่อ Bounds เป็น DpRect (I4b32a)
- การอัปเดตการทดสอบ: hasText() จะตรวจสอบทั้งข้อความอินพุตและข้อความป้ายกำกับ/คำแนะนำ/ตัวยึดตำแหน่งในช่องข้อความ (Iab803)
- ย้าย Composable viewModel() และ LocalViewModelStoreOwner ไปยัง androidx.lifecycle.viewmodel.compose แล้ว ตอนนี้คุณจะต้องเพิ่มทรัพยากร Dependency androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 แยกต่างหากเพื่อใช้งาน (I7a374)
- อนุญาตให้ดำเนินการที่อาจเป็น Null ใน AccessibilityAction เปลี่ยนป้ายกำกับการดำเนินการ ใน AccessibilityAction และ CustomAccessibilityAction จาก CharSequence เป็น String (I0dc82)
- เราได้เปลี่ยนชื่อ ImagePainter เป็น BitmapPainter เพื่อให้สอดคล้องกับ VectorPainter มากขึ้น และเพื่อให้การตั้งชื่อเป็นไปตาม รูปแบบการตั้งชื่อของ ImageBitmap และ ImageVector (Iba381, b/174565889)
- API การทดสอบสตริงย่อยที่ดีขึ้นโดยมีสตริงย่อยเป็นอาร์กิวเมนต์ (Icbe78)
- เพิ่ม
Modifier.focusOrder()ที่ ยอมรับ FocusRequester โดยไม่ต้องระบุ ลำดับโฟกัสที่กำหนดเองเป็น Lambda ซึ่งจะมีประโยชน์ เมื่อเราต้องการระบุเฉพาะการอ้างอิง แต่ไม่ต้องการลำดับโฟกัสที่กำหนดเองสำหรับ Composable (I4f52a, b/179180978) - ComponentActivity.setContent ได้ย้ายไปอยู่ที่ androidx.activity.compose.setContent ในโมดูล androidx.activity:activity-compose แล้ว (Icf416)
- เราได้นำเมธอด Destructuring และ copy() ออกจาก คลาสหลายคลาสซึ่งไม่ค่อยมีการใช้งาน (I26702, b/178659281)
- ย้ายป๊อปอัปให้เป็นแพลตฟอร์มที่เฉพาะเจาะจง เราได้เปลี่ยนชื่อ AndroidPopupProperties เป็น PopupProperties และย้าย
isFocusableไปยังพารามิเตอร์focusableในPopupProperties(Ieeea5) - ย้ายกล่องโต้ตอบให้เป็นแพลตฟอร์มที่เฉพาะเจาะจง เปลี่ยนชื่อ AndroidDialogProperties เป็น DialogProperties (I4ef69, b/179138130)
- ทำให้ LayoutNode เป็นแบบภายใน (I8a7b1, b/175103944)
- Constraints.enforce ถูกแทนที่ด้วย Constraints.constrain (I8b8ea)
- เลิกใช้งาน loadFontResource แล้ว โปรดใช้ fontResource แทน เลิกใช้งาน imageResource, loadImageResource, vectorResource และ loadVectorResource แล้ว ใช้ painterResource แทน (I6b809)
- ตอนนี้ตรรกะของ ScrollAxisRange จะใช้ Lambda ที่แสดงผล Float แทนค่า Float โดยตรงเพื่อเหตุผลด้านประสิทธิภาพ (If4a35, b/178657186)
- เพิ่ม Semantics ของ EditableText เพื่อทำเครื่องหมายข้อความอินพุตที่แก้ไขได้ของช่องข้อความสำหรับการช่วยเหลือพิเศษ และเพิ่มวิธีการทดสอบที่เกี่ยวข้องเพื่อตรวจสอบ Semantics (I8e07a)
- ทำให้ OwnerLayer/OwnerScope/OwnerSnapshotObserver เป็นแบบภายใน (I4ffaf, b/175103944)
- เปลี่ยนชื่อ toIntPx() เป็น roundToPx() (I9b7e4, b/173502290)
- เปลี่ยนชื่อ IntBounds เป็น IntRect และปรับปรุง API แล้ว (I1f6ff)
- เราได้อัปเดต Snapshot API ให้สอดคล้องกับ หลักเกณฑ์ของ API มากขึ้น รวมถึงซ่อนคลาสการติดตั้งใช้งานภายใน จาก API สาธารณะ (Id9e32)
- เพิ่มการดำเนินการทางความหมายในการขยายและยุบ เพิ่ม expand และ halfExpand ใน ModalBottomSheetState (Ib5064)
- เลิกใช้งาน Modifier.dragGestureFilter แล้ว ให้ใช้
Modifier.pointerInput { detectDragGestures (...)}แทน หรือใช้ Modifier.draggable สำหรับการลากแกนเดียว (I0ba93, b/175294473) - เปลี่ยนชื่อ Ambients ให้ตรงกับการเปลี่ยนชื่อ Ambient -> CompositionLocal เดิมแอมเบียนต์ชื่อ AmbientFoo ตอนนี้ CompositionLocals ชื่อ LocalFoo (I2d55d)
- ตอนนี้เราได้นำ BaseTextField ที่เลิกใช้งานแล้วออกแล้ว โปรดใช้ BasicTextField แทน (I71368)
- ย้ายการเลือกไปยังมูลนิธิแล้ว (I7892b)
- เช่นเดียวกับที่เราเคยนำ
state { 0 }composable ออกและตอนนี้ส่งเสริมการใช้งานอย่างremember { mutableStateOf(0) }เราจะนำsavedInstanceState { 0 }composable ออก คุณควรใช้rememberSaveable { mutableStateOf(0) }แทน และระบบจะบันทึกและกู้คืนโดยอัตโนมัติหากจัดเก็บประเภทที่ใช้ภายใน MutableState ไว้ใน Bundle ได้ หากก่อนหน้านี้คุณส่งออบเจ็กต์โปรแกรมประหยัดที่กำหนดเอง ตอนนี้คุณต้องใช้การโอเวอร์โหลดใหม่ของ rememberSaveable ซึ่งมีพารามิเตอร์stateSaverการใช้งานจะมีลักษณะดังนี้val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) }(Ib4c26, b/177338004) - เพิ่มความหมายของรหัสผ่านเพื่อการช่วยเหลือพิเศษ (I231ce)
- เพิ่ม ProgressBarRangeInfo.Indeterminate เพื่อทำเครื่องหมายแถบความคืบหน้าที่ไม่แน่นอนเพื่อการช่วยเหลือพิเศษ (I6fe05)
- เราได้เลิกใช้งานยูทิลิตี
emptyContent()และ(@Composable () -> Unit).orEmpty()แล้ว เนื่องจากไม่มีผลต่อประสิทธิภาพหรือคุณค่าในเชิงบวกอีกต่อไป (I0484d) snapshotFlowและwithMutableSnapshotไม่ใช่ฟีเจอร์ ทดลองอีกต่อไป (I6a45f)- ตอนนี้คุณปิด Recomposer ได้แล้ว Closed recomposers จะ ทำการ Recomposition ต่อไปจนกว่าโคโรทีนย่อยของการ Composition จะเสร็จสมบูรณ์ เปลี่ยนชื่อ Recomposer.shutDown เป็น cancel เพื่อให้แตกต่างจาก close (Ib6d76)
- UiSavedStateRegistry เปลี่ยนชื่อเป็น SaveableStateRegistry, AmbientUiSavedStateRegistry เปลี่ยนชื่อเป็น AmbientSaveableStateRegistry และทั้ง 2 รายการย้ายไปที่แพ็กเกจ androidx.compose.runtime.saveable (I30224)
- เปลี่ยนชื่ออาร์ติแฟกต์ 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)
- คลาส Outline.* ไม่ใช่คลาสข้อมูลอีกต่อไป (I4879e, b/178001427)
- นำ
view.captureToImage()ออกโดยไม่มีการแทนที่ (I7fcd2) - เปิดตัว ColorMatrix API ที่ใช้ เพื่อแก้ไขค่า RGB ของเนื้อหาต้นฉบับ ปรับโครงสร้าง ColorFilter API ให้เป็น อินเทอร์เฟซและตรงกับการใช้งาน ของ PathEffect (Ica1e8)
- เพิ่มพารามิเตอร์ layoutDirection ลงใน createOutline ของ Shape ซึ่งช่วยให้สร้างรูปร่างที่รับรู้ทิศทางของเลย์เอาต์ได้ (I57c20, b/152756983)
- เลิกใช้งาน onImeActionPerformed แล้ว ให้ใช้ KeyboardActions แทน (If0bbd, b/179071523)
- เปิดตัวองค์ประกอบบริบทโครูทีน
InfiniteAnimationPolicyที่จะใช้ในภาพเคลื่อนไหวแบบไม่มีที่สิ้นสุด โดยค่าเริ่มต้น ระบบจะไม่ติดตั้งนโยบายใดๆ ยกเว้นเมื่อเรียกใช้การทดสอบด้วยComposeTestRule(I50ec4, b/151940543) - นำ canDrag ออกจาก Modifier.scrollable แล้ว (Id66e7, b/175294473)
- เปลี่ยนชื่อ LayoutCoordinates.parentCoordinates เป็น LayoutCoordinates.parentLayoutCoordinates เพื่อให้มีพร็อพเพอร์ตี้ parentCoordinates ใหม่ พร็อพเพอร์ตี้ parentCoordinates จะแสดง LayoutCoordintes ของตัวแก้ไขระดับบนแล้ว ซึ่งจะช่วยให้มี Use Case ที่สมบูรณ์ยิ่งขึ้นสำหรับ onSizeChanged() และ onGloballyPositioned() (Idfbfd, b/177926591)
- เลิกใช้งาน tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter และ pressIndicaitonGestureFilter แล้ว โปรดใช้ Modifier.clickable หรือ Modifier.pointerInput กับฟังก์ชัน detectTapGestures แทน (I6baf9, b/175294473)
- นำ unregisterProvider ของ SaveableStateRegistry ออกแล้ว แต่ตอนนี้ registerProvider() จะแสดงออบเจ็กต์ SaveableStateRegistry.Entry ซึ่งคุณใช้เพื่อยกเลิกการลงทะเบียนได้ (Ic4274, b/178583739)
- เปลี่ยนชื่อ rememberSavedInstanceState() เป็น rememberSaveable() และย้ายไปยังแพ็กเกจ androidx.compose.runtime.saveable (I1366e, b/177338004)
- นำ CoreText และ CoreTextField ออกจาก API สาธารณะ
- นำการโอเวอร์โหลด SelectionContainer ที่เลิกใช้งานแล้วออก
- (I99c19)
- การทดสอบที่ใช้ Compose ในลำดับชั้นที่เพิ่ม/นำออกจาก WindowManager โดยตรงจะมีความเสถียรมากขึ้น (Ie81ed, b/175765614)
- นำ Recomposer.current() ออกแล้ว [Abstract]ตอนนี้ ComposeView จะใช้ Recomposer ที่สร้างแบบเลื่อนเวลาและมีขอบเขตระดับหน้าต่างเป็นค่าเริ่มต้น ซึ่งขับเคลื่อนโดย ViewTreeLifecycleOwner สำหรับหน้าต่าง ระบบจะหยุดการจัดองค์ประกอบใหม่และเครื่องหมายภาพเคลื่อนไหวตาม withFrameNanos ชั่วคราวขณะที่หยุดวงจรของโฮสต์ (I38e11)
- ตอนนี้ Recomposer.runningRecomposers มี StateFlow ทั่วโลกของ RecomposerInfo แบบอ่านอย่างเดียวสำหรับการสังเกตสถานะการจัดองค์ประกอบที่กำลังดำเนินการในกระบวนการ ควรใช้ API นี้แทน Recomposer.current() ซึ่งตอนนี้เลิกใช้งานแล้ว (If8ebe)
- ย้าย Saver, listSaver(), mapSaver(), autoSaver จาก androidx.compose.runtime.savedinstancestate ไปยัง androidx.compose.runtime.saveable (I77fe6)
- EditCommands ยอมรับ AnnotatedString อย่างไรก็ตาม การเปลี่ยนแปลงนี้เป็น การเปลี่ยนแปลงใน API เท่านั้น และระบบยังไม่ได้ ใช้การแก้ไขข้อความหลายสไตล์ (I4c3ea)
- ระบบได้นำเวลาทำงานและระยะเวลาออกแล้ว (Ib9bf4, b/177420019)
- ย้าย CompositionData.asTree() และ API ที่เกี่ยวข้อง ไปยังโมดูล ui-tooling-data แยกต่างหากและทำเครื่องหมายเป็นเวอร์ชันทดลอง (Ic95b8)
- เราเปลี่ยนชื่อพารามิเตอร์ใน RounderCornerShape, CutCornerShape และ CornerBasedShape จากซ้าย/ขวาเป็นเริ่ม/สิ้นสุดเพื่อรองรับการมิเรอร์อัตโนมัติของรูปร่างในทิศทาง RTL เราได้เปิดตัว AbsoluteRounderCornerShape และ AbsoluteCutCornerShape สำหรับกรณีที่ไม่ต้องการการมิเรอร์อัตโนมัติ (I61040, b/152756983)
เราได้ปรับโครงสร้าง API ที่ปลั๊กอินคอมไพเลอร์ Compose กำหนดเป้าหมาย เพื่อใช้อินเทอร์เฟซแทน คลาสที่เฉพาะเจาะจง นอกจากนี้ อินเทอร์เฟซยังไม่ใช้พารามิเตอร์ประเภทอีกต่อไป
การเปลี่ยนแปลงนี้เป็นการเปลี่ยนแปลงภายในซึ่งไม่ควรส่งผลต่อความเข้ากันได้ของซอร์สโค้ด แต่เป็นการเปลี่ยนแปลงแบบไบนารีที่ทำให้เกิดการหยุดทำงาน (I3b922, b/169406779)
นำฟังก์ชัน StringBuilder.deleteAt ที่ตั้งค่าเป็นสาธารณะโดยไม่ตั้งใจออก (Id6ed9)
การแก้ไขข้อบกพร่อง
- ตอนนี้ ComposeView ที่วางไว้ในลำดับชั้นของ View ซึ่งเป็นองค์ประกอบย่อยขององค์ประกอบอื่นจะโฮสต์องค์ประกอบย่อยขององค์ประกอบบรรพบุรุษ (I92883)
- อัปเดต API imageFromResource ของ Compose เพื่อใช้แคช Drawable ของทรัพยากรซ้ำ เมื่อโหลดออบเจ็กต์ ImageBitmap (If3627, b/178751994)
เวอร์ชัน 1.0.0-alpha11
28 มกราคม 2021
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.0.0-alpha11 เวอร์ชัน 1.0.0-alpha11 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เราได้ปรับปรุง WithConstraints เป็น BoxWithConstraints และย้ายไปที่ foundation.layout (I9420b, b/173387208)
- เลิกใช้งาน Key.DPadUp แล้ว ใช้ Key.DirectionUp แทน (Iab335, b/177954892)
- อินเทอร์เฟซเจ้าของจะอยู่ภายในนับจากนี้ (If8e35)
- เพิ่ม API FocusManager.moveFocus() เพื่อย้ายโฟกัสโดยอัตโนมัติ (I045cb, b/177681839)
- เปลี่ยน PopupPositionProvider ให้ใช้พิกัดที่สัมพันธ์กับหน้าต่าง ไม่ใช่พิกัดส่วนกลาง เปลี่ยนชื่อ parentGlobalBounds เป็น anchorBounds และเปลี่ยน windowGlobalBounds เป็น windowSize: IntSize (I2994a)
- เราจะแทนที่ระยะเวลาและระยะเวลาทำงานด้วยมิลลิวินาทีแบบยาว และขั้นตอนนี้จะนำทรัพยากร Dependency ของอินพุต Pointer ในคลาสเหล่านั้นออก (Ia33b2, b/175142755, b/177420019)
- มีการเพิ่ม AmbientSavedStateRegistryOwner ในลักษณะเดียวกับ AmbientLifecycleOwner และ AmbientViewModelStoreOwner ที่มีอยู่แล้ว (I9a3e8, b/176756365)
- อัปเดต API กราฟิกเวกเตอร์ เพื่อรองรับการแยกวิเคราะห์การปรับสี ที่ใช้กับรูทของกราฟิกเวกเตอร์ (Id9d53, b/177210509)
- เพิ่ม toolType ลงใน PointerInputChange เพื่อแยกความแตกต่างของอุปกรณ์ (Iac787, b/175142755)
- เปลี่ยนชื่อ AmbientWindowManager เป็น AmbientWindowInfo (I2686a, b/177084714, b/177084983)
- เลิกใช้งานเมธอดพิกัดส่วนกลางและสร้าง เมธอดพิกัดใหม่ที่อิงตามหน้าต่าง (Iee284)
- เพิ่ม Modifier.toolingGraphicsLayer ซึ่งจะเพิ่มตัวปรับแต่งเลเยอร์กราฟิกเมื่อเปิดการตรวจสอบ (I315df)
- ตอนนี้ FocusRequester.createRefs มีเครื่องหมายระบุว่าเป็นฟีเจอร์ทดลองเนื่องจากอาจมีการเปลี่ยนแปลง (I2d898, b/177000821)
- SemanticsPropertyReceiver.hidden เปลี่ยนชื่อเป็น invisibleToUser และทำเครื่องหมาย @ExperimentalComposeUiApi เปลี่ยนชื่อ AccessibilityRangeInfo เป็น ProgressBarRangeInfo เปลี่ยนชื่อ stateDescriptionRange เป็น progressBarRangeInfo AccessibilityScrollState เปลี่ยนชื่อเป็น ScrollAxisRange horizontalAccessibilityScrollState เปลี่ยนชื่อเป็น horizontalScrollAxisRange verticalAccessibilityScrollState เปลี่ยนชื่อเป็น verticalScrollAxisRange (Id3148)
- นำ PointerInputData ออกและแก้ไข PointerInputChange เพื่อให้มีฟิลด์ทั้งหมดของ PointerInputData ทำให้ PointerInputEvent และ PointerInputEventData เป็นแบบภายในเนื่องจากไม่ได้ใช้ใน API สาธารณะใดๆ (Ifff97, b/175142755)
- อัปเดตการใช้งาน GraphicsLayerScope density เพื่อรองรับการแปลง dp เป็น พิกเซลดิบ (Ied528, b/176819695)
- อัปเดต API ของเมทริกซ์ให้เป็นไปตามลำดับแถว หลักและระบุค่าคงที่ของดัชนี เพื่อช่วยในการแปลงระหว่าง การแสดงเมทริกซ์ต่างๆ ให้ตรงกับเฟรมเวิร์ก ตรรกะการแปลงระหว่าง SkMatrix กับ Matrix4 ภายใน (I432e6)
- นำเมธอด monotonicFrameAnimationClockOf ที่เป็นเวอร์ชันทดลองออกแล้ว (Ib753f, b/170708374)
- ย้าย String.fintPrecedingBreak และ String.fingFollowingBreak ไปยัง InternalTextApi (I657c4)
- androidx.compose.ui.util.isSurrogatePair ถูกนำออกจาก API สาธารณะแล้ว (Ia9494)
- เปลี่ยนชื่อ TransformedText.transformedText เป็น TransformedText.text
- TransformedText ไม่ใช่คลาสข้อมูลอีกต่อไป (Ie672a)
- นำ
data classออกจากชั้นเรียนต่อไปนี้แล้ว- InlineTextContent
- LocaleList (I605c7)
- คลาสต่อไปนี้ไม่ใช่คลาสข้อมูลอีกต่อไป
- AnnotatedString
- ParagraphStyle
- SpanStyle
- TextStyle
- FontWeight
- TextDecoration
- TextGeometricTransform
- TextIndex
- TextLayoutResult
- TextLayoutInput (Iaff99)
- เปลี่ยน VisualTransformation ให้เป็นอินเทอร์เฟซที่ใช้งานได้ (I3bba4)
- เพิ่มประเภทพารามิเตอร์ข้อมูลอ้างอิงฟังก์ชัน (I5e1bd)
- เพิ่มขอบเขตที่แปลงแล้วลงใน InspectorNode (Ice42f)
การแก้ไขข้อบกพร่อง
- onCommit, onDispose และ onActive ถูกเลิกใช้งานแล้วเพื่อรองรับ SideEffect และ DisposableEffect API (If760e)
การเปลี่ยนแปลงฟังก์ชันโรงงานสำหรับ 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)
เพิ่มพารามิเตอร์คำอธิบายเนื้อหาลงในรูปภาพและไอคอนแล้ว ใช้เพื่ออธิบายบริการการช่วยเหลือพิเศษ (I2ac4c)
นำ displaySize ออกเนื่องจากควรหลีกเลี่ยง โดยปกติแล้ว ควรใช้ขนาดของ onRoot() หรือขนาดหน้าต่างเป็นอย่างน้อย (I62db4)
OnSizeChanged รายงานขนาดของเนื้อหาเลย์เอาต์ ตอนนี้จะรายงานขนาดที่ตำแหน่งภายในเชนตัวแก้ไข (I36b78, b/177562900)
เราเลิกใช้งาน API emit() และการโอเวอร์โหลดทั้งหมดแล้ว และเปลี่ยนชื่อเป็น ComposeNode API ทั้ง 2 รายการเหมือนกันทุกประการ เพียงแต่ใช้ชื่อต่างกันเพื่อให้เป็นไปตามรูปแบบการตั้งชื่อของ Compose (I4137b)
TextFieldValue ยอมรับ AnnotatedString อย่างไรก็ตาม การเปลี่ยนแปลงนี้เป็น การเปลี่ยนแปลง API เท่านั้น และระบบยังไม่ได้ ใช้การแก้ไขข้อความหลายสไตล์
- นำ
initialออกจากพารามิเตอร์ของตัวสร้าง EditingBuffer (I326d5)
- นำ
ตอนนี้เราเลิกใช้งาน invalidate และ compositionReference() แล้ว และแนะนำให้ใช้ currentRecomposeScope และ rememberCompositionReference แทนตามลำดับ (I583a8)
มีการเปลี่ยนแปลง AnnotatedString ให้ขยายจาก kotlin.CharSequence ดังนั้น ตอนนี้ length และ subSequence จึงเป็นฟังก์ชันอินสแตนซ์ และระบบได้นำฟังก์ชันส่วนขยายออกแล้ว (Iaf429)
โปรดทราบว่า RememberObserver จะแทนที่ CompositionLifecycleObserver และตอนนี้ CompositionLifecycleObserver เลิกใช้งานแล้ว
RememberObserverเป็นการแทนที่CompositionLifecycleObserverด้วยความหมายที่แก้ไขแล้วและ วิธีการที่เปลี่ยนชื่อแล้ว การเปลี่ยนไปใช้ API ใหม่สามารถทำได้โดยอัตโนมัติ สำหรับออบเจ็กต์ที่ระบบจดจำเพียงครั้งเดียว ซึ่งเป็นแนวทางที่แนะนำและยังคงเป็นแนวทางที่แนะนำ ต่อไป อย่างไรก็ตาม หากมีการจดจำการอ้างอิงมากกว่า 1 ครั้งในองค์ประกอบonRememberedจะเรียกใช้ สำหรับการอ้างอิงแต่ละรายการโดยที่onEnterจะเรียกใช้เพียงครั้งเดียวonEnterถูกเรียกหลายครั้งหากใช้วัตถุในองค์ประกอบย่อย เช่นWithConstraintsและScaffoldทำให้การรับประกันการเรียกใช้onEnterครั้งเดียวไม่น่าเชื่อถือและถูกนำออกสำหรับRememberObserverRememberObserverเพิ่มonAbandonedซึ่งจะเรียกใช้หากอินสแตนซ์RememberObserverได้รับจาก Callback ที่ส่งไปยังrememberแต่ไม่ได้บันทึกไว้ในสถานะการเรียบเรียง และจะไม่เรียกใช้onRememberedข้อผิดพลาดนี้อาจเกิดขึ้นหากข้อยกเว้นสิ้นสุดการคอมโพสก่อนที่จะเสร็จสมบูรณ์ หรือระบบทิ้งการคอมโพสเนื่องจากสถานะที่ใช้สร้างการคอมโพสไม่เป็นปัจจุบันอีกต่อไป หรือไม่จำเป็นอีกต่อไป หากอินสแตนซ์ของRememberObserverที่ตามมาด้วยคำแนะนำการอ้างอิงเดียวด้านบนติดตามแหล่งข้อมูลภายนอก ทั้งonForgottenและonAbandonedจะระบุว่า ไม่จำเป็นต้องใช้แหล่งข้อมูลอีกต่อไป หากออบเจ็กต์ติดตามงานที่เริ่มหรือทรัพยากรที่จัดสรรในonRememberedคุณสามารถละเว้นonAbandonedได้เนื่องจากระบบจะไม่เรียกใช้หากเรียกใช้onRemembered(I02c36)การดำเนินการทางคณิตศาสตร์ที่เลิกใช้งานแล้วระหว่าง TextUnit ตั้งแต่ 2 รายการขึ้นไป เลิกใช้งานฟังก์ชัน TextUnit.Sp และ TextUnit.Em เพื่อให้ใช้ฟังก์ชันส่วนขยาย เช่น Int.sp และ Int.em แทน (I48369)
ตอนนี้ทรัพยากรในไลบรารีที่ไม่มีการประกาศทรัพยากรสาธารณะอย่างชัดเจน (เช่น ผ่าน public.xml) จะเป็นแบบส่วนตัวโดยค่าเริ่มต้น (Ia1dcc, b/170882230)
เลิกใช้งาน ScrollableColumn/Row แล้ว การใช้ ScrollableColumn มีประสิทธิภาพน้อยกว่าเมื่อเทียบกับ LazyColumn เมื่อคุณมีเนื้อหาที่เลื่อนได้จำนวนมาก เนื่องจาก LazyColumn จะคอมโพส/วัด/วาดเฉพาะองค์ประกอบที่มองเห็นได้ เพื่อป้องกันไม่ให้ผู้ใช้ใช้วิธีที่ไม่มีประสิทธิภาพ เราจึงตัดสินใจเลิกใช้งาน ScrollableColumn และ ScrollableRow แล้วแนะนำให้ใช้ LazyColumn และ LazyRow แทน ผู้ใช้ยังคงเลือกได้ว่าจะไม่ใช้ลักษณะการทำงานแบบเลซี่และใช้ตัวแก้ไขโดยตรงได้ดังนี้ Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b, b/170468083)
items(count: Int)เมธอด Factory ใหม่สำหรับขอบเขตของ LazyColumn/LazyRow/LazyVerticalGrid ตอนนี้items(items: List)และitemsIndexed(items: List)เป็นฟังก์ชันส่วนขยายแล้ว คุณจึงต้องนําเข้าด้วยตนเองเมื่อใช้งาน การโอเวอร์โหลดส่วนขยายใหม่สำหรับอาร์เรย์:items(items: Array)และitemsIndexed(Array)(I803fc, b/175562574)โปรดใช้ ImeAction.None แทน ImeAction.NoAction
- โปรดใช้ ImeAction.Default แทน ImeAction.Unspecified (Ie1bcc)
ใช้ประโยชน์จาก TestCoroutineDispatcher ในการทดสอบ (I532b6)
เปลี่ยนชื่อ TextInputService.onStateUpdated เป็น updateState (Id4853)
เลิกใช้งานการเปลี่ยนตาม TransitionDefinition แล้ว (I0ac57)
นำ TextUnitType.Inherit ออกแล้ว โปรดใช้ TextUnitType.Unspecified แทน (I9ff64)
เวอร์ชัน 1.0.0-alpha10
13 มกราคม 2021
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.0.0-alpha10 เวอร์ชัน 1.0.0-alpha10 มีคอมมิตเหล่านี้
การเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ
การปรับโครงสร้าง API ของคอมไพเลอร์ภายใน ช่วยให้สามารถจัดกลุ่มการเปลี่ยนแปลงไปยังโหนดที่สร้างขึ้น อันเป็นผลมาจากการจัดองค์ประกอบเป็นเฟส "ใช้การเปลี่ยนแปลง" ของการจัดองค์ประกอบ หลังจากที่ฟังก์ชัน
@Composableทั้งหมด เสร็จสมบูรณ์แล้วนี่เป็นการเปลี่ยนแปลงที่ทำให้เกิดข้อขัดข้องด้านลักษณะการทำงาน ซึ่งอาจส่งผลต่อโค้ดของแอปพลิเคชันเนื่องจากโหนดจะไม่พร้อมใช้งานจาก API ภายในและ API ที่ทดลองใช้จนกว่าจะมีการใช้การเปลี่ยนแปลง โดยปกติแล้ว คุณสามารถหลีกเลี่ยงปัญหานี้ได้โดย ล้อมรอบโค้ดที่มีการอ้างอิงดังกล่าวใน
SideEffectComposable เพื่อเลื่อนการเรียกใช้โค้ด จนกว่าจะสร้างและ เริ่มต้นโหนดแล้ว (I018da)
การเปลี่ยนแปลง API
- เพิ่ม Modifier.focusOrder() ที่ใช้ระบุลำดับการย้ายโฟกัสที่กำหนดเองได้ (I90cf5, b/175899543, b/170155556, b/170155429)
- นำการใช้ focusObserver ที่เลิกใช้งานแล้วออก ให้ใช้ onFocusChanged หรือ onFocusEvent แทน (I3ecb9, b/175156387)
- การเปลี่ยนแปลง EditOperations API
- เปลี่ยนชื่อ EditOperation เป็น EditCommand
- เพิ่มคำต่อท้าย Command สำหรับการติดตั้งใช้งานจริงของ EditOperation
- EditCommand ไม่ใช่คลาสข้อมูลอีกต่อไป
- เปลี่ยนชื่อฟังก์ชัน EditOperation.process เป็น applyTo
- เปลี่ยนชื่อ InputEventListener เป็น InputEventCallback
- (I0a366)
- นำ PxSquared, PxCubed, PxInverse ที่ไม่ได้ใช้ออก เปลี่ยน Size.center() ให้เป็นพร็อพเพอร์ตี้ (I973f7)
- ตอนนี้โมดูล ui-test จะกำหนดค่าการสร้าง Recomposer สำหรับ UI ที่อยู่ระหว่างการทดสอบได้แล้ว (Ibebd8)
- แก้ไขความเร็วให้มีส่วนประกอบและการดำเนินการทางคณิตศาสตร์ (Ib0447)
- เปลี่ยนชื่อ
@ExperimentalTestingเป็น@ExperimentalTestApiเพื่อให้สอดคล้องกับคำอธิบายประกอบ API ทดลองที่คล้ายกัน (Ia4502, b/171464963) - เปลี่ยนชื่อ Color.useOrElse() เป็น Color.takeOrElse() (Ifdcf5)
- นำคลาส DpInverse, DpSquared และ DpCubed ที่ไม่ได้ใช้ออก (I4d62b)
- เปลี่ยนชื่อ Constraints#satisfiedBy เป็น isSatisfiedBy (I9cf5c)
- เพิ่มการเรียกกลับเพื่อแจ้งให้เจ้าของทราบเมื่อขอบเขตของ LayoutNode เปลี่ยนแปลง (I72fd1)
- เพิ่ม isSpecified, isUnspecified และ useOrElse สำหรับ คลาสอินไลน์ที่มีค่าคงที่ Unspecified (I93f7b, b/174310811)
ขยาย [Abstract]ComposeView API เพื่ออนุญาตให้รีไซเคิล มุมมองที่อิงตาม Compose โดยทิ้งการจัดองค์ประกอบเพื่อสร้างใหม่ ในภายหลัง เพิ่ม API สำหรับการติดตั้งและค้นหา Recomposer ที่มีขอบเขตระดับหน้าต่าง และ CompositionReference สำหรับการสร้างคอมโพสิตลูก
เพิ่ม ViewCompositionStrategy เพื่อกำหนดค่ากลยุทธ์การทิ้งองค์ประกอบของ [Abstract]ComposeViews ลักษณะการทำงานเริ่มต้นคือการทิ้งเมื่อหน้าต่างถูกยกเลิกการเชื่อมต่อ (I860ab)
นำ Any.identityHashCode() API สาธารณะออก (I025d7)
นำ toStringAsFixed API ออกเพื่อใช้ String.format แทนโดยตรง (Iaba6b)
เพิ่มสวิตช์เปิด/ปิดลงใน foundation Strings.kt (I4a5b7, b/172366489)
ย้าย nativeClass ไปยัง โมดูล ui และทำให้เป็นภายใน อัปเดตการใช้งาน nativeClass ในการติดตั้งใช้งาน equals เพื่อใช้ "is MyClass" แทน (I4f734)
เลิกใช้งาน Modifier.focus() และ Modifier.focusRequester() แล้ว ใช้ Modifier.focusModifier() และ Modifier.focusReference() แทน (I75a48, b/175160751, b/175160532, b/175077829)
เปิดตัว SelectionRegistrar.notifySelectableChange เพื่อแจ้งการอัปเดตที่เลือกได้ไปยัง SelectionManager (I6ff30, b/173215242)
เพิ่มพร็อพเพอร์ตี้ Outline.bounds เพื่อรับสี่เหลี่ยมล้อมรอบ สำหรับการติดตั้งใช้งานโครงร่างต่างๆ (I16e74, b/175093504)
เลิกใช้ TestUiDispatcher แล้ว โปรดใช้ Dispatchers.Main แทน (Ic171f, b/175385255)
ImeOptions และ KeyboardOptions ไม่ใช่คลาสข้อมูลอีกต่อไป (I3c898, b/168684531)
การเปลี่ยนแปลง VisualTransformation API
- เปลี่ยนชื่อ OffsetMap เป็น OffsetMapping
- เปลี่ยนชื่อ OffsetMapping.identityOffsetMap เป็น OffsetMapping.Identity
- PasswordTransformation ไม่ใช่คลาสข้อมูลอีกต่อไป
- ย้าย OffsetMapping ไปยังไฟล์ของตัวเอง
- (I0bdf3)
เปลี่ยนชื่อตำแหน่งเป็น DpOffset และนำ getDistance() ออก (Ib2dfd)
เปลี่ยน fun Dp.isFinite() เป็น val Dp.isFinite (I50e00)
การแก้ไขข้อบกพร่อง
- ตอนนี้ Recomposer จะแสดง Flow ของสถานะปัจจุบัน ซึ่งช่วยให้ตรวจสอบกิจกรรมของ Recomposer และกิจกรรมของเอฟเฟกต์ที่เชื่อมโยงได้ (Ifb2b9)
- ตอนนี้คุณเข้าถึง keyEvent ดั้งเดิมได้ผ่าน keyEvent.nativeKeyEvent (I87c57, b/173086397)
- ตอนนี้
animate()ถูกแทนที่ด้วยanimateAsState()ซึ่งจะแสดงผลเป็นState<T>แทนTซึ่งจะช่วยให้ประสิทธิภาพดีขึ้น เนื่องจากสามารถจำกัดขอบเขตการลบล้างให้แคบลง ในตำแหน่งที่อ่านค่าสถานะ (Ib179e) - เพิ่ม API บทบาทของ Semantics และเพิ่มบทบาทเป็นพารามิเตอร์ไปยัง SemanticsModifier ที่คลิกได้ เลือกได้ และสลับได้ เปลี่ยน Modifier.progressSemantics เพื่อให้แถบเลื่อนใช้ได้ด้วย (I216cd)
- API ใหม่ที่ใช้โครูทีน
Animatableซึ่งรับประกันการแยกกันโดยเด็ดขาด ระหว่างภาพเคลื่อนไหว- New DecayAnimationSpec เพื่อรองรับภาพเคลื่อนไหวการลดทอนแบบหลายมิติ
- (I820f2, b/168014930)
เวอร์ชัน 1.0.0-alpha09
16 ธันวาคม 2020
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.0.0-alpha09 เวอร์ชัน 1.0.0-alpha09 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- ตอนนี้เราได้นำ KeyEvent.Alt ที่เลิกใช้งานแล้วออกแล้ว โปรดใช้ KeyEvent.isAltPressed แทน (Idd695)
- เลิกใช้งาน Modifier.keyInputFilter และ Modifier.previewKeyInputFilter แล้ว โปรดใช้ Modifier.onKeyEvent และ Modifier.onPreviewKeyEvent แทน (Idbf1b, b/175156384)
- เลิกใช้งาน Modifier.focusObserver แล้ว ให้ใช้ Modifier.onFocusChanged หรือ Modifier.onFocusEvent แทน (I30f17, b/168511863, b/168511484)
- สำหรับ API การป้อนข้อมูลด้วย Pointer ที่ระงับการทำงาน ให้เปลี่ยนชื่อ HandlePointerInputScope เป็น AwaitPointerEventScope และ handlePointerInput() เป็น awaitPointerEventScope() (Idf0a1, b/175142755)
- ตอนนี้ Autofill API เป็น API เวอร์ชันทดลองและต้องเลือกใช้ (I0a1ec)
- การเพิ่มการประกาศการแยกโครงสร้างเพื่อสร้างอินสแตนซ์ FocuSRequester (I35d84, b/174817008)
- เปลี่ยนชื่อ accessibilityLabel เป็น contentDescription เปลี่ยนชื่อ accessibilityValue เป็น stateDescription (I250f2)
- นำเหตุการณ์ที่กำหนดเองออกจาก API การระงับการป้อนข้อมูลด้วยเคอร์เซอร์ (Ia54d5, b/175142755)
- เปิดตัวฟังก์ชันใหม่หลายรายการใน SelectionRegistrar และเปลี่ยนชื่อ onPositionChange เป็น notifyPositionChange (Ifbaf7)
- สมาชิกเพิ่มเติมของ LayoutNode ที่เราทําเครื่องหมายเป็นภายใน (I443c6)
- เราได้เปิดตัว LayoutInfo เพื่อให้เครื่องมือและการทดสอบใช้งาน (I9b190)
- AndroidOwner สร้างภายใน (Ibcad0, b/170296980)
- นำคำอธิบายประกอบ ExperimentalPointerInput ออกแล้ว (Ia7a24)
- เพิ่มระบบการเลื่อนที่ซ้อนกัน ดูรายละเอียดเพิ่มเติมได้ที่ Modifier.nestedScroll (I36e15, b/162408885)
- subcomposeInto(LayoutNode) ได้รับการตั้งค่าให้เป็นภายใน (Id724a)
Applierอินเทอร์เฟซมีการเปลี่ยนแปลงเพื่อลดความซับซ้อน ในการสร้างแผนผังจากล่างขึ้นบนแทนที่จะเป็นจากบนลงล่างเปลี่ยนชื่อเมธอด
insert()เป็นinsertTopDown()แล้วเพิ่มวิธีการใหม่
insertBottomUp()แล้วโดยผู้ใช้จะแทรกโหนดลงในทรีที่กำลังแก้ไข โดยใช้
insertTopDown()หรือinsertBottomUp()ขึ้นอยู่กับ ว่าวิธีใดมีประสิทธิภาพดีกว่าต้นไม้บางต้น เช่น
LayoutNodeและViewสร้างจากล่างขึ้นบนได้มีประสิทธิภาพมากกว่าจากบนลงล่าง ก่อนการเปลี่ยนแปลงนี้ ต้องใช้สแต็กของแทรกเพื่อใช้การออกแบบจากล่างขึ้นบน ซึ่ง ต้องคัดลอกไปยังทุกแอปพลิเคชันที่ต้องใช้การออกแบบจากล่างขึ้นบน เพื่อประสิทธิภาพ การเปลี่ยนแปลงนี้จะApplierลบล้างinsertBottomUp()เพื่อสร้างแผนผังจากล่างขึ้นบน และinsertTopDown()เพื่อสร้างแผนผังจากบนลงล่าง (Icbdc2)เพิ่มพร็อพเพอร์ตี้ dismissOnBackPress และ dismissOnClickOutside ลงใน AndroidDialogProperties ซึ่งช่วยให้กำหนดค่าได้ว่าจะเรียกใช้ Lambda ของ onDismissRequest ของกล่องโต้ตอบเมื่อใด (If5e17)
เพิ่ม API painterResource เพื่อจัดการการโหลดออบเจ็กต์ Painter แบบทึบแสง จากรูปแบบชิ้นงานที่แปลงเป็นภาพแรสเตอร์แล้ว (เช่น PNG) หรือ VectorDrawable ผู้บริโภคไม่จำเป็นต้อง ระบุประเภทของชิ้นงานล่วงหน้าอีกต่อไป และสามารถเรียกใช้เมธอดนี้เพื่อรับออบเจ็กต์ Painter เพื่อใช้ใน Composable ของรูปภาพหรือตัวแก้ไข Painter ได้ (I2c703, b/173818471)
เพิ่ม Modifier.clearAndSetSemantics เพื่อล้างซีแมนติกขององค์ประกอบย่อย และตั้งค่าใหม่ (I277ca)
ย้าย ContentDrawScope ไปยัง ui-graphics module เพื่อให้อยู่กับ DrawScope (Iee043, b/173832789)
เปิดตัวกราฟิก API ของ PathEffect เพื่อจัดเตรียมรูปแบบต่างๆ ให้กับรูปร่างที่ขีดเส้น เลิกใช้งาน NativePathEffect เพื่อ ใช้การติดตั้งใช้งาน PathEffect แบบ expect/actual (I5e976, b/171072166)
เพิ่มอินเทอร์เฟซ IdlingResource ลงใน Compose เป็นตัวแปรที่รองรับ Compose ของทรัพยากรที่ไม่ได้ใช้งานของ Espresso โดยสามารถลงทะเบียน และยกเลิกการลงทะเบียนผ่าน ComposeTestRule (I433f3)
นำการ (ยกเลิก) ลงทะเบียน ComposeIdlingResource ทั่วโลกและ การ (ยกเลิก) ลงทะเบียนนาฬิกาทั่วโลกใน ComposeIdlingResource ออก (I32660)
การแก้ไขข้อบกพร่อง
- ตอนนี้ Lambda ในตัวปรับออฟเซ็ตจะแสดงผล IntOffset แทน Float (Ic9ee5, b/174137212, b/174146755)
นำ SlotTable, SlotReader และ SlotWriter ออกจาก API สาธารณะ ก่อนหน้านี้มีการทำเครื่องหมายว่า InternalComposeAPI ตอนนี้ฟีเจอร์ดังกล่าวอยู่ภายใน โมดูล Compose
เราได้เพิ่ม CompositionData และ CompositionGroup เพื่อใช้แทน API เครื่องมือ UI ในการดึงข้อมูลองค์ประกอบ API เหล่านี้เป็นแบบสาธารณะ แต่ไม่ได้มีไว้สำหรับใช้ภายนอก API เครื่องมือ UI เนื่องจาก API เหล่านี้ให้ข้อมูลดิบที่ API เครื่องมือ UI ตีความ (I31a9c)
ปรับโครงสร้าง ShaderBrush เพื่อสร้างอินสแตนซ์ของ Shader แบบเลซีเมื่อมีข้อมูลการปรับขนาดของสภาพแวดล้อมการวาด ซึ่งมีประโยชน์ในการกำหนดการไล่ระดับสีที่ ครอบคลุมขอบเขตการวาดทั้งหมดของ Composable ในเวลาที่ทำการคอมโพส โดยไม่ต้อง ใช้การติดตั้งใช้งาน DrawModifier ที่กำหนดเอง
เลิกใช้งาน API ตัวสร้างฟังก์ชันการไล่ระดับสี เพื่อสนับสนุนเมธอด Factory ในออบเจ็กต์การไล่ระดับสี (I511fc, b/173066799)
เลิกใช้งาน LazyColumnFor, LazyRowFor, LazyColumnForIndexed และ LazyRowForIndexed ใช้ LazyColumn และ LazyRow แทน (I5b48c)
เลิกใช้งาน BuildCompat.isAtLeastR (Idb37e)
เพิ่มฟังก์ชัน Factory buildAnnotatedString เพื่อสร้าง AnnotatedString เลิกใช้งานฟังก์ชัน builder ของ annotatedString แล้ว (Idfe0b)
นำเมธอดส่วนขยาย ใน Float และ Double ออกเพื่อแปลงค่า เป็นเรเดียน ย้ายไปเป็นฟังก์ชันส่วนตัว ภายใน PathParser ของการติดตั้งใช้งาน ซึ่งเป็นที่เดียวที่มีการใช้งาน (I25f52)
เวอร์ชัน 1.0.0-alpha08
2 ธันวาคม 2020
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.0.0-alpha08 เวอร์ชัน 1.0.0-alpha08 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- เพิ่มการดำเนินการทางความหมาย Dismiss (I2b706)
- ย้าย DrawModifier APIs จากแพ็กเกจ androidx.compose.ui ไปยังแพ็กเกจ androidx.compose.ui.draw สร้างไฟล์ DrawModifierDeprecated.kt เพื่อ รวมนามแฝงของประเภท/วิธีการช่วยเพื่อช่วย ในการย้ายข้อมูลจาก API ที่เลิกใช้งานแล้วไปยัง API ปัจจุบัน (Id6044, b/173834241)
- เปลี่ยนชื่อ Modifier.drawLayer เป็น Modifier.graphicsLayer และอัปเดตคลาสที่เกี่ยวข้องเป็น GraphicsLayer ตาม ความคิดเห็นเกี่ยวกับ API (I0bd29, b/173834241)
- เพิ่มเมธอดใหม่ placeable.placeWithLayer() และ placeable.placeRelativeWithLayer() ซึ่งช่วยให้เลย์เอาต์ที่กำหนดเองและตัวแก้ไขเลย์เอาต์วางองค์ประกอบย่อยได้โดยการเพิ่มเลเยอร์กราฟิกสำหรับการวาด เนื่องจากเราสามารถเพิ่มประสิทธิภาพการวาดใหม่ได้ก่อน ดังนั้นเมื่อต้องการย้ายองค์ประกอบย่อย เราจึงไม่ต้องวาดเนื้อหาขององค์ประกอบนั้นใหม่ และประการที่สอง เราสามารถใช้การเปลี่ยนรูปการวาดสำหรับองค์ประกอบย่อยได้ (Ibd8f6, b/170296989, b/171493718, b/173030831)
- นำ
<T>ออกจากการประกาศ SubcomposeLayout แล้ว ตอนนี้คุณใช้ได้โดยไม่ต้องระบุประเภท (Ib60c8) - เพิ่ม Modifier.scale/rotate
APIs เพื่ออำนวยความสะดวกสำหรับ drawLayer
- เปลี่ยนชื่อ
Modifier.drawOpacityเป็นModifier.alphaแล้ว - เปลี่ยนชื่อ
Modifier.drawShadowเป็นModifier.shadow(I264ca, b/173208140)
- เปลี่ยนชื่อ
- ทำให้ฟิลด์เวลาทำงานและตำแหน่งของ PointerInputData ต้องระบุค่า (Id468a)
- ตอนนี้ MaterialTheme จะกำหนดสีที่ถูกต้องสำหรับแฮนเดิลการเลือกและพื้นหลังการเลือกแล้ว แอปที่ไม่ใช่ Material สามารถใช้ AmbientTextSelectionColors ด้วยตนเองเพื่อปรับแต่งสีที่ใช้สำหรับการเลือก (I1e6f4, b/139320372, b/139320907)
- เพิ่ม WindowManager.isWindowFocused เพื่อตรวจสอบว่าหน้าต่างโฮสต์อยู่ในโฟกัสหรือไม่ และ WindowFocusObserver ที่ให้การเรียกกลับ onWindowFocusChanged (I53b2a, b/170932874)
- อัปเดต TransformOrigin API
ให้มีไวยากรณ์การแยกโครงสร้างเพื่อแสดงผล
pivotFractionXและpivotFractionYเป็นcomponent1และcomponent2(If43c4, b/173586560) - เพิ่มการตรวจสอบ Lint สำหรับการตั้งชื่อและตำแหน่งของพารามิเตอร์ Lambda ที่ใช้ร่วมกันได้ เพื่อตรวจสอบความสอดคล้องกับหลักเกณฑ์ของ Compose
นอกจากนี้ ยังย้ายข้อมูล API บางรายการโดยใช้
childrenเป็นชื่อสำหรับ Lambda ต่อท้ายเป็นcontentตามการตรวจสอบ Lint และคำแนะนำ (Iec48e) - เพิ่ม API เพื่อตรวจสอบว่ามีการกดแป้นกดร่วม Alt, Ctrl, Meta หรือ Shift หรือไม่เมื่อมีการส่ง Keyevent (I50ed9)
- เพิ่ม
Modifier.drawLayer()โอเวอร์โหลดใหม่ โดยจะใช้บล็อก Lambda ใน GraphicsLayerScope ใหม่ ซึ่งคุณจะกำหนดพารามิเตอร์เลเยอร์ในลักษณะที่ช่วยให้ข้ามการจัดองค์ประกอบใหม่และการจัดเลย์เอาต์ใหม่ได้เมื่อมีการเปลี่ยนแปลงสถานะ ตอนนี้ DrawLayerModifier อยู่ภายในเพื่อเตรียมพร้อมที่จะย้ายตรรกะไปยังเมธอด placeable.placeWithLayer() ของ LayoutModifier (I15e9f, b/173030831) - เลิกใช้งานแอมเบียนต์ที่เลิกใช้งานแล้วซึ่งมี
Ambientเป็นคำต่อท้าย และแทนที่ด้วยพร็อพเพอร์ตี้ใหม่ที่ขึ้นต้นด้วย Ambient ตามหลักเกณฑ์อื่นๆ ของ Ambient และ Compose API (I33440) - ย้าย
androidx.compose.ui.text.Typefaceไปยังandroidx.compose.ui.text.font.Typeface(Ic2b81) - มีการเปลี่ยนชื่ออาร์กิวเมนต์เชิงความหมาย mergeAllDescendants เป็น mergeDescendants (Ib6250)
- เครื่องตรวจจับท่าทางลากแบบใหม่ที่ระงับ API ของอินพุตพอยน์เตอร์ รวมถึงการล็อกการวางแนว (Icef25)
- เปลี่ยนชื่อ VectorAsset เป็น ImageVector ย้ายและเปลี่ยนชื่อ VectorAsset เป็น Builder เพื่อ ให้เป็นคลาสในของ ImageVector ตาม หลักเกณฑ์ของ API เพิ่มนามแฝงของ VectorAssetBuilder เพื่อลิงก์ไปยัง ImageVector.Builder เพื่อความเข้ากันได้ (Icfdc8)
- เปลี่ยนชื่อ ImageAsset และ เมธอดที่เกี่ยวข้องเป็น ImageBitmap (Ia2d99)
- เพิ่มพารามิเตอร์ zIndex สำหรับ place() ของ PlacementScope เพื่อให้ Modifier.zIndex() ทำงานเป็น LayoutModifier ได้แล้ว และเลย์เอาต์ที่กำหนดเองจะตั้งค่า zIndex สำหรับองค์ประกอบย่อยได้โดยตรงในบล็อกการจัดวาง (I711f7, b/171493718)
- ย้ายพร็อพเพอร์ตี้ความหมายพื้นฐานไปยัง ui (I6f05c)
- เลิกใช้งาน place(Offset) และ placeRelative(Offset) ใช้การโอเวอร์โหลดที่มีออฟเซ็ต int แทน (I4c5e7)
- นำ API ที่เลิกใช้งานก่อนหน้านี้ออกแล้ว: นำ Modifier.onPositioned ออกแล้ว ให้ใช้ Modifier.onGloballyPositioned แทน นำ Modifier.onDraw ออกแล้ว ให้ใช้ Modifier.onDrawBehind แทน นำ Modifier.plus ออกแล้ว ให้ใช้ Modifier.then แทน นำ Color.Unset ออกแล้ว ให้ใช้ Color.Unspecified ระบบได้นำคลาส PxBounds ออกแล้ว โปรดใช้ Rect แทน (Ie9d02, b/172562222)
- เราได้อัปเดตอินเทอร์เฟซการจัดแนวและทำให้ใช้งานได้ (I46a07, b/172311734)
- เพิ่มเครื่องตรวจจับท่าทางสัมผัสสำหรับการแตะ แตะสองครั้ง กดค้าง และการกดโดยใช้การป้อนข้อมูลตัวชี้ที่ระงับใหม่ นอกจากนี้ เรายังได้เพิ่มยูทิลิตีบางอย่างเพื่อให้ นักพัฒนาแอปเขียนเครื่องตรวจจับท่าทางสัมผัสของตนเองได้ง่ายขึ้น (I00807)
- เปลี่ยนชื่อ
idเป็นlayoutIdสำหรับLayoutIdParentDataแล้ว เปลี่ยนชื่อMeasurable.idเป็นMeasurable.layoutIdแล้ว (Iadbcb, b/172449643) - เครื่องตรวจจับท่าทางสัมผัสแบบหลายจุดใหม่ ซึ่งรวมถึง ฟังก์ชันช่วยในการตรวจจับการหมุน การซูม และการเลื่อน (Ic459d)
- เปิดตัว SweepGradientShader และ SweepGradientBrush API (Ia22c1)
- การควบคุมเวลาในการทดสอบ (TestAnimationClock และการใช้งาน) อยู่ในระยะทดลองแล้ว (I6ef86, b/171378521)
เพิ่ม API การเลื่อนตามโครูทีน
เพิ่ม LazyListState.snapToItem และ LazyListState.smoothScrollBy รวมถึง API ระดับล่าง สำหรับการควบคุมการเลื่อน API เหล่านี้มีอินเทอร์เฟซระงับเพื่อควบคุมการเลื่อน ซึ่งจะรอจนกว่าการเลื่อนจะเสร็จสิ้นก่อนจึงจะแสดงผล (Ie5642)
มีการเพิ่ม Modifier.focusable ใน Foundation ใช้แอตทริบิวต์นี้เพื่อเพิ่มลักษณะการทำงานที่โฟกัสได้ให้กับคอมโพเนนต์ โดยมีซีแมนทิกและระดับการช่วยเหลือพิเศษที่ถูกต้อง (I41eb9, b/152525426, b/162865824)
ระบุการใช้งานเริ่มต้นของเมธอดและพร็อพเพอร์ตี้ใน AnimationClockTestRule ที่สามารถมอบสิทธิ์ให้กับ
clock(I7ea3d, b/173399709)ตอนนี้ AndroidComposeTestRule ยอมรับตัวเรียกใช้กิจกรรมที่กำหนดเองได้แล้ว (Ib8288, b/153623653, b/154135019)
เลิกใช้งาน TextLayoutResult.getLineVisibleEnd แล้ว ตอนนี้ TextLayoutResult.getLineEnd มีพารามิเตอร์ใหม่ชื่อ visibleEnd เพื่อใช้แทน (I73282)
อัปเดต TextFieldValue API
- ทำให้ TextFieldValue.composition เป็นแบบอ่านอย่างเดียว
- นำข้อยกเว้นที่เกิดขึ้นสำหรับช่วงการเลือกที่ไม่ถูกต้องออกแล้ว (I4a675, b/172239032)
รองรับ TtsAnnotation สำหรับเครื่องมือการอ่านออกเสียงข้อความ (I54cc6)
API ใหม่สำหรับการเรียกใช้ภาพเคลื่อนไหวในโครูทีน (Ied662)
การแก้ไขข้อบกพร่อง
- เปลี่ยนชื่อพารามิเตอร์การจัดแนวของ Box เป็น contentAlignment (I2c957)
- เปลี่ยนชื่อตัวแก้ไข offsetPx เป็น offset ตอนนี้ฟังก์ชันเหล่านี้รับพารามิเตอร์ Lambda แทน State แล้ว (Ic3021, b/173594846)
- เพิ่มพารามิเตอร์ resetInput ไปยัง TextInputService#onStateUpdated (I3e8f5, b/172239032, b/171860947)
- เพิ่มการตรวจสอบ Lint สำหรับพารามิเตอร์ Modifier ในฟังก์ชันที่ใช้ร่วมกันได้ การตรวจสอบ Lint นี้จะตรวจสอบการตั้งชื่อ ประเภทการคืนค่า ค่าเริ่มต้น และลำดับของพารามิเตอร์เพื่อให้สอดคล้องกับหลักเกณฑ์ของ Compose (If493b)
- เพิ่มตัวเลือกชั่วคราวเพื่อให้ MonotonicFrameClock ขับเคลื่อน TestAnimationClock ได้ (I1403b, b/173402197)
- เพิ่ม Wrapper แบบอักษร Android แล้ว คุณโหลด Android
Typeface ผ่านฟังก์ชัน
typefaceได้ เช่นtypeface(Typeface.DEFAULT)เปลี่ยนชื่อtypefaceFromFontFamily()เป็นtypeface()(I52ab7) ด้วย - เพิ่มการตรวจสอบ Lint เพื่อตรวจสอบว่าฟังก์ชัน Factory ของตัวแก้ไขได้รับการกำหนดเป็นส่วนขยายในตัวแก้ไข เพื่อให้สามารถเชื่อมโยงเข้าด้วยกันได้อย่างราบรื่น (I07981)
- นำโมดูล ui-test เก่าและ Stub ออก (I3a7cb)
- Recomposer ไม่รับ EmbeddingContext อีกต่อไป ระบบจะรับการขึ้นต่อกันในการจัดกำหนดการที่จำเป็นจาก effectCoroutineContext เลิกใช้งาน FrameManager แล้ว การผสานรวมแพลตฟอร์มควรเริ่มต้น การจัดการสแนปชอตส่วนกลางของตนเอง (I02369)
- ส่งข้อมูลรูปแบบไปยังโหนดการช่วยเหลือพิเศษ (If5e8d)
- เราเปลี่ยนชื่อ TextUnit.Inherit เป็น TextUnit.Unspecified เพื่อให้สอดคล้องกับหน่วยอื่นๆ (Ifce19)
Compose UI เวอร์ชัน 1.0.0-alpha07
11 พฤศจิกายน 2020
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.0.0-alpha07 เวอร์ชัน 1.0.0-alpha07 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เปิดตัวคลาส ScaleFactor
inline เพื่อแสดงปัจจัย
การปรับขนาดสำหรับแกนแนวนอนและแนวตั้ง
โดยไม่ขึ้นต่อกันเพื่อ
รองรับกรณีการใช้งานการปรับขนาดที่ไม่สม่ำเสมอ
- เพิ่มเมธอด computeScaleFactor ลงใน ContentScale
- เพิ่ม ContentScale.FillBounds เพื่อทำการ การปรับขนาดที่ไม่สม่ำเสมอเพื่อยืดขอบเขต src ให้ครอบคลุมปลายทางทั้งหมด
- เพิ่มวิธีการดำเนินการเพื่อคำนวณ พารามิเตอร์ ScaleFactor ด้วยพารามิเตอร์ Size
- (Ic96a6, b/172291582)
- เพิ่มโรงงาน BiasAlignment และ BiasAbsoluteAlignment สำหรับสร้างการจัดแนว (Iac836, b/169406772)
- อนุญาตให้นักพัฒนาแอปบังคับล้างโฟกัส (I90372)
- แก้ไขข้อบกพร่องที่ทำให้ไม่ได้วาดระดับความสูงสำหรับ View ภายใน Compose (If7782)
- สร้าง API onDrawBehind ภายใน ContentDrawScope เพื่อให้เป็นไปตามรูปแบบการตั้งชื่อเดียวกับ Modifier.drawBehind (I4fc3a, b/171955269)
- เพิ่มการรองรับระยะกล้อง เพื่อเสริมการแปลง 3 มิติ rotationX/rotationY ใน API ของเลเยอร์ (I40213, b/171492100)
- เพิ่ม SelectionContainer โดยไม่มีการเรียกกลับ (Ibfadb)
- นำ ExperimentalSubcomposeLayoutApi ออกแล้ว ตอนนี้คุณใช้ SubcomposeLayout ได้โดยไม่ต้องเพิ่ม @OptIn (I708ad)
- ย้าย FirstBaseline และ LastBaseline ไปยังแพ็กเกจ androidx.compose.ui.layout (Ied2e7)
- นำความทึบออกจากตัวแก้ไข drawShadow() เนื่องจากทำให้เกิดความสับสน (I82c62, b/171624638)
- ย้าย MeasureResult ออกจาก MeasureScope (Ibf96d, b/171184002)
- มีการย้ายสัญลักษณ์ที่เกี่ยวข้องกับเลย์เอาต์หลายรายการจาก androidx.compose.ui ไปยัง androidx.compose.layout.ui (I0fa98, b/170475424)
- นำ FocusState2 ที่เลิกใช้งานแล้วออก (I686cb, b/168686446)
- ตอนนี้ ZIndexModifier เป็นแบบภายในแล้ว (I1808b, b/171493718)
- อัปเดตประเภทการแสดงผลของเมธอด lerp ในพารามิเตอร์ Size เพื่อคืนค่า Size ที่ไม่ใช่ Null เพื่อหลีกเลี่ยงการ Boxing ที่ไม่จำเป็น (Ib0044)
- เพิ่ม TestMonotonicFrameClock สำหรับทดสอบโค้ดที่ใช้ MonotonicFrameClock ของ Compose เพื่อรอเหตุการณ์เฟรมการจัดองค์ประกอบ โดยใช้ runBlockingTest ของ kotlinx-coroutines-test (I4402f)
- นำ GestureScope.localToGlobal ออก (I15299, b/171462785)
- เพิ่มเครื่องมือค้นหา
onAllNodesWithSubstring(I81dd7, b/171462889) - เลิกใช้งานโมดูล androidx.ui.test แล้ว โปรดย้ายข้อมูลไปยัง androidx.compose.ui.test และ androidx.compose.ui.test.junit4 (I452e8)
การแก้ไขข้อบกพร่อง
- ย้าย captureToBitmap ไปยัง captureToImage (I86385)
- เลิกใช้งาน foundation.Text แล้วและแทนที่ด้วย material.Text ดู API ข้อความพื้นฐานที่ไม่แสดงความคิดเห็นซึ่งไม่ได้ใช้ค่าจากธีมได้ที่ androidx.compose.foundation.BasicText (If64cb)
- อัปเดต TextField ให้ยอมรับ KeyboardOptions (Ida7f3)
- เปลี่ยนชื่อ KeyboardOptions เป็น ImeOptions (I82f36)
- ย้าย KeyboardType และ ImeAction ไปยัง KeyboardOptions (I910ce)
- เพิ่ม provideDefault เป็นทางเลือกในการระบุแอมเบียนท์ และใช้เพื่อระบุค่าแอมเบียนท์ที่จะตั้งค่าก็ต่อเมื่อไม่มีค่าแอมเบียนท์ที่ระบุไว้แล้วเท่านั้น (Id6635, b/171024925)
- เลิกใช้งาน BaseTextField แล้ว โปรดใช้ BasicTextField แทน (I896eb)
- เปิดตัวโมดูล ui-test-junit4 (Ib91f8)
- เปลี่ยนชื่อ
relativePaddingFromเป็นpaddingFromแล้ว เพิ่มตัวแก้ไขpaddingFromBaselineเพื่อความสะดวกในการระบุระยะห่างจากขอบเขตเลย์เอาต์ไปยังบรรทัดฐานของข้อความ (I0440a, b/170633813) - เราได้เปลี่ยนชื่อ LaunchedTask เป็น LaunchedEffect เพื่อให้สอดคล้องกับ SideEffect และ DisposableEffect API ไม่อนุญาตให้ใช้ LaunchedEffect ที่ไม่มีพารามิเตอร์ Subject เพื่อส่งเสริมแนวทางปฏิบัติแนะนำ (Ifd3d4)
- เปิดตัวทรัพยากรที่สามารถเขียนร่วมกันได้ซึ่งจะเขียนใหม่เมื่อการกำหนดค่าอัปเดต (I6387c, b/167352819)
- ตอนนี้ Recomposer ต้องมี CoroutineContext ในการสร้าง (Ic4610)
- รวมค่า
zIndexเมื่อใช้Modifier.zIndex()หลายรายการ ก่อนหน้านี้รายการแรกชนะ (Ic514c, b/170623936) - การเปลี่ยนแปลงการใช้งาน SlotTable ภายในซึ่ง ไม่ควรส่งผลต่อ API สาธารณะ (If9828)
- เพิ่มตัวเลือก IME การแก้ไขอัตโนมัติของแป้นพิมพ์ (I57b8d)
- ย้าย androidx.ui.test ไปยัง androidx.compose.ui.test (I9ffdb)
- นำ KeyboardOptions.toImeOptions ออกจาก API สาธารณะ (Ic2e45)
การมีส่วนร่วมจากภายนอก
- ปิดใช้การเผยแพร่ Artifact ภายใน androidx.compose.ui:ui-text-android (Ib93fa)
เวอร์ชัน 1.0.0-alpha06
28 ตุลาคม 2020
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.0.0-alpha06 เวอร์ชัน 1.0.0-alpha06 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- ตอนนี้ Recomposer เป็น CompositionReference และเป็น องค์ประกอบหลักที่ถูกต้อง ตอนนี้คุณต้องใช้ Explicit Recomposer ในที่ต่างๆ น้อยลงแล้ว (I4036f)
- เลิกใช้งาน VectorPainter เพื่อใช้ rememberVectorPainter แทนเพื่อระบุให้ดียิ่งขึ้นว่า API ที่ใช้ได้ภายในจะใช้ "remember" เพื่อคงข้อมูลไว้ในคอมโพสิตต่างๆ (Ifda43)
- อัปเดต Modifier.drawWithCache API เพื่อแสดง ContentDrawScope เป็นขอบเขตตัวรับ แทน DrawScope เพื่อให้การ ติดตั้งใช้งานสามารถจัดลำดับคำสั่ง การวาดใหม่ได้ ซึ่งมีประโยชน์สำหรับกรณีการใช้งานการผสม/การปรับสีที่ต้องแสดงผลพิกเซลเนื้อหาก่อนเพื่อให้ระบบใช้อัลกอริทึมโหมดการผสมที่เกี่ยวข้องได้อย่างถูกต้อง (Ie7ec8)
- ย้าย SimpleContainer ไปยัง PopupTestUtils.kt (I78c57)
- ConsumedData ไม่ใช่คลาสข้อมูลอีกต่อไป ดูรายละเอียดได้ที่ https://android-review.googlesource.com/c/platform/frameworks/support/+/1455219 (I1737f)
- แก้ไขตำแหน่งแฮนเดิล RTL (I6e1e0)
- ปรับโครงสร้าง DrawScope และ
ContentDrawScope ให้เป็นอินเทอร์เฟซ
แทนที่จะเป็นคลาสแบบนามธรรม
- สร้างการติดตั้งใช้งาน CanvasDrawScope ของ DrawScope
- การปรับโครงสร้างการใช้งานของ DrawScope เพื่อใช้ CanvasScope แทน
- สร้าง DrawContext เพื่อรวมการอ้างอิง สำหรับ DrawScope
- นำวิธีการที่เลิกใช้งานแล้วใน DrawScope (I56f5e) ออก
- การเปลี่ยนแปลงที่ทำให้เกิดข้อผิดพลาด: นำค่าที่ส่งกลับออกจาก
PointerInputFilter.onPointerEvent(...)เนื่องจากค่าเดียวที่ควรเปลี่ยนได้ในเหตุการณ์ของเคอร์เซอร์คือข้อมูลการใช้งาน ตอนนี้คุณสามารถเปลี่ยนข้อมูลการใช้งานของ PointerEvents ที่ส่งผ่านได้เลยแทนที่จะส่งคืนข้อมูลจากPointerInputFilter.onPointerEvent(...)(I6acd0) - เราได้เปลี่ยน MeasureScope และ IntrinsicMeasureScope ให้เป็นอินเทอร์เฟซ (I1a087, b/170461665)
- ซ่อนฟังก์ชันผสานสำหรับ AlignmentLine (I9da1a, b/170612900, b/170611568)
- เพิ่มความสามารถในการระบุข้อมูลเครื่องมือตรวจสอบในตัวแก้ไขที่ประกอบขึ้น (Idee08, b/163494569)
- เพิ่มตัวเลือก "เลือกทั้งหมด" ลงในเมนูการเลือก (Ief02b)
- อัปเดต DrawTransform.rotate เพื่อใช้
พารามิเตอร์ Pivot เริ่มต้นของกึ่งกลางให้ตรงกับ
เอกสารประกอบ
- อัปเดต DrawScope.rotateRad เพื่อใช้ Offset สำหรับ จุดหมุนให้ตรงกับวิธีการเปลี่ยนรูปแบบอื่นๆ
- เลิกใช้งาน DrawScope.rotateRad ที่โอเวอร์โหลดซึ่งใช้ โฟลตสำหรับพิกัด x และ y ของจุดหมุน
- (Iffcbb, b/170434992)
การแก้ไขข้อบกพร่อง
- เปิดใช้การตรวจสอบ Lint ของ API สำหรับ MissingGetterMatchingBuilder สำหรับ androidx (I4bbea, b/138602561)
- เพิ่มการทดสอบ (I6b8ae)
- เปิดใช้การเปลี่ยนฉากใน ComposeTestRule นำตัวเลือกในการ เปิดใช้เคอร์เซอร์กะพริบออกจาก ComposeTestRule (If0de3)
- เพิ่มตัวเลือก IME สำหรับการใช้อักษรตัวพิมพ์ใหญ่ในแป้นพิมพ์ (I8ac38)
- เพิ่มตัวเลือกแป้นพิมพ์แบบบรรทัดเดียวลงใน CoreTextField (I72e6d)
- ย้าย SimpleContainer ไปยัง PopupTestUtils.kt (I65c3e)
- เปลี่ยนชื่อ Radius API เป็น CornerRadius เพื่อให้แสดง วิธีใช้ใน Compose ได้ดียิ่งขึ้น อัปเดตเอกสารเพื่อระบุ ว่ารัศมีมุมที่เป็นลบจะถูกจำกัด เป็น 0 (I130c7, b/168762961)
- ปรับปรุงการทำงานร่วมกันของ Android โดยส่ง MotionEvent ไปยัง Android View ย่อยที่แสดงผลเป็นเท็จสำหรับ onTouchEvent สำหรับการดำเนินการทั้งหมด ยกเว้น
ACTION_DOWN(I94c5a, b/170320973) - Box ถูกทำให้เป็นฟังก์ชันอินไลน์ (Ibce0c, b/155056091)
การมีส่วนร่วมจากภายนอก
- รองรับภาษาต่างๆ สำหรับ
AnnotatedString.capitalizeและAnnotatedString.decapitalize(I4aa7f)
เวอร์ชัน 1.0.0-alpha05
14 ตุลาคม 2020
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.0.0-alpha05 เวอร์ชัน 1.0.0-alpha05 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม DSL สำหรับระบุข้อมูลผู้ตรวจสอบ (Ic9a22)
- ย้าย LongPress ไปยัง Text (Iff2bc)
- ตัวแก้ไขทดลอง Modifier.pointerInput ระงับตัวแก้ไขอินพุต (Ia77d2)
- เพิ่มการดำเนินการสำหรับการช่วยเหลือพิเศษในการคัดลอก/วาง/ตัด (I6db4f)
- นำเครื่องมือสร้างสาธารณะสำหรับ AndroidOwner ออกแล้ว (Iacaef)
- ตอนนี้ป๊อปอัปและกล่องโต้ตอบจะรับค่า FLAG_SECURE จากหน้าต่างหลัก นอกจากนี้ ยังเพิ่มตัวเลือกในการกำหนดค่านี้อย่างชัดเจน (I64966, b/143778148, b/143778149)
ตอนนี้ข้อมูลการบริโภคสามารถเปลี่ยนแปลงได้แล้ว นอกจากนี้ การเรียกฟังก์ชันส่วนขยายที่ใช้การบริโภค จะไม่แสดงผล PointerInputChange ใหม่ แต่จะเปลี่ยน PointerInputChange ที่ระบุแทน
นี่คือขั้นตอนแรกในกระบวนการ 2 ขั้นตอนเพื่อ ทำให้ข้อมูล PointerEvent เปลี่ยนแปลงได้ เพื่อให้โค้ดของผู้ใช้ แก้ไขข้อมูลพอยน์เตอร์อื่นๆ ไม่ได้ ขั้นตอนที่ 2 คือการนำ ประเภทการแสดงผล
List<PointerInputChange>ออกจากPointerInputFilter.onPointerEvent(...)(Id067e)ปิดใช้การเลือกในข้อความและสาธิต (Ie7e97)
ทำให้ onGloballyPositioned เป็นฟังก์ชันแบบอินไลน์ (I15830)
เปลี่ยนชื่อ OnPositionedModifier เป็น OnGloballyPositionedModifier และเปลี่ยนชื่อ onPositioned() เป็น onGloballyPositioned() (I587e8, b/169083903)
เพิ่มพร็อพเพอร์ตี้ hasPendingMeasureOrLayout ลงใน Owner เพื่อระบุว่า Owner มีงานเลย์เอาต์ที่รอดำเนินการหรือไม่ (I3d9f8, b/169038599)
เพิ่ม API เพื่อล้างโฟกัสโดยอัตโนมัติ (Ie1dc2, b/161487952)
นำ
PointerInputFilter.onPointerInput(...)ออกแล้วPointerInputFilter.onPointerEvent(...)ควรใช้แทน (I6f04a)การเปลี่ยนแปลงขนาด
- นำ Size.getFlipped ออกแล้ว
- Removed Size.rem
- นำ Size.truncDiv ออก (Ief44d, b/169790720)
ในส่วนของการกำหนดค่า Sentinel ที่เป็นมาตรฐานสำหรับคลาสอินไลน์ ให้เปลี่ยนชื่อ Color.Unset เป็น Color.Unspecified เพื่อให้สอดคล้องกับคลาสอินไลน์อื่นๆ (I97611, b/169797763)
มีการเปิดตัว TextOverflow.None เมื่อ overflow เป็น None ข้อความจะไม่จัดการการล้นอีกต่อไป และจะรายงานขนาดจริงไปยัง LayoutNode (I175c9, b/158830170)
พารามิเตอร์ขอบเขตภายใน AnnotatedString.Builder.addStringAnnotation เปลี่ยนชื่อเป็นแท็กเพื่อให้ API สอดคล้องกัน (I7c8cb)
การแก้ไขข้อบกพร่อง
- ประสิทธิภาพการเลื่อนของ LazyColumn/Row ได้รับการปรับปรุงด้วยการทำงานในองค์ประกอบย่อยน้อยลงในทุกการเลื่อน เราได้เพิ่มเมธอด hasInvalidations() ใหม่สำหรับคลาส Composition และเปลี่ยนชื่อเมธอด hasPendingChanges() จาก Recomposer เป็น hasInvalidations() (Ib2f32, b/168293643, b/167972292, b/165028371)
- อัปเดตพารามิเตอร์ Size.Unspecified ให้เป็น Float.NaN แทน Float.POSITIVE_INFINITY อัปเดตการใช้งาน Painter เพื่อ ตรวจสอบกับ Size.Unspecified ด้วย รวมถึงขนาดที่ไม่ใช่จำนวนจำกัด (I95a7e)
- ตอนนี้ลำดับการเรียก place() ในเลย์เอาต์ที่กำหนดเองจะกำหนดลำดับการวาดสำหรับวิดเจ็ตย่อย (Ibc9f6)
- รองรับการแปลง AnnotatedString เป็น SpannableString เพื่อการช่วยเหลือพิเศษ (Ief907)
- เพิ่ม Stub สำหรับคลาส Android ที่อยู่ในแพลตฟอร์มรุ่นเก่าเพื่อหลีกเลี่ยงการใช้การสะท้อนเมื่อเป็นไปได้ (Ia1790)
- แก้ไขข้อบกพร่อง: หากแป้นพิมพ์ซอฟต์แวร์แสดงขึ้นทำให้แอปแปล พิกัดอินพุตของเคอร์เซอร์จะกลายเป็นไม่ถูกต้อง (Ic4cec, b/163077821)
เวอร์ชัน 1.0.0-alpha04
1 ตุลาคม 2020
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.0.0-alpha04 เวอร์ชัน 1.0.0-alpha04 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม OwnerScope เพื่ออนุญาตให้รวบรวม ขอบเขตการสังเกตเลย์เอาต์และการวาดเมื่อ ไม่ถูกต้องอีกต่อไป (Ic4cf8)
- เพิ่ม OnRemeasuredModifier และ onSizeChanged() เพื่อ รับการเรียกกลับเมื่อมีการวัดเลย์เอาต์เนื้อหาอีกครั้งและ ขนาดมีการเปลี่ยนแปลงตามลำดับ (I657cf, b/154108792)
- เพิ่มการดำเนินการตามความหมายของการคลิกแบบยาว (I6281b, b/156468846)
- ทำให้ FocusManager เป็นแบบส่วนตัว (I7872f)
อัปเดตการใช้งานเพื่อสร้าง การใช้งาน DrawCacheModifier โดยเฉพาะ แทนการเพิ่มพร็อพเพอร์ตี้ที่ไม่บังคับใน DrawModifier
อัปเดตเอกสารสำหรับเมธอดต่างๆ (Ibd166)
ทำให้ TextRange เป็นแบบอินไลน์เพื่อหลีกเลี่ยงการสร้างออบเจ็กต์ (Id034b)
PlacementScope#parentWidth และ PlacementScope#parentLayoutDirection จะอ่านจากบล็อกตำแหน่งของเลย์เอาต์ที่กำหนดเองไม่ได้อีกต่อไป (Icc1ae, b/168295623)
เพิ่ม AccessibilityScrollState ลงในพร็อพเพอร์ตี้ความหมาย (Ifeda9)
เปิดตัว Modifier.drawWithCache เพื่อรองรับการสร้างออบเจ็กต์การวาด ที่สร้างการอ้างอิงใหม่แบบมีเงื่อนไข ซึ่งขึ้นอยู่กับข้อมูลขนาด/สถานะ (I376dc)
นำ ParagraphConstraints ออกแล้ว ตอนนี้ระบบจะส่งความกว้างไปยังย่อหน้าโดยตรง (Ica712)
การแก้ไขข้อบกพร่อง
- อัปเดต 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)
- เลิกใช้งาน foundation.Box แล้ว โปรดใช้ foundation.layout.Box แทน (Ie5950, b/167680279)
- เปลี่ยนชื่อ Stack เป็น Box แล้ว ระบบจะเลิกใช้งาน Box ที่มีอยู่ก่อนหน้านี้เพื่อรองรับ Box ใหม่ใน compose.foundation.layout ลักษณะการทำงานของ Box ใหม่คือการวางองค์ประกอบย่อยซ้อนกันเมื่อมีองค์ประกอบย่อยหลายรายการ ซึ่งแตกต่างจาก Box ก่อนหน้าซึ่งทำงานคล้ายกับคอลัมน์ (I94893, b/167680279)
- เลิกใช้งานพารามิเตอร์การตกแต่งกล่องแล้ว หากต้องการตกแต่ง/เว้นที่ว่างในช่อง ให้ใช้ตัวแก้ไขแทน (Modifier.background, Modifier.border, Modifier.padding) (Ibae92, b/167680279)
- อัปเดต 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)
- ใส่คำอธิบายประกอบ rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled และ textInputServiceFactory ด้วย @VisibleForTesting เพื่อให้เป็น API ภายในและซ่อน KDoc (I554eb, b/168308412)
- นำ SelectionContainer ออกจากด้านบนเพื่อปิดใช้การเลือกเริ่มต้นและหลีกเลี่ยงลักษณะการทำงานที่ไม่คาดคิด คุณสามารถใช้ SelectionContainer เพื่อห่อหุ้มเนื้อหาที่ต้องเลือกได้แทน (I8dfe0, b/158459594)
เวอร์ชัน 1.0.0-alpha03
16 กันยายน 2020
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.0.0-alpha03 เวอร์ชัน 1.0.0-alpha03 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- นำการดำเนินการเชิงความหมายของการเลื่อนไปข้างหน้า/ข้างหลังออก เพิ่มขั้นตอน ใน AccessibilityRangeInfo (Ia47b0)
- นำ
onInvalidate()ออกจากOwner--OwnedLayerจัดการการทำให้เป็นโมฆะ (Ica72b, b/162061312) นำวิธีการของโอเปอเรเตอร์ใน Size API ที่ใช้พารามิเตอร์ออฟเซ็ตออก ผลลัพธ์ของการดำเนินการเหล่านี้ไม่ชัดเจน และประเภทของผลลัพธ์ไม่คาดคิด สำหรับรายการเหล่านี้ เช่น ควรให้ขนาด - ออฟเซ็ตส่งคืน ออฟเซ็ตหรือผลลัพธ์ขนาดที่มีความแตกต่าง
นอกจากนี้ยังนำเมธอดที่เลิกใช้งานแล้วในคลาส Size ออกด้วย (Iec902, b/166514214)
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาที่บางครั้งมีการวาดรายการของ LazyColumn อย่างไม่ถูกต้อง ซึ่งทำให้เกิดข้อขัดข้องในบางกรณีด้วย (Ibcf17, b/163066980, b/165921895)
- เราเลิกใช้งาน DpConstraints และ API ที่ใช้ DpConstraints แล้ว (I90cdb, b/167389835)
- ย้าย
createAndroidComposeRuleและAndroidInputDispatcherจากandroidx.ui.test.androidไปยังandroidx.ui.test(Idef08, b/164060572) - การใช้งานแรงโน้มถ่วงได้รับการเปลี่ยนชื่ออย่างสม่ำเสมอเป็น "การจัดแนว" หรือ "การจัดตำแหน่ง" ใน Layout API (I2421a, b/164077038)
- เพิ่ม onNode และเมธอดส่วนกลางอื่นๆ ใน ComposeTestRule เนื่องจากเมธอดส่วนกลางปัจจุบันจะเลิกใช้งาน (Ieae36)
เวอร์ชัน 1.0.0-alpha02
2 กันยายน 2020
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.0.0-alpha02 เวอร์ชัน 1.0.0-alpha02 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- remove callback to notify Owner when layoutnode bounds change. (If654e, b/166106882)
- เพิ่มการรองรับพารามิเตอร์ filltype ในเส้นทางกราฟิกแบบเวกเตอร์ เพื่อรองรับการตัดรูปร่างตาม กฎการเติมเส้นทาง evenOdd หรือ NonZero (I43dd2)
- ตอนนี้เวลาทำงานและความเร็วเป็นคลาสอินไลน์แล้ว (I48f4a)
- ตอนนี้ระยะเวลาเป็นคลาสแบบอินไลน์ (I565eb)
- เพิ่มการเรียกกลับเพื่อแจ้งให้เจ้าของทราบเมื่อขอบเขตของ LayoutNode เปลี่ยนแปลง (Ic40b3)
แก้ไขปัญหาที่ตัวสร้างฟังก์ชัน Rect ที่มีออฟเซ็ตและรัศมีจะสร้าง Rect ใน ลำดับซ้าย ขวา บน ล่าง แทนที่จะเป็น ซ้าย บน ขวา ล่าง
นำเมธอดที่เลิกใช้งานแล้วใน Rect ออก เพื่อใช้ตัวสร้างฟังก์ชันแทน
เพิ่มการทดสอบเพื่อยืนยันวิธีการใน Rect.kt (I08460, b/165822356)
การแก้ไขข้อบกพร่อง
- เพิ่ม MutableRect ซึ่งเป็นสี่เหลี่ยมผืนผ้าที่แก้ไขได้ (I71bd2, b/160140398)
- Matrix4 ถูกแทนที่ด้วย Matrix ส่วนอื่นๆ ทั้งหมด ของแพ็กเกจ vectormath ถูกนำออกแล้ว (Ibd665, b/160140398)
รูปแบบการเรียกใช้ฟังก์ชันที่ประกอบกันได้มีการเปลี่ยนแปลง นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบแบบไบนารี ต้อง คอมไพล์ไลบรารีทั้งหมดอีกครั้งเพื่อให้ทำงานร่วมกับปลั๊กอินคอมไพเลอร์ Compose เวอร์ชันนี้ได้
การเปลี่ยนแปลงนี้ไม่ได้สร้างการเปลี่ยนแปลงที่ทําให้เกิดข้อขัดข้องในระดับแหล่งที่มา เนื่องจากมีเพียง API ของคอมไพเลอร์เท่านั้นที่เปลี่ยนแปลงและต้องเลือกใช้โดยชัดแจ้ง (I7afd2, b/158123185)
แก้ไขข้อขัดข้องที่อาจเกิดขึ้นเมื่อ การส่งไปยัง PointerInputFilter อาจทำให้ ระบบนำ PointerInputFilter ออกพร้อมกัน (I58f25)
เวอร์ชัน 1.0.0-alpha01
26 สิงหาคม 2020
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:1.0.0-alpha01 เวอร์ชัน 1.0.0-alpha01 มีคอมมิตเหล่านี้
เวอร์ชัน 0.1.0-dev
เวอร์ชัน 0.1.0-dev17
19 สิงหาคม 2020
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:0.1.0-dev17 เวอร์ชัน 0.1.0-dev17 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
emitViewถูกเลิกใช้งานแล้ว หากเป็นไปได้ ให้ใช้AndroidViewแทนเพื่อส่ง View ภายใน Compose โปรดทราบว่าในอนาคตเราจะไม่รองรับการสร้าง View และ ViewGroup โดยตรง เว้นแต่จะเป็นองค์ประกอบสุดท้ายในแผนผังการเรียบเรียง ซึ่งสามารถทำได้โดยใช้ AndroidView (I29b1e, b/163871221)FocusState2ถูกเลิกใช้งานและแทนที่ด้วยFocusState(Ia8b79, b/160822876, b/160923332)- นำการโอเวอร์โหลด AndroidView ที่เลิกใช้งานแล้วออก (I946b9, b/163802393)
- ตอนนี้ Custom emits สามารถประกาศได้ว่าข้ามตัวตั้งค่าอย่างน้อย 1 รายการ และจัดองค์ประกอบใหม่โดยไม่ขึ้นอยู่กับ emit ได้ (Ibbd13)
เปลี่ยนคลาส Vector เพื่อให้ไม่ใช่คลาสข้อมูลอีกต่อไป เนื่องจากใช้ออบเจ็กต์อินสแตนซ์เดียวกัน สำหรับการเรียบเรียง
เพิ่มแฟล็ก mutableStateOf สำหรับ VectorPainter เพื่อวาดซ้ำแบบมีเงื่อนไขหากเนื้อหาของ เวกเตอร์มีการเปลี่ยนแปลง
ปรับโครงสร้างอินสแตนซ์ VectorComponent ให้เป็นส่วนหนึ่งของ VectorPainter เนื่องจากมีการนำกลับมาใช้ใหม่ในการเรียบเรียงเพลง
อัปเดต GroupComponent และ PathComponent เพื่อให้ฟิลด์ชื่อเปลี่ยนแปลงได้ (Ieae45, b/151378808)
นำ
onChildPositionedและOnChildPositionedModifierออกแล้ว นักพัฒนาแอปควรใช้onPositionedและOnPositionedModifierในเลย์เอาต์ย่อยแทน (I4522e, b/162109766)ออฟเซ็ตกลายเป็นคลาสอินไลน์ (Iaec70)
เพิ่มพารามิเตอร์ตัวแก้ไขลงใน SelectionContainer (I4aada, b/161487952)
นำ FocusModifier ที่เลิกใช้งานแล้วออก (I0b4ba, b/160922116, b/160821157, b/162441435, b/160822875, b/160921940)
เพิ่ม Lambda
mergePolicyไปยังSemanticsPropertyKeyแล้ว ซึ่งใช้เพื่อกำหนดนโยบายที่กำหนดเองสำหรับความหมายของ mergeAllDescendants การผสานได้ นโยบายเริ่มต้นคือการใช้ค่าระดับบนหากมีอยู่แล้ว ไม่เช่นนั้นจะใช้ค่าระดับล่าง (Iaf6c4, b/161979921)ตอนนี้ข้อจำกัดเป็นคลาสแบบอินไลน์แล้ว (I88736)
เพิ่ม FocusManager ที่ย้ายตรรกะโฟกัสทั่วไปออกจาก AndroidComposeView (I528ef, b/161487952, b/162206799)
อัปเดตชื่อ PointerEventPass สำหรับรุ่นอัลฟ่า (Ifda6f)
ตอนนี้ IntOffset เป็นคลาสแบบอินไลน์แล้ว (Iac0bf)
ตอนนี้ IntSize เป็นคลาสแบบอินไลน์ (I2bf42) แล้ว
เราเปลี่ยนชื่อ
PlacementScope.placeAbsolute()เป็นPlacementScope.place()และเปลี่ยนชื่อPlacementScope.place()ก่อนหน้าเป็นPlacementScope.placeRelative()ด้วยเหตุนี้ วิธีPlacementScope.place()จะไม่สะท้อนตำแหน่งในบริบทจากขวาไปซ้ายโดยอัตโนมัติอีกต่อไป หากต้องการใช้ฟีเจอร์นี้ ให้ใช้PlacementScope.placeRelative()แทน (I873ac, b/162916675)ตอนนี้ AlertDialog ใช้ FlowRow สำหรับปุ่มแล้ว (I00ec1, b/161809319, b/143682374)
ทำให้ยูทิลิตีการทดสอบบางอย่างเป็นแบบไม่ สาธารณะเนื่องจากไม่ได้อยู่ในตำแหน่งที่ ควรอยู่ จะเผยแพร่ต่อสาธารณะในอนาคต (I32ab1)
จัดระเบียบโค้ดอินพุตของพอยน์เตอร์ใหม่ (Ie3f45)
เลิกใช้ PxBounds ใน Rect อัปเดตการใช้งานทั้งหมด ของ PxBounds ด้วย rect และเพิ่ม คำอธิบายประกอบที่เลิกใช้งาน/แทนที่อย่างเหมาะสม เพื่อช่วยในการ ย้ายข้อมูล (I37038, b/162627058)
นำ KeyEvent2 ที่เลิกใช้งานแล้วออก โปรดใช้ KeyEvent แทน (Ied2d0, b/162097587)
KeyEvent มีพร็อพเพอร์ตี้ Unicode ที่ใช้เพื่อรับอักขระ Unicode ที่สร้างขึ้นโดยชุดค่าผสมของสถานะคีย์และสถานะเมตาคีย์ที่ระบุได้ (If3afc)
ทำให้เหตุการณ์ที่กำหนดเอง DelayUp และคลาสที่เกี่ยวข้องเป็น API ที่ต้องเลือกใช้ เนื่องจากมีแนวโน้มที่จะมีการเปลี่ยนแปลง (I56d6f)
นำ PointerEventPasses 2 รายการที่ไม่จำเป็นอีกต่อไปออก (I3dd9d)
เพิ่มพารามิเตอร์สี เงา และ TextDecoration ไปยัง Paragraph.paint ฟังก์ชันนี้มีประโยชน์ในการหลีกเลี่ยงการสร้าง Paragraph ใหม่โดยไม่จำเป็น (I81689)
การแก้ไขข้อบกพร่อง
- นำการเรียกกลับ onFocusChanged ออกจาก TextField ใช้ Modifier.focusObserver แทน (I51089, b/161297615)
- เลิกใช้งาน Modifier.drawBorder แล้ว โปรดใช้ Modifier.border แทน แทนที่คลาสข้อมูลเส้นขอบด้วย BorderStroke (I4257d, b/158160576)
นำการเรียก FrameManager ที่เลิกใช้งานแล้วออก
มีการเปลี่ยนแปลง API Compose ภายในเพื่อลดปริมาณ ค่าใช้จ่ายในการติดตามออบเจ็กต์สถานะ เช่น
mutableStateof()(I80ba6)ระบบได้นำ VerticalScroller และ HorizontalScroller ออกแล้ว ให้ใช้ ScrollableColumn/Row แทน นำ Modifier.drawBackground ออกแล้ว ใช้ Modifier.background (I73b0d, b/163019183)
แก้ไขข้อขัดข้องเมื่อมีการใช้สิ่งที่บันทึกสถานะภายในลูป for ตอนนี้ระบบอนุญาตให้มีคีย์เดียวกันใน savedInstanceState() แล้ว และเราได้ปรับ API ของ UiSavedStateRegistry ให้เป็นไปตามข้อกำหนดใหม่นี้ (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561)
ตอนนี้เราเลิกใช้งาน
state { ... }Composable แล้วเพื่อเปลี่ยนไปใช้ การเรียกremember { mutableStateOf(...) }อย่างชัดเจนเพื่อความชัดเจน ซึ่งจะช่วยลดพื้นผิว API โดยรวมและจำนวนแนวคิดสำหรับการจัดการสถานะ และตรงกับรูปแบบby mutableStateOf()สำหรับการมอบสิทธิ์พร็อพเพอร์ตี้ของคลาส (Ia5727)เปลี่ยนชื่อ RRect เป็น RoundRect เพื่อให้สอดคล้องกับรูปแบบการตั้งชื่อของ Compose มากขึ้น สร้างตัวสร้างฟังก์ชันที่คล้ายกัน กับ RRect และเลิกใช้งานตัวสร้างฟังก์ชัน RRect (I5d325)
เวอร์ชัน 0.1.0-dev16
5 สิงหาคม 2020
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:0.1.0-dev16 เวอร์ชัน 0.1.0-dev16 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เลิกใช้งาน OnChildPositioned แล้ว ให้ใช้ OnPositioned ในองค์ประกอบย่อยแทน (I87f95, b/162109766)
- เลิกใช้งาน setViewContent แล้ว ควรใช้ setContent แทน (I7e497, b/160335130)
- เพิ่ม AndroidViewBinding API สำหรับการขยายและจัดองค์ประกอบทรัพยากรเลย์เอาต์ตาม ViewBinding (I081c6)
- KeyEvent2 ถูกแทนที่ด้วย KeyEvent (I2d770, b/162097585)
- เพิ่มการรองรับคีย์ฮาร์ดแวร์ Alt (I9036b)
- เลิกใช้งาน FocusManager แล้ว ใช้ Modifier.focus(), Modifier.focusObserver() และ Modifier.focusRequester() แทน (I74ae4, b/162211322)
- loadVectorResource รองรับแอตทริบิวต์ trimPath (I808fe)
- ย้ายกล่องโต้ตอบไปยัง UI (I47fa6)
- นำ PointerEventPasses 2 รายการที่ไม่จำเป็นอีกต่อไปออก (I33ca7)
- ใช้ PointerInteropModifier ซึ่งช่วยให้รับ MotionEvent และโต้ตอบกับ Compose ได้ราวกับว่าคุณใช้ Android View (Ieb08c)
- นำตัวแก้ไขแท็กที่เลิกใช้งานแล้วออก โปรดใช้ layoutId แทน (Idaa05, b/162023919)
- เราได้อัปเดต API สำหรับการรองรับจากขวาไปซ้ายแล้ว เพิ่ม LayoutDirectionAmbient ซึ่งใช้เพื่ออ่านและเปลี่ยนทิศทางการจัดวางได้ นำ Modifier.rtl และ Modifier.ltr ออกแล้ว (I080b3)
- รองรับการตัดเส้นทางในภาพกราฟิกเวกเตอร์ (Ie16c9, b/158188351)
- เพิ่ม Modifier.layout() ที่ช่วยให้สร้างตัวแก้ไขเลย์เอาต์ที่กำหนดเองได้อย่างสะดวก (I73b69, b/161355194)
- เพิ่ม AndroidView API ใหม่และเลิกใช้งาน API ที่มีอยู่ (I5bcfd)
- เลิกใช้งาน Modifier.plus แล้ว โปรดใช้ Modifier.then แทน คำว่า "จากนั้น" มีสัญญาณการเรียงลำดับที่ชัดเจนกว่า และยังห้ามพิมพ์
Modifier.padding().background() + anotherModifierซึ่งจะทำให้การอ่านยากขึ้น (Iedd58, b/161529964) - เพิ่มคลาสย่อยของ View [Abstract]ComposeView สำหรับการโฮสต์เนื้อหา Compose ในลำดับชั้นการแสดงผลของ View (I46357)
RowและColumnเป็นฟังก์ชันแบบอินไลน์แล้ว ซึ่งช่วยลดค่าใช้จ่ายในการใช้งานได้อย่างมาก (I75c10)- เพิ่ม SubcomposeLayout แล้ว ซึ่งเป็นองค์ประกอบระดับต่ำที่ช่วยให้เราจัดวางองค์ประกอบย่อยในระหว่างการวัดได้ หากต้องการใช้ค่าบางอย่างที่ใช้ได้ในภายหลังระหว่างการวัดสำหรับการจัดวางองค์ประกอบย่อย เช่น WithConstraints ไม่ได้ใช้ SubcomposeLayout (I25cc8)
- เพิ่ม
SemanticsNode.positionInRootเพื่อรับตำแหน่งของ SemanticsNode ที่สัมพันธ์กับรูทของลำดับชั้น Compose (Icdf26, b/161336532) - MotionEvent จะส่งผ่านจาก Android ไปยัง Compose และกลับไปยัง Android (I14be8, b/158034713)
- นำ DropdownPopup ออกแล้ว (I00430)
- แก้ไขตำแหน่งป๊อปอัปคงที่บนจอแสดงผลที่มีรอยบาก (Idd7dd)
- เพิ่มการดำเนินการสำหรับการช่วยเหลือพิเศษเพื่อรับ TextLayoutResult (I9d6e6)
- เพิ่ม RemeasurementModifier ซึ่งช่วยให้วัดเลย์เอาต์อีกครั้งแบบซิงโครนัสได้ โดยทั่วไปคุณไม่จำเป็นต้องใช้เนื่องจากระบบจะวัดซ้ำ/จัดวางใหม่โดยอัตโนมัติ แต่เราใช้ภายใน LazyColumnItems ระหว่างการเลื่อน (I5f331, b/160791058)
- นำ getLineEllipsisOffset/getLineEllipsisCount ออก ใช้ getLineVisibleEnd/getLineEnd/isLineEllipsized แทน (I85aa2)
- เพิ่มเครื่องหมาย/คำอธิบายประกอบบางอย่างเพื่อเป็นแนวทางปฏิบัติแนะนำ (I66b20)
- เปิดเผย API บรรทัดเพิ่มเติมใน TextLayoutResult (I79bd2)
- ตอนนี้คุณเข้าถึงตัวแปลงเวกเตอร์แบบบิวท์อินเพื่อแปลงหน่วยแบบบิวท์อินได้แล้วผ่าน Foo.VectorConverter เช่น Dp.VectorConverter, Color.VectorConverter, Float.VectorConverter เป็นต้น (I3e273)
การแก้ไขข้อบกพร่อง
- แก้ไข 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
- เปลี่ยนชื่อการแจงนับ PointMode ให้เป็น Pascal Case
- เปลี่ยนชื่อ Enum ของ PaintingStyle ให้เป็น Pascal Case
- เปลี่ยนชื่อ enum ของ PathFillType ให้เป็น Pascal Case
- เปลี่ยนชื่อ Enum ของ StrokeCap ให้เป็น Pascal Case
- อัปเดตการใช้งาน DrawCache เพื่อไม่ให้ ใช้พารามิเตอร์ lateinit อีกต่อไป
- อัปเดต DrawScope เพื่อเลิกใช้การมอบสิทธิ์แบบเลื่อนเวลา สำหรับพารามิเตอร์ภายใน fillPaint และ strokePaint
- อัปเดต Image ที่ใช้ร่วมกันได้เพื่อหลีกเลี่ยงการใช้ Box เพื่อลดค่าใช้จ่าย
- อัปเดตคลาส Outline ให้มีคำอธิบายประกอบ @Immutable
- อัปเดต PathNode ให้มีคำอธิบายประกอบ @Immutable สำหรับ คำสั่งเส้นทางแต่ละรายการ
- อัปเดตองค์ประกอบย่อยของเวกเตอร์เพื่อนำการตรวจสอบแบบมีเงื่อนไขที่ซ้ำซ้อนออก สำหรับการตรวจสอบความเท่ากัน เนื่องจาก Compose จัดการการตรวจสอบเหล่านี้อยู่แล้ว
- เลิกใช้งานเมธอดตัวสร้างคู่ของ Rect เพื่อ ใช้ตัวสร้างฟังก์ชัน
- อัปเดตคลาส Brush และตัวสร้างฟังก์ชันด้วย @Immutable และ @Stable API
- อัปเดตการแจงนับ VertexMode ให้เป็น PascalCase
- อัปเดตเมธอด selectPaint ของ DrawScope เพื่อเขียนทับพารามิเตอร์การขีดเขียนแบบมีเงื่อนไขใน Paint หากมีการเปลี่ยนแปลง
- อัปเดตขนาดเพื่อเพิ่ม API การแยกโครงสร้าง เปลี่ยนชื่อ UnspecifiedSize เป็น Unspecified และนำเมธอดที่ไม่ได้ใช้ออก
- อัปเดตการใช้งาน BlendMode API ของ Compose เพื่อแมประหว่าง BlendMode ของเฟรมเวิร์ก Android กับโหมด PorterDuff อย่างถูกต้องตามระดับ API เปิดตัว BlendMode#isSupported API เพื่อทำหน้าที่ เป็นการค้นหาความสามารถเพื่อพิจารณาว่าอุปกรณ์รองรับ BlendMode หรือไม่ก่อนที่จะใช้งาน (I0ef42)
- เพิ่ม LazyItemScope สำหรับพารามิเตอร์ itemContent ของรายการแบบ Lazy โดยจะให้ตัวแก้ไขเพื่อเติมขนาดสูงสุดขององค์ประกอบระดับบน ซึ่งจะแก้ Use Case เมื่อรายการควรเติมวิวพอร์ตและ Modifier.fillMaxSize() ปกติใช้ไม่ได้เนื่องจากระบบวัดรายการด้วยข้อจำกัดแบบอนันต์ (Ibd3b2, b/162248854)
- นำ
SemanticsNodeInteraction.performPartialGestureออกแล้ว โปรดใช้SemanticsNodeInteraction.performGestureแทน (Id9b62) - เปลี่ยนชื่อ
LazyColumnItemsเป็นLazyColumnForแล้ว เปลี่ยนชื่อLazyRowItemsเป็นLazyRowForแล้ว (I84f84) foundation.shape.cornerแพ็กเกจถูกลดระดับเป็นfoundation.share(I46491, b/161887429)- เปลี่ยนชื่อ
AndroidComposeTestRuleเป็นcreateAndroidComposeRuleแล้ว (I70aaf) - เพิ่ม API ลงใน
TextLayoutResult(Id7e04) - เราเปลี่ยนชื่อ Material
FilledTextFieldเป็นTextFieldและเปลี่ยนชื่อTextFieldพื้นฐานเป็นBaseTextFieldเพื่อให้ค้นพบและใช้ API ที่ต้องการได้ง่ายที่สุด (Ia6242, b/155482676) - เปลี่ยนชื่อ Modifier.drawBackground เป็น Modifier.background (I13677)
เวอร์ชัน 0.1.0-dev15
22 กรกฎาคม 2020
ระบบจะถอนการอ้างสิทธิ์androidx.compose.ui:ui-*:0.1.0-dev15 เวอร์ชัน 0.1.0-dev15 มีคอมมิตต่อไปนี้
การอัปเดตการขึ้นต่อกัน
- หากต้องการใช้ Compose เวอร์ชัน
0.1.0-dev15คุณจะต้องอัปเดตการอ้างอิง ตามข้อมูลโค้ดใหม่ที่แสดงด้านบนในส่วนการประกาศการอ้างอิง
การเปลี่ยนแปลง API
- FocusModifier เลิกใช้งานแล้วเพื่อใช้ Modifier.focus, Modifier.focusRequester, Modifier.focusObserver แทน เลิกใช้งาน FocusState และ FocusDetailedState แล้วเพื่อใช้ FocusState2 แทน (I46919, b/160822875, b/160922136)
- เพิ่มตัวแก้ไขเพื่อสังเกตการเปลี่ยนแปลงสถานะโฟกัส (I05866, b/160924455, b/160923326)
- เพิ่มตัวแก้ไขเพื่อขอการเปลี่ยนแปลงโฟกัส (I8dd73, b/161182057, b/160924778)
- ปรับเมนูแถบเครื่องมือเพื่อแสดงการคัดลอก ตัด วางอย่างถูกต้อง (Id3955)
- ตอนนี้พร็อพเพอร์ตี้เชิงความหมายแบบค่าเดียวใช้รูปแบบการเรียก
เช่น ตอนนี้เขียน 'semantics { hidden = true }' เป็น
semantics { hidden() }(Ic1afd, b/145951226, b/145955412) - เพิ่ม Modifier.focus ซึ่งจะแทนที่ FocusModifier (Ib852a, b/160924778)
- เพิ่ม FloatingToolbar สำหรับการเลือก TextField (Ie8b07)
- เพิ่มคำอธิบายประกอบ API เวอร์ชันทดลองสำหรับ API ที่เกี่ยวข้องกับการป้อนคีย์ (I53c0a)
- เพิ่มคำอธิบายประกอบ API เวอร์ชันทดลองสำหรับ API ที่เกี่ยวข้องกับโฟกัสทั้งหมด (I53b24, b/160903352)
- เพิ่ม FocusState2 ซึ่งจะแทนที่ FocusDetailedState (I0a3ba, b/160822595)
- เพิ่ม ExperimentalFocus ซึ่งเป็นคำอธิบายประกอบ @OptIn สำหรับ Focus API (I1544b, b/160820961)
- เพิ่มคลาสหน่วย IntBounds ซึ่งแสดงขอบเขตพิกเซลจำนวนเต็มจากการจัดวาง เราได้อัปเดต API ของ PopupPositionProvider เพื่อให้ใช้ได้แล้ว (I0d8d0, b/159596546)
- ตอนนี้ Applier ต้องมีเมธอด clear() สำหรับการทิ้งองค์ประกอบ (Ibe697)
- เลิกใช้งาน KeyEvent แล้วและแทนที่ด้วย KeyEvent2 (I68730)
- เพิ่มแฟล็กที่ไม่บังคับใหม่ useUnmergedTree ลงในเครื่องมือค้นหาการทดสอบ (I2ce48)
- ทำให้ LayoutNode เป็น API การทดสอบ (I4f2e9)
เพิ่มวิธีการคัดลอกไปยังคลาสประเภทต่างๆ ในบรรทัด ได้แก่
- ออฟเซ็ต
- ขนาด
- รัศมี
- การเคลื่อนไหว
TransformOrigin
เลิกใช้งานเมธอดออบเจ็กต์คู่ของ Size.copy เพื่อใช้เมธอดสำเนาอินสแตนซ์แทน (Ife290, b/159905651)
ตอนนี้ป๊อปอัป กล่องโต้ตอบ และเมนูจะรับค่า MaterialTheme ตามบริบทแล้ว (Ia3665, b/156527485)
เปลี่ยนชื่อ TextDirection เป็น ResolvedTextDirection (I3ff38)
นำพารามิเตอร์ทิศทางเลย์เอาต์ออกจากบล็อกการวัดของฟังก์ชัน Layout() อย่างไรก็ตาม คุณสามารถดูทิศทางการจัดวางได้ภายในโค้ดเรียกกลับผ่านออบเจ็กต์ขอบเขตการวัด (Ic7d9d)
ปรับโครงสร้าง SelectionHandles เพื่อนำกลับมาใช้ใหม่ (I420e0)
นำ Clickable ออกแล้ว ใช้ Modifier.clickable (I84bdf)
ระบบได้ลบ TestTag และ Semantics แล้ว ให้ใช้ Modifier.testTag และ Modifier.semantics แทน (I15ff0, b/158841414)
ก่อนการเปลี่ยนแปลงนี้ ปลั๊กอินคอมไพเลอร์ Compose จะดักจับการเรียกไปยังตัวสร้างภายในฟังก์ชัน @Composable อย่างไม่สำคัญ หากมี (I5205a, b/158123804)
เราเปลี่ยนชื่อ Modifier.tag เป็น Modifier.layoutId เพื่อไม่ให้เกิดความสับสนกับ Modifier.testTag (I995f0)
ตอนนี้ตำแหน่งบรรทัดการจัดแนว Int ที่แสดงผลจาก Placeable#get(AlignmentLine) จะไม่ใช่ค่าว่างแล้ว หากไม่มีบรรทัดการจัดแนวที่ค้นหา ระบบจะแสดงผล AlignmentLine.Unspecified (I896c5, b/158134875)
เพิ่มพารามิเตอร์ตัวแก้ไขให้กับ Composable ของ AndroidView (I48a88, b/158746303)
เลิกใช้งาน Semantics() แล้ว โปรดใช้ Modifier.semantics() แทน (I72407, b/158841414)
เพิ่ม Composable viewModel() ซึ่งช่วยให้สร้างหรือรับ ViewModel ที่สร้างไว้แล้วได้ในลักษณะเดียวกับที่ทำงานใน Activity หรือ Fragment (I5fdd1)
แทนที่การใช้งาน IntPx ด้วย Int แทนที่ IntPxPosition ด้วย IntOffset แทนที่ IntPxSize ด้วย IntSize (Ib7b44)
เพื่อรวมจำนวนคลาสที่ใช้แสดงข้อมูลการปรับขนาด ให้ใช้คลาส Size แทน PxSize ซึ่งจะช่วยให้ได้รับประโยชน์ จากคลาสอินไลน์เพื่อใช้ประโยชน์จาก Long ในการแพ็กค่า Float 2 ค่าเพื่อแสดง ความกว้างและความสูงที่แสดงเป็น Float (Ic0191)
เพื่อรวมจำนวนคลาสที่ใช้เพื่อแสดงข้อมูลการวางตำแหน่ง ให้ใช้คลาส Offset แทน PxPosition ซึ่งจะให้ประโยชน์ ของคลาสอินไลน์เพื่อใช้ประโยชน์จาก Long เพื่อแพ็กค่า Float 2 ค่าเพื่อแสดงออฟเซ็ต x และ y ที่แสดงเป็น Float (I3ad98)
แทนที่การใช้งานคลาส Px ในคลาส Compose ต่างๆ ซึ่งเป็นส่วนหนึ่งของความพยายามในการปรับโครงสร้างขนาดใหญ่เพื่อใช้เฉพาะ Dp และประเภทดั้งเดิมสำหรับพารามิเตอร์พิกเซล ลบคลาส Px ทั้งหมด (I3ff33)
แทนที่การใช้งานคลาส Px ในคลาส Compose ต่างๆ ซึ่งเป็นส่วนหนึ่งของความพยายามในการปรับโครงสร้างขนาดใหญ่ เพื่อใช้เฉพาะ Dp และประเภทดั้งเดิมสำหรับพารามิเตอร์พิกเซล (I086f4)
แทนที่การใช้คลาส Px ในคลาส Compose ต่างๆ ซึ่งเป็นส่วนหนึ่งของความพยายามในการปรับโครงสร้างขนาดใหญ่เพื่อใช้เฉพาะ Dp และประเภทดั้งเดิมสำหรับพารามิเตอร์พิกเซล (Id3434)
แทนที่การใช้งานคลาส Px ในคลาส Compose ต่างๆ ซึ่งเป็นส่วนหนึ่งของความพยายามในการปรับโครงสร้างขนาดใหญ่เพื่อใช้เฉพาะ Dp และประเภทดั้งเดิมสำหรับพารามิเตอร์พิกเซล (I97a5a)
ตอนนี้เราเลิกใช้งาน TestTag แล้ว โปรดใช้ Modifier.testTag แทน (If5110, b/157173105)
การใช้งานเริ่มต้นแบบไม่มีการดำเนินการของ ParentDataModifier#modifyParentData ถูกนำออกแล้ว ซึ่งเทียบเท่ากับการไม่ใช้งานอินเทอร์เฟซตั้งแต่แรก (I0deaa)
เลิกใช้งาน ScaleFit ก่อนหน้านี้แล้ว จึงนำออก โปรดใช้ ContentScale แทน (Ifbc5b)
แทนที่การใช้คลาส Px ในคลาส Compose ต่างๆ ซึ่งเป็นส่วนหนึ่งของความพยายามในการปรับโครงสร้างโค้ดครั้งใหญ่เพื่อใช้เฉพาะ Dp และประเภทดั้งเดิมสำหรับพารามิเตอร์พิกเซล (I19d02)
เพิ่มคอมโพเนนต์ DropdownMenu ใน ui-material ซึ่งเป็นการติดตั้งใช้งานเมนู Material Design (I9bb3d)
นำ LayoutTag() ที่เลิกใช้งานแล้วออก โปรดใช้ Modifier.tag() แทน นำ Modifier.matchParent() ที่เลิกใช้งานแล้วออก โปรดใช้ Modifier.matchParentSize() แทน (If8044)
แทนที่การใช้คลาส Px ในคลาส Compose ต่างๆ ซึ่งเป็นส่วนหนึ่งของความพยายามในการปรับโครงสร้างโค้ดครั้งใหญ่ เพื่อใช้เฉพาะ Dp และประเภทดั้งเดิมสำหรับพารามิเตอร์พิกเซล (I57bff)
เรายกเลิกการเลิกใช้งาน Modifier.semantics เพื่ออนุญาตให้ใช้กับคอมโพเนนต์ระดับสูง (I4cfdc)
การใช้งาน CanvasScope ที่รวมกัน ตอนนี้จึงมีเพียง DrawScope และ ContentDrawScope เปลี่ยนชื่อ CanvasScope เป็น DrawScope อัปเดต DrawScope เพื่อใช้ Density interface และจัดเตรียม LayoutDirection Deleted DrawScope subclass ใน ContentDrawScope Painter และ PainterModifier ได้รับการอัปเดต เพื่อไม่ให้รักษาพร็อพเพอร์ตี้ RTL ด้วยตนเองอีกต่อไป เนื่องจาก DrawScope มีพร็อพเพอร์ตี้นี้อยู่แล้ว โดยไม่ต้องระบุด้วยตนเอง (I1798e)
ตอนนี้ DoubleTapGestureFilter จะแยกความแตกต่างของ SingleTapGestureFilter ในโครงสร้าง (If92b1)
อัปเดต Alignment API และเพิ่มการรองรับการจัดแนวแบบสัมบูรณ์ (ซึ่งจะไม่มิเรอร์โดยอัตโนมัติในบริบท RTL) (I38cd3)
มีการเปลี่ยนแปลง API ตัวแก้ไข DrawLayer โดยเปลี่ยนชื่อ outlineShape เป็น shape และมีค่าเริ่มต้นเป็น RectangleShape และตอนนี้ไม่สามารถเป็น Null ได้ เปลี่ยนชื่อ clipToOutline เป็น clip และนำ clipToBounds ออกเนื่องจากเหมือนกับ clip == true ที่มี RectangleShape (I7ef11, b/155075735)
อัปเดต API Compose ระดับสูงขึ้น ซึ่งแสดง Canvas เพื่อ แสดง CanvasScope แทน ซึ่งจะช่วยลดความจำเป็นที่ผู้บริโภคต้องดูแลออบเจ็กต์ Paint ของตนเอง สำหรับผู้บริโภคที่ยังคงต้องเข้าถึง Canvas สามารถใช้วิธีการส่วนขยาย drawCanvas ซึ่งมีแฮนเดิลการเรียกกลับเพื่อออก คำสั่งวาดภาพด้วย Canvas พื้นฐาน (I80afd)
มีการเปลี่ยนแปลง API แลมบ์ดาต่อท้าย WithConstraints ตอนนี้แทนที่จะมี 2 พารามิเตอร์ ก็จะมีขอบเขตตัวรับซึ่งนอกเหนือจากข้อจำกัดและ layoutDirection แล้ว ยังมีพร็อพเพอร์ตี้ minWidth, maxWidth, minHeight และ maxHeight ใน Dp (I91b9a, b/149979702)
เปลี่ยนชื่อ LayoutModifier2 เป็น LayoutModifier (Id29f3)
นำอินเทอร์เฟซ LayoutModifier ที่เลิกใช้งานแล้วออก (I2a9d6)
ฟังก์ชันการวัดค่าโดยธรรมชาติใน Layout และ LayoutModifier2 มีตัวรับ IntrinsicMeasureScope แล้วในตอนนี้ ซึ่งจะให้ API การค้นหาค่าโดยธรรมชาติพร้อมกับทิศทางการจัดวางที่ส่งต่อโดยนัย (Id9945)
เลย์เอาต์และองค์ประกอบย่อย LayoutModifier สามารถวัดได้ด้วยทิศทางเลย์เอาต์ที่แตกต่างกัน (Ibd731)
เพิ่ม Modifier.zIndex() ใหม่เพื่อควบคุมลำดับการวาดขององค์ประกอบย่อยภายในเลย์เอาต์หลักเดียวกัน ระบบเปลี่ยนชื่อพร็อพเพอร์ตี้ elevation ใน DrawLayerModifier เป็น shadowElevation และจะไม่ควบคุมลำดับการวาดอีกต่อไป มีการเปลี่ยนแปลงลำดับพารามิเตอร์ของ DrawShadow โดยตอนนี้ค่าระดับความสูงเป็นพารามิเตอร์แรก และรูปร่างเป็นพารามิเตอร์ที่ 2 โดยมี RectangleShape เป็นค่าเริ่มต้น (I20150, b/152417501)
นำ onSizeChange และ onPositionChange ออกใน Owner (I5c718)
เพิ่ม Constraints2 ซึ่งเป็นสำเนาของ Constraints ที่รองรับเฉพาะค่าข้อจำกัด Int แทน IntPx IntPx จะถูกนำออก และจะถือว่าข้อจำกัดจำนวนเต็มทั้งหมด เป็นพิกเซลเหมือนใน Android
- นอกจากนี้ยังเพิ่ม IntSize ซึ่งจะมาแทนที่ IntPxSize ในที่สุด (I4b43a)
ทำให้ Alignment สร้างอินสแตนซ์ได้ด้วยค่าที่กำหนดเอง เพิ่มการจัดแนว 1 มิติ (Ia0c05)
ตอนนี้ alignToSiblings ยอมรับ Measured แทน Placeable แล้ว (I5788d)
-
- เปลี่ยนชื่อ ScaleFit เป็น ContentScale
- ย้าย ContentScale จาก ui-graphics ไปยังโมดูล ui-core เพื่อให้อยู่ในโมดูลเดียวกับ Alignment API
- เปลี่ยนชื่อ FillMaxDimension เป็น Crop
- เปลี่ยนชื่อ FillMinDimension เป็น Fit
- เปลี่ยนชื่อ Fit เป็น Inside เพื่อให้สอดคล้องกันมากขึ้น
- เทียบเท่า ImageView.ScaleType
- เพิ่มเอกสารที่ระบุว่าการรวม Crop และ Alignment.Center ให้ผลลัพธ์เดียวกันกับ ImageView.ScaleType.CENTER_CROP และ Fit ที่ใช้กับ Alignment.Center ให้ผลลัพธ์เดียวกันกับ ImageView.ScaleType.FIT_CENTER และ Inside ที่ใช้กับ Alignment.Center ให้ผลลัพธ์เดียวกันกับ ImageView.ScaleType.CENTER_INSIDE
การรองรับ RTL สำหรับตัวแก้ไขการวาด (I0aaf9)
เปิดตัว API สำหรับขยาย Android View จาก XML ดูรายละเอียดเพิ่มเติมได้ที่การสาธิต ViewInCompose (I42916)
ปรับปรุง DrawModifier API:
- สร้างขอบเขตตัวรับสำหรับ draw() ContentDrawScope
- นำพารามิเตอร์ทั้งหมดใน draw() ออก
- DrawScope มีอินเทอร์เฟซเหมือนกับ CanvasScope รุ่นก่อน
- ContentDrawScope มีเมธอด drawContent() (Ibaced, b/152919067)
เพิ่ม positionInParent และ boundsInParent สำหรับ LayoutCoordinates (Icacdd, b/152735784)
ตอนนี้ DrawLayerModifier และ drawLayer() จะตั้งค่าเริ่มต้น clipToBounds และ clipToOutline เป็น false (I0eb8b, b/152810850)
เปลี่ยนชื่อ LayoutResult เป็น MeasureResult (Id8c68)
เพิ่ม LayoutModifier2 ซึ่งเป็น API ใหม่สำหรับการกำหนดตัวแก้ไขเลย์เอาต์ และเลิกใช้งาน LayoutModifier (If32ac)
แทนที่ตัวแก้ไขและตัวดำเนินการด้วยฟังก์ชันส่วนขยายของโรงงาน (I225e4)
เพิ่มพร็อพเพอร์ตี้ translationX/Y เพื่อรองรับ การชดเชยรายการที่แสดงของคำสั่งการวาดสำหรับ เลเยอร์ที่กำหนด ซึ่งมีประโยชน์ในการย้ายเนื้อหา เพื่อตอบสนองต่อภาพเคลื่อนไหวหรือเหตุการณ์การแตะ (I8641c)
เพิ่มพารามิเตอร์ pivotX, pivotY ลงใน Layer API เพื่อรองรับการหมุนและการปรับขนาด รอบจุดใดจุดหนึ่งในเลเยอร์ (Icf7c3)
เพิ่ม OnPositionedModifier และ OnChildPositionedModifier เพื่อแทนที่ฟังก์ชันที่ใช้ได้ของ OnPositioned และ OnChildPositioned (I2ec8f)
เพิ่ม LayerModifier ซึ่งเป็นตัวแก้ไขที่อนุญาต ให้เพิ่ม RenderNode สำหรับเลย์เอาต์ โดยจะช่วยให้คุณตั้งค่า การครอบตัด ความทึบ การหมุน การปรับขนาด และเงาได้ ซึ่งจะแทนที่ RepaintBoundary (I7100d, b/150774014)
ทำให้มีการส่งต่อทิศทางเลย์เอาต์จากโหนดเลย์เอาต์หลักไปยังโหนดลูก เพิ่มตัวแก้ไขทิศทางเลย์เอาต์ (I3d955)
คอมโพเนนต์ Stack รองรับทิศทางจากขวาไปซ้าย (Ic9e00)
การรองรับ RTL ในเลย์เอาต์ Compose ในช่วงแรก (Ia5519)
เราได้รวม Density และ DensityScope ไว้ในอินเทอร์เฟซเดียว ตอนนี้คุณใช้ DensityAmbient.current แทน ambientDensity() ได้แล้ว แทนที่จะใช้ withDensity(density) ให้ใช้ with(density) (I11cb1)
เปลี่ยน LayoutCoordinates เพื่อให้ providedAlignmentLines เป็น Set แทนที่จะเป็น Map และให้ LayoutCoordinates ใช้โอเปอเรเตอร์ get() แทนสำหรับการดึงค่า ซึ่งจะช่วยให้ผู้แก้ไขแก้ไขค่าอย่างน้อย 1 ค่าของชุดได้ง่ายขึ้นโดยไม่ต้องสร้างคอลเล็กชันใหม่สำหรับตัวแก้ไขแต่ละรายการ (I0245a)
LayoutCoordinates ไม่มีพร็อพเพอร์ตี้ตำแหน่งอีกต่อไป พร็อพเพอร์ตี้ position จะไม่มีผลเมื่อพิจารณา LayoutModifiers, rotation หรือการปรับขนาด นักพัฒนาแอปควรใช้ parentCoordinates และ childToLocal() เพื่อคำนวณการเปลี่ยนจาก LayoutCoordinate หนึ่ง ไปยังอีก LayoutCoordinate หนึ่งแทน
LayoutCoordinates ใช้ IntPxSize สำหรับพร็อพเพอร์ตี้ขนาดแทน PxSize เลย์เอาต์ใช้ขนาดพิกเซลจำนวนเต็มสำหรับเลย์เอาต์ ดังนั้นขนาดเลย์เอาต์ทั้งหมด ควรใช้จำนวนเต็มและไม่ใช่ค่าทศนิยม (I9367b)
การปรับปรุงแพลตฟอร์ม API ของข้อจำกัด (I0fd15)
สร้าง CanvasScope API ที่ครอบคลุมออบเจ็กต์ Canvas เพื่อแสดงพื้นผิว API การวาดภาพแบบประกาศที่ไม่มีสถานะ การเปลี่ยนรูปแบบจะอยู่ในขอบเขตของตัวรับสัญญาณของตัวเอง และข้อมูลการปรับขนาดจะอยู่ในขอบเขตของขอบเขตส่วนที่เว้นไว้ที่เกี่ยวข้องด้วย โดยไม่จำเป็นต้องให้ผู้ใช้ดูแลออบเจ็กต์สถานะ Paint ของตนเองเพื่อกำหนดค่าการดำเนินการวาด
- เพิ่ม CanvasScopeSample และ อัปเดตแอปเดโมให้มีเดโมกราฟิกแบบประกาศ (Ifd86d)
นำ MaskFilter API ที่ไม่ได้ใช้ออก เนื่องจากมีการใช้งานที่จำกัดและไม่ได้ปรับให้เหมาะสม สำหรับการเร่งด้วยฮาร์ดแวร์ใน Use Case ส่วนใหญ่ (I54f76)
ย้าย RectangleShape จาก androidx.ui.foundation.shape.* ไปยัง androidx.ui.graphics.* (Ia74d5, b/154507984)
แทนที่การใช้ Color ที่อนุญาตให้เป็น Null ทั้งหมดใน API ด้วย ที่ไม่ใช่ Null และใช้ Color.Unset แทน Null (Iabaa7)
เพิ่มพารามิเตอร์ rect ที่ไม่บังคับเพิ่มเติมลงใน ImagePainter เพื่อรองรับ การวาดภาพส่วนย่อยของ ImageAsset พื้นฐาน (I0ea9e)
เพิ่มสีที่ไม่ได้ตั้งค่าเพื่อแสดงค่าที่ไม่ได้ตั้งค่าโดยไม่ต้อง ใส่สีในกรอบ (If901a)
เพิ่มเมธอดส่วนขยาย Canvas.rotate และ Canvas.scale เพื่อใช้พิกัดจุดหมุนที่ไม่บังคับสำหรับการเปลี่ยนรูป ค่าเริ่มต้นเหล่านี้จะอยู่ที่มุมซ้ายบนของ การแปล Canvas ปัจจุบัน
ย้าย Canvas.rotateRad ให้เป็น เมธอดส่วนขยายเพื่อความสอดคล้องกัน (Ibaca6)
สร้าง PixelMap API เพื่อรองรับ การค้นหาข้อมูลพิกเซลจาก ImageAsset (I69ad6)
เปลี่ยนชื่อเป็น toFrameworkRect/toFrameworkRectF เป็น toAndroidRect/toAndroidRectF เพื่อให้เป็นไปตามหลักเกณฑ์การตั้งชื่อ สำหรับการแปลงออบเจ็กต์ระหว่าง Compose กับ Android framework API ที่สร้างขึ้น นอกจากนี้ เรายังอัปเดตเอกสารเกี่ยวกับ API เหล่านี้ด้วย (I86337)
เพิ่ม VectorPainter API เพื่อแทนที่ API องค์ประกอบย่อยที่มีอยู่สำหรับ กราฟิกแบบเวกเตอร์ ผลลัพธ์ขององค์ประกอบย่อย คือออบเจ็กต์ VectorPainter แทนที่จะเป็น DrawModifier เลิกใช้งาน DrawVector Composables ก่อนหน้าเพื่อใช้ VectorPainter
เปลี่ยนชื่อ Image(Painter) API เป็น PaintBox(Painter) สร้าง Vector ที่ใช้ร่วมกันได้ซึ่งทำงานเหมือน Image ที่ใช้ร่วมกันได้ แต่ใช้ VectorAsset แทน ImageAsset (I9af9a, b/149030271)
เปลี่ยนชื่อ Image เป็น ImageAsset เพื่อให้เห็นความแตกต่างระหว่างข้อมูล Image กับ Image composable ที่กำลังจะเปิดตัวซึ่งใช้ในการเข้าร่วมเลย์เอาต์และวาดเนื้อหาได้ดียิ่งขึ้น _Body:สร้างเมธอดส่วนขยายใน android.graphics.Bitmap, Bitmap.asImageAsset() เพื่อสร้างอินสแตนซ์ของ ImageAsset ที่มีประโยชน์สำหรับการรวมการพัฒนาแอปพลิเคชัน Android แบบเดิมเข้ากับเฟรมเวิร์ก Compose (Id5bbd)
เพิ่ม TextDirection.Content (I48f36)
เพิ่มตัวดำเนินการ TextDecoration.plus (I0ad1a)
นำ
Forceออกจากค่า enum ของ TextDirectionAlgorithm (Icc944)เปลี่ยนชื่อ TextDirectionAlgorithm เป็น TextDirection (I75ce8)
ใช้ LongPressAndDrag สำหรับการเลือก TextField (I17919)
เพิ่ม AnnotatedString.getStringAnnotations ที่แสดงผลคำอธิบายประกอบทั้งหมดภายในช่วง (I1fa00)
เปลี่ยนชื่อแพ็กเกจสำหรับ Locale และ LocaleList จาก androidx.ui.text เป็น androidx.ui.intl (I8132c)
เคอร์เซอร์ของ TextField มีภาพเคลื่อนไหวแบบกะพริบ (Id10a7)
การเปลี่ยนแปลง API: เปลี่ยนชื่อ AnnotatedString(builder: Builder) เป็น annotatedString(builder: Builder) (Ia6377)
การเปลี่ยนแปลง API: เปลี่ยนชื่อ AnnotatedString.Item เป็น AnnotatedString.Range (I2d44d)
เปลี่ยนชื่อ AnnotatedString.Builder.addAnnotationString เป็น addStringAnnotation (I5059e)
ตอนนี้คุณสามารถซ่อน/แสดงแป้นพิมพ์เสมือนได้โดยใช้ SoftwareKeyboardController ซึ่งส่งผ่านโดยการเรียกกลับ onTextInputStarted (I8dc44, b/151860051)
เพิ่มโอเปอเรเตอร์บวกสำหรับ (Text/Paragraph/Span)Style ซึ่ง มอบหมายให้ฟังก์ชัน merge() (Ia1add)
FontWeight.lerp จะไม่สแนปอีกต่อไป แต่ก็ยังคงเป็นคลาสข้อมูล (I521c2)
ตอนนี้ตัวสร้าง FontWeight เป็นแบบสาธารณะแล้ว และไม่ใช่คลาสข้อมูลอีกต่อไป (Id6b1f)
เพิ่ม getLineStart, getLineEnd, getEllipsisOffset และ getEllipsisCount ลงใน TextLayoutResult (Ibc801)
เปลี่ยนชื่อโมดูล ui-text เป็น ui-text-core (I57dec)
นำคลาส Size ที่ไม่ได้ใช้ออก เนื่องจากมีคลาส Size ที่ซ้ำกัน ในโมดูล ui-geometry ที่ กำลังใช้งานอยู่ (I1b602)
เพิ่ม AdapterList ซึ่งเป็นคอมโพเนนต์รายการที่เลื่อนได้ซึ่ง จัดองค์ประกอบและวางรายการที่มองเห็นได้เท่านั้น ปัญหาที่ทราบในปัจจุบัน คือฟีเจอร์นี้ใช้ได้เฉพาะแนวตั้งและไม่สามารถจัดการการเปลี่ยนแปลงทั้งหมด ในกรณีที่เกิดการเปลี่ยนแปลงในองค์ประกอบย่อย (Ib351b)
เพิ่มระยะห่างภายใน เส้นขอบ รูปร่าง และพารามิเตอร์พื้นหลังลงใน Box (I05027, b/148147281)
การแก้ไขข้อบกพร่อง
- เปลี่ยนชื่อการเรียกกลับ onFocusChange ในช่องข้อความเป็น onFocusChanged (Ida4a1)
- เลิกใช้งาน VerticalScroller และ HoriziontalScroller แล้ว ใช้ ScrollableColumn และ ScrollableRow เพื่อสร้างประสบการณ์การใช้งานในตัวที่มีลักษณะการทำงานและพารามิเตอร์ของ Column/Row หรือ Modifier.verticalScroll และ Modifier.horizontalScroll ในองค์ประกอบของคุณเอง ในทำนองเดียวกัน เราได้เลิกใช้งาน ScrollerPosition เพื่อให้ใช้ ScrollState แทน (I400ce, b/157225838, b/149460415, b/154105299)
- เปลี่ยนชื่อเป็น
runOnIdle(I83607)runOnIdleCompose - เราได้เปลี่ยนชื่อ API สำหรับการทดสอบหลายรายการเพื่อให้ใช้งานง่ายขึ้น API ทั้งหมด findXYZ เปลี่ยนชื่อเป็น onNodeXYZ แล้ว API ทั้งหมดที่ขึ้นต้นด้วย doXYZ ได้รับการเปลี่ยนชื่อเป็น performXYZ (I7f164)
- ตอนนี้คุณสามารถเขียน UI ของ Compose ภายใน ViewGroup ได้โดยไม่ต้องเขียนองค์ประกอบใหม่ ดูตัวอย่างได้ที่ ViewInteropDemo (I9ab0b, b/160455080)
- เพิ่ม sortWith และ removeRange ลงใน MutableVector (Icccf7)
- ใช้แฮนเดิลการเลือกแบบลากเพื่อเปลี่ยนการเลือกสำหรับ TextField (I27032)
- นำคลาส Shader แบบอินไลน์ที่ ห่อหุ้มคลาส NativeShader ที่คาดไว้ เปลี่ยนชื่อ NativeShader เป็น Shader คลาสอินไลน์ Shader ที่ห่อไว้ไม่ได้เพิ่มสิ่งที่มีประโยชน์ใดๆ ให้กับพื้นผิว API และเป็นคลาสอินไลน์ ดังนั้น ให้ใช้คลาส NativeShader โดยตรง (I25e4d)
ปรับโครงสร้าง PainterModifier เพื่อไม่ให้มีการปรับขนาดตาม ข้อจำกัดและพารามิเตอร์ ContentScale ที่ระบุอีกต่อไป การใช้งาน Painter จะต้องปรับขนาดเนื้อหาการวาด ด้วยตนเองตามขนาดที่กำหนดของ DrawScope ที่วาด
แก้ไขปัญหาที่แคชของ VectorPainter บิตแมปมีขนาดเป็นขนาดเริ่มต้น แทนที่จะเป็นขนาดที่กำหนดเพื่อวาด
อัปเดต ImagePainter เพื่อปรับขนาดเนื้อหา แทนที่จะใช้ PainterModifier เพื่อดำเนินการในนามของตน (I6ba90)
เพิ่มฟังก์ชัน withFrameNanos ระดับบนสุดสำหรับเวลาของภาพเคลื่อนไหว (Ie34c5)
เราเลิกใช้งาน @Untracked annotation แล้ว แทนที่ด้วย @ComposableContract(tracked=false) (Id211e)
เลิกใช้งาน androidx.ui.foundation.TextFieldValue และ androidx.ui.input.EditorValue แล้ว นอกจากนี้ เรายังเลิกใช้งาน Composable TextField, FilledTextField และ CoreTextField ที่ใช้ประเภทดังกล่าวด้วย โปรดใช้ androidx.ui.input.TextFieldValue แทน (I4066d, b/155211005)
แก้ไขปัญหาที่อินพุตของเคอร์เซอร์ dispatch จะทำให้เกิดข้อขัดข้องหาก PointerInputFilters ถูกนำออกผ่าน subcomposition ระหว่างการส่ง ซึ่งตอนนี้ปัญหาได้รับการแก้ไขแล้ว (I1f48b, b/157998762)
แก้ไขปัญหาที่การเรียกใช้การป้อนข้อมูลเคอร์เซอร์จะทำให้เกิดข้อขัดข้องหากมีการนำ PointerInputFilters ออกผ่าน องค์ประกอบย่อยระหว่างการเรียกใช้ ซึ่งตอนนี้ปัญหาได้รับการแก้ไขแล้ว (Iab398, b/157998762)
ปรับโครงสร้างคลาส Radius ให้เป็น คลาสอินไลน์ นำวิธีการสร้างฟังก์ชันเสริมออก เพื่อใช้ตัวสร้างฟังก์ชัน ที่มีพารามิเตอร์เริ่มต้นเพื่อให้รัศมี ตามแกน y ตรงกับพารามิเตอร์รัศมีแกน x ที่จำเป็น
อัปเดต DrawScope.drawRoundRect เพื่อใช้พารามิเตอร์ Radius เดียวแทนค่าทศนิยม 2 ค่าแยกกันสำหรับรัศมีตามแกน x และ y (I46d1b)
Composable ของ Recompose ไม่ใช่การแยกส่วนที่มีประโยชน์อีกต่อไป การจัดองค์ประกอบใหม่ส่วนใหญ่ควรเกิดขึ้นจากการกำหนด MutableState หากต้องการดำเนินการอื่นๆ นอกเหนือจากนี้ เราขอแนะนำให้คุณใช้
invalidateฟังก์ชันเพื่อทริกเกอร์การจัดองค์ประกอบขอบเขตปัจจุบันใหม่ (Ifc992)แทนที่การใช้คลาส Px ในคลาส Compose ต่างๆ ซึ่งเป็นส่วนหนึ่งของการรีแฟคเตอร์ครั้งใหญ่เพื่อให้ใช้เฉพาะ Dp และประเภทดั้งเดิมสำหรับพารามิเตอร์พิกเซล (Iede0b)
เปลี่ยนกลยุทธ์การสร้างโค้ดของคอมไพเลอร์ของ Compose ก่อนการเปลี่ยนแปลงนี้ คอมไพเลอร์การเขียนจะเปลี่ยนการเรียกไปยังฟังก์ชันที่ประกอบกันได้ การเปลี่ยนแปลงนี้ทำให้เราสามารถเปลี่ยนเนื้อหาของฟังก์ชันที่ประกอบกันได้และปล่อยให้ตำแหน่งการเรียกใช้ไม่เปลี่ยนแปลง (ส่วนใหญ่)
ซึ่งหมายความว่าตรรกะส่วนใหญ่ที่สื่อสารกับรันไทม์ของ Compose จะเกิดขึ้นที่จุดเริ่มต้นของเนื้อหาฟังก์ชัน แทนที่จะเป็นที่ตำแหน่งการเรียก
การเปลี่ยนแปลงนี้ควรเข้ากันได้กับแหล่งที่มาสำหรับการใช้งาน Compose ทั้งหมด ผู้ใช้ Compose ส่วนใหญ่ไม่จำเป็นต้องอัปเดตโค้ดใดๆ อันเป็นผลมาจากการเปลี่ยนแปลงนี้
เราได้เปลี่ยนลายเซ็น JVM ของฟังก์ชันที่ใช้ร่วมกันได้ทั้งหมดเพื่อรองรับการทำงานนี้ ระบบจะแปลงฟังก์ชันที่ประกอบกันได้ซึ่งยอมรับพารามิเตอร์เดียวให้เป็นฟังก์ชันที่ยอมรับพารามิเตอร์ 3 รายการ โดยพารามิเตอร์เพิ่มเติมคือ Composer ซึ่งเป็นจำนวนเต็ม "คีย์" และจำนวนเต็มบิตมาสก์ที่ใช้ในการส่งต่อข้อมูลเมตาผ่านการเรียก
ตอนนี้ Compose จะแปลงอาร์กิวเมนต์เริ่มต้นเป็นฟังก์ชันที่ประกอบกันได้ด้วย โดยการดำเนินการนี้จะไม่ทำให้ฟังก์ชันมีการโอเวอร์โหลดเริ่มต้นแบบสังเคราะห์เพิ่มเติม ดังนั้นการเปลี่ยนแปลงนี้จะส่งผลให้มีการกำหนดฟังก์ชันน้อยลง
การเปลี่ยนแปลงลักษณะการทำงานที่ทราบและตั้งใจให้เกิดขึ้นจากสิ่งนี้มีดังนี้
- การโทรบางสายจะข้ามไปยังจุดที่ก่อนหน้านี้ไม่เคยข้าม
- ตอนนี้ระบบจะติดตามและจัดการนิพจน์ที่ประกอบได้ในนิพจน์อาร์กิวเมนต์เริ่มต้นอย่างถูกต้องแล้ว
การทำงานนี้รวมถึงการเพิ่มประสิทธิภาพบางอย่าง ดังนี้ 1. ผลลัพธ์ของการเปรียบเทียบพารามิเตอร์จะเผยแพร่ผ่านกราฟการเรียกไปยังฟังก์ชันอื่นๆ ที่ประกอบได้ ซึ่งจะส่งผลให้มีการเปรียบเทียบที่รันไทม์น้อยลง ลดขนาดตารางสล็อต รวมถึงข้ามฟังก์ชันที่ใช้ร่วมกันได้มากขึ้นซึ่งก่อนหน้านี้ไม่ได้ข้าม 2. ระบบจะไม่เปรียบเทียบหรือจัดเก็บพารามิเตอร์ที่พิจารณาว่า "คงที่" ในเวลาคอมไพล์ในรันไทม์อีกต่อไป ซึ่งจะช่วยลดจำนวนการเปรียบเทียบและลดขนาดตารางช่อง 3. โครงสร้างโฟลว์การควบคุมของเนื้อหาฟังก์ชันใช้เพื่อลดจำนวนกลุ่มที่สร้างขึ้น ซึ่งจะช่วยลดขนาดตารางสล็อตและทำให้รันไทม์ 4 ทำงานน้อยลง ระบบจะไม่รวมพารามิเตอร์การเรียกใช้และพารามิเตอร์ผู้รับที่ไม่ได้ใช้ไว้ในการพิจารณาว่าฟังก์ชันข้ามได้หรือไม่ หากไม่ได้ใช้พารามิเตอร์ดังกล่าวภายในเนื้อหาของฟังก์ชัน
การเปลี่ยนแปลงที่ทำให้เกิดข้อขัดข้องส่วนใหญ่เป็น API ที่คอมไพเลอร์กำหนดเป้าหมายโดยตรง และการใช้งาน Compose โดยทั่วไปจะไม่ได้รับผลกระทบ 1. นำ Composer::startExpr ออกแล้ว 2. นำ Composer::endExpr ออกแล้ว 3. เลิกใช้งาน Composer::call แล้ว 4. เราได้นำการโอเวอร์โหลดที่ไม่ใช่ varargs ของ
keyออกแล้ว ตั้งแต่นี้ไปให้ใช้เวอร์ชันvararg5. เราเลิกใช้งานคำอธิบายประกอบที่สำคัญแล้ว ใช้keyแทน 6. มีการเปลี่ยนแปลง ScopeUpdateScope::updateScope เพื่อคาดหวัง Function3 แทน Function1 7 มีการอัปเดต restartableFunction และ restartableFunctionN เพื่อรวมพารามิเตอร์เวลาคอมไพล์เพิ่มเติม (I60756, b/143464846)นำตัวแก้ไข LayoutAlign ที่เลิกใช้งานแล้วออก (I10877)
นำ RepaintBoundary ออกเพื่อใช้ DrawLayerModifier แทน (I00aa4)
ตอนนี้ปุ่ม, FloatingActionButton และ Clickable มี
enabledparam แยกกันแล้ว มีการเปลี่ยนชื่อหรือจัดเรียงพารามิเตอร์บางรายการใน Button ใหม่ (I54b5a)แทนที่ ButtonStyle ด้วยฟังก์ชันที่แตกต่างกันและนำการโอเวอร์โหลดข้อความ (สตริง) ออก ดูตัวอย่างที่อัปเดตแล้วสำหรับข้อมูลการใช้งาน (If63ab, b/146478620, b/146482131)
การเปลี่ยนแปลงที่ไม่รองรับการทำงานย้อนหลังใน Ambient API ดูรายละเอียดได้ในบันทึกและเอกสารประกอบของ
Ambient<T>(I4c7ee, b/143769776)เปลี่ยนลักษณะการทำงานของ TextDirection เริ่มต้นให้กำหนดโดย LayoutDirection กล่าวคือ หาก LayoutDirection เป็น RTL TextDirection เริ่มต้นจะเป็น RTL ก่อนหน้านี้คือ TextDirection.ContentOrLtr/Rtl (I4e803)
แก้ไขข้อบกพร่อง: เมื่อมีการซ้อนน้ำหนักแบบอักษรและรูปแบบแบบอักษรใน AnnotatedString ระบบจะไม่แสดงข้อความอย่างถูกต้อง (I77a9d)
เพิ่มพารามิเตอร์ที่ใช้กันโดยทั่วไปลงใน Text() หากปัจจุบันคุณสร้างรูปแบบข้อความในเครื่องเพื่อส่งพารามิเตอร์เหล่านี้จำนวนเล็กน้อย เช่น Text(style = TextStyle(textAlign = TextAlign.Center)) ตอนนี้คุณก็ระบุพารามิเตอร์ได้โดยตรง: Text(textAlign = TextAlign.Center) (I82768)
เปลี่ยนชื่อโมดูล ui-android-text เป็น ui-text-android (I68cbe)