UI ของ Compose
androidx.compose.ui
androidx.compose.ui.geometry
androidx.compose.ui.graphics
androidx.compose.ui.platform
androidx.compose.ui.test
(ดูเอกสารอ้างอิง API สำหรับแพ็กเกจ Compose ทั้งหมด)
| อัปเดตล่าสุด | รุ่นที่เสถียร | รุ่นที่อาจได้รับการเผยแพร่ | รุ่นเบต้า | รุ่นอัลฟ่า |
|---|---|---|---|---|
| 7 ตุลาคม 2026 | 1.12.1 | - | 1.13.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
plugins { id 'org.jetbrains.kotlin.plugin.compose' } dependencies { implementation "androidx.compose.ui:ui:1.12.1" } android { buildFeatures { compose true } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
plugins { kotlin("plugin.compose") } dependencies { implementation("androidx.compose.ui:ui:1.12.1") } android { buildFeatures { compose = true } kotlinOptions { jvmTarget = "1.8" } }
ดูข้อมูลเพิ่มเติมเกี่ยวกับทรัพยากร Dependency ได้ที่เพิ่มทรัพยากร Dependency ของบิลด์
ความคิดเห็น
ความคิดเห็นของคุณช่วยให้ Jetpack ทำงานได้ดีขึ้น โปรดแจ้งให้เราทราบหากพบปัญหาใหม่หรือมี ไอเดียในการปรับปรุงไลบรารีนี้ โปรดดูปัญหาที่มีอยู่ ในไลบรารีนี้ก่อนสร้างปัญหาใหม่ คุณสามารถโหวตปัญหาที่มีอยู่ได้โดย คลิกปุ่มดาว
ดูข้อมูลเพิ่มเติมได้ที่เอกสารประกอบของ Issue Tracker
เวอร์ชัน 1.13
เวอร์ชัน 1.13.0-beta01
7 ตุลาคม 2026
androidx.compose.ui:ui-*:1.13.0-beta01 เปิดตัวแล้ว เวอร์ชัน 1.13.0-beta01 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- ย้อนกลับ
Modifier.interactionBarrier()จากแพลตฟอร์ม API สาธารณะสำหรับ 1.13 (I47974, b/564575045, b/347038246) - อัปเดต
PolygonShapeAPI: ย้ายCornerRoundingไปยังระดับบนสุดด้วย Factorydp()และfraction()แทนที่ส่วนขยายtransformed()และscaledToFit()ด้วยPolygonShape.transform(PolygonShapeTransformScope.() -> Unit)และPolygonShape.copy()ที่เปลี่ยนแปลงได้ในที่ (If5970) - ตอนนี้
onValueChangeเป็นพารามิเตอร์ที่จำเป็นในSlider,VerticalSliderและRangeSliderนำ API ที่เลิกใช้งานแล้วซึ่งซ่อนไว้ก่อนหน้านี้ในคอมโพเนนต์SliderและRangeSliderออก ซึ่งรวมถึงการติดตั้งใช้งานDraggableStateในSliderStateและการโอเวอร์โหลดSaverแบบเดิม นำisVerticalออกจากSliderStateแล้ว เลิกใช้งานการโอเวอร์โหลดSliderDefaults.Thumbที่ใช้SliderStateแล้ว และหันมาใช้การโอเวอร์โหลดisVerticalแทน (I3fdc1) - เราได้แทนที่คลาส
PostureในMediaQueryด้วยWindowPostureซึ่งแสดงWindowFoldจริง (FoldStateและFoldOrientation) เพิ่มพร็อพเพอร์ตี้ความสะดวกisTabletopและisFlatในWindowPostureและนำท่าทาง Book ที่ชัดเจนออก (Id9e8e) - ตอนนี้ไลบรารีจะกำหนดเป้าหมายเป็น Kotlin 2.2 และต้องใช้ kotlinc 2.2 (I82396, b/498369605)
- เพิ่ม
@FloatRangeในBlurStop.fraction, เปลี่ยนfallOffRadiusเริ่มต้นในBlurRadiusSpec.radialGradientเป็นDp.Unspecified, เปลี่ยนชื่อพารามิเตอร์radiusของModifier.blurเป็นblurRadiusSpecและเปลี่ยนชื่อBlurScope.radiusเป็นblurRadiusSpec(I91dbc, b/556335791)
การแก้ไขข้อบกพร่อง
- แก้ไข IllegalArgumentException ("ไม่พบ LayoutNode ใน RectList") เมื่อมีการค้นหาเส้นแนวในระหว่างการวัด (Icec9e, b/549552303)
- ตอนนี้
VectorPainterจะแชร์แหล่งข้อมูลกราฟิกภายใน (ImageBitmap) เมื่อแสดงผลImageVectorเดียวกันใน Composable หลายรายการ ซึ่งจะช่วยลดการอัปโหลดพื้นผิวที่ซ้ำกันและการใช้งานหน่วยความจำ ทำให้ประสิทธิภาพดีขึ้นในสถานการณ์ต่างๆ เช่น รายการที่ใช้ไอคอนซ้ำ คุณปิดใช้การเพิ่มประสิทธิภาพนี้ได้ผ่านComposeUiFlags.isVectorDrawCacheSharingEnabled(I91b41) - แก้ไขข้อบกพร่องที่ AndroidTextPaint.setTextMotion ไม่ล้าง LINEAR_TEXT_FLAG เมื่อเปลี่ยนไปใช้ FontHinting หรือ None linearity (I8c19c)
- แก้ไขปัญหาที่โฟกัสการสำรวจด้วยการสัมผัสของ TalkBack อาจข้ามไปยัง AndroidView ที่ฝังอยู่ (เช่น WebView) ซึ่งครอบคลุมเนื้อหา UI ของ Compose (I11372, b/561099702)
- แก้ไขปัญหาที่การเรียก
Color.toColorLong()หรือการตั้งค่าสีที่ซ้อนทับColor.Unspecifiedใน Paint อาจทำให้เกิดข้อขัดข้องพร้อมIllegalArgumentException(Ia365b, b/557521315) - อัปเดตทรัพยากร Dependency ของ
androidx.lifecycle:lifecycle-runtimeเป็น 2.10.0 แล้ว ต้องใช้เวอร์ชันนี้เพื่อให้การตรวจสอบ Lint ของรันไทม์วงจรการใช้งานแบบรวมทำงานร่วมกับ AGP เวอร์ชัน 9.5.0-alpha04 ขึ้นไปได้ (I99bfd, b/556807521) - แก้ไขการแยกพารามิเตอร์ในเครื่องมือสำหรับ Composable ที่มีพารามิเตอร์มากกว่า 10 รายการ (Ib167d)
- แก้ไขปัญหาที่ไม่ได้ล้างโหนดเลย์เอาต์ที่ปิดใช้งานออกจากคิวเลย์เอาต์ ซึ่งทำให้เกิดข้อขัดข้องระหว่างการวัดซ้ำ (Ie64a5)
เวอร์ชัน 1.13.0-alpha03
9 กันยายน 2569
androidx.compose.ui:ui-*:1.13.0-alpha03 เปิดตัวแล้ว เวอร์ชัน 1.13.0-alpha03 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- ระบบเลิกใช้งานการโอเวอร์โหลดช่องข้อความ Material 2 ที่ยอมรับพารามิเตอร์
value, onValueChangeแล้ว โปรดเปลี่ยนไปใช้โอเวอร์โหลดที่ใช้TextFieldStateเพื่อยกสถานะ (I6b841, b/556234973) - เพิ่ม API ทั่วไปเพื่อปิดใช้
WindowInsetsRulersทั่วโลก ก่อนที่จะสร้างรูท Compose แรก เลิกใช้งาน Android เท่านั้นComposeView.disableWindowInsetsRulers()เพื่อให้เป็นไปตามข้อกำหนดทั่วไปWindowInsetsRulers.disable()(Iadc8f) - เพิ่มฟังก์ชันส่วนขยาย
PolygonShape.transformedและPolygonShape.scaledToFitใน Compose Foundation สำหรับ การเปลี่ยนรูปทรงและการปรับรูปทรงหลายเหลี่ยม (I3f327) - Modifier เปลี่ยนชื่อฟังก์ชัน
LineHeight.Trim.isTrimLastLineBottom()เป็นLineHeight.Trim.trimsLastLineBottomและLineHeight.Trim.isTrimFirstLineTopเป็นLineHeight.Trim.trimsFirstLineTop(I02211) - เพิ่ม
boundsAssertionToleranceลงในPlatformTestConfigภายในComposeUiTestConfig.platformเพื่อให้การทดสอบกำหนดค่าความคลาดเคลื่อนของการยืนยันขอบเขตเริ่มต้นที่ระดับสภาพแวดล้อม/กฎได้ (I7819d, b/545673912) - ระบบเลิกใช้งานโอเวอร์โหลด
BasicTextFieldที่ยอมรับพารามิเตอร์value, onValueChangeแล้ว โปรดย้ายข้อมูลไปยังBasicTextFieldโอเวอร์โหลด ที่ใช้TextFieldStateเพื่อยกระดับสถานะ (I636bf, b/552879150) BasicTextField(value, onValueChange)VisualTransformationจะเลิกใช้งานด้วยเช่นกันเนื่องจากแสดงผ่านTextFieldนี้เท่านั้น การเปลี่ยนรูปแบบที่มีอยู่ควรย้ายข้อมูลไปยังOutputTransformation(I636bf, b/552879150)- เพิ่ม
LineHeightStyle.Mode.PerLineเพื่อคำนวณความสูงของบรรทัดแยกกันสำหรับแต่ละบรรทัด ซึ่งรองรับขนาดแบบอักษรที่แตกต่างกันในย่อหน้าเดียวกันโดยไม่ทับซ้อนกัน (I41738) - เราได้เลิกใช้งานการระบุ
LazyLayoutCacheWindowและLazyListPrefetchStrategyผ่านLazyListStateเพื่อให้ระบุLazyLayoutCacheWindowไปยังฟังก์ชันที่ประกอบกันได้แทน (I71f19) - เพิ่ม
Modifier.blur { ... }API เพื่อรองรับการเบลอแบบค่อยๆ ชัด (เช่น การไล่ระดับสีและ Shader ที่กำหนดเอง) (Ie6595, b/481685669) - เพิ่ม Modifier.
interactionBarrier() เพื่อบล็อกการโต้ตอบด้วยการแตะ โฟกัส และการช่วยเหลือพิเศษ (I7c1b7, b/347038246) - เพิ่ม
isCrossWindowBlurEnabledพร็อพเพอร์ตี้ส่วนขยายในWindowInfoเพื่อให้นักพัฒนาแอปค้นหาและสังเกตสถานะเบลอข้ามหน้าต่างทั่วทั้งระบบใน Android ได้ (If38e2, b/538405295) - เพิ่ม
LocalWindow CompositionLocalเพื่ออนุญาตให้ดึงข้อมูลออบเจ็กต์android.view.Windowปัจจุบัน ซึ่งช่วยให้ควบคุม API ระดับหน้าต่างจากภายใน Composables ได้ง่ายขึ้น (I4d4ff, b/221889664)
การแก้ไขข้อบกพร่อง
- เปิดใช้
isMinimalistLocalsEnabledโดยค่าเริ่มต้น (Ibb4eb, b/523295932) - เปิดใช้การเพิ่มประสิทธิภาพความสูงของบรรทัดเดียวโดยค่าเริ่มต้น ซึ่งอาจทำให้เมตริกข้อความบางอย่าง เช่น ความสูงหรือเส้นทางการเลือก (I5575a) มีความแตกต่างกันเล็กน้อย
compileSdkสำหรับไลบรารี Compose ที่อัปเดตเป็น 37.1 ซึ่งจะต้องอัปเดตcompileSdkสำหรับแอปและไลบรารีทั้งหมดที่ใช้ Compose (I05b0f)- แก้ไขปัญหาที่ไม่ได้ทำเครื่องหมายว่า
WindowInsetsRulersIME ในการแทรกเป็นการเคลื่อนไหวระหว่างการย้อนกลับแบบคาดการณ์ และแก้ไขปัญหาที่imePaddingไม่อัปเดตเมื่อสลับโฟกัสระหว่างช่องข้อความ (Id4562, b/537386261, b/539686000) - แก้ไขปัญหาที่ระบบไม่สนใจท่าทางสัมผัสการบีบนิ้วบนแทร็กแพดเมื่อ
ComposeViewโฮสต์อยู่ภายในViewGroupมาตรฐานของ Android (I80f79)
การมีส่วนร่วมภายนอก
- แก้ไขการรั่วไหลของกิจกรรมเมื่อมีการแยก
ComposeViewและ แนบอีกครั้งภายในเฟรมเดียว เช่น เมื่อมีการจัดลำดับใหม่ด้วยremoveViewและaddView(Ib5129, b/547675867)
เวอร์ชัน 1.13.0-alpha02
26 สิงหาคม 2026
androidx.compose.ui:ui-*:1.13.0-alpha02 เปิดตัวแล้ว เวอร์ชัน 1.13.0-alpha02 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มพร็อพเพอร์ตี้ความหมายใหม่
BackgroundColorสำหรับ Modifier.background (I7eec3, b/518049030) - ตอนนี้คุณสร้าง
Verticesจากอาร์เรย์ดั้งเดิมที่มีอยู่ได้แล้ว (Ifaba8, b/496412761) - ตอนนี้
VectorPainterจะแชร์แหล่งข้อมูลกราฟิกภายใน (ImageBitmap) เมื่อแสดงผลImageVectorเดียวกันใน Composable หลายรายการ ซึ่งจะช่วยลดการอัปโหลดพื้นผิวที่ซ้ำกันและการใช้งานหน่วยความจำ ทำให้ประสิทธิภาพดีขึ้นในสถานการณ์ต่างๆ เช่น รายการที่ใช้ไอคอนซ้ำ คุณปิดใช้การเพิ่มประสิทธิภาพนี้ได้ผ่านComposeUiFlags.isVectorDrawCacheSharingEnabled(I35639, b/331283180) - เพิ่มผู้ช่วย
requestFocusForChildInLocalBounds(Ib1a48)
เวอร์ชัน 1.13.0-alpha01
12 สิงหาคม 2569
androidx.compose.ui:ui-*:1.13.0-alpha01 เปิดตัวแล้ว เวอร์ชัน 1.13.0-alpha01 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มแฟล็กฟีเจอร์
isVelocityTrackerMinSampleSizeFixEnabled(Ic9b51, b/533444810, b/533775739, b/523705159) - นำคลาสคำอธิบายประกอบ
ExperimentalVelocityTrackerApiที่ล้าสมัยออกแล้ว (I6f9c6, b/483449576) - นำฟีเจอร์แฟล็ก isClearNestedScrollCoroutineScopeFixEnabled ออก (Iedfd7, b/506963276)
TextFieldStateตอนนี้จะบันทึกและกู้คืนข้อมูลรูปแบบข้อความแล้วAnnotatedString.Annotation.Saverเปิดให้ใช้งานแบบสาธารณะแล้วเพื่อให้บันทึกและกู้คืนออบเจ็กต์AnnotatedString.Annotationได้ (I8b533, b/135556699)- เปิดตัว
TestFailurePolicyและTestFailureHandlerในComposeTestConfigเพื่อรองรับตัวแฮนเดิลเหตุการณ์ที่กำหนดเองและบริบทของอาร์ติแฟกต์ที่ล้มเหลวในการทดสอบ UI ของ Compose (Ib1a85, b/414802953, b/291106656, b/430644575) - เพิ่ม
SemanticsProperties.alpha เพื่อแสดงค่าอัลฟ่าขององค์ประกอบย่อยและองค์ประกอบหลักแบบคอมโพสิตที่แก้ไขแล้วของโหนดเลย์เอาต์สำหรับการทดสอบ (Ifddb6, b/524035059) - เลิกใช้งานการโอเวอร์โหลด
createComposeRule,createAndroidComposeRuleและcreateEmptyComposeRuleในแพ็กเกจui-test-junit4v2 ที่ใช้พารามิเตอร์แต่ละรายการ ใช้โอเวอร์โหลดที่ยอมรับComposeUiTestConfigหรือโอเวอร์โหลดที่ไม่มีพารามิเตอร์ซึ่งใช้ComposeUiTestConfigเริ่มต้น โปรดทราบว่าComposeUiTestConfigเริ่มต้นจะตั้งค่าโหมดป้อนข้อมูลเริ่มต้นเป็นInputMode.Touchเมื่อเริ่มการทดสอบแต่ละครั้ง ซึ่งอาจทำให้การทดสอบที่มีอยู่ซึ่งคาดหวังโหมดแป้นพิมพ์ (InputMode.Keyboard) ล้มเหลว หากต้องการแก้ไขการทดสอบที่ได้รับผลกระทบ ให้ส่งComposeUiTestConfig(inputMode = InputMode.Keyboard)อย่างชัดเจนและนำตรรกะการตั้งค่าด้วยตนเองสำหรับโหมดอินพุตออก หรือคุณจะตั้งค่าAndroidComposeUiTestFlags.isInputModeSetForDeviceTests = falseเพื่อปิดใช้การตั้งค่าโหมดป้อนข้อมูลเริ่มต้นชั่วคราวเมื่อเริ่มการทดสอบแต่ละครั้ง และคงลักษณะการทำงานเดิมไว้ขณะย้ายข้อมูลการทดสอบก็ได้ เราจะนำ Flag นี้ออกในอนาคต ดังนั้นหากมีเพียงการทดสอบจำนวนเล็กน้อยที่ล้มเหลว เราขอแนะนำให้แก้ไขการทดสอบโดยตรงด้วยการเปลี่ยนการกำหนดค่าแทน (Idfb86, b/504195741) - ตอนนี้การเรียกใช้
createComposeRuleและcreateAndroidComposeRuleโดยไม่มีอาร์กิวเมนต์ (เช่นcreateComposeRule()หรือcreateAndroidComposeRule<MyActivity>()) จะใช้ComposeUiTestConfigเริ่มต้น ซึ่งจะตั้งค่าโหมดป้อนข้อมูลเริ่มต้นเป็นInputMode.Touchเมื่อเริ่มต้นการทดสอบแต่ละครั้ง เพื่อให้มั่นใจว่าอุปกรณ์อยู่ในสถานะที่สะอาดและป้องกันไม่ให้การเปลี่ยนแปลงโหมดป้อนข้อมูลก่อนหน้าส่งผลต่อการทดสอบอื่นๆ อย่างไรก็ตาม โหมดแตะเริ่มต้นใหม่นี้อาจทำให้การทดสอบที่มีอยู่ซึ่งคาดหวังโหมดแป้นพิมพ์ (InputMode.Keyboard) ไม่สำเร็จ หากต้องการแก้ไขการทดสอบที่ได้รับผลกระทบ ให้ส่งComposeUiTestConfig(inputMode = InputMode.Keyboard)อย่างชัดเจนและนำตรรกะการตั้งค่าด้วยตนเองสำหรับโหมดอินพุตออก หรือคุณจะตั้งค่าAndroidComposeUiTestFlags.isInputModeSetForDeviceTests = falseเพื่อปิดใช้การตั้งค่าโหมดป้อนข้อมูลเริ่มต้นชั่วคราวเมื่อเริ่มการทดสอบแต่ละครั้ง และคงลักษณะการทำงานเดิมไว้ขณะย้ายข้อมูลการทดสอบก็ได้ ระบบจะนำเครื่องหมายนี้ออกในอนาคต ดังนั้นหากมีเพียงการทดสอบจำนวนเล็กน้อยที่ล้มเหลว เราขอแนะนำให้แก้ไขการทดสอบโดยตรงด้วยการเปลี่ยนการกำหนดค่าแทน (Idc4dd, b/267253920, b/504195741) - ใส่คำอธิบายประกอบให้กับเมธอดพื้นฐานที่ว่างเปล่าซึ่งลบล้างได้ทั่วทั้ง Compose ด้วย
@EmptySuperเพื่อระบุว่าการใช้งานที่ลบล้างไม่ควรเรียกใช้ super (Id407b) - ตอนนี้
ExposedDropdownMenuเป็นฟังก์ชันส่วนขยายในExposedDropdownMenuBoxScopeแทนที่จะเป็นสมาชิก คุณอาจต้องอัปเดตรหัสด้วยการนำเข้าใหม่ (Ie8a65, b/356452026) - เพิ่มพร็อพเพอร์ตี้
blurBehindRadius,backgroundBlurRadius,scrimAlphaและwindowShapeลงในDialogPropertiesรวมถึงblurBehindRadiusและscrimAlphaลงในPopupPropertiesตอนนี้ นักพัฒนาแอปสามารถกำหนดค่าการเบลอพื้นหลัง การเบลอหน้าต่าง และความทึบของผ้าม่านได้โดยตรงในกล่องโต้ตอบและป๊อปอัป การตั้งค่าwindowShapeช่วยให้เบลอพื้นหลังของกล่องโต้ตอบการตัดคลิปให้เป็นมุมโค้งได้ (I5d437) - นำแฟล็กฟีเจอร์ออก - ตอนนี้ปุ่มเขียนจะคงโฟกัสการช่วยเหลือพิเศษไว้อย่างถูกต้องและไม่กะพริบเมื่อเปิดใช้ฟีเจอร์แตะเพื่อสำรวจ เนื่องจากระบบจะทำเครื่องหมายเหตุการณ์การวางเมาส์เหนือปุ่มว่าได้รับการจัดการอย่างถูกต้อง (Ib1c80)
- เพิ่มการโอเวอร์โหลดการผสานไปยัง
FontVariation.Settingsเพื่อผสานคอลเล็กชันการตั้งค่าอื่นๆ หรือลบล้างการตั้งค่าแบบอินไลน์ (I6340c) - แสดง
variationSettingsในอินเทอร์เฟซแบบอักษร โดยค่าเริ่มต้นจะเป็นFontVariation.Emptyใหม่ เพิ่มประสิทธิภาพตัวสร้างFontVariation.Settingsvararg เพื่อใช้asList()เพื่อหลีกเลี่ยงการจัดสรรการคัดลอกอาร์เรย์ (I9c22f) - อัปเดตพร็อพเพอร์ตี้
NestedScrollDispatcher.coroutineScopeเพื่อส่งคืนCoroutineScopeที่ยกเลิกอย่างปลอดภัยเมื่อไม่ได้แนบหรือแยกออก (I9b112, b/535290281) - เลิกใช้งานการโอเวอร์โหลด
runComposeUiTest,runAndroidComposeUiTestและAndroidComposeUiTestEnvironmentที่ใช้พารามิเตอร์effectContext,runTestContextและtestTimeoutแต่ละรายการ ใช้โอเวอร์โหลดที่ยอมรับComposeUiTestConfigหรือโอเวอร์โหลดที่ไม่มีพารามิเตอร์ซึ่งใช้ComposeUiTestConfigเริ่มต้น โปรดทราบว่าComposeUiTestConfigเริ่มต้นจะตั้งค่าโหมดป้อนข้อมูลเริ่มต้นเป็นInputMode.Touchเมื่อเริ่มการทดสอบแต่ละครั้ง ซึ่งอาจทำให้การทดสอบที่มีอยู่ซึ่งคาดหวังโหมดแป้นพิมพ์ (InputMode.Keyboard) ล้มเหลว หากต้องการแก้ไขการทดสอบที่ได้รับผลกระทบ ให้ส่งComposeUiTestConfig(inputMode = InputMode.Keyboard)อย่างชัดเจนและนำตรรกะการตั้งค่าด้วยตนเองสำหรับโหมดอินพุตออก หรือคุณจะตั้งค่าAndroidComposeUiTestFlags.isInputModeSetForDeviceTests = falseเพื่อปิดใช้การตั้งค่าโหมดป้อนข้อมูลเริ่มต้นชั่วคราวเมื่อเริ่มการทดสอบแต่ละครั้ง และคงลักษณะการทำงานเดิมไว้ขณะย้ายข้อมูลการทดสอบก็ได้ เราจะนำ Flag นี้ออกในอนาคต ดังนั้นหากมีเพียงการทดสอบจำนวนเล็กน้อยที่ล้มเหลว เราขอแนะนำให้แก้ไขการทดสอบโดยตรงด้วยการเปลี่ยนการกำหนดค่าแทน (Ia6d55, b/504195741) - การเรียกใช้
runComposeUiTest,runAndroidComposeUiTestและAndroidComposeUiTestEnvironmentที่มีเฉพาะ Lambda ต่อท้ายจะใช้ComposeUiTestConfigเริ่มต้น ซึ่งจะตั้งค่าโหมดป้อนข้อมูลเริ่มต้นเป็นInputMode.Touchเมื่อเริ่มการทดสอบแต่ละครั้ง เพื่อให้มั่นใจว่าอุปกรณ์อยู่ในสถานะที่สะอาดและป้องกันไม่ให้การเปลี่ยนแปลงโหมดป้อนข้อมูลก่อนหน้าส่งผลต่อการทดสอบอื่นๆ อย่างไรก็ตาม โหมดแตะเริ่มต้นใหม่นี้อาจทำให้การทดสอบที่มีอยู่ซึ่งคาดหวังโหมดแป้นพิมพ์ (InputMode.Keyboard) ไม่สำเร็จ หากต้องการแก้ไขการทดสอบที่ได้รับผลกระทบ ให้ส่งComposeUiTestConfig(inputMode = InputMode.Keyboard)อย่างชัดเจนและนำตรรกะการตั้งค่าด้วยตนเองสำหรับโหมดอินพุตออก หรือคุณจะตั้งค่าAndroidComposeUiTestFlags.isInputModeSetForDeviceTests = falseเพื่อปิดใช้การตั้งค่าโหมดป้อนข้อมูลเริ่มต้นชั่วคราวเมื่อเริ่มการทดสอบแต่ละครั้ง และคงลักษณะการทำงานเดิมไว้ขณะย้ายข้อมูลการทดสอบก็ได้ เราจะนำ Flag นี้ออกในอนาคต ดังนั้นหากมีเพียงการทดสอบจำนวนเล็กน้อยที่ล้มเหลว เราขอแนะนำให้แก้ไขการทดสอบโดยตรงด้วยการเปลี่ยนการกำหนดค่าแทน (I8c85d, b/504195741) - เพิ่ม @
CheckResultในSemanticsNodeInteraction.isDisplayed() และisNotDisplayed() เพื่อให้แน่ใจว่าค่าที่ส่งคืนได้รับการยืนยัน ซึ่งจะป้องกันไม่ให้การทดสอบล้มเหลวโดยไม่มีการแจ้งเตือนเมื่อนักพัฒนาแอปใช้ฟังก์ชันเหล่านี้แทน API การยืนยันโดยไม่ได้ตั้งใจ (I1b447, b/508178494) - Flag
AndroidComposeUiFlag.isDelayAndroidViewsHandlerCreationEnabledจะทำให้ViewGroupที่มีAndroidViews สร้างอินสแตนซ์เฉพาะเมื่อมีการเพิ่มAndroidViewเพื่อปรับปรุง ประสิทธิภาพของComposeViews ที่ไม่มีAndroidViews เมื่อปิดใช้ Flag ระบบจะสร้างอินสแตนซ์และแนบViewGroupที่มีอยู่เมื่อแนบComposeViewกับหน้าต่าง (I306a3, b/524283041) - เปิดตัว
coroutineScopeOrNull()ในNestedScrollDispatcherซึ่งเป็น API ทางเลือกในการเข้าถึงขอบเขตโครูทีนหลักของ Dispatcher (I18c0f) - เปลี่ยน
clearCallbacksเป็นrunAndClearCallbacksเพื่อให้แน่ใจว่าระบบจะดำเนินการล้างข้อมูลเสมอ (If4720, b/526700075) ComposeTestConfigเปลี่ยนชื่อเป็นComposeUiTestConfigและย้ายจากแพ็กเกจ v2 ไปยังแพ็กเกจหลักandroidx.compose.ui.testแล้ว (I1d2a1, b/504195741)- เพิ่ม
timeoutMillisพารามิเตอร์ (ค่าเริ่มต้นคือ 2,000 มิลลิวินาที) ลงในSemanticsNodeInteraction.captureToImage() เพื่อให้กำหนดค่าการหมดเวลาที่กำหนดเองได้เมื่อรอการส่งผ่านการวาดใหม่ (Ib7d62, b/249501063) - เพิ่มข้อมูลย้อนหลังในการเปลี่ยนแปลงอินพุตพอยน์เตอร์ทางอ้อม (Ie62d2, b/526961645)
- เพิ่มพร็อพเพอร์ตี้เชิงความหมาย
hintTextใหม่เพื่อแสดงข้อความคำแนะนำในช่องข้อความ ซึ่งช่วยปรับปรุงการรองรับการช่วยเหลือพิเศษโดยการแมปกับAccessibilityNodeInfohintText(Ib65da, b/448376876) CompositionLocalความละเอียดที่เพิ่มประสิทธิภาพโดย การแก้ไขแบบไดนามิกจากLocalOwnerและLocalAndroidComposeViewตามต้องการ ซึ่งสามารถ สลับได้โดยใช้ComposeUiFlags.isMinimalistLocalsEnabled(I2bf6d)- ตอนนี้
androidx.benchmarkมีminSdk24 รายการ (Ic2a85) - เพิ่มฟีเจอร์ทดลอง
isPropagateHideFromAccessibilityToMergingChildrenEnabledในAndroidComposeUiFlagsเพื่อควบคุมการส่งต่อhideFromAccessibilityไปยังองค์ประกอบย่อยที่ผสาน (Ie41ff, b/483506400) - เลื่อนระดับ
ComposeUiTestและ API การทดสอบที่เกี่ยวข้อง (รวมถึงตัวแปรComposeTestRuleและwaitUntil) จากเวอร์ชันทดลองเป็นเวอร์ชันเสถียร (Iaec77, b/471148519, b/485124363) - แก้ไขลำดับการนำทาง
TalkBackในกลุ่มการสำรวจที่ผสานรวม หากจำเป็น คุณสามารถเปลี่ยนกลับการเปลี่ยนแปลงนี้ได้โดยการปิดใช้AndroidComposeUiFlags.isTraversalGroupSortingEnabled(I5ae09, b/285043826) - นำ
IndirectPointerEventฟังก์ชันตัวช่วยเวอร์ชันทดลองที่ล้าสมัยออก (I05dee, b/499336763, b/501098299, b/501098376, b/513249467) - แทนที่ @AnimationToolingApi เวอร์ชันทดลองด้วย @RestrictTo API ที่มีการรับประกันการติดตามที่เข้มงวดกว่า (Ia4fd1, b/524317805)
- เพิ่มตัวเลือก
onDescendants()เพื่อค้นหาโหนดความหมายทั้งหมด ภายในซับทรีของโหนดที่กำหนด (Id6b9b, b/444588117) - API ตัวช่วย
waitUntilNodeCount,waitUntilAtLeastOneExists,waitUntilExactlyOneExistsและwaitUntilDoesNotExistที่เลิกใช้งานแล้วซึ่งไม่ยอมรับuseUnmergedTreeเพิ่มการโอเวอร์โหลดใหม่ที่ยอมรับuseUnmergedTreeเพื่อรองรับการรอโหนดในแผนผังความหมายที่ยังไม่ได้ผสาน (If675f, b/268432145) - เพิ่มพารามิเตอร์
toleranceลงในการยืนยันขนาดและตำแหน่งของSemanticsNodeInteraction(assertWidthIsEqualTo,assertHeightIsEqualTo,assertTouchWidthIsEqualTo,assertTouchHeightIsEqualTo,assertPositionInRootIsEqualTo,assertTopPositionInRootIsEqualTo,assertLeftPositionInRootIsEqualTo) เพื่อให้นักพัฒนาแอปกำหนดค่าเกณฑ์การเปรียบเทียบได้ ซึ่งจะช่วยปรับปรุงความแข็งแกร่งของการทดสอบในความหนาแน่นของหน้าจอที่แตกต่างกัน (I3a477, b/202752461) - ตอนนี้การทดสอบ Compose รองรับการซิงค์เทรดหลักแล้ว ตอนนี้คุณสามารถเรียกใช้ API การซิงค์ (เช่น
waitForIdle() และrunOnIdle()) และดำเนินการยืนยันหรือการดำเนินการของ Compose ได้อย่างปลอดภัยภายในโค้ดเรียกกลับของ UI/เทรดหลักโดยตรง (I0247a, b/498478569) - เปิดตัวรูปแบบการกำหนดค่าใหม่ (
ComposeTestConfig) สำหรับ Compose Test API เพื่อลดความซับซ้อนในการจัดการพารามิเตอร์และเพิ่มความสามารถในการปรับขนาด เพิ่มการรองรับการกำหนดค่าโหมดอินพุต (สัมผัส/แป้นพิมพ์) โดยตรงผ่านComposeTestConfigเพื่อให้มั่นใจว่าการตั้งค่าและการรีเซ็ตอัตโนมัติจะป้องกันไม่ให้การทดสอบไม่เสถียรเนื่องจากการรั่วไหลของสถานะ เพิ่มการโอเวอร์โหลดใหม่สำหรับrun*ComposeUiTestและcreate*ComposeRuleที่ยอมรับออบเจ็กต์ComposeTestConfig(Ia3da9, b/267253920, b/504195741) - แก้ไขข้อขัดข้องในตัวอย่าง Compose เมื่อใช้
PreviewParameterProviderกับพร็อพเพอร์ตี้ Media Query (Posture,PointerPrecisionฯลฯ) โดยเปลี่ยนการแสดงพื้นฐานจากStringเป็นInt(Ic8f92, b/489939558) - เพิ่มพารามิเตอร์
includeInputTextลงในhasTextExactlyและassertTextEqualsเพื่อเปิดใช้การจับคู่ที่ตรงกันในข้อความอินพุตดิบควบคู่ไปกับข้อความภาพ (Iee329, b/519026043)
การแก้ไขข้อบกพร่อง
- เพิ่มประสิทธิภาพ
SaveableStateRegistry.performSave()เพื่อป้องกันHashMapการจัดสรร ใช้ScatterMapภายใน (I7d510) - สีข้อความที่ป้อนใน AccessibilityNodeInfo.ExtraRenderingInfo สำหรับ Text Composables (I11c94, b/518049030)
- แก้ไขปัญหาที่การเข้าถึง
NestedScrollDispatcher.coroutineScopeOrNullระหว่างการแยกโหนดเลย์เอาต์ทำให้เกิดIllegalStateExceptionแทนที่จะส่งคืนnull(I55634, b/533444810) - การเริ่มต้นระดับไฟล์ที่เพิ่มประสิทธิภาพของ
compose:uiพร็อพเพอร์ตี้คลาสค่าระดับบนสุดโดยใช้ตัวรับแบบไดนามิก (I34184) - การเริ่มต้นออบเจ็กต์คู่ที่เพิ่มประสิทธิภาพของคลาสค่า
ui-unit(TextUnit) โดยใช้ตัวรับแบบไดนามิก (If4a99) - การเริ่มต้นออบเจ็กต์คู่ที่เพิ่มประสิทธิภาพของคลาส
ui-graphicsvalue (BlendMode,Colorฯลฯ) โดยใช้ตัวรับแบบไดนามิก (Iaa86a) - การเริ่มต้นออบเจ็กต์โฆษณาที่แสดงร่วมที่เพิ่มประสิทธิภาพของ
compose:ui:uiคลาสค่า (Key,CompositingStrategyฯลฯ) โดยใช้ตัวรับค่าแบบไดนามิก (I1a340) - การเริ่มต้นออบเจ็กต์คู่ที่เพิ่มประสิทธิภาพของ
compose:uiคลาสค่าข้อความ (TextAlign,TextOverflow,ImeActionฯลฯ) โดยใช้ตัวรับแบบไดนามิก (I776e0) - เพิ่มประสิทธิภาพการเริ่มต้นออบเจ็กต์คู่ของ
compose:uiคลาสเครื่องมือและค่าทดสอบ (AnimatedVisibilityState,MouseButton,ScrollWheel) โดยใช้ตัวรับแบบไดนามิก (I23e1b) - การเริ่มต้นออบเจ็กต์คู่ที่เพิ่มประสิทธิภาพของ
compose:uiคลาสค่าหน่วย (Dp,DpOffset,TextUnitTypeฯลฯ) โดยใช้ตัวรับแบบไดนามิก (If5eb5) - การเริ่มต้นออบเจ็กต์คู่ที่เพิ่มประสิทธิภาพของคลาสค่าเรขาคณิต
compose:ui(Offset,Size,CornerRadius) โดยใช้ ตัวรับแบบไดนามิก (I3b110) - การเริ่มต้นออบเจ็กต์คู่ที่เพิ่มประสิทธิภาพของ
compose:uiคลาสค่า (Role,FocusDirection,PointerEventTypeฯลฯ) โดยใช้ตัวรับแบบไดนามิก (Ie35dd) - จัดการ
BaselineShift.NoneและBaselineShift.UnspecifiedรวมถึงBaselineShift(0f)อย่างถูกต้องเพื่อหลีกเลี่ยงการส่งผ่านเลย์เอาต์ที่ช้าโดยไม่จำเป็น (I4350c) - แก้ไขปัญหาที่ค่า Dp ที่มีค่าลบศูนย์ (-0.0) ทำงานแตกต่างกันในการเปรียบเทียบหรือการตรวจสอบความเท่าเทียมจากการเปรียบเทียบหรือการตรวจสอบความเท่าเทียมของจุดลอยตัว (I7dbcf, b/525506543)
- ล้างข้อมูล API (Ia8066)
การมีส่วนร่วมภายนอก
- ตอนนี้
Alignment.topRatio,Trim.isTrimFirstLineTop()และTrim.isTrimLastLineBottom()เป็น API สาธารณะแล้ว (I84f62)
เวอร์ชัน 1.12
เวอร์ชัน 1.12.1
9 กันยายน 2569
androidx.compose.ui:ui-*:1.12.1 เปิดตัวแล้ว เวอร์ชัน 1.12.1 มีการคอมมิตเหล่านี้
เวอร์ชัน 1.12.0
12 สิงหาคม 2569
androidx.compose.ui:ui-*:1.12.0 เปิดตัวแล้ว เวอร์ชัน 1.12.0 มีการเปลี่ยนแปลงเหล่านี้
### แบบอักษรที่ปรับแต่งได้ที่ดาวน์โหลดได้และการตั้งค่าแบบไม่ต้องกำหนดค่า (ui-text-google-fonts)
• แบบอักษรที่ปรับแต่งได้และใบรับรอง GMS ที่ไม่ต้องกำหนดค่า
import androidx.compose.ui.text.font.FontFamily
import androidx.compose.ui.text.font.FontVariation
import androidx.compose.ui.text.googlefonts.Font
import androidx.compose.ui.text.googlefonts.GoogleFont
val fontFamily = FontFamily(
Font(
googleFont = GoogleFont("Google Sans Flex"),
// Automatically uses default GMS certificates!
variationSettings = FontVariation.Settings(
FontVariation.weight(900),
FontVariation.slant(0f)
)
)
)
──────
### รองรับช่วงสีแบบกว้าง (WCG) (ui-graphics)
การรักษา WCG: * พื้นที่สีที่ไม่ใช่ sRGB (เช่น AdobeRgb, DisplayP3) ที่ตั้งค่าไว้ใน Paint หรือ Shader จะยังคงอยู่ใน API 29 ขึ้นไป * จะกลับไปใช้ sRGB ใน API ระดับเก่ากว่า
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.Paint
import androidx.compose.ui.graphics.colorspace.ColorSpaces
val wcgColor = Color(0.9f, 0.5f, 0.1f, colorSpace = ColorSpaces.AdobeRgb)
val paint = Paint().apply {
color = wcgColor // Preserved on API 29+
}
──────
### การไล่ระดับสีแบบตาข่ายที่เร่งด้วยฮาร์ดแวร์ (ui)
• Painter API: Modifier.meshGradient ถูกแทนที่ด้วย MeshGradientPainter ซึ่งใช้ Canvas.drawMesh ที่เร่งด้วยฮาร์ดแวร์
• การใช้งาน: ใช้ MeshGradientPainter ภายใน Modifier.paint
import androidx.compose.ui.draw.paint
import androidx.compose.ui.geometry.Offset
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.MeshGradientPainter
val meshPainter = remember {
MeshGradientPainter(rows = 1, columns = 1, hasBicubicColor = true) {
setVertex(0, 0, Offset(0f, 0f), Color.Red)
setVertex(0, 1, Offset(1f, 0f), Color.Blue)
setVertex(1, 0, Offset(0f, 1f), Color.Green)
setVertex(1, 1, Offset(1f, 1f), Color.Yellow)
}
}
Box(Modifier.fillMaxSize().paint(meshPainter))
──────
### 4. การผสานรวม Credential Manager (UI)
ป้อนข้อความอัตโนมัติ: * เพิ่มพร็อพเพอร์ตี้ความหมายของ CredentialRequest ระดับต่ำสำหรับช่องข้อความ API 34 ขึ้นไป
import androidx.compose.ui.semantics.credentialRequest
import androidx.compose.ui.semantics.CredentialRequestData
import androidx.compose.ui.semantics.semantics
BasicTextField(
value = value,
onValueChange = onValueChange,
modifier = Modifier.semantics {
if (Build.VERSION.SDK_INT >= 34) {
credentialRequest = CredentialRequestData(request, callback)
}
}
)
──────
### 5. เสียงการโต้ตอบอัตโนมัติ (ui)
เสียงคลิกและเสียงนำทาง: * รองรับเสียงคลิกและเสียงนำทางที่ใช้ได้กับ Android โดยใช้การกำหนดค่าเสียงของแพลตฟอร์ม * เลือกไม่ใช้: ใช้ Wrapper SoundEffectOnInteraction เพื่อปิดใช้เสียงสำหรับ Subtree
import androidx.compose.ui.platform.SoundEffectOnInteraction
// Opt-out of sounds for everything inside
SoundEffectOnInteraction(enabled = false) {
Button(onClick = {}) {
Text("Silent Button")
}
}
### 6. การผสานรวม Espresso สำหรับ UI แบบไฮบริด (ui-test)
กำหนดขอบเขตการโต้ตอบของ Compose กับลำดับชั้นของ View ที่ตรงกันโดย ViewInteraction ของ Espresso
import androidx.compose.ui.test.junit4.onRootWithViewInteraction
import androidx.test.espresso.Espresso.onView
// Match RecyclerView row using Espresso
val specificRow = onView(allOf(withId(R.id.row), hasDescendant(withText("Item #5"))))
// Scope Compose interactions to that row
composeTestRule.onRootWithViewInteraction(specificRow)
.onNodeWithTag("fav_icon")
.performClick()
เวอร์ชัน 1.12.0-rc01
29 กรกฎาคม 2026
androidx.compose.ui:ui-*:1.12.0-rc01 เปิดตัวแล้ว เวอร์ชัน 1.12.0-rc01 มีการคอมมิตเหล่านี้
เวอร์ชัน 1.12.0-beta02
1 กรกฎาคม 2026
androidx.compose.ui:ui-*:1.12.0-beta02 เปิดตัวแล้ว เวอร์ชัน 1.12.0-beta02 มีการเปลี่ยนแปลงเหล่านี้
เวอร์ชัน 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
- เพิ่มพร็อพเพอร์ตี้
credentialRequestSemantics ใหม่และตัวช่วย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ถูกนำออกแล้ว โปรดใช้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- เพิ่มฟีเจอร์
isClearNestedScrollCoroutineScopeFixEnabledเพื่อควบคุมการแก้ไข (Ibd394, b/505343254) DeferredTargetAnimationไม่ใช่ฟีเจอร์ทดลองอีกต่อไป โปรดนำการเลือกใช้ฟีเจอร์ออก (I1e4ae, b/500030165)- Enum ใหม่เพื่อรองรับทริกเกอร์ในเครื่องมือ UI (I6e198, b/478807872)
- ระบบอนุญาตให้สร้าง
ComposeViewContextโดยไม่ต้องแนบมุมมองอ้างอิง แต่ยังคงกำหนดให้ต้องแนบมุมมองอ้างอิงก่อนที่จะเรียกใช้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เพื่อหลีกเลี่ยงการเปิดเผยประเภทแพลตฟอร์มในcommonMainแหล่งที่มาผ่านtypealias(Ibc611)
เวอร์ชัน 1.12.0-alpha02
6 พฤษภาคม 2026
androidx.compose.ui:ui-*:1.12.0-alpha02 เปิดตัวแล้ว เวอร์ชัน 1.12.0-alpha02 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- ขอแนะนำ
MeshGradientModifier (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ใน Semantics จะป้องกันไม่ให้ Compose ส่งเหตุการณ์การป้อนข้อความอัตโนมัติ ซึ่งจะช่วยป้องกันค่าใช้จ่ายในการเริ่มต้นที่เกี่ยวข้องกับการขอใช้บริการป้อนข้อความอัตโนมัติ (I8fbda, b/487947860)
เวอร์ชัน 1.11
เวอร์ชัน 1.11.4
1 กรกฎาคม 2026
androidx.compose.ui:ui-*:1.11.4 เปิดตัวแล้ว เวอร์ชัน 1.11.4 มีการคอมมิตเหล่านี้
เวอร์ชัน 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เพื่อหลีกเลี่ยงการเปิดเผยประเภทแพลตฟอร์มในcommonMainแหล่งที่มาผ่าน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 v2 เพื่อให้ควบคุมการดำเนินการของโครูทีนได้ดียิ่งขึ้น (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 หลักและ 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
- นำฟีเจอร์แฟล็ก
isSemanticAutofillEnabledUI ออกเนื่องจากระบบได้เปิดใช้การป้อนข้อความอัตโนมัติเชิงความหมายโดยค่าเริ่มต้นแล้ว (I849cf, b/455587954) - เปลี่ยนวิธีที่เมธอดที่สามารถข้ามผ่านได้ find
findNearestAncestorค้นหาโหนดที่เกี่ยวข้อง ตอนนี้ผู้แทนประเภทเดียวกัน (NodeKind) จะปรากฏในระหว่างการข้าม การเปลี่ยนแปลงนี้ได้รับการป้องกันโดยฟีเจอร์แฟล็กisTraversableDelegatesFixEnabled(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)
- แก้ไขปัญหาเกี่ยวกับการเปลี่ยนโฟกัสไปยังมุมมองอื่นๆ ในลำดับชั้น (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
- เราได้เลื่อนระดับตัวแปรของกฎการทดสอบ Compose ที่ยอมรับพารามิเตอร์
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ไปยังออบเจ็กต์เสริม ให้ใช้เมธอดใหม่ของ Factory แทนการเรียกFillableData(value)ซึ่งก็คือFillableData.createFrom(value)(I2e200, b/441719650) - เปิดตัว
BeyondBoundsLayoutModifierNodeโหนดตัวแก้ไขใหม่เพื่อดำเนินการนอกเลย์เอาต์ที่ผูกไว้สำหรับการค้นหาโฟกัส (I39be1, b/416133658) FocusTargetModifierNode.requestFocus()จะส่งโฟกัสไปยังองค์ประกอบย่อยรายการใดรายการหนึ่งเมื่อโฟกัสด้วยตัวเองไม่ได้ ตอนนี้ลักษณะการทำงานนี้สอดคล้องกับFocusRequester.requestFocus()และFocusRequesterModifierNode.requestFocus()แล้ว หากไม่ต้องการลักษณะการทำงานนี้ ให้ตั้งค่าสถานะComposeUiFlags.isRequestFocusOnNonFocusableFocusTargetEnabledเป็นเท็จในแอป (Icca5c, b/436863604)- ระบุขนาดหน้าต่างตาม DP ใน
WindowInfo(I9322b, b/424442112) - นำแฟล็ก
isNestedScrollDispatcherNodeFixEnabledออกแล้ว (If451a) - เพิ่มการรองรับค่าวันที่ในการป้อนข้อความอัตโนมัติใน
FillableDataAPIval dateMillisValue: Longเพิ่มเพื่อดึงข้อมูลวันที่ และเพิ่มตัวสร้างFillableData(dateMillisValue: Long)ที่เกี่ยวข้องเพื่อสร้างอินสแตนซ์FillableDataที่อิงตามวันที่ (Id072a)
การมีส่วนร่วมภายนอก
- เราได้เพิ่มออบเจ็กต์
UiModesเพื่อประกาศค่าคงที่ที่ใช้สำหรับคำอธิบายประกอบUiMode(I03cb8)
เวอร์ชัน 1.10.0-alpha02
27 สิงหาคม 2025
androidx.compose.ui:ui-*:1.10.0-alpha02 เปิดตัวแล้ว เวอร์ชัน 1.10.0-alpha02 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- อัปเดต
FillableDataเพื่อรองรับคอมโพเนนต์ที่ไม่ใช่ข้อความ เช่น สวิตช์และลิสต์ รวมถึงค่าบูลีนและค่าจำนวนเต็มภายในFillableDataและตัวสร้างจากโรงงานเพื่อสร้างอินสแตนซ์บูลีนและลิสต์ของFillableDataที่แปลเป็นAutofillValueของแพลตฟอร์ม ระบบจะเพิ่มพร็อพเพอร์ตี้และการดำเนินการเชิงความหมายที่เกี่ยวข้องด้วย (Ia8105, Icc5cf) - ในโหมดที่ไม่ใช่แบบสัมผัส ระบบมุมมองจะกำหนดโฟกัสเริ่มต้น/ค่าเริ่มต้นให้กับรายการที่โฟกัสได้รายการใดรายการหนึ่งบนหน้าจอ ฟีเจอร์นี้จะเพิ่มลงใน Compose และเปิดใช้ได้โดยการเปิดใช้
ComposeUiFlags.isInitialFocusOnFocusableAvailable(Ib9178) - นำแฟล็ก
isPointerInteropFilterDispatchingFixEnabledออกแล้ว (Iaa589) - นำแฟล็ก
isNestedScrollInteropPostFlingFixEnabledออกแล้ว (I2a756) - เพิ่มตัวเทียบความหมายของ
isHiddenFromAccessibility()และisInHiddenAccessibilitySubtree()(I9f5a1) - เพิ่ม
runCurrent()ลงในMainTestClockเพื่อเรียกใช้งานที่ครบกำหนดทั้งหมดในตัวกำหนดเวลาระดับล่าง ซึ่งมีไว้เพื่อรองรับการทดสอบในStandardTestDispatcherโดยจะเพิ่มงานไปยังตัวกำหนดตารางเวลาแทนที่จะดำเนินการทันทีเมื่อมีเวลาหน่วง 0 มิลลิวินาที คุณตั้งค่าการทดสอบให้ใช้StandardTestDispatcherได้โดยสร้างComposeTestRuleและส่งStandardTestDispatcherไปยัง โดยค่าเริ่มต้น การทดสอบจะทำงานในUnconfinedTestDispatcherในกรณีนี้จึงไม่จำเป็นต้องเรียกใช้runCurrent() - เพิ่มการรองรับการเรียกใช้การทดสอบใน
StandardTestDispatcherในอดีต เฟรมเวิร์กการทดสอบได้รับการตั้งค่า (และยังคงตั้งค่า) โดยใช้UnconfinedTestDispatcherซึ่งแตกต่างจากสภาพแวดล้อมฮาร์ดแวร์และซอฟต์แวร์ในรายละเอียดเล็กๆ น้อยๆ ตอนนี้คุณสามารถเปลี่ยนการตั้งค่านี้ได้โดยการสร้างStandardTestDispatcherของคุณเองและเพิ่มลงในeffectContextเมื่อสร้างComposeTestRule(หรือเมื่อเรียกใช้ runComposeUiTest) (I334d0, b/254115946) - อัปเดตรหัสสำหรับการสร้างโครงสร้างแบบต้นไม้ของโหนดจาก
SlotTree(I997d3)
การแก้ไขข้อบกพร่อง
- ตอนนี้ Compose UI จะติดตั้ง
RetainScopesที่รับรู้ถึงวงจรของกิจกรรมใน 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และฟีเจอร์ค่าสถานะเพื่อควบคุมลักษณะการทำงานใหม่ที่เรียกว่า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 เสมอ การตั้งค่า FlagComposeUiUnitFlags.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ฟังก์ชัน Factory สำหรับประกาศพร็อพเพอร์ตี้ความหมายเฉพาะของ 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) แล้ว - เพิ่ม
LocalResourcescomposition local เพื่อค้นหาทรัพยากร การเรียกใช้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)
การแก้ไขข้อบกพร่อง
- แก้ไขการเรียกใช้ของตัวสังเกตการณ์ที่จดจำไว้ในคอมโพสิทที่หยุดชั่วคราวได้เพื่อหลีกเลี่ยงการเรียกใช้ที่จดจำ/ลืมใน apply เดียวกัน (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) - เพิ่มการรองรับการติดตามสแต็กของ Compose ใน
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 และยังไม่ได้ปรับให้เสถียร รวมถึงเห็นว่าการใช้งานไม่เป็นที่ต้องการ ในอนาคต เราอาจมีคอมโพเนนต์ที่แก้ปัญหา Use Case ที่คอมโพเนนต์นี้มีไว้แก้ปัญหาFlowRowและFlowColumnมีการโอเวอร์โหลดทดลองที่เปิดตัวในเวอร์ชัน 1.7 ซึ่งมีพารามิเตอร์overflowเราเลิกใช้งานพารามิเตอร์นี้แล้ว และคุณสามารถใช้การโอเวอร์โหลดที่ไม่มีพารามิเตอร์นี้แทนได้ ลักษณะการทำงาน "overflow" เริ่มต้นสำหรับการโอเวอร์โหลดเหล่านี้จะเป็น "Clip" เหมือนกับที่เคยเป็นมาตั้งแต่เปิดตัว- กรณีการใช้งานจำนวนมากสำหรับ
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 สำหรับสีแบบ Wide Gamut และ HDR เมื่อเรียกใช้ใน Android Q ขึ้นไป (Icd8be, b/379135036)
- ตอนนี้แบบอักษรของทรัพยากรที่โหลดไม่สำเร็จจะเปลี่ยนไปใช้แบบอักษรเริ่มต้นโดยไม่มีการแจ้งเตือนแทนที่จะแสดงข้อยกเว้นในเมตริกตามลักษณะการทำงานก่อนหน้า (Ib6a49)
- แก้ไขปัญหาโฟกัสหายไปเมื่อ
AndroidViewถูกแยกออกและติดใหม่ (I53446) - ยอมรับ
requestFocus()จากการดำเนินการเลย์เอาต์ที่อยู่นอกขอบเขต (Ia8461)
การมีส่วนร่วมภายนอก
- เพิ่ม
BringIntoViewResponderModifierNodeลงใน UI ซึ่งเป็นวิธีใหม่ในการใช้ฟังก์ชันการทำงานของ Bring Into View รวมถึงอนุญาตให้ใช้ในระดับแพลตฟอร์ม (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 นี้ช่วยแก้ปัญหา Use Case หลายอย่างที่ตัวแก้ไขonGloballyPositionedที่มีอยู่ทำได้ แต่มีค่าใช้จ่ายน้อยกว่ามาก และ API มาพร้อมกับเครื่องมือในการดีบาวซ์และควบคุมการเรียกกลับตามที่ Use Case ต้องการ (Id28c7, b/372765423, b/372757007, b/372994338) - ขยายเครื่องมือจัดการการป้อนข้อความอัตโนมัติให้รวม API ของ
commit()และcancel()ที่ช่วยให้ผู้ใช้บันทึกข้อมูลเข้าสู่ระบบที่ป้อนใหม่ได้ (I2da00) - เปิดตัว
AutofillManagerอินเทอร์เฟซใหม่ที่ใช้ปรับแต่งเส้นทางการป้อนข้อความอัตโนมัติของผู้ใช้ได้ และisSemanticAutofillEnabledฟีเจอร์ค่าสถานะเพื่อเปิดใช้การป้อนข้อความอัตโนมัติเวอร์ชันใหม่นี้ (I9d484) - เพิ่ม
Modifier.onRectChangedAPI ซึ่งเป็น API ที่อนุญาตให้สมัครรับข้อมูลตำแหน่งและขนาดที่สัมพันธ์กับรูท/หน้าต่าง/หน้าจอของLayoutNodeAPI นี้แก้ปัญหา Use Case หลายอย่างที่ตัวแก้ไขonGloballyPositionedที่มีอยู่ทำได้ แต่ API นี้มีค่าใช้จ่ายที่น้อยกว่ามาก และมีสิ่งอำนวยความสะดวกในการดีบาวซ์และการควบคุมการเรียกกลับตามที่ Use Case ต้องการ (I3c8fa) - เพิ่มพร็อพเพอร์ตี้เชิงความหมายและประเภทข้อมูลเพื่อรองรับการป้อนข้อความอัตโนมัติเพิ่มเติม (I52c7d)
- ตอนนี้เมธอดทั้งหมดในเครื่องมือสร้าง
AnnotatedStringไม่ใช่เวอร์ชันทดลองแล้ว (Ia89c8, b/261561823)
การแก้ไขข้อบกพร่อง
- ตอนนี้มุมมองที่ฝังใน Compose สามารถรับเหตุการณ์หมุนได้หากโฟกัสอยู่ (I4d53a, b/320510084)
- แก้ไขปัญหาที่ทรัพยากรประเภทต่างๆ จะไม่อัปเดตเมื่อมีการเปลี่ยนแปลงการกำหนดค่า (Ia9b99, b/352336694)
- แก้ไขปัญหาที่ทำให้
TextFieldทำงานไม่ถูกต้องเมื่อใช้แป้นพิมพ์ภาษาญี่ปุ่น POBox ในอุปกรณ์ Sony รุ่นเก่าบางรุ่น (Ia9b99, b/373743376) - แก้ไขปัญหาเกี่ยวกับกล่องโต้ตอบที่แสดงที่ด้านล่างของหน้าจอแทนที่จะอยู่ตรงกลาง (Ia2ec, b/373093006)
- การกำหนดเป้าหมาย API 35 ขึ้นไปจะไม่บังคับให้กล่องโต้ตอบมี
decorFitsSystemWindowsตั้งค่าเป็น false อีกต่อไป (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 บางเวอร์ชัน
- แก้ไขปัญหาที่ระบบจะใช้คลิปเปล่าเมื่อมีการระบุคลิปโครงร่างทั่วไปใน 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วิธีใหม่ที่ใช้กันโดยทั่วไป (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ไปยัง 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ไม่ได้ประกาศ inlineContent ของTalkBack(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 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาที่การระบุคลิป Outline ทั่วไปจะทําให้ขอบเขตคลิปว่างใน 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 composable แทน (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 and 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)variant และ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 พร้อมกับการอัปเดต Owner,DelegateableNodeและการใช้งาน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เพื่อให้มีทรัพยากร Dependency ของกราฟิก รวมถึงการสร้างและการจัดการอินสแตนซ์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) - เพิ่มพร็อพเพอร์ตี้ความหมาย
maxTextLengthที่ควรตั้งค่าในช่องข้อความซึ่งกรองจำนวนอักขระสูงสุดที่อนุญาต (I24d9f, b/170648072) - เลิกใช้งาน Wrapper
Modifier.inspectableแล้ว API นี้จะสร้างการลบล้างตัวแก้ไขมากกว่าที่จำเป็น เราจึงไม่แนะนำให้ใช้ API นี้ เราขอแนะนำให้นักพัฒนาแอปใช้เมธอดinspectableProperties()ในModifierNodeElementหากต้องการแสดงพร็อพเพอร์ตี้ตัวแก้ไขต่อเครื่องมือ (Ib3236) - ตัวสร้างใหม่สำหรับ
PopupPropertiesซึ่งช่วยให้ควบคุมแฟล็กWindowManager.LayoutParamsได้อย่างเต็มที่ (Ibb33e, b/312485503) - เปิดตัว
DelegatableNode.requireLayoutCoordinates()เพื่อเป็นวิธีรับModifier.NodeปัจจุบันของLayoutCoordinatesโดยไม่ต้องลบล้างonPlacedและจัดเก็บพิกัดในพร็อพเพอร์ตี้ด้วยตนเอง (Ia8657) - เปิดตัว
DelegatableNode.currentLayoutCoordinatesเพื่อเป็นวิธีรับModifier.NodeปัจจุบันของLayoutCoordinatesโดยไม่ต้องลบล้าง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) - เพิ่มวิธีเปรียบเทียบเฉพาะคำอธิบายประกอบของ
AnnotatedStringsรายการ (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) PopupPropertiesเครื่องมือสร้างที่ใช้พารามิเตอร์usePlatformDefaultWidthไม่ใช่ฟีเจอร์ทดลองอีกต่อไป (I8f8d2)- เพิ่มโอเวอร์โหลดของ
ComposeTestRule.waitUntilที่ใช้คำอธิบายสตริงของเงื่อนไขที่จะรวมไว้ในข้อความหมดเวลา (I9413e) - API ใหม่ของ Semantics
unset()เพื่อนำพร็อพเพอร์ตี้ Semantics ที่เพิ่มในเชนตัวแก้ไขเดียวกันออก พร็อพเพอร์ตี้ความหมายใหม่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 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขความไม่สอดคล้องกันในการปรับขนาดแบบอักษรเมื่อการปรับขนาดแบบอักษรน้อยกว่าตารางที่กำหนดต่ำสุด ในกรณีนี้ เราจะประมาณค่าระหว่างสเกลเชิงเส้น 1x กับตารางที่กำหนดต่ำสุด เพื่อให้ขนาดแบบอักษรเพิ่มขึ้นอย่างต่อเนื่องเมื่อสเกลเพิ่มขึ้น (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ตอนนี้ใช้พารามิเตอร์สำหรับtransferData, ขนาดการตกแต่ง และ Lambda การตกแต่งแบบลากDrawScopeDragAndDropTargetมีเมธอดสำหรับเหตุการณ์การลากและวางที่เฉพาะเจาะจงแทนที่จะเป็นเมธอดนามธรรมเดียวonDragAndDropEventในฟังก์ชัน Factory สำหรับDragAndDropModifierNodeได้เปลี่ยนชื่อเป็นonDragAndDropStartเพื่อสื่อสารให้ทราบว่าDragAndDropTargetที่ระบุใช้ได้กับเซสชันการลากและวางที่กำหนดเท่านั้นระบบนำ
DragAndDropEventTypeออกแล้ว (I645b1)เปลี่ยนชื่อ
PlatformTextInputModifierNode.runTextInputSessionเป็นestablishTextInputSessionแล้ว (I03cd0)ปรับปรุงชื่อ API ของโหนดที่สามารถข้ามได้เพื่อให้เข้าใจได้ง่ายขึ้น (Ia4474)
แทนที่
OriginalTextด้วยTextSubstitution(Ifa5a8)เปลี่ยนชื่อ
PlatformTextInputModifierNode.textInputSessionเป็นrunTextInputSessionแล้ว (Ie9c6b)องค์ประกอบย่อยของ
SubcomposeLayout(และเลย์เอาต์ เช่นLazyColumnที่อิงตามองค์ประกอบย่อยนี้) ซึ่งเก็บไว้เพื่อนำกลับมาใช้ใหม่ในอนาคตจะถือว่าปิดใช้งานแล้ว เราได้เปิดตัวassertIsDeactivated()test API ใหม่เพื่อทดสอบโหนดดังกล่าว ส่วน API ทดสอบอื่นๆ จะกรองโหนดที่ปิดใช้งานออกโดยค่าเริ่มต้น (I2ef84, b/187188981)นำ
FocusDirection.InและFocusDirection.Outออกแล้ว ให้ใช้FocusDirection.EnterและFocusDirection.Exitแทน (I2f660)ตอนนี้ API ของ Material
SwipeToReveal(สำหรับการ์ดและชิป) ใช้ API ที่อิงตามช่อง (ตามที่ Compose แนะนำ) แทนอินสแตนซ์ที่อิงตามคลาสข้อมูลเพื่อสร้างช่องเหล่านั้น นี่เป็นการเปลี่ยนแปลงที่ทำให้เกิดข้อขัดข้อง โปรดดูการสาธิตและโค้ดตัวอย่างเพื่อดูตัวอย่างวิธีใช้ API ใหม่ (Ia8943)เลิกใช้งานตัวสร้าง
FontStyle(int)แล้ว โปรดใช้FontStyle.NormalหรือFontStyle.Italicแทน (I66610)เปลี่ยนชื่ออินเทอร์เฟซ
FontScalableเป็นFontScaling(Ie804a)
การแก้ไขข้อบกพร่อง
SoftwareKeyboardController.show()จะไม่แสดงแป้นพิมพ์เสมือนอีกต่อไปหากไม่มีการโฟกัสโปรแกรมแก้ไขข้อความ (I2165a, b/301477279)- ตอนนี้ระบบจะละเว้นเหตุการณ์คีย์ฮาร์ดแวร์ขึ้นสำหรับคีย์ที่ยังไม่ได้รับเหตุการณ์ลงใน Compose View เดียวกัน (Ib37b4, b/305518328)
- เพิ่มการรองรับโปรแกรมแสดงผลสำหรับการไล่ระดับสีแบบกวาดใน
ArcLine(I4d5bb) - ใช้ equals และ hashcode สำหรับ
PageSize.Fixed(Ie3ede, b/300134276) - แก้ไขปัญหาความเข้ากันได้ของไบนารีกับการเปลี่ยนแปลง Window Inset (Iee695)
- นำเลเยอร์หลักของ Material ออกสำหรับชิป/ปุ่ม Material3 เนื่องจาก Microbenchmark แสดงให้เห็นว่าไม่มีเลเยอร์ดังกล่าวแล้วประสิทธิภาพดีขึ้น (I55555)
TestDispatcherที่ส่งเป็นeffectContextไปยัง Compose Tests จะใช้ในการสร้างการทดสอบและกรอบนาฬิกา (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) - เพิ่มโอเวอร์โหลด
GoogleFontสำหรับการอ่าน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) - เพิ่ม
dragAndDropSourceModifier สำหรับเริ่มเซสชันการลากและวาง และdragAndDropTargetModifier สำหรับรับจากเซสชันการลากและวาง (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)
การแก้ไขข้อบกพร่อง
- ตอนนี้ระบบจะเลื่อนการเรียกใช้ครั้งแรกของ
AndroidViewupdatecallback จนกว่าจะมีการแนบมุมมอง แทนที่จะเรียกใช้เมื่อมีการใช้การจัดองค์ประกอบที่แนะนำAndroidViewซึ่งจะแก้ไขข้อบกพร่องที่การเรียกกลับupdateจะไม่ถือว่าไม่ถูกต้องหากเอฟเฟกต์เปลี่ยนสถานะที่อ่านทันที (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) - อัปเดต API ของ
DrawScopeเพื่อเพิ่มความสามารถในการกำหนดเป้าหมายใหม่ในการแสดงผลไปยัง 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)
- แก้ไขปัญหาเกี่ยวกับ Composable ของ Dialog และ Popup ที่อาจทําให้หน้าต่างย่อยไม่ปรับขนาดตามที่คาดไว้เมื่อ
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)เครื่องมือสร้าง จะได้รับการเลื่อนขั้นเป็น 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)
- เพิ่มประสิทธิภาพการใช้งานหน่วยความจำเวกเตอร์และการแสดงเฟรมแรก (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 จะทำงานแบบเลซีและใช้ Modifier.Node เพื่อประสิทธิภาพที่ดีขึ้น (อ่านเกี่ยวกับการเปลี่ยนแปลงลักษณะการทำงานเล็กน้อย) (15dab9)
- เปลี่ยน API ที่เป็นเวอร์ชันทดลองให้เป็นเวอร์ชันที่เสถียรด้วยเหตุการณ์สําคัญ (I9c7d8, b/261566839, b/261567368)
- เปลี่ยน 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 ใหม่ที่อนุญาตให้ปักหมุดรายการในลิสต์แบบเลซี่ เพื่อไม่ให้ระบบทิ้งรายการเมื่อเลื่อนออกนอกขอบเขต เช่น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เพื่อขยายwaitUntilAPI ให้ยอมรับตัวจับคู่และจำนวนโหนดใดก็ได้ ดูเอกสารประกอบเพิ่มเติมได้ที่ComposeTestRule(Ifa1b9, b/226934294) - เปลี่ยนชื่อ
Font.MaximumAsyncTimeoutเป็นFont.MaximumAsyncTimeoutMillis(I07af5) - นำ
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) - นำตัวตั้งค่าสาธารณะที่เปิดเผยโดยไม่ตั้งใจใน
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 ใหม่ที่อนุญาตให้ปักหมุดรายการในลิสต์แบบเลซี่ เพื่อไม่ให้ระบบทิ้งรายการเมื่อเลื่อนออกนอกขอบเขต เช่น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 แบบทดลองก่อนหน้านี้หลายรายการให้เป็นแบบเสถียร
- ตอนนี้ 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โดยตรงเท่านั้น และมีตรรกะภายนอก Callback ที่ส่งไปยังฟังก์ชันเหล่านั้น ซึ่งอาจต้องย้ายไปไว้ภายใน Callback ดูตัวอย่างการเปลี่ยนแปลงการทดสอบภาพเคลื่อนไหวใน 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 และ Material3,TextFieldและ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 เมื่อ Activity บันทึกสถานะของ Compose View (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หนึ่งไปยังอีก หนึ่ง (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 คือ Sealed Interface Paragraph ไม่มี 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 และตัวแก้ไขที่ทำงานในDrawScopeเช่นCanvasและdrawBehind(I16a62, b/190787898) - เปิดตัว API ทดลองใหม่ที่ชื่อ
TextMeasurerซึ่งช่วยให้คำนวณเลย์เอาต์ข้อความที่กำหนดเองได้ ซึ่งจะสร้างผลลัพธ์ที่เหมือนกับBasicTextโดยไม่ขึ้นอยู่กับรันไทม์ของ Compose (I17101) - เพิ่ม
mapTreeไปยังSlotTree.ktซึ่งจะช่วยให้เครื่องมือตรวจสอบSlotTreeได้โดยไม่ต้องทำสำเนาในหน่วยความจำก่อนเหมือนกับ asTree สำหรับเครื่องมือตรวจสอบเลย์เอาต์ การดำเนินการนี้จะช่วยปรับปรุงประสิทธิภาพได้ประมาณ 10 เท่า (I5e113) - เปลี่ยนการแสดงตัวอย่างการเขียนให้จัดเก็บไว้ในไฟล์เอาต์พุตไบนารี เพื่อให้นักพัฒนาแอปเขียนและนำ
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 มีคอมมิตต่อไปนี้
การแก้ไขข้อบกพร่อง
- แก้ไข NullPointerException ในเครื่องมือตรวจสอบ (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 ใหม่สำหรับ
- ส่วนที่เว้นไว้ในหน้าต่าง
- Primitive หลักสำหรับการเคลื่อนไหวที่ขับเคลื่อนด้วยท่าทางสัมผัส ภาพเคลื่อนไหวแบบไม่สิ้นสุด และภาพเคลื่อนไหวของเลย์เอาต์
- ความสามารถของ
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ลงใน Velocity Tracker เราจะพิจารณาเดลต้าแทนตำแหน่ง ซึ่งจะรับประกันว่าระบบจะคำนวณความเร็วได้อย่างถูกต้องในทุกกรณี แม้ว่าองค์ประกอบเป้าหมายจะเคลื่อนที่ (I51ec3, b/216582726, b/223440806, b/227709803) - ตอนนี้ระบบจะใช้
Show Layout Boundsกับการเขียนที่ใช้ Compose ทันทีหลังจากสลับจากการ์ดการตั้งค่าด่วน โดยไม่ต้องออกจากกิจกรรมแล้วกลับเข้าไปใหม่ (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ทั้งหมดกำหนดเป้าหมายไปยัง Applier 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เปลี่ยนชื่อเป็นLineHeightStyleLineVerticalAlignmentเปลี่ยนชื่อเป็น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 แล้ว การส่ง
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 ซึ่งหมายความว่าองค์ประกอบหลักของ Compose จะรับเดลต้าการเลื่อนที่ซ้อนกันจาก 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) - ผู้สอนที่ใช้ Paragraph และ Multiparagraph ได้เรียงลำดับอาร์กิวเมนต์ตำแหน่งใหม่ให้อยู่ก่อนอาร์กิวเมนต์ที่ไม่บังคับ (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ช่วยให้นักพัฒนาแอปปิดใช้การใช้WindowInsetsของ Android ได้ ซึ่งช่วยให้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/ParagraphStyle คุณเปลี่ยนincludeFontPaddingได้ผ่าน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) - อัปเดตการแยกวิเคราะห์ภาพวาดเวกเตอร์เพื่อรองรับการมิเรอร์อัตโนมัติเพื่อพลิกเนื้อหาของ
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จะส่งผลให้ประสิทธิภาพการเลื่อนของ RecyclerViews ที่มีมุมมอง 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จัดการปัญหาการตัดแล้ว และไม่ควรมีการตัดสคริปต์ที่ยาว (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 ที่กำหนดเอง ฟังก์ชัน Composable แบบแอบสแตรก (เช่น เมธอดอินเทอร์เฟซ) ฟิลด์ หรือตัวแปรร่วมที่เป็น Composable Lambda (ระบบจะอนุมานตัวแปรและพารามิเตอร์ในเครื่อง) หรือเมื่อใช้
ComposeNodeหรือฟังก์ชัน Composable ที่เกี่ยวข้องสำหรับตัวใช้ที่กำหนดเอง ฟังก์ชันที่ประกอบกันได้ซึ่งเรียกใช้
ComposeNodeหรือReusableComposeNodeจะต้องเพิ่ม คำอธิบายประกอบComposableTargetสำหรับฟังก์ชันและประเภทพารามิเตอร์ Lambda ที่ประกอบกันได้ อย่างไรก็ตาม เราขอแนะนำ ให้สร้างคำอธิบายประกอบที่มีคำอธิบายประกอบเป็น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ในคลาส StubRenderNode(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) - เดสก์ท็อปใช้ Composition Local สำหรับ
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()สำหรับอุปกรณ์ Wear ที่มีปุ่มด้านข้างแบบหมุน (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 ไปยัง View ผ่าน 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()) การติดตั้งใช้งานก่อนหน้านี้จะเลื่อนเวลาเหตุการณ์และส่งเหตุการณ์ "ย้าย" ก่อนที่จะส่งเหตุการณ์ "ลง" การติดตั้งใช้งานใหม่จะยังคงส่งเหตุการณ์ move แต่จะไม่เลื่อนเวลาเหตุการณ์ใน สถานการณ์เฉพาะนี้ - เมื่อส่งเหตุการณ์ "ขึ้น" ขณะที่ย้ายเคอร์เซอร์โดยไม่ส่งเหตุการณ์ "ย้าย" (คล้ายกับด้านบน) การติดตั้งใช้งานก่อนหน้าจะเลื่อนเวลาของเหตุการณ์และส่งเหตุการณ์ "ย้าย" ก่อนที่จะส่งเหตุการณ์ "ขึ้น" การใช้งานใหม่นี้จะไม่ทำทั้ง 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 ที่ใช้กันโดยทั่วไป กรณีการใช้งานส่วนใหญ่เกี่ยวข้องกับ การอนุญาตให้แสดงเนื้อหาที่เบลอ นอกขอบเขตของเนื้อหาต้นฉบับ และการเบลอภูมิภาคนอกขอบเขตเหล่านี้ ด้วยสีดำโปร่งใส หรือการตัดเนื้อหา ไปยังขอบเขตของเนื้อหาโดยการสุ่มขอบที่ใกล้ที่สุด สำหรับเคอร์เนลเบลอที่ขยายออกไปนอกขอบเขตของเนื้อหา (I6b4b7, b/166927547) - เพิ่มการรองรับ RenderEffect ใน Compose Desktop เปิดตัว OffsetEffect และตัวแก้ไขเบลอเป็นวิธีง่ายๆ ในการเพิ่มเอฟเฟกต์ภาพเบลอลงในส่วนหนึ่งของลำดับชั้นการจัดองค์ประกอบ (I0f6aa, b/166927547)
- เปิดตัว RenderEffect API
ที่กำหนดค่าได้ (ไม่บังคับ)
ใน
Modifier.graphicsLayerเพื่อเปลี่ยน เนื้อหาของเลเยอร์เอง ซึ่งใช้เพื่อเบลอเนื้อหาของ Composable และ Composable ย่อยภายในลำดับชั้นของ Composition ได้ (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เป็น "เท็จ" เพื่อลบล้างลักษณะการทำงานนี้ (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เป็น "เท็จ" เพื่อลบล้างลักษณะการทำงานนี้ (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ที่ช่วยให้คุณ แสดงตัวอย่าง Composables ที่ใช้ API เช่นrememberLauncherForActivityResult()ซึ่งขึ้นอยู่กับ การมีอยู่ของเจ้าของนั้น (Ib13d1, b/185693006) - ตอนนี้ Compose
@PreviewมีLocalOnBackPressedDispatcherOwnerที่ช่วยให้คุณ แสดงตัวอย่าง Composable ที่ใช้ 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 ตัวเพื่อระบุว่าควรติดธงให้เมธอดนี้เป็น "Hot", "Startup" หรือ "Post Startup" หรือไม่<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() เพื่อโหลดแบบอักษร จากเนื้อหา ไฟล์ และ FileDescriptor (I5d382)
- เพิ่ม API การช่วยเหลือพิเศษ
errorที่อนุญาตให้ทำเครื่องหมายโหนดที่มีอินพุตที่ไม่ถูกต้อง (I12997, b/180584804, b/182142737) - เพิ่มการโอเวอร์โหลด
Font()เพื่อโหลดแบบอักษร จากชิ้นงาน ไฟล์ และ 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
- เพิ่ม
LocalSoftwareKeyboardControllercomposition local API ใหม่เพื่อแทนที่อินเทอร์เฟซ SoftwareKeyboardController ก่อนหน้าใน TextField (I5951e, b/168778053) - เพิ่ม
LocalSoftwareKeyboardControllercomposition local API ใหม่เพื่อแทนที่อินเทอร์เฟซ 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) - เพิ่ม
LocalSoftwareKeyboardControllercomposition local API ใหม่เพื่อแทนที่อินเทอร์เฟซ 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 เวอร์ชันเบต้าที่เปิดตัวเป็นครั้งแรก
การเปลี่ยนแปลง 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 ออก ในกรณีที่ไม่ได้ระบุโรงงานเริ่มต้น ก่อนหน้านี้ จะให้การอ้างอิงเป็น Null สำหรับประเภทที่กำหนดให้ไม่ใช่ Null
สำหรับประเภทที่กำหนดให้เป็น Null ได้ ให้พิจารณาใส่
{ null }เป็นค่าเริ่มต้น factoryเราไม่แนะนำให้ใช้ภาษาที่มีประเภทที่กำหนดให้ต้องมีค่า เว้นแต่จะระบุค่าเริ่มต้นที่เหมาะสมได้ หากไม่มีค่าเริ่มต้นที่เหมาะสม Lambda
defaultFactoryควรแสดงข้อยกเว้น อย่างไรก็ตาม การส่งข้อยกเว้นหมายความว่าผู้บริโภคของภาษาจะมีการ อ้างอิงโดยนัยว่ามีการระบุภาษาดังกล่าวซึ่งไม่ได้บังคับใช้ โดยระบบประเภท (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)
ย้ายการปฐมนิเทศไปไว้ในแพ็กเกจพื้นฐานแล้ว VelocirtTracker ย้ายจาก 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 ใหม่แล้ว ตอนนี้จะใช้อินเทอร์เฟซที่เลื่อนได้แทนคลาส 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 แล้ว ซึ่งตอนนี้จะช่วยให้ปรับแต่งภาพเคลื่อนไหวระงับได้แทนที่จะใช้ Decays ที่กำหนดไว้ล่วงหน้า (I02b86, b/175294473)
เพิ่มฟังก์ชันตัวช่วยที่ช่วย ตั้งค่าการดำเนินการเดียวกันสำหรับ Callback ของ ImeAction ทั้งหมด (I63447, b/179226323)
นำการเรียกกลับ SoftwareKeyboardController ออกจากฟิลด์ข้อความทั้งหมด เพื่อแทนที่ด้วย API ใหม่ในเร็วๆ นี้ (Iae869, b/168778053)
ระบบจะไม่ใช้ FontSpan และ FontWeigthStyleSpan อีกต่อไปและจะนำออก (Ie5b56, b/177423444)
ทำการเปลี่ยนแปลง 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และทำให้เป็นค่า Null ได้ - เปลี่ยนชื่อพารามิเตอร์
textในSnackbarเป็นcontentเพื่อให้สอดคล้องกัน - เพิ่มพารามิเตอร์
contentPaddingลงในDropdownMenuItemเพื่ออนุญาตให้ปรับแต่งระยะขอบเริ่มต้น และทำให้contentเป็นส่วนขยายในRowScope - เปลี่ยนชื่อ
ModalDrawerLayoutเป็นModalDrawerแล้ว - เปลี่ยนชื่อ
BottomDrawerLayoutเป็นBottomDrawerแล้ว - (I1cc66)
การแก้ไขข้อบกพร่อง
- เพิ่ม API เพื่อใช้ทรัพยากร AnimatedVectorDrawable ใน Compose ใช้
animatedVectorResource เพื่อโหลด
<animated-vector>XML เป็น AnimatedImageVector และเคลื่อนไหว ด้วย painterFor (I8ea91) - เพิ่มองค์ประกอบ LocalSoftwareKeyboardController ใหม่ในเครื่อง API เพื่อแทนที่อินเทอร์เฟซ 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 เพื่อระบุ เมื่อควรเริ่มคอรูกินการตรวจหาอินพุตของเคอร์เซอร์ใหม่สำหรับ การอ้างอิงใหม่ (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 เดิมชื่อของ Ambients คือ AmbientFoo แต่ตอนนี้ชื่อของ CompositionLocals คือ LocalFoo (I2d55d)
- ตอนนี้เราได้นำ BaseTextField ที่เลิกใช้งานแล้วออกแล้ว โปรดใช้ BasicTextField แทน (I71368)
- ย้ายการเลือกไปที่มูลนิธิแล้ว (I7892b)
- เช่นเดียวกับที่เราเคยนำ
state { 0 }ที่ใช้ร่วมกันได้ออกไปก่อนหน้านี้ และตอนนี้เรากำลังส่งเสริมการใช้งานอย่างremember { mutableStateOf(0) }เราจะนำsavedInstanceState { 0 }ที่ใช้ร่วมกันได้ออก คุณควรใช้rememberSaveable { mutableStateOf(0) }แทน และระบบจะบันทึกและกู้คืนโดยอัตโนมัติหากจัดเก็บประเภทที่ใช้ภายใน MutableState ไว้ใน Bundle ได้ หากก่อนหน้านี้คุณส่งออบเจ็กต์ Saver ที่กำหนดเอง ตอนนี้คุณต้องใช้การโอเวอร์โหลดใหม่ของ 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)- ตอนนี้คุณปิด Recomposers ได้แล้ว 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)
- เพิ่มองค์ประกอบ
InfiniteAnimationPolicyCoroutineContext ที่จะใช้ในภาพเคลื่อนไหวแบบวนซ้ำ โดยค่าเริ่มต้น ระบบจะไม่ติดตั้งนโยบายใดๆ ยกเว้นเมื่อเรียกใช้การทดสอบด้วย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)
- อัปเดต Vector Graphics API เพื่อรองรับการแยกวิเคราะห์การปรับสี ที่ใช้กับรูทของ Vector Graphics (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จากการเรียกกลับที่ส่งไปยัง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 APIs เพื่ออนุญาตให้รีไซเคิล มุมมองที่อิงตาม 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)
เปลี่ยนฟังก์ชัน Dp.isFinite() เป็นค่า Dp.isFinite (I50e00)
การแก้ไขข้อบกพร่อง
- ตอนนี้ Recomposer จะแสดง Flow ของสถานะปัจจุบัน ซึ่งช่วยให้ ตรวจสอบกิจกรรมของตัวเองและกิจกรรมของเอฟเฟกต์ที่เชื่อมโยงได้ (Ifb2b9)
- ตอนนี้คุณเข้าถึง native keyEvent ได้แล้วผ่าน keyEvent.nativeKeyEvent (I87c57, b/173086397)
- ตอนนี้
animate()ถูกแทนที่ด้วยanimateAsState()ซึ่งจะแสดงผลState<T>แทนTซึ่งจะช่วยให้ประสิทธิภาพดีขึ้น เนื่องจากสามารถจำกัดขอบเขตการลบล้างให้แคบลง ไปยังตำแหน่งที่อ่านค่าสถานะได้ (Ib179e) - เพิ่ม API บทบาทของ Semantics และเพิ่มบทบาทเป็นพารามิเตอร์ไปยัง SemanticsModifier ที่คลิกได้ เลือกได้ และสลับได้ เปลี่ยน Modifier.progressSemantics เพื่อให้แถบเลื่อนใช้ได้ด้วย (I216cd)
- API ใหม่ที่ใช้โครูทีน
Animatableซึ่งรับประกันการแยกกันโดยเด็ดขาด ระหว่างภาพเคลื่อนไหว- 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 การป้อนข้อมูลพอยน์เตอร์ที่ระงับแล้ว เราได้เปลี่ยนชื่อ 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)
เพิ่ม PainterResource API เพื่อจัดการการโหลดออบเจ็กต์ 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 เพื่อใช้แทน ui-tooling API ในการดึงข้อมูลองค์ประกอบ 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)
- ย้าย API ของ DrawModifier จากแพ็กเกจ androidx.compose.ui ไปยังแพ็กเกจ androidx.compose.ui.draw สร้างไฟล์ DrawModifierDeprecated.kt เพื่อ รวมนามแฝงของประเภท/วิธีการช่วยเพื่อช่วยในการ ย้ายข้อมูลจาก API ที่เลิกใช้งานแล้วไปยัง API ปัจจุบัน (Id6044, b/173834241)
- เปลี่ยนชื่อ Modifier.drawLayer เป็น Modifier.graphicsLayer นอกจากนี้ยังอัปเดตคลาสที่เกี่ยวข้องเป็น GraphicsLayer ตาม ความคิดเห็นเกี่ยวกับ API (I0bd29, b/173834241)
- เราได้เพิ่มเมธอดใหม่ที่ชื่อ 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) - เลิกใช้งาน Ambients ที่มีชื่อลงท้ายด้วย
Ambientและแทนที่ด้วยพร็อพเพอร์ตี้ใหม่ที่ขึ้นต้นด้วย Ambient ตามหลักเกณฑ์อื่นๆ ของ Ambient และ Compose API (I33440) - ย้าย
androidx.compose.ui.text.Typefaceไปยังandroidx.compose.ui.text.font.Typeface(Ic2b81) - เปลี่ยนชื่ออาร์กิวเมนต์ Semantics 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สำหรับLayoutIdParentDataMeasurable.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)
- เพิ่มตัวเลือกชั่วคราวเพื่อให้ TestAnimationClock ทำงานโดย MonotonicFrameClock (I1403b, b/173402197)
- เพิ่ม Wrapper ของแบบอักษร Android แล้ว คุณโหลด Android
Typeface ผ่านฟังก์ชัน
typefaceได้ เช่นtypeface(Typeface.DEFAULT)เปลี่ยนชื่อtypefaceFromFontFamily()เป็นtypeface()(I52ab7) ด้วย - เพิ่มการตรวจสอบ Lint เพื่อตรวจสอบว่าฟังก์ชัน Factory ของตัวแก้ไขได้รับการกำหนดเป็นส่วนขยายในตัวแก้ไข เพื่อให้สามารถเชื่อมโยงเข้าด้วยกันได้อย่างราบรื่น (I07981)
- Remove old ui-test module and its stubs (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 แทนเพื่อระบุให้ดียิ่งขึ้นว่า Composable API ใช้ "remember" ภายในเพื่อคงข้อมูลไว้ใน Composition ต่างๆ (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)
- เพิ่มความสามารถในการระบุข้อมูล Inspector ในตัวแก้ไขที่ประกอบขึ้น (Idee08, b/163494569)
- เพิ่มตัวเลือก "เลือกทั้งหมด" ลงในเมนูการเลือก (Ief02b)
- อัปเดต DrawTransform.rotate เพื่อใช้
พารามิเตอร์จุดหมุนเริ่มต้นของกึ่งกลางให้ตรงกับ
เอกสารประกอบ
- อัปเดต 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)
- ตัวแก้ไขทดลอง ตัวแก้ไขอินพุตที่ระงับอินพุตของ PointerInput (Ia77d2)
- เพิ่มการดำเนินการสำหรับการช่วยเหลือพิเศษในการคัดลอก/วาง/ตัด (I6db4f)
- นำเครื่องมือสร้างสาธารณะสำหรับ AndroidOwner ออกแล้ว (Iacaef)
- ตอนนี้ป๊อปอัปและกล่องโต้ตอบจะรับค่า FLAG_SECURE จากหน้าต่างหลัก นอกจากนี้ ยังเพิ่มตัวเลือกในการกำหนดค่านี้อย่างชัดแจ้ง (I64966, b/143778148, b/143778149)
ตอนนี้ข้อมูลการใช้งานสามารถเปลี่ยนแปลงได้แล้ว นอกจากนี้ การเรียกฟังก์ชันส่วนขยายที่ใช้การบริโภค จะไม่แสดงผล PointerInputChange ใหม่ แต่จะเปลี่ยน PointerInputChange ที่ระบุแทน
นี่คือขั้นตอนแรกในกระบวนการ 2 ขั้นตอนเพื่อ ทำให้ข้อมูล PointerEvent เปลี่ยนแปลงได้ เพื่อให้โค้ดของผู้ใช้ แก้ไขข้อมูลพอยน์เตอร์อื่นๆ ไม่ได้ ขั้นตอนที่ 2 คือการนำ
List<PointerInputChange>ประเภทการแสดงผลออกจากPointerInputFilter.onPointerEvent(...)(Id067e)ปิดใช้การเลือกในข้อความและเดโม (Ie7e97)
ทำให้ฟังก์ชัน GloballyPositioned เป็นฟังก์ชันแบบอินไลน์ (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 ออกแล้ว
- นำ Size.rem ออก
- นำ Size.truncDiv ออก (Ief44d, b/169790720)
ในการปรับค่า Sentinel สำหรับคลาสอินไลน์ให้เป็นมาตรฐาน ให้เปลี่ยนชื่อ Color.Unset เป็น Color.Unspecified เพื่อให้สอดคล้องกับคลาสอินไลน์อื่นๆ (I97611, b/169797763)
เปิดตัว TextOverflow.None เมื่อการล้นเป็น 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 ด้วยเมธอดการเปลี่ยนรูปแบบที่กำหนดขอบเขตเพื่อระบุว่าการเปลี่ยนรูปแบบจะใช้ภายใน Callback เท่านั้นและจะนำออกหลังจากเรียกใช้ Callback
- อัปเดตเอกสารประกอบ 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)
- ตอนนี้ Uptime และ Velocity เป็นคลาสอินไลน์แล้ว (I48f4a)
- ตอนนี้ Duration เป็นคลาสอินไลน์ (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 สามารถประกาศได้ว่าสามารถข้ามและประกอบใหม่ได้อย่างอิสระโดยไม่ขึ้นอยู่กับ emit (Ibbd13)
เปลี่ยนคลาส Vector เพื่อไม่ให้เป็นคลาสข้อมูลอีกต่อไป เนื่องจากมีการใช้ออบเจ็กต์อินสแตนซ์เดียวกันสำหรับการจัดองค์ประกอบ
เพิ่มแฟล็ก mutableStateOf สำหรับ VectorPainter เพื่อวาดซ้ำแบบมีเงื่อนไขหากเนื้อหาของ เวกเตอร์มีการเปลี่ยนแปลง
ปรับโครงสร้างอินสแตนซ์ VectorComponent ให้เป็นส่วนหนึ่งของ VectorPainter เนื่องจากมีการนำกลับมาใช้ซ้ำในองค์ประกอบต่างๆ
อัปเดต GroupComponent และ PathComponent เพื่อให้ฟิลด์ชื่อแก้ไขได้ (Ieae45, b/151378808)
นำ
onChildPositionedและOnChildPositionedModifierออกแล้ว นักพัฒนาแอปควรใช้onPositionedและOnPositionedModifierในเลย์เอาต์ย่อยแทน (I4522e, b/162109766)Offset กลายเป็นคลาสอินไลน์ (Iaec70)
เพิ่มพารามิเตอร์ตัวแก้ไขลงใน SelectionContainer (I4aada, b/161487952)
นำ FocusModifier ที่เลิกใช้งานแล้วออก (I0b4ba, b/160922116, b/160821157, b/162441435, b/160822875, b/160921940)
เพิ่มฟังก์ชันแลมบ์ดา
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 { ... }ที่ใช้ร่วมกันได้แล้วเพื่อ เรียกใช้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 ในลำดับชั้นการแสดงผล (I46357)
- ตอนนี้
RowและColumnเป็นฟังก์ชันแบบอินไลน์แล้ว ซึ่งช่วยลดค่าใช้จ่ายในการใช้งานได้อย่างมาก (I75c10) - เพิ่ม SubcomposeLayout แล้ว ซึ่งเป็นองค์ประกอบระดับล่างที่ช่วยให้สามารถจัดองค์ประกอบองค์ประกอบย่อยในระหว่างการวัดได้ หากต้องการใช้ค่าบางอย่างที่ใช้ได้ในภายหลังเท่านั้นในระหว่างการวัดสำหรับการจัดองค์ประกอบของ Subtree เช่น WithConstraints ไม่ได้ใช้ SubcomposeLayout (I25cc8)
- เพิ่ม
SemanticsNode.positionInRootเพื่อรับตำแหน่งของ SemanticsNode ที่สัมพันธ์กับรูทของลำดับชั้น Compose (Icdf26, b/161336532) - MotionEvents จะส่งผ่านจาก 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
- เปลี่ยนชื่อ enums ของ StrokeJoin เป็น Pascal Case
- เปลี่ยนชื่อ PointMode enums เป็น Pascal Case
- เปลี่ยนชื่อ Enum ของ PaintingStyle ให้เป็น Pascal Case
- เปลี่ยนชื่อ enum ของ PathFillType ให้เป็น Pascal Case
- เปลี่ยนชื่อการแจงนับ StrokeCap เป็น Pascal Case
- อัปเดตการใช้งาน DrawCache เพื่อไม่ให้ใช้พารามิเตอร์ lateinit อีกต่อไป
- อัปเดต DrawScope เพื่อไม่ให้ใช้การมอบสิทธิ์แบบเลื่อนเวลา สำหรับพารามิเตอร์ภายใน fillPaint และ strokePaint อีกต่อไป
- อัปเดต Image composable เพื่อหลีกเลี่ยงการใช้ Box เพื่อลดค่าใช้จ่าย
- อัปเดตคลาส Outline ให้มีคำอธิบายประกอบ @Immutable
- อัปเดต PathNode ให้มีคำอธิบายประกอบ @Immutable สำหรับ แต่ละคำสั่งเส้นทาง
- อัปเดตองค์ประกอบย่อยของเวกเตอร์เพื่อนำการตรวจสอบแบบมีเงื่อนไขที่ซ้ำซ้อนออก สำหรับการตรวจสอบความเท่ากัน เนื่องจาก Compose จัดการการตรวจสอบเหล่านี้อยู่แล้ว
- เลิกใช้งานเมธอดตัวสร้าง Rect Companion เพื่อใช้ตัวสร้างฟังก์ชันแทน
- อัปเดตคลาส 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 เมื่อรายการควรเติม Viewport และ 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() อย่างไรก็ตาม คุณสามารถดูทิศทางเลย์เอาต์ได้ภายใน Callback ผ่านออบเจ็กต์ขอบเขตการวัด (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 ในการแพ็กค่าลอยตัว 2 ค่าเพื่อแสดง ความกว้างและความสูงที่แสดงเป็นค่าลอยตัว (Ic0191)
เพื่อรวมจำนวนคลาสที่ใช้เพื่อแสดงข้อมูลการวางตำแหน่ง ให้ใช้คลาส Offset แทน PxPosition ซึ่งจะมอบประโยชน์ ของคลาสอินไลน์เพื่อใช้ประโยชน์จาก long ในการแพ็กค่าทศนิยม 2 ค่าเพื่อแสดงออฟเซ็ต x และ y ที่แสดงเป็นทศนิยม (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 ลบคลาสย่อย DrawScope ใน 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 extension ซึ่งมีฟังก์ชันเรียกกลับเพื่อออกคำสั่งวาดด้วย Canvas พื้นฐาน (I80afd)
มีการเปลี่ยนแปลง API ของ Lambda ต่อท้าย 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 module เพื่อให้อยู่ในโมดูลเดียวกับ 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.rotateRad ให้เป็น เมธอดส่วนขยายเพื่อความสอดคล้องกัน (Ibaca6)
สร้าง PixelMap API เพื่อรองรับ การค้นหาข้อมูลพิกเซลจาก ImageAsset (I69ad6)
เปลี่ยนชื่อเป็น toFrameworkRect/toFrameworkRectF เป็น toAndroidRect/toAndroidRectF เพื่อให้เป็นไปตามหลักเกณฑ์การตั้งชื่อ สำหรับการแปลงออบเจ็กต์ระหว่าง Compose กับ Android framework API ที่สร้างขึ้น นอกจากนี้ เรายังได้อัปเดตเอกสารเกี่ยวกับ API เหล่านี้ (I86337)
เพิ่ม VectorPainter API เพื่อ แทนที่ Subcomposition API ที่มีอยู่สำหรับ กราฟิกแบบเวกเตอร์ ผลลัพธ์ขององค์ประกอบย่อย คือออบเจ็กต์ VectorPainter แทนที่จะเป็น DrawModifier เลิกใช้งาน DrawVector composables ก่อนหน้าเพื่อใช้ VectorPainter
เปลี่ยนชื่อ Image(Painter) API เป็น PaintBox(Painter) สร้าง Composable แบบเวกเตอร์ที่ทำงานเหมือน Composable ของรูปภาพ แต่ใช้ VectorAsset แทน ImageAsset (I9af9a, b/149030271)
เปลี่ยนชื่อ Image เป็น ImageAsset เพื่อให้แยกความแตกต่างระหว่างข้อมูล Image กับ Composable ของ Image ที่กำลังจะเปิดตัวซึ่งใช้ในการเข้าร่วมเลย์เอาต์และวาดเนื้อหาได้ดียิ่งขึ้น _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)
runOnIdleComposeเปลี่ยนชื่อเป็นrunOnIdle(I83607)- เราได้เปลี่ยนชื่อ 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)
แก้ไขปัญหาที่การส่งอินพุตของเคอร์เซอร์ จะทำให้เกิดข้อขัดข้องหากมีการนำ 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 ทั้งหมด ผู้ใช้ Compose ส่วนใหญ่ไม่จำเป็นต้องอัปเดตโค้ดใดๆ อันเป็นผลมาจากการเปลี่ยนแปลงนี้
เราได้เปลี่ยนลายเซ็น JVM ของฟังก์ชันที่ใช้ร่วมกันได้ทั้งหมดเพื่อรองรับการทำงานนี้ ฟังก์ชันที่ประกอบกันได้ซึ่งรับพารามิเตอร์เดียวจะเปลี่ยนเป็นฟังก์ชันที่รับ 3 พารามิเตอร์ โดยพารามิเตอร์เพิ่มเติมคือ Composer ซึ่งเป็นจำนวนเต็ม "คีย์" และจำนวนเต็มบิตมาสก์ที่ใช้ในการเผยแพร่ข้อมูลเมตาผ่านการเรียก
ตอนนี้ Compose จะแปลงอาร์กิวเมนต์เริ่มต้นเป็นฟังก์ชันที่ประกอบกันได้ด้วย โดยการดำเนินการนี้จะไม่ทำให้ฟังก์ชันเองมีโอเวอร์โหลดเริ่มต้นสังเคราะห์เพิ่มเติม การเปลี่ยนแปลงนี้จึงส่งผลให้มีการกำหนดฟังก์ชันน้อยลง
การเปลี่ยนแปลงลักษณะการทำงานที่ทราบและตั้งใจให้เกิดขึ้นจากสิ่งนี้มีดังนี้
- การโทรบางสายจะข้ามไปในกรณีที่ก่อนหน้านี้จะไม่ข้าม
- ตอนนี้ระบบจะสมัครใช้บริการและจัดการนิพจน์ที่ประกอบได้ในนิพจน์อาร์กิวเมนต์เริ่มต้นอย่างถูกต้องแล้ว
การทำงานนี้รวมถึงการเพิ่มประสิทธิภาพบางอย่าง ดังนี้ 1. ผลลัพธ์ของการเปรียบเทียบพารามิเตอร์จะเผยแพร่ผ่านกราฟการเรียกไปยังฟังก์ชันอื่นๆ ที่ประกอบได้ ซึ่งจะส่งผลให้มีการเปรียบเทียบน้อยลงในขณะรันไทม์ ลดขนาดตารางสล็อต รวมถึงข้ามฟังก์ชันที่ประกอบได้มากขึ้นซึ่งก่อนหน้านี้ไม่ได้ข้าม 2. ระบบจะไม่เปรียบเทียบหรือจัดเก็บพารามิเตอร์ที่พิจารณาว่า "คงที่" ในเวลาคอมไพล์อีกต่อไปในรันไทม์ ซึ่งจะช่วยลดจำนวนการเปรียบเทียบและลดขนาดตารางช่อง 3. โครงสร้างโฟลว์การควบคุมของเนื้อหาฟังก์ชันใช้เพื่อลดจำนวนกลุ่มที่สร้างขึ้น ซึ่งจะช่วยลดขนาดตารางสล็อตและทำให้รันไทม์ 4 ทำงานน้อยลง ระบบจะไม่รวมพารามิเตอร์การเรียกใช้และพารามิเตอร์ผู้รับที่ไม่ได้ใช้ในฟังก์ชันในการพิจารณาว่าฟังก์ชันข้ามได้หรือไม่ หากไม่ได้ใช้ภายในเนื้อหาของฟังก์ชัน
การเปลี่ยนแปลงที่ทำให้เกิดข้อขัดข้องส่วนใหญ่เป็น API ที่คอมไพเลอร์กำหนดเป้าหมายโดยตรง และการใช้งาน Compose โดยทั่วไปจะไม่ได้รับผลกระทบ 1. นำ Composer::startExpr ออกแล้ว 2. นำ Composer::endExpr ออกแล้ว 3. เลิกใช้งาน Composer::call แล้ว 4. เราได้นำโอเวอร์โหลดที่ไม่ใช่ varargs ของ
keyออกแล้ว โปรดใช้เวอร์ชันvarargต่อไป 5. เราเลิกใช้งานคำอธิบายประกอบที่สำคัญแล้ว ใช้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)