UI ของ Compose
androidx.compose.ui
androidx.compose.ui.geometry
androidx.compose.ui.graphics
androidx.compose.ui.platform
androidx.compose.ui.test
(ดูเอกสารอ้างอิง API สำหรับแพ็กเกจคอมโพสิททั้งหมด)
อัปเดตล่าสุด | รุ่นที่เสถียร | รุ่นที่อาจได้รับการเผยแพร่ | รุ่นเบต้า | เวอร์ชันอัลฟ่า |
---|---|---|---|---|
11 ธันวาคม 2024 | 1.7.6 | - | - | 1.8.0-alpha07 |
โครงสร้าง
คอมโพซคือชุดค่าผสมของรหัสกลุ่ม Maven 7 รายการภายใน androidx
กลุ่มแต่ละกลุ่มประกอบด้วยชุดฟังก์ชันการทำงานย่อยที่กำหนดเป้าหมายไว้ โดยแต่ละกลุ่มจะมีชุดหมายเหตุการเผยแพร่ของตัวเอง
ตารางนี้จะอธิบายกลุ่มและลิงก์ไปยังชุดบันทึกประจำรุ่นแต่ละชุด
กลุ่ม | คำอธิบาย |
---|---|
compose.animation | สร้างภาพเคลื่อนไหวในแอปพลิเคชัน Jetpack Compose เพื่อมอบประสบการณ์การใช้งานที่ดีขึ้นให้แก่ผู้ใช้ |
compose.compiler | เปลี่ยนรูปแบบฟังก์ชัน @Composable และเปิดใช้การเพิ่มประสิทธิภาพด้วยปลั๊กอินคอมไพเลอร์ Kotlin |
compose.foundation | เขียนแอปพลิเคชัน Jetpack Compose ด้วยองค์ประกอบพื้นฐานที่พร้อมใช้งานและขยายรากฐานเพื่อสร้างชิ้นส่วนระบบออกแบบของคุณเอง |
compose.material | สร้าง UI ของ Jetpack Compose ด้วยคอมโพเนนต์ Material Design ที่พร้อมใช้งาน นี่เป็นจุดแรกเข้าระดับที่สูงขึ้นของ Compose ซึ่งออกแบบมาเพื่อจัดหาคอมโพเนนต์ที่ตรงกับที่อธิบายไว้ใน www.material.io |
compose.material3 | สร้าง UI ของ Jetpack Compose ด้วยคอมโพเนนต์ Material Design 3 ซึ่งเป็นวิวัฒนาการขั้นถัดไปของ Material Design Material 3 ประกอบด้วยธีมและคอมโพเนนต์ที่อัปเดต รวมถึงฟีเจอร์การปรับแต่งในแบบของคุณของ Material You เช่น สีแบบไดนามิก และออกแบบมาให้สอดคล้องไปกับสไตล์ภาพและ UI ของระบบ Android 12 เวอร์ชันใหม่ |
compose.runtime | องค์ประกอบพื้นฐานของรูปแบบการเขียนโปรแกรมและการจัดการสถานะของ Compose รวมถึงรันไทม์หลักสำหรับกำหนดเป้าหมายปลั๊กอินคอมไพเลอร์ Compose |
compose.ui | องค์ประกอบพื้นฐานของ UI การเขียนที่จำเป็นต่อการโต้ตอบกับอุปกรณ์ ซึ่งรวมถึงเลย์เอาต์ ภาพวาด และอินพุต |
การประกาศทรัพยากร Dependency
หากต้องการเพิ่มทรัพยากร Dependency ใน Compose คุณต้องเพิ่มที่เก็บ Maven ของ Google ลงในโปรเจ็กต์ อ่านข้อมูลเพิ่มเติมในที่เก็บ Maven ของ Google
เพิ่มการอ้างอิงสำหรับอาร์ติแฟกต์ที่ต้องการในไฟล์ build.gradle
สำหรับแอปหรือโมดูล
Groovy
dependencies { implementation "androidx.compose.ui:ui:1.7.5" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.ui:ui:1.7.5") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
ดูข้อมูลเพิ่มเติมเกี่ยวกับการพึ่งพาได้ที่เพิ่มการพึ่งพิงบิวด์
ความคิดเห็น
ความคิดเห็นของคุณช่วยปรับปรุง Jetpack ได้ โปรดแจ้งให้เราทราบหากพบปัญหาใหม่หรือมีแนวคิดในการปรับปรุงคลังนี้ โปรดดูปัญหาที่มีอยู่ในคลังนี้ก่อนสร้างปัญหาใหม่ คุณสามารถเพิ่มการโหวตให้กับปัญหาที่มีอยู่ได้โดยคลิกปุ่มดาว
ดูข้อมูลเพิ่มเติมในเอกสารประกอบของเครื่องมือติดตามปัญหา
เวอร์ชัน 1.8
เวอร์ชัน 1.8.0-alpha07
11 ธันวาคม 2024
androidx.compose.ui:ui-*:1.8.0-alpha07
ได้รับการปล่อยแล้ว เวอร์ชัน 1.8.0-alpha07 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เจ้าของที่เปิดเผยจาก
LayoutNode
สำหรับเครื่องมือ (I26f7f) - มีองค์ประกอบ
LocalAutofillHighlightColor
ที่ใช้ประเภทสีในองค์ประกอบในเครื่อง (I0e05b) - ยังคงทําเครื่องหมาย
UrlAnnotation
และเมธอดที่เลิกใช้งานเป็นเวอร์ชันทดลอง (Ic0021)
การแก้ไขข้อบกพร่อง
- แก้ไขข้อขัดข้องของ
IndexOutOfBoundsException
เมื่อใช้LinkAnnotation
ภายในBasicText
หรือคอมโพสิชันข้อความ (be7605, b/374115892) - แก้ไขปัญหาที่ช่องข้อความที่กรอกด้วยรูปร่างที่กำหนดเองไม่ได้ตัดเส้นตัวบ่งชี้ (I4f87f, b/380704151)
- แก้ไขพื้นหลังที่หายไปในภาพหน้าจอแบบยาว (I4d57a)
- ตอนนี้ไลบรารีนี้ใช้แอตทริบิวต์ JSpecify nullness ซึ่งเป็นการใช้ประเภท นักพัฒนาซอฟต์แวร์ Kotlin ควรใช้อาร์กิวเมนต์คอมไพเลอร์ต่อไปนี้เพื่อบังคับใช้การใช้งานที่ถูกต้อง
-Xjspecify-annotations=strict, -Xtype-enhancement-improvements-strict-mode
(Idfef8, b/326456246) - อัปเดตการรองรับการคอมโพสสำหรับสีแบบกว้างและ HDR เมื่อใช้งานใน Android Q ขึ้นไป (Icd8be, b/379135036)
- ตอนนี้แบบอักษรทรัพยากรที่โหลดไม่สำเร็จจะเปลี่ยนกลับไปใช้แบบอักษรเริ่มต้นโดยอัตโนมัติแทนลักษณะการทำงานก่อนหน้านี้ซึ่งจะแสดงข้อยกเว้นในมาตรวัด (Ib6a49)
- แก้ไขโฟกัสที่หายไปเมื่อถอด
AndroidView
ออกและเสียบกลับเข้าไป (I53446) - ยอมรับ
requestFocus()
จากการดำเนินการเลยขอบเขตเลย (Ia8461)
การมีส่วนร่วมจากภายนอก
- เพิ่ม
BringIntoViewResponderModifierNode
ลงใน UI ซึ่งจะเป็นวิธีใหม่ในการใช้ฟังก์ชันการทำงาน "นำเข้ามุมมอง" รวมถึงช่วยให้ติดตั้งใช้งานในระดับแพลตฟอร์มได้ (Ia6dd8)
เวอร์ชัน 1.8.0-alpha06
13 พฤศจิกายน 2024
androidx.compose.ui:ui-*:1.8.0-alpha06
ได้รับการปล่อยแล้ว เวอร์ชัน 1.8.0-alpha06 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มตัวปรับแต่ง
stylusHoverIcon
(Iff20a, b/331289114) - เปลี่ยนเครื่องมือจัดการการป้อนข้อความอัตโนมัติให้เป็นอินเทอร์เฟซ (I84914, b/376080755)
- เพิ่ม
requestFocus(FocusDirection)
ลงในทั้งfocusRequester
และFocusTargetModifierNode
เพื่อโฟกัสตามทิศทางที่เฉพาะเจาะจง (I5d9ec, b/245755256) FocusProperties.enter
และFocusProperties.exit
เปลี่ยนไปใช้onEnter
และonExit
แล้ว โดยใช้สโคปตัวรับแทนพารามิเตอร์FocusDirection
(I6e667)- การเพิ่มการรองรับการป้อนข้อความอัตโนมัติในแถบเครื่องมือข้อความ (Ie6a4c)
- การเปลี่ยนแปลง API เป็น
Modifier.focusRestorer()
(I99c03):- เปลี่ยนชื่อพารามิเตอร์เป็น "fallback"
- พารามิเตอร์เป็น
FocusRequester
ไม่ใช่ lambda แล้ว - พารามิเตอร์ไม่ใช่ค่า NULL แล้ว โดยมีค่าเริ่มต้นเป็นค่าเริ่มต้น
- นำคำอธิบายประกอบ
@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) - นํา
GlobalAssertions
API เวอร์ชันทดลองออก วัตถุประสงค์ของเครื่องมือนี้คือเพื่อเรียกใช้การตรวจสอบการช่วยเหลือพิเศษ โปรดดูenableAccessibilityChecks()
เพื่อวัตถุประสงค์ดังกล่าวแทน (I59322)
เวอร์ชัน 1.8.0-alpha05
30 ตุลาคม 2024
androidx.compose.ui:ui-*:1.8.0-alpha05
ได้รับการปล่อยแล้ว เวอร์ชัน 1.8.0-alpha05 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
ฟีเจอร์ป้อนข้อความอัตโนมัติจะแสดงหลัง Flag ฟีเจอร์ในรุ่นนี้ เรากำลังปรับปรุงประสิทธิภาพและต้องการความคิดเห็นเบื้องต้นเกี่ยวกับ API API เหล่านี้คาดว่าจะพัฒนาไปก่อนเวอร์ชันที่ใช้งานจริงโดยอิงตามความคิดเห็น
- หากต้องการเปิดใช้ฟีเจอร์ป้อนข้อความอัตโนมัติ ให้ตั้งค่า
ComposeUiFlags.isSemanticAutofillEnabled
เป็น "true" ในonCreate
และใช้ Compose Snapshot เวอร์ชันล่าสุด - ฟีเจอร์ป้อนข้อความอัตโนมัติเวอร์ชันนี้รองรับการบันทึกข้อมูลเข้าสู่ระบบด้วยตนเอง ผ่านฟีเจอร์แนะนำรหัสผ่านที่รัดกุม และผ่านการไปยังส่วนต่างๆ และยังรองรับการเติมเมื่อช่องที่ป้อนข้อความอัตโนมัติได้รับโฟกัส หรือเมื่อระบบเรียกใช้ฟีเจอร์ป้อนข้อความอัตโนมัติผ่านแถบเครื่องมือข้อความในคอมโพเนนต์ข้อความ คอมโพเนนต์จะไฮไลต์ขึ้นเพื่อระบุว่าการป้อนข้อความอัตโนมัติเสร็จสมบูรณ์แล้ว
การเปลี่ยนแปลง API
- แก้ไขอินเทอร์เฟซการป้อนข้อความอัตโนมัติให้เป็นไปตามโครงสร้าง
expect
/actual
(I22dce) - แนะนำ
CompositionLocal
ที่สามารถใช้เพื่อแก้ไขสีของไฮไลต์การกรอกข้อมูลสำเร็จของการป้อนข้อความอัตโนมัติ (I32092) - เพิ่ม
Modifier.onRectChanged
API ซึ่งเป็น API ที่อนุญาตให้ผู้ใช้สมัครรับข้อมูลตำแหน่งและขนาดของLayoutNode
ที่สัมพันธ์กับรูท/หน้าต่าง/หน้าจอ API นี้ช่วยแก้ปัญหา Use Case หลายอย่างที่ตัวแก้ไขonGloballyPositioned
ที่มีอยู่ทำได้ แต่มีประสิทธิภาพมากกว่ามาก และ API ยังมีเครื่องมือในการกรองสัญญาณรบกวนและการจำกัดจำนวนการเรียกกลับตามความต้องการของ Use Case (Id28c7, b/372765423, b/372757007, b/372994338) - ขยายเครื่องมือจัดการการป้อนข้อความอัตโนมัติให้รวม
commit()
และcancel()
API ที่ช่วยผู้ใช้บันทึกข้อมูลเข้าสู่ระบบที่ป้อนใหม่ (I2da00) - เปิดตัวอินเทอร์เฟซ
AutofillManager
ใหม่ที่ใช้เพื่อปรับแต่งเส้นทางการป้อนข้อความอัตโนมัติของผู้ใช้ และ FlagisSemanticAutofillEnabled
เพื่อเปิดฟีเจอร์ป้อนข้อความอัตโนมัติเวอร์ชันใหม่นี้ (I9d484) - เพิ่ม
Modifier.onRectChanged
API ซึ่งเป็น API ที่อนุญาตให้ผู้ใช้สมัครรับข้อมูลตำแหน่งและขนาดของLayoutNode
ที่สัมพันธ์กับรูท/หน้าต่าง/หน้าจอ API นี้ช่วยแก้ปัญหา Use Case หลายอย่างที่ตัวแก้ไขonGloballyPositioned
ที่มีอยู่ทำได้ แต่มีประสิทธิภาพมากกว่ามาก และ API ยังมีเครื่องมือในการกรองสัญญาณรบกวนและการจำกัดจำนวนการเรียกกลับตามความต้องการของ Use Case (I3c8fa) - เพิ่มพร็อพเพอร์ตี้เชิงความหมายและประเภทข้อมูลเพื่อรองรับการเติมข้อความอัตโนมัติเพิ่มเติม (I52c7d)
- ตอนนี้วิธีการทั้งหมดในเครื่องมือสร้าง
AnnotatedString
ไม่ได้เป็นแบบทดลองแล้ว (Ia89c8, b/261561823)
การแก้ไขข้อบกพร่อง
- ตอนนี้มุมมองที่ฝังอยู่ในการเขียนสามารถรับเหตุการณ์การหมุนได้หากโฟกัสอยู่ (I4d53a, b/320510084)
- แก้ไขข้อบกพร่องที่ทรัพยากรประเภทต่างๆ ไม่อัปเดตเมื่อมีการเปลี่ยนแปลงการกำหนดค่า (Ia9b99, b/352336694)
- แก้ไขปัญหาที่ทำให้
TextField
ทำงานไม่ถูกต้องเมื่อใช้แป้นพิมพ์ภาษาญี่ปุ่น POBox ในอุปกรณ์ Sony บางรุ่นเก่า (Ia9b99, b/373743376) - แก้ไขปัญหาเกี่ยวกับกล่องโต้ตอบที่แสดงที่ด้านล่างของหน้าจอแทนที่จะอยู่ตรงกลาง (Ia2ec, b/373093006)
- Targeting API 35 ขึ้นไปจะไม่บังคับให้ตั้งค่า
decorFitsSystemWindows
ของกล่องโต้ตอบเป็นเท็จอีกต่อไป (Ibc94, b/364492593) - แก้ไขข้อขัดข้องเมื่อมีการย้ายเลเยอร์ระหว่างหน้าต่าง (เช่น กล่องโต้ตอบและเนื้อหาหลัก) (I675ba, b/330955281)
เวอร์ชัน 1.8.0-alpha04
16 ตุลาคม 2024
androidx.compose.ui:ui-*:1.8.0-alpha04
ได้รับการปล่อยแล้ว เวอร์ชัน 1.8.0-alpha04 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มการเรียกกลับ
DelegatableNode#onDensityChange
และDelegatableNode#onLayoutDirectionChange
เพื่ออนุญาตให้อัปเดตสถานะโหนดเมื่อมีการเปลี่ยนแปลงเหล่านี้ (I04f3e, b/340662451) - เพิ่ม
WindowInfo#containerSize
เพื่อระบุขนาดคอนเทนเนอร์เนื้อหาของหน้าต่างปัจจุบัน ซึ่งเรียกดูได้โดยใช้LocalWindowInfo
(Idc38c, b/369334429, b/360343819) - เปิดตัวการแก้ไขสำหรับรายการที่เลื่อนได้แบบซ้อนกันซึ่งถูกนำออกจากต้นไม้โหนดระหว่างการฟลิงก์ที่ดำเนินอยู่ ตอนนี้โหนดเหล่านี้จะยกเลิกการแตะแล้วส่งเหตุการณ์
onPostFling
พร้อมความเร็วที่เหลืออย่างถูกต้อง นอกจากนี้ เรายังเปิดตัว FlagNewNestedScrollFlingDispatchingEnabled
เพื่อควบคุมลักษณะการทํางานในกรณีที่เกิดการทำงานซ้ำ ระบบจะนำการแจ้งว่าไม่เหมาะสมออกก่อนการเปิดตัวเวอร์ชันเบต้า (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)
- เปิดตัวบทบาทเชิงอรรถศาสตร์ใหม่ที่เรียกว่าภาพสไลด์เพื่อจําลองลักษณะการทํางานของรายการในโปรแกรมเลื่อนหน้าสำหรับบริการการช่วยเหลือพิเศษ (Id354b, b/354109776, b/239672673)
- เปลี่ยนชื่อ
invisibleToUser()
เป็นhideFromAccessibility
แต่ฟังก์ชันการทำงานจะยังคงเหมือนเดิม ดูรายละเอียดเพิ่มเติมในเอกสารประกอบ (Ib43a3)
การแก้ไขข้อบกพร่อง
- อัปเดตเอกสารสำหรับตัวแก้ไข
SensitiveContent
(Ib0442) - แก้ไขปัญหาที่ระบบจะไม่สนใจคลิปขอบทั่วไปบางรายการเมื่อใช้ร่วมกับเงาความสูงใน Android บางเวอร์ชัน
- แก้ปัญหาที่ระบบจะใช้คลิปเปล่าเมื่อระบุคลิปเค้าโครงทั่วไปใน Android บางเวอร์ชัน
- แก้ไขข้อยกเว้นที่แสดงเมื่อ IME ทำงานอยู่ในมุมมองภายนอกและมีการใช้การดำเนินการถัดไปเพื่อโฟกัสที่
ComposeView
ลักษณะการทํางานของclearFocus()
จะสอดคล้องกับลักษณะการทํางานของมุมมองใน API < 28 ซึ่งclearFocus()
อาจทําให้โฟกัสไปที่มุมมองเริ่มต้น - แก้ไขปัญหาที่ตำแหน่งเกิดขึ้นบนโหนดที่แยกใน
LazyList
โดยการแยกการจัดการองค์ประกอบย่อยสำหรับพาสเลย์เอาต์ที่แตกต่างกัน - แก้ไขปัญหาที่แป้นพิมพ์ซอฟต์แวร์กะพริบเมื่อโฟกัสเปลี่ยนจาก
TextField
เป็นEditText
หรือเครื่องมือแก้ไขแบบมุมมองอื่นๆ - ตอนนี้โหนด 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)
การมีส่วนร่วมจากภายนอก
- ตอนนี้
AlignmentLines
Map
ยอมรับประเภทที่เฉพาะเจาะจง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.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) - แก้ไขปัญหาการช่วยเหลือพิเศษที่
TalkBack
ไม่อ่านออกเสียง inlineContent ของBasicText
(I67bcb, b/376479686)
เวอร์ชัน 1.7.5
30 ตุลาคม 2024
androidx.compose.ui:ui-*:1.7.5
ได้รับการปล่อยแล้ว เวอร์ชัน 1.7.5 มีการคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาที่ระดับความสูงและการครอบตัดที่มีขอบที่กำหนดเองแสดงผลไม่ถูกต้อง
- แก้ไขข้อขัดข้องของข้อความที่เกิดขึ้นกับ
LinkAnnotation
ที่มีขนาดเป็น 0 (Ic1e2e) - แก้ไขการประกาศใน
Talkback
ของปุ่มเมื่อสร้างเป็นคอมโพสิชันข้อความที่คลิกได้ (I1f588)
เวอร์ชัน 1.7.4
16 ตุลาคม 2024
androidx.compose.ui:ui-*:1.7.4
ได้รับการปล่อยแล้ว เวอร์ชัน 1.7.4 มีการคอมมิตเหล่านี้
เวอร์ชัน 1.7.3
2 ตุลาคม 2024
androidx.compose.ui:ui-*:1.7.3
ได้รับการปล่อยแล้ว เวอร์ชัน 1.7.3 มีการคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาที่การระบุคลิปขอบร่างทั่วไปจะทำให้ขอบเขตคลิปว่างเปล่าใน Android บางเวอร์ชัน
- แก้ไขข้อยกเว้นที่แสดงเมื่อ IME ทำงานอยู่ในมุมมองภายนอกและมีการใช้การดำเนินการถัดไปเพื่อโฟกัสที่
ComposeView
ลักษณะการทํางานของclearFocus()
จะสอดคล้องกับลักษณะการทํางานของมุมมองใน API < 28 ซึ่งclearFocus()
อาจทําให้โฟกัสที่มุมมองเริ่มต้น - แก้ไขปัญหาการใช้
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)
- ปิดใช้การรองรับการแสดงผลด้วยซอฟต์แวร์สําหรับ
GraphicsLayer
API (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
เป็น valisEditable
ตอนนี้พร็อพเพอร์ตี้เป็นบูลีนและระบุด้วยช่องข้อความเสมอ (I8acd8) - เปลี่ยนชื่อพารามิเตอร์การเปรียบเทียบการช่วยเหลือพิเศษ (I3d440)
- API ที่อัปเดตสำหรับการจัดรูปแบบลิงก์: ตอนนี้
TextLinkStyles
เป็นส่วนหนึ่งของคอนสตรคเตอร์LinkAnnotation
และเมธอดAnnotatedString.fromHtml
แล้ว (I90b2b) และนำTextDefaults
ออกจากเนื้อหา (I5477b) ด้วย
การแก้ไขข้อบกพร่อง
- เปลี่ยนชื่อ
LayoutCoordinates.introducesFrameOfReference
เป็นLayoutCoordinates.introducesMotionFrameOfReference
เพื่อให้สอดคล้องกับวัตถุประสงค์มากขึ้น เปลี่ยนชื่อฟังก์ชันที่เกี่ยวข้องเพื่อคำนวณพิกัดตาม Flag นั้น (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
ที่อนุญาตให้จัดรูปแบบลิงก์เป็นพารามิเตอร์ไปยังคอมโพสิชันข้อความแทน (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) LookaheadScope
API ทำงานได้อย่างเสถียรแล้ว (I21507)- เปลี่ยน Lambda การดําเนินการสําหรับ
getScrollViewportLength
ตามความคิดเห็นของสภา API (Ibc74a) - อัปเดต
GraphicsLayer
outline API เพื่อใช้พารามิเตอร์ float แทน int นำค่าUnsetOffset/UnsetSize IntSize
ที่ใช้เป็นตัวตรวจสอบออกเพื่อใช้ค่าคงที่ที่ไม่ระบุซึ่งมีอยู่แล้วในคลาสอินไลน์ขนาดและออฟเซ็ตที่อิงตาม 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()
เป็นประเภทที่ไม่ใช่ Null (I51f26)
การแก้ไขข้อบกพร่อง
- แก้ไขการจับภาพหน้าจอแบบยาวสำหรับคอนเทนเนอร์ที่เลื่อนด้วย
reverseScrolling=true
(I7c59c)
การมีส่วนร่วมจากภายนอก
- เพิ่มการรองรับการเรียกข้อมูลรายการล่วงหน้าใน
LazyLists
ที่ฝังอยู่ (เช่นLazyColumn
ที่แสดงผลLazyRows
ที่ฝังอยู่) การเปลี่ยนแปลงนี้คาดว่าจะช่วยลดเฟรมที่ลดลงขณะเลื่อนดูLazyLists
เหล่านี้ ค่าเริ่มต้นของการใช้งานคือการโหลดรายการที่ฝังไว้ 2 รายการแรกล่วงหน้า แต่คุณควบคุมลักษณะการทํางานนี้ได้ด้วยLazyLayoutPrefetchStrategy(nestedPrefetchItemCount)
และLazyListPrefetchStrategy#onNestedPrefetch
API ใหม่ (I51952)
เวอร์ชัน 1.7.0-alpha07
17 เมษายน 2024
androidx.compose.ui:ui-*:1.7.0-alpha07
ได้รับการปล่อยแล้ว เวอร์ชัน 1.7.0-alpha07 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- มีการทำเครื่องหมาย
ClickableText
ว่าเลิกใช้งานแล้ว หากต้องการเพิ่มลิงก์ลงในข้อความ ให้สร้างAnnotatedString
ที่มีLinkAnnotation
สอดคล้องกับลิงก์ของคุณ แล้วส่งAnnotatedString
นี้ไปยังคอมโพสิชันข้อความ (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) - นำ Flag ฟีเจอร์สําหรับภาพหน้าจอแบบยาวออกแล้ว (I28648, b/329128246)
- ตอนนี้
LazyColumn
จะแสดงผลส่วนหัวที่ติดแน่นอย่างถูกต้องในภาพหน้าจอแบบยาว (I8d239, b/329296635) - เราจะแทนที่แหล่งที่มา
NestedScroll
Drag และ Fling ด้วยUserInput
และSideEffect
เพื่อรองรับคำจำกัดความที่ขยายออกไปของแหล่งที่มาเหล่านี้ ซึ่งตอนนี้รวมภาพเคลื่อนไหว (ผลข้างเคียง) และแป้นพิมพ์และเมาส์ (UserInput
) ไว้ด้วย (I40579) - ตอนนี้
ApproachLayoutModifierNode
และModifier.approachLayout
ทำงานได้อย่างเสถียรแล้ว โดยมีisMeasurementApproachInProgress()
และisPlacementApproachInProgress()
ใหม่มาแทนที่isMeasurementApproachComplete()
และisPlacementApproachComplete()
เดิมตามลำดับ - นำตัวแก้ไข
intermediateLayout
ที่เลิกใช้งานแล้วออก (I3e91c) - เปลี่ยนชื่อ
GraphicsLayer#buildLayer
เพื่อบันทึกเพื่อมิเรอร์เมธอด 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
ไม่สามารถเป็นค่า Null ได้อีกต่อไป หากต้องการส่งรายการภาษาว่าง โปรดใช้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) - รองรับภาพหน้าจอแบบยาวในคอนเทนเนอร์การเลื่อนของเครื่องมือเขียนโดยใช้ Android API อย่างเป็นทางการ (
ScrollCaptureCallback
) ฟีเจอร์นี้อยู่ในขั้นทดลองและอาจจัดการกับบางกรณีอย่างไม่ถูกต้องในขณะนี้ ด้วยเหตุนี้ ระบบจึงปิดใช้ฟีเจอร์นี้โดยค่าเริ่มต้น หากต้องการเลือกใช้ ให้ตั้งค่า FlagComposeFeatureFlag_LongScreenshotsEnabled
เป็น "จริง" (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) - เมธอดตัวช่วยในการแปลง Android
RectF
เป็นComposeRect
(I39925, b/325660505) - ตอนนี้พารามิเตอร์
KeyboardOptions
ทั้งหมดมีค่าที่ไม่ระบุโดยค่าเริ่มต้น เพิ่มวิธีการKeyboardOptions.merge
แล้ว - เปลี่ยนชื่อ
KeyboardOptions.autoCorrect
เป็นautoCorrectEnabled
และกำหนดให้มีค่า Null ได้ ซึ่ง Null หมายถึงไม่มีการระบุค่า (Ia8ba0, b/295951492) - ตอนนี้ตัวแปร
BasicTextField(state)
และBasicSecureTextField
ใช้KeyboardActionHandler
แทนKeyboardActions
เพื่อประมวลผลการดำเนินการที่แป้นพิมพ์ซอฟต์แวร์ดำเนินการ (I58dda)
เวอร์ชัน 1.7.0-alpha05
20 มีนาคม 2024
androidx.compose.ui:ui-*:1.7.0-alpha05
ได้รับการปล่อยแล้ว เวอร์ชัน 1.7.0-alpha05 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เปิดตัว
GraphicsLayer
API ใหม่เพื่อบันทึกคําสั่งการวาดในรายการแสดงผล รวมถึงพร็อพเพอร์ตี้เพิ่มเติมที่ส่งผลต่อการเรนเดอร์รายการแสดงผล ซึ่งจะเป็นขอบเขตการแยกเพื่อแบ่งฉากที่ซับซ้อนออกเป็นชิ้นเล็กๆ ที่อัปเดตแยกกันได้โดยไม่ต้องสร้างฉากทั้งฉากขึ้นมาใหม่ การเปลี่ยนรูปแบบในGraphicsLayer
ทำได้โดยไม่ต้องบันทึกรายการที่แสดงอีกครั้งGraphicsLayer
ช่วยให้เรนเดอร์เนื้อหา Composable ในที่อื่นได้ ซึ่งแตกต่างจากModifier.graphicsLayer
และมีประโยชน์ใน Use Case ที่เป็นภาพเคลื่อนไหวซึ่งคาดว่าจะมีการเรนเดอร์เนื้อหาในฉากต่างๆ
การเปลี่ยนแปลง API
GraphicsLayer.draw(Canvas)
ไม่ใช่ API สาธารณะอีกต่อไป โปรดใช้ฟังก์ชันส่วนขยายDrawScope.drawLayer(GraphicsLayer)
แทนในการวาดเลเยอร์ (I7a7c0)- แยก
restrictedConstraints()
เป็น 2 วิธีการ ได้แก่fitPrioritizingWidth()
และfitPrioritizingHeight()
(I6d7fd) - เปิดตัว
HardwareCanvas
สแต็บสำหรับการใช้งาน Android L (I1c3b5, b/288494724) - อัปเดตเฟรมเวิร์ก Compose เพื่อแสดงองค์ประกอบ
GraphicsContext
ในพื้นที่ควบคู่ไปกับอัปเดตการใช้งาน Modifier ของ Owner,DelegateableNode
และdrawWithCache
เพื่อแสดงสิทธิ์เข้าถึงGraphicsContext
สำหรับการเข้าถึงแบบมีขอบเขตที่จะล้างอินสแตนซ์GraphicsLayer
โดยอัตโนมัติเมื่อมีการเลิกใช้งาน Modifier (I64a2f, b/288494724) - เปิดตัว
InterceptPlatformTextInput
เพื่อช่วยเขียนการทดสอบระดับต่ำที่เกี่ยวข้องกับ IME และ Use Case อื่นๆ ระดับต่ำของ IMEPlatformTextInputTestOverride
เลิกใช้งานแล้ว (I862ed, b/322680547) - เพิ่มฟังก์ชันส่วนขยาย
GraphicsLayer.setOutline(Outline)
แล้ว (Ib81f4) - แนะนำคอนสตรัคเตอร์ฟังก์ชัน
GraphicsContext
เพื่อสร้างโรงงานเพื่อสร้างอินสแตนซ์GraphicsLayer
(Ib98d6, b/288494724) - เปิดเผย
GraphicsLayer
API เพื่อให้นักพัฒนาแอปมีความยืดหยุ่นในการบันทึกคำสั่งวาดภาพที่สามารถใช้วาดที่อื่นได้ รวมถึงใช้เอฟเฟกต์ภาพต่างๆ กับผลลัพธ์สุดท้าย (I80245, b/288494724) - แนะนำ
Paragraph#getRangeForRect
ซึ่งจะแสดงผลช่วงข้อความที่ครอบคลุมพื้นที่สี่เหลี่ยมผืนผ้าที่ระบุ (Iee516, b/325660505) - นำการลบล้าง
BasicText
ด้วยอาร์กิวเมนต์onLinkClicked
เวอร์ชันทดลองออกแล้ว เราจะเปิดตัว API ที่จะมาแทนที่สำหรับการรองรับไฮเปอร์ลิงก์ในอนาคต (I107d5)
การแก้ไขข้อบกพร่อง
- เพิ่มคำจำกัดความของ
GraphicsLayer
expect/actual API เพื่อรองรับการบันทึกและเล่นคำสั่งวาดด้วยเอฟเฟกต์ภาพและการเปลี่ยนรูปแบบแบบคอมโพสิต (ไม่บังคับ) แนะนำอินเทอร์เฟซGraphicsContext
เพื่อเก็บข้อมูล Dependency ของกราฟิก รวมถึงการสร้างและการจัดการอินสแตนซ์GraphicsLayer
(I4a8d6, b/288494724) - แก้ไขปัญหาการทํางานร่วมกันกับการค้นหาโฟกัสแบบ 1 มิติที่โฟกัสจะติดอยู่ใน
ComposeView
ที่ฝังอยู่ในมุมมองอื่นๆ (I08fd4)
การมีส่วนร่วมจากภายนอก
LocalLifecycleOwner
ย้ายจาก UI ของ Compose ไปยังlifecycle-runtime-compose
เพื่อให้ใช้ API ตัวช่วยที่อิงตาม Compose นอก UI ของ Compose ได้ ขอขอบคุณ 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
การดำเนินการตามความหมายเพื่อให้ส่งข้อมูลเกี่ยวกับคอมโพเนนต์ที่เลื่อนในคอมโพสิทไปยังระบบ a11y ได้ CL นี้ยังมีผลกับการใช้พร็อพเพอร์ตี้ดังกล่าวในรายการที่เลื่อนได้ของ Foundation ด้วย (Ic5fa2) FocusRequester.createRefs
ทำงานได้อย่างเสถียรแล้ว (I4d92c, b/261436820)- เปิดตัว
DelegatableNode.requireView()
เพื่ออนุญาตให้โหนดตัวแก้ไขรับView
ของ Android ปัจจุบันโดยไม่ต้องอ่านคอมโพสิชันในเครื่อง (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
Semantics ที่ควรตั้งค่าในช่องข้อความที่กรองจำนวนอักขระสูงสุดที่อนุญาต (I24d9f, b/170648072) - เราเลิกใช้งาน
Modifier.inspectable
Wrapper แล้ว API นี้จะทําให้ตัวแก้ไขของคุณใช้งานไม่ได้มากกว่าที่จําเป็น เราจึงไม่แนะนําให้ใช้งาน เราขอแนะนำให้นักพัฒนาซอฟต์แวร์ใช้เมธอดinspectableProperties()
ในModifierNodeElement
หากต้องการแสดงพร็อพเพอร์ตี้ตัวแก้ไขต่อเครื่องมือ (Ib3236) - ตัวสร้างใหม่สําหรับ
PopupProperties
ซึ่งช่วยให้ควบคุม Flag ของWindowManager.LayoutParams
ได้อย่างเต็มที่ (Ibb33e, b/312485503) - เปิดตัว
DelegatableNode.requireLayoutCoordinates()
เป็นวิธีรับLayoutCoordinates
ปัจจุบันของModifier.Node
โดยไม่ต้องลบล้างonPlaced
และจัดเก็บพิกัดในพร็อพเพอร์ตี้ด้วยตนเอง (Ia8657) - เปิดตัว
DelegatableNode.currentLayoutCoordinates
เป็นวิธีรับLayoutCoordinates
ปัจจุบันของModifier.Node
โดยไม่ต้องลบล้างonPlaced
และจัดเก็บพิกัดในพร็อพเพอร์ตี้ด้วยตนเอง (Iaebaa) - ย้าย
BasicTextField2
และ API ที่เกี่ยวข้องในแพ็กเกจandroidx.compose.foundation.text2
ไปยังandroidx.compose.foundation.text
(I9f635) - เพิ่ม
ApproachLayoutModifierNode
API ใหม่เพื่อรองรับการสร้างตรรกะการเข้าถึงที่กำหนดเองในโหนดตัวแก้ไขที่ชัดเจน นอกจากนี้ เรายังได้เพิ่มDeferredTargetAnimation
API แบบทดลองใหม่สําหรับภาพเคลื่อนไหวที่ไม่ทราบเป้าหมายเมื่อสร้างอินสแตนซ์ (I60745) Path
API ใหม่สําหรับค้นหาทิศทางของเส้นทางและดึงข้อมูลเส้นขอบจากPath
(I63d04)- เพิ่ม
PathHitTest
และPath.contains(Offset)
เพื่อตรวจสอบว่าPath
มีจุดที่เฉพาะเจาะจงหรือไม่ (I3b218) - ตอนนี้
TextLayoutResult
แสดงเมธอดgetLineBaseline(lineIndex)
แล้ว ซึ่งช่วยให้อ่านบรรทัดฐานของข้อความบรรทัดใดก็ได้นอกเหนือจากพร็อพเพอร์ตี้อำนวยความสะดวกที่มีอยู่firstBaseline
และlastBaseline
(Ide4e8, b/237428541) - เพิ่มวิธีการเปรียบเทียบเฉพาะคำอธิบายประกอบของ
AnnotatedStrings
2 รายการ (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) - Semantics API ใหม่
unset()
เพื่อนำพร็อพเพอร์ตี้เชิงอรรถศาสตร์ที่เพิ่มในเชนตัวแก้ไขเดียวกันออก พร็อพเพอร์ตี้ความหมายใหม่isOpaque
(I8c583, b/317966058, b/246056649) - นํา
originalEventPosition
ออกจากเมธอดการคัดลอกใน API สาธารณะของPointerInputChange
แล้ว (I7bead)
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องด้าน a11y ซึ่งทำให้คลิกรายการที่ไม่ใช่แท็บและไม่ใช่ปุ่มตัวเลือกได้เมื่อเลือก (I2181c)
- ตอนนี้
VelocityTracker
จะมีวิธีแก้ไขสำหรับการเพิ่มคะแนนโดยค่าเริ่มต้น คุณยังคงปิดการแก้ไขได้โดยการตั้งค่าVelocityTrackerAddPointsFix
เป็นเท็จหากพบปัญหา (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
เพื่อรองรับเนื้อหาที่ไม่เจาะจง เช่น รูปภาพ - เพิ่ม
DeviceConfigurationOverride
API ลงใน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 เพื่อเลือกใช้เซสชันการลากและวาง ตอนนี้มีฟังก์ชันเริ่มต้น 2 รายการสําหรับDragAndDropModifierNode
1 รายการสำหรับรับการโอนและอีก 1 รายการสำหรับโอนข้อมูล (I69481) - อัปเดต
maximumFlingVelocity
ให้แสดงเป็น Float อัปเดตเอกสารประกอบให้ชัดเจนยิ่งขึ้นเกี่ยวกับmaximumFlingVelocity
unity (I8adc7) onDragAndDropStart
ในโรงงานDragAndDropModifierNode
ได้เปลี่ยนชื่อเป็นacceptDragAndDropTransfer
แล้วเพิ่มacceptsDragAndDropTransfer
ลงในตัวแก้ไขdragAndDropTarget
เพื่อยอมรับจากเซสชันการลากและวาง Lambda นี้จะแสดงผลDragAndDropTarget
ที่ใช้งานได้หากสนใจเซสชันการลากและวาง ฟังก์ชันนี้มาแทนที่ Lambda อื่นๆ สำหรับการประมวลผลเหตุการณ์การลาก เราได้เพิ่มฟังก์ชันDragAndDropTarget
ของโรงงานเพื่อรับจากเซสชันการลากและวาง (Iebf3a)นำ
DragAndDropInfo
ออกเนื่องจากตอนนี้DragAndDropModifierNode.drag
จะใช้พารามิเตอร์สำหรับtransferData
, ขนาดการตกแต่ง และการตกแต่งแบบลากDrawScope
lambdaDragAndDropTarget
มีเมธอดสําหรับเหตุการณ์การลากและวางที่เฉพาะเจาะจงแทนที่จะเป็นเมธอดนามธรรมเดียวonDragAndDropEvent
ในฟังก์ชันแฟกทอรีสําหรับDragAndDropModifierNode
ได้เปลี่ยนชื่อเป็นonDragAndDropStart
เพื่อสื่อให้เข้าใจได้ดีขึ้นว่าDragAndDropTarget
ที่ระบุใช้ได้กับเซสชันการลากและวางที่ระบุเท่านั้นระบบนำ
DragAndDropEventType
ออกแล้ว (I645b1)เปลี่ยนชื่อ
PlatformTextInputModifierNode.runTextInputSession
เป็นestablishTextInputSession
แล้ว (I03cd0)ปรับปรุงชื่อ API ของโหนดที่ไปยังได้เพื่อให้เข้าใจได้ง่ายขึ้น (Ia4474)
แทนที่
OriginalText
ด้วยTextSubstitution
(Ifa5a8)เปลี่ยนชื่อ
PlatformTextInputModifierNode.textInputSession
เป็นrunTextInputSession
แล้ว (Ie9c6b)รายการย่อยของ
SubcomposeLayout
(และเลย์เอาต์อย่างLazyColumn
ที่อิงตามSubcomposeLayout
) ซึ่งเก็บไว้เพื่อใช้ซ้ำในอนาคตจะถือว่าปิดใช้งาน เราได้เปิดตัวassertIsDeactivated()
test API ใหม่เพื่อทดสอบโหนดดังกล่าว ส่วน API ทดสอบที่เหลือจะกรองโหนดที่ปิดใช้งานออกโดยค่าเริ่มต้น (I2ef84, b/187188981)นำ
FocusDirection.In
และFocusDirection.Out
ออก และใช้FocusDirection.Enter
และFocusDirection.Exit
แทน (I2f660)ตอนนี้ Material
SwipeToReveal
API (สําหรับการ์ดและชิป) จะใช้ API ตามช่อง (ตามที่ Compose แนะนํา) แทนอินสแตนซ์ตามคลาสข้อมูลเพื่อสร้างช่องเหล่านั้น การเปลี่ยนแปลงนี้เป็นการเปลี่ยนแปลงที่ส่งผลต่อการใช้งาน โปรดดูตัวอย่างวิธีใช้ API ใหม่ในเดโมและโค้ดตัวอย่าง (Ia8943)เลิกใช้งานตัวสร้าง
FontStyle(int)
แล้ว โปรดใช้FontStyle.Normal
หรือFontStyle.Italic
แทน (I66610)เปลี่ยนชื่ออินเทอร์เฟซ
FontScalable
เป็นFontScaling
(Ie804a)
การแก้ไขข้อบกพร่อง
SoftwareKeyboardController.show()
จะไม่แสดงแป้นพิมพ์ซอฟต์แวร์อีกต่อไปหากไม่มีโฟกัสเครื่องมือแก้ไขข้อความ (I2165a, b/301477279)- ระบบจะไม่สนใจเหตุการณ์ "ขึ้น" ของแป้นฮาร์ดแวร์สำหรับแป้นที่ยังไม่ได้รับการกด "ลง" ในมุมมองการเขียนเดียวกัน (Ib37b4, b/305518328)
- เพิ่มการรองรับโปรแกรมแสดงผลสําหรับการไล่สีแบบไล่เฉดใน
ArcLine
(I4d5bb) - ใช้ equals และ hashcode สำหรับ
PageSize.Fixed
(Ie3ede, b/300134276) - แก้ไขปัญหาความเข้ากันได้ของไบนารีกับการเปลี่ยนแปลงระยะขอบหน้าต่าง (Iee695)
- นําเลเยอร์หลักของ Material ออกสําหรับชิป/ปุ่ม Material3 เนื่องจากการทดสอบประสิทธิภาพแบบไมโครเบนช์มาร์กแสดงประสิทธิภาพที่ดีขึ้นเมื่อไม่มีเลเยอร์นี้ (I55555)
- ระบบจะใช้
TestDispatcher
ที่ส่งเป็นeffectContext
ไปยังการทดสอบการคอมโพสิชันเพื่อสร้างการทดสอบและนาฬิกาเฟรม (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
ได้เปลี่ยนชื่อพารามิเตอร์ size เป็นdragDecorationSize
(Id0e30, b/303904810)- แนะนำ
SemanticsNodeInteraction.isDisplayed()
และSemanticsNodeInteraction.isNotDisplayed()
เพื่อตรวจสอบว่าโหนดที่ตรงกันแสดงอยู่หรือไม่โดยไม่ต้องยืนยันโหนดดังกล่าวด้วย (I2c196, b/302100809) - เปิดตัวค่า
Unspecified
พิเศษสําหรับช่องTextAlign
,TextDirection
,Hyphens
และLineBreak
ของParagraphTextStyle
เพื่อแทนที่null
เนื่องจากคลาสเหล่านี้เป็นคลาสอินไลน์ เราจึงหลีกเลี่ยงการแปลงประเภทพื้นฐานโดยแทนที่ nullable ด้วย Unspecified เราได้อัปเดตคอนสตรัคเตอร์ Getter และเมธอดอื่นๆ ในสไตล์TextStyle
และ Paragraph เพื่อยอมรับพารามิเตอร์ที่กล่าวถึงเป็นประเภทที่ไม่ใช่ Null (I4197e, b/299490814) - เพิ่มการโอเวอร์โหลด
GoogleFont
สำหรับการอ่านGoogleFont
จาก XML (If8f59) - เปลี่ยน
LoremIpsum
PreviewParameterProvider
เป็นชั้นเรียนแบบเปิด (I41bf5, b/266918816, b/300116360)
การแก้ไขข้อบกพร่อง
- ตอนนี้
FontFamilyResolver
ใช้Dispatchers.Main
สำหรับโคโริวทีนการจัดการแคช (Ie8dd9) - ตอนนี้
AndroidViewBinding
จะนําอินสแตนซ์Fragment
ที่เพิ่มเข้ามาโดยรวมFragmentContainerView
ไว้ในเลย์เอาต์เป็นส่วนหนึ่งของonRelease
ออกอย่างสอดคล้องกันโดยใช้commitNow
(แทนที่จะเป็นcommit
ที่ใช้ก่อนหน้านี้) จึงแก้ไขปัญหาเกี่ยวกับเมธอดของ "การแก้ไขแบบเรียลไทม์" ในการแทนที่องค์ประกอบเมื่อมีการเปลี่ยนแปลง (I58fbf)
เวอร์ชัน 1.6.0-alpha07
4 ตุลาคม 2023
androidx.compose.ui:ui-*:1.6.0-alpha07
ได้รับการปล่อยแล้ว เวอร์ชัน 1.6.0-alpha07 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เปิดตัว
PlatformTextInputMethodTestOverride
สำหรับการเขียนทดสอบสำหรับเครื่องมือแก้ไขข้อความที่กำหนดเอง (Id159b) - เพิ่มตัวแก้ไข
dragAndDropSource
สำหรับเริ่มเซสชันการลากและวาง และตัวแก้ไขdragAndDropTarget
สำหรับรับจากเซสชันการลากและวาง (Ib7828, b/286038936) - เพิ่มคอลเล็กชัน
ColorList
และColorSet
ที่หลีกเลี่ยงการจัดสรร (I744bd) - เพิ่ม Flag ชั่วคราว
DisableNonLinearFontScalingInCompose
เพื่อปิดใช้การปรับขนาดแบบอักษรที่ไม่ใช่แบบเชิงเส้น ตั้งค่าDisableNonLinearFontScalingInCompose = true
ในการทดสอบหากต้องการเวลาในการล้างข้อมูล เราจะนำ Flag นี้ออกใน 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()
callback ไปยังตัวปรับแต่งfocusRestorer()
(Ie1d43) - เพิ่มคำอธิบายประกอบ androidx ลงใน API กราฟิกต่างๆ เพื่อระบุ
ColorInt
,FloatRange
,IntRange
,Size
และอื่นๆ (Id65c8, b/290950582) - เพิ่ม
showSystemUi=true
ลงในคำจำกัดความของPreviewScreenSizes
(Ib61d3)
การเปลี่ยนแปลงลักษณะการทำงาน
- ตอนนี้เครื่องมือเขียนใช้การปรับขนาดแบบอักษรที่ไม่ใช่แบบเชิงเส้นเพื่อให้อ่านและเข้าถึงได้ง่ายขึ้น เมื่อขนาดแบบอักษรมากกว่า 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) - ความเร็วในการปัดในคอมโพเนนต์มุมมอง เช่น
ScrollView
และRecyclerView
จะจำกัดอยู่ที่ViewConfiguration.ScaledMaximumFlingVelocity
ตอนนี้เครื่องมือเขียนมีmaximumFlingVelocity
เวอร์ชันของตัวเองซึ่งใช้กับDraggable
(Ibf974) - เพิ่มสคาฟเฟอลิ่งเริ่มต้นเพื่อรองรับ API การลากและวางของแพลตฟอร์ม (If84ce)
- เพิ่ม
deviceId
ลงในRotaryScrollEvent
(Iba3bf) - อัปเดต
ui-tooling
Devices 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 ลงใน API กราฟิกต่างๆ เพื่อระบุ
ColorInt
,FloatRange
,IntRange
,Size
และอื่นๆ (I70487, b/290950582) - อัปเดต
ColorFilter
API ให้มีประเภทคลาสย่อยที่ชัดเจนเพื่อปรับปรุงความสามารถในการตรวจสอบพารามิเตอร์ (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
จาก true เป็น false ขณะที่มีโฟกัส (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)
การแก้ไขข้อบกพร่อง
- ตอนนี้การเรียกใช้ครั้งแรกของ
update
callback ของAndroidView
จะเลื่อนออกไปจนกว่าจะมีการแนบมุมมองแทนที่จะทำงานเมื่อใช้คอมโพสิชันที่นําเสนอ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 เป็นเท็จโดยค่าเริ่มต้นในเครื่องมือเขียน
ตอนนี้ includeFontPadding
เป็นเท็จโดยค่าเริ่มต้น (21d806) ในโหมดเขียน
includeFontPadding
เป็นแอตทริบิวต์เดิมที่ควบคุมว่าจะใส่ระยะห่างจากขอบด้านบนเพิ่มเติมเหนือบรรทัดแรกและบรรทัดสุดท้ายของข้อความหรือไม่เพื่อให้รองรับอักขระที่อาจยื่นออกมาเหนือหรือใต้บรรทัดฐานของข้อความ
การอัปเดตเวอร์ชันการเขียนนี้จะเป็นการแก้ไขวิธีแสดงผลข้อความทั้งหมดใน 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
ได้ในเอกสารประกอบสำหรับนักพัฒนาซอฟต์แวร์และบล็อกโพสต์นี้
หากพบปัญหา/ข้อบกพร่องที่เกี่ยวข้องกับการเปลี่ยนแปลงนี้ โปรดรายงานข้อบกพร่องโดยใช้เครื่องมือติดตามปัญหา
การเปลี่ยนแปลง API
- การสนับสนุน
InputConnection#requestCursorUpdates
(I0c69b) - เพิ่ม
FocusRequester.saveFocusedChild
และFocusRequester.restoreFocusedChild
(Ic557e, b/272302679, b/275157318) - เพิ่มประเภท
ResourceResolutionException
เพื่อรวมรายการที่โยนเมื่อพยายามโหลดชิ้นงานบิตแมปพร้อมคําอธิบายเส้นทางชิ้นงานที่โหลดไม่สําเร็จ (I19f44, b/230166331, b/278424788) - เพิ่มประสิทธิภาพการช่วยเหลือพิเศษเพื่อประสิทธิภาพและการจองหน่วยความจำ (Iede48)
- เพิ่มพร็อพเพอร์ตี้และการดำเนินการเชิงความหมายเพื่อรองรับการแปลข้อความ (I4a6bc)
- พร็อพเพอร์ตี้ใหม่ใน
IntrinsincMeasureScope
และการใช้งาน (เช่นMeasureScope
) เพื่อระบุว่าการวัดในปัจจุบันเป็นการวัดแบบมองไปข้างหน้าหรือไม่ (I7a812) - อัปเดต
DrawScope
api เพื่อเปิดตัวความสามารถในการกำหนดเป้าหมายการแสดงผลใหม่ไปยัง Canvas อื่นที่มีความละเอียด/ทิศทางเลย์เอาต์และขนาดอื่น - อัปเดต
DrawContext
เพื่อรองรับการกำหนดค่าความหนาแน่นและทิศทางเลย์เอาต์ รวมถึงทำให้กำหนดค่าแคนวาสได้ (Ie1f9b, b/225408150) - เพิ่ม
Paragraph#fillBoundingBoxes
เพื่อคํานวณกรอบขอบเขตของตัวละคร (If30ee) - เพิ่มชุด
MultiPreviews
ทั่วไป (Ia5a27)
การแก้ไขข้อบกพร่อง
- เพิ่มอินเทอร์เฟซ
FocusTargetModifierNode
ที่ใช้สร้างFocusTarget
ที่กำหนดเองได้ (I9790e) - เปลี่ยนชื่อพารามิเตอร์
fallback*
ในเครื่องมือสร้างTextMeasurer
เป็นdefault*
(I940a5) - เปลี่ยนชื่อ
SemanticsPropertyReceiver.performImeAction
เป็นonImeAction
และSemanticsActions.PerformImeAction
เป็นOnImeAction
(I8e841) - เพิ่มล้อเพื่อแยกการเลื่อนเมาส์จากการลากในการเลื่อนที่ซ้อนกัน (โดยเฉพาะใน
NestedScrollConnection
) (Ie57e4) - เพิ่ม
asComposePaint
API เพื่อแทนที่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
จาก true เป็น false ขณะที่มีโฟกัส (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)
- แก้ไขปัญหาเกี่ยวกับคอมโพสิชันกล่องโต้ตอบและป๊อปอัปที่อาจส่งผลให้หน้าต่างย่อยไม่ปรับขนาดตามที่คาดไว้เมื่อ
usePlatformDefaultWidth=true
(I112ee)
เวอร์ชัน 1.5.0-beta02
7 มิถุนายน 2023
androidx.compose.ui:ui-*:1.5.0-beta02
ได้รับการปล่อยแล้ว เวอร์ชัน 1.5.0-beta02 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม
asComposePaint
API เพื่อเปิดใช้อินสแตนซ์android.graphics.Paint
ที่ใช้กับ Compose
การแก้ไขข้อบกพร่อง
- เพิ่ม
asComposePaint
API เพื่อแทนที่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) - การเปลี่ยนชื่อพร็อพเพอร์ตี้เชิงอรรถศาสตร์
isContainer
เป็นisTraversalGroup
(I121f6) - ตอนนี้
ColorProducer
มีoperator fun invoke
แทนproduce
(I4a9a2) - เพิ่ม
Path
transform 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) - ปรับปรุง Text 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 ที่เกี่ยวข้องไม่ใช่ API เวอร์ชันทดลองอีกต่อไป (I74647, b/261581753)- เพิ่มการดำเนินการตามความหมาย
PerformImeAction
เพื่อเรียกการดำเนินการ IME ในโหนดเครื่องมือแก้ไขข้อความ (Ic606f, b/269633506) PlatformTextInput
API ไม่ใช่เวอร์ชันทดลองสำหรับ Android อีกต่อไป (I668eb)- เปลี่ยนชื่อพารามิเตอร์ค่าสำหรับ
Enum.valueOf
(Ia9b89) - more thrown exceptions from enum valueOf (I818fe)
- เปิดตัว
PlatformTextInputAdapter
API ระดับล่างใหม่สําหรับการสร้างการใช้งานการป้อนข้อความที่กําหนดเองซึ่งสื่อสารกับ 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
ซึ่งทำได้ด้วยdelegate
และundelegate
API ก่อนที่จะมีการเปลี่ยนแปลงนี้ API ทุกรายการจากโหนดที่มอบสิทธิ์ต้องมอบสิทธิ์ไปยังโหนดที่มอบสิทธิ์อย่างชัดเจน หลังจากการเปลี่ยนแปลงนี้ อินเทอร์เฟซโหนดจะได้รับมอบสิทธิ์โดยนัย เว้นแต่DelegatingNode
จะลบล้างอินเทอร์เฟซเหล่านั้นอย่างชัดเจน (67352bc)
การเปลี่ยนแปลง API
- แนะนำ
NestedScrollModifierNode
ซึ่งเป็นNestedScroll Modifier.Node
ที่มอบสิทธิ์ให้ (I69513) - เพิ่มพารามิเตอร์
onReset
และonRelease
ลงในคอมโพสิชันAndroidViewBinding
ซึ่งจะทํางานแบบเดียวกับคอมโพสิชันAndroidView
และเปิดใช้การรองรับการใช้มุมมองซ้ำด้วยViewBinding
(I00b1e, b/276802519) - อัปเดต Compose Path API เพื่อรองรับการดำเนินการกรอกลับเพื่อรองรับ Use Case ของการจัดการ Path ที่พบบ่อยด้วยการนำกลับมาใช้ซ้ำได้เร็วขึ้น (I7b797)
- เพิ่ม
TextStyle.merge(...)
ที่เพิ่มประสิทธิภาพแล้วพร้อมรายการพารามิเตอร์ทั้งหมด (Iad234, b/246961787) - ปรับปรุง Text API หลายรายการให้เสถียร ซึ่งรวมถึง
Brush
,DrawStyle
,TextMotion
,DrawScope.drawText
,Paragraph.paint(Brush)
,MultiParagraph.paint(Brush)
(I2f740, b/261581564, b/261581931, b/261561245) PlatformTextStyle.includeFontPadding
เลิกเลิกใช้งานแล้ว เดิมเราตั้งใจจะนําช่องนี้ออก แต่ความคิดเห็นแสดงให้เห็นว่านักพัฒนาแอปจําเป็นต้องใช้ตัวเลือกการกําหนดค่านี้ จึงนําการเลิกใช้งานออกจากช่อง (I98e96, b/277703184)
การแก้ไขข้อบกพร่อง
- แก้ไขการถดถอยที่แป้นพิมพ์ไม่แสดงในช่องข้อความภายในกล่องโต้ตอบที่ไม่ได้สร้างโดยคอมโพสิเบิล
Dialog
(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
เริ่มต้นใหม่ที่ใช้นโยบายการวัดซ้ำจากการส่งผ่านการมองไปข้างหน้าช่วยให้SubcomposeLayout
ย่อยที่ไม่มีช่องแบบมีเงื่อนไข เช่นScaffold
,TabRow
และBoxWithConstraints
ทํางานร่วมกับการมองไปข้างหน้าได้โดยค่าเริ่มต้น (Id84c8)- ตอนนี้เครื่องมือจัดเรียงใหม่ที่สร้างสำหรับหน้าต่าง 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
SubcomposeLayout
API ใหม่ที่จะใช้นโยบายการวัดผลระดับกลางเพิ่มเติมในการจัดการตรรกะการวัดผล/เลย์เอาต์ระหว่างภาพเคลื่อนไหวที่อิงตามการมองไปข้างหน้า (I017d3)- ตอนนี้ PointerInput ทำงานแบบ Lazy และใช้ 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 ซึ่งไม่ใช่เลย์เอาต์อีกต่อไป ซึ่งจะช่วยให้ MeasurePolicy ของรายการหลักควบคุมเนื้อหาย่อยใน LookaheadScope ได้โดยตรง (Ibe2e5)
- เพิ่ม
Modifier.Node#coroutineScope
เพื่ออนุญาตให้ Modifier.Nodes เปิดใช้งาน coroutine (I76ef9) - อนุญาตให้ Modifier.Nodes อ่าน CompositionLocals โดยใช้อินเทอร์เฟซ CompositionLocalConsumerModifierNode (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) - แก้ไขการถดถอยที่แป้นพิมพ์ไม่แสดงในช่องข้อความภายในกล่องโต้ตอบที่ไม่ได้สร้างโดยคอมโพสิเบิล
Dialog
(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
- เพิ่ม
PinnableContainer
API ใหม่ที่อนุญาตให้ปักหมุดรายการในรายการแบบ Lazy ไว้เพื่อไม่ให้ระบบทิ้งรายการเหล่านั้นเมื่อเลื่อนออกนอกขอบเขต ตัวอย่างเช่นModifier.focusable()
ใช้กลไกนี้เพื่อปักหมุดรายการที่โฟกัสอยู่ในปัจจุบัน (Ib8881, b/259274257, b/195049010) - ระบบโฟกัสได้รับการเขียนใหม่โดยใช้
Modifier.Node
API เวอร์ชันทดลองใหม่ (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589) - เพิ่มในพร็อพเพอร์ตี้
IsContainer
semantics ใน 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
ซึ่งช่วยให้ใช้อินสแตนซ์ของมุมมองซ้ำได้เมื่อมีการทิ้งโหนดในองค์ประกอบและนํากลับมาใช้ใหม่ในลักษณะที่เข้ากันได้ ซึ่งจะเป็นประโยชน์อย่างยิ่งสำหรับLazyRows
และLazyColumns
ของยอดดู (I3f10d, b/230099236) - เปิดตัว
PlatformTextInputAdapter
API ระดับล่างใหม่สําหรับการสร้างการใช้งานการป้อนข้อความที่กําหนดเองซึ่งสื่อสารกับ API ของแพลตฟอร์มโดยตรง (I58df4)
การแก้ไขข้อบกพร่อง
- ตอนนี้การดำเนินการตามความหมาย
SetText
ของBasicTextField
จะอัปเดตบัฟเฟอร์ข้อความโดยใช้เส้นทางโค้ดเดียวกับการอัปเดต IME และฟังก์ชันการทดสอบ (เช่นperformTextReplacement
) - ตอนนี้ฟังก์ชันการทดสอบข้อความ
performTextClearance
,performTextReplacement
และperformTextSelection
ใช้SemanticsActions
(I0807d, b/269633168, b/269624358)
เวอร์ชัน 1.4.0-beta02
22 กุมภาพันธ์ 2023
androidx.compose.ui:ui-*:1.4.0-beta02
ได้รับการปล่อยแล้ว เวอร์ชัน 1.4.0-beta02 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- นำ
modifierElementOf()
API ออก โปรดขยายเวลาจากModifierNodeElement
โดยตรงแทน (I2256b) - เพิ่มการเรียกกลับ
Modifier.Node.onReset()
ใหม่ที่ช่วยให้คุณรีเซ็ตสถานะในเครื่องบางส่วนเพื่อจัดการกรณีที่จะใช้Layout
ซ้ำได้อย่างเหมาะสม (เช่น เป็นรายการของLazyColumn
) แก้ไขFocusTargetModifierNode
ให้รีเซ็ตสถานะที่โฟกัสได้อย่างเหมาะสม (I65495, b/265201972) - เพิ่มพารามิเตอร์
BlendMode
ลงในเมธอดDrawScope.drawText
,Paragraph.paint
และMultiParagraph.paint
เพื่อรองรับอัลกอริทึมการผสมผสานที่แตกต่างกันเมื่อวาดข้อความบน Canvas (I57508)
การแก้ไขข้อบกพร่อง
- ปรับปรุงอัลกอริทึมลำดับโฟกัสการช่วยเหลือพิเศษ เช่น แถบด้านบน/ด้านล่างจะอ่านเป็นลำดับแรก/สุดท้ายบ่อยขึ้นตามลำดับ (74e9c5)
เวอร์ชัน 1.4.0-beta01
8 กุมภาพันธ์ 2023
androidx.compose.ui:ui-*:1.4.0-beta01
ได้รับการปล่อยแล้ว เวอร์ชัน 1.4.0-beta01 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เปลี่ยนชื่อ
PinnableContainer.PinnedHandle.unpin()
เป็นrelease()
แล้ว (I4667a) - เพิ่ม
waitUntilNodeCount
,waitUntilAtLeastOneExists
,waitUntilExactlyOneExists
และwaitUntilDoesNotExist
เป็น API เวอร์ชันทดลองในComposeTestRule
ซึ่งขยาย APIwaitUntil
ให้ยอมรับตัวจับคู่และจำนวนโหนดใดก็ได้ ดูเอกสารประกอบเพิ่มเติมได้ที่ComposeTestRule
(Ifa1b9, b/226934294) - เปลี่ยนชื่อ
Font.MaximumAsyncTimeout
เป็นFont.MaximumAsyncTimeoutMillis
(I07af5) - นํา
GoogleFont.Provider.AllFontsListUri
ออกและลิงก์กับ 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) - ประเภท/Nullability เพิ่มเติมของฟังก์ชันแบบอินไลน์/ฟังก์ชันที่เลิกใช้งานแล้ว (I24f91)
- เพิ่ม
AnnotatedString.hasStringAnnotations
เพื่อค้นหาคำอธิบายประกอบที่มีการกําหนดค่าเป็น 0 (I94dfe, b/246960758) - เพิ่มการโอเวอร์โหลดใหม่สำหรับฟังก์ชัน
TextMeasurer.measure
ซึ่งรับString
เป็นข้อความ (I47b2d, b/242705342) LineBreak
และHyphens
API ใน 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 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เพิ่ม
PinnableContainer
API ใหม่ที่อนุญาตให้ปักหมุดรายการในรายการแบบ Lazy ไว้เพื่อไม่ให้ระบบทิ้งรายการเหล่านั้นเมื่อเลื่อนออกนอกขอบเขต เช่นModifier.focusable()
ใช้กลไกนี้เพื่อปักหมุดรายการที่โฟกัสอยู่ในปัจจุบัน (Ib8881, b/259274257, b/195049010) - ระบบโฟกัสได้รับการเขียนใหม่โดยใช้
Modifier.Node
API เวอร์ชันทดลองใหม่ (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
แสดงว่าเป็นการเรียกใช้ฟังก์ชันคอมโพสิเบิลในบรรทัด อย่างไรก็ตาม ค่าอาจเป็นเท็จสำหรับการเรียกใช้ฟังก์ชันคอมโพสิเบิลแบบอินไลน์ที่มาจากโมดูลที่คอมไพล์ด้วยปลั๊กอินคอมไพเลอร์คอมโพสิเบิลเวอร์ชันที่ไม่ได้สร้างข้อมูลฟังก์ชันแบบอินไลน์ (Idb846) - เปลี่ยน API เวอร์ชันทดลองจำนวนหนึ่งเป็นเวอร์ชันที่เสถียร
- Rotary Scroll Event API พร้อมใช้งานอย่างเสถียรแล้ว (I42ad3, b/261561229)
FontVariation
API พร้อมใช้งานอย่างเสถียรแล้ว (I8779f, b/241016309)- ตอนนี้ตัวสร้าง
Font()
ทั้งหมดเป็น API ที่เสถียรแล้ว (I5948b, b/261435386) DeviceFontFamilyName
เวอร์ชันนี้เสถียรแล้ว (I8b640, b/261435386)- ตอนนี้
AndroidFont
constructor ที่มีvariationSettings
เป็น API ที่เสถียรแล้ว และสามารถใช้เพื่อสร้างตัวระบุแบบอักษรประเภทใหม่ได้ (I5adcc, b/261565807) createFontFamilyResolver
API ทำงานได้อย่างเสถียรแล้ว ซึ่งสามารถใช้เพื่อจับข้อยกเว้นที่ไม่ได้รับการจัดการระหว่างการโหลดแบบแอซิงค์ (Ibb481, b/261435386)Font.loadingStrategy
API ทำงานได้อย่างเสถียรแล้ว (I5937c, b/261435386)GoogleFont
API ทำงานได้อย่างเสถียรแล้ว (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 โดยใช้กฎการคอมโพสิท ระบบจะไม่ส่งต่อการดำเนินการต่อที่กลับมาทำงานระหว่างการเรียกคืน
withFrameNanos
จนกว่าการเรียกคืนเฟรมทั้งหมดจะทำงานเสร็จ ซึ่งจะตรงกับลักษณะการทํางานของคอมโพซเมื่อทํางานตามปกติ อย่างไรก็ตาม การทดสอบที่อาศัยลักษณะการทำงานแบบเก่าอาจไม่สําเร็จ ซึ่งควรส่งผลต่อโค้ดที่เรียกwithFrameNanos
หรือwithFrameMillis
โดยตรงเท่านั้น และมีตรรกะนอก Callback ที่ส่งไปยังฟังก์ชันเหล่านั้น ซึ่งอาจต้องย้ายไปไว้ภายใน Callback ดูตัวอย่างการเปลี่ยนแปลงการทดสอบภาพเคลื่อนไหวใน CL นี้ - เพิ่มพารามิเตอร์
onPerformTraversals: (Long) -> Unit
ที่ไม่บังคับลงในคอนสตรัคเตอร์TestMonotonicFrameClock
และฟังก์ชันแฟกทอรีเพื่อเรียกใช้โค้ดหลังจากการเรียกกลับwithFrameNanos
แต่ก่อนที่จะดำเนินการโคโรทีนของผู้เรียกต่อ (Idb413, b/254115946, b/222093277, b/255802670) - เพิ่ม EmojiCompat ลงใน "เขียน" (Ibf6f9, b/139326806)
- เพิ่มพารามิเตอร์วอลเปเปอร์ใหม่ลงใน
@Preview
เพื่อรองรับสีแบบไดนามิก (I9f512)
การแก้ไขข้อบกพร่อง
- ตอนนี้ระบบจะส่งการแจ้งเตือนการใช้ภาพรวมหลังจากที่
Recomposer
ใช้การเปลี่ยนแปลงเสร็จแล้ว (Iad6c0, b/222093277) - เปิดตัวการเปลี่ยนแปลงใน
captureToImage
เพื่ออนุญาตให้จับภาพหน้าจอหลายหน้าต่าง ซึ่งจะมีประโยชน์สำหรับการทดสอบภาพหน้าจอที่ใช้ป๊อปอัปการเขียน (I169c5)
การอัปเดตทรัพยากร Dependency
- ตอนนี้ Compose UI และ Compose Material ขึ้นอยู่กับ 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
ตามฟังก์ชันขนาดของ Composable (If8c43,b/181387080) - เปิดตัว
CompositingStrategy
เพื่อระบุกรณีที่ควรใช้ประโยชน์จากเลเยอร์การคอมโพสนอกหน้าจอสำหรับการเรนเดอร์เนื้อหาgraphicsLayer
อัตโนมัติจะรักษาลักษณะการทำงานเริ่มต้นซึ่งใช้ประโยชน์จากเลเยอร์ภายในหากใช้อัลฟ่าหรือRenderEffect/Overscroll
เสมอจะแสดงบัฟเฟอร์นอกหน้าจอเสมอ โดยที่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()
เนื่องจากforEachGesture()
อาจทำให้เหตุการณ์สูญหายระหว่างการใช้ท่าทางสัมผัส (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 บันทึกสถานะของมุมมองการเขียน (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 (การเปลี่ยนแปลงที่ทําให้ลักษณะการทํางานแตกต่างไปสําหรับระบบการออกแบบที่กําหนดเองบางระบบ - เหตุผลในบันทึกประจำรุ่น beta01)
- การปรับปรุง 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)
การแก้ไขข้อบกพร่อง
- ตอนนี้
BackHandler
API ของ AndroidX Activity ทํางานภายในคอมโพสิชันDialog
แล้ว (I35342)
เวอร์ชัน 1.3.0-beta02
7 กันยายน 2022
androidx.compose.ui:ui-*:1.3.0-beta02
ได้รับการปล่อยแล้ว เวอร์ชัน 1.3.0-beta02 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มการโอเวอร์โหลดเวอร์ชันทดลองสําหรับเลย์เอาต์ที่ยอมรับรายการ Lambda เนื้อหาแบบคอมโพสิเบิลหลายรายการ ซึ่งช่วยให้จัดการข้อมูลการวัดผลที่ใส่ไว้ใน Lambda เนื้อหาต่างๆ ได้แตกต่างกัน (Ic1b4e)
การเปลี่ยนแปลง Focus 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
สามารถใช้ในพร็อพเพอร์ตี้โฟกัสต่อไปนี้ได้ ขึ้น ลง ซ้าย ขวา ถัดไป ก่อนหน้า เริ่ม จบ เข้า และออก (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
ที่เกี่ยวข้องซึ่งสร้างอินสแตนซ์นั้น
กล่าวโดยคร่าวๆ ก็คือ การแยกความคิดนี้จะเป็นกลไกทางเลือกในการสร้างตัวแก้ไขที่มีสถานะโดยไม่ต้องอาศัยกลไกของ Modifier.composed
API
ความเสี่ยง
การเปลี่ยนแปลงนี้เข้ากันได้กับไบนารีของรุ่นก่อนหน้าอย่างเคร่งครัด และมีไว้เพื่อให้เข้ากันได้แบบย้อนหลังในแง่ของลักษณะการทำงานที่สังเกตได้มากที่สุดเท่าที่จะเป็นไปได้ อย่างไรก็ตาม ยังมีระบบย่อยบางส่วนของคอมโพสิชันที่การรีแฟกทอริงนี้ไม่ได้แตะต้อง และมีแนวโน้มที่ลักษณะการทํางานจะเปลี่ยนแปลงในลักษณะที่การทดสอบของเราไม่ได้ครอบคลุมและยังไม่พบและแก้ไข
โปรดอัปเกรดเป็นรุ่นนี้ด้วยความระมัดระวัง โปรดแจ้งให้เราทราบหากคิดว่าการดำเนินการนี้ทำให้คุณพบปัญหา
API เวอร์ชันทดลอง
เราได้เพิ่ม API เวอร์ชันทดลองต่างๆ ซึ่งทั้งหมดเกี่ยวข้องกับแนวคิดใหม่ของ "โหนดตัวแก้ไข" Modifier.Node สร้างขึ้นจาก
fun modifierElementOf(…): Modifier
abstract class ModifierNodeElement
abstract class Modifier.Node
abstract class DelegatingNode
interface LayoutModifierNode
interface DrawModifierNode
interface SemanticsNode
interface PointerInputNode
interface ModifierLocalNode
interface ParentDataModifierNode
interface LayoutAwareModifierNode
interface GlobalPositionAwareModifierNode
interface IntermediateLayoutModifierNode
การเปลี่ยนแปลงที่ทําให้ลักษณะการทํางานเปลี่ยนแปลง
ระยะห่างสูงสุดที่รองรับในกล่องโต้ตอบและป๊อปอัปลดลงเหลือ 8dp
ระยะห่างสูงสุดที่รองรับสำหรับกล่องโต้ตอบและป๊อปอัปเขียนลดลงจาก 30dp เป็น 8dp การเปลี่ยนแปลงนี้จะส่งผลต่อทั้งกล่องโต้ตอบและป๊อปอัปที่กําหนดเองของ Material และ UI การเปลี่ยนแปลงนี้ทำเพื่อลดข้อบกพร่องด้านการช่วยเหลือพิเศษใน Android เวอร์ชันที่ต่ำกว่า S และเพื่อให้มั่นใจว่าบริการการช่วยเหลือพิเศษในหน้าต่างเหล่านั้นสามารถโต้ตอบกับเนื้อหาในกล่องโต้ตอบหรือป๊อปอัปได้
การเปลี่ยนแปลงนี้จะส่งผลต่อคุณก็ต่อเมื่อคุณสร้างกล่องโต้ตอบหรือป๊อปอัปที่กําหนดเองโดยตั้งค่าระดับการยกระดับไว้สูงกว่า 8dp ลองลดระดับของกล่องโต้ตอบหรือป๊อปอัป หากต้องการเลือกไม่ใช้ลักษณะการทำงานใหม่นี้ ให้ลองแยกกล่องโต้ตอบหรือป๊อปอัปของคุณเองโดยตั้งค่าระดับที่ต้องการ เราไม่แนะนำให้ใช้วิธีนี้เนื่องจากอาจส่งผลเสียต่อการช่วยเหลือพิเศษ และต้องอาศัยนักพัฒนาแอปในการทำให้ส่วนล่างของกล่องโต้ตอบหรือป๊อปอัปโต้ตอบได้และบริการการช่วยเหลือพิเศษอ่านได้
การเปลี่ยนแปลง API
- แก้ไขปัญหาที่
painterResource
ไม่อัปเดตการเปลี่ยนแปลงการกำหนดค่า (I58e73, b/228862715) rememberTextMeasurer
ไม่รับพารามิเตอร์FontFamily.Resolver
,Density
หรือLayoutDirection
อีกต่อไป โปรดใช้คอนสตรคเตอร์TextMeasurer
เพื่อระบุค่าที่กำหนดเองสำหรับพารามิเตอร์เหล่านี้ (Ia1da3)- เพิ่มพร็อพเพอร์ตี้
DialogProperties.decorFitsSystemWindows
เพื่ออนุญาตให้กล่องโต้ตอบรองรับWindowInsets
(I57742, b/229378542) - ย้ายตัวสร้างแบบอักษรกลับไปที่ไฟล์ Kotlin เดิมเพื่อรักษาความเข้ากันได้ของไฟล์ไบนารี ไม่มีการเปลี่ยนแปลงจากเวอร์ชันเสถียรล่าสุด (Ieb2f3)
- นำโอเปอเรเตอร์ที่ไม่จำเป็นออกจากคําจํากัดความ "เท่ากับ" หลายรายการ ซึ่งจะไม่มีผล (I6c309)
FontVariation.Setting
เป็นอินเทอร์เฟซที่ปิดผนึกไว้เพื่ออนุญาตให้ใช้ API การจำกัดในอนาคต (I11021, b/143703328)- เพิ่ม
CompositionGroup.findParameters
ไปยังSlotTree.kt
ซึ่งช่วยให้เครื่องมือดึงข้อมูลพารามิเตอร์สําหรับCompositionGroup
ได้โดยไม่ต้องแยกวิเคราะห์ตารางสล็อตทั้งหมด (I124fe)
เวอร์ชัน 1.3.0-alpha03
10 สิงหาคม 2022
androidx.compose.ui:ui-*:1.3.0-alpha03
ได้รับการปล่อยแล้ว เวอร์ชัน 1.3.0-alpha03 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
LayoutCoordinates.findRootCoordinates()
เป็นสาธารณะแล้ว (I7fa37, b/204723384)- เพิ่ม API เวอร์ชันทดลองเพื่อรับ
LayoutCoordinates
ในPlacementScope
ซึ่งช่วยให้นักพัฒนาแอปทราบว่าเลย์เอาต์ปัจจุบันอยู่ตรงไหนเพื่อวางองค์ประกอบย่อยตามตำแหน่งของเลย์เอาต์ (I5482b, b/238632578) - เพิ่ม
LayoutCoordinates.transformFrom
เพื่อรับการเปลี่ยนรูปแบบเมทริกซ์จากLayoutCoordinates
หนึ่งไปยังอีกLayoutCoordinates
หนึ่ง (Ic5ab1, b/238632578) - เลิกใช้งาน
SemanticsModifier.id
และย้ายรหัสเซมาติกส์ไปยังLayoutInfo.semanticsId
แทน (Iac808, b/203559524) - ตอนนี้แบบอักษรทรัพยากรรองรับการตั้งค่ารูปแบบแบบอักษรแล้ว (API 26 ขึ้นไป) (I900dd, b/143703328)
- การรองรับแบบอักษรที่ปรับแต่งได้ใน
DeviceFontFamilyNameFont
(Ic1279, b/143703328) - ตอนนี้ตัวสร้างแบบอักษรยอมรับรายการ
FontVariation.Setting
สำหรับการกําหนดค่าแบบอักษรแบบแปรผันในอุปกรณ์ O+ แล้ว (I11a9d, b/143703328) - เพิ่ม
FontVariation
API สำหรับการกําหนดและใช้แบบอักษรแบบผันแปร (I3c40c, b/143703328) - ตอนนี้ตัวสร้าง
LineHeightStyle.Alignment
เป็นแบบสาธารณะแล้ว (เวอร์ชันทดลอง) (I4bbbe, b/235876330) - ตอนนี้ย่อหน้าคือ expect|actual และกำหนดไว้สำหรับ Android และเดสก์ท็อป (Id387e, b/239962983)
- ตอนนี้ย่อหน้าอินเทอร์เฟซเป็นย่อหน้าอินเทอร์เฟซที่ปิดผนึกแล้ว การใช้พารากราฟย่อยไม่มี 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
เพื่อใช้เป็นวิธีวาดข้อความที่มีรูปแบบหลายแบบในคอมโพสิเบิลและตัวแก้ไขที่ทำงานกับ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
เพื่อสังเกตสถานะภายในฟังก์ชันคอมโพสิเบิลหรือผ่าน snapshotFlow (Icdb8a)
เวอร์ชัน 1.2
เวอร์ชัน 1.2.1
10 สิงหาคม 2022
androidx.compose.ui:ui-*:1.2.1
ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.1 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไข Nullpointer ในเครื่องมือตรวจสอบ (b/237987764)
- แก้ไขข้อยกเว้นการแคสต์คลาสระหว่างการจดจำในเครื่องมือตรวจสอบ (b/235526153)
เวอร์ชัน 1.2.0
27 กรกฎาคม 2022
androidx.compose.ui:ui-*:1.2.0
ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0 มีคอมมิตเหล่านี้
การเปลี่ยนแปลงที่สําคัญตั้งแต่เวอร์ชัน 1.1.0
การปรับปรุงการโฟกัสไปยังส่วนต่างๆ
- ตอนนี้การเลื่อนรายการแบบ Lazy โดยใช้
BeyondBoundsLayout
core API ใหม่ทํางานแล้ว - API การปรับแต่งลักษณะการทำงานใหม่ใน
FocusOrder
และFocusProperties
- ลักษณะการทำงานที่ดีขึ้นเมื่อใช้แป้นพิมพ์จริงหรือรีโมตทีวี
- ตอนนี้การเลื่อนรายการแบบ Lazy โดยใช้
API ใหม่สําหรับ
- ส่วนที่เว้นไว้ในหน้าต่าง
- องค์ประกอบพื้นฐานสําคัญสําหรับภาพเคลื่อนไหวแบบไม่สิ้นสุด ภาพเคลื่อนไหวตามท่าทางสัมผัส และภาพเคลื่อนไหวของเลย์เอาต์
- ความสามารถของ
GraphicsLayer
ซึ่งรวมถึงRenderEffect
แก้ไขข้อบกพร่องและปรับปรุงประสิทธิภาพหลายรายการ
เวอร์ชัน 1.2.0-rc03
29 มิถุนายน 2022
androidx.compose.ui:ui-*:1.2.0-rc03
ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0-rc03 มีการคอมมิตเหล่านี้
- ไม่มีการเปลี่ยนแปลงนับตั้งแต่ 1.2.0-rc02
เวอร์ชัน 1.2.0-rc02
22 มิถุนายน 2022
androidx.compose.ui:ui-*:1.2.0-rc02
ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0-rc02 มีการคอมมิตเหล่านี้
เวอร์ชัน 1.2.0-rc01
15 มิถุนายน 2022
androidx.compose.ui:ui-*:1.2.0-rc01
ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0-rc01 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ตอนนี้อินเทอร์เฟซในไลบรารีคอมโพสิทสร้างขึ้นโดยใช้เมธอดอินเทอร์เฟซเริ่มต้นของ jdk8 (I5bcf1)
- เพิ่มฟังก์ชันระดับสูงขึ้นลงใน
KeyInjectionScope
เพื่อแทรกการกดแป้นขณะที่กดแป้นอื่นๆ ค้างไว้หรือเปิดอยู่ ฟังก์ชันเหล่านี้ ได้แก่withKeysDown
,withKeysToggled
ฯลฯ นอกจากนี้ ยังเพิ่มพร็อพเพอร์ตี้สำหรับตรวจสอบว่ามีการกดแป้นเมตาบางแป้นหรือไม่ เช่นisCtrlDown
เพื่อตรวจสอบว่ามีการกดแป้นควบคุมใดแป้นหนึ่งหรือไม่ โปรดดูเอกสารประกอบเกี่ยวกับฟังก์ชันแต่ละรายการในKeyInjectionScope
(I9f6cd, b/229831515) - เราได้เปิดตัว
OverscrollEffect
เวอร์ชันทดลองเพื่อให้ใช้เอฟเฟกต์การเลื่อนผ่านหน้าจอแบบกำหนดเองได้ ควบคู่ไปกับModifier.scrollable
เวอร์ชันที่รองรับ LocalOverScrollConfiguration
เวอร์ชันทดลองได้ย้ายจากfoundation.gesture
ไปยังแพ็กเกจ Foundation และเปลี่ยนชื่อเป็น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 ยังรองรับรูปแบบการแทรกข้อมูลของเมาส์และแป้นพิมพ์ร่วมกัน เช่น การคลิกปุ่มเมาส์โดยกดแป้นเมตาค้างไว้ (I4c8da, b/229831515) - เพิ่มการรองรับเวอร์ชันทดลองสําหรับการแทรกเหตุการณ์สําคัญ ใช้
performKeyInput
เพื่อส่งเหตุการณ์สําคัญ หรือส่งผ่านพร็อพเพอร์ตี้key
ของMultiModalInjectionScope
ระหว่างท่าทางสัมผัสแบบหลายสื่อด้วยperformMultiModalInput
ดูเอกสารประกอบของ API ได้ที่KeyInjectionScope
(Ic5000, b/229831515) - เพิ่ม
GoogleFont.Provider.AllFontsListUri
ใหม่สําหรับการเรียกข้อมูลแหล่งที่มาของอินเทอร์เน็ตที่เป็น Canonical ของ Google Fonts ที่ Android รองรับ - ปรับปรุงข้อความแสดงข้อผิดพลาดที่แสดงอีกครั้งเมื่อ GoogleFonts โหลดในเครื่องมือเขียนไม่ได้ (I0416c)
การแก้ไขข้อบกพร่อง
- เมื่อเพิ่มเหตุการณ์
InputEventChange
ลงในเครื่องมือติดตามความเร็ว เราจะพิจารณาค่าเดลต้าแทนตำแหน่ง ซึ่งจะช่วยให้คำนวณความเร็วได้อย่างถูกต้องในทุกกรณี แม้ว่าองค์ประกอบเป้าหมายจะเคลื่อนไหวก็ตาม (I51ec3, b/216582726, b/223440806, b/227709803) - ตอนนี้การตั้งค่า
Show Layout Bounds
จะมีผลกับคอมโพสิเบิลทันทีหลังจากสลับการตั้งค่าจากการ์ดการตั้งค่าด่วน โดยไม่ต้องออกจากกิจกรรมแล้วเข้าอีกครั้ง (I843d5, b/225937688) - การค้นหาสตริงการช่วยเหลือพิเศษจะไม่ทริกเกอร์การโหลดแบบอักษร ก่อนหน้านี้จะพยายามโหลดแบบอักษรสำหรับ
StyleSpans
ซึ่งจะทําให้ระบบขัดข้องหากมีการเขียนทับFontFamily.Resolver
(I4609d) - การกดแป้นลบไปข้างหน้าเมื่อเคอร์เซอร์อยู่ที่ท้ายช่องข้อความจะไม่ทำให้แอปขัดข้องอีกต่อไป
- ตอนนี้
DeleteSurroundingTextCommand
และDeleteSurroundingTextInCodePointsCommand
กำหนดให้อาร์กิวเมนต์คอนสตรัคเตอร์ต้องไม่เป็นค่าลบ (Ica8e6, b/199919707)
เวอร์ชัน 1.2.0-beta02
18 พฤษภาคม 2022
androidx.compose.ui:ui-*:1.2.0-beta02
ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0-beta02 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- การใช้ฟังก์ชันการทำงานซ้ำในตัวอย่างประเภทอื่นๆ (I19f39)
การแก้ไขข้อบกพร่อง
- เราได้เปลี่ยนชื่อ
ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer
เป็นDisposeOnDetachedFromWindowOrReleasedFromPool
เพื่อให้สอดคล้องกับสถานการณ์ที่เกิดการกำจัดมากกว่าที่จะบ่งบอกถึงกรณีที่ไม่มีการกำจัด (If15ca)
เวอร์ชัน 1.2.0-beta01
11 พฤษภาคม 2022
androidx.compose.ui:ui-*:1.2.0-beta01
ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0-beta01 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- นี่เป็นรุ่นเบต้าแรกของ 1.2
การเปลี่ยนแปลง API
- เพิ่ม
BeyondBoundsInterval
เวอร์ชันทดลองที่การใช้งานLazyList
แบบกำหนดเองสามารถใช้ได้เมื่อวางเลยขอบที่มองเห็นได้ (Ifabfb, b/184670295) Modifier.composed
เวอร์ชันที่มีคีย์เป็น API ที่เสถียรแล้ว (Ie65e4, b/229988420)- ลดความซับซ้อนของ
rememberNestedScrollConnection
API เพื่อใช้องค์ประกอบในเครื่องเพื่อรับข้อมูลมุมมองปัจจุบัน (I67ca7) - ตอนนี้คุณใช้คำอธิบายประกอบ
@ComposableTarget
และคำอธิบายประกอบที่ทําเครื่องหมายด้วย@ComposableTargetMarker
ในระดับไฟล์ได้โดยใช้คำนำหน้า@file
การใช้คำอธิบายประกอบเป้าหมายในระดับขอบเขตไฟล์จะทำให้คอมไพเลอร์ถือว่าฟังก์ชันแบบคอมโพสิเบิลทั้งหมดในไฟล์มีไว้เพื่อกำหนดเป้าหมายไปยังแอปเพลเยอร์ที่เกี่ยวข้อง เช่น การใช้@file:UiComposable
จะประกาศว่าฟังก์ชัน@Composable
ทั้งหมดกำหนดเป้าหมายไปยังตัวใช้ UI ของ Compose ฟังก์ชันที่ต้องกำหนดเป้าหมายไปยังแอปพลิเคชันอื่นต้องระบุคำอธิบายประกอบเครื่องหมายเป้าหมายสำหรับแอปพลิเคชันที่ต้องการอย่างชัดเจน (I40804) เปิดตัว API การทดสอบใหม่เวอร์ชันทดลองที่ไม่ขึ้นอยู่กับแพลตฟอร์ม ซึ่งได้แก่
interface ComposeUiTest
และfun runComposeUiTest(block: ComposeUiTest.() -> Unit)
ซึ่งสามารถใช้เพื่อเรียกใช้การทดสอบ Compose UI ได้โดยไม่ต้องใช้TestRule
หากต้องการเรียกใช้การทดสอบโดยไม่มีComposeTestRule
ให้ส่งการทดสอบเป็น Lambda ไปยังrunComposeUiTest
และใช้เมธอดและสมาชิกในขอบเขตผู้รับComposeUiTest
ซึ่งเหมือนกับในComposeContentTestRule
ระบบจะเพิ่ม
interface AndroidComposeUiTest
และfun runAndroidComposeUiTest(block: AndroidComposeUiTest.() -> Unit)
สำหรับ Android โดยเฉพาะเพื่อให้สิทธิ์เข้าถึงกิจกรรมที่อยู่เบื้องหลัง ซึ่งคล้ายกับAndroidComposeTestRule
หากต้องการควบคุมได้มากยิ่งขึ้น คุณสามารถสร้างclass AndroidComposeUiTestEnvironment
ขึ้นมาเองได้การใช้งานบนเดสก์ท็อปคือ
class DesktopComposeUiTest
แต่ขณะนี้ยังไม่มีฟังก์ชันการเรียกใช้สำหรับเดสก์ท็อปโดยเฉพาะการย้ายข้อมูลการทดสอบจาก
ComposeTestRule
ไปยังComposeUiTest
ทำได้ดังนี้ (ตัวอย่าง Android) จาก:@RunWith(AndroidJUnit4::class) class MyTest { @get:Rule val rule = createComposeRule() @Test fun test() { rule.setContent { Text("Hello Compose!") } rule.onNodeWithText("Hello Compose!").assertExists() } }
โดยทำดังนี้
@RunWith(AndroidJUnit4::class) class MyTest { @Test @OptIn(ExperimentalTestApi::class) fun test() = runComposeUiTest { setContent { Text("Hello Compose!") } onNodeWithText("Hello Compose!").assertExists() } }
ขณะนี้
ComposeContentTestRule
และComposeTestRule
ไม่ได้ขยายมาจากComposeUiTest
ซึ่งหมายความว่ายังเรียกใช้ฟังก์ชันส่วนขยายในComposeUiTest
ในอินเทอร์เฟซTestRule
ไม่ได้ เมื่อComposeUiTest
พัฒนาเป็น API ที่เสถียรแล้วComposeContentTestRule
และComposeTestRule
จะเปลี่ยนเป็นเวอร์ชันที่ขยายมาจากComposeUiTest
(Ib4e90)เปลี่ยนชื่อ
LineHeightBehavior
เป็นLineHeightStyle
เปลี่ยนชื่อ
LineVerticalAlignment
เป็นLineHeightStyle.Alignment
เปลี่ยนชื่อ
LineHeightTrim
เป็นLineHeightStyle.Trim
นำค่าคอนสตรัคเตอร์เริ่มต้นออกจาก
LineHeightStyle
แล้ว (I582bf, b/181155707)เพิ่ม
Brush
ลงในTextStyle
และSpanStyle
เพื่อให้มีวิธีวาดข้อความที่มีการไล่ระดับสี (I53869, b/187839528)แอตทริบิวต์
trimFirstLineTop
,trimLastLineBottom
ของLineHeightBehavior
เปลี่ยนเป็น enum รายการเดียว:LineHeightTrim
LineHeightTrim
มีสถานะ 4 สถานะที่กําหนดโดยบูลีน 2 รายการ ได้แก่FirstLineTop
,LastLineBottom
, ทั้ง 2 อย่าง และไม่มี (Ifc6a5, b/181155707)เพิ่ม
LineHeightBehavior
ไปยังTextStyle
และParagraphStyle
แล้วLineHeightBehavior
จะควบคุมว่าจะใช้ความสูงของบรรทัดกับด้านบนของบรรทัดแรกและด้านล่างของบรรทัดสุดท้ายหรือไม่ และยังกำหนดการจัดแนวบรรทัดในพื้นที่ที่TextStyle(lineHeight)
ระบุไว้ด้วยเช่น คุณอาจได้รับลักษณะการทำงานที่คล้ายกับที่ CSS กำหนดผ่าน
LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false)
trimFirstLineTop
การกําหนดค่าtrimLastLineBottom
จะทํางานอย่างถูกต้องก็ต่อเมื่อincludeFontPadding
เป็นเท็จเท่านั้น (I97332, b/181155707)เปลี่ยนฟังก์ชัน
PlatformParagraphStyle.lerp
และPlatformSpanStyle.lerp
เป็นฟังก์ชันระดับบนสุด (I9a268)
การแก้ไขข้อบกพร่อง
- ตอนนี้เอกสารประกอบของ
PointerInputChange::copy
ระบุว่าเป็นการคัดลอกแบบไม่เจาะลึกอย่างถูกต้องแล้ว (I182f5) - รองรับเครื่องหมายจุดไข่ปลาเมื่อความสูงถูกจำกัดและไม่พอดีกับบรรทัดข้อความทั้งหมด (Ie528c, b/168720622)
- เปิด
includeFontPadding
เริ่มต้น คุณปิดincludeFontPadding
ได้โดยใช้แอตทริบิวต์TextStyle.platformTextStyle
เราจะเปลี่ยนลักษณะการทำงานเริ่มต้นในเร็วๆ นี้ แต่ในระหว่างนี้การตั้งค่านี้จะช่วยให้เราผสานรวมการปรับปรุงความสูงบรรทัด (aosp/2058653) และแก้ปัญหาTextField
การตัดข้อความได้ดีขึ้น (I01423, b/171394808)
การมีส่วนร่วมจากภายนอก
- ตอนนี้
MouseInjectionScope.scroll(delta = someDelta)
กลับหัวใน Android หากเราเลื่อนแนวตั้ง (หาก someDelta เป็นบวก ระบบจะเลื่อนลง) (Ifb697, b/224992993)
เวอร์ชัน 1.2.0-alpha08
20 เมษายน 2022
androidx.compose.ui:ui-*:1.2.0-alpha08
ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0-alpha08 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ฟังก์ชัน
pluralStringResource
ได้รับการทําเครื่องหมายว่าเวอร์ชันทดลองเพื่อให้สามารถพัฒนาเพื่อรองรับการใช้งานในต่างประเทศได้ดียิ่งขึ้นในอนาคต (If24e4) - ตอนนี้ Paragraph และ MultiParagraph ยอมรับพารามิเตอร์ข้อจำกัดแล้ว การส่ง
Constraints.maxHeight
จะไม่มีผลในตอนนี้ แต่จะช่วยให้ทำการคำนวณบางอย่างได้ในอนาคต เช่น การทำให้ข้อความตัดขึ้นลงตามความสูง (I6afee, b/168720622) - ตอนนี้
SubcomposeSlotReusePolicy.getSlotsToRetain()
ยอมรับคลาสที่คล้ายกับ MutableSet ที่กําหนดเองซึ่งไม่อนุญาตให้เพิ่มรายการใหม่ (Icd314) - PointerIcon เป็นอินเทอร์เฟซ
@Stable
แล้ว (I9dafe) - เลิกใช้งานการบริโภคบางส่วน (ลดลงหรืออันดับ) แล้วในปี
PointerInputChange
คุณสามารถใช้consume()
เพื่อใช้การเปลี่ยนแปลงทั้งหมดได้ คุณสามารถใช้isConsumed
เพื่อระบุว่ามีการใช้การเปลี่ยนแปลงนี้ก่อนหน้านี้หรือไม่ - ตอนนี้
PointerInputChange::copy()
จะทําสําเนาแบบไม่เจาะลึกเสมอ ซึ่งหมายความว่าระบบจะใช้สำเนาของPointerInputChange
เมื่อมีการบริโภคสำเนาใดสำเนาหนึ่ง หากต้องการสร้างPointerInputChange
ที่ไม่มีค่า ให้ใช้ตัวสร้างแทน (Ie6be4, b/225669674) - เปิดใช้การทำงานร่วมกันของการเลื่อนแบบซ้อนกันระหว่างการเขียนและมุมมองในทิศทางการเขียน > มุมมอง ซึ่งหมายความว่าคอมโพสิทหลักจะรับค่า Delta ของการเลื่อนที่ซ้อนกันจากมุมมองการเลื่อนที่ซ้อนกันได้ (If7949, b/174348612)
SemanticsProperty testTagsAsResourceId
ใหม่ ซึ่งสามารถใช้เพื่อทําให้ Compose สอดคล้องกับการทดสอบ UIAutomator ที่ออกแบบมาสําหรับระบบ View (I39c20)- แสดงน้ำหนักแบบอักษรทั้งหมดที่มีสำหรับแบบอักษรของระบบใน Android เมื่อใช้
FontFamily.SansSerif
ซึ่งจะใช้ชื่อแบบอักษรสำรอง เช่น sans-serif-medium ภายใน API 21-28 นี่เป็นการเปลี่ยนแปลงลักษณะการทํางาน เนื่องจากก่อนหน้านี้ API 21-28 รองรับเฉพาะน้ำหนัก 400 และ 700 เท่านั้น (I380fe, b/156048036, b/226441992) - ผู้สอนแบบย่อหน้าและผู้สอนแบบหลายย่อหน้าจัดเรียงอาร์กิวเมนต์ตำแหน่งไว้ก่อนอาร์กิวเมนต์ที่ไม่บังคับ (Idafaa)
- ตอนนี้
AndroidFont
ใช้ typefaceLoader เป็นพารามิเตอร์คอนสตรัคเตอร์ (I2c971)
เวอร์ชัน 1.2.0-alpha07
6 เมษายน 2022
androidx.compose.ui:ui-*:1.2.0-alpha07
ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0-alpha07 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มฟังก์ชันใหม่
Snapshot.withoutReadObservation { ... }
แล้ว ซึ่งช่วยให้ผู้ใช้เรียกใช้ Lambda ที่ส่งมาได้โดยไม่ต้องติดตามการเปลี่ยนแปลงของค่าสถานะที่อ่านระหว่างบล็อกนี้ คุณอาจพบว่าการดำเนินการนี้มีประโยชน์ใน Use Case เมื่อต้องการใช้ประโยชน์จากการเขียน/อ่านที่ปลอดภัยสำหรับเธรดซึ่งอิงตามสแนปชอต แต่ต้องการอ่านค่าได้โดยไม่ก่อให้เกิดการคอมโพสิชันใหม่หรือการวัดผลอีกครั้งที่ไม่จำเป็น (I9f365, b/214054486) - พร็อพเพอร์ตี้ส่วนขยาย
consumeWindowInsets
ของComposeView
ช่วยให้นักพัฒนาแอปปิดใช้การบริโภค AndroidWindowInsets
ได้ วิธีนี้ช่วยให้ComposeViews
แยกกันในลําดับชั้นใช้WindowInsets
แต่ละรายการได้โดยไม่รบกวนกัน (I0ef08, b/220943142) - เพิ่ม
KeyboardType.Decimal
เพื่อเป็นทางเลือกแทนKeyboard.Number
สำหรับการใช้ตัวคั่นทศนิยมใน IME โดยเฉพาะ (Iec4c8, b/209835363) PointerEventType.Scroll
และPointerEvent.scrollDelta
เป็น API เวอร์ชันเสถียรแล้ว (I574c5, b/225669674)- เปิดใช้การทำงานร่วมกันของ Nested Scroll ระหว่าง View กับ Compose สำหรับคลาส View ที่ทำงานร่วมกัน ซึ่งหมายความว่าตอนนี้คอมโพสิชันจะส่งค่า Delta ของการเลื่อนไปยังองค์ประกอบหลักของมุมมอง (ที่ทำงานร่วมกัน) ได้ (I5d1ac, b/174348612)
- อัปเดต
FontFamily.Resolver
เพื่อผสานรวมการตั้งค่าการช่วยเหลือพิเศษสำหรับข้อความแบบหนาทั่วทั้งระบบ (I6c1e7) Font(AssetManager, String, ...)
เลิกใช้งานแล้ว แทนที่ด้วยFont(String, AssetManager, ...)
นี่คือ API เวอร์ชันทดลอง (I1c7a4)- เพิ่มตัวบ่งชี้แบบอักษรใหม่
Font(DeviceFontFamilyName)
เพื่อค้นหาแบบอักษรที่ระบบติดตั้งไว้ในระหว่างเชนแบบอักษรสำรอง (ไม่บังคับ) (I30468, b/219754572) - เพิ่มการกำหนดค่าความเข้ากันได้ชั่วคราวสำหรับ
includeFontPadding
ใน TextStyle/ParagraphStyleincludeFontPadding
เปลี่ยนได้ผ่านTextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false))
ตัวเลือกนี้เป็นตัวเลือกการกําหนดค่าชั่วคราวเพื่อเปิดใช้การย้ายข้อมูลและจะถูกนําออก (If47be, b/171394808) - เพิ่มส่วนขยาย
GoogleFont.Provider.isAvailableOnDevice
เพื่อรับความช่วยเหลือในการแก้ไขข้อบกพร่อง (I64e31) - เพิ่มคอนสตรคเตอร์
GoogleFont.Provider
เพื่อใช้กับ@ArrayRes
(Ic5ee1, b/225984280) Compose GoogleFont
เปลี่ยนชื่อเป็นFont(GoogleFont)
แล้ว แต่ API จะยังคงทำงานอย่างเสถียร (I125f2)
การแก้ไขข้อบกพร่อง
- เพิ่มการตรวจสอบ Lint ไปยัง material/Scaffold เพื่อให้แน่ใจว่ามีการใช้การกรอกภายใน (Ifb111)
เวอร์ชัน 1.2.0-alpha06
23 มีนาคม 2022
androidx.compose.ui:ui-*:1.2.0-alpha06
ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0-alpha06 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มการดำเนินการตามความหมาย
RequestFocus
เพื่อขอโฟกัสที่เป้าหมายที่โฟกัสได้ (I17b71) - อัปเดตการแยกวิเคราะห์รูปภาพที่วาดได้แบบเวกเตอร์เพื่อรองรับการมิเรอร์อัตโนมัติเพื่อพลิกเนื้อหาของ
VectorPainter
หากการวางแนวปัจจุบันเป็น RTL (I79cd9, b/185760237) อัปเดตสีเงา/สีโดยรอบให้เป็นพารามิเตอร์ต่อท้ายของ
Modifier.graphicsLayer
เพื่อให้ใช้งานร่วมกับ API ได้ (I3f864, b/160665122)เพิ่มการใช้งานเริ่มต้นสำหรับสีเงา/แสงโดยรอบใน
GraphicsLayerScope
เพื่อให้มั่นใจว่าการเปลี่ยนแปลง API จะไม่ส่งผลเสียเพิ่มเวลาของกิจกรรมในกิจกรรม RSB (Ief8ae)
เราได้ผสาน
FocusOrder
เข้ากับFocusProperties
แล้ว และตอนนี้focusProperties()
มีความสามารถทั้งหมดของfocusOrder()
FocusOrder
และfocusOrder()
เลิกใช้งานแล้วfocusOrder()
ที่ยอมรับfocusRequester
ควรแทนที่ด้วยตัวแก้ไขfocusRequester()
ร่วมกับfocusProperties()
วิธีนี้ช่วยให้ตัวแก้ไขแยกข้อกังวลต่างๆ ได้ดีขึ้น (I601b7)การอัปเกรดทั้ง
RecyclerView
และCompose
จะทำให้การเลื่อน RecyclerView ที่มีมุมมองการเขียนเป็นรายการย่อยมีประสิทธิภาพมากขึ้นเพิ่ม
ViewCompositionStrategy.Default
เป็นวิธีเรียกกลยุทธ์เริ่มต้นที่มีอยู่แล้วเพิ่ม
ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer
ซึ่งเป็นกลยุทธ์เริ่มต้นใหม่และจัดการคอนเทนเนอร์การรวมอย่างเหมาะสม เช่น RecyclerView (If7282)เพิ่มการรองรับการกำกับเนื้อหาในชั้นเรียนกำกับเนื้อหาด้วย @Preview เป็นขั้นตอนแรกในการเพิ่มฟีเจอร์การแสดงตัวอย่างหลายรายการ คุณสามารถใส่คำอธิบายประกอบดังกล่าวเพื่อกำกับวิธีการ Composable หรือคลาสคำอธิบายประกอบอื่นๆ ซึ่งจะถือว่ามีการกำกับ @Preview นั้นโดยอ้อม (I12eff)
เพิ่มอุปกรณ์อ้างอิงลงในรายการอุปกรณ์สำหรับ @Preview (I071c9) แล้ว
การแก้ไขข้อบกพร่อง
- อัปเดต Vector Graphics API เพื่อใช้คำอธิบายประกอบคอมโพสิเบิลที่เหมาะสม @VectorComposable แทน @UiComposable (I942bc)
- นำโฆษณาคั่นระหว่างหน้าออกจาก
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) - อัปเดต Nullability ใน Core และ AppCompat ให้ตรงกับ Tiramisu DP2 (I0cbb7)
- ตอนนี้อินเทอร์เฟซที่วัดผลจะแสดงพร็อพเพอร์ตี้ parentData (I3313f)
Modifier.onPlaced
และอินเทอร์เฟซOnPlacedModifier
ทำงานได้อย่างเสถียรแล้ว (Ib5482)- ไชโย! ตอนนี้เครื่องมือสร้างภาพเคลื่อนไหวรองรับการตั้งค่า "อัตราความเร็วตามตัวสร้างภาพเคลื่อนไหว" จากตัวเลือกสำหรับนักพัฒนาซอฟต์แวร์แล้ว (I5a4fc, b/161675988)
- เพิ่มตัวแก้ไข
BeyondBoundsLayout
ระดับท้องถิ่น (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
ซึ่งช่วยให้รายงานเวลาคอมไพล์ได้เมื่อมีการเรียกใช้ฟังก์ชันที่ประกอบกันได้ซึ่งกำหนดเป้าหมายไปยังแอปพลิเคชันที่ไม่ได้ออกแบบมาเพื่อใช้งานในกรณีส่วนใหญ่ ปลั๊กอินคอมไพเลอร์ของ Compose จะอนุมานคำอธิบายประกอบได้ คุณจึงควรใช้คำอธิบายประกอบเหล่านี้โดยตรงในบางกรณีเท่านั้น กรณีที่ไม่สามารถอนุมานได้ ได้แก่ การสร้างและการใช้ Applier ที่กําหนดเอง ฟังก์ชันคอมโพสิเบิลแบบนามธรรม (เช่น เมธอดอินเทอร์เฟซ) ฟิลด์หรือตัวแปรส่วนกลางที่เป็น Lambda แบบคอมโพสิเบิล (ระบบจะอนุมานตัวแปรและพารามิเตอร์ภายใน) หรือเมื่อใช้
ComposeNode
หรือฟังก์ชันคอมโพสิเบิลที่เกี่ยวข้องสําหรับแอปเพลเยอร์ที่กำหนดเอง ฟังก์ชันแบบคอมโพสิเบิลที่เรียก
ComposeNode
หรือReusableComposeNode
จะต้องเพิ่มแอตทริบิวต์ComposableTarget
สําหรับฟังก์ชันและพารามิเตอร์ LAMBDA ประเภทใดก็ได้แบบคอมโพสิเบิล อย่างไรก็ตาม เราขอแนะนำให้สร้างคำอธิบายประกอบที่มีคำอธิบายประกอบด้วยComposableTargetMarker
แล้วใช้คำอธิบายประกอบที่มีเครื่องหมายแทนการใช้ComposableTarget
โดยตรง คําอธิบายประกอบแบบคอมโพสิเบิลที่มีเครื่องหมายComposableTargetMarker
เทียบเท่ากับComposbleTarget
ที่มีชื่อแบบเต็มของคลาสแอตทริบิวต์เป็นพารามิเตอร์ applier ดูตัวอย่างการใช้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
เมธอดในคลาสสตับRenderNode
(I1e659, b/216660268) - เพิ่ม API ใหม่ที่อนุญาตให้วัดค่าย่อยของ
SubcomposeLayout
ที่คุณคอมโพสิทไว้ล่วงหน้า (I857ea) เพิ่ม
movableContentOf
ซึ่งจะแปลงคอมโพสิเบิลแลมดาเป็นแลมดาที่ย้ายสถานะและโหนดที่เกี่ยวข้องไปยังตำแหน่งใหม่ที่เรียกใช้ เมื่อการเรียกก่อนหน้านี้ออกจากการคอมโพสิชัน ระบบจะเก็บสถานะไว้ชั่วคราว และหากการเรียกใหม่ไปยัง Lambda เข้าสู่การคอมโพสิชัน ระบบจะย้ายสถานะและโหนดที่เกี่ยวข้องไปยังตำแหน่งของการเรียกใหม่ หากไม่มีการเพิ่มการเรียกใหม่ ระบบจะนำสถานะออกอย่างถาวรและแจ้งเตือนผู้สังเกตการณ์หากมีการเรียกใช้
movableContentOf
lambda หลายครั้งในคอมโพสิชันเดียวกัน ระบบจะสร้างสถานะและโหนดใหม่สำหรับการเรียกแต่ละครั้ง และเมื่อการเรียกออกจากคอมโพสิชันและการเรียกใหม่เข้ามา ระบบจะย้ายสถานะจากการเรียกครั้งแรกที่ออกจากคอมโพสิชันไปยังการเรียกที่เข้ามาใหม่ตามลำดับที่เรียก ระบบจะนำสถานะทั้งหมดที่ไม่ได้อ้างสิทธิ์โดยการเรียกใช้ใหม่ออกอย่างถาวร (Ib4850)FontFamilyResolver
พร้อมให้รับชมผ่านLocalFontFamilyResolver.current
แล้วเพิ่ม
createFontFamilyResolver(context)
และcreateFontFamilyResolver(context, coroutineScope)
เพื่อสร้างตัวแก้ไขแบบอักษรใหม่นอกการใช้งานการคอมโพสิทตอนนี้ Paragraph และ MultiParagraph ใช้
FontFamily.Resolver
ตอนนี้
TextLayoutResult.layoutInput.fontFamilyResolver
มีTextLayoutResult.layoutInput.resourceLoader
ซึ่งเป็นรีโซลเวอร์ที่ใช้สำหรับเลย์เอาต์นี้ซึ่งเลิกใช้งานแล้ว เนื่องจากไม่มีการใช้อีกต่อไป (Id5a45, b/174162090)รองรับการโหลดแบบไม่ซิงค์และแบบไม่บังคับของแบบอักษรที่มีลักษณะการทำงานสำรอง Text และ TextField จะใช้เส้นทางนี้ และแสดงผ่าน FontFamilyResolver
การรองรับการโหลดแบบอักษรล่วงหน้าผ่าน
FontFamilyResolver.preload
FontFamilyResolver.setAsyncLoadContext
อนุญาตให้ตั้งค่าบริบท coroutine ทั่วโลกที่ใช้สำหรับโหลดแบบอักษรแบบไม่พร้อมกัน (I87fe8, b/174162090)เพิ่ม
AndroidFont
ซึ่งเป็น API ระดับล่างแบบใหม่สำหรับระบุตัวบ่งชี้ทรัพยากรแบบอักษรประเภทใหม่ใน Android เช่น การโหลดแบบอักษรจากแบ็กเอนด์เฉพาะแอป การเลือกหาแบบอักษรที่ติดตั้งไว้ล่วงหน้าในอุปกรณ์ หรือโหลดแบบอักษรจากแหล่งข้อมูลที่ไม่ได้มาจาก Font Factory ปัจจุบันขยาย
Font.ResourceLoaded
API เพื่อรองรับการโหลดแบบไม่บังคับและแบบแอซิงค์ของแบบอักษร ไม่แนะนําให้นักพัฒนาแอปพลิเคชันใช้ API นี้โดยตรง หากต้องการเพิ่มแบบอักษรประเภทใหม่ โปรดดูAndroidFont
ฟังก์ชันส่วนขยาย
Font.AndroidResourceLoader
อนุญาตให้สร้างFont.ResourceLoader
เมื่ออยู่นอกองค์ประกอบเพิ่มพารามิเตอร์
loadingStrategy
ลงในแบบอักษรที่อิงตามทรัพยากรเพื่ออนุญาตให้โหลดแบบไม่พร้อมกันเมื่อแบบอักษรทรัพยากรอ้างอิง XML ของแบบอักษรที่ดาวน์โหลดได้ (Ie5aea, b/174162090)เครื่องมือสร้าง
Typeface(FontFamily)
เลิกใช้งานแล้ว ซึ่งก่อนหน้านี้ใช้เพื่อโหลดแบบอักษรล่วงหน้า ซึ่งอาจใช้เวลาถึง 10 วินาทีสำหรับแบบอักษรที่ดาวน์โหลดได้ เมื่อใช้แบบอักษรที่ดาวน์โหลดได้ การเรียกใช้นี้อาจบล็อกเป็นเวลา 10 วินาที แต่ให้ใช้FontFamilyResolver.preload
แทนfontResource(FontFamily): Typeface
เลิกใช้งานแล้ว ซึ่งก่อนหน้านี้ใช้เพื่อโหลดแบบอักษรล่วงหน้า ซึ่งอาจใช้เวลาถึง 10 วินาทีสำหรับแบบอักษรที่ดาวน์โหลดได้ ให้ใช้FontFamilyResolver.preload
(If8e7c, b/174162090) แทนเครื่องมือสร้าง
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.resolve
returnsState<Any>
(I4406c, b/174162090)
การแก้ไขข้อบกพร่อง
- ตอนนี้ช่องข้อความจะยังคงอยู่เหนือแป้นพิมพ์เมื่อโฟกัสอยู่และแป้นพิมพ์แสดงอยู่เมื่อโหมดการป้อนข้อมูลแบบซอฟต์โหมดเป็น
ADJUST_PAN
(I8eaeb, b/190539358, b/192043120) - เดสก์ท็อปใช้การคอมโพสในเครื่องสำหรับ
FontFamily.Resolver
- เลิกใช้งาน
FontLoader
บนเดสก์ท็อปแล้ว createFontFamilyResolver
เวอร์ชันใหม่ในเดสก์ท็อป (I6bbbb, b/174162090)- ประเภทการป้อนข้อมูลด้วยแป้นพิมพ์เสมือนจะไม่กะพริบอีกต่อไปเมื่อเปลี่ยนโฟกัสระหว่างช่องข้อความ (I1bf50, b/187746439)
เวอร์ชัน 1.2.0-alpha02
26 มกราคม 2022
androidx.compose.ui:ui-*:1.2.0-alpha02
ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0-alpha02 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม
Modifier.onRotaryScrollEvent()
และModifier.onPreRotaryScrollEvent()
สำหรับอุปกรณ์ที่สวมใส่ได้ซึ่งมีปุ่มด้านข้างแบบหมุน (I18bf5, b/210748686) - เพิ่ม
View.createLifecycleAwareRecomposer
ส่วนขยาย (I0cde6) เวอร์ชันทดลอง
การมีส่วนร่วมจากภายนอก
- ตอนนี้
PointerEvent.scrollDelta.y
กลับค่าใน Android แล้ว (ตอนนี้จะแสดงผลเป็น 1 แทน -1 หากเราเอียงล้อเลื่อนของเมาส์ไปทางขวา) (Ia9811)
เวอร์ชัน 1.2.0-alpha01
12 มกราคม 2022
androidx.compose.ui:ui-*:1.2.0-alpha01
ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0-alpha01 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เลิกใช้งาน
FontFamily.canLoadSynchronously
พร็อพเพอร์ตี้นี้ไม่มีความหมายเชิงความหมาย (Ica5ef) - เพิ่มช่องข้อมูลระบุตัวตนลงใน
CompositionData
เพื่อสร้างรหัสแบบคงที่ในเครื่องมือตรวจสอบเลย์เอาต์ (Ic116e) - เพิ่มรหัสอุปกรณ์ Wear OS ลงในรายการอุปกรณ์เวอร์ชันตัวอย่าง (I93232)
การอัปเดตทรัพยากร Dependency
- ตอนนี้ขึ้นอยู่กับ Kotlin
1.6.10
เวอร์ชัน 1.1
เวอร์ชัน 1.1.1
23 กุมภาพันธ์ 2022
androidx.compose.ui:ui-*:1.1.1
ได้รับการปล่อยแล้ว เวอร์ชัน 1.1.1 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไข
NullPointerException
ที่androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList
(aosp/1947059, b/206677462) - แก้ไขข้อขัดข้องที่เกิดขึ้นจากเนื้อหาในคลิปบอร์ดขณะอ่านจากคลิปบอร์ดใน Android (I06020, b/197769306)
- แก้ไข RTL ใน
LazyVerticalGrid
(aosp/1931080, b/207510535)
เวอร์ชัน 1.1.0
9 กุมภาพันธ์ 2022
androidx.compose.ui:ui-*:1.1.0
ได้รับการปล่อยแล้ว เวอร์ชัน 1.1.0 มีคอมมิตเหล่านี้
การเปลี่ยนแปลงที่สําคัญตั้งแต่เวอร์ชัน 1.0.0
- การรองรับเอฟเฟกต์การเลื่อนผ่านของ Android 12 อย่างเสถียร
- การปรับปรุงขนาดเป้าหมายการสัมผัส
- โปรดทราบว่าสำหรับ Compose 1.0 คอมโพเนนต์ Material จะขยายพื้นที่เลย์เอาต์เพื่อให้เป็นไปตามหลักเกณฑ์การช่วยเหลือพิเศษของ Material สำหรับขนาดเป้าหมายการสัมผัส ตัวอย่างเช่น เป้าหมายการสัมผัสของปุ่มจะขยายให้มีขนาดขั้นต่ำ 48x48dp แม้ว่าคุณจะตั้งค่าขนาดของปุ่มให้เล็กกว่านี้ก็ตาม ซึ่งจะช่วยให้ Compose Material ทำงานในลักษณะเดียวกับคอมโพเนนต์ Material Design เพื่อให้การทำงานสอดคล้องกันหากคุณใช้ทั้ง Views และ Compose การเปลี่ยนแปลงนี้ยังช่วยให้มั่นใจด้วยว่าเมื่อคุณสร้าง UI โดยใช้คอมโพเนนต์ Compose Material คุณจะเป็นไปตามข้อกำหนดขั้นต่ำสำหรับการช่วยเหลือพิเศษสำหรับเป้าหมายการสัมผัส
- การสนับสนุนที่ใช้งานได้อย่างเสถียรสำหรับแถบข้างสำหรับไปยังส่วนต่างๆ
- เปลี่ยน 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
- ล้างข้อมูล Nullability ใน
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
- เพิ่ม
BringIntoView
API เวอร์ชันทดลองที่ช่วยให้คุณส่งคำขอไปยังผู้ปกครองเพื่อให้ผู้ปกครองเลื่อนเพื่อแสดงรายการ (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) - เพิ่ม LocalInputModeManager CompositionLocal เพื่อตรวจหา TouchMode/NonTouchMode (I6a83c, b/175899786)
- เพิ่ม
viewConfiguration: ViewConfiguration
ลงในLayoutInfo
เพื่อช่วยให้ผู้บริโภคได้รับค่าที่ถูกต้องสำหรับสิ่งต่างๆ เช่น ระยะหมดเวลาของการกดค้าง (I76ca6)- เพิ่ม
viewConfiguration: ViewConfiguration
ลงในInjectionScope
เพื่ออนุญาตให้การทดสอบปรับการแทรกข้อมูลขาเข้าตามปัจจัยต่างๆ เช่น การหมดเวลาการกดค้างหรือระยะห่างการสัมผัส - เปลี่ยนระยะเวลาเริ่มต้นของการกดค้างไว้และการแตะสองครั้งสำหรับทั้งการป้อนข้อมูลด้วยการสัมผัสและเมาส์ให้อิงตามค่าใน
InjectionScope.viewConfiguration
- เพิ่ม
- การใช้ ExposedDropdownMenu โดยอิงตาม ExposedDropdownMenuBox ที่มี TextField และ DropdownMenu อยู่ภายใน (If60b2)
- เพิ่ม dismissOnOutsideClick ลงใน PopupProperties เพื่อแทนที่ dismissOnClickOutside ซึ่งเลิกใช้งานแล้ว พร็อพเพอร์ตี้ใหม่จะได้รับตําแหน่งการคลิกและขอบเขตของจุดยึด ซึ่งช่วยให้ควบคุมได้ละเอียดยิ่งขึ้นว่าจะเรียกใช้ onDismissRequest หรือไม่ เช่น กรณีนี้อาจมีประโยชน์ในการป้องกันการปิดใช้งานจุดยึดเมื่อมีการแตะจุดยึด
- เพิ่ม updateAndroidWindowManagerFlags ลงใน PopupProperties ซึ่งให้การควบคุมระดับล่างสำหรับ Flag ที่ป๊อปอัปส่งไปยัง WindowManager ของ Android พารามิเตอร์ของ lambda จะเป็น Flag ที่คำนวณจากค่า PopupProperties ซึ่งส่งผลให้เกิด Flag ของ WindowManager เช่น โฟกัสได้ ผลลัพธ์ของ Lambda จะเป็น Flag สุดท้ายที่จะส่งไปยัง WindowManager ของ Android โดยค่าเริ่มต้น updateAndroidWindowManagerFlags จะไม่เปลี่ยนแปลง Flag ที่คำนวณจากพารามิเตอร์ คุณควรใช้ API นี้อย่างระมัดระวังเฉพาะในกรณีที่ป๊อปอัปมีข้อกำหนดด้านลักษณะการทำงานที่เฉพาะเจาะจงมากเท่านั้น (I6e9f9)
Recomposer.state
เลิกใช้งานแล้วและแทนที่ด้วยRecomposer.currentState
เพื่อเปลี่ยนประเภทเป็น StateFlow (Ic2ab3, b/197773820)- เพิ่ม
flush()
และdispose()
ไปยังInjectionScope
แล้ว ใช้เมื่อต้องการล้างเหตุการณ์ทั้งหมดที่อยู่ในคิวทันทีและเมื่อต้องการกำจัดขอบเขตตามลำดับ (Ifb73a) - เพิ่ม
performScrollToNode(matcher: SemanticsMatcher)
ที่เลื่อนคอนเทนเนอร์แบบเลื่อนไปยังเนื้อหาที่ตรงกับตัวจับคู่ที่ระบุ (Ic1cb8) - ตอนนี้
InjectionScope
ใช้Density
แล้ว ซึ่งจะช่วยให้คุณแปลงระหว่าง px กับ dp ในperformTouchInput
และผลิตภัณฑ์ที่เกี่ยวข้องได้อย่างง่ายดาย (I8fe1f)
การแก้ไขข้อบกพร่อง
- ตอนนี้ AndroidView จะเผยแพร่ LocalLifecycleOwner และ LocalSavedStateRegistryOwner ไปยังมุมมองผ่าน ViewTreeLifecycleOwner และ ViewTreeSavedStateRegistryOwner (I38f96, b/179708470)
- แก้ไขข้อบกพร่องที่บางครั้ง SwipeToDismissBox ของ WearOS ไม่จัดการการปัด (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)
การแก้ไขข้อบกพร่อง
- แก้ไขการรองรับการช่วยเหลือพิเศษสำหรับเนื้อหาที่เลื่อนได้ (ทั้งแบบ Lazy และแบบไม่ Lazy) เกี่ยวกับการเลื่อน (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()
) การใช้งานก่อนหน้านี้จะเพิ่มเวลาของเหตุการณ์และส่งเหตุการณ์การเลื่อนก่อนที่จะส่งเหตุการณ์การกดแป้น การใช้งานใหม่จะยังคงส่งเหตุการณ์ย้าย แต่จะไม่ส่งเวลาของเหตุการณ์ไปข้างหน้าในสถานการณ์ที่เฉพาะเจาะจงนี้ - เมื่อส่งเหตุการณ์ "ขึ้น" ขณะที่มีการย้ายเคอร์เซอร์โดยไม่ได้ส่งเหตุการณ์ "ย้าย" (คล้ายกับด้านบน) การใช้งานก่อนหน้านี้จะเพิ่มเวลาของเหตุการณ์และส่งเหตุการณ์ "ย้าย" ก่อนที่จะส่งเหตุการณ์ "ขึ้น" การใช้งานแบบใหม่จะไม่ทำอย่างใดอย่างหนึ่งเลย ตำแหน่งใหม่ของเคอร์เซอร์จะแสดงผ่านเหตุการณ์ "ขึ้น" เท่านั้น
สุดท้าย
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) - เพิ่ม
BlurredEdgeTreatment
API เพื่อลดความซับซ้อนของกรณีการใช้งานการเบลอให้เหลือเพียงชุดค่าผสมของ Flag คลิปและ TileMode ที่ใช้กันโดยทั่วไป Use Case ส่วนใหญ่เกี่ยวข้องกับการอนุญาตให้เนื้อหาเบลอแสดงผลนอกขอบเขตเนื้อหาต้นฉบับและการเบลอบริเวณนอกขอบเขตเหล่านี้ด้วยสีดําโปร่งแสง หรือการครอบตัดเนื้อหาให้อยู่ภายในขอบเขตเนื้อหาโดยสุ่มตัวอย่างขอบที่ใกล้ที่สุดสําหรับนิวเคลียสเบลอที่ขยายเกินขอบเขตเนื้อหา (I6b4b7, b/166927547) - เพิ่มการรองรับ RenderEffect ในคอมโพเซอร์บนเดสก์ท็อป เปิดตัว OffsetEffect รวมถึงตัวแก้ไขเบลอ ซึ่งเป็นวิธีที่ง่ายในการใส่เอฟเฟกต์ภาพเบลอลงในส่วนลำดับชั้นขององค์ประกอบ (I0f6aa, b/166927547)
- เปิดตัว RenderEffect API ที่กําหนดค่าใน
Modifier.graphicsLayer
ได้ (ไม่บังคับ) เพื่อเปลี่ยนแปลงเนื้อหาของเลเยอร์ ซึ่งสามารถใช้เพื่อเบลอเนื้อหาของคอมโพสิเบิลและคอมโพสิเบิลย่อยภายในลําดับชั้นขององค์ประกอบ (I47c4d, b/166927547) - ตอนนี้ AwaitPointerEventScope มี withTimeout() และ withTimeoutOrNull() แล้ว (I507f0, b/179239764, b/182397793)
- เพิ่มขนาดเป้าหมายการสัมผัสขั้นต่ำลงใน ViewConfiguration เพื่อใช้ในความหมายและอินพุตเคอร์เซอร์เพื่อให้เข้าถึงได้ (Ie861c)
- เพิ่มการรองรับ TileMode.Decal ซึ่งมีประโยชน์ในการกำหนดลักษณะการทํางานของขอบสําหรับ RenderEffects ที่อิงตามการเบลอ (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 ของกราฟิกเวกเตอร์เพื่อรองรับ ColorStateList เป็นพร็อพเพอร์ตี้การปรับสีของรูทใน 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
ยอมรับสี่เหลี่ยมผืนผ้าเป็นพารามิเตอร์ ซึ่งช่วยให้เราแสดงส่วนหนึ่งของคอมโพสิเบิลในมุมมองได้ (Ice2c5, b/194330245) AnimatedImageVector
และ API ที่เกี่ยวข้องอยู่ในข้อบังคับใหม่ของandroidx.compose.animation:animation-graphics
แล้ว (I60873)- เพิ่มตัวแก้ไขเวอร์ชันทดลองเพื่อจัดการคำขอย้าย (I65a97, b/178211874)
เปิดตัว BrushPainter API เพื่อรองรับการวาดพู่กันแบบกำหนดเองภายใน Painter ซึ่งคล้ายกับ ColorPainter
อัปเดต Brush API ให้มีพารามิเตอร์ขนาดโดยประมาณที่ค้นหาภายใน BrushPainter (Ia2752, b/189466433)
อัปเดตเมธอด DrawScope#drawImage ที่ใช้สี่เหลี่ยมผืนผ้าต้นทางและปลายทางเพื่อใช้พารามิเตอร์ FilterQuality (ไม่บังคับ) ซึ่งมีประโยชน์สำหรับงานศิลปะพิกเซลที่มีไว้เพื่อให้เป็นพิกเซลเมื่อปรับขนาดขึ้นสำหรับงานศิลปะแบบพิกเซล อัปเดตคอมโพสิชัน BitmapPainter + Image ให้ใช้พารามิเตอร์ FilterQuality (ไม่บังคับ) ด้วย (Ie4fb0, b/180311607)
เพิ่มเมธอด
GestureScope.advanceEventTime
เพื่อให้ควบคุมช่วงเวลาของเหตุการณ์ในท่าทางสัมผัสได้มากขึ้น (Ibf3e2)
การแก้ไขข้อบกพร่อง
- ตรวจสอบว่าการใช้งาน Modifier.paint เรียกใช้ drawsContent เพื่อให้รองรับการต่อเชื่อมตัวแก้ไขการวาดได้ดียิ่งขึ้น
ก่อนหน้านี้ Modifier.paint ควรจะอยู่ในโหนดใบในเชน Modifier แต่การทําเช่นนั้นจะทำให้กำหนดค่าในคอนเทนเนอร์แบบคอมโพสิเบิล (เช่น box) หรือเพิ่มการตกแต่งเพิ่มเติมด้านบนไม่ได้ เช่น
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
ที่ช่วยให้คุณดูตัวอย่างคอมโพสิเบิลที่ใช้ API เช่นrememberLauncherForActivityResult()
ที่ขึ้นอยู่กับเจ้าของรายนั้น (Ib13d1, b/185693006) - ตอนนี้ Compose
@Preview
มีLocalOnBackPressedDispatcherOwner
ที่ช่วยให้คุณดูตัวอย่างคอมโพสิเบิลที่ใช้ 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
- เปลี่ยน Role และ LiveRegionMode ที่เป็น enum เป็นคลาสย่อยในบรรทัด (Id1890)
- KeyboardCapitalization เปลี่ยนเป็นคลาสแทรกในบรรทัด (Id5a1c)
- เปลี่ยน HapticFeedbackType เป็นคลาสอินไลน์ (I255ec)
- Modifier.pointerInteropFilter คือ @ExperimentalComposeUiApi (Iede6c)
- ตอนนี้ TextAlign, FontSynthesis และ TextDirection เป็นคลาสในบรรทัด (I212fe)
- TextOverflow เปลี่ยนเป็นคลาสในบรรทัด (I433af)
- ตอนนี้ FontStyle เป็นคลาสในบรรทัด (I9e48b)
การแก้ไขข้อบกพร่อง
- ขณะนี้ค่าคงที่ของคีย์คือ @ExperimentalComposeUiApi โค้ดที่ใช้งานสามารถประกาศค่าคงที่แบบส่วนตัวก่อนการทำให้เสถียรได้ (Ia5d48)
- ตอนนี้คุณสามารถเรียกใช้การทดสอบการคอมโพสิชันใน Robolectric ได้แล้ว เราได้ระบุข้อจำกัดต่อไปนี้แล้ว
- ไม่มีบิตแมปเนทีฟ
ImageBitmap()
จึงทําให้เกิด NullPointerException - ไม่มีการวาดภาพ
captureToImage()
จึงจะรอการวาดภาพครั้งถัดไปอย่างไม่มีกำหนด (กล่าวคือเกิดข้อขัดข้อง) - ไม่มีแบบอักษรที่โหลด ข้อความจึงจะวัดอย่างไม่ถูกต้อง อักขระทั้งหมดมีความสูงคงที่ประมาณ 20 พิกเซลและความกว้าง 1 พิกเซล
ComposeTestRule.waitUntil {}
จะไม่เรียกใช้ชุดข้อความหลักขณะรอ ซึ่งทำให้มีประสิทธิภาพเหมือนกับComposeTestRule.mainClock.advanceTimeUntil {}
คาดว่าจะมีการระบุข้อจำกัดเพิ่มเติมในอนาคต (I284fa)
- ไม่มีบิตแมปเนทีฟ
เพิ่มกฎโปรไฟล์
รุ่นนี้เพิ่มกฎโปรไฟล์ลงในข้อบังคับการเขียนต่อไปนี้ (I14ed6)
- androidx.compose.animation
- androidx.compose.animation-core
- androidx.compose.foundation
- androidx.compose.foundation-layout
- androidx.compose.material
- androidx.compose.material-ripple
- androidx.compose.runtime
- androidx.compose.ui
- androidx.compose.ui.geometry
- androidx.compose.ui.graphics
- androidx.compose.ui.text
- androidx.compose.ui.text
- androidx.compose.ui.unit
- androidx.compose.ui.util
กฎโปรไฟล์คืออะไร
กฎโปรไฟล์สำหรับไลบรารีจะระบุไว้ในไฟล์ข้อความ
baseline-prof.txt
ซึ่งอยู่ในไดเรกทอรีsrc/main
หรือไดเรกทอรีที่เทียบเท่า ไฟล์จะระบุกฎต่อบรรทัด โดยที่กฎในกรณีนี้คือรูปแบบสำหรับการจับคู่กับเมธอดหรือคลาสในไลบรารี ไวยากรณ์ของกฎเหล่านี้เป็นชุดที่ใหญ่กว่ารูปแบบโปรไฟล์ ART ที่มนุษย์อ่านได้ซึ่งใช้เมื่อใช้adb shell profman --dump-classes-and-methods ...
กฎเหล่านี้มี 2 รูปแบบเพื่อกำหนดเป้าหมายไปยังเมธอดหรือคลาสกฎเมธอดจะมีรูปแบบดังต่อไปนี้
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
และกฎระดับชั้นจะมีรูปแบบดังต่อไปนี้
<CLASS_DESCRIPTOR>
โดยที่
<FLAGS>
คืออักขระH
,S
และP
อย่างน้อย 1 ตัวเพื่อระบุว่าควรแจ้งว่าเมธอดนี้ "มาแรง", "เริ่มต้นใช้งาน" หรือ "หลังเริ่มต้นใช้งาน" หรือไม่<CLASS_DESCRIPTOR>
คือตัวบ่งชี้ของคลาสที่เมธอดเป้าหมายอยู่ เช่น คลาสandroidx.compose.runtime.SlotTable
จะมีตัวบ่งชี้เป็นLandroidx/compose/runtime/SlotTable;
<METHOD_SIGNATURE>
คือลายเซ็นของเมธอด ซึ่งประกอบด้วยชื่อ ประเภทพารามิเตอร์ และประเภทผลลัพธ์ของเมธอด เช่น เมธอดfun isPlaced(): Boolean
ในLayoutNode
มีลายเซ็นisPlaced()Z
รูปแบบเหล่านี้อาจมีไวลด์การ์ด (
**
,*
และ?
) เพื่อให้กฎเดียวครอบคลุมเมธอดหรือคลาสหลายรายการ
กฎมีไว้เพื่ออะไร
เมธอดที่มี Flag
H
บ่งบอกว่าเมธอดนี้เป็นเมธอด "ร้อน" และควรคอมไพล์ล่วงหน้าเมธอดที่มี Flag
S
บ่งบอกว่าเป็นเมธอดที่เรียกใช้เมื่อเริ่มต้นระบบ และควรคอมไพล์ล่วงหน้าเพื่อหลีกเลี่ยงค่าใช้จ่ายในการคอมไพล์และการตีความเมธอดเมื่อเริ่มต้นระบบเมธอดที่มี Flag
P
บ่งบอกว่าเป็นเมธอดที่เรียกใช้หลังจากการเริ่มต้นคลาสที่อยู่ในไฟล์นี้บ่งบอกว่ามีการใช้คลาสดังกล่าวระหว่างการเริ่มต้นระบบและควรจัดสรรล่วงหน้าในกองเพื่อหลีกเลี่ยงค่าใช้จ่ายในการโหลดคลาส
ระบบนี้ทำงานอย่างไร
- ไลบรารีสามารถกำหนดกฎเหล่านี้ซึ่งจะรวมอยู่ในอาร์ติแฟกต์ AAR เมื่อสร้างแอปที่มีอาร์ติแฟกต์เหล่านี้ ระบบจะผสานกฎเหล่านี้เข้าด้วยกันและใช้กฎที่ผสานเพื่อสร้างโปรไฟล์ ART แบบไบนารีที่กะทัดรัดซึ่งเจาะจงสำหรับแอป จากนั้น ART จะใช้โปรไฟล์นี้เมื่อติดตั้งแอปในอุปกรณ์เพื่อคอมไพล์ชุดย่อยที่เฉพาะเจาะจงของแอปพลิเคชันล่วงหน้าเพื่อปรับปรุงประสิทธิภาพของแอปพลิเคชัน โดยเฉพาะการใช้งานครั้งแรก โปรดทราบว่าการดำเนินการนี้จะไม่ส่งผลต่อแอปพลิเคชันที่แก้ไขข้อบกพร่องได้
เวอร์ชัน 1.0.0-beta08
2 มิถุนายน 2021
androidx.compose.ui:ui-*:1.0.0-beta08
ได้รับการปล่อยแล้ว เวอร์ชัน 1.0.0-beta08 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
NestedScrollSource
enum แทนที่ด้วยคลาสในบรรทัด (Ie321b, b/187055290)- เปลี่ยนชื่อ
FocusManager.clearFocus(forcedClear = true)
เป็นFocusManager.clearFocus(force = true)
(Ia0c41) - ปรับแต่งการใช้ enum เป็นคลาสในบรรทัดเพื่อหลีกเลี่ยงปัญหาเกี่ยวกับคำสั่ง when ที่ครอบคลุมเมื่อเพิ่มค่า enum ใหม่ (I2b5eb)
- นำ
@ExperimentalComposeUiApi
ออกจากPopupProperties
(I01fa6) - เปลี่ยน
PointerType
จาก enum เป็นคลาสย่อยในบรรทัด (If5058) - พร็อพเพอร์ตี้ ContentDescription และ TextSemantics ไม่ได้เป็นค่าเดี่ยวอีกต่อไป แต่เป็นรายการ ซึ่งจะช่วยให้ผสานข้อมูลดังกล่าวได้เหมือนที่ผสานสตริงแทนการต่อสตริง รวมถึง API การทดสอบที่ดีขึ้นเพื่อใช้ประโยชน์จากการเปลี่ยนแปลงเหล่านี้ (Ica6bf, b/184825850)
Modifier.focusModifier()
เลิกใช้งานแล้วและแทนที่ด้วยModifier.focusTarget()
(I6c860)Modifier.onSizeChanged()
และModifier.onGloballyPositioned()
ไม่ใช่ฟังก์ชันแบบแทรกในบรรทัดอีกต่อไป (I727f6, b/186109675)KeyboardType
enum แทนที่ด้วยคลาสในบรรทัด (I73045, b/187055290)- แทนที่
FocusState
enum ด้วยอินเทอร์เฟซFocusState
(Iccc1a, b/187055290) - คลาสอินไลน์จะแทนที่ ImeAction enum (I18be5, b/187055290)
PlaceholderVerticalAlign
เปลี่ยนเป็นคลาสแบบแทรกในบรรทัด (If6290)- ตอนนี้ TextUnitType เป็นคลาสย่อยในบรรทัด (I4cba9)
- ฟังก์ชัน
AnnotatedString.withAnnotation
เปลี่ยนเป็น ExperimentalTextApi แล้วแทนที่จะเป็น ExperimentalComposeApi (I0cd0a)- ตอนนี้ตัวสร้าง TextUnit ที่มี TextUnitType เปลี่ยนเป็น ExperimentalTextApi แทน ExperimentalComposeApi แล้ว
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องที่เกิดขึ้นในรุ่นเบต้า 07 ซึ่งรายการ LazyColumn/Row แสดงเพียงบางส่วนหลังจากการเลื่อน (I8c9ac, b/188566058)
- ตอนนี้
detectDragGesures
,detectVerticalGestures
และdetectHorizontalGestures
จะใช้การเปลี่ยนแปลงตำแหน่งโดยอัตโนมัติโดยไม่จำเป็นต้องเรียกใช้ change.consumePositionChange ใน callback ของ 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)- คลาสอินไลน์เข้ามาแทนที่ KeyEventType enum (Id670a, b/187055290)
FocusDirection
enum แทนที่ด้วยคลาสย่อยในบรรทัด (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)- เพิ่ม CollectionInfo และ CollectionItemInfo Accessibility API ที่อนุญาตให้ทำเครื่องหมายคอลเล็กชันและรายการของคอลเล็กชันสำหรับบริการการช่วยเหลือพิเศษ (Id54ef, b/180479017)
- เพิ่ม
SemanticsActions.ScrollToIndex
เพื่อเลื่อนรายการที่มีรายการที่จัดทําดัชนีไปยังรายการที่มีดัชนีที่เฉพาะเจาะจง และSemanticsProperties.IndexForKey
เพื่อดูดัชนีของรายการในรายการที่มีรายการที่มีคีย์ LazyList จะใช้การดำเนินการทั้ง 2 รายการ- เพิ่ม
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) - เพิ่ม
performTextInputSelection
API เวอร์ชันทดลอง (I2dcbb, b/178510628) - อินเทอร์เฟซ
InputEventCallback
เลิกใช้งานแล้ว ไม่สามารถใช้งานอินเทอร์เฟซใน API สาธารณะใดๆ และไม่มีการใช้งานในโค้ด (I34a02, b/184003208) - ฟังก์ชัน
TextLayoutResult/createTextLayoutResult
ที่เลิกใช้งานแล้ว ฟังก์ชันนี้เป็นฟังก์ชันสาธารณะที่ไม่ได้ใช้งานซึ่งเพิ่มไว้เพื่อทดสอบ ฟังก์ชันนี้ไม่ทําสิ่งใดที่มีประโยชน์สําหรับ Compose text API เราเลิกใช้งานฟังก์ชันนี้แล้วและจะนำออกในภายหลัง (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)
- เพิ่ม Accessibility API ของ LiveRegion หากทำเครื่องหมายโหนดเป็นภูมิภาคที่เผยแพร่ บริการการช่วยเหลือพิเศษจะแจ้งให้ผู้ใช้ทราบเกี่ยวกับการเปลี่ยนแปลงโดยอัตโนมัติ (Idcf6f, b/172590946)
- เปิดตัว TextOverflow.Visible (Ic8f89)
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาเมื่อรายการ
LazyColumn
/LazyRow
ที่อยู่ที่ขอบมีตำแหน่งไม่ถูกต้องหลังจากการปัดอย่างรวดเร็ว (Ie4d13, b/183877420) - ตอนนี้
AndroidViewBinding
นำเศษข้อมูลที่ขยายผ่านFragmentContainerView
ออกอย่างถูกต้องแล้วเมื่อนำAndroidViewBinding
ออกจากลําดับชั้นการเขียน (Ib0248, b/179915946) - ตอนนี้
AndroidViewBinding
จะฝังข้อมูลพร็อพเพอร์ตี้ที่ขยายผ่านFragmentContainerView
อย่างถูกต้องแล้วเมื่อComposeView
อยู่ภายใน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
- เพิ่ม
LocalSoftwareKeyboardController
composition local API ใหม่เพื่อแทนที่อินเทอร์เฟซ SoftwareKeyboardController ก่อนหน้าใน Text Field (I5951e, b/168778053) - เพิ่ม
LocalSoftwareKeyboardController
composition local API ใหม่เพื่อแทนที่อินเทอร์เฟซ SoftwareKeyboardController ก่อนหน้าใน Text Field (I84472, b/168778053) - นำ
SemanticsMatcher
ต่อไปนี้ออกแล้วhasWidth(width, tolerance)
hasHeight(height, tolerance)
hasLeftPosition(left, tolerance)
hasTopPosition(top, tolerance)
hasRightPosition(right, tolerance)
hasBottomPosition(bottom, tolerance)
(If16bd)
- ทําเครื่องหมาย
SemanticsMatchers
ต่อไปนี้เป็น @ExperimentalTestApihasWidth(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) - เพิ่ม
LocalSoftwareKeyboardController
composition local API ใหม่เพื่อแทนที่อินเทอร์เฟซ SoftwareKeyboardController ก่อนหน้าใน Text Field (I658b6, b/168778053) - แก้ไข NoSuchElementException ที่พบได้น้อยใน
ComposeRootRegistry
'stearDownRegistry()
(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) - ตัวแก้ไขสำหรับการปรับขนาดตามค่าอินทรีย์ไม่ใช่เวอร์ชันทดลองอีกต่อไป (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() - สําหรับ Use Case ที่ซับซ้อน คุณสามารถใช้ InteractionSource.interactions เพื่อสังเกตการณ์สตรีมของการโต้ตอบ ดูข้อมูลเพิ่มเติมในเอกสารประกอบและตัวอย่างของ InteractionSource
- (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
- เพิ่มอินเทอร์เฟซ AccessibilityManager และ AccessibilityManager ในพื้นที่ใน CompositionLocals (I53520)
- นําเมธอด LayoutCoordinates ที่เลิกใช้งานออก ใช้ฟังก์ชันแทนพร็อพเพอร์ตี้สําหรับ positionInParent และ boundsInParent (I580ed, b/169874631, b/175142755)
- ประเภทพื้นฐานที่แทนที่ตัวแปรประเภท
ColorStop
เปลี่ยนชื่อเป็นPair<Float, Color>
แล้วSpanStyleRange
เปลี่ยนชื่อเป็น `AnnotatedString.RangeParagraphStyleRange
เปลี่ยนชื่อเป็นAnnotatedString.Range<ParagraphStyle>
แล้วStringAnnotation
เปลี่ยนชื่อเป็นAnnotatedString.Range<String>
แล้ว- (I8dd1a)
- สร้าง TextInputSession ใหม่สำหรับเซสชันอินพุตจากคอมโพเนนต์ข้อความระดับล่าง เช่น CoreTextField (I8817f, b/177662148)
- ตอนนี้ Placeable จะแสดง measuredSize ซึ่งแสดงขนาดที่เลย์เอาต์ย่อยวัดได้จริง ขนาดนี้อาจไม่เป็นไปตามข้อจำกัดการวัด (Ib2729, b/172560206, b/172338608)
- เพิ่มตัวแก้ไข selectionGroup ที่อนุญาตให้ทำเครื่องหมายคอลเล็กชันแท็บหรือปุ่มตัวเลือกเพื่อวัตถุประสงค์ด้านการช่วยเหลือพิเศษ (Ie5c29)
ตอนนี้
defaultFactory
สำหรับcompositionLocalOf
และstaticCompositionLocalOf
จำเป็นต้องระบุแล้ว ไม่ใช่แค่ไม่บังคับการเปลี่ยนแปลงนี้จะช่วยขจัดข้อผิดพลาดประเภทที่อาจเกิดขึ้นสำหรับประเภทที่ไม่ใช่ Nullable ซึ่งไม่ได้ระบุ Factory เริ่มต้น ก่อนหน้านี้การดำเนินการนี้จะให้ค่าอ้างอิง Null สำหรับประเภทที่ไม่ใช่ Null
สําหรับประเภทที่อนุญาตค่า Null ให้ลองระบุ
{ null }
เป็นฟีเจอร์เริ่มต้นเราไม่แนะนําให้ใช้ตัวแปรที่เก็บข้อมูลในเครื่องกับประเภทที่ไม่ใช่ Null เว้นแต่จะสามารถระบุค่าเริ่มต้นที่เหมาะสมได้ หากไม่มีค่าเริ่มต้นที่เหมาะสม
defaultFactory
lambda ควรแสดงข้อยกเว้น อย่างไรก็ตาม การยกเว้นข้อยกเว้นหมายความว่าผู้ใช้ภาษาท้องถิ่นจะมีความเกี่ยวข้องโดยนัยกับภาษาท้องถิ่นที่ระบุ ซึ่งระบบประเภทไม่ได้บังคับใช้ (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)
การวางแนวย้ายไปอยู่ในแพ็กเกจ Foundation แล้ว ย้าย VelocityTracker จาก ui.gesture ไปยัง ui.input.pointer แล้ว (Iff4a8, b/175294473)
ตอนนี้ imageResource และ vectorResource เป็นฟังก์ชันการขยายในคอมพาเนียน ImageBitmap และ ImageVector ตามลำดับ ลบฟังก์ชัน
load{Image,Vector,Font}Resource
รายการแล้ว (I89130)AnimationClockObservable และคลาสย่อยถูกนําออกแล้ว ระบบได้นำ AnimatedFloat ออกแล้ว (Icde52, b/177457083)
เปลี่ยนชื่อ Providers เป็น CompositionLocalProvider แล้ว
- ตัวสร้างองค์ประกอบไม่ยอมรับพารามิเตอร์คีย์อีกต่อไปและเลิกใช้งานแล้ว
- currentCompositeKeyHash ได้เปลี่ยนเป็นพร็อพเพอร์ตี้ระดับบนสุดที่คอมโพสิเบิลแทนที่จะเป็นฟังก์ชันระดับบนสุดที่คอมโพสิเบิล
- ย้าย CompositionData และ CompositionGroup ไปยังเนมสเปซ androidx.compose.runtime.tooling แล้ว
- ComposableLambda ได้เปลี่ยนเป็นอินเทอร์เฟซแทนที่จะเป็นคลาสที่เฉพาะเจาะจง และไม่มีพารามิเตอร์ประเภทอีกต่อไป
- ComposableLambdaN เปลี่ยนเป็นอินเทอร์เฟซแทนที่จะเป็นคลาสที่เฉพาะเจาะจง และไม่มีพารามิเตอร์ประเภทอีกต่อไป
- ย้ายฟังก์ชัน snapshotFlow ไปยังเนมสเปซ androidx.compose.runtime แล้ว
- เมธอดผสานของ SnapshotMutationPolicy ไม่ได้อยู่ในช่วงทดลองอีกต่อไป
- นําฟังก์ชัน clearRoots ระดับบนสุด @TestOnly ออกแล้ว ไม่จำเป็นต้องใช้อีกต่อไป
- นำฟังก์ชัน keySourceInfoOf และ resetSourceInfo ออกแล้ว จึงไม่จําเป็นต้องใช้อีกต่อไป
- นํา Composer.collectKeySourceInformation ออกแล้ว ไม่จำเป็นต้องใช้อีกต่อไป
- ระบบได้นำเมธอด isJoinedKey, joinedKeyLeft และ joinedKeyRight ออกแล้ว จึงไม่จําเป็นต้องใช้อีกต่อไป
- เราได้ย้ายและจัดระเบียบ API ระดับบนสุดต่างๆ ไว้ในไฟล์ต่างๆ การดำเนินการนี้จะทำลายความเข้ากันได้ของไฟล์ แต่จะไม่ทำลายความเข้ากันได้ของซอร์สโค้ด เนื่องจากความหมายของคลาสไฟล์ Kotlin จึงไม่ควรเป็นปัญหาสำหรับผู้ใช้ส่วนใหญ่
- (I99b7d, b/177245490)
นำ
ComponentActivity.setContent()
ออกจาก compose:ui แล้ว ใช้รหัสจากandroidx.activity:activity-compose:1.3.0-alpha01
นําviewModel()
และLocalViewModelStoreOwner
ออกจาก compose:ui แล้ว ใช้รหัสจากandroidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01
(I6f36b)Modifier.scrollable ได้รับการปรับใหม่ ตอนนี้ใช้อินเทอร์เฟซ Scrollable แทนคลาส 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)
นำ API ของ String.format ออกแล้ว ปรับโครงสร้างการใช้งานในเมธอดต่างๆ ของ toString เพื่อไม่ให้ใช้ประโยชน์จาก String.format ภายใน (Id1290)
นำการยืนยัน dp ออกแล้ว (I798d2)
นำ androidx.compose.runtime:runtime-dispatch ออก (I55feb)
ตอนนี้การดำเนินการกับข้อความจะตรวจสอบโฟกัสโดยอัตโนมัติ (I13777, b/179648629)
นำ
runBlockingWithManualClock
ออกแล้ว (I15cdc, b/179664814)ตอนนี้ตำแหน่งการเลื่อนใน Modifier.verticalScroll()/horizontalScroll() จะแสดงด้วย Int (I81298)
FlingConfig ได้เปลี่ยนชื่อเป็น FlingBehavior แล้ว ซึ่งตอนนี้อนุญาตให้ปรับแต่งภาพเคลื่อนไหวแบบหยุดชั่วคราวแทนการยุบที่กำหนดไว้ล่วงหน้า (I02b86, b/175294473)
เพิ่มฟังก์ชันตัวช่วยที่มีประโยชน์ในการตั้งค่าการดำเนินการเดียวกันสำหรับ Callback ของ ImeAction ทั้งหมด (I63447, b/179226323)
นำการเรียกกลับ SoftwareKeyboardController ออกจากช่องข้อความทั้งหมดเพื่อแทนที่ด้วย API ใหม่ในเร็วๆ นี้ (Iae869, b/168778053)
FontSpan และ FontWeigthStyleSpan ไม่ได้ใช้งานอีกต่อไปและถูกนำออกแล้ว (Ie5b56, b/177423444)
เปลี่ยนแปลง Material API ดังต่อไปนี้
- เพิ่มพารามิเตอร์ contentPadding ลงใน Top/BottomAppBar เพื่ออนุญาตให้ปรับแต่งการเว้นวรรคเริ่มต้น
- จัดเรียงพารามิเตอร์ใน BackdropScaffold ใหม่เพื่อให้เป็นไปตามหลักเกณฑ์ของ API ที่กำหนดให้พารามิเตอร์ที่จำเป็นอยู่ก่อนพารามิเตอร์ที่ไม่บังคับ
- ย้ายพารามิเตอร์
icon
ใน BottomNavigationItem ไปไว้หลังselected
และonClick
- เปลี่ยนชื่อพารามิเตอร์
alwaysShowLabels
ใน BottomNavigationItem เป็นalwaysShowLabel
- เปลี่ยนชื่อพารามิเตอร์
bodyContent
ในคอมโพเนนต์บางรายการเป็นcontent
- พารามิเตอร์ที่จัดเรียงใหม่ใน
ButtonDefaults.buttonColors()
โปรดทราบว่าเนื่องจากประเภทของพารามิเตอร์ไม่เปลี่ยนแปลง การดำเนินการนี้จะไม่ทำให้เกิดข้อผิดพลาดในโค้ด โปรดตรวจสอบว่าคุณใช้พารามิเตอร์ที่มีชื่อหรืออัปเดตลําดับด้วยตนเอง ไม่เช่นนั้นโค้ดจะไม่ทํางานเหมือนเดิม - เพิ่มพารามิเตอร์
secondaryVariant
ไปยังdarkColors()
แล้ว โดยปกติแล้วสีนี้จะเหมือนกับsecondary
ในธีมมืด แต่เพิ่มเข้ามาเพื่อให้สอดคล้องกันและปรับแต่งเพิ่มเติมได้ - นํา ElevationDefaults และ animateElevation() ออกจากแพลตฟอร์ม API สาธารณะเนื่องจากไม่ค่อยมีการใช้งาน / มีประโยชน์
- เปลี่ยนชื่อ
onValueChangeEnd
ในSlider
เป็นonValueChangeFinished
และกำหนดให้มีค่า Null ได้ - เปลี่ยนชื่อพารามิเตอร์
text
ในSnackbar
เป็นcontent
เพื่อให้สอดคล้องกัน - เพิ่มพารามิเตอร์
contentPadding
ลงในDropdownMenuItem
เพื่ออนุญาตให้ปรับแต่งการเยื้องเริ่มต้น และทําให้content
เป็นส่วนขยายของRowScope
- เปลี่ยนชื่อ
ModalDrawerLayout
เป็นModalDrawer
แล้ว - เปลี่ยนชื่อ
BottomDrawerLayout
เป็นBottomDrawer
แล้ว - (I1cc66)
การแก้ไขข้อบกพร่อง
- เพิ่ม API เพื่อใช้ทรัพยากร AnimatedVectorDrawable ใน Compose ใช้ animatedVectorResource เพื่อโหลด
<animated-vector>
XML เป็น AnimatedImageVector และสร้างภาพเคลื่อนไหวด้วย painterFor (I8ea91) - เพิ่ม API ใหม่สำหรับองค์ประกอบ LocalSoftwareKeyboardController แทนอินเทอร์เฟซ SoftwareKeyboardController ก่อนหน้าใน TextField (I658b6, b/168778053)
เวอร์ชัน 1.0.0-alpha12
10 กุมภาพันธ์ 2021
androidx.compose.ui:ui-*:1.0.0-alpha12
ได้รับการปล่อยแล้ว เวอร์ชัน 1.0.0-alpha12 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- นำการรองรับ ViewGroups ออกจาก UiApplier แล้ว นําคอมโพสิชัน emitView ที่เลิกใช้งานออกแล้ว (Ifb214)
- ตอนนี้ Modifier.pointerInput ต้องใช้คีย์การจดจำเพื่อระบุว่าควรรีสตาร์ทโคโริวทีนการตรวจหาการป้อนข้อมูลด้วยเคอร์เซอร์เมื่อใดสำหรับข้อกําหนดใหม่ (I849cd)
- เปลี่ยนชื่อ CompositionReference เป็น CompositionContext (I53fcb)
- เปลี่ยนชื่อ Bounds เป็น DpRect (I4b32a)
- การอัปเดตการทดสอบ: hasText() จะตรวจสอบทั้งข้อความป้อนข้อมูลและข้อความป้ายกำกับ/คำแนะนำ/ตัวยึดตําแหน่งในช่องข้อความ (Iab803)
- คอมโพสิชัน viewModel() และ LocalViewModelStoreOwner ย้ายไปที่ androidx.lifecycle.viewmodel.compose แล้ว ตอนนี้คุณจะต้องเพิ่มข้อกําหนด androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 แยกต่างหากเพื่อใช้งาน (I7a374)
- อนุญาตให้การดำเนินการเป็นค่า Null ได้ในส่วน AccessibilityAction, เปลี่ยนป้ายกำกับการดำเนินการใน AccessibilityAction และ CustomAccessibilityAction จาก CharSequence เป็น String (I0dc82)
- เราได้เปลี่ยนชื่อ ImagePainter เป็น BitmapPainter เพื่อให้สอดคล้องกับรูปแบบการตั้งชื่อของ ImageBitmap และ ImageVector มากขึ้น และเพื่อให้สอดคล้องกับ VectorPainter (Iba381, b/174565889)
- API การทดสอบสตริงย่อยที่ดีขึ้นโดยใช้สตริงย่อยเป็นอาร์กิวเมนต์ (Icbe78)
- เพิ่ม
Modifier.focusOrder()
ที่รับ FocusRequester โดยไม่ระบุลําดับโฟกัสที่กำหนดเอง ซึ่งมีประโยชน์เมื่อเราต้องการระบุเฉพาะข้อมูลอ้างอิง แต่ไม่ต้องระบุลําดับโฟกัสที่กําหนดเองสําหรับคอมโพสิเบิล (I4f52a, b/179180978) - ComponentActivity.setContent ได้ย้ายไปอยู่ใน androidx.activity.compose.setContent ในโมดูล androidx.activity:activity-compose (Icf416)
- เราได้นําเมธอดการจัดโครงสร้างใหม่และ 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)
- ตอนนี้ Semantics ของ ScrollAxisRange ใช้ Lambda ที่แสดงผล Float แทนค่า Float โดยตรงเพื่อเหตุผลด้านประสิทธิภาพ (If4a35, b/178657186)
- เพิ่มความหมายของ EditableText เพื่อทําเครื่องหมายข้อความอินพุตที่แก้ไขได้ของช่องข้อความสำหรับการช่วยเหลือพิเศษ และวิธีการทดสอบที่เกี่ยวข้องเพื่อตรวจสอบความหมาย (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) - เปลี่ยนชื่อ "ภาพพักหน้าจอ" ให้ตรงกับ "ภาพพักหน้าจอ" -> เปลี่ยนชื่อ CompositionLocal เดิมองค์ประกอบรอบข้างมีชื่อว่า AmbientFoo แต่ตอนนี้ CompositionLocals มีชื่อว่า LocalFoo (I2d55d)
- ระบบได้นำ BaseTextField ที่เลิกใช้งานแล้วออกแล้ว ให้ใช้ BasicTextField แทน (I71368)
- ย้ายการเลือกไปยังมูลนิธิแล้ว (I7892b)
- เราจะนําคอมโพสิเบิล
savedInstanceState { 0 }
ออกในลักษณะเดียวกับที่เรานําคอมโพสิเบิลstate { 0 }
ออกก่อนหน้านี้และตอนนี้ส่งเสริมให้ใช้คอมโพสิเบิลremember { mutableStateOf(0) }
คุณควรใช้rememberSaveable { mutableStateOf(0) }
แทน ซึ่งจะบันทึกและกู้คืนโดยอัตโนมัติหากประเภทที่ใช้ภายใน MutableState จัดเก็บไว้ใน Bundle ได้ หากก่อนหน้านี้คุณส่งออบเจ็กต์โปรแกรมบันทึกที่กำหนดเอง ตอนนี้คุณต้องใช้การโอเวอร์โหลดใหม่ของ rememberSaveable ซึ่งมีพารามิเตอร์stateSaver
การใช้งานจะมีลักษณะดังนี้val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) }
(Ib4c26, b/177338004) - เพิ่มความหมายของรหัสผ่านสำหรับการช่วยเหลือพิเศษ (I231ce)
- เพิ่ม ProgressBarRangeInfo.Indeterminate เพื่อทําเครื่องหมายแถบความคืบหน้าแบบไม่แน่นอนสำหรับการช่วยเหลือพิเศษ (I6fe05)
- เราได้เลิกใช้งานยูทิลิตี
emptyContent()
และ(@Composable () -> Unit).orEmpty()
เนื่องจากไม่มีผลกระทบหรือคุณค่าเชิงบวกต่อประสิทธิภาพอีกต่อไป (I0484d) snapshotFlow
และwithMutableSnapshot
ไม่ได้อยู่ในช่วงทดลองแล้ว (I6a45f)- ตอนนี้คุณปิดเครื่องมือจัดเรียงใหม่ได้แล้ว ตัวจัดเรียงใหม่แบบปิดจะจัดเรียงใหม่ต่อไปจนกว่าโคโริวทีนย่อยของการจัดเรียงจะเสร็จสมบูรณ์ เปลี่ยนชื่อ Recomposer.shutDown เป็น cancel เพื่อไม่ให้สับสนกับ close (Ib6d76)
- เปลี่ยนชื่อ UiSavedStateRegistry เป็น SaveableStateRegistry, เปลี่ยนชื่อ AmbientUiSavedStateRegistry เป็น AmbientSaveableStateRegistry และย้ายทั้ง 2 รายการไปยังแพ็กเกจ androidx.compose.runtime.saveable (I30224)
- เปลี่ยนชื่ออาร์ติแฟกต์ androidx:compose:runtime:runtime-saved-instance-state เป็น androidx:compose:runtime:runtime-saveable (I6dcac)
- ระบบจะลบ API จำนวนมากที่เลิกใช้งานไปนานแล้วในแพ็กเกจ UI (I2f2dc)
- อาร์ติแฟกต์ compose:runtime-dispatch เลิกใช้งานแล้วในตอนนี้ ตอนนี้ MonotonicFrameClock จะอยู่ใน compose:runtime และ AndroidUiDispatcher จะอยู่ใน compose:ui (Ib5c36)
- คลาส Outline.* ไม่ใช่คลาสข้อมูลอีกต่อไป (I4879e, b/178001427)
- นำ
view.captureToImage()
ออกโดยไม่มีการแทนที่ (I7fcd2) - เปิดตัว ColorMatrix API ที่ใช้เพื่อแก้ไขค่า RGB ของเนื้อหาต้นทาง ปรับแต่ง ColorFilter API ให้เป็นอินเทอร์เฟซและจับคู่กับการใช้งาน PathEffect (Ica1e8)
- เพิ่มพารามิเตอร์ layoutDirection ไปยัง createOutline ของ Shape ซึ่งช่วยให้สร้างรูปร่างที่คำนึงถึงทิศทางของเลย์เอาต์ได้ (I57c20, b/152756983)
- onImeActionPerformed เลิกใช้งานแล้ว ให้ใช้ KeyboardActions แทน (If0bbd, b/179071523)
- เปิดตัวองค์ประกอบ
InfiniteAnimationPolicy
บริบท coroutine ที่จะใช้กับภาพเคลื่อนไหวแบบไม่มีสิ้นสุด โดยค่าเริ่มต้น ระบบจะไม่ติดตั้งนโยบาย ยกเว้นเมื่อทำการทดสอบด้วย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 จาก left/right เป็น start/end เพื่อรองรับการมิเรอร์อัตโนมัติของรูปร่างในทิศทาง rtl AbsoluteRounderCornerShape และ AbsoluteCutCornerShape เปิดตัวสำหรับกรณีที่ไม่ต้องการให้มีการแสดงผลแบบมิเรอร์อัตโนมัติ (I61040, b/152756983)
API ที่ปลั๊กอินคอมไพเลอร์ Compose กำหนดเป้าหมายได้ได้รับการปรับโครงสร้างให้ใช้อินเทอร์เฟซแทนคลาสที่เฉพาะเจาะจง นอกจากนี้ อินเทอร์เฟซจะไม่ใช้พารามิเตอร์ประเภทอีกต่อไป
การเปลี่ยนแปลงนี้เป็นการเปลี่ยนแปลงภายในที่ไม่ควรส่งผลต่อความเข้ากันได้ของซอร์สโค้ด แต่เป็นการเปลี่ยนแปลงที่ทำให้เกิดข้อขัดข้องในไบนารี (I3b922, b/169406779)
นำฟังก์ชัน StringBuilder.deleteAt แบบสาธารณะออกโดยไม่ตั้งใจ (Id6ed9)
การแก้ไขข้อบกพร่อง
- ตอนนี้ ComposeViews ที่วางไว้ในลําดับชั้นของมุมมองที่เป็นองค์ประกอบย่อยขององค์ประกอบอื่นจะโฮสต์องค์ประกอบย่อยของบรรพบุรุษ (I92883)
- อัปเดต API imageFromResource ของคอมโพเนนต์เพื่อใช้แคชภาพวาดทรัพยากรซ้ำเมื่อโหลดออบเจ็กต์ 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)
- ระบบจะนำ Duration และ Uptime ไปแทนที่ด้วย Long milliseconds และขั้นตอนนี้จะนําการพึ่งพาอินพุตเคอร์เซอร์ในคลาสเหล่านั้นออก (Ia33b2, b/175142755, b/177420019)
- เพิ่ม AmbientSavedStateRegistryOwner ในลักษณะเดียวกับ AmbientLifecycleOwner และ AmbientViewModelStoreOwner ที่มีอยู่ (I9a3e8, b/176756365)
- อัปเดตกราฟิกเวกเตอร์ API เพื่อรองรับการแยกวิเคราะห์การปรับสี ที่ใช้กับรูทของกราฟิกเวกเตอร์ (Id9d53, b/177210509)
- เพิ่ม toolType ลงใน PointerInputChange เพื่อแยกความแตกต่างของอุปกรณ์ (Iac787, b/175142755)
- AmbientWindowManager เปลี่ยนชื่อเป็น AmbientWindowInfo (I2686a, b/177084714, b/177084983)
- เลิกใช้งานเมธอดพิกัดส่วนกลางและสร้างเมธอดพิกัดตามกรอบหน้าต่างใหม่ (Iee284)
- เพิ่ม Modifier.toolingGraphicsLayer ซึ่งจะเพิ่มตัวแก้ไขเลเยอร์กราฟิกเมื่อเปิดการตรวจสอบ (I315df)
- ตอนนี้ FocusRequester.createRefs มีสถานะเป็นเวอร์ชันทดลองเนื่องจากอาจมีการเปลี่ยนแปลง (I2d898, b/177000821)
- เปลี่ยนชื่อ SemanticsPropertyReceiver.hidden เป็น invisibleToUser และทําเครื่องหมาย @ExperimentalComposeUiApi AccessibilityRangeInfo เปลี่ยนชื่อเป็น ProgressBarRangeInfo stateDescriptionRange เปลี่ยนชื่อเป็น progressBarRangeInfo AccessibilityScrollState เปลี่ยนชื่อเป็น ScrollAxisRange horizontalAccessibilityScrollState เปลี่ยนชื่อเป็น horizontalScrollAxisRange verticalAccessibilityScrollState เปลี่ยนชื่อเป็น verticalScrollAxisRange (Id3148)
- นํา PointerInputData ออกและแก้ไข PointerInputChange เพื่อเพิ่มช่องทั้งหมดของ PointerInputData เปลี่ยน PointerInputEvent และ PointerInputEventData เป็นภายในเนื่องจากไม่มีการใช้ใน API สาธารณะ (Ifff97, b/175142755)
- อัปเดตการใช้งาน GraphicsLayerScope ให้มีความละเอียดเพื่อรองรับการเปลี่ยน dp เป็นพิกเซลดิบ (Ied528, b/176819695)
- อัปเดต Matrix 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)
การเปลี่ยนแปลงฟังก์ชันเริ่มต้นสำหรับแบบอักษร/ชุดแบบอักษร/แบบตัวพิมพ์
- เพิ่มฟังก์ชันของโรงงานที่ขึ้นต้นด้วยอักษรตัวพิมพ์ใหญ่
- ฟังก์ชันการสร้างก่อนหน้านี้ที่เลิกใช้งานซึ่งมีตัวอักษรตัวแรกเป็นตัวพิมพ์เล็ก
- ฟังก์ชันใหม่ของ Factory จะแสดงผล FontFamily แทนที่จะเป็นคลาสย่อย
- ซ่อนตัวสร้างของคลาสย่อยเพื่อให้สร้างได้ผ่านฟังก์ชันการสร้างเท่านั้น
- เปลี่ยนชื่อ Font.asFontFamily เป็น Font.toFontFamily (I42aa7)
เปิดตัว
ComposeContentTestRule
ซึ่งขยายจากComposeTestRule
และกำหนดsetContent
ซึ่งนําออกจากComposeTestRule
แล้ว เพิ่มเมธอดแฟกทอรีcreateEmptyComposeRule()
ที่แสดงผลComposeTestRule
และไม่เปิด Activity ให้คุณ ใช้คำสั่งนี้เมื่อคุณต้องการเปิดใช้งานกิจกรรมระหว่างการทดสอบ เช่น ใช้ActivityScenario.launch
(I9d782, b/174472899)animateAsState เปลี่ยนเป็น animateFooAsState แล้ว โดยที่ Foo คือประเภทของตัวแปรที่มีภาพเคลื่อนไหว เช่น Float, Dp, Offset ฯลฯ (Ie7e25)
เพิ่มพารามิเตอร์คำอธิบายเนื้อหาลงในรูปภาพและไอคอนแล้ว ใช้เพื่อระบุคำอธิบายบริการการช่วยเหลือพิเศษ (I2ac4c)
นำ displaySize ออกเนื่องจากควรหลีกเลี่ยง โดยทั่วไปแล้ว เราขอแนะนำให้ใช้ขนาดของ onRoot() หรือขนาดหน้าต่างเป็นอย่างน้อย (I62db4)
OnSizeChanged รายงานขนาดของเนื้อหาเลย์เอาต์ ตอนนี้จะรายงานขนาดตามตําแหน่งภายในเชนตัวแก้ไข (I36b78, b/177562900)
เราได้เลิกใช้งาน emit() API และ Overload ทั้งหมดแล้ว และเปลี่ยนชื่อเป็น ComposeNode API เหล่านี้เหมือนกัน เพียงแต่มีชื่อต่างกันเพื่อให้เป็นไปตามรูปแบบการตั้งชื่อของ 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
ครั้งเดียวไม่น่าเชื่อถือและถูกนําออกสําหรับRememberObserver
RememberObserver
เพิ่ม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 แทน เพื่อไม่ให้ผู้ใช้ใช้วิธีที่ไม่มีประสิทธิภาพ ผู้ใช้ยังคงเลือกได้ว่าไม่ต้องการลักษณะการทำงานแบบ Lazy และจะใช้ตัวแก้ไขโดยตรงได้ดังนี้ Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b, b/170468083)
items(count: Int)
เมธอดแฟกทอรีใหม่สำหรับขอบเขตของ LazyColumn/LazyRow/LazyVerticalGrid ตอนนี้items(items: List)
และitemsIndexed(items: List)
เป็นฟังก์ชันส่วนขยายแล้ว คุณจึงต้องนําเข้าด้วยตนเองเมื่อใช้งาน การโอเวอร์โหลดส่วนขยายใหม่สําหรับอาร์เรย์:items(items: Array)
และitemsIndexed(Array)
(I803fc, b/175562574)โปรดใช้ ImeAction.None แทน ImeAction.NoAction
- โปรดใช้ ImeAction.Default แทน ImeAction.Unspecified (Ie1bcc)
ใช้ประโยชน์จาก TestCoroutineDispatcher ในการทดสอบ (I532b6)
เปลี่ยนชื่อ TextInputService.onStateUpdated เป็น updateState (Id4853)
เลิกใช้งาน Transition ตาม 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 ทดลองอีกต่อไปจนกว่าจะมีการใช้การเปลี่ยนแปลง โดยปกติแล้ว ปัญหานี้สามารถแก้ไขได้โดยการล้อมรอบโค้ดที่มี Dependency ดังกล่าวใน
SideEffect
composable เพื่อเลื่อนเวลาการเรียกใช้โค้ดจนกว่าจะสร้างและเริ่มต้นโหนดแล้ว (I018da)
การเปลี่ยนแปลง API
- เพิ่ม Modifier.focusOrder() ที่ใช้ระบุลําดับการโฟกัสที่กำหนดเองได้ (I90cf5, b/175899543, b/170155556, b/170155429)
- นำ focusObserver ที่เลิกใช้งานแล้วออก และใช้ onFocusChanged หรือ onFocusEvent แทน (I3ecb9, b/175156387)
- การเปลี่ยนแปลง EditOperations API
- เปลี่ยนชื่อ EditOperation เป็น EditCommand
- เพิ่มส่วนต่อท้ายคําสั่งสําหรับการใช้งาน EditOperation ที่เฉพาะเจาะจง
- EditCommand ไม่ใช่คลาสข้อมูลอีกต่อไป
- เปลี่ยนชื่อฟังก์ชัน EditOperation.process เป็น applyTo
- เปลี่ยนชื่อ InputEventListener เป็น InputEventCallback
- (I0a366)
- นำ PxSquared, PxCubed, PxInverse ที่ไม่ได้ใช้ออก เปลี่ยน Size.center() เป็นพร็อพเพอร์ตี้ (I973f7)
- ตอนนี้โมดูล ui-test จะกำหนดค่าการสร้าง Recomposer สำหรับ UI ภายใต้การทดสอบได้แล้ว (Ibebd8)
- แก้ไข Velocity ให้มีองค์ประกอบและการดำเนินการทางคณิตศาสตร์ (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 สำหรับคลาสอินไลน์ที่มีค่าคงที่ที่ไม่ระบุ (I93f7b, b/174310811)
ขยาย [Abstract]ComposeView API เพื่ออนุญาตให้รีไซเคิลมุมมองที่อิงตาม Compose โดยทิ้งการคอมโพสิชันเพื่อสร้างใหม่อีกครั้งในภายหลัง เพิ่ม API สําหรับการติดตั้งและค้นหา Recomposer ระดับหน้าต่าง และ CompositionReferences เพื่อสร้างองค์ประกอบย่อย
เพิ่ม ViewCompositionStrategy สำหรับการกําหนดค่ากลยุทธ์การทิ้งองค์ประกอบของ [Abstract]ComposeViews โดยลักษณะการทํางานเริ่มต้นคือการทิ้งเมื่อหน้าต่างแยกออก (I860ab)
นํา API สาธารณะ Any.identityHashCode() ออกแล้ว (I025d7)
นํา API toStringAsFixed ออกเพื่อใช้ String.format โดยตรงแทน (Iaba6b)
เพิ่มปุ่มเปิด/ปิดลงใน 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 เพื่อแจ้งการอัปเดต Selectable ไปยัง 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)
เปลี่ยนชื่อ Position เป็น DpOffset และนํา getDistance() ออก (Ib2dfd)
เปลี่ยน fun Dp.isFinite() เป็น val Dp.isFinite (I50e00)
การแก้ไขข้อบกพร่อง
- ตอนนี้ Recomposer แสดงสถานะปัจจุบันของโฟลว์ ซึ่งช่วยให้คุณตรวจสอบกิจกรรมของ Recomposer และกิจกรรมของเอฟเฟกต์ที่เกี่ยวข้องได้ (Ifb2b9)
- ตอนนี้คุณเข้าถึงเหตุการณ์แป้นพิมพ์แบบดั้งเดิมผ่าน keyEvent.nativeKeyEvent ได้แล้ว (I87c57, b/173086397)
animate()
เปลี่ยนเป็นanimateAsState()
แล้ว ซึ่งแสดงผลเป็นState<T>
แทนT
วิธีนี้ช่วยให้ประสิทธิภาพดีขึ้น เนื่องจากสามารถจํากัดขอบเขตการลบล้างให้แคบลงได้ตรงที่อ่านค่าสถานะ (Ib179e)- เพิ่ม Semantics Role API และเพิ่ม Role เป็นพารามิเตอร์ให้กับ SemanticsModifier ที่คลิกได้ เลือกได้ และเปิด/ปิดได้ เปลี่ยน Modifier.progressSemantics เพื่อให้ Slider ใช้งานได้ด้วย (I216cd)
- API ใหม่ที่ใช้ coroutine
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)
- นําเหตุการณ์ที่กําหนดเองออกจากการระงับ Pointer Input 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 ทั้งหมดที่ต้องใช้การสร้างจากล่างขึ้นบนเพื่อประสิทธิภาพ การเปลี่ยนแปลงนี้ทำให้Applier
ลบล้างinsertBottomUp()
เพื่อสร้างต้นไม้จากล่างขึ้นบน และinsertTopDown()
เพื่อสร้างต้นไม้จากบนลงล่าง (Icbdc2)เพิ่มพร็อพเพอร์ตี้ dismissOnBackPress และ dismissOnClickOutside ลงใน AndroidDialogProperties ซึ่งช่วยให้คุณกําหนดค่าได้ว่าจะให้เรียกใช้ Lambda ของ onDismissRequest ของกล่องโต้ตอบเมื่อใด (If5e17)
เพิ่ม painterResource API เพื่อจัดการการโหลดออบเจ็กต์ Painter แบบทึบจากรูปแบบเนื้อหาแบบแรสเตอร์ (เช่น PNG) หรือ VectorDrawable ผู้บริโภคไม่จำเป็นต้องกำหนดประเภทชิ้นงานล่วงหน้าอีกต่อไป และสามารถเรียกใช้เมธอดนี้เพื่อรับออบเจ็กต์ Painter ไปใช้ในคอมโพสิชันรูปภาพหรือตัวแก้ไข Painter (I2c703, b/173818471)
เพิ่ม Modifier.clearAndSetSemantics เพื่อล้างเซมาติกส์ของรายการที่สืบทอดและตั้งค่าใหม่ (I277ca)
ย้าย ContentDrawScope ไปยังโมดูล ui-graphics เพื่อรวมเข้ากับ DrawScope (Iee043, b/173832789)
เปิดตัว PathEffect Graphics API เพื่อใช้สร้างรูปแบบต่างๆ ให้กับรูปร่างที่มีเส้นขอบ เลิกใช้งาน NativePathEffect แล้วเพื่อใช้ PathEffect แทน (I5e976, b/171072166)
เพิ่มอินเทอร์เฟซ IdlingResource ลงใน Compose เป็นตัวแปรของทรัพยากรการหยุดทำงานชั่วคราวของ Espresso ที่ Compose รองรับ โดยสามารถลงทะเบียนและยกเลิกการลงทะเบียนผ่าน ComposeTestRule (I433f3)
นำการลงทะเบียน (ยกเลิกการ) ลงทะเบียน ComposeIdlingResource ทั่วโลกออก และนำการลงทะเบียน (ยกเลิกการ) ลงทะเบียนนาฬิกาใน ComposeIdlingResource ทั่วโลกออก (I32660)
การแก้ไขข้อบกพร่อง
- ตอนนี้ Lambda ในตัวแก้ไขออฟเซตจะแสดงผล IntOffset แทน Float (Ic9ee5, b/174137212, b/174146755)
นํา SlotTable, SlotReader และ SlotWriter ออกจาก API สาธารณะแล้ว ก่อนหน้านี้มีการทำเครื่องหมายเป็น InternalComposeAPI ตอนนี้เป็นข้อมูลภายในของข้อบังคับการเขียน
เราได้เพิ่ม CompositionData และ CompositionGroup เข้ามาเพื่อแทนที่ ui-tooling API ที่ใช้ดึงข้อมูลการคอมโพส ข้อมูลเหล่านี้เป็นแบบสาธารณะ แต่ไม่ได้มีไว้เพื่อใช้งานนอก ui-tooling API เนื่องจากให้ข้อมูลดิบที่ ui-tooling API จะตีความ (I31a9c)
ปรับแต่ง ShaderBrush ใหม่เพื่อสร้างอินสแตนซ์ Shader แบบไม่สนใจเมื่อมีข้อมูลการปรับขนาดของสภาพแวดล้อมการวาด ซึ่งมีประโยชน์ในการกําหนดไล่ระดับสีที่ครอบครองขอบเขตการวาดทั้งหมดของคอมโพสิเบิล ณ เวลาจัดองค์ประกอบ โดยไม่ต้องใช้การใช้งาน DrawModifier ที่กําหนดเอง
API ตัวสร้างฟังก์ชันการไล่ระดับสีที่เลิกใช้งานแล้วเพื่อใช้เมธอดแฟกทอรีบนออบเจ็กต์ Gradient (I511fc, b/173066799)
เลิกใช้งาน LazyColumnFor, LazyRowFor, LazyColumnForIndexed และ LazyRowForIndexed ใช้ LazyColumn และ LazyRow แทน (I5b48c)
BuildCompat.isAtLeastR ที่เลิกใช้งานแล้ว (Idb37e)
เพิ่มฟังก์ชันสร้างของ buildAnnotatedString เพื่อที่จะสร้าง AnnotatedString ฟังก์ชัน annotatedString builder ที่เลิกใช้งานแล้ว (Idfe0b)
นําเมธอดการขยายในประเภทข้อมูล Float และ Double ออกเพื่อแปลงค่าเป็นเรเดียน ย้ายไปเป็นฟังก์ชันส่วนตัวภายในการใช้งาน PathParser ซึ่งเป็นที่เดียวที่ใช้ (I25f52)
เวอร์ชัน 1.0.0-alpha08
2 ธันวาคม 2020
androidx.compose.ui:ui-*:1.0.0-alpha08
ได้รับการปล่อยแล้ว เวอร์ชัน 1.0.0-alpha08 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มการดำเนินการตามความหมาย "ปิด" (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() ซึ่งช่วยให้เลย์เอาต์ที่กำหนดเองและตัวแก้ไขเลย์เอาต์วางองค์ประกอบย่อยได้ด้วยการนําเข้าเลเยอร์กราฟิกสําหรับการวาด เมื่อทำเช่นนี้ เราจะเพิ่มประสิทธิภาพการวาดภาพใหม่ได้ก่อน เมื่อต้องย้ายรายการย่อยจึงไม่ต้องวาดเนื้อหาของรายการย่อยนั้นใหม่ และประการที่ 2 เราจะใช้การเปลี่ยนรูปแบบการวาดสำหรับรายการย่อยได้ (Ibd8f6, b/170296989, b/171493718, b/173030831)
- นํา
<T>
ออกจากการประกาศ SubcomposeLayout แล้ว ตอนนี้คุณใช้คำสั่งนี้โดยไม่ต้องระบุประเภทได้แล้ว (Ib60c8) - เพิ่ม Modifier.scale/rotate
API เพื่อความสะดวกใน 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 หรือไม่เมื่อมีการส่งเหตุการณ์การกดแป้น (I50ed9)
- เพิ่มการโอเวอร์โหลด
Modifier.drawLayer()
ใหม่ โดยจะใช้บล็อก Lambda ใน GraphicsLayerScope ใหม่ที่คุณกําหนดพารามิเตอร์เลเยอร์ในลักษณะที่ข้ามการจัดองค์ประกอบใหม่และการจัดวางใหม่เมื่อเกิดการเปลี่ยนแปลงสถานะ ตอนนี้ DrawLayerModifier เป็นโมดูลภายในเพื่อเตรียมย้ายข้อมูลตรรกะไปยังเมธอด placeable.placeWithLayer() ของ LayoutModifier (I15e9f, b/173030831) - เลิกใช้งานแอมเบียนท์ที่มีชื่อต่อท้ายด้วย
Ambient
และแทนที่ด้วยพร็อพเพอร์ตี้ใหม่ที่ขึ้นต้นด้วยแอมเบียนท์ตามหลักเกณฑ์อื่นๆ ของแอมเบียนท์และ Compose API (I33440) - ย้าย
androidx.compose.ui.text.Typeface
ไปยังandroidx.compose.ui.text.font.Typeface
(Ic2b81) - เปลี่ยนชื่ออาร์กิวเมนต์เชิงความหมาย mergeAllDescendants เป็น mergeDescendants (Ib6250)
- ตัวตรวจจับท่าทางลากแบบใหม่ที่จะระงับ Pointer Input API รวมถึงการล็อกการวางแนว (Icef25)
- เปลี่ยนชื่อ VectorAsset เป็น ImageVectorย้ายและเปลี่ยนชื่อ VectorAsset เป็น Builder เพื่อให้เป็นคลาสภายในของ ImageVector ตามหลักเกณฑ์ของ API เพิ่ม Type Alias ของ 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)
- เพิ่มตัวตรวจจับท่าทางสัมผัสสำหรับการแตะ การแตะ 2 ครั้ง การกดค้าง และตัวบ่งชี้การกดโดยใช้อินพุตเคอร์เซอร์ที่หยุดชั่วคราวแบบใหม่ นอกจากนี้ เรายังได้เพิ่มยูทิลิตีบางอย่างเพื่อให้นักพัฒนาแอปเขียนโปรแกรมตรวจจับท่าทางของตนเองได้ง่ายขึ้น (I00807)
- เปลี่ยนชื่อ
id
เป็นlayoutId
สำหรับLayoutIdParentData
แล้ว เปลี่ยนชื่อMeasurable.id
เป็นMeasurable.layoutId
แล้ว (Iadbcb, b/172449643) - ตัวตรวจจับท่าทางสัมผัสแบบมัลติทัชแบบใหม่ รวมถึงตัวช่วยในการตรวจจับการหมุน การซูม และการเลื่อน (Ic459d)
- เปิดตัว SweepGradientShader และ SweepGradientBrush API (Ia22c1)
- ตอนนี้การควบคุมเวลาในการทดสอบ (TestAnimationClock และการใช้งาน) อยู่ในช่วงทดลอง (I6ef86, b/171378521)
เพิ่ม API เลื่อนที่ใช้ Coroutine
เพิ่ม 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)
การแก้ไขข้อบกพร่อง
- เปลี่ยนชื่อพารามิเตอร์การจัดตำแหน่งของกล่องเป็น contentAlignment (I2c957)
- เปลี่ยนชื่อตัวแก้ไข offsetPx เป็น offset ตอนนี้พารามิเตอร์เหล่านี้ใช้พารามิเตอร์ Lambda แทนสถานะ (Ic3021, b/173594846)
- เพิ่มพารามิเตอร์ "resetInput" ไปยัง TextInputService#onStateUpdated (I3e8f5, b/172239032, b/171860947)
- เพิ่มการตรวจสอบ Lint สําหรับพารามิเตอร์ตัวแก้ไขในฟังก์ชัน Composable การตรวจสอบ Lint นี้จะตรวจสอบการตั้งชื่อ ประเภทผลลัพธ์ ค่าเริ่มต้น และลําดับของพารามิเตอร์เพื่อให้สอดคล้องกับหลักเกณฑ์ของ Compose (If493b)
- เพิ่มตัวเลือกชั่วคราวเพื่อให้ TestAnimationClock ทำงานตาม MonotonicFrameClock (I1403b, b/173402197)
- เพิ่ม Wrapper ของแบบอักษร Android คุณสามารถโหลดแบบอักษร Android ผ่านฟังก์ชัน
typeface
เช่นtypeface(Typeface.DEFAULT)
และเปลี่ยนชื่อtypefaceFromFontFamily()
เป็นtypeface()
ด้วย (I52ab7) - เพิ่มการตรวจสอบ Lint เพื่อตรวจสอบว่าฟังก์ชันของ Factory ของ Modifier ได้รับการกำหนดเป็นส่วนขยายใน Modifier เพื่อให้สามารถเชื่อมต่อกันได้อย่างราบรื่น (I07981)
- นําโมดูล ui-test เก่าและสตับออก (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 แบบอินไลน์เพื่อแสดงปัจจัยการปรับขนาดสำหรับแกนแนวนอนและแนวตั้งโดยแยกกัน เพื่อรองรับกรณีการใช้งานการปรับขนาดที่ไม่สม่ำเสมอ
- เพิ่มเมธอด computeScaleFactor ลงใน ContentScale
- เพิ่ม ContentScale.FillBounds เพื่อทำการScaling แบบไม่สม่ำเสมอเพื่อยืดขอบเขตของ src ให้เต็มพื้นที่ปลายทาง
- เพิ่มเมธอดโอเปอเรเตอร์เพื่อคํานวณพารามิเตอร์ ScaleFactor ด้วยพารามิเตอร์ขนาด
- (Ic96a6, b/172291582)
- เพิ่ม BiasAlignment และ BiasAbsoluteAlignment สำหรับการสร้าง Alignment (Iac836, b/169406772)
- อนุญาตให้นักพัฒนาแอปล้างโฟกัส (I90372)
- แก้ไขข้อบกพร่องที่ทำให้ระบบไม่วาดการยกระดับสำหรับมุมมองภายในเครื่องมือเขียน (If7782)
- สร้าง onDrawBehind API ภายใน ContentDrawScope เพื่อจับคู่รูปแบบการตั้งชื่อกับ Modifier.drawBehind (I4fc3a, b/171955269)
- เพิ่มการรองรับระยะห่างของกล้องเพื่อเสริมการเปลี่ยนรูปแบบ 3 มิติ นั่นคือ การทำให้ภาพหมุนในแนว X/Y ใน API เลเยอร์ (I40213, b/171492100)
- เพิ่ม SelectionContainer ที่ไม่มี Callback (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 เพื่อหลีกเลี่ยงการแปลงค่าที่ไม่จำเป็น (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)
- อัปเดต TextFields ให้ยอมรับ 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 เพื่อให้สอดคล้องกับ API ของ SideEffect และ DisposableEffect ไม่อนุญาตให้ใช้ LaunchedEffect ที่ไม่มีพารามิเตอร์เรื่องเพื่อส่งเสริมแนวทางปฏิบัติแนะนำ (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)
การมีส่วนร่วมจากภายนอก
- ปิดใช้การเผยแพร่อาร์ติแฟกต์ภายใน androidx.compose.ui:ui-text-android (Ib93fa)
เวอร์ชัน 1.0.0-alpha06
28 ตุลาคม 2020
androidx.compose.ui:ui-*:1.0.0-alpha06
ได้รับการปล่อยแล้ว เวอร์ชัน 1.0.0-alpha06 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ตอนนี้ Recomposer เป็น CompositionReference และเป็นองค์ประกอบหลักที่ถูกต้อง ตอนนี้คุณต้องใช้ Explicit Recomposer ในตำแหน่งที่น้อยลง (I4036f)
- เลิกใช้งาน VectorPainter ไปใช้ rememberVectorPainter แทนเพื่อบ่งชี้ได้ดีขึ้นว่า API แบบคอมโพสิเบิลใช้ประโยชน์จาก "remember" ในการจัดเก็บข้อมูลในคอมโพสิชัน (Ifda43)
- อัปเดต Modifier.drawWithCache API เพื่อแสดง ContentDrawScope เป็นขอบเขตผู้รับแทน DrawScope เพื่อให้การติดตั้งใช้งานสามารถจัดเรียงคำสั่งวาดใหม่ได้ ซึ่งมีประโยชน์สำหรับกรณีการใช้งานการผสม/การใส่สี ซึ่งต้องแสดงผลพิกเซลของเนื้อหาก่อนเพื่อให้อัลกอริทึมของโหมดการผสมที่เกี่ยวข้องทำงานได้อย่างถูกต้อง (Ie7ec8)
- ย้าย SimpleContainer ไปยัง PopupTestUtils.kt (I78c57)
- ConsumedData ไม่ใช่คลาสข้อมูลอีกต่อไป ดูรายละเอียดได้ที่ https://android-review.googlesource.com/c/platform/frameworks/support/+/1455219 (I1737f)
- แก้ไขตำแหน่งแฮนเดิล Rtl (I6e1e0)
- ปรับโครงสร้าง DrawScope และ ContentDrawScope เป็นอินเทอร์เฟซแทนที่จะเป็นคลาสนามธรรม
- สร้างการใช้งาน CanvasDrawScope ของ DrawScope
- ปรับโครงสร้างการใช้งาน DrawScope ให้ใช้ CanvasScope แทน
- สร้าง DrawContext เพื่อรวมพึ่งพาสำหรับ DrawScope
- นําวิธีการที่เลิกใช้งานแล้วใน DrawScope ออก (I56f5e)
- การเปลี่ยนแปลงที่ทำให้เกิดข้อขัดข้อง: นำค่าที่แสดงผลจาก
PointerInputFilter.onPointerEvent(...)
ออก เนื่องจากค่าเดียวที่ควรเปลี่ยนแปลงได้ในเหตุการณ์เคอร์เซอร์คือข้อมูลการบริโภค ตอนนี้คุณเปลี่ยนข้อมูลการบริโภคของ PointerEvents ที่ส่งเข้ามาได้โดยไม่ต้องแสดงผลข้อมูลจากPointerInputFilter.onPointerEvent(...)
(I6acd0) - MeasureScope และ IntrinsicMeasureScope กลายเป็นอินเทอร์เฟซ (I1a087, b/170461665)
- ฟังก์ชันผสานสําหรับ AlignmentLine ซ่อนอยู่ (I9da1a, b/170612900, b/170611568)
- เพิ่มความสามารถในการระบุข้อมูลเครื่องมือตรวจสอบในตัวแก้ไขแบบคอมโพสิท (Idee08, b/163494569)
- เพิ่มตัวเลือก "เลือกทั้งหมด" ลงในเมนูการเลือก (Ief02b)
- อัปเดต DrawTransform.rotate ให้ใช้พารามิเตอร์ Pivot เริ่มต้นของ "ตรงกลาง" เพื่อให้ตรงกับเอกสารประกอบ
- อัปเดต DrawScope.rotateRad ให้ใช้ออฟเซตสำหรับจุด Pivot เพื่อให้ตรงกับวิธีการเปลี่ยนรูปแบบอื่นๆ
- เลิกใช้งานการโอเวอร์โหลด DrawScope.rotateRad ที่ใช้ค่า float สำหรับพิกัด x และ y ของจุดหมุน
- (Iffcbb, b/170434992)
การแก้ไขข้อบกพร่อง
- เปิดใช้การตรวจสอบ Lint ของ API สําหรับ MissingGetterMatchingBuilder สําหรับ androidx (I4bbea, b/138602561)
- เพิ่มการทดสอบ (I6b8ae)
- เปิดใช้ทรานซิชันใน ComposeTestRule นำตัวเลือกในการเปิดใช้เคอร์เซอร์ที่กะพริบออกจาก ComposeTestRule (If0de3)
- เพิ่มตัวเลือก IME ของ KeyboardCapitalization (I8ac38)
- เพิ่มตัวเลือกแป้นพิมพ์บรรทัดเดียวลงใน CoreTextField (I72e6d)
- ย้าย SimpleContainer ไปยัง PopupTestUtils.kt (I65c3e)
- เปลี่ยนชื่อ Radius API เป็น CornerRadius เพื่อสื่อให้เห็นการใช้งานใน Compose ได้ดียิ่งขึ้น อัปเดตเอกสารประกอบเพื่อระบุว่ารัศมีมุมติดลบจะได้รับการจำกัดไว้ที่ 0 (I130c7, b/168762961)
- ปรับปรุงการทำงานร่วมกันของ Android โดยส่ง MotionEvents ไปยัง Android View ย่อยต่อไปซึ่งแสดงผลเป็นเท็จสำหรับ onTouchEvent สำหรับการดำเนินการทั้งหมดยกเว้น
ACTION_DOWN
(I94c5a, b/170320973) - เปลี่ยนช่องเป็นฟังก์ชันในบรรทัด (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)
- ย้าย "การกดค้าง" ไปยัง "ข้อความ" (Iff2bc)
- Modifier.pointerInput ที่อยู่ระหว่างการทดสอบซึ่งระงับตัวแก้ไขอินพุต (Ia77d2)
- เพิ่มการดำเนินการสำหรับการช่วยเหลือพิเศษในการคัดลอก/วาง/ตัด (I6db4f)
- นำตัวสร้างแบบสาธารณะสำหรับ AndroidOwner ออกแล้ว (Iacaef)
- ตอนนี้ป๊อปอัปและกล่องโต้ตอบจะรับค่า FLAG_SECURE จากหน้าต่างหลัก นอกจากนี้ เรายังได้เพิ่มตัวเลือกในการกําหนดค่านี้อย่างชัดเจน (I64966, b/143778148, b/143778149)
ตอนนี้ข้อมูลการบริโภคจะเปลี่ยนแปลงได้แล้ว นอกจากนี้ การเรียกใช้ฟังก์ชันส่วนขยายที่ใช้งานจะไม่แสดงผล PointerInputChange ใหม่อีกต่อไป แต่จะใช้การปรับเปลี่ยน PointerInputChange ที่ระบุแทน
นี่เป็นขั้นตอนแรกในกระบวนการ 2 ขั้นตอนที่จะทำให้ข้อมูล PointerEvent เปลี่ยนแปลงได้ เช่น ไม่ให้โค้ดของผู้ใช้แก้ไขข้อมูลเคอร์เซอร์อื่นๆ ได้ ขั้นตอนที่ 2 คือการนําประเภทการคืนค่า
List<PointerInputChange>
ออกจากPointerInputFilter.onPointerEvent(...)
(Id067e)ปิดใช้การเลือกในข้อความและแสดงตัวอย่าง (Ie7e97)
ทําให้ onGloballyPositioned เป็นฟังก์ชันในบรรทัด (I15830)
เปลี่ยนชื่อ OnPositionedModifier เป็น OnGloballyPositionedModifier และเปลี่ยนชื่อ onPositioned() เป็น onGloballyPositioned() (I587e8, b/169083903)
เพิ่มพร็อพเพอร์ตี้ hasPendingMeasureOrLayout ลงใน Owner เพื่อระบุว่าเจ้าของมีงานเลย์เอาต์ที่รอดำเนินการหรือไม่ (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 เมื่อ overflow เป็น "ไม่มี" ข้อความจะไม่จัดการการเลื่อนออกอีกต่อไป และจะรายงานขนาดจริงไปยัง 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)
- เพิ่มสแต็บสําหรับคลาส 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 การเปลี่ยนรูปแบบการแปลงขนาดและการหมุนเพื่อใช้พารามิเตอร์การเลื่อนตำแหน่งเดียวเพื่อแสดงพิกัดจุดหมุนแทนการใช้พารามิเตอร์ float แยกต่างหากสำหรับพิกัด x/y ใน DrawScope และ DrawTransform
- นําเมธอด Rect.expandToInclude และ Rect.join ออกแล้ว
- อัปเดตเอกสารประกอบของรัศมีเป็น "รูปไข่" นอกเหนือจาก "รูปไข่รี"
- เพิ่มเอกสารประกอบเพื่อระบุว่าไม่ควรเรียกใช้คอนสตรัคเตอร์แบบสาธารณะสำหรับคลาส Radius แบบอินไลน์โดยตรง แต่ควรสร้างอินสแตนซ์ออบเจ็กต์ Radius ผ่านคอนสตรัคเตอร์ของฟังก์ชันแทน
- นำ RoundRect API ออกเพื่อค้นหา topRight, bottomRight, bottomCenter ฯลฯ
- เลิกใช้งาน Rect.shift และใช้ Rect.translate แทน
- นำ API ของ RoundRect.grow และ Rect.shrink ออก
- เปลี่ยนชื่อ RoundRect.outerRect เป็น Rect.boundingRect
- นำเมธอด RoundRect.middleRect/tallMiddleRect/wideMiddleRect และ Rect.isStadium ออก
- เปลี่ยนชื่อ RoundRect.longestSide เป็น RoundRect.maxDimension
- เปลี่ยนชื่อ RoundRect.shortestSide เป็น RoundRect.minDimension
- เปลี่ยน RoundRect.center เป็นพร็อพเพอร์ตี้แทนที่จะเป็นฟังก์ชัน
- อัปเดตตัวสร้าง RoundRect เพื่อใช้พร็อพเพอร์ตี้ Radius แทนพารามิเตอร์แต่ละรายการสำหรับค่ารัศมี x/y
- นำ API ขนาดออกซึ่งถือว่ารูปภาพเป็นรูปสี่เหลี่ยมผืนผ้าที่มีจุดเริ่มต้นที่ 0,0
- เพิ่ม API สำหรับการทำลายข้อมูลไปยัง Radius
- ย้ายข้อมูลฟังก์ชันส่วนขยาย RoundRect ต่างๆ ไปเป็นพร็อพเพอร์ตี้แทน
- (I8f5c7, b/168762961)
- เลิกใช้งาน foundation.Box แล้ว โปรดใช้ foundation.layout.Box แทน (Ie5950, b/167680279)
- เปลี่ยนชื่อกองเป็นกล่องแล้ว เราจะเลิกใช้งาน Box ที่มีอยู่ก่อนหน้านี้และหันมาใช้ Box ใหม่ใน compose.foundation.layout ลักษณะการทํางานของกล่องใหม่คือการซ้อนองค์ประกอบย่อยไว้บนกันเมื่อมีองค์ประกอบย่อยหลายรายการ ซึ่งแตกต่างจากกล่องเวอร์ชันเก่าที่ทํางานคล้ายกับคอลัมน์ (I94893, b/167680279)
- เลิกใช้งานพารามิเตอร์การตกแต่งกล่องแล้ว หากต้องการมีการตกแต่ง/ระยะห่างจากขอบในกล่อง ให้ใช้ตัวแก้ไขแทน (Modifier.background, Modifier.border, Modifier.padding) (Ibae92, b/167680279)
- อัปเดต Graphics API หลายรายการ
- อัปเดต DrawScope API ด้วยเมธอดการเปลี่ยนรูปแบบแบบจำกัดขอบเขตเพื่อระบุว่าจะใช้การเปลี่ยนรูปแบบภายในการเรียกกลับเท่านั้นและนำออกหลังจากเรียกการเรียกกลับแล้ว
- อัปเดตเอกสารประกอบเกี่ยวกับ clipPath เพื่อใช้อ้างอิงเส้นทางแทนสี่เหลี่ยมผืนผ้ามน
- แก้ไขระยะห่างในเอกสารประกอบสำหรับพารามิเตอร์ด้านขวาใน clipPath
- เปลี่ยนชื่อ DrawScope.drawCanvas เป็น drawIntoCanvas และนําพารามิเตอร์ขนาดออก
- เปลี่ยนชื่อพารามิเตอร์ dx/dy ในเมธอด inset เป็นแนวนอนและแนวตั้ง
- เพิ่มการโอเวอร์โหลดของ inset ที่ให้ค่า inset เดียวกันกับขอบทั้ง 4
- นำเอกสารประกอบเกี่ยวกับวิธีการใส่ข้อความที่ระบุว่าจะมีการใส่ข้อความทั้ง 4 ด้านออก
- เอกสารประกอบที่อัปเดตสำหรับคลาส Rect
- อัปเดตความคิดเห็นเกี่ยวกับพารามิเตอร์ Rect ให้ตรงกับ kdoc style
- นํา Rect.join และ Rect.expandToInclude ออกแล้ว
- สร้างการโอเวอร์โหลดสำหรับ Rect.translate(offset) และเลิกใช้งาน Rect.shift
- (If086a, b/167737376)
- กำกับเนื้อหา 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 ที่ใช้พารามิเตอร์ Offset ออก ผลลัพธ์ของการดำเนินการเหล่านี้ไม่ชัดเจน และประเภทของผลลัพธ์ก็คาดไม่ถึง เช่น ควรให้ size - offset แสดงผลออฟเซ็ตหรือแสดงผลขนาดที่มีผลต่าง
และนำเมธอดที่เลิกใช้งานในคลาส 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) - การใช้การถ่วงน้ำหนักได้รับการเปลี่ยนชื่อเป็น "จัดแนว" หรือ "การจัดแนว" ใน 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
- นำการเรียกกลับออกเพื่อแจ้งให้เจ้าของทราบเมื่อขอบเขตของ layoutnode เปลี่ยนแปลง (If654e, b/166106882)
- เพิ่มการรองรับพารามิเตอร์ประเภทการเติมในเส้นทางกราฟิกเวกเตอร์เพื่อรองรับการตัดรูปร่างตามกฎการเติมเส้นทางแบบ 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)
รูปแบบการเรียกฟังก์ชันคอมโพสิเบิลมีการเปลี่ยนแปลง นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ ต้องคอมไพล์ไลบรารีทั้งหมดอีกครั้งเพื่อให้ใช้งานกับปลั๊กอินคอมไพเลอร์คอมโพซ เวอร์ชันนี้ได้
การเปลี่ยนแปลงนี้จะไม่ทำให้เกิดการเปลี่ยนแปลงระดับแหล่งที่มาที่ทำให้เกิดข้อขัดข้อง เนื่องจาก API เพียงรายการเดียวที่มีการเปลี่ยนแปลงคือ 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
แทนหากเป็นไปได้สำหรับการส่งออกมุมมองภายใน Compose โปรดทราบว่าระบบจะไม่รองรับการคอมโพสิชัน View และ ViewGroup โดยตรงในอนาคต เว้นแต่ว่าองค์ประกอบเหล่านี้จะเป็นใบไม้ในต้นไม้คอมโพสิชัน ซึ่งในกรณีนี้สามารถดำเนินการได้โดยใช้ AndroidView (I29b1e, b/163871221)FocusState2
เลิกใช้งานแล้วและแทนที่ด้วยFocusState
(Ia8b79, b/160822876, b/160923332)- ระบบนำการโอเวอร์โหลด AndroidView ที่เลิกใช้งานออกแล้ว (I946b9, b/163802393)
- ตอนนี้การระบุข้อมูลที่กำหนดเองสามารถประกาศว่าตัวตั้งค่าอย่างน้อย 1 รายการสามารถข้ามและคอมโพสิชันใหม่ได้โดยไม่เกี่ยวข้องกับการระบุข้อมูล (Ibbd13)
เปลี่ยนคลาสเวกเตอร์เพื่อไม่ให้เป็นคลาสข้อมูลอีกต่อไป เนื่องจากมีการใช้อินสแตนซ์ออบเจ็กต์เดียวกันสำหรับการคอมโพสิชัน
เพิ่ม Flag mutableStateOf สำหรับ VectorPainter เพื่อวาดใหม่แบบมีเงื่อนไขหากเนื้อหาของเวกเตอร์มีการเปลี่ยนแปลง
ปรับโครงสร้างอินสแตนซ์ VectorComponent ให้เป็นส่วนหนึ่งของ VectorPainter เนื่องจากมีการใช้ซ้ำในองค์ประกอบต่างๆ
อัปเดต GroupComponent และ PathComponent ให้ช่องชื่อมีการเปลี่ยนแปลงได้ (Ieae45, b/151378808)
นำ
onChildPositioned
และOnChildPositionedModifier
ออกแล้ว นักพัฒนาแอปควรใช้onPositioned
และOnPositionedModifier
ในเลย์เอาต์ย่อยแทน (I4522e, b/162109766)ออฟเซ็ตกลายเป็นคลาสในบรรทัด (Iaec70)
เพิ่มพารามิเตอร์ตัวแก้ไขลงใน SelectionContainer (I4aada, b/161487952)
นํา FocusModifier ที่เลิกใช้งานแล้วออก (I0b4ba, b/160922116, b/160821157, b/162441435, b/160822875, b/160921940)
เพิ่ม
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)
นำ PointerEventPass 2 รายการที่ไม่จําเป็นแล้วออก (I3dd9d)
เพิ่มพารามิเตอร์สี เงา และ TextDecoration ไปยัง Paragraph.paint ฟังก์ชันนี้มีประโยชน์ในการหลีกเลี่ยงการสร้างย่อหน้าใหม่โดยไม่จำเป็น (I81689)
การแก้ไขข้อบกพร่อง
- นำการเรียกกลับ onFocusChanged ออกจาก TextField แล้ว ใช้ Modifier.focusObserver แทน (I51089, b/161297615)
- เลิกใช้งาน Modifier.drawBorder แล้ว ใช้ Modifier.border แทน BorderStroke (I4257d, b/158160576) เข้ามาแทนที่คลาสข้อมูลเส้นขอบ
นำการเรียก FrameManager ที่เลิกใช้งานแล้วออก
มีการเปลี่ยนแปลง API การคอมโพสิทภายในเพื่อลดปริมาณการเรียกใช้ทรัพยากรเพิ่มเติมในการติดตามออบเจ็กต์สถานะ เช่น
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 เพื่อปรับให้เข้ากับรูปแบบการตั้งชื่อคอมโพสิทได้ดีขึ้น สร้างตัวสร้างฟังก์ชันที่คล้ายกับ 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)
- นำ PointerEventPass 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 แทน "Then" มีสัญญาณการจัดเรียงที่ชัดเจนกว่า ทั้งยังห้ามไม่ให้พิมพ์
Modifier.padding().background() + anotherModifier
ซึ่งทำให้ลำดับคำขาดตอนกลางและอ่านยากขึ้น (Iedd58, b/161529964) - เพิ่มคลาสย่อยของ [Abstract]ComposeView สำหรับโฮสต์เนื้อหา Compose ในลําดับชั้นของ View (I46357)
- ตอนนี้
Row
และColumn
เป็นฟังก์ชันอินไลน์ซึ่งช่วยลดค่าใช้จ่ายในการเรียกใช้อย่างมีนัยสำคัญ (I75c10) - เพิ่ม SubcomposeLayout แล้ว องค์ประกอบนี้เป็นองค์ประกอบพื้นฐานระดับล่างที่อนุญาตให้คอมโพสิชันย่อยในระหว่างการวัดได้หากเราต้องการใช้ค่าบางอย่างที่พร้อมใช้งานในภายหลังระหว่างการวัดสำหรับองค์ประกอบย่อย เช่น ไม่ได้ใช้ WithConstraints โดยใช้ SubcomposeLayout (I25cc8)
- เพิ่ม
SemanticsNode.positionInRoot
เพื่อรับตําแหน่งของ SemanticsNode เทียบกับรูทของลําดับชั้นการเขียน (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 จำลองเพื่อรีแฟกทอริง DrawScope ให้มีพารามิเตอร์ที่ไม่ใช่ค่า Null แทนที่จะใช้ lateinit และตรวจสอบว่าฟิลด์ไม่ใช่ค่า Null
- เปลี่ยนชื่อลิสต์ค่าคงที่ ClipOp เป็น Pascal Case
- เปลี่ยนชื่อเอนทิตี FilterQuality เป็น Pascal Case
- เปลี่ยนชื่อลิสต์ค่าคงที่ StrokeJoin เป็น Pascal Case
- เปลี่ยนชื่อ PointMode enum เป็น Pascal Case
- เปลี่ยนชื่อเอนทิตี PaintingStyle เป็น Pascal Case
- เปลี่ยนชื่อลิสต์แบบจำกัดของ PathFillType เป็น Pascal Case
- เปลี่ยนชื่อลิสต์ค่าคงที่ StrokeCap เป็น Pascal Case
- อัปเดตการใช้งาน DrawCache เพื่อไม่ให้ใช้พารามิเตอร์ lateinit อีกต่อไป
- อัปเดต DrawScope เพื่อไม่ให้ใช้การมอบสิทธิ์แบบเลื่อนเวลาดำเนินการอีกต่อไปสำหรับพารามิเตอร์ภายในของ fillPaint และ strokePaint
- อัปเดตคอมโพสิชันรูปภาพเพื่อหลีกเลี่ยงการใช้ Box เพื่อลดค่าใช้จ่ายเพิ่มเติม
- อัปเดตคลาส Outline ให้มีคําอธิบายประกอบ @Immutable
- อัปเดต PathNode ให้มีคําอธิบายประกอบ @Immutable สําหรับคำสั่งเส้นทางแต่ละรายการ
- อัปเดตองค์ประกอบย่อยเวกเตอร์เพื่อนำการตรวจสอบแบบมีเงื่อนไขที่ซ้ำซ้อนออกเพื่อหาค่าเท่ากัน เนื่องจากคอมโพสิชันจัดการการตรวจสอบดังกล่าวอยู่แล้ว
- เลิกใช้งานเมธอดคอนสตรัคเตอร์ของ Rect ที่ใช้ร่วมกันเพื่อหันไปใช้คอนสตรัคเตอร์ของฟังก์ชัน
- อัปเดตคลาส Brush และตัวสร้างฟังก์ชันด้วย @Immutable และ @Stable API
- อัปเดต VertexMode enum เป็น PascalCase
- อัปเดตเมธอด selectPaint ของ DrawScope ให้เขียนทับพารามิเตอร์การวาดใน Paint แบบมีเงื่อนไขหากมีการเปลี่ยนแปลง
- อัปเดต Size เพื่อเพิ่ม API การจัดโครงสร้างใหม่ เปลี่ยนชื่อ UnspecifiedSize เป็น Unspecified และนำเมธอดที่ไม่ได้ใช้งานออก
- อัปเดตการใช้ Compose BlendMode API เพื่อแมประหว่าง BlendMode ของเฟรมเวิร์ก Android กับโหมด PorterDuff อย่างเหมาะสมโดยขึ้นอยู่กับระดับ API เปิดตัว BlendMode#isSupported API เพื่อทำหน้าที่เป็นคำถามเกี่ยวกับความสามารถเพื่อระบุว่าอุปกรณ์รองรับ BlendMode หรือไม่ก่อนที่จะใช้งาน (I0ef42)
- เพิ่ม LazyItemScope สำหรับพารามิเตอร์ itemContent ของรายการแบบ Lazy ฟีเจอร์นี้มีตัวแก้ไขเพื่อเติมขนาดสูงสุดของรายการหลัก ซึ่งจะแก้ปัญหา Use Case เมื่อรายการควรเติมเต็มวิวพอร์ต และ Modifier.fillMaxSize() ปกติไม่ทำงานเนื่องจากระบบวัดรายการด้วยข้อจำกัดแบบอินฟินิตี้ (Ibd3b2, b/162248854)
- นำ
SemanticsNodeInteraction.performPartialGesture
ออกแล้ว ให้ใช้SemanticsNodeInteraction.performGesture
แทน (Id9b62) - เปลี่ยนชื่อ
LazyColumnItems
เป็นLazyColumnFor
แล้ว เปลี่ยนชื่อLazyRowItems
เป็นLazyRowFor
แล้ว (I84f84) - แพ็กเกจ
foundation.shape.corner
ได้รับการผสานเป็นfoundation.share
(I46491, b/161887429) - เปลี่ยนชื่อ
AndroidComposeTestRule
เป็นcreateAndroidComposeRule
แล้ว (I70aaf) - เพิ่ม API เพิ่มเติมลงใน
TextLayoutResult
(Id7e04) - เปลี่ยนชื่อวัสดุ
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 มีการคอมมิตเหล่านี้
การอัปเดตทรัพยากร Dependencies
- หากต้องการใช้ Compose เวอร์ชัน
0.1.0-dev15
คุณจะต้องอัปเดต Dependency ตามข้อมูลโค้ดใหม่ที่แสดงด้านบนในส่วนการประกาศ Dependency
การเปลี่ยนแปลง 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 ทั้งหมดที่เกี่ยวข้องกับ Focus (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)
- เพิ่ม Flag ใหม่ที่ไม่บังคับอย่าง useUnmergedTree เพื่อทดสอบเครื่องมือค้นหา (I2ce48)
- เปลี่ยน LayoutNode เป็น API เวอร์ชันทดลอง (I4f2e9)
เพิ่มเมธอดการคัดลอกลงในประเภทคลาสในบรรทัดต่างๆ ซึ่งรวมถึง
- ออฟเซ็ต
- ขนาด
- รัศมี
- การเคลื่อนไหว
TransformOrigin
เลิกใช้งานเมธอดออบเจ็กต์คอมพาเนียนของ Size.copy แล้วIfe290, b/159905651)
ตอนนี้ป๊อปอัป กล่องโต้ตอบ และเมนูจะรับค่า MaterialTheme ตามบริบท (Ia3665, b/156527485)
เปลี่ยนชื่อ TextDirection เป็น ResolvedTextDirection (I3ff38)
นําพารามิเตอร์ทิศทางเลย์เอาต์ออกจากบล็อกการวัดของฟังก์ชัน Layout() แล้ว อย่างไรก็ตาม ทิศทางของเลย์เอาต์จะอยู่ในคอลแบ็กผ่านออบเจ็กต์ขอบเขตการวัด (Ic7d9d)
ปรับโครงสร้าง SelectionHandles เพื่อใช้ซ้ำ (I420e0)
นำ "คลิกได้" ออกแล้ว ใช้ Modifier.clickable (I84bdf)
ลบ TestTag และ Semantics แล้ว ใช้ Modifier.testTag และ Modifier.semantics แทน (I15ff0, b/158841414)
ก่อนการเปลี่ยนแปลงนี้ ปลั๊กอินคอมไพเลอร์คอมโพสิทจะขัดจังหวะการเรียกตัวสร้างคอนสตรัคเตอร์ภายในฟังก์ชัน @Composable อย่างไม่ง่ายดายหากมี (I5205a, b/158123804)
เปลี่ยนชื่อ Modifier.tag เป็น Modifier.layoutId เพื่อไม่ให้เกิดความสับสนกับ Modifier.testTag (I995f0)
ตอนนี้ตำแหน่ง Int ของเส้นการจัดตำแหน่งที่แสดงผลจาก Placeable#get(AlignmentLine) จะไม่เป็นค่า Null หากไม่มีบรรทัดการจัดตำแหน่งที่ค้นหา ระบบจะแสดงผล AlignmentLine.Unspecified (I896c5, b/158134875)
เพิ่มพารามิเตอร์ตัวแก้ไขลงในคอมโพสิชัน AndroidView (I48a88, b/158746303)
เลิกใช้งาน Semantics() แล้ว ใช้ Modifier.semantics() แทน (I72407, b/158841414)
เพิ่มคอมโพสิชัน viewModel() ซึ่งช่วยให้สร้างหรือรับ ViewModel ที่สร้างขึ้นแล้วได้คล้ายกับวิธีการทํางานใน Activity หรือ Fragment (I5fdd1)
แทนที่การใช้ IntPx ด้วย Int แทนที่ IntPxPosition ด้วย IntOffset แทนที่ IntPxSize ด้วย IntSize (Ib7b44)
เพื่อรวมจำนวนคลาสที่ใช้แสดงข้อมูลการปรับขนาด ให้ใช้คลาส Size แทน PxSize วิธีนี้ให้ประโยชน์ของคลาสอินไลน์เพื่อใช้ประโยชน์จาก long เพื่อแพ็กค่า Float 2 ค่าเพื่อแสดงความกว้างและความสูงที่แสดงเป็น Float (Ic0191)
เพื่อรวมจำนวนคลาสที่ใช้แสดงข้อมูลตำแหน่ง ให้ใช้คลาส Offset แทน PxPosition ซึ่งให้ประโยชน์ของคลาสอินไลน์เพื่อใช้ประโยชน์จาก long เพื่อแพ็กค่า Float 2 ค่าเพื่อแสดงค่าออฟเซ็ต x และ y ที่แสดงเป็น Float (I3ad98)
แทนที่การใช้คลาส Px ในคลาสคอมโพสิต์ต่างๆ เป็นส่วนหนึ่งของความพยายามในการรีแฟกทอริงครั้งใหญ่เพื่อใช้เฉพาะ Dp และประเภทพื้นฐานสำหรับพารามิเตอร์พิกเซล ลบชั้น Px ทั้งหมด (I3ff33)
แทนที่การใช้คลาส Px ในคลาสคอมโพสิต์ต่างๆ เป็นส่วนหนึ่งของความพยายามในการรีแฟกทอริงครั้งใหญ่เพื่อใช้เฉพาะ Dp และประเภทพื้นฐานสำหรับพารามิเตอร์พิกเซล (I086f4)
แทนที่การใช้คลาส Px ในคลาสคอมโพสิต์ต่างๆ เป็นส่วนหนึ่งของความพยายามในการรีแฟกทอริงครั้งใหญ่เพื่อใช้เฉพาะ Dp และประเภทพื้นฐานสำหรับพารามิเตอร์พิกเซล (Id3434)
แทนที่การใช้คลาส Px ในคลาสคอมโพสิทต่างๆ เป็นส่วนหนึ่งของความพยายามในการรีแฟกทอริงครั้งใหญ่เพื่อใช้เฉพาะ Dp และประเภทพื้นฐานสำหรับพารามิเตอร์พิกเซล (I97a5a)
เลิกใช้งาน TestTag แล้ว ใช้ Modifier.testTag แทน (If5110, b/157173105)
นําการใช้งาน ParentDataModifier#modifyParentData เริ่มต้นที่ไม่มีการดําเนินการออกแล้ว ซึ่งเทียบเท่ากับการไม่ใช้งานอินเทอร์เฟซตั้งแต่แรก (I0deaa)
ลบ ScaleFit ที่เลิกใช้งานไปแล้วก่อนหน้านี้ออก ให้ใช้ ContentScale แทน (Ifbc5b)
แทนที่การใช้คลาส Px ในคลาสคอมโพสิต์ต่างๆ เป็นส่วนหนึ่งของความพยายามในการรีแฟกทอริงครั้งใหญ่เพื่อใช้เฉพาะ Dp และประเภทพื้นฐานสำหรับพารามิเตอร์พิกเซล (I19d02)
เพิ่มคอมโพเนนต์ DropdownMenu ใน ui-material ซึ่งเป็นการใช้งานเมนู Material Design (I9bb3d)
นำ LayoutTag() ที่เลิกใช้งานแล้วออก โปรดใช้ Modifier.tag() แทน นำ Modifier.matchParent() ที่ใช้ไม่ได้แล้วออก โปรดใช้ Modifier.matchParentSize() แทน (If8044)
แทนที่การใช้คลาส Px ในคลาสคอมโพสิต์ต่างๆ เป็นส่วนหนึ่งของความพยายามในการรีแฟกทอริงครั้งใหญ่เพื่อใช้เฉพาะ Dp และประเภทพื้นฐานสำหรับพารามิเตอร์พิกเซล (I57bff)
Modifier.semantics เลิกเลิกใช้งานแล้วเพื่อให้ใช้กับคอมโพเนนต์ระดับสูงได้ (I4cfdc)
รวมการใช้งาน CanvasScope เข้าด้วยกันเพื่อให้เหลือเพียง DrawScope และ ContentDrawScope เท่านั้น และเปลี่ยนชื่อ CanvasScope เป็น DrawScope อัปเดต DrawScope เพื่อใช้อินเทอร์เฟซ Density และระบุ LayoutDirection ลบคลาสย่อย DrawScope ใน ContentDrawScope อัปเดต Painter และ PainterModifier เพื่อไม่ให้ดูแลรักษาพร็อพเพอร์ตี้ RTL เองอีกต่อไปเนื่องจาก DrawScope มีพร็อพเพอร์ตี้นี้อยู่แล้วโดยไม่ต้องระบุด้วยตนเอง (I1798e)
ตอนนี้ DoubleTapGestureFilter จะแยกแยะ SingleTapGestureFilter ทั่วทั้งต้นไม้ (If92b1)
อัปเดต Alignment API และเพิ่มการรองรับการจัดแนวแบบสัมบูรณ์ (ซึ่งจะไม่มิเรอร์โดยอัตโนมัติในบริบท Rtl) (I38cd3)
มีการเปลี่ยนแปลง API ของตัวแก้ไข DrawLayer โดยเปลี่ยนชื่อ outlineShape เป็น shape และมีค่าเริ่มต้นเป็น RectangleShape และตอนนี้ไม่ใช่ค่าที่ลบไม่ได้ เปลี่ยนชื่อ clipToOutline เป็น clip นำ clipToBounds ออกเนื่องจากเหมือนกับ clip == true ที่มี RectangleShape (I7ef11, b/155075735)
อัปเดตระดับที่สูงขึ้นเพื่อคอมโพส API ที่แสดง Canvas ให้แสดง CanvasScope แทน ซึ่งทำให้ผู้บริโภคไม่ต้องดูแลรักษาออบเจ็กต์ Paint ของตนเอง สําหรับผู้บริโภคที่ยังคงต้องการเข้าถึง Canvas อยู่ สามารถใช้เมธอดของส่วนขยาย drawCanvas ซึ่งจะให้การเรียกกลับเพื่อออกคําสั่งวาดด้วย Canvas ที่อยู่เบื้องหลัง (I80afd)
มีการเปลี่ยนแปลง API ของแลมดาต่อท้าย WithConstraints ตอนนี้มีขอบเขตผู้รับแทนพารามิเตอร์ 2 รายการ ซึ่งนอกเหนือจากข้อจำกัดและ layoutDirection แล้วยังมีพร็อพเพอร์ตี้ minWidth, maxWidth, minHeight และ maxHeight ใน Dp (I91b9a, b/149979702)
เปลี่ยนชื่อ LayoutModifier2 เป็น LayoutModifier (Id29f3)
นำอินเทอร์เฟซ LayoutModifier ที่เลิกใช้งานแล้วออก (I2a9d6)
ตอนนี้ฟังก์ชันการวัดค่าอินทรินซิกใน Layout และ LayoutModifier2 มีพอร์ตรับ IntrinsicMeasureScope ซึ่งให้ API การค้นหาอินทรินซิกที่มีการวางแนวที่นำไปใช้ในเชิงปริยาย (Id9945)
องค์ประกอบย่อยของเลย์เอาต์และ LayoutModifier สามารถวัดได้ด้วยทิศทางเลย์เอาต์อื่น (Ibd731)
เพิ่ม Modifier.zIndex() ใหม่เพื่อควบคุมลําดับการวาดขององค์ประกอบย่อยภายในเลย์เอาต์หลักเดียวกัน เปลี่ยนชื่อพร็อพเพอร์ตี้ elevation ใน DrawLayerModifier เป็น shadowElevation และจะไม่ควบคุมลําดับการวาดอีกต่อไป ลำดับพารามิเตอร์ของ DrawShadow มีการเปลี่ยนแปลง โดยตอนนี้ความสูงจะอยู่ในลำดับแรกและรูปร่างจะอยู่ในลำดับที่ 2 โดยมีค่าเริ่มต้นเป็น RectangleShape (I20150, b/152417501)
นำ onSizeChange และ onPositionChange ในส่วนเจ้าของออก (I5c718)
เพิ่ม Constraints2 ซึ่งเป็นสำเนาของ Constraints ที่รองรับเฉพาะค่า Int constraints แทน IntPx ระบบจะนำ IntPx ออกและจะถือว่าข้อจำกัดจำนวนเต็มทั้งหมดเป็นพิกเซลเหมือนกับ Android
- เพิ่ม IntSize ด้วย ซึ่งจะแทนที่ IntPxSize ในที่สุด (I4b43a)
ทำให้ Alignment สร้างได้ทันทีด้วยค่าที่กำหนดเอง เพิ่มการจัดแนว 1 มิติ (Ia0c05)
ตอนนี้ alignToSiblings ยอมรับ Measured แทน Placeable แล้ว (I5788d)
-
- เปลี่ยนชื่อ ScaleFit เป็น ContentScale
- ย้าย ContentScale จากโมดูล ui-graphics ไปยัง ui-core เพื่อให้อยู่ในโมดูลเดียวกับ Alignment API
- เปลี่ยนชื่อ FillMaxDimension เป็น Crop
- เปลี่ยนชื่อ FillMinDimension เป็น Fit
- เปลี่ยนชื่อเป็น "พอดีกับภายใน" เพื่อให้ตรงกันมากขึ้น
- ค่าที่เทียบเท่าของ ImageView.ScaleType
- เพิ่มเอกสารประกอบที่ระบุว่าการรวมการครอบตัดและ Alignment.Center ให้ผลลัพธ์เหมือนกับ ImageView.ScaleType.CENTER_CROP และการใช้ Fit กับ Alignment.Center ให้ผลลัพธ์เหมือนกับ ImageView.ScaleType.FIT_CENTER และการใช้ Inside กับ Alignment.Center ให้ผลลัพธ์เหมือนกับ ImageView.ScaleType.CENTER_INSIDE
การรองรับ Rtl สําหรับตัวแก้ไขการวาด (I0aaf9)
เปิดตัว API สําหรับการขยายวิว Android จาก XML ดูรายละเอียดเพิ่มเติมในการแสดงตัวอย่าง ViewInCompose (I42916)
ปรับปรุง DrawModifier API
- สร้างขอบเขตผู้รับสำหรับ ContentDrawScope ของ draw()
- นําพารามิเตอร์ทั้งหมดใน draw() ออก
- DrawScope มีอินเทอร์เฟซเดียวกับ CanvasScope เดิม
- ContentDrawScope มีเมธอด drawContent() (Ibaced, b/152919067)
เพิ่ม positionInParent และ boundsInParent สำหรับ LayoutCoordinates (Icacdd, b/152735784)
ตอนนี้ DrawLayerModifier และ drawLayer() จะตั้งค่าเริ่มต้นของ clipToBounds และ clipToOutline เป็นเท็จ (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)
คอมโพเนนต์กองรองรับทิศทางจากขวาไปซ้าย (Ic9e00)
การรองรับ Rtl ในเลย์เอาต์การเขียนอีเมลครั้งแรก (Ia5519)
เราได้รวม Density และ DensityScope ไว้ในอินเทอร์เฟซเดียว ตอนนี้คุณใช้ DensityAmbient.current แทน ambientDensity() ได้แล้ว แทนที่จะใช้ withDensity(density) ให้ใช้แค่ with(density) (I11cb1)
เปลี่ยน LayoutCoordinates เพื่อให้ providedAlignmentLines เป็น Set แทน Map และทำให้ LayoutCoordinates ใช้โอเปอเรเตอร์ get() แทนในการดึงข้อมูลค่า วิธีนี้ช่วยให้ตัวแก้ไขแก้ไขค่าอย่างน้อย 1 ค่าของชุดได้ง่ายขึ้นโดยไม่ต้องสร้างคอลเล็กชันใหม่สําหรับตัวแก้ไขแต่ละรายการ (I0245a)
LayoutCoordinates ไม่มีพร็อพเพอร์ตี้ตำแหน่งแล้ว พร็อพเพอร์ตี้ตำแหน่งจะไม่มีความหมายเมื่อพิจารณา LayoutModifiers, การพลิก หรือการปรับขนาด นักพัฒนาซอฟต์แวร์ควรใช้ parentCoordinates และ childToLocal() เพื่อคํานวณการเปลี่ยนรูปแบบจาก 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)
เพิ่มพารามิเตอร์สี่เหลี่ยมผืนผ้าที่ไม่บังคับลงใน ImagePainter เพื่อรองรับการวาดส่วนย่อยของ ImageAsset ที่อยู่เบื้องหลัง (I0ea9e)
เพิ่มสี "ไม่ได้ตั้งค่า" เพื่อแสดงค่าที่ไม่ได้ตั้งค่าโดยไม่ต้องใช้การแยกค่าสี (If901a)
เพิ่มเมธอดส่วนขยาย Canvas.rotate และ Canvas.scale เพื่อใช้พิกัดจุดหมุนที่ไม่บังคับสำหรับการเปลี่ยนรูปแบบ ซึ่งค่าเริ่มต้นจะอยู่ที่มุมซ้ายบนของภาพพิมพ์แคนวาสปัจจุบัน
และย้าย Canvas.rotateRad ไปอยู่ในรูปแบบเมธอดส่วนขยายเพื่อความสอดคล้อง (Ibaca6)
สร้าง PixelMap API เพื่อรองรับการค้นหาข้อมูลพิกเซลจาก ImageAsset (I69ad6)
เปลี่ยนชื่อจาก toFrameworkRect/toFrameworkRectF เป็น toAndroidRect/toAndroidRectF เพื่อให้ตรงกับรูปแบบการตั้งชื่อสำหรับการเปลี่ยนรูปแบบออบเจ็กต์ระหว่าง Compose กับ API เฟรมเวิร์ก Android ที่สร้างขึ้น นอกจากนี้ เรายังได้อัปเดตเอกสารประกอบเกี่ยวกับ API เหล่านี้ด้วย (I86337)
เพิ่ม VectorPainter API เพื่อแทนที่ API องค์ประกอบย่อยที่มีอยู่สำหรับกราฟิกเวกเตอร์ ผลลัพธ์ขององค์ประกอบย่อยคือออบเจ็กต์ VectorPainter แทนที่จะเป็น DrawModifier เลิกใช้งาน DrawVectorcomposable ก่อนหน้านี้เพื่อใช้ VectorPainter แทน
เปลี่ยนชื่อ Image(Painter) API เป็น PaintBox(Painter) สร้างคอมโพสิชันเวกเตอร์ที่ทํางานเหมือนคอมโพสิชันรูปภาพ ยกเว้นการใช้ VectorAsset แทน ImageAsset (I9af9a, b/149030271)
เปลี่ยนชื่อ Image เป็น ImageAsset เพื่อแยกความแตกต่างระหว่างข้อมูลรูปภาพกับองค์ประกอบรูปภาพที่กำลังจะเปิดตัวซึ่งใช้ในการวางเลย์เอาต์และวาดเนื้อหา _Body:สร้างเมธอดส่วนขยายใน android.graphics.Bitmap, Bitmap.asImageAsset(), เพื่อสร้างอินสแตนซ์ของ ImageAsset ซึ่งมีประโยชน์สำหรับการรวมการพัฒนาแอปพลิเคชัน Android แบบดั้งเดิมเข้ากับเฟรมเวิร์กคอมโพซ (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 ซึ่งส่งโดย callback ของ onTextInputStarted (I8dc44, b/151860051)
เพิ่มโอเปอเรเตอร์บวกสำหรับสไตล์ (ข้อความ/ย่อหน้า/ส่วน) ซึ่งส่งผ่านไปยังฟังก์ชัน 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)
เพิ่มการเว้นวรรค เส้นขอบ รูปร่าง และพารามิเตอร์พื้นหลังลงในกล่อง (I05027, b/148147281)
การแก้ไขข้อบกพร่อง
- เปลี่ยนชื่อการเรียกกลับ onFocusChange ในช่องข้อความเป็น onFocusChanged (Ida4a1)
- เลิกใช้งาน VerticalScroller และ HoriziontalScroller แล้ว ใช้ ScrollableColumn และ ScrollableRow เพื่อประสบการณ์การใช้งานในตัวด้วยลักษณะการทำงานและพารามิเตอร์ของคอลัมน์/แถว หรือ 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 ภายใน ViewGroups ได้โดยไม่ต้องคอมโพสิทใหม่ ดูตัวอย่างได้ที่ 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 แล้ว แทนที่ด้วย @ComposableContract(tracked=false) (Id211e)
เลิกใช้งาน androidx.ui.foundation.TextFieldValue และ androidx.ui.input.EditorValue แล้ว คอมโพสิเบิล TextField, FilledTextField และ CoreTextField ที่ใช้ประเภทดังกล่าวก็เลิกใช้งานด้วย โปรดใช้ androidx.ui.input.TextFieldValue แทน (I4066d, b/155211005)
แก้ไขปัญหาที่การส่งผ่านอินพุตเคอร์เซอร์จะทําให้ระบบขัดข้องหากนํา PointerInputFilters ออกผ่านคอมโพสิชันย่อยระหว่างการส่งผ่าน ซึ่งตอนนี้ปัญหาได้รับการแก้ไขแล้ว (I1f48b, b/157998762)
แก้ไขปัญหาที่การส่งผ่านอินพุตเคอร์เซอร์จะทําให้เกิดความขัดข้องหากนํา PointerInputFilters ออกผ่านคอมโพสิชันย่อยระหว่างการส่งผ่าน ซึ่งตอนนี้ปัญหาได้รับการแก้ไขแล้ว (Iab398, b/157998762)
ปรับโครงสร้างคลาส Radius เป็นคลาสแบบอินไลน์ นําเมธอดการสร้างคอมพาเนียนออกเพื่อใช้ตัวสร้างฟังก์ชันที่มีพารามิเตอร์เริ่มต้นเพื่อให้รัศมีตามแนวแกน y ตรงกับพารามิเตอร์รัศมีตามแนวแกน x ที่ต้องระบุ
อัปเดต DrawScope.drawRoundRect ให้ใช้พารามิเตอร์ Radius รายการเดียวแทนค่า float แยกกัน 2 ค่าสำหรับรัศมีตามแกน x และ y (I46d1b)
คอมโพสิชัน "จัดองค์ประกอบใหม่" ไม่ได้เป็นนามธรรมที่มีประโยชน์อีกต่อไป การคอมโพสิชันใหม่ส่วนใหญ่ควรเกิดขึ้นจากการกำหนด MutableState สําหรับรายการอื่นๆ นอกเหนือจากนี้ เราขอแนะนําให้ใช้ฟังก์ชัน
invalidate
เพื่อทริกเกอร์การจัดองค์ประกอบใหม่ของขอบเขตปัจจุบัน (Ifc992)แทนที่การใช้คลาส Px ในคลาสคอมโพสิต์ต่างๆ เป็นส่วนหนึ่งของความพยายามในการรีแฟกทอริงครั้งใหญ่เพื่อใช้เฉพาะ Dp และประเภทพื้นฐานสำหรับพารามิเตอร์พิกเซล (Iede0b)
เปลี่ยนกลยุทธ์การสร้างโค้ดของคอมไพเลอร์ Compose ก่อนการเปลี่ยนแปลงนี้ คอมไพเลอร์คอมโพสิทจะเปลี่ยนการเรียกใช้เป็นฟังก์ชันคอมโพสิท การเปลี่ยนแปลงนี้ทำให้ตอนนี้เราเปลี่ยนรูปแบบเนื้อหาของฟังก์ชันคอมโพสิเบิลและปล่อยตำแหน่งการเรียกให้ไม่เปลี่ยนแปลง (ส่วนใหญ่)
ซึ่งหมายความว่าตรรกะส่วนใหญ่ที่สื่อสารกับรันไทม์คอมโพซจะเริ่มต้นที่ส่วนเนื้อหาของฟังก์ชันแทนที่จะเป็นตำแหน่งการเรียกใช้
การเปลี่ยนแปลงนี้ควรเป็นการเปลี่ยนแปลงที่เข้ากันได้กับแหล่งที่มาสำหรับการใช้งานการคอมโพสิททั้งหมด ผู้ใช้ส่วนใหญ่ของเครื่องมือเขียนไม่ควรต้องอัปเดตโค้ดใดๆ จากการเปลี่ยนแปลงนี้
ในการรองรับการทำงานนี้ ลายเซ็น JVM ของฟังก์ชันคอมโพสิเบิลทั้งหมดจึงมีการเปลี่ยนแปลง ฟังก์ชันคอมโพสิเบิลที่ยอมรับพารามิเตอร์เดียวจะเปลี่ยนรูปแบบเป็นฟังก์ชันที่ยอมรับพารามิเตอร์ 3 รายการ โดยพารามิเตอร์เพิ่มเติมคือคอมโพเซอร์ ซึ่งเป็นจำนวนเต็ม "คีย์" ซึ่งเป็นจำนวนเต็มบิตมาสก์ที่ใช้เพื่อเผยแพร่ข้อมูลเมตาผ่านการเรียก
ตอนนี้ Compose ยังเปลี่ยนอาร์กิวเมนต์เริ่มต้นเป็นฟังก์ชันที่คอมโพสิเบิลได้ด้วย โดยดำเนินการนี้โดยไม่เพิ่มการโอเวอร์โหลดเริ่มต้นสังเคราะห์เพิ่มเติมของฟังก์ชันเอง ดังนั้นการเปลี่ยนแปลงนี้จะทำให้มีการกำหนดฟังก์ชันน้อยลง
การเปลี่ยนแปลงพฤติกรรมที่ทราบซึ่งเกิดจากการเปลี่ยนแปลงนี้
- การโทรบางสายจะข้ามไปโดยไม่แสดงในตำแหน่งที่ควรจะแสดงก่อนหน้านี้
- ตอนนี้ระบบจะติดตามและจัดการนิพจน์แบบคอมโพสิเบิลในนิพจน์อาร์กิวเมนต์เริ่มต้นอย่างถูกต้องแล้ว
งานนี้มีการเพิ่มประสิทธิภาพบางอย่างดังนี้ 1. ระบบจะเผยแพร่ผลลัพธ์ของการเปรียบเทียบพารามิเตอร์ผ่านกราฟการเรียกไปยังฟังก์ชันอื่นๆ ที่คอมโพสิเบิล ซึ่งจะส่งผลให้มีจำนวนการเปรียบเทียบน้อยลงเมื่อรันไทม์ ลดขนาดตารางสล็อต และข้ามฟังก์ชันคอมโพสิเบิลได้มากขึ้นซึ่งก่อนหน้านี้ไม่ได้ข้าม 2. ระบบจะไม่เปรียบเทียบหรือจัดเก็บพารามิเตอร์ที่พิจารณาว่า "คงที่" ไว้ที่รันไทม์อีกต่อไป ซึ่งจะช่วยลดจํานวนการเปรียบเทียบและขนาดตารางสล็อต 3. ระบบจะใช้โครงสร้างการควบคุมการไหลของเนื้อหาของฟังก์ชันเพื่อลดจำนวนกลุ่มที่สร้างขึ้น ซึ่งจะช่วยลดขนาดตารางสล็อตและทำให้รันไทม์ทำงานน้อยลง 4. ระบบจะไม่รวมพารามิเตอร์การส่งและตัวรับที่ไม่ได้ใช้ในฟังก์ชันไว้ในการพิจารณาความสามารถในการข้ามของฟังก์ชัน หากไม่ได้ใช้พารามิเตอร์ดังกล่าวในเนื้อหาของฟังก์ชัน
การเปลี่ยนแปลงที่ทำให้เกิดข้อขัดข้องส่วนใหญ่มีไว้สำหรับ API ที่คอมไพเลอร์กำหนดเป้าหมายโดยตรง และการใช้งาน compose ทั่วไปจะไม่ได้รับผลกระทบ ดังนี้ 1. นํา Composer::startExpr ออกแล้ว 2. นำ Composer::endExpr ออกแล้ว 3. Composer::call ถูกเลิกใช้งานแล้ว 4. นำการโอเวอร์โหลดที่ไม่ใช่ vararg ของ
key
ออกแล้ว ตั้งแต่นี้ไปให้ใช้เวอร์ชันvararg
5. เลิกใช้งานคำอธิบายประกอบ Pivotal แล้ว ให้ใช้key
แทน 6. เปลี่ยน ScopeUpdateScope::updateScope ให้คาดหวัง Function3 แทน Function1 7. อัปเดต restartableFunction และ restartableFunctionN ให้รวมพารามิเตอร์เวลาคอมไพล์เพิ่มเติม (I60756, b/143464846)นําตัวแก้ไข LayoutAlign ที่เลิกใช้งานออกแล้ว (I10877)
นำ RepaintBoundary ออกเพื่อใช้ DrawLayerModifier (I00aa4)
ตอนนี้ Button, FloatingActionButton และ Clickable มีพารามิเตอร์
enabled
แยกกัน มีการเปลี่ยนชื่อหรือจัดลําดับพารามิเตอร์ในปุ่มใหม่ (I54b5a)แทนที่ ButtonStyle ด้วยฟังก์ชันที่แยกต่างหากและนำการโอเวอร์โหลดข้อความ (สตริง) ออก ดูข้อมูลการใช้งานจากตัวอย่างที่อัปเดตแล้ว (If63ab, b/146478620, b/146482131)
การเปลี่ยนแปลงที่สำคัญใน Ambients 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)