UI ของ Compose
androidx.compose.ui
androidx.compose.ui.geometry
androidx.compose.ui.graphics
androidx.compose.ui.platform
androidx.compose.ui.test
(ดูเอกสารอ้างอิง API สำหรับแพ็กเกจ Compose ทั้งหมด)
อัปเดตล่าสุด | รุ่นที่เสถียร | รุ่นที่อาจได้รับการเผยแพร่ | รุ่นเบต้า | รุ่นอัลฟ่า |
---|---|---|---|---|
2 กรกฎาคม 2025 | 1.8.3 | - | 1.9.0-beta02 | - |
โครงสร้าง
Compose คือการรวมรหัสกลุ่ม Maven 7 รายการภายใน androidx
แต่ละกลุ่ม
มีฟังก์ชันการทำงานย่อยที่กำหนดเป้าหมาย ซึ่งแต่ละกลุ่มมีชุดหมายเหตุประจำรุ่นของตัวเอง
ตารางนี้อธิบายกลุ่มและลิงก์ไปยังชุดหมายเหตุประจำรุ่นแต่ละชุด
กลุ่ม | คำอธิบาย |
---|---|
compose.animation | สร้างภาพเคลื่อนไหวในแอปพลิเคชัน Jetpack Compose เพื่อยกระดับประสบการณ์ของผู้ใช้ |
compose.compiler | แปลงฟังก์ชัน @Composable และเปิดใช้การเพิ่มประสิทธิภาพด้วยปลั๊กอินคอมไพเลอร์ Kotlin |
compose.foundation | เขียนแอปพลิเคชัน Jetpack Compose ด้วยองค์ประกอบพื้นฐานที่พร้อมใช้งาน และขยายรากฐานเพื่อสร้างชิ้นส่วนระบบการออกแบบของคุณเอง |
compose.material | สร้าง UI ของ Jetpack Compose ด้วยคอมโพเนนต์ Material Design ที่พร้อมใช้งาน ซึ่งเป็นจุดแรกเข้าของ Compose ในระดับที่สูงขึ้น ออกแบบมาเพื่อจัดหาคอมโพเนนต์ที่ตรงกับคอมโพเนนต์ที่อธิบายไว้ที่ www.material.io |
compose.material3 | สร้าง UI ของ Jetpack Compose ด้วยคอมโพเนนต์ Material Design 3 ซึ่งเป็นวิวัฒนาการขั้นถัดไปของ Material Design Material 3 มีการอัปเดตธีมและคอมโพเนนต์ รวมถึงฟีเจอร์การปรับเปลี่ยนในแบบของคุณของ Material You เช่น สีแบบเปลี่ยนอัตโนมัติ และออกแบบมาให้สอดคล้องกับสไตล์ภาพและ UI ของระบบ Android 12 ใหม่ |
compose.runtime | ส่วนประกอบพื้นฐานของรูปแบบการเขียนโปรแกรมและการจัดการสถานะของ Compose รวมถึงรันไทม์หลักสำหรับปลั๊กอินคอมไพเลอร์ Compose เพื่อกำหนดเป้าหมาย |
compose.ui | องค์ประกอบพื้นฐานของ Compose UI ที่จำเป็นต่อการโต้ตอบกับอุปกรณ์ ซึ่งรวมถึงเลย์เอาต์ การวาด และอินพุต |
การประกาศทรัพยากร Dependency
หากต้องการเพิ่มทรัพยากร Dependency ใน Compose คุณต้องเพิ่มที่เก็บ Maven ของ Google ลงในโปรเจ็กต์ อ่านข้อมูลเพิ่มเติมได้ที่ที่เก็บ Maven ของ Google
เพิ่มการอ้างอิงสำหรับอาร์ติแฟกต์ที่คุณต้องการในไฟล์ build.gradle
สำหรับแอปหรือโมดูลของคุณ
Groovy
dependencies { implementation "androidx.compose.ui:ui:1.8.3" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.ui:ui:1.8.3") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
ดูข้อมูลเพิ่มเติมเกี่ยวกับการพึ่งพาได้ที่เพิ่มการพึ่งพาบิลด์
ความคิดเห็น
ความคิดเห็นของคุณจะช่วยให้ Jetpack ทำงานได้ดียิ่งขึ้น โปรดแจ้งให้เราทราบหากพบปัญหาใหม่หรือมี ไอเดียในการปรับปรุงไลบรารีนี้ โปรดดูปัญหาที่มีอยู่ ในไลบรารีนี้ก่อนสร้างปัญหาใหม่ คุณสามารถโหวตปัญหาที่มีอยู่ได้โดย คลิกปุ่มดาว
ดูข้อมูลเพิ่มเติมได้ในเอกสารประกอบของเครื่องมือติดตามปัญหา
เวอร์ชัน 1.9
เวอร์ชัน 1.9.0-beta02
2 กรกฎาคม 2025
androidx.compose.ui:ui-*:1.9.0-beta02
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.9.0-beta02 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- เปลี่ยนออบเจ็กต์คู่ให้เป็นแบบทดลองเพื่อให้ตรงกับคลาส (I8452a)
- นำ Flag การทดสอบ
isTrackFocusEnabled
(I003fd) ออกแล้ว
การแก้ไขข้อบกพร่อง
- เมื่อไม่มี
WindowInsets
การละเมิดเนื้อหาของComposeView
ระบบจะไม่ระบุค่าWindowInsetsRulers
(I71221)
เวอร์ชัน 1.9.0-beta01
18 มิถุนายน 2025
androidx.compose.ui:ui-*:1.9.0-beta01
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.9.0-beta01 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- เปลี่ยน
ShadowContext
ให้เป็นอินเทอร์เฟซที่ปิดผนึก (I3ce40) - เพิ่มวิธีสร้างเหตุการณ์สัมผัสทางอ้อมข้ามโมดูล (สําหรับการทดสอบ) (I22e4c)
- ทำให้
IndirectTouchEvent.nativeEvent
เป็นเวอร์ชันทดลอง (I6fda5) - แก้ไข API Surface ตามความคิดเห็นจากสภา API (Ibf378)
- นำค่าคงที่
FrameRateCategory.NoPreference
ออก เปลี่ยนชื่อModifier.requestedFrameRate
เป็นModifier.preferredFrameRate
(I2f976) WindowInsetsRulers
: เปลี่ยนrulersIgnoringVisibility
เป็นสูงสุด เปลี่ยนgetDisplayCutoutBounds()
ให้เป็นฟังก์ชันส่วนขยายของPlacementScope
WindowInsetsAnimationProperties
เปลี่ยนเป็นWindowInsetsAnimation
และgetAnimationProperties()
เปลี่ยนเป็นgetAnimation()
แล้ว (I3816f)- เปลี่ยนคลาส
ShadowParams
เป็นShadow
(I11cca) - เปลี่ยนแพ็กเกจสำหรับ API อัตราเฟรมจาก
androidx.compose.ui.ui
เป็นandroidx.compose.ui
(I8994e) - เปลี่ยน
InsetsRulers
ให้เป็นโค้ดทั่วไปที่มีชื่อWindowInsetsRulers
ปรับ API ให้เรียบง่ายขึ้นเพื่อให้การแทรกทั้งหมดเป็นWindowInsetsRulers
แยกพร็อพเพอร์ตี้ภาพเคลื่อนไหวที่ไม่ใช่ไม้บรรทัดไปยังคลาสAnimationProperties
WindowInsetsRulers.innermostOf()
ใช้เพื่อผสานWindowInsetsRulers
หลายรายการได้ (I2f0c6, b/415012444) - เพิ่ม API เครื่องมือสำหรับการแยกวิเคราะห์ข้อมูลแหล่งที่มาซึ่งคอมไพเลอร์ Compose เพิ่ม (Iceaf9, b/408492167)
การแก้ไขข้อบกพร่อง
- เราได้นำแฟล็กสำหรับ
isGetFocusedRectReturnEmptyEnabled
ออกแล้วเนื่องจากฟีเจอร์นี้ได้รับการยืนยันอย่างสมบูรณ์แล้ว (Ife722) - แก้ไขข้อบกพร่องใน
performScrollToNode
ซึ่งในบางกรณีไม่ถึงโหนดเป้าหมาย การแก้ไขนี้จะช่วยให้การเชื่อมต่อไปถึงโหนดเป้าหมายได้เสมอในกรณีดังกล่าว ผลข้างเคียงของการเปลี่ยนแปลงนี้คือตำแหน่งการเลื่อนที่แน่นอนเมื่อสิ้นสุดการดำเนินการอาจแตกต่างออกไป ซึ่งส่งผลต่อการทดสอบภาพหน้าจอและการทดสอบที่ใช้สมมติฐานเกี่ยวกับตำแหน่งการเลื่อนที่แน่นอน (I2c8a1)
เวอร์ชัน 1.9.0-alpha04
4 มิถุนายน 2025
androidx.compose.ui:ui-*:1.9.0-alpha04
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.9.0-alpha04 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม API ตัวแก้ไขสำหรับเงาที่ปรับแต่งได้ (I2058d, b/160665122)
- เพิ่มพร็อพเพอร์ตี้
SemanticsModifierNode.isImportantForBounds
ที่กำหนดว่าควรพิจารณาโหนดเมื่อคำนวณขอบเขตหรือไม่ โดยค่าเริ่มต้น พร็อพเพอร์ตี้จะเป็นจริง และสามารถตั้งค่าเป็นเท็จเพื่อระบุว่าไม่ควรนำโหนดมาพิจารณาสำหรับขอบเขต (I7ebec) - เพิ่ม
SemanticsPropertyKey
ฟังก์ชัน Factory สำหรับประกาศพร็อพเพอร์ตี้ความหมายเฉพาะของ Android ที่พร้อมใช้งานเป็นส่วนเสริมการช่วยเหลือพิเศษซึ่งแสดงผ่านAccessibilityNodeInfo.getExtras
(I2ed51) - นำการใช้งาน
ComposeUiFlags.isRemoveFocusedViewFixEnabled
ออกและเลิกใช้ฟีเจอร์นี้ (I50328) - เปิดตัวเฟรมเวิร์กเงาแบบใหม่ที่ปรับแต่งได้ ซึ่งรวมถึง
DropShadowPainter
และInnerShadowPainter
รวมถึงDropShadow/InnerShadow
ด้วย โครงสร้างพื้นฐานแบบเงาจะได้รับการแชร์เพื่อให้สามารถแชร์เงาที่สร้างขึ้นเดียวกันในตำแหน่งที่เรียกใช้หลายแห่งได้โดยไม่ต้องสร้างเงาใหม่ n ครั้ง (I24f7a, b/160665122) - แนะนำ
CompositeShader
และCompositeShaderBrush
ซึ่งสร้างผลลัพธ์ที่คอมโพสิตระหว่าง 2 เชเดอร์ นอกจากนี้ ให้เพิ่มShaderBrush#transform
เพื่อตั้งค่าเมทริกซ์การเปลี่ยนรูปแบบสำหรับ Shader (I2621a, b/160665122)
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องใน
NestedScrollInteropConnection
ซึ่งทำให้วิธีการปัดอยู่ในลำดับที่ไม่ถูกต้องเมื่อเทียบกับมุมมอง (I56ad4) - ก่อนหน้านี้ กล่องโต้ตอบที่วาดแบบเต็มหน้าจอจะไม่ได้วาดภายในภูมิภาครอยบากของจอแสดงผล เราแก้ไขข้อบกพร่องนี้เพื่อให้กล่องโต้ตอบที่มี
decorFitsSystemWindows = false
และusePlatformDefaultWidth = false
สามารถใช้บริเวณหน้าจอรอยบากได้ (I9e975) - แก้ไขข้อบกพร่องที่
TalkBack
ไม่วาดตัวบ่งชี้โฟกัสสีเขียวหลังจากเปิดไว้ขณะที่แอป Compose ทำงานในเบื้องหลัง (Ifd12a)
เวอร์ชัน 1.9.0-alpha03
20 พฤษภาคม 2025
androidx.compose.ui:ui-*:1.9.0-alpha03
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.9.0-alpha03 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- Flag
ComposeUiFlags.isGetFocusedRectReturnEmptyEnabled
ทำให้เมื่อไม่มีอะไรที่โฟกัสได้ในComposeView
ระบบจะตั้งค่า Rect เป็นค่าว่าง ซึ่งจะป้องกันไม่ให้การค้นหาโฟกัสเลือกมุมมองที่จะโฟกัส ซึ่งมีความสำคัญอย่างยิ่งในกรณีที่ IME มีตัวเลือกถัดไปและอาจพยายามโฟกัสที่ComposeView
และrequestFocus()
ไม่สำเร็จ (Ibd0e2, b/369256395) - ขอแนะนำฟีเจอร์แจ้งว่าไม่เหมาะสม
isNestedScrollDispatcherNodeFixEnabled
(I0d24a) - เปลี่ยนชื่อ
DialogProperties
'dialogContentTitle
เป็นwindowTitle
(Ibd27b) Modifier.onFirstVisible
และModifier.onVisibilityChanged
ซึ่งเป็นตัวแก้ไขระดับสูงที่สร้างขึ้นบนModifier.onLayoutRectChanged
ตัวแก้ไขเหล่านี้สร้างขึ้นมาเพื่อจัดการข้อกำหนดของแอปพลิเคชันทั่วไปจำนวนมากโดยเฉพาะ เช่น การบันทึกการแสดงผล การเล่นวิดีโออัตโนมัติ เป็นต้น ตัวแก้ไขเหล่านี้สร้างขึ้นโดยคำนึงถึงประสิทธิภาพเพื่อให้สามารถใช้ในสถานการณ์ที่สำคัญซึ่งอิงตามรายการได้โดยไม่ต้องเสี่ยงต่อการลดประสิทธิภาพการเลื่อน นอกจาก API ตัวแก้ไขเหล่านี้แล้ว เรายังได้เพิ่ม API อื่นๆ เพื่อRelativeLayoutBounds
เพื่อรองรับ Use Case เหล่านี้ รวมถึงช่วยให้นักพัฒนาแอปสร้างตัวแก้ไขที่กำหนดเองที่คล้ายกันซึ่งเหมาะกับ Use Case ของตนเองได้อย่างง่ายดาย (I759b8)- เปลี่ยน
setDiagnosticStackTraceEnabled
เป็น "ทดลอง" เพื่อรองรับการพัฒนาฟีเจอร์นี้ในอนาคต (I11db3) - เปิดตัว
Modifier.scrollable2D
,Scrollable2DState
และ API ที่แสดงร่วมสำหรับการสร้างสถานะ นอกจากนี้ ยังได้เปิดตัวฟังก์ชันส่วนขยายการเลื่อนทั่วไปด้วย (Ic61c8, b/214410040) - ค่าสี 64 บิตของ Compose เปรียบเทียบกับ Android โดยตรงไม่ได้
ColorLongs
เนื่องจากรหัสพื้นที่สีบางรายการไม่เป็นไปตามลำดับ เราได้เพิ่ม API ใหม่ 2 รายการ ได้แก่toColorLong()
และfromColorLong()
เพื่อใช้แปลงเป็นและจากพื้นที่สีของ Android (I36899) - เปิดตัว
ViewConfiguration.minimumFlingVelocity
เพื่อให้ควบคุมความเร็วในการปัดขอบเขตล่างได้ (I11aab)
เวอร์ชัน 1.9.0-alpha02
7 พฤษภาคม 2025
androidx.compose.ui:ui-*:1.9.0-alpha02
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.9.0-alpha02 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม
dialogContentTitle
ในDialogProperties
ซึ่งจะตั้งค่าชื่อหน้าต่างเนื้อหา bf9d670
การแก้ไขข้อบกพร่อง
- เราได้ปิดใช้ไม้บรรทัดขอบหน้าต่างชั่วคราวขณะแก้ไขการทดสอบภายใน 8d1402
- แก้ไขวิธีเพิ่มการเปลี่ยนแปลงอินพุตของเคอร์เซอร์ใน
VelocityTracker
ในDragGestureNode
ซึ่งควบคุมได้ด้วยฟีเจอร์ใหม่isAdjustPointerInputChangeOffsetForVelocityTrackerEnabled
254ddb
เวอร์ชัน 1.9.0-alpha01
23 เมษายน 2025
androidx.compose.ui:ui-*:1.9.0-alpha01
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.9.0-alpha01 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลงลักษณะการทำงาน
- การตรวจสอบ Lint ที่มาพร้อมกับ Compose ต้องใช้ AGP เวอร์ชัน 8.8.2 เป็นอย่างน้อย หากอัปเกรด AGP ไม่ได้ คุณสามารถอัปเกรด Lint ด้วยตนเองได้โดยใช้
android.experimental.lint.version=8.8.2
(หรือเวอร์ชันที่ใหม่กว่า) ในgradle.properties
หากต้องการเรียกใช้การตรวจสอบ Lint ของ Compose ภายใน IDE คุณต้องใช้ Android Studio Ladybug หรือใหม่กว่า
การเปลี่ยนแปลง API
- นำ Flag ออกเพื่อเปิดใช้คำสั่ง Trace สำหรับเครื่องมือติดตามเส้นทาง Hit (แก้ไขข้อบกพร่อง) (I1b2a1)
- เปลี่ยน
InnerRectRulers
และOuterRectRules
ให้เป็นเมธอดแทน นำพารามิเตอร์ชื่อออกจากRectRulers
Public APIDerivedRulers
เป็นตัวเลือกของเครื่องมือสร้างสำหรับไม้บรรทัดแนวตั้งและแนวนอนแล้วMergedHorizontalRulers
และMergedVerticalRulers
ถูกแทนที่ด้วยเมธอดminOf
และmaxOf
เพื่อสร้างอินสแตนซ์ (Iee89f, b/408192133) - เลิกใช้งาน
androidx.compose.ui.LocalSavedStateRegistryOwner
เพื่อให้ใช้androidx.savedstate.compose.LocalSavedStateRegistryOwner
แทน (I5439f, b/377946781) - เพิ่ม
Modifier.keepScreenOn
เพื่อตั้งค่าให้จอแสดงผลไม่เข้าสู่โหมดพักขณะนำเสนอ (Ib5af4, b/408284174) - เพิ่มพร็อพเพอร์ตี้ความหมายใหม่
Shape
ซึ่งอาจตั้งค่าได้เมื่อรูปร่างขององค์ประกอบ UI แตกต่างจากสี่เหลี่ยมผืนผ้าล้อมรอบ เช่น สี่เหลี่ยมผืนผ้าที่มีมุมโค้ง (I1376f) - แก้ไขปัญหาเกี่ยวกับการส่งต่อเหตุการณ์ของเคอร์เซอร์ใน
AndroidViews
และเพิ่ม FlagisPointerInteropFilterDispatchingFixEnabled
เพื่อป้องกันการเปลี่ยนแปลง (I0e272, b/372055500, b/408002332) FocusRestorer
จะไม่ปักหมุดรายการที่โฟกัสก่อนหน้านี้อีกต่อไป ผู้ใช้ควรใช้คีย์เพื่อให้แน่ใจว่ารายการที่โฟกัสก่อนหน้านี้มีแฮชองค์ประกอบเดียวกัน เพื่อให้ระบบคืนค่าโฟกัสได้สำเร็จ (I4203b, b/330696779)- อนุญาตให้ฟีเจอร์เขียนทริกเกอร์
ViewTreeObserver.OnScrollChanged
ลักษณะการทำงานนี้จะเปิดตัวภายใต้ฟีเจอร์ทดลองisOnScrollChangedCallbackEnabled
นอกจากนี้ เรายังได้เปิดตัวฟังก์ชันส่วนขยายของDelegatableNode dispatchOnScrollChanged
ด้วย (I34b9d, b/238109286) currentCompositeKeyHash
เลิกใช้งานแล้ว โปรดใช้currentCompositeKeyHashCode
แทน API การแทนที่จะเข้ารหัสแฮชเดียวกันด้วยบิตที่มากขึ้น ซึ่งจะช่วยลดโอกาสที่กลุ่มแบบสุ่ม 2 กลุ่มที่ไม่เกี่ยวข้องในลำดับชั้นการจัดองค์ประกอบจะมีคีย์แฮชเดียวกันได้อย่างมาก (I4cb6a, b/177562901)- โปรเจ็กต์ที่เผยแพร่ด้วย Kotlin 2.0 ต้องใช้ KGP 2.0.0 ขึ้นไปจึงจะใช้งานได้ (Idb6b5)
- เพิ่มการรองรับการตรวจสอบ Lint สำหรับ
FocusRequester
เพื่อให้แน่ใจว่าระบบจะจดจำไว้ในการเขียน (I6bf91) - เพิ่มความสามารถในการตั้งค่าอัตราเฟรมที่ต้องการหรือหมวดหมู่อัตราเฟรมใน Composable ที่ควรแสดงที่ (Ie5201)
- แสดง
MotionEvent
เนทีฟใน Android (I17286) - เพิ่ม
getChecked() + setChecked(int)
เลิกใช้งานisChecked + setChecked(boolean)
(Iaac9d) - ตอนนี้ตัวแก้ไข
graphicsLayer
ยอมรับblendMode
และcolorFilter
(Iab0e6) แล้ว - เพิ่ม
LocalResources
องค์ประกอบที่อยู่ใกล้กับทรัพยากรของคำค้นหา การเรียกใช้LocalResources.current
จะจัดองค์ประกอบใหม่เมื่อการกำหนดค่าเปลี่ยนแปลง ดังนั้นการเรียกใช้ API เช่นstringResource()
จะแสดงค่าที่อัปเดตแล้ว (I50c13, b/274786917) - เปิดเผย API เวอร์ชันทดลองสำหรับ Composable เพื่อจัดการเหตุการณ์การแตะโดยอ้อม (Icff57)
- รุ่นนี้ปรับปรุงการรายงานข้อยกเว้นที่ไม่ได้จัดการซึ่งเกิดขึ้นในระหว่างเลย์เอาต์และขั้นตอนการวาดเนื้อหาที่ใช้ร่วมกันได้ ก่อนหน้านี้ ข้อยกเว้นที่ไม่ได้แคชไว้ที่นี่จะทำให้โปรแกรมเรียกใช้การทดสอบขัดข้องและสิ้นสุดชุดทดสอบก่อนเวลาอันควร ตอนนี้คุณสามารถรายงานข้อยกเว้นเหล่านี้ได้อย่างราบรื่นมากขึ้นโดยไม่ต้องสิ้นสุดชุดการทดสอบ (I9928b, b/314128080)
- เลิกใช้งาน
GlobalAssertions
API เวอร์ชันทดลอง โดยมีจุดประสงค์เพื่อใช้ในการตรวจสอบการช่วยเหลือพิเศษ โปรดดูenableAccessibilityChecks()
แทน (I50aa5) SemanticsNodeInteraction.performTextInputSelection
ไม่ใช่ฟีเจอร์ทดลองอีกต่อไป และตอนนี้รองรับพารามิเตอร์relativeToOriginal
เพิ่มเติม ซึ่งช่วยให้คุณใช้การเลือกกับข้อความเดิมที่ไม่ได้แปลงหรือข้อความที่แปลงแล้วก็ได้ (I3a905, b/261561038, b/277018945)- เปิดตัว API สำหรับสร้างรายการหัวข้อย่อยที่กำหนดเองผ่าน
AnnotatedString
(I1d066, b/383269496, b/139326648) - เลิกใช้งาน
runWithTimingDisabled
เพื่อใช้runWithMeasurementDisabled
แทน ซึ่งอธิบายลักษณะการทำงานได้ชัดเจนกว่า นั่นคือระบบจะหยุดเมตริกทั้งหมดชั่วคราว นอกจากนี้ ให้แสดงคลาสซูเปอร์คลาสMicrobenchmarkScope
เนื่องจากไม่สามารถประกาศฟังก์ชันrunWithMeasurementDisabled
ซ้ำเพื่อเปิดการเข้าถึงได้เนื่องจากเป็นฟังก์ชันอินไลน์ (I9e23b, b/389149423, b/149979716) - อัปเดต API อุปกรณ์ ui-tooling ให้รวมอุปกรณ์รุ่นใหม่ๆ (Ia2ac1)
- เพิ่มแนวตั้งของแท็บเล็ตในคอลเล็กชันขนาดหน้าจอแสดงตัวอย่างเพื่อช่วยให้นักพัฒนาแอปพิจารณาหน้าต่างที่ใหญ่ขึ้น (Ia1976)
- เปิดตัว Trace Value API สำหรับการทำเครื่องหมาย/บันทึกการติดตามพร้อมค่า ณ จุดเวลาที่กำหนด ค่าการติดตามจะแสดงใน Prefetto เป็นเลนใหม่ที่ดูได้ผ่านไทม์ไลน์ของการติดตาม ใน Android จะมีการติดตั้งใช้งานโดยใช้
Trace.setCounter
(Idcf48)
การแก้ไขข้อบกพร่อง
- แก้ไขการเรียกใช้ Observer ของฟังก์ชัน remember ใน Composition ที่หยุดชั่วคราวได้เพื่อหลีกเลี่ยงการเรียกใช้ฟังก์ชัน remember/forget ในการเรียกใช้เดียวกัน (I570b2, b/404645679, b/407931790)
- ตอนนี้ตั้งค่า
android:dialogTheme
เพื่อควบคุมพร็อพเพอร์ตี้ของกล่องโต้ตอบได้แล้วเมื่อdecorFitsSystemWindows
เป็นเท็จ (I7922f, b/246909281) - แก้ไขข้อบกพร่องที่ทำให้เหตุการณ์การเคลื่อนไหวที่ตรวจพบนอกกล่องโต้ตอบสามารถปิดกล่องโต้ตอบได้ (Ia78fd)
- ตอนนี้การตรวจสอบ Lint ของ Compose ต้องใช้ AGP เวอร์ชัน 8.8.2 ขึ้นไปจากบรรทัดคำสั่ง และต้องใช้ Android Studio Ladybug ขึ้นไปสำหรับการรองรับ IDE หากใช้ AGP เวอร์ชันเก่า คุณสามารถตั้งค่า
android.experimental.lint.version=8.8.2
ใน gradle.properties เพื่ออัปเกรดเวอร์ชัน Lint ได้โดยไม่ส่งผลกระทบต่อ AGP (I6f2a8) - เพิ่มพร็อพเพอร์ตี้ความหมายใหม่
InputText
ที่บันทึกค่าของtextfield
ก่อนที่จะใช้การเปลี่ยนรูปแบบเอาต์พุต (Iae46a, b/395911609, b/176949051) - ย้าย
enableAccessibilityChecks()
API ที่เปิดการตรวจสอบการช่วยเหลือพิเศษสำหรับ Android ไปยังแพ็กเกจแยกต่างหากซึ่งคือcompose:ui:ui-test-accessibility
หากคุณไม่ได้ใช้TestRule
และcompose:ui:ui-test-junit4-accessibility
เมื่อเรียกใช้TestRule
(I3c318, b/391560768) - เพิ่มการรองรับการเขียน Stack Trace ใน
LaunchedEffect
และrememberCoroutineScope
(I705c0, b/354163858)
การมีส่วนร่วมภายนอก
- การเปลี่ยนฟังก์ชัน
runComposeUiTest
ทดลองเพื่อยอมรับการบล็อกการระงับ นอกจากนี้ ยังเพิ่มฟังก์ชันrunComposeUiTest
ที่เลิกใช้งานแล้วเพื่อความเข้ากันได้แบบไบนารี (I3b88c, b/361577328)
เวอร์ชัน 1.8
เวอร์ชัน 1.8.3
18 มิถุนายน 2025
androidx.compose.ui:ui-*:1.8.3
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.3 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- เราได้นำแฟล็กสำหรับ
isGetFocusedRectReturnEmptyEnabled
ออกแล้วเนื่องจากฟีเจอร์นี้ได้รับการยืนยันอย่างสมบูรณ์แล้ว (Ife722) - Flag
ComposeUiFlags.isGetFocusedRectReturnEmptyEnabled
ทำให้เมื่อไม่มีอะไรที่โฟกัสได้ในComposeView
ระบบจะตั้งค่า Rect เป็นค่าว่าง ซึ่งจะป้องกันไม่ให้การค้นหาโฟกัสเลือกมุมมองที่จะโฟกัส ซึ่งมีความสำคัญอย่างยิ่งในกรณีที่ IME มีตัวเลือกถัดไปและอาจพยายามโฟกัสที่ComposeView
และrequestFocus()
ไม่สำเร็จ (Ibd0e2, b/369256395)
เวอร์ชัน 1.8.2
20 พฤษภาคม 2025
androidx.compose.ui:ui-*:1.8.2
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.2 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไข NPE เมื่อมีการนำกล่องโต้ตอบออกในระหว่างสตรีมเหตุการณ์ที่ใช้งานอยู่ในกล่องโต้ตอบ (6a7e7f)
- แก้ไขปัญหา
onLayoutRectChange
ไม่อัปเดตตามไทม์ไลน์ที่ถูกจำกัดเมื่อมีการอัปเดตแบบวาดอย่างเดียว (03b82d)
เวอร์ชัน 1.8.1
7 พฤษภาคม 2025
androidx.compose.ui:ui-*:1.8.1
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.1 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาบางอย่างเกี่ยวกับ
onLayoutRectChanged
และLazyLayout
d791b11 - ข้ามคำขอวัดซ้ำสำหรับรายการที่สร้างไว้ล่วงหน้า ข้อบกพร่องนี้ส่งผลต่อประสิทธิภาพการเลื่อนเลย์เอาต์แบบ Lazy เนื่องจากในบางกรณีการดึงข้อมูลล่วงหน้าทำงานได้อย่างไม่มีประสิทธิภาพ และการวัดผลเกิดขึ้นภายในเฟรม 742087a
เวอร์ชัน 1.8.0
23 เมษายน 2025
androidx.compose.ui:ui-*:1.8.0
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 1.7.0
- Compose 1.8 มีการรองรับการป้อนข้อความอัตโนมัติเชิงความหมายที่เพิ่มเข้ามาใหม่ ตรวจสอบว่า UI และ Foundation ที่คุณใช้เป็นเวอร์ชัน 1.8 ขึ้นไป เนื่องจากการป้อนข้อความอัตโนมัติสำหรับคอมโพเนนต์ข้อความต้องใช้ทั้ง 2 โมดูลในเวอร์ชันล่าสุด ดูรายละเอียดการใช้งาน API และตัวอย่างได้ในเอกสารประกอบเกี่ยวกับการป้อนข้อความอัตโนมัติที่นี่
- Compose 1.8 รองรับการตอบสนองแบบสัมผัสเพิ่มเติม ได้แก่
Confirm
,ContextClick
,GestureEnd
,GestureThresholdActivate
,Reject
,SegmentFrequentTick
,SegmentTick
,ToggleOn
,ToggleOff
,VirtualKey
คุณเข้าถึงได้ผ่านLocalHapticFeedback
และใน Android ฟีเจอร์นี้จะพร้อมใช้งานโดยค่าเริ่มต้นเมื่อ Vibrator API ระบุว่ารองรับการตอบสนองแบบสัมผัส - ตอนนี้ Focus API หลายรายการเสถียรแล้ว ซึ่งรวมถึง
Modifier.focusRestorer()
และonEnter
รวมถึงonExit
FocusProperties
(I6e667) ตอนนี้คุณระบุFocusDirection
เมื่อโทรหาrequestFocus
ได้แล้ว เราได้เพิ่มrequestFocus(FocusDirection)
API ลงในทั้งfocusRequester
และFocusTargetModifierNode
เพื่อให้โฟกัสไปในทิศทางที่เฉพาะเจาะจงได้ (I5d9ec][https://android-review.googlesource.com/#/q/I5d9eca3a2cd283c1b84ad6b77d929ef9a49ce4cc], b/245755256)
เวอร์ชัน 1.8.0-rc03
9 เมษายน 2025
androidx.compose.ui:ui-*:1.8.0-rc03
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-rc03 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- ปิดใช้การแก้ไขการทำงานร่วมกันของโฟกัสบางอย่างที่ทำให้เกิดการถดถอย (b9d998, b/369256395, b/378570682, b/376142752, b388590015/, b/389994198, b/391378895)
เวอร์ชัน 1.8.0-rc02
26 มีนาคม 2025
androidx.compose.ui:ui-*:1.8.0-rc02
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-rc02 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาที่มุมมองที่โฟกัสซึ่งฝังอยู่ในลำดับชั้นของ Compose จะทำให้เกิดการจัดองค์ประกอบซ้ำเมื่อนำมุมมองที่โฟกัสออกจาก LazyList (765562)
เวอร์ชัน 1.8.0-rc01
12 มีนาคม 2025
androidx.compose.ui:ui-*:1.8.0-rc01
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-rc01 มีการคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขข้อขัดข้องเมื่อนำ
AndroidView
ที่โฟกัสอยู่ออกขณะที่แป้นพิมพ์ซอฟต์แวร์ทำงานอยู่ (Ic725a) - แก้ไขปัญหาบางอย่างในการติดตั้งใช้งานการจัดการสถานะโฟกัสใหม่ (b/395895685)
- แก้ไขปัญหาที่บล็อกการป้อนข้อความอัตโนมัติเมื่อใช้
LaunchedEffect
เพื่อขอโฟกัสในช่องข้อความ (b/392539099)
เวอร์ชัน 1.8.0-beta03
26 กุมภาพันธ์ 2025
androidx.compose.ui:ui-*:1.8.0-beta03
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-beta03 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- ย้าย
enableAccessibilityChecks()
API ที่เปิดการตรวจสอบการช่วยเหลือพิเศษสำหรับ Android ไปยังแพ็กเกจแยกต่างหาก ซึ่งคือcompose:ui:ui-test-accessibility
หากคุณไม่ได้ใช้ TestRule และcompose:ui:ui-test-junit4-accessibility
เมื่อเรียกใช้ในTestRule
(I547ef, b/391560768) - เพิ่มพร็อพเพอร์ตี้ความหมายใหม่
InputText
ที่บันทึกค่าของช่องข้อความก่อนที่จะใช้การแปลงเอาต์พุต (Iae46a)
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาที่ทำให้บริการป้อนข้อความอัตโนมัติบันทึกข้อความเอาต์พุตที่แปลงแล้วแทนที่จะเป็นข้อความอินพุต (Iae46a, b/395911609, b/176949051)
เวอร์ชัน 1.8.0-beta02
12 กุมภาพันธ์ 2025
androidx.compose.ui:ui-*:1.8.0-beta02
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-beta02 มีการเปลี่ยนแปลงเหล่านี้
ฟีเจอร์ใหม่
- เพิ่มการตรวจสอบ Lint เพื่อเตือนการเรียกใช้
Configuration#screenWidth
/heightDp
-LocalWindowInfo.current.containerSize
สามารถใช้แทนเพื่อดึงขนาดหน้าต่างปัจจุบันได้
เวอร์ชัน 1.8.0-เบต้า01
29 มกราคม 2025
androidx.compose.ui:ui-*:1.8.0-beta01
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-beta01 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
ContextualFlowRow
และContextualFlowColumn
ได้รับการทำเครื่องหมายว่าเลิกใช้งานแล้ว คอมโพเนนต์เวอร์ชันทดลองนี้เปิดตัวในเวอร์ชัน 1.7 และยังไม่เสถียร รวมถึงการใช้งานยังไม่เป็นที่น่าพอใจ ในอนาคต เราอาจมีคอมโพเนนต์ที่แก้กรณีการใช้งานที่คอมโพเนนต์นี้มีไว้เพื่อแก้ปัญหาFlowRow
และFlowColumn
มีการโอเวอร์โหลดทดลองที่เปิดตัวในเวอร์ชัน 1.7 ซึ่งมีพารามิเตอร์overflow
เราเลิกใช้งานพารามิเตอร์นี้แล้ว และคุณสามารถใช้การโอเวอร์โหลดที่ไม่มีพารามิเตอร์นี้แทนได้ ลักษณะการทำงาน "overflow" เริ่มต้นสำหรับการโอเวอร์โหลดเหล่านี้จะเป็น "Clip" เช่นเดียวกับตั้งแต่เปิดตัว- กรณีการใช้งานหลายอย่างสำหรับ
ContextualFlowRow
สามารถทำได้โดยใช้ FlowRow แต่เราทราบดีว่าไม่ใช่ทุกกรณีContextualFlowRow
สามารถนำไปใช้ในพื้นที่ผู้ใช้ได้อย่างสมบูรณ์ และคุณสามารถพยายามคัดลอกการติดตั้งใช้งานและปรับเปลี่ยนได้หากต้องการ ในอนาคต เราหวังว่าจะแก้ปัญหา Use Case เหล่านี้ได้ด้วยวิธีอื่น (Ibafec)
- นำ
SemanticsNodeInteraction.semanticsId()
ออกแล้ว โปรดใช้SemanticsNodeInteraction.fetchSemanticsNode().id
แทน (Ie397a) - เราเลิกใช้งาน API การป้อนข้อความอัตโนมัติแบบเดิมแล้ว โปรดใช้ API ที่อิงตามความหมายใหม่แทน (I943ff)
- เขียน
requestAutofill
API ใหม่ให้อยู่นอกเครื่องมือจัดการการป้อนข้อความอัตโนมัติ (Id1929)
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาโฟกัสที่
requestFocus()
ที่มีพารามิเตอร์previouslyFocusedRect
ที่ไม่สมเหตุสมผล (เกี่ยวข้องกับทิศทางโฟกัส) จะข้ามComposeView
(Ifdc2f, b/388590015) - แก้ไข NPE ที่เกิดขึ้นเป็นครั้งคราวเมื่อใช้
GraphicsLayer.record { this@ContentDrawScope.drawContent() }
หากคุณบันทึกdrawContent()
ด้วยวิธีนี้ โปรดใช้ฟังก์ชันส่วนขยายGraphicsLayer#record
ภายในDrawScope
และไม่ใช่ฟังก์ชันสมาชิกในGraphicsLayer
(I75fc0, b/389046242) - แก้ไขเลย์เอาต์ข้อความที่มีจุดไข่ปลาซึ่งบางครั้งแปลไม่ถูกต้องระหว่างภาพเคลื่อนไหว ดูข้อมูลเพิ่มเติมได้ที่ b/389707025 (Ie55b1, b/389707025)
เวอร์ชัน 1.8.0-alpha08
15 มกราคม 2025
androidx.compose.ui:ui-*:1.8.0-alpha08
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-alpha08 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- การทำให้
AutofillManager
เป็นคลาสแบบนามธรรม (I0a3b0) - แก้ไขปัญหาที่เกี่ยวข้องกับโฟกัสหลายอย่าง รวมถึงปัญหาแอปขัดข้องเมื่อ IME พยายามโฟกัสที่
ComposeView
โดยไม่มีรายการที่โฟกัสได้ การเปลี่ยนโฟกัสภายในAndroidViews
ขององค์ประกอบย่อย และคำขอโฟกัสที่ทำให้AndroidView
ค้างอยู่ (Ia03c3, b/369256395, b/378570682, b/376142752) - เปลี่ยน
FocusEnterExitScope.cancelFocus()
เป็นcancelFocusChange()
(I89959) - ตอนนี้คุณสามารถคำนวณการบดบังที่ประกอบได้ด้วย
RectInfo.calculateOcclusions()
- เพิ่มฟังก์ชันส่วนขยายใน
DelegatableNode
เพื่อลงทะเบียน Listener สำหรับการเปลี่ยนแปลงเลย์เอาต์ส่วนกลาง (I68b59)
การแก้ไขข้อบกพร่อง
- กิจกรรมที่ใช้เป็นโฮสต์สำหรับ Composable ที่อยู่ภายใต้การทดสอบเมื่อใช้
ComposeContentTestRule.setContent
จะใช้ธีมTheme.Material.Light.NoActionBar
เพื่อหลีกเลี่ยงไม่ให้ActionBar
ทับซ้อนกับเนื้อหาการทดสอบเมื่อกำหนดเป้าหมายเป็น SDK 35 หากต้องการเลือกไม่ใช้ลักษณะการทำงานนี้ คุณสามารถนำการอ้างอิงui-test-manifest
ออกและเพิ่มรายการกิจกรรมใน AndroidManifest.xml ของแอปทดสอบสำหรับComponentActivity
ด้วยธีมที่คุณเลือก (I7ae1b, b/383368165) - ตอนนี้ฟอนต์ทรัพยากรที่มีการตั้งค่ารูปแบบเดียวกันจะหลีกเลี่ยงการแคชมากเกินไป ซึ่งทำให้มีการใช้การตั้งค่ารูปแบบที่ไม่ถูกต้อง (If3dff, b/372044241)
AnnotatedString.fromHtml
รองรับแท็ก<ul>/<li>
แล้ว (I7c2fe, b/299662276, b/139326648)
การมีส่วนร่วมภายนอก
- เพิ่มอินเทอร์เฟซคลิปบอร์ดใหม่และองค์ประกอบภายในสำหรับอินเทอร์เฟซดังกล่าว (I80809)
เวอร์ชัน 1.8.0-alpha07
11 ธันวาคม 2024
androidx.compose.ui:ui-*:1.8.0-alpha07
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-alpha07 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เปิดเผยเจ้าของจาก
LayoutNode
สำหรับเครื่องมือ (I26f7f) - มี
LocalAutofillHighlightColor
องค์ประกอบการใช้งานในพื้นที่เป็นประเภทสี (I0e05b) - คงค่า
UrlAnnotation
ที่เลิกใช้งานแล้วและทำเครื่องหมายเมธอดของคลาสนี้ว่าอยู่ในขั้นทดลอง (Ic0021)
การแก้ไขข้อบกพร่อง
- แก้ไขข้อขัดข้อง
IndexOutOfBoundsException
เมื่อใช้LinkAnnotation
ภายในBasicText
หรือ Text composable (be7605, b/374115892) - แก้ไขปัญหาที่ช่องข้อความที่กรอกซึ่งมีรูปร่างที่กำหนดเองไม่ตัดเส้นตัวบ่งชี้ (I4f87f, b/380704151)
- แก้ไขพื้นหลังที่หายไปเมื่อใช้ภาพหน้าจอแบบยาว (I4d57a)
- ตอนนี้ไลบรารีนี้ใช้คำอธิบายประกอบเกี่ยวกับค่า Null ของ JSpecify ซึ่งเป็นแบบใช้ประเภท นักพัฒนาซอฟต์แวร์ Kotlin ควรใช้อาร์กิวเมนต์คอมไพเลอร์ต่อไปนี้เพื่อบังคับใช้การใช้งานที่ถูกต้อง
-Xjspecify-annotations=strict
(นี่คือค่าเริ่มต้นที่เริ่มต้นด้วยคอมไพเลอร์ Kotlin เวอร์ชัน 2.1.0) (Idfef8, b/326456246) - อัปเดตการรองรับ Compose สำหรับสีแบบ Wide Gamut และ HDR เมื่อเรียกใช้ใน Android Q ขึ้นไป (Icd8be, b/379135036)
- ตอนนี้หากโหลดแบบอักษรของทรัพยากรไม่สำเร็จ ระบบจะเปลี่ยนกลับไปใช้แบบอักษรเริ่มต้นโดยไม่มีการแจ้งเตือนแทนที่จะแสดงข้อยกเว้นในเมตริกเหมือนที่เคย (Ib6a49)
- แก้ไขปัญหาโฟกัสหายเมื่อถอดและติด
AndroidView
(I53446) - ยอมรับ
requestFocus()
จากการดำเนินการเลย์เอาต์ที่อยู่นอกขอบเขต (Ia8461)
การมีส่วนร่วมภายนอก
- เพิ่ม
BringIntoViewResponderModifierNode
ลงใน UI ซึ่งจะช่วยให้คุณมีวิธีใหม่ในการใช้ฟังก์ชันการทำงานของ "นำมาแสดง" รวมถึงช่วยให้คุณใช้ฟังก์ชันการทำงานนี้ในระดับแพลตฟอร์มได้ (Ia6dd8)
เวอร์ชัน 1.8.0-alpha06
13 พฤศจิกายน 2024
androidx.compose.ui:ui-*:1.8.0-alpha06
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-alpha06 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มตัวปรับแต่ง
stylusHoverIcon
(Iff20a, b/331289114) - เปลี่ยนตัวจัดการการป้อนข้อความอัตโนมัติให้เป็นอินเทอร์เฟซ (I84914, b/376080755)
- เพิ่ม
requestFocus(FocusDirection)
ให้กับทั้งfocusRequester
และFocusTargetModifierNode
เพื่อให้โฟกัสในทิศทางที่เฉพาะเจาะจงได้ (I5d9ec, b/245755256) FocusProperties.enter
และFocusProperties.exit
ถูกแทนที่ด้วยonEnter
และonExit
โดยใช้ขอบเขตผู้รับแทนพารามิเตอร์FocusDirection
(I6e667)- เพิ่มการรองรับการป้อนข้อความอัตโนมัติในแถบเครื่องมือข้อความ (Ie6a4c)
- การเปลี่ยนแปลง API ใน
Modifier.focusRestorer()
(I99c03) มีดังนี้- เปลี่ยนชื่อพารามิเตอร์เป็น "fallback"
- ตอนนี้พารามิเตอร์เป็น
FocusRequester
ไม่ใช่ Lambda - ตอนนี้พารามิเตอร์เป็นแบบไม่เป็นค่าว่างโดยมีค่าเริ่มต้นเป็น "ค่าเริ่มต้น"
- การนำคำอธิบายประกอบ
@Experimental
ออกจากอินเทอร์เฟซเครื่องมือจัดการการป้อนข้อความอัตโนมัติ ฟีเจอร์นี้ยังอยู่ระหว่างการพัฒนาเพื่อกำหนดเป้าหมายการเปิดตัวนี้ แต่เราไม่ต้องการเปิดตัว @Expemiental API (Id8398) LocalHapticFeedback
จะมีการติดตั้งใช้งานHapticFeedback
เริ่มต้นเมื่อ Vibrator API ระบุว่ารองรับการสัมผัส เราได้เพิ่มรายการต่อไปนี้ลงในHapticFeedbackType
-Confirm
,ContextClick
,GestureEnd
,GestureThresholdActivate
,Reject
,SegmentFrequentTick
,SegmentTick
,ToggleOn
,ToggleOff
,VirtualKey
ตอนนี้คอมโพเนนต์ที่คลิกค้างได้ของ Wear Compose เช่นButton
,IconButton
,TextButton
และCard
จะแสดงการสั่นLONG_PRESS
เมื่อมีการระบุตัวแฮนเดิลการคลิกค้าง (I5083d)- นำ
OverscrollConfiguration
และLocalOverscrollConfiguration
ออก และเพิ่มrememberPlatformOverscrollFactory
เพื่อสร้างอินสแตนซ์ของ / ปรับแต่งพารามิเตอร์ของการใช้งานการเลื่อนเลยขอบเริ่มต้น หากต้องการปิดใช้การเลื่อนเกิน ให้ใช้LocalOverscrollFactory provides null
แทนLocalOverscrollConfiguration provides null
หากต้องการเปลี่ยนสีเรืองแสง / ระยะขอบ ให้ใช้LocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding)
แทนLocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding)
(Ie71f9, b/255554340, b/234451516) - นำ
GlobalAssertions
API เวอร์ชันทดลองออกแล้ว โดยมีวัตถุประสงค์เพื่อใช้ในการเรียกใช้การตรวจสอบการช่วยเหลือพิเศษ โปรดดูenableAccessibilityChecks()
เพื่อวัตถุประสงค์ดังกล่าวแทน (I59322)
เวอร์ชัน 1.8.0-alpha05
30 ตุลาคม 2024
androidx.compose.ui:ui-*:1.8.0-alpha05
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-alpha05 มีการเปลี่ยนแปลงเหล่านี้
ฟีเจอร์ใหม่
ฟีเจอร์ป้อนข้อความอัตโนมัติจะแสดงอยู่หลังฟีเจอร์แฟล็กในรุ่นนี้ เรากำลังดำเนินการปรับปรุงประสิทธิภาพและมองหาความคิดเห็นในช่วงแรกเกี่ยวกับ API คาดว่า API จะได้รับการพัฒนาให้ดียิ่งขึ้นก่อนที่จะมีเสถียรภาพตามความคิดเห็น
- หากต้องการเปิดใช้การป้อนข้อความอัตโนมัติ ให้ตั้งค่า
ComposeUiFlags.isSemanticAutofillEnabled
เป็น "true" ในonCreate
และใช้ Compose Snapshot ล่าสุด - การป้อนข้อความอัตโนมัติเวอร์ชันนี้รองรับการบันทึกข้อมูลเข้าสู่ระบบด้วยตนเอง ผ่านฟีเจอร์แนะนำรหัสผ่านที่รัดกุม และผ่านการนำทาง นอกจากนี้ยังรองรับการป้อนข้อมูลเมื่อช่องที่ป้อนอัตโนมัติได้ได้รับโฟกัส หรือเมื่อระบบทริกเกอร์การป้อนอัตโนมัติผ่านแถบเครื่องมือข้อความในคอมโพเนนต์ข้อความ คอมโพเนนต์จะไฮไลต์เพื่อระบุเมื่อการป้อนข้อความอัตโนมัติเสร็จสมบูรณ์
การเปลี่ยนแปลง API
- แก้ไขอินเทอร์เฟซการป้อนข้อความอัตโนมัติให้เป็นไปตามโครงสร้าง
expect
/actual
(I22dce) - เปิดตัว
CompositionLocal
ที่ใช้เพื่อแก้ไขเฉดสีของไฮไลต์การป้อนข้อความอัตโนมัติที่สำเร็จ (I32092) - เพิ่ม
Modifier.onRectChanged
API ซึ่งเป็น API ที่อนุญาตให้ผู้ใช้สมัครรับข้อมูลตำแหน่งและขนาดที่สัมพันธ์กับรูท/หน้าต่าง/หน้าจอของLayoutNode
API นี้แก้ปัญหาในกรณีการใช้งานหลายอย่างที่ตัวแก้ไขonGloballyPositioned
ที่มีอยู่ทำได้ แต่ API นี้มีค่าใช้จ่ายที่ต่ำกว่ามาก และมีสิ่งอำนวยความสะดวกในการดีบาวซ์และการควบคุมอัตราการเรียกกลับตามที่กรณีการใช้งานต้องการ (Id28c7, b/372765423, b/372757007, b/372994338) - ขยายเครื่องมือจัดการป้อนข้อความอัตโนมัติให้รวม API ของ
commit()
และcancel()
ที่ช่วยให้ผู้ใช้บันทึกข้อมูลเข้าสู่ระบบที่ป้อนใหม่ได้ (I2da00) - ขอแนะนำ
AutofillManager
อินเทอร์เฟซใหม่ที่ใช้ปรับแต่งเส้นทางการป้อนข้อความอัตโนมัติของผู้ใช้ได้ และisSemanticAutofillEnabled
ฟีเจอร์ที่ใช้เปิดใช้ฟีเจอร์ป้อนข้อความอัตโนมัติเวอร์ชันใหม่นี้ (I9d484) - เพิ่ม
Modifier.onRectChanged
API ซึ่งเป็น API ที่อนุญาตให้ผู้ใช้สมัครรับข้อมูลตำแหน่งและขนาดที่สัมพันธ์กับรูท/หน้าต่าง/หน้าจอของLayoutNode
API นี้แก้ปัญหาในกรณีการใช้งานหลายอย่างที่ตัวแก้ไขonGloballyPositioned
ที่มีอยู่ทำได้ แต่ API นี้มีค่าใช้จ่ายที่ต่ำกว่ามาก และมีสิ่งอำนวยความสะดวกในการดีบาวซ์และการควบคุมอัตราการเรียกกลับตามที่กรณีการใช้งานต้องการ (I3c8fa) - เพิ่มพร็อพเพอร์ตี้เชิงความหมายและประเภทข้อมูลเพื่อรองรับการป้อนข้อความอัตโนมัติเพิ่มเติม (I52c7d)
- ตอนนี้เมธอดทั้งหมดในเครื่องมือสร้าง
AnnotatedString
ไม่ใช่เวอร์ชันทดลองแล้ว (Ia89c8, b/261561823)
การแก้ไขข้อบกพร่อง
- ตอนนี้ View ที่ฝังใน Compose สามารถรับเหตุการณ์การหมุนได้หากมีการโฟกัส (I4d53a, b/320510084)
- แก้ไขปัญหาที่ทรัพยากรประเภทต่างๆ จะไม่อัปเดตเมื่อมีการเปลี่ยนแปลงการกำหนดค่า (Ia9b99, b/352336694)
- แก้ไขปัญหาที่ทำให้
TextField
ทำงานไม่ถูกต้องเมื่อใช้แป้นพิมพ์ภาษาญี่ปุ่น POBox ในอุปกรณ์ Sony รุ่นเก่าบางรุ่น (Ia9b99, b/373743376) - แก้ไขปัญหาเกี่ยวกับกล่องโต้ตอบที่แสดงที่ด้านล่างของหน้าจอแทนที่จะอยู่ตรงกลาง (Ia2ec, b/373093006)
- การกำหนดเป้าหมาย API 35 ขึ้นไปจะไม่บังคับให้กล่องโต้ตอบมี
decorFitsSystemWindows
ตั้งค่าเป็นเท็จอีกต่อไป (Ibc94, b/364492593) - แก้ไขข้อขัดข้องเมื่อย้ายเลเยอร์ระหว่างหน้าต่าง (เช่น กล่องโต้ตอบและเนื้อหาหลัก) (I675ba, b/330955281)
เวอร์ชัน 1.8.0-alpha04
16 ตุลาคม 2024
androidx.compose.ui:ui-*:1.8.0-alpha04
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-alpha04 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มการเรียกกลับ
DelegatableNode#onDensityChange
และDelegatableNode#onLayoutDirectionChange
เพื่ออนุญาตให้อัปเดตสถานะโหนดเมื่อมีการเปลี่ยนแปลง (I04f3e, b/340662451) - เพิ่ม
WindowInfo#containerSize
เพื่อระบุขนาดคอนเทนเนอร์เนื้อหาของหน้าต่างปัจจุบัน คุณสามารถเรียกข้อมูลนี้ได้โดยใช้LocalWindowInfo
(Idc38c, b/369334429, b/360343819) - เปิดตัวการแก้ไขสำหรับรายการที่เลื่อนได้แบบซ้อนกันซึ่งถูกนำออกจากแผนผังโหนดระหว่างการปัดที่กำลังดำเนินอยู่ ตอนนี้โหนดเหล่านี้จะยกเลิกการปัดและส่งเหตุการณ์
onPostFling
อย่างถูกต้องด้วยความเร็วที่เหลือ นอกจากนี้ เรายังจะเปิดตัวฟีเจอร์NewNestedScrollFlingDispatchingEnabled
เพื่อควบคุมลักษณะการทำงานในกรณีที่เกิดการถดถอย เราจะนำฟีเจอร์นี้ออกก่อนเปิดตัวเวอร์ชันเบต้า (I05c37, b/371168883) - เปิดตัว
PointerInputModifierNode#touchBoundsExpansion
ซึ่งใช้เพื่อขยายขอบเขตการแตะของตัวแก้ไขอินพุตตัวชี้เดียวได้ (Iccf02, b/335339283) - เพิ่ม
WindowInfo#containerSize
เพื่อระบุขนาดคอนเทนเนอร์เนื้อหาของหน้าต่างปัจจุบัน คุณสามารถเรียกข้อมูลนี้ได้โดยใช้LocalWindowInfo
(I27767, b/369334429, b/360343819) - นำ
readOnly
ออกจากTextFields
เพื่อปักหมุดเป็นเวอร์ชันพื้นฐานที่เสถียร (I3aaba) Paragraph
และParagraphIntrinsics
จะรับรายการคำอธิบายประกอบทั้งหมดที่ใช้กับAnnotatedString
โดยก่อนหน้านี้จะรับเฉพาะรายการSpanStyles
(I12f80)
การแก้ไขข้อบกพร่อง
- อัปเดตวิธีจัดการย่อหน้าใน
AnnotatedString
ก่อนหน้านี้คุณสร้างได้เฉพาะย่อหน้าที่ไม่ทับซ้อนกัน ตอนนี้AnnotatedString
อนุญาตให้ย่อหน้าที่ทับซ้อนกันอย่างสมบูรณ์ซึ่งจะผสานรวมกัน และย่อหน้าที่ซ้อนกันในกรณีที่ย่อหน้าด้านนอกจะแยกตามขอบเขตของย่อหน้าด้านใน และรูปแบบของย่อหน้าด้านในจะผสานรวมกับรูปแบบของย่อหน้าด้านนอก (Ic9554) - แก้ไขข้อขัดข้องใน
AnnotatedString
ที่มีLinkAnnotation
ที่มีความยาวเป็น 0 (89aac6)
เวอร์ชัน 1.8.0-alpha03
2 ตุลาคม 2024
androidx.compose.ui:ui-*:1.8.0-alpha03
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-alpha03 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- อัปเดต Kotlin เป็นเวอร์ชัน 1.9 (I1a14c)
- เปิดตัวบทบาทเชิงความหมายใหม่ที่เรียกว่า Carousel เพื่อจำลองลักษณะการทำงานของรายการใน Pager สำหรับบริการ a11y (Id354b, b/354109776, b/239672673)
- เปลี่ยนชื่อ
invisibleToUser()
เป็นhideFromAccessibility
โดยฟังก์ชันการทำงานจะยังคงเหมือนเดิม ดูรายละเอียดเพิ่มเติมในเอกสารประกอบ (Ib43a3)
การแก้ไขข้อบกพร่อง
- การอัปเดตเอกสารสำหรับตัวแก้ไข
SensitiveContent
(Ib0442) - แก้ไขปัญหาที่ระบบจะไม่สนใจคลิป Outline ทั่วไปบางรายการเมื่อใช้ร่วมกับเงาความสูงใน Android บางเวอร์ชัน
- แก้ไขปัญหาที่ระบบจะใช้คลิปที่ว่างเปล่าเมื่อมีการระบุคลิป Outline ทั่วไปใน Android บางเวอร์ชัน
- แก้ไขข้อยกเว้นที่เกิดขึ้นเมื่อ IME ทำงานใน View ภายนอกและใช้การดำเนินการถัดไปเพื่อเข้าสู่โฟกัสใน
ComposeView
clearFocus()
มีลักษณะการทำงานสอดคล้องกับลักษณะการทำงานของ View ใน API < 28 ซึ่งclearFocus()
อาจทำให้ระบบโฟกัส View เริ่มต้น - แก้ไขปัญหาที่การวางเกิดขึ้นในโหนดที่แยกออกมาใน
LazyList
โดยแยกการจัดการองค์ประกอบย่อยสำหรับการส่งผ่านเลย์เอาต์ที่แตกต่างกัน - แก้ไขปัญหาที่แป้นพิมพ์ซอฟต์แวร์กะพริบเมื่อโฟกัสเปลี่ยนจาก
TextField
เป็นEditText
หรือเอดิเตอร์อื่นๆ ที่อิงตามมุมมอง - ตอนนี้โหนด Nested Scroll จะส่งเหตุการณ์
onPostFling
อย่างถูกต้องหลังจากที่แยกออกแล้ว - การปรับปรุงประสิทธิภาพทั่วไป
เวอร์ชัน 1.8.0-alpha02
18 กันยายน 2024
androidx.compose.ui:ui-*:1.8.0-alpha02
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-alpha02 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
TextOverflow.StartEllipsis
และTextOverflow.MiddleEllipsis
พร้อมใช้งานแล้ว ซึ่งช่วยให้วางเครื่องหมายจุดไข่ปลาที่จุดเริ่มต้นหรือตรงกลางของบรรทัดข้อความบรรทัดเดียวได้ (I38913, b/185418980)
การแก้ไขข้อบกพร่อง
- แก้ไข Dalog
dismissOnClickoutside
(39a3d, b/364508685) - อย่าตัดเงาของเนื้อหาในกล่องโต้ตอบ (e8e2f, b/363027803)
- แก้ไขลักษณะการทำงานที่ไม่ถูกต้องเมื่อการค้นหาโฟกัสย้ายระหว่าง "เขียน" กับ "ดู" (58377, b/350534714)
การมีส่วนร่วมภายนอก
- ตอนนี้
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.8
12 กุมภาพันธ์ 2025
androidx.compose.ui:ui-*:1.7.8
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.8 มีการเปลี่ยนแปลงเหล่านี้
เวอร์ชัน 1.7.7
29 มกราคม 2025
androidx.compose.ui:ui-*:1.7.7
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.7 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไข
IndexOutOfBoundsException
เมื่อส่งAnnotatedString
ที่มีLinkAnnotation
ไปยัง Text Composable (Ic96d2) - แก้ไขปัญหาการหมดเวลาในการทดสอบในบางกรณีที่เกิดขึ้นไม่บ่อยนักเมื่อใช้
LinkAnnotation
ในAnnotatedString
(I04a03)
เวอร์ชัน 1.7.6
11 ธันวาคม 2024
androidx.compose.ui:ui-*:1.7.6
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.6 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- ก่อนหน้านี้เราเคยแสดงข้อผิดพลาดทุกครั้งที่พบเหตุการณ์สำคัญเมื่อระบบโฟกัสมีการลบล้างที่รอดำเนินการ ตอนนี้เราจะบันทึกข้อผิดพลาดแทน (I7ea0, b/346370327)
- นำคำอธิบายประกอบเวอร์ชันทดลองออกจาก
SemanticsPropertyReceiver.invisibleToUser()
แล้ว โดยจะเลิกใช้งานในเวอร์ชัน 1.8 และแทนที่ด้วยSemanticsPropertyReceiver.hideFromAccessibility()
(I448f0, b/376479686) - แก้ไขปัญหาที่ทำให้
TextField
ทำงานไม่ถูกต้องเมื่อใช้แป้นพิมพ์ภาษาญี่ปุ่น POBox ในอุปกรณ์ Sony รุ่นเก่าบางรุ่น (I94e0e, b/373743376) - แก้ไขปัญหาด้านการช่วยเหลือพิเศษที่
TalkBack
ไม่ประกาศBasicText
’s inlineContent (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 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาที่การระบุคลิป Outline ทั่วไปจะทําให้ขอบเขตคลิปว่างใน Android บางเวอร์ชัน
- แก้ไขข้อยกเว้นที่เกิดขึ้นเมื่อ IME ทำงานใน View ภายนอกและใช้การดำเนินการถัดไปเพื่อเข้าสู่โฟกัสใน
ComposeView
clearFocus()
มีลักษณะการทำงานสอดคล้องกับลักษณะการทำงานของ View ใน API < 28 ซึ่งclearFocus()
อาจทำให้ระบบโฟกัส View เริ่มต้น - แก้ไขปัญหาที่ใช้
placeOrder
ไม่ถูกต้องสำหรับการลบล้างการคาดการณ์ จึงแก้ไขกรณีขอบที่ข้ามการวางโฆษณาแบบคาดการณ์
เวอร์ชัน 1.7.2
18 กันยายน 2024
androidx.compose.ui:ui-*:1.7.2
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.2 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- ปรับปรุงประสิทธิภาพของข้อมูลโหนดการช่วยเหลือพิเศษและเหตุการณ์เชิงความหมายโดยการนำการติดตามแบบละเอียดออก (I89156, b/362530618)
ComposeView
จะไม่ขัดข้องอีกต่อไปเมื่อมีการส่งขนาดการวัดที่ใหญ่มากเป็นพิเศษ (da5db, b/347036173)- แก้ไขปัญหาโปรแกรมอ่านหน้าจอสำหรับการช่วยเหลือพิเศษที่
LiveRegion
ไม่ประกาศบนปุ่ม (f66fa7, b/348590026)
เวอร์ชัน 1.7.1
10 กันยายน 2024
- ไม่มีการเปลี่ยนแปลงอาร์ติแฟกต์ Android ระบบได้นำอาร์ติแฟกต์
-desktop
รายการออกแล้ว และเพิ่มอาร์ติแฟกต์-jvmStubs
และ-linuxx64Stubs
รายการ เป้าหมายเหล่านี้ไม่มีไว้ให้ใช้งาน แต่เป็นตัวยึดตำแหน่งเพื่อช่วยให้ Jetbrains Compose ทำงานได้
เวอร์ชัน 1.7.0
4 กันยายน 2024
androidx.compose.ui:ui-*:1.7.0
ได้รับการเผยแพร่แล้ว
การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 1.6.0
การเปลี่ยนแปลงที่สำคัญในเวอร์ชัน 1.7.0 จะกล่าวถึงในบล็อกโพสต์นี้
เวอร์ชัน 1.7.0-rc01
21 สิงหาคม 2024
androidx.compose.ui:ui-*:1.7.0-rc01
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.0-rc01 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลงที่สำคัญ
- ตอนนี้โมดูล ui:ui จะบังคับให้ต้องใช้ foundation:foundation เวอร์ชันขั้นต่ำเป็น 1.7.0-rc01 ขึ้นไป การบังคับใช้ดังกล่าวมีขึ้นเพื่อแก้ไขความไม่เข้ากันของลักษณะการทำงานระหว่าง UI กับ Foundation ในส่วนของการเปลี่ยนแปลง
NestedScrollSource
ที่เกิดขึ้นในช่วงต้นของ 1.7.0-alpha01
เวอร์ชัน 1.7.0-beta07
7 สิงหาคม 2024
androidx.compose.ui:ui-*:1.7.0-beta07
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.0-beta07 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- ตอนนี้อินพุตข้อความที่เกี่ยวข้องกับ
SemanticsNodeInteraction
ฟังก์ชันperformTextReplacement
,performTextInput
และperformTextClearance
จะแสดงข้อผิดพลาดในการยืนยันเมื่อมีการเรียกใช้ในTextFields
แบบอ่านอย่างเดียว (I4ae8f)
เวอร์ชัน 1.7.0-beta06
24 กรกฎาคม 2024
androidx.compose.ui:ui-*:1.7.0-beta06
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.0-beta06 มีการเปลี่ยนแปลงเหล่านี้
เวอร์ชัน 1.7.0-beta05
10 กรกฎาคม 2024
androidx.compose.ui:ui-*:1.7.0-beta05
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.0-beta05 มีการคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องที่การเปลี่ยนแป้นพิมพ์ซอฟต์แวร์จะทำให้
TextField
ไม่รับอินพุตจากแป้นพิมพ์ใหม่จนกว่าโฟกัสจะหายไปและกลับมาอีกครั้ง - แก้ไขปัญหาที่การพยายามคงเนื้อหาเลเยอร์จะทำให้เกิดผลข้างเคียงที่ไม่พึงประสงค์เมื่อแสดงผลด้วยเนื้อหา
SurfaceView
เวอร์ชัน 1.7.0-beta04
26 มิถุนายน 2024
androidx.compose.ui:ui-*:1.7.0-beta04
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.0-beta04 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- หลีกเลี่ยงการขัดข้องเมื่อวัดบรรทัดข้อความขนาดใหญ่มาก (เช่น 10,000 อักขระ) (8157ab)
- ปิดใช้การรองรับการแสดงผลซอฟต์แวร์สำหรับ
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
เป็นค่าisEditable
ตอนนี้พร็อพเพอร์ตี้เป็นบูลีนและระบุโดยช่องข้อความเสมอ (I8acd8) - เปลี่ยนชื่อพารามิเตอร์การเปรียบเทียบการช่วยเหลือพิเศษ (I3d440)
- API ที่อัปเดตสำหรับการจัดรูปแบบลิงก์:
TextLinkStyles
ตอนนี้เป็นส่วนหนึ่งของตัวสร้างLinkAnnotation
และเมธอดAnnotatedString.fromHtml
(I90b2b) นอกจากนี้ ยังได้นำTextDefaults
ออกจากสื่อการเรียนการสอน (I5477b) ด้วย
การแก้ไขข้อบกพร่อง
- เปลี่ยนชื่อ
LayoutCoordinates.introducesFrameOfReference
เป็นLayoutCoordinates.introducesMotionFrameOfReference
เพื่อให้สะท้อนวัตถุประสงค์ได้ดียิ่งขึ้น เปลี่ยนชื่อฟังก์ชันที่เกี่ยวข้องเพื่อคำนวณพิกัดตามธงนั้น (I3a330)
เวอร์ชัน 1.7.0-beta01
14 พฤษภาคม 2024
androidx.compose.ui:ui-*:1.7.0-beta01
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.0-beta01 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เปลี่ยนชื่อ
performCustomAccessibilityActionLabelled
เป็นperformCustomAccessibilityActionWithLabel
และperformCustomAccessibilityActionWhere
เป็นperformCustomAccessibilityActionWithLabelMatching
(I5387f) AnnotatedString.hasEqualsAnnotations
เปลี่ยนชื่อเป็นhasEqualAnnotations
แล้ว (I685c0)- อัปเดต API สำหรับรับลิงก์ที่มีธีม Material ในข้อความ โดยเฉพาะอย่างยิ่ง เราได้นำวิธีการต่างๆ ออกจาก
TextDefaults
สำหรับการสร้างLinkAnnotations
ที่มีธีมและแยกวิเคราะห์ HTML ด้วยลิงก์ที่มีธีม แต่ได้เพิ่มTextLinkStyles
คลาสที่อนุญาตให้จัดรูปแบบลิงก์เป็นพารามิเตอร์ไปยัง Composable ของข้อความแทน (I31b93)
การแก้ไขข้อบกพร่อง
- แก้ไข Use Case เพิ่มเติมเมื่อเพิ่มตัวแก้ไขอินพุตของเคอร์เซอร์แบบไดนามิกระหว่างเหตุการณ์ 63e1504
เวอร์ชัน 1.7.0-alpha08
1 พฤษภาคม 2024
androidx.compose.ui:ui-*:1.7.0-alpha08
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.0-alpha08 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มการรองรับการใช้งานรูปร่างที่เปลี่ยนแปลงได้
Shape#createOutline
จะสังเกตได้ในเลเยอร์กราฟิกแล้ว ดังนั้นการอ่านค่าสถานะภายในจะทำให้เกิดการลบล้างเมื่อสถานะเปลี่ยนแปลง ซึ่งจะช่วยให้ภาพเคลื่อนไหวของรูปร่างมีประสิทธิภาพมากขึ้น (Id1629, b/326070216) - เปลี่ยนชื่อ
isPositionedByParentWithDirectManipulation
เป็นintroducesFrameOfReference
แล้ว โปรดทราบว่าตอนนี้พร็อพเพอร์ตี้ดังกล่าวมีผลตรงกันข้าม ซึ่งหมายความว่าโดยค่าเริ่มต้นLayoutCoordinates
ส่วนใหญ่จะใช้เฟรมอ้างอิง และพร็อพเพอร์ตี้จะเป็นเท็จเมื่อวางไว้ภายใต้การจัดการโดยตรงเท่านั้น หากต้องการค้นหาตำแหน่งที่มีเฉพาะตำแหน่งที่แนะนำกรอบอ้างอิง ให้ใช้positionInLocalFrameOfReference(...)
หรือpositionInLocalLookaheadFrameOfReference
จากLookaheadScope
(Ifc5f7) LookaheadScope
API มีความเสถียรแล้ว (I21507)- เปลี่ยน Lambda การดำเนินการสำหรับ
getScrollViewportLength
ตามความคิดเห็นของสภา API (Ibc74a) - อัปเดต
GraphicsLayer
Outline API เพื่อใช้พารามิเตอร์แบบลอยแทนพารามิเตอร์แบบจำนวนเต็ม นำค่าUnsetOffset/UnsetSize IntSize
Sentinel ออกเพื่อใช้ค่าคงที่ Unspecified ที่มีอยู่แล้วในคลาสอินไลน์ Offset และ Size ที่อิงตาม Float (I2fb03, b/333863462) - เมื่อแทรกอินพุตของเมาส์ระหว่างการทดสอบ
MouseInjectionScope.click()
,MouseInjectionScope.doubleClick()
,MouseInjectionScope.tripleClick()
,MouseInjectionScope.longClick()
จะยอมรับพารามิเตอร์button: MouseButton
เพื่อให้ใช้ได้ในวงกว้างมากขึ้น ค่าเริ่มต้นคือMouseButton.Primary
สำหรับทุกวิธี (I31a23, b/190493367, b/261439695) - เปลี่ยนชื่อ
onClicked
เป็นonClick
ในLinkInteractionListener
แล้ว (Iaa35c) - เปลี่ยนชื่อ
TextInclusionStrategy.isInside
เป็นisIncluded
ทำให้Paragraph/MultiParagraph#getRangeForRect()
ประเภทการคืนค่าไม่เป็นค่าว่าง (I51f26)
การแก้ไขข้อบกพร่อง
- แก้ไขการจับภาพหน้าจอแบบยาวสำหรับคอนเทนเนอร์ที่เลื่อนได้ด้วย
reverseScrolling=true
(I7c59c)
การมีส่วนร่วมภายนอก
- เพิ่มการรองรับการดึงข้อมูลล่วงหน้าของรายการใน
LazyLists
ที่ซ้อนกัน (เช่นLazyColumn
ที่แสดงผลLazyRows
ที่ซ้อนกัน) การเปลี่ยนแปลงนี้คาดว่าจะช่วยลดเฟรมหลุดระหว่างการเลื่อนสำหรับLazyLists
เหล่านี้ การติดตั้งใช้งานเริ่มต้นคือการดึงข้อมูลล่วงหน้าสำหรับรายการที่ซ้อนกัน 2 รายการแรก แต่คุณควบคุมลักษณะการทำงานนี้ได้ด้วย APILazyLayoutPrefetchStrategy(nestedPrefetchItemCount)
และLazyListPrefetchStrategy#onNestedPrefetch
ใหม่ (I51952)
เวอร์ชัน 1.7.0-alpha07
17 เมษายน 2024
androidx.compose.ui:ui-*:1.7.0-alpha07
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.0-alpha07 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
ClickableText
มีการทำเครื่องหมายว่าเลิกใช้งานแล้ว หากต้องการเพิ่มลิงก์ไปยังข้อความ ให้สร้างAnnotatedString
ที่มีLinkAnnotation
ที่สอดคล้องกับลิงก์ แล้วส่งAnnotatedString
นี้ไปยัง Text composable (I34d4b, b/323346994)- ขอแนะนำ
ViewConfiguration.HandwritingGestureLineMargin
สำหรับท่าทางสัมผัสลายมือ รองรับท่าทางสัมผัสJoinOrSplit
สำหรับBasicTextField
(Ie6e13, b/325660505) FocusProperties.enter
และFocusProperties.exit
ไม่ใช่ฟีเจอร์ทดลองอีกต่อไปFocusDirection.Enter
และFocusDirection.Exit
ไม่ใช่ฟีเจอร์ทดลองอีกต่อไปFocusRequester.Cancel
ไม่ใช่ฟีเจอร์ทดลองอีกต่อไป (I461a1, b/261564106)- เมื่อค้นหาพิกัดเลย์เอาต์ ตอนนี้คุณสามารถใช้อาร์กิวเมนต์
excludeDirectManipulationOffset
เพื่อยกเว้นออฟเซ็ตที่ตั้งค่าโดยเลย์เอาต์หลักซึ่งวางองค์ประกอบย่อยโดยใช้Placeable.PlacementScope.withDirectManipulationPlacement
ในทำนองเดียวกัน ตอนนี้เลย์เอาต์ที่เปลี่ยนตำแหน่งขององค์ประกอบย่อยบ่อยๆ อาจวางองค์ประกอบย่อยโดยใช้withDirectManipulationPlacement
(เช่น Scroll ซึ่งมีการใช้งานโดยค่าเริ่มต้น) ซึ่งจะช่วยให้ภาพเคลื่อนไหวที่อิงตามapproachLayout
ใช้งานง่ายขึ้น เนื่องจากตอนนี้มีโอกาสที่จะแยกความแตกต่างระหว่างสิ่งที่ต้องชดเชยเพื่อสร้างภาพเคลื่อนไหวกับสิ่งที่ต้องใช้โดยตรงเมื่อตัดสินใจที่จะสร้างภาพเคลื่อนไหวในแนวทางของตน (I60ec7) - เราได้นำฟีเจอร์แฟล็กสำหรับภาพหน้าจอยาวออกแล้ว (I28648, b/329128246)
LazyColumn
จะแสดงผลส่วนหัวที่ไม่เคลื่อนที่อย่างถูกต้องในภาพหน้าจอแบบยาว (I8d239, b/329296635)NestedScroll
แหล่งที่มา Drag และ Fling จะถูกแทนที่ด้วยUserInput
และSideEffect
เพื่อรองรับคำจำกัดความที่ขยายออกไปของแหล่งที่มาเหล่านี้ ซึ่งตอนนี้รวมถึงภาพเคลื่อนไหว (Side Effect) และล้อเมาส์และคีย์บอร์ด (UserInput
) (I40579)ApproachLayoutModifierNode
และModifier.approachLayout
ตอนนี้เสถียรแล้ว โดยมีisMeasurementApproachInProgress()
และisPlacementApproachInProgress()
ใหม่มาแทนที่isMeasurementApproachComplete()
และisPlacementApproachComplete()
เก่าตามลำดับ- นำตัวแก้ไข
intermediateLayout
ที่เลิกใช้งานแล้วออก (I3e91c) - เปลี่ยนชื่อ
GraphicsLayer#buildLayer
เป็น record เพื่อให้สอดคล้องกับเมธอด begin/endRecording ของ API ที่มี Displaylist เป็นข้อมูลสำรอง เช่นRenderNode
และ Picture - อัปเดต
rememberGraphicsLayer
เพื่อใช้ประโยชน์จากrememberObserver
(I312c1, b/288494724, b/330758155) UrlAnnotation
เลิกใช้งานแล้ว โปรดใช้LinkAnnotation.Url
แทน หากใช้การจัดธีม Material ให้ใช้วัตถุTextDefaults
เพื่อสร้างคำอธิบายประกอบที่มีการจัดธีม Material (I8d180, b/323346545)- ลิงก์ข้อความมีตัวเลือกการจัดรูปแบบสถานะที่กดนอกเหนือจากการจัดรูปแบบปกติ เมาส์เหนือ และโฟกัส (I5f864, b/139312671)
- เปลี่ยนชื่อ
String.parseAsHtml
เป็นAnnotatedString.Companion.fromHtml
แล้ว (I43dcd) - เพิ่มอาร์กิวเมนต์การจัดรูปแบบ (
linkStyle
,focusedLinkStyle
,hoveredLinkStyle
) และเครื่องมือตรวจหาการโต้ตอบลิงก์ไปยังเมธอดparseAsHtml
เมื่อแยกวิเคราะห์สตริงที่ติดแท็ก HTML ด้วยแท็ก<a>
เมธอดจะสร้างLinkAnnotation.Url
สำหรับแท็กดังกล่าวแต่ละแท็ก และส่งออบเจ็กต์การจัดรูปแบบและเครื่องมือฟังการโต้ตอบลิงก์ไปยังคำอธิบายประกอบแต่ละรายการ (I7c977) - ตอนนี้
LinkAnnotation
จะรับอาร์กิวเมนต์การจัดรูปแบบตามสถานะและLinkInteractionListener
เพิ่มคำอธิบายประกอบนี้ลงในAnnotatedString
เพื่อรับไฮเปอร์ลิงก์ การส่งfocusedState
และ/หรือhoveredState
จะช่วยให้คุณกำหนดconfiguration
ภาพสำหรับลิงก์เมื่อมีการโฟกัสและ/หรือวางเมาส์เหนือลิงก์ได้ (I81ce4, b/139312671) ImeOptions.hintLocales
จะไม่ใช่ค่า 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) - ใช้การรองรับแบบทดลองสำหรับภาพหน้าจอแบบยาวในคอนเทนเนอร์เลื่อนของ Compose โดยใช้ 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
suspend เพื่อรองรับการแสดงผลเนื้อหาของบิตแมปเป็นGraphicsLayer
นี่คือการดำเนินการแสดงผลที่เร่งด้วยฮาร์ดแวร์ใน API ระดับ 22 ขึ้นไป (รวม) ซึ่งรองรับอุปกรณ์ Android ทั้งหมดกว่า 99% ใน Android API ระดับ 21 ระบบจะกลับไปใช้การแสดงผลซอฟต์แวร์ (I9e114) - เมธอดช่วยในการแปลง
RectF
ของ Android เป็นComposeRect
(I39925, b/325660505) - ตอนนี้
KeyboardOptions
พารามิเตอร์ทั้งหมดมีค่า "ไม่ได้ระบุ" เป็นค่าเริ่มต้น เพิ่มวิธีการKeyboardOptions.merge
แล้ว - เปลี่ยนชื่อ
KeyboardOptions.autoCorrect
เป็นautoCorrectEnabled
และทำให้เป็นค่าว่างได้ โดยค่าว่างจะบ่งบอกว่าไม่ได้ระบุค่า (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
อนุญาตให้แสดงเนื้อหาที่ประกอบได้ในที่อื่นๆ และมีประโยชน์ในกรณีการใช้งานภาพเคลื่อนไหวที่คาดว่าจะแสดงเนื้อหาในฉากต่างๆ ซึ่งแตกต่างจากModifier.graphicsLayer
การเปลี่ยนแปลง API
GraphicsLayer.draw(Canvas)
ไม่ใช่ API สาธารณะอีกต่อไป โปรดใช้ฟังก์ชันส่วนขยายDrawScope.drawLayer(GraphicsLayer)
แทนเพื่อวาดเลเยอร์ (I7a7c0)- แยก
restrictedConstraints()
เป็น 2 วิธี ได้แก่fitPrioritizingWidth()
และfitPrioritizingHeight()
(I6d7fd) - เปิดตัว
HardwareCanvas
สตับสำหรับการใช้งาน Android L (I1c3b5, b/288494724) - อัปเดตเฟรมเวิร์ก Compose เพื่อแสดง
GraphicsContext
CompositionLocal พร้อมกับการอัปเดต OwnerDelegateableNode
และการติดตั้งใช้งานdrawWithCache
Modifier เพื่อแสดงสิทธิ์เข้าถึงGraphicsContext
สำหรับการเข้าถึงที่กำหนดขอบเขตซึ่งจะล้างข้อมูลอินสแตนซ์GraphicsLayer
โดยอัตโนมัติเมื่อมีการยกเลิก Modifier (I64a2f, b/288494724) - เปิดตัว
InterceptPlatformTextInput
เพื่อช่วยเขียนการทดสอบที่เกี่ยวข้องกับ IME ระดับต่ำและ Use Case อื่นๆ ของ IME ระดับต่ำPlatformTextInputTestOverride
เลิกใช้งานแล้ว (I862ed, b/322680547) - เพิ่มฟังก์ชันส่วนขยาย
GraphicsLayer.setOutline(Outline)
แล้ว (Ib81f4) - เปิดตัวตัวสร้างฟังก์ชัน
GraphicsContext
เพื่อสร้าง Factory สำหรับสร้างอินสแตนซ์GraphicsLayer
(Ib98d6, b/288494724) - เปิดเผย
GraphicsLayer
API เพื่อให้ความยืดหยุ่นที่นักพัฒนาซอฟต์แวร์กำหนดในการบันทึกคำสั่งการวาดที่ใช้ในการวาดที่อื่นได้ และยังใช้เอฟเฟกต์ภาพที่แตกต่างกันกับผลลัพธ์สุดท้ายได้ด้วย (I80245, b/288494724) - ขอแนะนำ
Paragraph#getRangeForRect
ซึ่งจะแสดงผลช่วงของข้อความที่ครอบคลุมพื้นที่สี่เหลี่ยมที่กำหนด (Iee516, b/325660505) - นำการลบล้างการทดสอบของ
BasicText
ที่มีอาร์กิวเมนต์onLinkClicked
ออกแล้ว และเราจะเปิดตัว API ทดแทนสำหรับการรองรับไฮเปอร์ลิงก์ในอนาคต (I107d5)
การแก้ไขข้อบกพร่อง
- เพิ่มคำจำกัดความ API
GraphicsLayer
expect/actual เพื่อรองรับการบันทึกและเล่นซ้ำคำสั่งการวาดภาพพร้อมเอฟเฟกต์ภาพและการเปลี่ยนรูปแบบการคอมโพสิตที่ไม่บังคับ เปิดตัวอินเทอร์เฟซGraphicsContext
เพื่อรองรับทรัพยากร Dependency ของกราฟิก รวมถึงการสร้างและการจัดการอินสแตนซ์GraphicsLayer
(I4a8d6, b/288494724) - แก้ไขปัญหาการทำงานร่วมกันกับการค้นหาโฟกัส 1 มิติ ซึ่งโฟกัสจะติดอยู่ภายใน
ComposeView
ที่ฝังอยู่ระหว่างมุมมองอื่นๆ (I08fd4)
การมีส่วนร่วมภายนอก
LocalLifecycleOwner
ย้ายจาก Compose UI ไปยังlifecycle-runtime-compose
เพื่อให้ใช้ API ตัวช่วยที่อิงตาม Compose นอก Compose UI ได้ ขอขอบคุณ Jake Wharton สำหรับการมีส่วนร่วม (I6c41b, b/328263448)- แสดงพร็อพเพอร์ตี้การลอยตัวของอคติอย่างสม่ำเสมอในประเภทการจัดแนวตามอคติทั้งหมด (I69f0f, b/328088992)
เวอร์ชัน 1.7.0-alpha04
6 มีนาคม 2024
androidx.compose.ui:ui-*:1.7.0-alpha04
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.0-alpha04 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- รองรับฟีเจอร์การเขียนด้วยลายมือโดยใช้สไตลัสสำหรับ BasicTextField2 ในอุปกรณ์ที่ใช้ Android U ขึ้นไป (I002e4)
- ใน CL นี้ เราจะเพิ่ม
GetScrollViewportLength
การดำเนินการเชิงความหมายเพื่อให้เราส่งข้อมูลเกี่ยวกับคอมโพเนนต์ที่กำลังเลื่อนใน Compose ไปยังระบบ A11y ได้ CL นี้ยังใช้การใช้งานพร็อพเพอร์ตี้นี้ในรายการที่เลื่อนได้ของ Foundation ด้วย (Ic5fa2) FocusRequester.createRefs
ตอนนี้เสถียรแล้ว (I4d92c, b/261436820)- เปิดตัว
DelegatableNode.requireView()
เพื่อให้โหนดตัวแก้ไขรับView
Android ปัจจุบันได้โดยไม่ต้องอ่าน CompositionLocal (I40768) - API ใหม่
Path.reverse()
เพื่อย้อนกลับทิศทางของเส้นทาง (I36348) - เพิ่ม
hintLocales
ในKeyboardOptions
เพื่อให้TextFields
สามารถแนะนำ IME ด้วยภาษาเฉพาะเพื่อตั้งค่าภาษาที่ต้องการล่วงหน้า - เปิดเผยพร็อพเพอร์ตี้
platformLocale
จากLocale
ที่แสดงผลออบเจ็กต์แพลตฟอร์มพื้นฐาน เช่นjava.util.Locale
(I921c6)
เวอร์ชัน 1.7.0-alpha03
21 กุมภาพันธ์ 2024
androidx.compose.ui:ui-*:1.7.0-alpha03
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.0-alpha03 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- ขอแนะนำ
ContextualFlowRow
และFlowRow
/Column
ที่ได้รับการปรับปรุงด้วย MaxLines และ Overflow เรายินดีที่จะประกาศการปรับปรุงFlowRow
และFlowColumn
เวอร์ชันทดลอง ซึ่งตอนนี้รองรับ maxLines และ overflow แล้ว พร้อมกับการเปิดตัวContextualFlowRow
และContextualFlowColumn
การอัปเดตนี้ออกแบบมาเพื่อมอบคอมโพเนนต์ที่ให้ประสิทธิภาพสูงสุด โดยContextualFlow*
เหมาะสำหรับรายการจำนวนมากที่ใช้การกำหนดค่าmaxLines
ขนาดเล็กและปุ่มดูเพิ่มเติมแบบไดนามิก +N ส่วนFlowRow
และFlowColumn
เหมาะสำหรับรายการจำนวนน้อย ซึ่งมีจำนวนน้อยกว่า 100 รายการ สำคัญ: หากต้องการคงลักษณะการทำงานที่มีอยู่ไว้ในFlowRow
หรือFlowColumn
ที่รายการทั้งหมดประกอบขึ้นโดยไม่คำนึงว่ารายการนั้นจะพอดีกับแกนไขว้สูงสุดหรือไม่ ให้ตั้งค่าoverflow
เป็นFlowRowOverflow.Visible
หรือFlowColumnOverflow.Visible
ในระหว่างการเริ่มต้น ดูตัวอย่างการใช้งานฟีเจอร์ใหม่เหล่านี้ได้ที่ContextualFlowRowSample
และFlowRowSample
(Ib9135, b/293577082) - เพิ่มพร็อพเพอร์ตี้
maxTextLength
semantics ที่ควรตั้งค่าในช่องข้อความซึ่งกรองจำนวนอักขระสูงสุดที่อนุญาต (I24d9f, b/170648072) - เราเลิกใช้งาน Wrapper
Modifier.inspectable
แล้ว API นี้จะสร้างการลบล้างตัวแก้ไขมากกว่าที่จำเป็น ดังนั้นเราจึงไม่แนะนำให้ใช้ API นี้ เราขอแนะนำให้นักพัฒนาแอปใช้เมธอดinspectableProperties()
ในModifierNodeElement
หากต้องการแสดงพร็อพเพอร์ตี้ตัวแก้ไขต่อเครื่องมือ (Ib3236) - เครื่องมือสร้างใหม่สำหรับ
PopupProperties
ซึ่งช่วยให้ควบคุมฟีเจอร์WindowManager.LayoutParams
ได้อย่างเต็มที่ (Ibb33e, b/312485503) - เปิดตัว
DelegatableNode.requireLayoutCoordinates()
เพื่อเป็นวิธีรับModifier.Node
ปัจจุบันของLayoutCoordinates
โดยไม่ต้องลบล้างonPlaced
และจัดเก็บพิกัดในพร็อพเพอร์ตี้ด้วยตนเอง (Ia8657) - เปิดตัว
DelegatableNode.currentLayoutCoordinates
เพื่อเป็นวิธีรับModifier.Node
ปัจจุบันของLayoutCoordinates
โดยไม่ต้องลบล้างonPlaced
และจัดเก็บพิกัดในพร็อพเพอร์ตี้ด้วยตนเอง (Iaebaa) BasicTextField2
และ API ที่เกี่ยวข้องในแพ็กเกจandroidx.compose.foundation.text2
จะย้ายไปที่androidx.compose.foundation.text
(I9f635)- เพิ่ม
ApproachLayoutModifierNode
API ใหม่เพื่อรองรับการสร้างตรรกะแนวทางที่กำหนดเองในโหนดตัวแก้ไขที่ชัดเจน นอกจากนี้ ยังได้เพิ่มDeferredTargetAnimation
API แบบทดลองใช้ใหม่สำหรับภาพเคลื่อนไหวที่ไม่ทราบเป้าหมายเมื่อสร้างอินสแตนซ์ (I60745) Path
API ใหม่สำหรับค้นหาทิศทางของเส้นทางและดึงเส้นชั้นความสูงจากPath
(I63d04)- เพิ่ม
PathHitTest
และPath.contains(Offset)
เพื่อตรวจสอบว่าPath
มีจุดที่เฉพาะเจาะจงหรือไม่ (I3b218) - ตอนนี้
TextLayoutResult
แสดงเมธอดgetLineBaseline(lineIndex)
แล้ว ซึ่งช่วยให้อ่านบรรทัดฐานของข้อความบรรทัดใดก็ได้ นอกเหนือจากพร็อพเพอร์ตี้ความสะดวกที่มีอยู่firstBaseline
และlastBaseline
(Ide4e8, b/237428541) - เพิ่มวิธีเปรียบเทียบเฉพาะคำอธิบายประกอบของ
AnnotatedStrings
รายการ (I32659)
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาความเข้ากันได้แบบย้อนหลังกับ
SemanticsPropertyReceiver.performImeAction
และSemanticsActions.PerformImeAction
(Id0528, b/322269946)
เวอร์ชัน 1.7.0-alpha02
7 กุมภาพันธ์ 2024
androidx.compose.ui:ui-*:1.7.0-alpha02
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.0-alpha02 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- แก้ไขปัญหาความเข้ากันได้ของไบนารีกับ
SemanticsPropertyReceiver.performImeAction
แล้ว (I65865, b/322269946) PopupProperties
constructor ที่ใช้พารามิเตอร์usePlatformDefaultWidth
ไม่ใช่ฟีเจอร์ทดลองอีกต่อไป (I8f8d2)- เพิ่มการโอเวอร์โหลดของ
ComposeTestRule.waitUntil
ที่ใช้คำอธิบายสตริงของเงื่อนไขที่จะรวมไว้ในข้อความหมดเวลา (I9413e) - API ความหมายใหม่
unset()
เพื่อนำพร็อพเพอร์ตี้ความหมายที่เพิ่มในเชนตัวแก้ไขเดียวกันออก พร็อพเพอร์ตี้ความหมายใหม่isOpaque
(I8c583, b/317966058, b/246056649) - นำ
originalEventPosition
ออกจากเมธอดคัดลอกใน API สาธารณะของPointerInputChange
(I7bead)
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องด้านการช่วยเหลือพิเศษที่อนุญาตให้คลิกรายการที่ไม่ใช่แท็บและไม่ใช่ปุ่มตัวเลือกได้เมื่อเลือก (I2181c)
VelocityTracker
จะมีการแก้ไขเพื่อเพิ่มคะแนนโดยค่าเริ่มต้น คุณยังคงปิดการแก้ไขได้โดยตั้งค่าVelocityTrackerAddPointsFix
เป็น false หากพบปัญหา (Ib3877, b/269487059)- แก้ไขความไม่เข้ากันแบบย้อนหลังของไบนารีใน
TextStyle
และParagraphStyle
(I179f0, b/320819734)
การมีส่วนร่วมภายนอก
- เพิ่ม
DialogProperties
ตัวสร้างใหม่ที่ไม่มีพารามิเตอร์เฉพาะแพลตฟอร์ม (I45829) - เพิ่ม
PopupProperties
ตัวสร้างใหม่ที่ไม่มีพารามิเตอร์เฉพาะแพลตฟอร์ม (I9a038)
เวอร์ชัน 1.7.0-alpha01
24 มกราคม 2024
androidx.compose.ui:ui-*:1.7.0-alpha01
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.0-alpha01 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- ขยาย
ClipboardManager
โดยเพิ่มClipEntry
และClipMetadata
เพื่อรองรับเนื้อหาที่กำหนดเอง เช่น รูปภาพ - เพิ่ม
DeviceConfigurationOverride
API ไปยังui-test
เพื่ออนุญาตให้ลบล้างลักษณะการทำงานของเนื้อหาที่อยู่ระหว่างการทดสอบในเครื่อง เช่น เพื่อระบุขนาด ภาษา ทิศทางเลย์เอาต์ ขนาดแบบอักษร หรือธีมที่พร้อมใช้งาน
เวอร์ชัน 1.6
เวอร์ชัน 1.6.8
12 มิถุนายน 2024
androidx.compose.ui:ui-*:1.6.8
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.8 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขความไม่สอดคล้องกันในการปรับขนาดแบบอักษรเมื่อการปรับขนาดแบบอักษรน้อยกว่าตารางที่กำหนดไว้ต่ำสุด ในกรณีนี้ เราจะประมาณค่าระหว่างสเกลเชิงเส้น 1 เท่ากับตารางที่กำหนดต่ำสุด เพื่อให้ขนาดแบบอักษรเพิ่มขึ้นอย่างต่อเนื่องเมื่อสเกลเพิ่มขึ้น (Icbae3)
เวอร์ชัน 1.6.7
1 พฤษภาคม 2024
androidx.compose.ui:ui-*:1.6.7
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.7 มีการเปลี่ยนแปลงเหล่านี้
เวอร์ชัน 1.6.6
17 เมษายน 2024
androidx.compose.ui:ui-*:1.6.6
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.6 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไข
BasicTextField
ข้อขัดข้องที่เกิดขึ้นไม่บ่อยนัก
เวอร์ชัน 1.6.5
3 เมษายน 2024
androidx.compose.ui:ui-*:1.6.5
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.5 มีการเปลี่ยนแปลงเหล่านี้
เวอร์ชัน 1.6.4
20 มีนาคม 2024
androidx.compose.ui:ui-*:1.6.4
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.4 มีการเปลี่ยนแปลงเหล่านี้
เวอร์ชัน 1.6.3
6 มีนาคม 2024
androidx.compose.ui:ui-*:1.6.3
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.3 มีการคอมมิตเหล่านี้
เวอร์ชัน 1.6.2
21 กุมภาพันธ์ 2024
androidx.compose.ui:ui-*:1.6.2
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.2 มีคอมมิตเหล่านี้
เวอร์ชัน 1.6.1
7 กุมภาพันธ์ 2024
androidx.compose.ui:ui-*:1.6.1
เปิดตัวแล้ว เวอร์ชัน 1.6.1 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาความเข้ากันได้แบบย้อนหลังกับ
SemanticsPropertyReceiver.performImeAction
และSemanticsActions.PerformImeAction
(Ie0bb2, b/322269946) - ตอนนี้เลย์เอาต์จะแสดงข้อผิดพลาดขณะวัดเมื่อเลย์เอาต์ใดเลย์เอาต์หนึ่งแสดงขนาดที่ใหญ่ผิดปกติ ข้อผิดพลาดประเภทนี้มักเกิดขึ้นเมื่อการวัดใช้ข้อจํากัดสูงสุดโดยตรงโดยไม่ได้ตรวจสอบ
Constraints.Infinity
การตรวจสอบนี้จะช่วยให้นักพัฒนาซอฟต์แวร์พบปัญหาเกี่ยวกับเลย์เอาต์ที่มีขนาดไม่ถูกต้องแทนที่จะเป็นเลย์เอาต์ที่มีปัญหา (I339a9)
เวอร์ชัน 1.6.0
24 มกราคม 2024
androidx.compose.ui:ui-*:1.6.0
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.0 มีคอมมิตเหล่านี้
เวอร์ชัน 1.6.0-rc01
10 มกราคม 2024
androidx.compose.ui:ui-*:1.6.0-rc01
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.0-rc01 มีคอมมิตต่อไปนี้
การแก้ไขข้อบกพร่อง
- การใช้งานกราฟิกแบบเวกเตอร์ที่เพิ่มประสิทธิภาพเพื่อปรับปรุงประสิทธิภาพด้วยการลดการจัดองค์ประกอบใหม่เพิ่มเติม
เวอร์ชัน 1.6.0-beta03
13 ธันวาคม 2023
androidx.compose.ui:ui-*:1.6.0-beta03
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.0-beta03 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- ตอนนี้คุณสามารถ
LayoutCoordinates
ได้โดยไม่ต้องถอดโหนดออก ป้องกันไม่ให้เกิดเหตุการณ์ดังกล่าวในเครื่องมือตรวจสอบเลย์เอาต์ของ Compose (If693)
การแก้ไขข้อบกพร่อง
- ตอนนี้
PlatformImeOptions
เป็นคลาสที่เฉพาะเจาะจงแทนที่จะเป็นอินเทอร์เฟซ (If40a4) - แก้ไขการจัดองค์ประกอบใหม่ของสตรีมดาวน์สตรีมเพิ่มเติมที่เกิดจาก
LocalSoftwareKeyboardController
และLocalTextInputService
ที่ได้รับค่าใหม่ทุกครั้งที่มีการจัดองค์ประกอบใหม่ของรูท (I42190, b/310510985)
เวอร์ชัน 1.6.0-beta02
29 พฤศจิกายน 2023
androidx.compose.ui:ui-*:1.6.0-beta02
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.0-beta02 มีคอมมิตเหล่านี้
เวอร์ชัน 1.6.0-beta01
15 พฤศจิกายน 2023
androidx.compose.ui:ui-*:1.6.0-beta01
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.0-beta01 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ตอนนี้ตัวแก้ไข
DragAndDropTarget
จะรับDragAndDropTarget
ที่รับอย่างชัดเจนและมี Lambda เพื่อเลือกใช้เซสชันการลากและวาง ตอนนี้มีฟังก์ชัน Factory 2 รายการสำหรับDragAndDropModifierNode
1 เครื่องสำหรับรับการโอนและอีก 1 เครื่องสำหรับโอนข้อมูล (I69481) - อัปเดต
maximumFlingVelocity
ให้แสดงเป็น Float อัปเดตเอกสารเพื่อให้มีความชัดเจนมากขึ้นเกี่ยวกับmaximumFlingVelocity
ความสามัคคี (I8adc7) onDragAndDropStart
ในโรงงานDragAndDropModifierNode
ได้เปลี่ยนชื่อเป็นacceptDragAndDropTransfer
แล้วเพิ่มacceptsDragAndDropTransfer
ลงในตัวแก้ไขdragAndDropTarget
เพื่อยอมรับจากเซสชันการลากและวาง Lambda นี้จะแสดงผลDragAndDropTarget
ที่ใช้งานได้หากสนใจเซสชันการลากและวาง เราได้แทนที่ Lambda อื่นๆ สำหรับการประมวลผลเหตุการณ์การลากด้วย Lambda นี้ และเพิ่มDragAndDropTarget
ฟังก์ชัน Factory เพื่อรับจากเซสชันการลากและวาง (Iebf3a)นำ
DragAndDropInfo
ออกจากประเภทDragAndDropModifierNode.drag
ตอนนี้ใช้พารามิเตอร์สำหรับtransferData
, ขนาดการตกแต่ง และ Lambda การตกแต่งแบบลากDrawScope
DragAndDropTarget
มีเมธอดสำหรับเหตุการณ์การลากและวางที่เฉพาะเจาะจงแทนที่จะเป็นเมธอดแบบนามธรรมเดียวonDragAndDropEvent
ในฟังก์ชัน Factory สำหรับDragAndDropModifierNode
ได้เปลี่ยนชื่อเป็นonDragAndDropStart
เพื่อสื่อสารให้ดียิ่งขึ้นว่าDragAndDropTarget
ที่ระบุใช้ได้เฉพาะเซสชันการลากและวางที่กำหนดเท่านั้นระบบได้นำ
DragAndDropEventType
ออกแล้ว (I645b1)เปลี่ยนชื่อ
PlatformTextInputModifierNode.runTextInputSession
เป็นestablishTextInputSession
แล้ว (I03cd0)ปรับปรุงชื่อ API ของโหนดที่เดินได้เพื่อให้เข้าใจได้ง่ายขึ้น (Ia4474)
แทนที่
OriginalText
ด้วยTextSubstitution
(Ifa5a8)เปลี่ยนชื่อ
PlatformTextInputModifierNode.textInputSession
เป็นrunTextInputSession
แล้ว (Ie9c6b)ระบบจะถือว่าองค์ประกอบย่อยของ
SubcomposeLayout
(และเลย์เอาต์ที่คล้ายกัน เช่นLazyColumn
ที่อิงตามองค์ประกอบย่อยนี้) ซึ่งเก็บไว้เพื่อนำกลับมาใช้ใหม่ในอนาคตนั้นปิดใช้งานแล้ว เราได้เปิดตัวassertIsDeactivated()
test API ใหม่เพื่อทดสอบโหนดดังกล่าว ส่วน API ทดสอบอื่นๆ จะกรองโหนดที่ปิดใช้งานออกโดยค่าเริ่มต้น (I2ef84, b/187188981)นำ
FocusDirection.In
และFocusDirection.Out
ออกแล้ว ให้ใช้FocusDirection.Enter
และFocusDirection.Exit
แทน (I2f660)ตอนนี้ Material
SwipeToReveal
API (สำหรับ Card และ Chip) ใช้ API ที่อิงตามช่อง (ตามที่ Compose แนะนำ) แทนอินสแตนซ์ที่อิงตามคลาสข้อมูลเพื่อสร้างช่องเหล่านั้น นี่เป็นการเปลี่ยนแปลงที่ทำให้เกิดข้อขัดข้อง โปรดดูการสาธิตและโค้ดตัวอย่างเพื่อดูตัวอย่างวิธีใช้ API ใหม่ (Ia8943)เลิกใช้งานตัวสร้าง
FontStyle(int)
แล้ว โปรดใช้FontStyle.Normal
หรือFontStyle.Italic
แทน (I66610)เปลี่ยนชื่ออินเทอร์เฟซ
FontScalable
เป็นFontScaling
(Ie804a)
การแก้ไขข้อบกพร่อง
SoftwareKeyboardController.show()
จะไม่แสดงแป้นพิมพ์ซอฟต์แวร์อีกต่อไปหากไม่มีโปรแกรมแก้ไขข้อความที่โฟกัสอยู่ (I2165a, b/301477279)- ตอนนี้ระบบจะละเว้นเหตุการณ์กดขึ้นของคีย์ฮาร์ดแวร์สำหรับคีย์ที่ยังไม่ได้รับเหตุการณ์กดลงในมุมมองการเขียนเดียวกัน (Ib37b4, b/305518328)
- เพิ่มการรองรับโปรแกรมแสดงผลสำหรับ Sweep Gradient ใน
ArcLine
(I4d5bb) - ใช้ equals และ hashcode สำหรับ
PageSize.Fixed
(Ie3ede, b/300134276) - แก้ไขปัญหาความเข้ากันได้ของไบนารีกับการเปลี่ยนแปลง Window Inset (Iee695)
- นำเลเยอร์หลักของ Material ออกสำหรับชิป/ปุ่ม Material3 เนื่องจาก Microbenchmark แสดงให้เห็นว่าไม่มีเลเยอร์ดังกล่าวแล้วประสิทธิภาพจะดีกว่า (I55555)
TestDispatcher
s ที่ส่งเป็นeffectContext
ไปยังการทดสอบ Compose จะใช้เพื่อสร้างการทดสอบและกรอบนาฬิกา (Ia7178)
เวอร์ชัน 1.6.0-alpha08
18 ตุลาคม 2023
androidx.compose.ui:ui-*:1.6.0-alpha08
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.0-alpha08 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
Modifier.dragAndDrawSource
ได้เปลี่ยนชื่อ LambdaonDrawDragShadow
เป็นdrawDragDecoration
และDragAndDropInfo
ได้เปลี่ยนชื่อพารามิเตอร์ขนาดเป็นdragDecorationSize
(Id0e30, b/303904810)- แนะนำ
SemanticsNodeInteraction.isDisplayed()
และSemanticsNodeInteraction.isNotDisplayed()
เพื่อตรวจสอบว่าโหนดที่ตรงกันมองเห็นได้หรือไม่โดยไม่ต้องยืนยันในโหนดนั้นด้วย (I2c196, b/302100809) - เปิดตัวค่า
Unspecified
พิเศษสำหรับฟิลด์TextAlign
,TextDirection
,Hyphens
และLineBreak
ของParagraphTextStyle
เพื่อแทนที่null
เนื่องจากคลาสเหล่านี้เป็นคลาสอินไลน์ การแทนที่ค่าที่อนุญาตให้เป็น Null ด้วย Unspecified จะช่วยหลีกเลี่ยงการ Boxing ประเภทดั้งเดิมได้ เราได้อัปเดตตัวสร้าง ตัวรับ และเมธอดอื่นๆ ในTextStyle
และรูปแบบย่อหน้าเพื่อให้ยอมรับพารามิเตอร์ที่กล่าวถึงเป็นประเภทที่ไม่ใช่ Null (I4197e, b/299490814) - เพิ่ม
GoogleFont
โอเวอร์โหลดสำหรับการอ่านGoogleFont
จาก XML (If8f59) - เปลี่ยน
LoremIpsum
PreviewParameterProvider
ให้เป็นชั้นเรียนแบบเปิด (I41bf5, b/266918816, b/300116360)
การแก้ไขข้อบกพร่อง
- ตอนนี้
FontFamilyResolver
ใช้Dispatchers.Main
สำหรับโครูทีนการจัดการแคชแล้ว (Ie8dd9) AndroidViewBinding
จะนำอินสแตนซ์Fragment
ที่ขยายโดยการรวมFragmentContainerView
ไว้ในเลย์เอาต์เป็นส่วนหนึ่งของonRelease
ออกพร้อมกันโดยใช้commitNow
(แทนcommit
ที่ใช้ก่อนหน้านี้) ซึ่งจะช่วยแก้ไขปัญหาเกี่ยวกับเมธอดของ Live Edit ด้วยการแทนที่องค์ประกอบเมื่อมีการเปลี่ยนแปลง (I58fbf)
เวอร์ชัน 1.6.0-alpha07
4 ตุลาคม 2023
androidx.compose.ui:ui-*:1.6.0-alpha07
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.0-alpha07 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- เปิดตัว
PlatformTextInputMethodTestOverride
สำหรับการเขียนการทดสอบสำหรับโปรแกรมแก้ไขข้อความที่กำหนดเอง (Id159b) - เพิ่มตัวแก้ไข
dragAndDropSource
สำหรับเริ่มเซสชันการลากและวาง และตัวแก้ไขdragAndDropTarget
สำหรับรับจากเซสชันการลากและวาง (Ib7828, b/286038936) - เพิ่มคอลเล็กชัน
ColorList
และColorSet
ที่หลีกเลี่ยงการจัดสรร (I744bd) - เพิ่ม
DisableNonLinearFontScalingInCompose
Flag ชั่วคราวเพื่อปิดใช้การปรับขนาดแบบอักษรที่ไม่ใช่แบบเชิงเส้น ตั้งค่าDisableNonLinearFontScalingInCompose = true
ในการทดสอบหากคุณต้องการเวลาในการล้างข้อมูล เราจะนำฟีเจอร์นี้ออกใน Compose 1.6.0-beta01 (Ic9486)
การแก้ไขข้อบกพร่อง
- การแยกวิเคราะห์ภาพเวกเตอร์ XML ที่วาดได้ที่ได้รับการเพิ่มประสิทธิภาพ (Ibb015)
เวอร์ชัน 1.6.0-alpha06
20 กันยายน 2023
androidx.compose.ui:ui-*:1.6.0-alpha06
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.0-alpha06 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- การเพิ่มประสิทธิภาพเพิ่มเติมสำหรับไอคอน Material (I3e08d)
- เพิ่มความสามารถในการย้ายขึ้น/ลงในโครงสร้างตัวแก้ไขเพื่อค้นหาโหนดที่คล้ายกัน (I2d234)
- เพิ่มการเรียกกลับ
onRestoreFailed()
ไปยังตัวปรับแต่งfocusRestorer()
(Ie1d43) - เพิ่มคำอธิบายประกอบ androidx ลงใน Graphics API ต่างๆ เพื่อระบุ
ColorInt
,FloatRange
,IntRange
,Size
และอื่นๆ (Id65c8, b/290950582) - เพิ่ม
showSystemUi=true
ลงในคำจำกัดความของPreviewScreenSizes
(Ib61d3)
การเปลี่ยนแปลงลักษณะการทำงาน
- ตอนนี้ Compose ใช้การปรับขนาดแบบอักษรที่ไม่ใช่แบบเชิงเส้นเพื่อให้อ่านและเข้าถึงได้ง่ายขึ้น เมื่อการปรับขนาดแบบอักษร > 100% ในการตั้งค่าระบบ ข้อความขนาดเล็กจะเพิ่มขนาดตามปกติ แต่ข้อความที่มีขนาดใหญ่อยู่แล้วจะเพิ่มขนาดเพียงเล็กน้อย นอกจากนี้ ความสูงของบรรทัดที่กำหนดใน SP จะปรับโดยอัตโนมัติเพื่อให้สอดคล้องกับความสูงที่ตั้งใจไว้ที่ระดับ 100% ดูข้อมูลเพิ่มเติมได้ที่แนวทางปฏิบัติแนะนำในการปรับขนาดแบบอักษร (I11518)
เวอร์ชัน 1.6.0-alpha05
6 กันยายน 2023
androidx.compose.ui:ui-*:1.6.0-alpha05
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.0-alpha05 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เปิดใช้การจับภาพเนื้อหาใน
AndroidComposeViewAccessibilityDelegateCompat
(Ib2969) - ความเร็วในการดีดในคอมโพเนนต์ View เช่น
ScrollView
และRecyclerView
จะจำกัดไว้ที่ViewConfiguration.ScaledMaximumFlingVelocity
ตอนนี้ Compose มีmaximumFlingVelocity
เวอร์ชันของตัวเองซึ่งใช้กับDraggable
ได้แล้ว (Ibf974) - เพิ่มโครงสร้างเริ่มต้นเพื่อรองรับ API การลากและวางของแพลตฟอร์ม (If84ce)
- เพิ่ม
deviceId
ลงในRotaryScrollEvent
(Iba3bf) - อัปเดต
ui-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 ลงใน Graphics 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
จากจริงเป็นเท็จขณะโฟกัส (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)
การแก้ไขข้อบกพร่อง
- ตอนนี้การเรียกใช้ครั้งแรกของ
AndroidView
update
Callback จะเลื่อนออกไปจนกว่าจะมีการแนบ View แทนที่จะเรียกใช้เมื่อมีการใช้ Composition ที่แนะนำ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 เป็น false โดยค่าเริ่มต้นใน Compose
ตอนนี้ includeFontPadding
เป็นเท็จโดยค่าเริ่มต้น (21d806) ใน Compose
includeFontPadding
เป็นแอตทริบิวต์เดิมที่ควบคุมว่าจะรวมระยะห่างเพิ่มเติมที่ด้านบนของบรรทัดแรกและบรรทัดสุดท้ายของข้อความหรือไม่ เพื่อรองรับอักขระที่อาจขยายเหนือหรือใต้เส้นฐานของข้อความ
การอัปเดต Compose เวอร์ชันนี้จะแก้ไขวิธีแสดงข้อความทั้งหมดใน UI โดยการนำระยะขอบเพิ่มเติมที่ด้านบนของบรรทัดแรกและบรรทัดสุดท้ายของข้อความทุกรายการที่คุณแสดงออก
การเปลี่ยนแปลงควรมีน้อยที่สุด ทั้งนี้ขึ้นอยู่กับข้อกำหนด UI และเมตริกแบบอักษรที่คุณใช้ อย่างไรก็ตาม คุณอาจพบปัญหาต่างๆ เช่น - การทดสอบภาพหน้าจอที่ใช้งานไม่ได้ แก้ไข UI หากจำเป็น และสร้างรูปภาพอ้างอิงใหม่ - ข้อความไม่ตรงกันเล็กน้อย นำการเว้นวรรคเชิงลบที่กำหนดเองออก หรือเพิ่มการเว้นวรรคหากจำเป็น
คุณเลือกใช้ includeFontPadding
ได้โดยใช้ PlatformTextStyle
สำหรับข้อความแต่ละรายการ
Text(
text = myText,
style = TextStyle(
lineHeight = 2.5.em,
platformStyle = PlatformTextStyle(
includeFontPadding = true/false
)
/* … */
)
)
คุณเลือกใช้ includeFontPadding
สำหรับข้อความทั้งหมดได้โดยกำหนดค่ารูปแบบ Material โปรดทราบว่าชื่อพารามิเตอร์จะแตกต่างกันระหว่าง M2 กับ M3
val Typography = Typography(
body1 = TextStyle(
fontFamily = /* … */,
fontSize = /* … */,
platformStyle = PlatformTextStyle(
includeFontPadding = false
)
/* … */
)
)
MaterialTheme(
typography = Typography,
/* … */
)
ดูข้อมูลเพิ่มเติมเกี่ยวกับ Compose includeFontPadding
ได้ในเอกสารประกอบสำหรับนักพัฒนาซอฟต์แวร์และบล็อกโพสต์นี้
หากพบปัญหา/ข้อบกพร่องที่เกี่ยวข้องกับการเปลี่ยนแปลงนี้ ให้รายงานข้อบกพร่องโดยใช้เครื่องมือติดตามปัญหา
การเปลี่ยนแปลง API
- การสนับสนุน
InputConnection#requestCursorUpdates
(I0c69b) - เพิ่ม
FocusRequester.saveFocusedChild
และFocusRequester.restoreFocusedChild
(Ic557e, b/272302679, b/275157318) - เพิ่มประเภท
ResourceResolutionException
เพื่อห่อ Throwable ที่เกิดขึ้นเมื่อพยายามโหลดชิ้นงานบิตแมปพร้อมคำอธิบายเส้นทางชิ้นงานที่โหลดไม่สำเร็จ (I19f44, b/230166331, b/278424788) - การเพิ่มประสิทธิภาพการช่วยเหลือพิเศษเพื่อการจัดสรรประสิทธิภาพและหน่วยความจำ (Iede48)
- เพิ่มพร็อพเพอร์ตี้และการดำเนินการทางความหมายเพื่อรองรับการแปลข้อความ (I4a6bc)
- พร็อพเพอร์ตี้ใหม่ใน
IntrinsincMeasureScope
และการติดตั้งใช้งาน (เช่นMeasureScope
) เพื่อระบุว่าการวัดปัจจุบันเป็นการส่งบอลล่วงหน้าหรือไม่ (I7a812) - อัปเดต
DrawScope
API เพื่อเพิ่มความสามารถในการกำหนดเป้าหมายใหม่ในการแสดงผลไปยัง Canvas อื่นที่มีความหนาแน่น/ทิศทางเลย์เอาต์ และขนาดอื่น - อัปเดต
DrawContext
เพื่อรองรับการกำหนดค่าความหนาแน่นและทิศทางเลย์เอาต์ รวมถึงทำให้กำหนดค่า Canvas ได้ (Ie1f9b, b/225408150) - เพิ่ม
Paragraph#fillBoundingBoxes
เพื่อคำนวณกรอบล้อมรอบอักขระ (If30ee) - เพิ่มชุด
MultiPreviews
ทั่วไป (Ia5a27)
การแก้ไขข้อบกพร่อง
- เพิ่ม
FocusTargetModifierNode
อินเทอร์เฟซที่ใช้สร้างFocusTarget
ที่กำหนดเองได้ (I9790e) - เปลี่ยนชื่อพารามิเตอร์
fallback*
ในเครื่องมือสร้างTextMeasurer
เป็นdefault*
(I940a5) - เปลี่ยนชื่อ
SemanticsPropertyReceiver.performImeAction
เป็นonImeAction
และSemanticsActions.PerformImeAction
เป็นOnImeAction
(I8e841) - เพิ่ม Wheel เพื่อแยกความแตกต่างระหว่างการเลื่อนเมาส์กับการลากในการเลื่อนที่ซ้อนกัน (โดยเฉพาะใน
NestedScrollConnection
) (Ie57e4) - เพิ่ม
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
จากจริงเป็นเท็จขณะโฟกัส (I34a19, b/246909589)
เวอร์ชัน 1.5.0
9 สิงหาคม 2023
androidx.compose.ui:ui-*:1.5.0
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.5.0 มีคอมมิตเหล่านี้
เวอร์ชัน 1.5.0-rc01
26 กรกฎาคม 2023
androidx.compose.ui:ui-*:1.5.0-rc01
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.5.0-rc01 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขการขัดข้องที่เกิดขึ้นเมื่อใช้
SubcomposeLayout
ภายในmovableContentOf()
เวอร์ชัน 1.5.0-beta03
28 มิถุนายน 2023
androidx.compose.ui:ui-*:1.5.0-beta03
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.5.0-beta03 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- เพิ่มอินเทอร์เฟซ FocusTargetModifierNode ที่ใช้สร้าง FocusTarget ที่กำหนดเองได้ (Ifb1d6)
- แก้ไขปัญหาเกี่ยวกับ Dialog และ Popup composables ที่อาจส่งผลให้หน้าต่างย่อยไม่ปรับขนาดตามที่คาดไว้เมื่อ
usePlatformDefaultWidth=true
(I112ee)
เวอร์ชัน 1.5.0-beta02
7 มิถุนายน 2023
androidx.compose.ui:ui-*:1.5.0-beta02
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.5.0-beta02 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม
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) - เปลี่ยนชื่อพร็อพเพอร์ตี้ Semantics
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)
constructor ได้รับการเลื่อนขั้นเป็น API ที่เสถียร (I79c32, b/261565383)TextMeasurer
และ API ที่เกี่ยวข้องไม่ใช่เวอร์ชันทดลองอีกต่อไป (I74647, b/261581753)- เพิ่มการดำเนินการตามความหมายของ
PerformImeAction
เพื่อเรียกใช้การดำเนินการของ IME ในโหนดโปรแกรมแก้ไขข้อความ (Ic606f, b/269633506) PlatformTextInput
API ไม่ใช่เวอร์ชันทดลองสำหรับ Android อีกต่อไป (I668eb)- เปลี่ยนชื่อพารามิเตอร์ค่าสำหรับ
Enum.valueOf
(Ia9b89) - ข้อยกเว้นที่เกิดขึ้นเพิ่มเติมจาก 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)
- เพิ่มประสิทธิภาพการใช้งานหน่วยความจำของ Vector และการแสดงเฟรมแรก (I2f3c6)
- นำการจัดสรรออกเมื่อวาดเส้นและจุดด้วย Canvas (I9f535)
- เพิ่มเอกสารสำหรับ
AndroidFont.fontVariationSettings
(I7d9e2)
การมีส่วนร่วมภายนอก
- ปรับปรุงประสิทธิภาพและลดการจัดสรรใน Vector API (I906cb)
เวอร์ชัน 1.5.0-alpha04
10 พฤษภาคม 2023
androidx.compose.ui:ui-*:1.5.0-alpha04
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.5.0-alpha04 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
Modifier.Node
การปรับปรุงการมอบสิทธิ์ เพิ่มความสามารถในการมอบสิทธิ์ที่ได้รับการปรับปรุงให้กับอินสแตนซ์อื่นๆ ของModifier.Node
จากDelegatingNode
ซึ่งทำได้ด้วย APIdelegate
และundelegate
ก่อนการเปลี่ยนแปลงนี้ API ทุกรายการจากโหนดที่มอบสิทธิ์จะต้องได้รับการมอบสิทธิ์อย่างชัดแจ้งไปยังโหนดที่ได้รับมอบสิทธิ์ หลังจากการเปลี่ยนแปลงนี้ ระบบจะมอบสิทธิ์อินเทอร์เฟซของโหนดโดยนัย เว้นแต่DelegatingNode
จะลบล้างอย่างชัดเจน (67352bc)
การเปลี่ยนแปลง API
- เปิดตัว
NestedScrollModifierNode
ซึ่งเป็นNestedScroll Modifier.Node
ที่มอบสิทธิ์ให้ได้ (I69513) - เพิ่มพารามิเตอร์
onReset
และonRelease
ลงในAndroidViewBinding
ที่ใช้ร่วมกันได้ ซึ่งเป็นการจำลองAndroidView
ที่ใช้ร่วมกันได้และเปิดใช้การรองรับการใช้ View ซ้ำด้วยViewBinding
(I00b1e, b/276802519) - อัปเดต Compose Path API เพื่อรองรับการดำเนินการย้อนกลับเพื่อรองรับกรณีการใช้งานการจัดการเส้นทางบ่อยๆ ด้วยการนำกลับมาใช้ใหม่ที่เร็วขึ้น (I7b797)
- เพิ่ม
TextStyle.merge(...)
ที่เพิ่มประสิทธิภาพพร้อมรายการพารามิเตอร์ทั้งหมด (Iad234, b/246961787) - ทำให้ 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
composable (I82551, b/262140644)
เวอร์ชัน 1.5.0-alpha03
19 เมษายน 2023
androidx.compose.ui:ui-*:1.5.0-alpha03
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.5.0-alpha03 มีคอมมิตต่อไปนี้
ฟีเจอร์ใหม่
- ลักษณะการทำงานเริ่มต้นใหม่สำหรับ
SubcomposeLayout
ในLookaheadScope
:SubcomposeLayouts
ที่ไม่มีช่องแบบมีเงื่อนไข (เช่นTabRow
,Scaffold
,BoxWithConstraints
ฯลฯ) จะทำงานร่วมกับภาพเคลื่อนไหวแบบคาดการณ์ได้อย่างราบรื่น
การเปลี่ยนแปลง API
intermediateMeasurePolicy
ใหม่เริ่มต้นที่ใช้ซ้ำนโยบายการวัดผลจาก Lookahead Pass จะช่วยให้ประเภทSubcomposeLayout
ย่อยที่ไม่มีช่องแบบมีเงื่อนไข เช่นScaffold
,TabRow
และBoxWithConstraints
ทำงานร่วมกับ Lookahead ได้โดยค่าเริ่มต้น (Id84c8)- ตอนนี้ Recomposer ที่สร้างขึ้นสำหรับหน้าต่าง Android จะบล็อกการเรียกไปยัง
withFrameNanos
เท่านั้น ไม่ใช่การคอมโพสทั้งหมด เมื่อได้รับการแจ้งเตือนON_STOP
ซึ่งหมายความว่าหน้าต่างที่เชื่อมโยงกับกิจกรรมที่หยุดจะยังคงจัดองค์ประกอบใหม่สำหรับการเปลี่ยนแปลงข้อมูลต่อไป แต่ภาพเคลื่อนไหวหรือผู้เรียกอื่นๆ ของwithFrameNanos
จะถูกบล็อก (Id9e7f, b/240975572) - เปลี่ยน
motionEventSpy
เป็นเวอร์ชันเสถียร (Ic5ec4, b/261560988) - เพิ่มเมธอด
TextRange.constrain
สาธารณะ (I97912) PlatformTextStyle.includeFontPadding
ไม่ถือว่าเลิกใช้งานแล้วเพื่อกระตุ้นให้นักพัฒนาแอปใช้ API ความเข้ากันได้นี้เพื่อเปลี่ยนและทดสอบการตั้งค่าincludeFontPadding
เป็นเท็จ (I98e96, b/277703184)
เวอร์ชัน 1.5.0-alpha02
5 เมษายน 2023
androidx.compose.ui:ui-*:1.5.0-alpha02
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.5.0-alpha02 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
SubcomposeLayout
API ใหม่ที่ใช้นโยบายการวัดผลระดับกลางเพิ่มเติมสำหรับการจัดการตรรกะการวัดผล/เลย์เอาต์ระหว่างภาพเคลื่อนไหวที่อิงตามการมองไปข้างหน้า (I017d3)- ตอนนี้ PointerInput จะทำงานแบบ Lazy และใช้ Modifier.Node เพื่อให้ประสิทธิภาพดียิ่งขึ้น (อ่านเกี่ยวกับการเปลี่ยนแปลงลักษณะการทำงานเล็กน้อย) (15dab9)
- เปลี่ยน API ที่ทดลองเป็น API ที่เสถียรด้วยเหตุการณ์สำคัญ (I9c7d8, b/261566839, b/261567368)
- เปลี่ยน API ทดลองเป็น API ที่เสถียรใน
PointerInputChange
(I1b543, b/261560988, b/261565762, b/261565749) - เพิ่มวิธีสร้างอินสแตนซ์ของ
SuspendingPointerInputModifierNode
สำหรับการติดตั้งใช้งานModifier.Node
ที่ซับซ้อนมากขึ้น (Ic4933) - ตอนนี้คุณเปิด
UrlAnnotation
ในAnnotatedString
ได้แล้วผ่านบริการช่วยเหลือพิเศษ เช่นTalkBack
(If4d82, b/253292081) - เพิ่ม API เพื่อสกัดกั้นคีย์ฮาร์ดแวร์ก่อนที่จะส่งไปยังแป้นพิมพ์ซอฟต์แวร์ (I4f4c6, b/186800395)
- เพิ่ม
InsertTextAtCursor
การดำเนินการเชิงความหมายสำหรับช่องข้อความ (I11ed5) - ตอนนี้การดำเนินการทดสอบที่เกี่ยวข้องกับข้อความ (เช่น
performTextInput
) จะขอโฟกัสโดยตรงโดยใช้การดำเนินการทางความหมายแทนการคลิกที่ช่อง (I6ed05)
การแก้ไขข้อบกพร่อง
- ตอนนี้การดำเนินการทดสอบข้อความต้องเปิดใช้ช่องข้อความ (Iab328)
เวอร์ชัน 1.5.0-alpha01
22 มีนาคม 2023
androidx.compose.ui:ui-*:1.5.0-alpha01
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.5.0-alpha01 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ตอนนี้ Modifier.intermediateLayout ไม่จำเป็นต้องมี LookaheadScope ที่ชัดเจนแล้ว บล็อกการวัดใน intermediateLayout มี IntermediateMeasureScope เป็นตัวรับ ซึ่งมี CoroutineScope, LookaheadScope และ MeasureScope ที่สะดวก (Ibe2e5)
- LookaheadLayout ถูกแทนที่ด้วย LookaheadScope ซึ่งไม่ใช่ Layout อีกต่อไป ซึ่งจะช่วยให้ MeasurePolicy ของผู้ปกครองควบคุมเนื้อหาของบุตรหลานใน LookaheadScope ได้โดยตรง (Ibe2e5)
- เพิ่ม
Modifier.Node#coroutineScope
เพื่ออนุญาตให้ Modifier.Nodes เปิดใช้โครูทีน (I76ef9) - อนุญาตให้ Modifier.Nodes อ่าน CompositionLocals โดยการใช้ CompositionLocalConsumerModifierNode interface (Ib44df)
- การแพร่กระจายของคลาส @Deprecated ไปยังพร็อพเพอร์ตี้ (I882d1)
เวอร์ชัน 1.4
เวอร์ชัน 1.4.3
3 พฤษภาคม 2023
androidx.compose.ui:ui-*:1.4.3
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.4.3 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาที่
AndroidView
อาจจัดวางไม่ถูกต้องเมื่อใช้กับตัวแก้ไขบางตัว (I4dc77, b/274797771) - แก้ไขข้อบกพร่องในการค้นหาโฟกัส 2 มิติที่ส่งผลต่อ
DropDown
เมนู (b/276811828) - แก้ไขข้อบกพร่องในพร็อพเพอร์ตี้การเข้า/ออกโฟกัสที่กำหนดเองซึ่งเรียกใช้บล็อกการเข้า/ออกเฉพาะครั้งแรกที่เรียกใช้ Lambda (b/277234245)
- แก้ไขการถดถอยในระบบโฟกัสที่ทำให้เกิดข้อขัดข้องขณะอ่าน
focusProperties
(b/271324781, b/274897776)
เวอร์ชัน 1.4.2
19 เมษายน 2023
androidx.compose.ui:ui-*:1.4.2
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.4.2 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาที่
AndroidView
ไม่นำตัวแก้ไขกลับมาใช้ซ้ำอย่างถูกต้อง ซึ่งอาจส่งผลให้เกิดลักษณะการทำงานที่ไม่คาดคิดและเกิดข้อขัดข้อง (Ib67ee, b/275919849) - แก้ไขการถดถอยที่แป้นพิมพ์ไม่แสดงสำหรับช่องข้อความภายในกล่องโต้ตอบที่ไม่ได้สร้างโดย
Dialog
Composable (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 List เพื่อไม่ให้ระบบทิ้งรายการเมื่อเลื่อนออกนอกขอบเขต ตัวอย่างเช่น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
เมื่อโฟกัสandroid.widget.Spinner
ได้ (I177e5, b/236159001) - ตอนนี้คุณใช้
PlatformTextStyle(emojiSupportMatch)
เพื่อเลือกปิดใช้การประมวลผลการรองรับอีโมจิสำหรับย่อหน้าเดียวได้แล้ว (Ia7100, b/139326806) - ตอนนี้การทดสอบ UI ของ Android Compose จะเรียกใช้การส่งเลย์เอาต์สำหรับแต่ละเฟรมเมื่อดำเนินการเฟรมเพื่อให้เข้าสู่สถานะว่าง (เช่น ผ่าน
waitForIdle
) ซึ่งอาจส่งผลต่อการทดสอบที่ยืนยันในแต่ละเฟรมของภาพเคลื่อนไหวเลย์เอาต์ (I8ea08, b/222093277) - เพิ่มการทดลอง
TextMotion
ไปยังTextStyle
เพื่อกำหนดข้อความให้เป็นStatic(default)
หรือภาพเคลื่อนไหว ใช้TextMotion.Animated
หากจะปรับขนาด แปล หรือหมุนข้อความผ่านภาพเคลื่อนไหว (I24dd7)
เวอร์ชัน 1.4.0-rc01
8 มีนาคม 2023
androidx.compose.ui:ui-*:1.4.0-rc01
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.4.0-rc01 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- เพิ่มการโอเวอร์โหลดของ
AndroidView
ฟังก์ชันที่ใช้ร่วมกันได้ ซึ่งยอมรับพารามิเตอร์onReset
ซึ่งช่วยให้สามารถนำอินสแตนซ์ View กลับมาใช้ใหม่ได้เมื่อทิ้งโหนดในองค์ประกอบและนำกลับมาใช้ใหม่ในลักษณะที่เข้ากันได้ ซึ่งมีประโยชน์อย่างยิ่งสำหรับLazyRows
และLazyColumns
ของยอดดู (I3f10d, b/230099236) - เปิดตัว
PlatformTextInputAdapter
API ระดับต่ำใหม่สำหรับการสร้างการใช้งานอินพุตข้อความที่กำหนดเองซึ่งสื่อสารกับ API ของแพลตฟอร์มโดยตรง (I58df4)
การแก้ไขข้อบกพร่อง
- ตอนนี้การดำเนินการตามความหมายของ
BasicTextField
SetText
จะอัปเดตบัฟเฟอร์ข้อความโดยใช้เส้นทางโค้ดเดียวกับการอัปเดต IME และฟังก์ชันการทดสอบ (เช่นperformTextReplacement
) - ฟังก์ชันการทดสอบข้อความ
performTextClearance
,performTextReplacement
และperformTextSelection
จะใช้SemanticsActions
แล้ว (I0807d, b/269633168, b/269624358)
เวอร์ชัน 1.4.0-beta02
22 กุมภาพันธ์ 2023
androidx.compose.ui:ui-*:1.4.0-beta02
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.4.0-beta02 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- นำ
modifierElementOf()
API ออกแล้ว โปรดขยายเวลาจากModifierNodeElement
โดยตรงแทน (I2256b) - เพิ่มการเรียกกลับ
Modifier.Node.onReset()
ใหม่เพื่อให้คุณรีเซ็ตสถานะในเครื่องบางอย่างเพื่อจัดการกรณีที่Layout
จะนำกลับมาใช้ใหม่ได้อย่างเหมาะสม (เช่น เป็นรายการของLazyColumn
) แก้ไขFocusTargetModifierNode
เพื่อรีเซ็ตสถานะที่โฟกัสอย่างถูกต้อง (I65495, b/265201972) - เพิ่มพารามิเตอร์
BlendMode
ลงในเมธอดDrawScope.drawText
,Paragraph.paint
และMultiParagraph.paint
เพื่อรองรับอัลกอริทึมการผสมผสานที่แตกต่างกันเมื่อวาดข้อความบน Canvas (I57508)
การแก้ไขข้อบกพร่อง
- ปรับปรุงอัลกอริทึมลำดับการโฟกัสการช่วยเหลือพิเศษ เช่น แถบด้านบน/ด้านล่างมักจะอ่านเป็นอันดับแรก/สุดท้ายตามลำดับ (74e9c5)
เวอร์ชัน 1.4.0-beta01
8 กุมภาพันธ์ 2023
androidx.compose.ui:ui-*:1.4.0-beta01
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.4.0-beta01 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เปลี่ยนชื่อ
PinnableContainer.PinnedHandle.unpin()
เป็นrelease()
แล้ว (I4667a) - เพิ่ม
waitUntilNodeCount
,waitUntilAtLeastOneExists
,waitUntilExactlyOneExists
และwaitUntilDoesNotExist
เป็น API การทดสอบในComposeTestRule
เพื่อขยาย APIwaitUntil
ให้ยอมรับตัวจับคู่และจำนวนโหนดใดก็ได้ ดูเอกสารเพิ่มเติมได้ที่ComposeTestRule
(Ifa1b9, b/226934294) - เปลี่ยนชื่อ
Font.MaximumAsyncTimeout
เป็นFont.MaximumAsyncTimeoutMillis
(I07af5) - นำ
GoogleFont.Provider.AllFontsListUri
ออกและลิงก์ไปยังGoogleFont.Provider.AllFontsListUri
ใน ktdoc แทน (I16f29)
การแก้ไขข้อบกพร่อง
- เพิ่มเอกสารสำหรับ
AndroidFont.fontVariationSettings
(I7d9e2)
เวอร์ชัน 1.4.0-alpha05
25 มกราคม 2023
androidx.compose.ui:ui-*:1.4.0-alpha05
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.4.0-alpha05 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- เปิดตัวการโอเวอร์โหลดแบบทดลองใหม่สำหรับฟังก์ชัน
runComposeUiTest
และฟังก์ชันcreate*ComposeRule
ที่ยอมรับพารามิเตอร์CoroutineContext
ระบบจะใช้บริบทในการเรียบเรียงการทดสอบ รวมถึงการเรียกใช้LaunchedEffect
และrememberCoroutineScope()
ในการเรียบเรียง (I10614, b/265177763) - เพิ่ม API ใหม่เพื่อติดตามความเร็ว 1 มิติ (If5a82)
- ตอนนี้
FocusRequester
มีเครื่องหมายระบุว่า@Stable
(I580ee) - นำคำอธิบายประกอบเวอร์ชันทดลองออกจากตัวสร้าง
DialogProperties
ที่ใช้พารามิเตอร์usePlatformDefaultWidth
(Ic4048) - เพิ่มฟังก์ชันในการคำนวณตำแหน่งและเส้นสัมผัสที่ระยะทางบนเส้นทางด้วย
PathMeasure.getPosition()
และPathMeasure.getTangent()
(I3b47c) - นำตัวตั้งค่าสาธารณะที่เปิดเผยโดยไม่ตั้งใจออกเมื่อวันที่
PlatformParagraphStyle
(I07f47) - ประเภท/ค่า Null ของฟังก์ชันที่ซ่อนในบรรทัด/เลิกใช้งานแล้ว (I24f91)
- เพิ่ม
AnnotatedString.hasStringAnnotations
เพื่อค้นหาคำอธิบายประกอบที่มีการจัดสรรเป็น 0 (I94dfe, b/246960758) - เพิ่มการโอเวอร์โหลดใหม่สำหรับฟังก์ชัน
TextMeasurer.measure
ซึ่งรับString
เป็นข้อความ (I47b2d, b/242705342) - API
LineBreak
และHyphens
ใน 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 List เพื่อไม่ให้ระบบทิ้งรายการเมื่อเลื่อนออกนอกขอบเขต ตัวอย่างเช่น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
แสดงว่าการเรียกใช้ฟังก์ชันที่คอมโพสได้แบบอินไลน์ อย่างไรก็ตาม ค่าอาจเป็นเท็จสำหรับการเรียกฟังก์ชันที่สามารถคอมโพสแบบอินไลน์ซึ่งมาจากโมดูลที่คอมไพล์ด้วยปลั๊กอินคอมไพเลอร์ Compose เวอร์ชันที่ไม่ได้สร้างข้อมูลฟังก์ชันอินไลน์ (Idb846) - เปลี่ยน API ที่เคยอยู่ในระยะทดลองหลายรายการให้เป็น API ที่เสถียร
- ตอนนี้ Rotary Scroll Event API เสถียรแล้ว (I42ad3, b/261561229)
FontVariation
ตอนนี้ API เสถียรแล้ว (I8779f, b/241016309)- ตอนนี้ตัวสร้าง
Font()
ทั้งหมดเป็น API ที่เสถียรแล้ว (I5948b, b/261435386) DeviceFontFamilyName
พร้อมใช้งานแล้ว (I8b640, b/261435386)- ตอนนี้ตัวสร้าง
AndroidFont
ที่มีvariationSettings
เป็น API ที่เสถียรแล้ว และสามารถใช้เพื่อสร้างตัวอธิบายแบบอักษรประเภทใหม่ได้ (I5adcc, b/261565807) 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 โดยใช้กฎ Compose ระบบจะไม่ส่งต่อการดำเนินการต่อที่กลับมาทำงานอีกครั้งในระหว่างการเรียกกลับ
withFrameNanos
จนกว่าการเรียกกลับของเฟรมทั้งหมดจะทำงานเสร็จ ซึ่งจะตรงกับลักษณะการทำงานของ Compose เมื่อเรียกใช้ตามปกติ อย่างไรก็ตาม การทดสอบที่อิงตามลักษณะการทำงานแบบเดิมอาจล้มเหลว การเปลี่ยนแปลงนี้ควรมีผลกับโค้ดที่เรียกใช้withFrameNanos
หรือwithFrameMillis
โดยตรงเท่านั้น และมีตรรกะภายนอก Callback ที่ส่งไปยังฟังก์ชันเหล่านั้น ซึ่งอาจต้องย้ายไปไว้ภายใน Callback ดูตัวอย่างการเปลี่ยนแปลงการทดสอบภาพเคลื่อนไหวใน CL นี้ - เพิ่มพารามิเตอร์
onPerformTraversals: (Long) -> Unit
ที่ไม่บังคับลงในตัวสร้างTestMonotonicFrameClock
และฟังก์ชัน Factory เพื่อเรียกใช้โค้ดหลังจาก Callback ของwithFrameNanos
แต่ก่อนที่จะกลับมาใช้ Coroutine ของผู้โทร (Idb413, b/254115946, b/222093277, b/255802670) - เพิ่ม EmojiCompat ลงใน Compose (Ibf6f9, b/139326806)
- เพิ่มพารามิเตอร์วอลเปเปอร์ใหม่ลงใน
@Preview
เพื่อรองรับสีแบบเปลี่ยนอัตโนมัติ (I9f512)
การแก้ไขข้อบกพร่อง
- ตอนนี้ระบบจะส่งการแจ้งเตือนการใช้สแนปชอตหลังจากที่
Recomposer
ใช้การเปลี่ยนแปลงเสร็จแล้ว (Iad6c0, b/222093277) - เปิดตัวการเปลี่ยนแปลงใน
captureToImage
เพื่ออนุญาตให้จับภาพหน้าจอแบบหลายหน้าต่าง ซึ่งจะมีประโยชน์สำหรับการทดสอบภาพหน้าจอที่ใช้ป๊อปอัปของ Compose (I169c5)
การอัปเดตการขึ้นต่อกัน
- ตอนนี้ UI ของ Compose และ Material ของ Compose ขึ้นอยู่กับ Lifecycle 2.5.1 แล้ว (I05ab0, b/258038814)
เวอร์ชัน 1.4.0-alpha02
9 พฤศจิกายน 2022
androidx.compose.ui:ui-*:1.4.0-alpha02
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.4.0-alpha02 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- อัปเดต
GraphicsLayerScope
เพื่อแสดงขนาดปัจจุบันของgraphicsLayer
ซึ่งจะเป็นประโยชน์สำหรับการคำนวณการแปลงgraphicsLayer
เป็นฟังก์ชันของขนาดที่ประกอบได้ (If8c43,b/181387080) - เปิดตัว
CompositingStrategy
เพื่อกำหนดเวลาที่จะใช้เลเยอร์การจัดองค์ประกอบนอกหน้าจอสำหรับการแสดงผลเนื้อหาgraphicsLayer
อัตโนมัติจะรักษาลักษณะการทำงานเริ่มต้นซึ่งใช้เลเยอร์ภายในหากใช้ค่าอัลฟ่าหรือRenderEffect/Overscroll
Always จะสร้างบัฟเฟอร์นอกหน้าจอเสมอ ในขณะที่ModulateAlpha
จะหลีกเลี่ยงการใช้บัฟเฟอร์นอกหน้าจอและจะปรับคำสั่งการวาดที่บันทึกไว้แต่ละรายการภายในgraphicsLayer
แทน การใช้งานModulateAlpha
จะยังคงใช้ประโยชน์จากบัฟเฟอร์นอกหน้าจอสำหรับการใช้งานRenderEffect/Overscroll
(I25e82, b/256382834) - เพิ่ม
invalidateSubtree()
ลงในModifier.Node
เพื่ออนุญาตให้ลบล้างลำดับชั้นทั้งหมดสำหรับการจัดวางและการวาด (I4bd90) - เลื่อนเวอร์ชัน
rememberNestedScrollInteropConnection
เป็นเวอร์ชันเสถียร เปิดตัวความสามารถในการส่งมุมมองรากไปยังrememberNestedScrollInteropConnection
ซึ่งจะช่วยให้มุมมองที่กำหนดเองตอบสนองต่อข้อจำกัดในการเลื่อนได้ดียิ่งขึ้น โดยเฉพาะในมุมมองที่ไม่เป็นมาตรฐาน (เช่นModalBottomSheetDialog
) (I9e107) - เพิ่มอินเทอร์เฟซ
ObserverNode
ที่การติดตั้งใช้งานModifier.Node
สามารถใช้เพื่อรับการแจ้งเตือนเมื่อค่าที่อ่านก่อนหน้านี้มีการเปลี่ยนแปลง (I5728b, b/247716483) - เพิ่มตัวสร้างใหม่ลงใน
Paint
ซึ่งยอมรับandroid.graphics.Paint
ดั้งเดิม นอกจากนี้ ยังเพิ่มฟังก์ชันส่วนขยายtoComposePaint()
ที่แปลงออบเจ็กต์ Paint เนทีฟที่มีอยู่เป็น Compose Paint (Ica91b) - เพิ่ม
FontFamily.Resolver.resolveAsTypeface
ใหม่เพื่อใช้ใน Android (I8950b) - เพิ่ม
ToolingState
เพื่ออนุญาตให้เครื่องมือเปลี่ยนสถานะภายในของ Composable (Ie6614) - ปรับโครงสร้างเครื่องมือเพื่อรองรับภาพเคลื่อนไหวใหม่ที่เพิ่มเข้ามาได้ดียิ่งขึ้น (I8677b)
- เพิ่มพารามิเตอร์
minLines
ลงในข้อความ Material และ Material3TextField
และOutlinedTextField
ซึ่งช่วยให้ตั้งค่าความสูงขั้นต่ำของคอมโพเนนต์ในแง่ของจำนวนบรรทัดได้ (I4af1d)
เวอร์ชัน 1.4.0-alpha01
24 ตุลาคม 2022
androidx.compose.ui:ui-*:1.4.0-alpha01
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.4.0-alpha01 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- เพิ่มวิธีการใหม่
awaitEachGesture()
สำหรับเครื่องตรวจจับท่าทางสัมผัส ซึ่งทำงานคล้ายกับforEachGesture()
แต่การวนซ้ำเหนือท่าทางจะทำงานภายในAwaitPointerEventScope
ทั้งหมด ดังนั้นเหตุการณ์จึงไม่สูญหายระหว่างการวนซ้ำ - เราเลิกใช้งาน
forEachGesture()
แล้วและหันมาใช้awaitEachGesture()
แทนเนื่องจากช่วยป้องกันไม่ให้เหตุการณ์สูญหายระหว่างท่าทางสัมผัส (Iffc3f, b/251260206) - เลิกใช้งานการรีไซเคิลออบเจ็กต์การช่วยเหลือพิเศษใน androidx เราพบว่าการเปลี่ยนแปลงประสิทธิภาพนั้นเล็กน้อยมากแม้ในเวอร์ชันที่เก่าที่สุดที่รองรับ (I0a961)
- เพิ่ม
DrawStyle
เป็นแอตทริบิวต์เวอร์ชันทดลองในTextStyle
และSpanStyle
เพื่อเปิดใช้การวาดข้อความที่มีเส้นขอบ (If24b8, b/155421273) - ตอนนี้
AnnotatedString.Builder
ได้ติดตั้งใช้งานkotlin.text.Appendable
แล้ว (I1a061, b/231030444) AnnotatedString.Builder
มีเมธอดappend(AnnotatedString, start: Int, end: Int)
สำหรับผนวกสตริงย่อยของAnnotatedString
และรูปแบบที่ตัดกันแล้ว- เพิ่มพารามิเตอร์
DrawStyle
ลงในฟังก์ชันการระบายสีParagraph
และMultiParagraph
ซึ่งช่วยให้วาดข้อความที่มีเส้นขอบได้ (Ic8102, b/155421273)
การมีส่วนร่วมภายนอก
- ขอขอบคุณสำหรับ
vighnesh
การเพิ่มอุปกรณ์ทีวีลงในการแสดงตัวอย่าง (Ie15cd)
เวอร์ชัน 1.3
เวอร์ชัน 1.3.3
11 มกราคม 2023
androidx.compose.ui:ui-*:1.3.3
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.3.3 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขข้อขัดข้องที่เกิดขึ้นใน Android 9 บางครั้งเมื่อกิจกรรมบันทึกสถานะของมุมมองการเขียน (I0b755, b/260322832)
เวอร์ชัน 1.3.2
7 ธันวาคม 2022
androidx.compose.ui:ui-*:1.3.2
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.3.2 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- อัปเดตให้ใช้ Profobuf 3.21.8 ซึ่งหลีกเลี่ยงการแจ้งเตือนความปลอดภัยใน
protobuf-javalite:3.19.4
(CVE-2022-3171) (b/255545055)
เวอร์ชัน 1.3.1
9 พฤศจิกายน 2022
androidx.compose.ui:ui-*:1.3.1
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.3.1 มีคอมมิตเหล่านี้
เวอร์ชัน 1.3.0
24 ตุลาคม 2022
androidx.compose.ui:ui-*:1.3.0
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.3.0 มีคอมมิตเหล่านี้
การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 1.2.0
- ชุด API ทดลองใหม่
LookaheadLayout
(เปิดใช้ลักษณะการทำงานของภาพเคลื่อนไหวที่ก่อนหน้านี้เป็นไปไม่ได้) - ชุด API ทดลองใหม่
Modifier.Node
(ทางเลือกที่มีประสิทธิภาพสูงกว่าModifier.composed
) - ปรับปรุงการรองรับการแทรกหน้าต่าง
- รองรับการโฟกัสสำหรับ D-Pad และแป้นพิมพ์ฮาร์ดแวร์ใน LazyList
- ลดระดับความสูงสูงสุดที่รองรับในกล่องโต้ตอบและป๊อปอัปเป็น 8dp (การเปลี่ยนแปลงที่ทำให้เกิดการหยุดทำงานสำหรับระบบการออกแบบที่กำหนดเองบางระบบ - เหตุผลในหมายเหตุประจำรุ่นเบต้า 01)
- การปรับปรุง API เล็กน้อยที่ไม่ทำให้เกิดการหยุดทำงานหลายรายการ
- แก้ไขข้อบกพร่องและปรับปรุงประสิทธิภาพหลายรายการ
เวอร์ชัน 1.3.0-rc01
5 ตุลาคม 2022
androidx.compose.ui:ui-*:1.3.0-rc01
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.3.0-rc01 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- เพิ่ม API ขีดกลางทดลองใหม่เพื่อรองรับการใส่ขีดกลางอัตโนมัติในข้อความ (Iaa869)
การแก้ไขข้อบกพร่อง
DeviceFontFamilyName
จะไม่กำหนดค่าwght
และการตั้งค่ารูปแบบital
โดยค่าเริ่มต้น แต่จะใช้การตั้งค่าแพลตฟอร์มสำหรับTypeface
ที่โหลดแทน (Ia7a6d, b/246989332)- แก้ไข
LazyColumn
หน่วยความจำรั่ว -onModifierLocalsUpdated
ไม่ได้รับการเรียกใช้ด้วยค่าเริ่มต้นเมื่อมีการนำตัวแก้ไขกลับมาใช้ใหม่ (b/230168389)
เวอร์ชัน 1.3.0-beta03
21 กันยายน 2022
androidx.compose.ui:ui-*:1.3.0-beta03
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.3.0-beta03 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มตัวเลือกเพื่อปรับแต่งการขึ้นบรรทัดใหม่ในข้อความ (I86907)
- เปลี่ยนอาร์กิวเมนต์
size:IntSize
เป็นconstraints: Constraints
ในเมธอดTextMeasurer.measure
เพื่อรองรับข้อจำกัดความกว้างขั้นต่ำ (I37530, b/242707525)
การแก้ไขข้อบกพร่อง
- ตอนนี้
BackHandler
API ของ AndroidX Activity ทำงานภายใน ComposableDialog
ได้แล้ว (I35342)
เวอร์ชัน 1.3.0-beta02
7 กันยายน 2022
androidx.compose.ui:ui-*:1.3.0-beta02
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.3.0-beta02 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มการโอเวอร์โหลดเวอร์ชันทดลองสำหรับเลย์เอาต์ซึ่งยอมรับรายการแลมบ์ดาเนื้อหาที่ประกอบได้หลายรายการ ซึ่งช่วยให้จัดการกับเมตริกที่วัดได้ซึ่งใส่ไว้ในแลมบ์ดาเนื้อหาต่างๆ ได้แตกต่างกัน (Ic1b4e)
การเปลี่ยนแปลง API การโฟกัสเวอร์ชันทดลอง:
- เราเลิกใช้งาน
FocusDirection.In
และFocusDirection.Out
แล้ว และแทนที่ด้วยFocusDirection.Enter
และFocusDirection.Exit
(Ia4262, b/183746982) - เพิ่มพร็อพเพอร์ตี้โฟกัสใหม่ 2 รายการ ได้แก่ enter และ exit เพื่อระบุลักษณะการทำงานที่กำหนดเองสำหรับ
FocusManager.moveFocus(Enter)
และFocusManager.moveFocus(Exit)
(I5f3f9, b/183746982) - ตอนนี้คุณใช้
FocusRequester.Cancel
เพื่อยกเลิกการย้ายโฟกัสได้แล้วFocusRequester.Cancel
สามารถใช้ในพร็อพเพอร์ตี้โฟกัสต่อไปนี้ได้ ได้แก่ up, down, left, right, next, previous, start, end, enter และ exit (Ib300f)
เวอร์ชัน 1.3.0-beta01
24 สิงหาคม 2022
androidx.compose.ui:ui-*:1.3.0-beta01
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.3.0-beta01 มีคอมมิตเหล่านี้
การปรับโครงสร้างโหนดตัวแก้ไข
เราได้ปรับโครงสร้างเลเยอร์ที่จัดการอินสแตนซ์ Modifier/Modifier.Element
และประสานงานลักษณะการทำงานของอินสแตนซ์เหล่านั้นใน LayoutNodes
ใหม่ การเปลี่ยนแปลงนี้เป็นการปรับโครงสร้างใหม่ซึ่งไม่มีผลต่อ API สาธารณะของตัวแก้ไขจำนวนมากใน Compose และถือเป็นการเปลี่ยนแปลงเฉพาะการใช้งานเท่านั้น อย่างไรก็ตาม การเปลี่ยนแปลงนี้มีความสำคัญด้วยเหตุผลหลายประการ (Ie4313)
สรุปการเปลี่ยนแปลง
Modifier.Node
API ที่ทดลองใช้ซึ่งเพิ่มเข้ามาจะมีการดึงข้อมูลที่ช่วยให้สามารถรักษาสถานะในอินสแตนซ์ที่จะคงอยู่ตามวงจรของโหนดเลย์เอาต์ และจะได้รับการจัดสรรต่อโหนดเลย์เอาต์และต่อการใช้งาน Modifier.Element
ที่เกี่ยวข้องซึ่งสร้างขึ้น
โดยรวมแล้ว การแยกส่วนนี้เป็นกลไกทางเลือกในการสร้างตัวแก้ไขแบบมีสถานะโดยไม่ต้องอาศัยกลไกของ Modifier.composed
API
ความเสี่ยง
การเปลี่ยนแปลงนี้เข้ากันได้กับรุ่นก่อนหน้าอย่างเคร่งครัด และมีจุดประสงค์เพื่อให้เข้ากันได้แบบย้อนหลังในแง่ของลักษณะการทำงานที่สังเกตได้มากที่สุดเท่าที่จะเป็นไปได้และสมเหตุสมผล อย่างไรก็ตาม มีระบบย่อยบางส่วนของ Compose ที่การปรับโครงสร้างโค้ดนี้ไม่ได้แตะต้อง และมีแนวโน้มที่ลักษณะการทำงานจะเปลี่ยนแปลงไปในลักษณะที่การทดสอบของเราไม่ได้ครอบคลุม และยังไม่พบและแก้ไข
โปรดอัปเกรดเป็นรุ่นนี้ด้วยความระมัดระวัง หากเชื่อว่าการเปลี่ยนแปลงนี้ทำให้เกิดปัญหา โปรดแจ้งให้เราทราบ
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
ระดับความสูงสูงสุดที่รองรับสำหรับกล่องโต้ตอบและป๊อปอัปของ Compose ลดลงจาก 30dp เป็น 8dp การเปลี่ยนแปลงนี้ส่งผลต่อทั้งกล่องโต้ตอบและป๊อปอัปที่กำหนดเองของ Material และ UI การเปลี่ยนแปลงนี้มีขึ้นเพื่อลดข้อบกพร่องด้านการช่วยเหลือพิเศษใน Android เวอร์ชันต่ำกว่า S และเพื่อให้มั่นใจว่าบริการช่วยเหลือพิเศษภายในหน้าต่างเหล่านั้นจะโต้ตอบกับเนื้อหาภายในกล่องโต้ตอบหรือป๊อปอัปได้
การเปลี่ยนแปลงนี้จะส่งผลต่อคุณก็ต่อเมื่อคุณสร้างการติดตั้งใช้งานกล่องโต้ตอบหรือป๊อปอัปที่กำหนดเองโดยตั้งค่าระดับการยกระดับสูงกว่า 8dp ลองลดระดับความสูงของกล่องโต้ตอบหรือป๊อปอัป หากต้องการเลือกไม่ใช้ลักษณะการทำงานใหม่นี้ ให้พิจารณา Fork กล่องโต้ตอบหรือป๊อปอัปของคุณเองโดยตั้งค่าการยกระดับที่ต้องการ เราไม่แนะนำให้ทำเช่นนี้ เนื่องจากอาจส่งผลเสียต่อการช่วยเหลือพิเศษ และนักพัฒนาแอปต้องตรวจสอบว่าส่วนล่างของกล่องโต้ตอบหรือป๊อปอัปสามารถโต้ตอบได้และบริการการช่วยเหลือพิเศษอ่านได้
การเปลี่ยนแปลง 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
constructor เป็นแบบสาธารณะแล้ว (ทดลอง) (I4bbbe, b/235876330) - ตอนนี้ย่อหน้าเป็น expect|actual และกำหนดไว้สำหรับ Android และเดสก์ท็อปแล้ว (Id387e, b/239962983)
- Interface Paragraph เปลี่ยนเป็น Interface Paragarph ที่ปิดผนึกแล้ว ไม่มี Use Case สำหรับการสร้างคลาสย่อยของย่อหน้า และเราขอแนะนำให้ติดต่อเราหากการเปลี่ยนแปลงนี้ส่งผลกระทบต่อคุณ (If5247, b/239962983)
- นำคำอธิบายประกอบเวอร์ชันทดลองออกจาก
PlatformTextStyle
และLineHeightStyle
แล้ว (I64bef) - เลิกใช้งาน
TextInputService.show|hideSoftwareKeyboard
โปรดใช้SoftwareKeyboardController
ในโค้ดแอปและTextInputSession
ในโค้ดการจัดการ IME แทน (I14e4c, b/183448615) - เพิ่ม API ใหม่สำหรับประเภทภาพเคลื่อนไหวที่มีอยู่ (I26179)
การแก้ไขข้อบกพร่อง
- เพิ่ม
@RequiresPermission
ลงใน API ที่ต้องให้สิทธิ์POST_NOTIFICATIONS
ใน SDK 33 ขึ้นไป (Ie542e, b/238790278)
เวอร์ชัน 1.3.0-alpha02
27 กรกฎาคม 2022
androidx.compose.ui:ui-*:1.3.0-alpha02
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.3.0-alpha02 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มพร็อพเพอร์ตี้ใหม่
PointerInputChange#pressure
เพื่อดึงข้อมูลแรงดัน (I45a5e, b/205164819) - เพิ่ม
rememberTextMeasurer
เพื่อสร้างและจดจำอินสแตนซ์TextMeasurer
ในการเขียนได้ง่ายๆ (I8d66e) - ตอนนี้
Rect
,RoundRect
และMutableRect
รองรับไวยากรณ์in
ของ Kotlin สำหรับการเรียกฟังก์ชันcontains
แล้ว (Ie42b0, b/238642990) - นำฟังก์ชันที่ไม่จำเป็นออกจาก
KeyInjectionScope
เนื่องจากสามารถใช้ส่วนที่ง่ายกว่าของ API ได้อย่างง่ายดาย ฟังก์ชันที่ถูกนำออก ได้แก่pressKeys
,keysDown
และkeysUp
(I81d77) - ปรับโครงสร้างชื่อค่าคงที่และพารามิเตอร์ใน
KeyInjectionScope
เพื่อรวมคำต่อท้าย "Millis" ในกรณีที่หน่วยของค่าคงที่และพารามิเตอร์ดังกล่าวเป็นมิลลิวินาที (Iabef5) - เพิ่ม
toStringForLog()
วิธีไปยังEditCommand
เพื่อช่วยแก้ปัญหาเกี่ยวกับการแก้ไขข้อความ (I53354, b/228862731) - เพิ่มฟังก์ชันส่วนขยาย
drawText
ในDrawScope
เพื่อให้มีวิธีวาดข้อความหลายรูปแบบใน Composable และตัวแก้ไขที่ทำงานในDrawScope
เช่นCanvas
และdrawBehind
(I16a62, b/190787898) - เปิดตัว API ทดลองใหม่ที่ชื่อ
TextMeasurer
ซึ่งช่วยให้คำนวณเลย์เอาต์ข้อความที่กำหนดเองได้ ซึ่งจะสร้างผลลัพธ์ที่เหมือนกับBasicText
โดยไม่ขึ้นอยู่กับรันไทม์ของ Compose (I17101) - เพิ่ม
mapTree
ไปยังSlotTree.kt
ซึ่งจะช่วยให้เครื่องมือตรวจสอบSlotTree
ได้โดยไม่ต้องทำสำเนาในหน่วยความจำก่อนเหมือนกับ asTree สำหรับเครื่องมือตรวจสอบเลย์เอาต์ การดำเนินการนี้จะช่วยปรับปรุงประสิทธิภาพได้ประมาณ 10 เท่า (I5e113) - เปลี่ยนการแสดงตัวอย่าง Compose ให้จัดเก็บไว้ในไฟล์เอาต์พุตไบนารี เพื่อให้นักพัฒนาแอปเขียนและนำ
MultiPreview
คำอธิบายประกอบจากไลบรารีกลับมาใช้ใหม่ได้ (I85699, b/233511976)
การแก้ไขข้อบกพร่อง
- เมื่อเพิ่มเหตุการณ์
InputEventChange
ลงในเครื่องมือติดตามVelocity
เราจะพิจารณาเดลต้าแทนตำแหน่ง ซึ่งจะช่วยให้มั่นใจได้ว่าระบบจะคำนวณความเร็วอย่างถูกต้องในทุกกรณี แม้ว่าองค์ประกอบเป้าหมายจะเคลื่อนที่ (Icea9d, b/216582726, b/223440806, b/227709803) - แก้ไข NPE ที่เกิดจาก
AnnotatedString.toUpperCase
เมื่อมีคำอธิบายประกอบ (I0aca2, b/210899140)
เวอร์ชัน 1.3.0-alpha01
29 มิถุนายน 2022
androidx.compose.ui:ui-*:1.3.0-alpha01
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.3.0-alpha01 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
LookaheadLayout
ใหม่ที่รองรับการส่งผ่านการมองไปข้างหน้าก่อนการวัด/เลย์เอาต์จริง ซึ่งจะช่วยให้คำนวณเลย์เอาต์ล่วงหน้าได้เมื่อมีการเปลี่ยนแปลง ขณะเดียวกันก็อนุญาตให้การวัด/เลย์เอาต์หลังการมองไปข้างหน้าใช้ขนาด/ตำแหน่งที่คำนวณไว้ล่วงหน้าเพื่อเคลื่อนไหวขนาดและตำแหน่งไปยังเป้าหมายSubcomposeLayouts
ยังไม่รองรับ แต่จะรองรับในรุ่นที่จะเปิดตัวเร็วๆ นี้ (I477f5)- เพิ่มพารามิเตอร์อัลฟ่าที่ไม่บังคับลงในลักษณะพู่กันของ
TextStyle
และSpanStyle
เพื่อแก้ไขความทึบแสงของText
ทั้งหมด (Ic2fac, b/234117635) - เปิดตัว
UrlAnnotation
ประเภทคำอธิบายประกอบและเมธอดที่เกี่ยวข้องเพื่อรองรับTalkBack
การรองรับลิงก์ในAnnotatedString
(I1c754, b/231495122) - ย้ายฟังก์ชันการทำงานของยูทิลิตีไปยังรันไทม์ (I4f729)
การแก้ไขข้อบกพร่อง
TextLayoutResult.getLineForOffset
ไม่แสดงข้อผิดพลาด (Idc5d6, b/235876324)
การมีส่วนร่วมภายนอก
- เพิ่ม API ใหม่
WindowInfo.keyboardModifiers
เพื่อสังเกตสถานะภายในฟังก์ชันที่ประกอบได้หรือผ่าน snapshotFlow (Icdb8a)
เวอร์ชัน 1.2
เวอร์ชัน 1.2.1
10 สิงหาคม 2022
androidx.compose.ui:ui-*:1.2.1
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.2.1 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไข NullPointerException ในเครื่องมือตรวจสอบ (b/237987764)
- แก้ไขข้อยกเว้นการแคสต์ชั้นเรียนระหว่างการจดจำในเครื่องมือตรวจสอบ (b/235526153)
เวอร์ชัน 1.2.0
27 กรกฎาคม 2022
androidx.compose.ui:ui-*:1.2.0
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.2.0 มีคอมมิตเหล่านี้
การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 1.1.0
การปรับปรุงการย้ายโฟกัส
- ตอนนี้การเลื่อนรายการแบบ Lazy ที่ขับเคลื่อนด้วยโฟกัสใช้งานได้แล้วโดยใช้
BeyondBoundsLayout
Core API ใหม่ - API การปรับแต่งลักษณะการทำงานใหม่ใน
FocusOrder
และFocusProperties
- ปรับปรุงลักษณะการทำงานเมื่อใช้แป้นพิมพ์จริงหรือรีโมตทีวี
- ตอนนี้การเลื่อนรายการแบบ Lazy ที่ขับเคลื่อนด้วยโฟกัสใช้งานได้แล้วโดยใช้
API ใหม่สำหรับ
- ส่วนที่เว้นไว้ในหน้าต่าง
- Primitive หลักสำหรับภาพเคลื่อนไหวที่ขับเคลื่อนด้วยท่าทางสัมผัส ภาพเคลื่อนไหวแบบวนซ้ำ และภาพเคลื่อนไหวของเลย์เอาต์
GraphicsLayer
รวมถึงความสามารถของRenderEffect
แก้ไขข้อบกพร่องและปรับปรุงประสิทธิภาพหลายรายการ
เวอร์ชัน 1.2.0-rc03
29 มิถุนายน 2022
androidx.compose.ui:ui-*:1.2.0-rc03
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.2.0-rc03 มีคอมมิตเหล่านี้
- ไม่มีการเปลี่ยนแปลงตั้งแต่เวอร์ชัน 1.2.0-rc02
เวอร์ชัน 1.2.0-rc02
22 มิถุนายน 2022
androidx.compose.ui:ui-*:1.2.0-rc02
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.2.0-rc02 มีคอมมิตเหล่านี้
เวอร์ชัน 1.2.0-rc01
15 มิถุนายน 2022
androidx.compose.ui:ui-*:1.2.0-rc01
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.2.0-rc01 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ตอนนี้อินเทอร์เฟซในไลบรารี Compose สร้างขึ้นโดยใช้เมธอดอินเทอร์เฟซเริ่มต้นของ jdk8 (I5bcf1)
- เพิ่มฟังก์ชันลำดับที่สูงกว่าลงใน
KeyInjectionScope
สำหรับการแทรกการกดแป้นขณะที่กดแป้นอื่นค้างไว้หรือเปิด/ปิด ฟังก์ชันเหล่านี้ ได้แก่withKeysDown
,withKeysToggled
เป็นต้น นอกจากนี้ ยังเพิ่มพร็อพเพอร์ตี้สำหรับตรวจสอบว่ากดปุ่ม Meta ที่เฉพาะเจาะจงหรือไม่ เช่นisCtrlDown
เพื่อตรวจสอบว่ากดปุ่มควบคุมปุ่มใดปุ่มหนึ่งหรือไม่ โปรดดูเอกสารประกอบเกี่ยวกับแต่ละฟังก์ชันในKeyInjectionScope
(I9f6cd, b/229831515) - เราได้เปิดตัว
OverscrollEffect
เวอร์ชันทดลองเพื่อให้เอฟเฟกต์การเลื่อนเกินแบบกำหนดเองทำงานได้ควบคู่ไปกับModifier.scrollable
ที่ยอมรับเอฟเฟกต์ดังกล่าว LocalOverScrollConfiguration
เวอร์ชันทดลองได้ย้ายจากfoundation.gesture
ไปยังแพ็กเกจพื้นฐานและเปลี่ยนชื่อเป็นLocalOverscrollConfiguration
(If19fb, b/204650733)- เปลี่ยนชื่อ
runComposeUiTestWithoutActivity {}
เป็นrunEmptyComposeUiTest {}
เพื่อให้สอดคล้องกับcreateEmptyComposeRule()
(I6fed7)
เวอร์ชัน 1.2.0-beta03
1 มิถุนายน 2022
androidx.compose.ui:ui-*:1.2.0-beta03
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.2.0-beta03 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม
pressKeyTimes
รวมถึงisCapsLockOn
และเพื่อนๆ ลงในKeyInjectionScope
แล้ว นอกจากนี้ ตอนนี้ API ยังรองรับรูปแบบการแทรกที่รวมเมาส์และแป้นพิมพ์ เช่น การคลิกปุ่มเมาส์ขณะกดปุ่ม Meta ค้างไว้ (I4c8da, b/229831515) - เพิ่มการรองรับการแทรกเหตุการณ์สำคัญในเวอร์ชันทดลอง ใช้
performKeyInput
เพื่อส่งเหตุการณ์สำคัญ หรือส่งผ่านพร็อพเพอร์ตี้key
ของMultiModalInjectionScope
ระหว่างท่าทางสัมผัสการป้อนข้อมูลหลายรูปแบบด้วยperformMultiModalInput
ดูเอกสารประกอบของ API ได้ที่KeyInjectionScope
(Ic5000, b/229831515) - เพิ่ม
GoogleFont.Provider.AllFontsListUri
ใหม่สำหรับการดึงแหล่งที่มาของอินเทอร์เน็ตที่เชื่อถือได้ของ Google Fonts ที่ Android รองรับ - ปรับปรุงข้อความแสดงข้อผิดพลาดที่ส่งต่ออีกครั้งเมื่อ GoogleFonts โหลดใน Compose ไม่สำเร็จ (I0416c)
การแก้ไขข้อบกพร่อง
- เมื่อเพิ่มเหตุการณ์
InputEventChange
ลงในเครื่องมือติดตามความเร็ว เราจะพิจารณาเดลต้าแทนตำแหน่ง ซึ่งจะช่วยให้มั่นใจได้ว่าระบบจะคำนวณความเร็วอย่างถูกต้องในทุกกรณี แม้ว่าองค์ประกอบเป้าหมายจะเคลื่อนที่ (I51ec3, b/216582726, b/223440806, b/227709803) - ตอนนี้ระบบจะใช้การตั้งค่า
Show Layout Bounds
กับ Composable ทันทีหลังจากสลับจากแผงการตั้งค่าด่วน โดยไม่ต้องออกจากกิจกรรมแล้วกลับเข้าไปใหม่ (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
ทั้งหมดกำหนดเป้าหมายไปยังตัวใช้ Compose UI ฟังก์ชันที่ต้องกำหนดเป้าหมายไปยังแอปพลิเคชันอื่นต้องระบุคำอธิบายประกอบเครื่องหมายเป้าหมายอย่างชัดเจนสำหรับแอปพลิเคชันที่ต้องการ (I40804) เปิดตัว API การทดสอบใหม่ในเวอร์ชันทดลองที่ไม่ขึ้นกับแพลตฟอร์ม
interface ComposeUiTest
และfun runComposeUiTest(block: ComposeUiTest.() -> Unit)
ซึ่งใช้เพื่อเรียกใช้การทดสอบ UI ของ Compose ได้ โดยไม่ต้องมีTestRule
หากต้องการเรียกใช้การทดสอบโดยไม่มีComposeTestRule
ให้ส่งการทดสอบเป็น Lambda ไปยังrunComposeUiTest
และใช้วิธีการและสมาชิกในขอบเขตตัวรับComposeUiTest
ซึ่งเป็นรายการเดียวกันกับในComposeContentTestRule
ระบบจะเพิ่ม
interface AndroidComposeUiTest
และfun runAndroidComposeUiTest(block: AndroidComposeUiTest.() -> Unit)
เฉพาะของ Android เพื่อให้สิทธิ์เข้าถึง Activity พื้นฐาน ซึ่งคล้ายกับAndroidComposeTestRule
หากต้องการควบคุมได้มากยิ่งขึ้น คุณสามารถสร้างอินสแตนซ์ของclass AndroidComposeUiTestEnvironment
เองได้การติดตั้งใช้งานบนเดสก์ท็อปคือ
class DesktopComposeUiTest
แต่ขณะนี้ยังไม่มีฟังก์ชันการเรียกใช้เฉพาะเดสก์ท็อปการย้ายข้อมูลการทดสอบจาก
ComposeTestRule
ไปยังComposeUiTest
สามารถทำได้ ดังนี้ (ตัวอย่าง Android) จาก:@RunWith(AndroidJUnit4::class) class MyTest { @get:Rule val rule = createComposeRule() @Test fun test() { rule.setContent { Text("Hello Compose!") } rule.onNodeWithText("Hello Compose!").assertExists() } }
โดยทำดังนี้
@RunWith(AndroidJUnit4::class) class MyTest { @Test @OptIn(ExperimentalTestApi::class) fun test() = runComposeUiTest { setContent { Text("Hello Compose!") } onNodeWithText("Hello Compose!").assertExists() } }
ในตอนนี้
ComposeContentTestRule
และComposeTestRule
ยังไม่ได้ขยายจากComposeUiTest
ซึ่งหมายความว่ายังเรียกใช้ฟังก์ชันส่วนขยายในComposeUiTest
บนอินเทอร์เฟซTestRule
ไม่ได้ เมื่อComposeUiTest
เปลี่ยนเป็น API ที่เสถียรแล้วComposeContentTestRule
และComposeTestRule
จะเปลี่ยนให้ขยายจากComposeUiTest
(Ib4e90)เปลี่ยนชื่อ
LineHeightBehavior
เป็นLineHeightStyle
เปลี่ยนชื่อ
LineVerticalAlignment
เป็นLineHeightStyle.Alignment
เปลี่ยนชื่อ
LineHeightTrim
เป็นLineHeightStyle.Trim
นำค่าเริ่มต้นของตัวสร้างออกจาก
LineHeightStyle
(I582bf, b/181155707)เพิ่ม
Brush
ในTextStyle
และSpanStyle
เพื่อให้วาดข้อความด้วยการระบายสีแบบไล่ระดับได้ (I53869, b/187839528)แอตทริบิวต์
trimFirstLineTop
,trimLastLineBottom
ของLineHeightBehavior
เปลี่ยนเป็น Enum เดียว:LineHeightTrim
LineHeightTrim
มีค่า 4 สถานะที่กำหนดโดยบูลีน 2 รายการFirstLineTop
,LastLineBottom
, ทั้งคู่ และไม่มี (Ifc6a5, b/181155707)เพิ่ม
LineHeightBehavior
ไปยังTextStyle
และParagraphStyle
แล้วLineHeightBehavior
ควบคุมว่าจะใช้ความสูงของบรรทัดกับด้านบนของบรรทัดแรกและด้านล่างของบรรทัดสุดท้ายหรือไม่ นอกจากนี้ยังกำหนดการจัดแนวของบรรทัดในพื้นที่ที่TextStyle(lineHeight)
จัดไว้ให้ด้วยเช่น คุณสามารถรับลักษณะการทำงานที่คล้ายกับสิ่งที่ CSS กำหนดผ่าน
LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false)
ได้การกำหนดค่า
trimFirstLineTop
,trimLastLineBottom
จะทำงานอย่างถูกต้องเมื่อincludeFontPadding
เป็นเท็จเท่านั้น (I97332, b/181155707)ฟังก์ชัน
PlatformParagraphStyle.lerp
และPlatformSpanStyle.lerp
เปลี่ยนเป็นฟังก์ชันระดับบนสุด (I9a268)
การแก้ไขข้อบกพร่อง
- ตอนนี้เอกสารประกอบของ
PointerInputChange::copy
ระบุอย่างถูกต้องว่าเป็นการคัดลอกแบบตื้น (I182f5) - รองรับจุดไข่ปลาเมื่อความสูงถูกจำกัดและไม่พอดีกับข้อความทุกบรรทัด (Ie528c, b/168720622)
- เปิดอยู่โดยค่าเริ่มต้น
includeFontPadding
คุณปิดincludeFontPadding
ได้โดยใช้แอตทริบิวต์TextStyle.platformTextStyle
ในอนาคตอันใกล้นี้ เราจะเปลี่ยนลักษณะการทำงานเริ่มต้น แต่ในระหว่างนี้ การดำเนินการนี้จะช่วยให้เราผสานรวมการปรับปรุงความสูงของบรรทัด (aosp/2058653) ได้ดียิ่งขึ้น และแก้ปัญหาการตัดTextField
ได้ (I01423, b/171394808)
การมีส่วนร่วมภายนอก
- ตอนนี้
MouseInjectionScope.scroll(delta = someDelta)
จะกลับด้านใน Android หากเราเลื่อนในแนวตั้ง (หาก someDelta เป็นบวก ระบบจะเลื่อนลง) (Ifb697, b/224992993)
เวอร์ชัน 1.2.0-alpha08
20 เมษายน 2022
androidx.compose.ui:ui-*:1.2.0-alpha08
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.2.0-alpha08 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- เราทำเครื่องหมายฟังก์ชัน
pluralStringResource
ว่าเป็นฟังก์ชันทดลองเพื่ออนุญาตให้มีการพัฒนาเพื่อรองรับการแปลภาษาได้ดียิ่งขึ้นในอนาคต (If24e4) - ตอนนี้ Paragraph และ MultiParagraph ยอมรับพารามิเตอร์ข้อจำกัดแล้ว การส่ง
Constraints.maxHeight
จะไม่มีผลในขณะนี้ แต่จะช่วยให้ทำการคำนวณบางอย่างได้ในอนาคต เช่น การละข้อความตามความสูง (I6afee, b/168720622) SubcomposeSlotReusePolicy.getSlotsToRetain()
ตอนนี้ยอมรับคลาสที่กำหนดเองซึ่งคล้ายกับ MutableSet ซึ่งไม่อนุญาตให้เพิ่มรายการใหม่ในคลาส (Icd314)- ตอนนี้ PointerIcon เป็นอินเทอร์เฟซ
@Stable
แล้ว (I9dafe) - การดูบางส่วน (ลงหรือตำแหน่ง) เลิกใช้งานแล้วใน
PointerInputChange
คุณใช้consume()
เพื่อใช้การเปลี่ยนแปลงทั้งหมดได้ คุณใช้isConsumed
เพื่อพิจารณาว่ามีบุคคลอื่นใช้การเปลี่ยนแปลงไปก่อนหน้านี้หรือไม่ PointerInputChange::copy()
จะทำสำเนาแบบตื้นเสมอ ซึ่งหมายความว่าระบบจะใช้สำเนาของPointerInputChange
เมื่อมีการใช้สำเนาใดสำเนาหนึ่ง หากต้องการสร้างPointerInputChange
ที่ไม่มีขอบเขต ให้ใช้ตัวสร้างแทน (Ie6be4, b/225669674)- เปิดใช้การทำงานร่วมกันของการเลื่อนที่ซ้อนกันระหว่าง Compose กับ View ในทิศทาง Compose > View ซึ่งหมายความว่าองค์ประกอบหลักของ Compose จะรับเดลต้าการเลื่อนที่ซ้อนกันจาก NestedScrollView ได้ (If7949, b/174348612)
SemanticsProperty testTagsAsResourceId
ใหม่ ซึ่งใช้เพื่อทำให้ Compose สอดคล้องกับการทดสอบ UIAutomator ที่ออกแบบมาสำหรับระบบ View ได้ (I39c20)- แสดงความหนาทั้งหมดที่มีสำหรับแบบอักษรของระบบใน Android เมื่อใช้
FontFamily.SansSerif
ซึ่งจะใช้ชื่อแบบอักษรสำรอง เช่น sans-serif-medium ภายใน API 21-28 นี่เป็นการเปลี่ยนแปลงลักษณะการทำงาน เนื่องจากก่อนหน้านี้ API 21-28 รองรับเฉพาะน้ำหนัก 400 และ 700 (I380fe, b/156048036, b/226441992) - ผู้สอนย่อหน้าและหลายย่อหน้าได้เรียงลำดับอาร์กิวเมนต์ตำแหน่งใหม่ให้อยู่ก่อนอาร์กิวเมนต์ที่ไม่บังคับ (Idafaa)
- ตอนนี้
AndroidFont
ใช้ typefaceLoader เป็นพารามิเตอร์ของตัวสร้าง (I2c971)
เวอร์ชัน 1.2.0-alpha07
6 เมษายน 2022
androidx.compose.ui:ui-*:1.2.0-alpha07
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.2.0-alpha07 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- เพิ่มฟังก์ชันใหม่
Snapshot.withoutReadObservation { ... }
แล้ว ซึ่งช่วยให้ผู้ใช้เรียกใช้ Lambda ที่ส่งผ่านได้โดยไม่ต้องสมัครรับข้อมูลการเปลี่ยนแปลงค่าสถานะที่อ่านในระหว่างบล็อกนี้ คุณอาจพบว่าฟีเจอร์นี้มีประโยชน์ในกรณีการใช้งานที่คุณต้องการใช้ประโยชน์จากการเขียน/อ่านที่ปลอดภัยแบบเธรดตามสแนปชอต แต่ต้องการอ่านค่าได้โดยไม่ต้องทำให้เกิดการจัดองค์ประกอบหรือการวัดซ้ำที่ไม่จำเป็น (I9f365, b/214054486) consumeWindowInsets
พร็อพเพอร์ตี้ส่วนขยายของComposeView
ช่วยให้นักพัฒนาแอปปิดใช้การใช้WindowInsets
ของ Android ได้ ซึ่งจะช่วยให้ComposeViews
แยกกันในลำดับชั้นใช้WindowInsets
ได้โดยไม่รบกวนกัน (I0ef08, b/220943142)- เพิ่ม
KeyboardType.Decimal
เป็นทางเลือกแทนKeyboard.Number
เพื่อรวมตัวคั่นทศนิยมใน IME โดยเฉพาะ (Iec4c8, b/209835363) PointerEventType.Scroll
และPointerEvent.scrollDelta
เป็น API ที่เสถียรแล้ว (I574c5, b/225669674)- เปิดใช้การทำงานร่วมกันของการเลื่อนที่ซ้อนกันระหว่าง View กับ Compose สำหรับคลาส View ที่ทำงานร่วมกัน ซึ่งหมายความว่าตอนนี้ Compose สามารถส่งส่วนต่างของการเลื่อนไปยัง View ระดับบน (ที่ทำงานร่วมกัน) ได้แล้ว (I5d1ac, b/174348612)
- อัปเดต
FontFamily.Resolver
เพื่อผสานรวมการตั้งค่าการช่วยเหลือพิเศษสำหรับข้อความตัวหนาทั้งระบบ (I6c1e7) Font(AssetManager, String, ...)
เลิกใช้งานแล้วและแทนที่ด้วยFont(String, AssetManager, ...)
นี่คือ API เวอร์ชันทดลอง (I1c7a4)- เพิ่มตัวอธิบายแบบอักษรใหม่
Font(DeviceFontFamilyName)
เพื่อค้นหาแบบอักษรที่ติดตั้งในระบบในระหว่างเชนการสำรองแบบอักษร (ไม่บังคับ) (I30468, b/219754572) - เพิ่มการกำหนดค่าความเข้ากันได้ชั่วคราวสำหรับ
includeFontPadding
ใน TextStyle/ParagraphStyleincludeFontPadding
เปลี่ยนได้ผ่านTextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false))
นี่เป็นตัวเลือกการกำหนดค่าชั่วคราวเพื่อเปิดใช้การย้ายข้อมูลและจะถูกนำออก (If47be, b/171394808) - เพิ่มส่วนขยาย
GoogleFont.Provider.isAvailableOnDevice
เพื่อรับความช่วยเหลือในการแก้ไขข้อบกพร่อง (I64e31) - เพิ่มตัวสร้าง
GoogleFont.Provider
เพื่อใช้กับ@ArrayRes
(Ic5ee1, b/225984280) Compose GoogleFont
เปลี่ยนชื่อเป็นFont(GoogleFont)
แล้ว แต่ API ยังคงมีความเสถียร (I125f2)
การแก้ไขข้อบกพร่อง
- เพิ่มการตรวจสอบ Lint ใน Material/Scaffold เพื่อให้แน่ใจว่ามีการใช้ระยะห่างภายใน (Ifb111)
เวอร์ชัน 1.2.0-alpha06
23 มีนาคม 2022
androidx.compose.ui:ui-*:1.2.0-alpha06
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.2.0-alpha06 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มการดำเนินการทางความหมาย
RequestFocus
เพื่อขอให้โฟกัสที่เป้าหมายที่โฟกัสได้ (I17b71) - อัปเดตการแยกวิเคราะห์ Vector Drawable เพื่อรองรับการมิเรอร์อัตโนมัติเพื่อพลิกเนื้อหาของ
VectorPainter
หากเลย์เอาต์ปัจจุบัน เป็นแบบ RTL (I79cd9, b/185760237) อัปเดตสีเงา/สีโดยรอบให้เป็นพารามิเตอร์ต่อท้ายของ
Modifier.graphicsLayer
เพื่อให้ API เข้ากันได้ (I3f864, b/160665122)เพิ่มการใช้งานเริ่มต้นให้กับสีเงา/สีโดยรอบใน
GraphicsLayerScope
เพื่อให้มั่นใจว่าการเปลี่ยนแปลง API จะไม่ทำให้เกิดข้อผิดพลาดเพิ่มเวลาของกิจกรรมลงในกิจกรรม RSB (Ief8ae)
ตอนนี้เราได้ผสานรวม
FocusOrder
เข้ากับFocusProperties
แล้ว และfocusProperties()
ก็มีความสามารถทั้งหมดของfocusOrder()
แล้วFocusOrder
และfocusOrder()
เลิกใช้งานแล้วfocusOrder()
ที่ยอมรับfocusRequester
ควรแทนที่ด้วยตัวแก้ไขfocusRequester()
ร่วมกับfocusProperties()
ซึ่งจะช่วยให้ตัวแก้ไขแยกความกังวลได้ชัดเจนยิ่งขึ้น (I601b7)การอัปเกรดทั้ง
RecyclerView
และCompose
จะส่งผลให้ประสิทธิภาพการเลื่อนของ RecyclerView ที่มีมุมมอง Compose เป็นองค์ประกอบย่อยดีขึ้นมากเพิ่ม
ViewCompositionStrategy.Default
เป็นวิธีการดึงกลยุทธ์เริ่มต้นในตัวเพิ่ม
ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer
ซึ่งเป็นกลยุทธ์เริ่มต้นใหม่และจัดการคอนเทนเนอร์การจัดกลุ่มอย่างเหมาะสม เช่น RecyclerView (If7282)เพิ่มการรองรับการใส่คำอธิบายประกอบในคลาสคำอธิบายประกอบด้วย @Preview เป็นขั้นตอนแรกในการเพิ่มฟีเจอร์ Multipreview โดยสามารถใช้คำอธิบายประกอบดังกล่าวเพื่อใส่คำอธิบายประกอบในเมธอดที่ประกอบได้หรือคลาสคำอธิบายประกอบอื่นๆ ซึ่งจะถือว่ามีการใส่คำอธิบายประกอบโดยอ้อมด้วย @Preview ที่ระบุ (I12eff)
เพิ่มอุปกรณ์อ้างอิงลงในรายการอุปกรณ์สำหรับ @Preview (I071c9)
การแก้ไขข้อบกพร่อง
- อัปเดต API กราฟิกเวกเตอร์ให้ใช้คำอธิบายประกอบที่ประกอบได้ที่เหมาะสม @VectorComposable แทน @UiComposable (I942bc)
- นำ crossinline ออกจาก
AnnotatedString.Builder.withStyle
(If84d5)
การมีส่วนร่วมภายนอก
- compose-ui: เพิ่มพร็อพเพอร์ตี้
ambientShadowColor
และspotShadowColor
ลงในGraphicsLayerScope
(I1ba1a, b/160665122) - ตอนนี้ฟังก์ชัน
pluralStringResource
รองรับแหล่งข้อมูลแบบพหูพจน์แล้ว (Ib2f23, b/191375123)
เวอร์ชัน 1.2.0-alpha05
9 มีนาคม 2022
androidx.compose.ui:ui-*:1.2.0-alpha05
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.2.0-alpha05 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ตอนนี้
TextToolbar
รับอาร์กิวเมนต์ lambda แทนActionCallback
แล้ว (Ib2eb9, b/197950089) - อัปเดตค่า Null ใน Core และ Appcompat ให้ตรงกับ Tiramisu DP2 (I0cbb7)
- ตอนนี้อินเทอร์เฟซที่วัดผลได้จะแสดงพร็อพเพอร์ตี้ parentData (I3313f)
Modifier.onPlaced
และอินเทอร์เฟซOnPlacedModifier
มีความเสถียรแล้วในตอนนี้ (Ib5482)- ไชโย! ฟีเจอร์สร้างภาพเคลื่อนไหวรองรับการตั้งค่า "มาตราส่วนระยะเวลาของ Animator" จากตัวเลือกสำหรับนักพัฒนาแอปแล้ว (I5a4fc, b/161675988)
- เพิ่มตัวแก้ไข
BeyondBoundsLayout
local (If8b51, b/184670295) - ข้อความ: ตอนนี้ระบบจะปิด includeFontPadding โดยค่าเริ่มต้น เราได้
includeFontPadding=false
แก้ไขปัญหาการตัดข้อความอันเป็นผลมาจากincludeFontPadding=false
แล้ว และไม่ควรมีการตัดข้อความสำหรับสคริปต์ที่มีความยาว (I31c84, b/171394808)
การแก้ไขข้อบกพร่อง
ComposeContentTestRule.setContent
จะแสดงIllegalStateException
หากคุณพยายามตั้งค่าเนื้อหาเมื่อมีเนื้อหาอยู่แล้ว (I888a5, b/199631334)- แก้ไขข้อขัดข้องที่เกิดจากเนื้อหาในคลิปบอร์ดขณะอ่านจาก คลิปบอร์ดใน Android (I06020, b/197769306)
- ปรับปรุงตัวอย่างการเลื่อน RSB (I6a596)
การมีส่วนร่วมภายนอก
- อัปเดตให้ใช้ Kotlinx coroutines 1.6.0 (I3366d)
เวอร์ชัน 1.2.0-alpha04
23 กุมภาพันธ์ 2022
androidx.compose.ui:ui-*:1.2.0-alpha04
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.2.0-alpha04 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
เพิ่ม
ComposableTarget
,ComposableTargetMarker
และComposableOpenTarget
ที่อนุญาตให้รายงานเวลาคอมไพล์เมื่อมีการเรียกใช้ ฟังก์ชันที่ประกอบกันได้ซึ่งกำหนดเป้าหมายไปยังแอปพลิเคชันที่ไม่ได้ ออกแบบมาให้ใช้ในกรณีส่วนใหญ่ ปลั๊กอินคอมไพเลอร์ Compose จะอนุมานคำอธิบายประกอบได้ ดังนั้นการใช้คำอธิบายประกอบเหล่านี้โดยตรงจึงไม่ค่อยเกิดขึ้น กรณีที่อนุมานไม่ได้ ได้แก่ การสร้างและ การใช้แอปพลิเคชันที่กำหนดเอง ฟังก์ชันที่ประกอบกันได้แบบนามธรรม (เช่น เมธอดอินเทอร์เฟซ) ฟิลด์หรือตัวแปรส่วนกลางที่เป็น แลมบ์ดาที่ประกอบกันได้ (ระบบจะอนุมานตัวแปรและพารามิเตอร์ภายใน) หรือเมื่อใช้
ComposeNode
หรือฟังก์ชันที่ประกอบกันได้ที่เกี่ยวข้องสำหรับฟังก์ชันที่กำหนดเองที่เรียกใช้ฟังก์ชันที่ใช้ร่วมกันได้
ComposeNode
หรือReusableComposeNode
จะต้องเพิ่มComposableTarget
คำอธิบายประกอบสำหรับฟังก์ชันและประเภทพารามิเตอร์แลมบ์ดาที่ใช้ร่วมกันได้ อย่างไรก็ตาม เราขอแนะนำ ให้สร้างคำอธิบายประกอบที่มีคำอธิบายประกอบเป็นComposableTargetMarker
แล้วใช้คำอธิบายประกอบที่ทำเครื่องหมาย แทนComposableTarget
โดยตรง คำอธิบายประกอบที่ประกอบได้ ซึ่งทำเครื่องหมายด้วยComposableTargetMarker
จะเทียบเท่ากับComposbleTarget
ที่มีชื่อแบบเต็มของแอตทริบิวต์ คลาสเป็นพารามิเตอร์แอปพลิเคชัน ดูตัวอย่างการใช้ComposableTargetMarker
ได้ที่anroidx.compose.ui.UiComposable
(I38f11)Font(resId, ...)
ตอนนี้ใช้ loadingStrategy ใน API ที่เสถียรแล้ว (Ief3d2)FontLoadingStrategy
เป็น API ที่เสถียรแล้ว (I1ee35, b/174162090)รองรับการโหลดแบบอักษรแบบไม่พร้อมกันในข้อความ (I77057, b/214587005)
เพิ่ม Bridge API เพื่อแปลง
Font.ResourceLoader
ที่กำหนดเองเป็นFontFamily.Resolver
(Ia0060)
การแก้ไขข้อบกพร่อง
- ระบบจะส่ง
FontFamily.Resolver
ที่ระบุไปยังองค์ประกอบย่อย เช่น ป๊อปอัป - ระบบจะส่ง
Font.ResourceLoader
ที่ระบุไปยังองค์ประกอบย่อย เช่น ป๊อปอัป (I48fa5)
เวอร์ชัน 1.2.0-alpha03
9 กุมภาพันธ์ 2022
androidx.compose.ui:ui-*:1.2.0-alpha03
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.2.0-alpha03 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
notifyFocusedRect
เมธอดในTextInputSession
และTextInputService
เลิกใช้งานแล้วและจะไม่เรียกใช้ โปรดใช้BringIntoViewRequester
แทน (Ia4302, b/192043120, b/216842427, b/178211874)- เปิดตัวเมธอด
destroyDisplayListData
ในคลาส StubRenderNode
(I1e659, b/216660268) - เพิ่ม API ใหม่ที่ช่วยให้วัดขนาดล่วงหน้าขององค์ประกอบย่อยของ
SubcomposeLayout
ที่คุณคอมโพสล่วงหน้าได้ (I857ea) เพิ่ม
movableContentOf
ซึ่งแปลง Composable Lambda เป็น Lambda ที่ย้ายสถานะและโหนดที่เกี่ยวข้อง ไปยังตำแหน่งใหม่ที่เรียกใช้ เมื่อการโทรครั้งก่อนออกจาก การคอมโพส สถานะจะได้รับการรักษาไว้ชั่วคราว และหากมีการโทรใหม่ ไปยัง Lambda เข้าสู่การคอมโพส ระบบจะย้ายสถานะและโหนดที่เชื่อมโยง ไปยังตำแหน่งของการโทรใหม่ หากไม่มีการเพิ่มการโทรใหม่ ระบบจะนำสถานะออกอย่างถาวรและจะแจ้งให้ผู้สังเกตการณ์ที่จดจำทราบหากมีการเรียกใช้
movableContentOf
Lambda หลายครั้งในการ คอมโพสเดียวกัน ระบบจะสร้างสถานะและโหนดใหม่สำหรับการเรียกใช้แต่ละครั้ง และเมื่อ การเรียกใช้สิ้นสุดลงและมีการเรียกใช้ใหม่ สถานะจะย้าย จากการเรียกใช้ที่สิ้นสุดครั้งแรกไปยังการเรียกใช้ใหม่ตามลำดับ การเรียกใช้ ระบบจะนำสถานะทั้งหมดที่การเรียกใหม่ไม่ได้อ้างสิทธิ์ออก อย่างถาวร (Ib4850)FontFamilyResolver
พร้อมให้บริการผ่านLocalFontFamilyResolver.current
แล้วเพิ่ม
createFontFamilyResolver(context)
และcreateFontFamilyResolver(context, coroutineScope)
เพื่อสร้างตัวแก้ไข FontFamily ใหม่นอกเหนือจากการใช้งาน Composeตอนนี้ Paragraph และ MultiParagraph ใช้
FontFamily.Resolver
TextLayoutResult.layoutInput.fontFamilyResolver
มี รีโซลเวอร์ที่ใช้สำหรับเลย์เอาต์นี้ ซึ่งเลิกใช้งานแล้วTextLayoutResult.layoutInput.resourceLoader
เนื่องจากไม่ได้ใช้แล้ว (Id5a45, b/174162090)รองรับการโหลดแบบอิงค์และแบบไม่บังคับของแบบอักษรที่มีลักษณะการทำงานสำรอง เส้นทางนี้ใช้โดย Text และ TextField และแสดงผ่าน FontFamilyResolver
การรองรับการโหลดแบบอักษรล่วงหน้าผ่าน
FontFamilyResolver.preload
FontFamilyResolver.setAsyncLoadContext
อนุญาตให้ตั้งค่า บริบทของโครูทีนส่วนกลางที่ใช้ในการโหลดแบบอักษรแบบไม่พร้อมกัน (I87fe8, b/174162090)เพิ่ม
AndroidFont
ซึ่งเป็น API ระดับต่ำตัวใหม่สำหรับระบุตัวอธิบายทรัพยากรแบบอักษรประเภทใหม่ใน Android เช่น การโหลดแบบอักษรจาก แบ็กเอนด์เฉพาะแอป การค้นหาแบบอักษรที่ติดตั้งไว้ล่วงหน้า ในอุปกรณ์ หรือการโหลดแบบอักษรจากทรัพยากรที่ไม่ได้มาจาก โรงงานแบบอักษรปัจจุบันขยาย
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)Global font loader เปลี่ยนชื่อเป็น
FontFamilyResolver
(I4f773, b/174162090)ใช้ระบบการโหลดแบบอักษรใหม่สำหรับเดสก์ท็อป (I9ce5c, b/174162090)
FontFamily.Resolver.resolve
returnsState<Any>
(I4406c, b/174162090)
การแก้ไขข้อบกพร่อง
- ตอนนี้ระบบจะเก็บ TextField ไว้เหนือแป้นพิมพ์เมื่อมีการ
โฟกัสและแสดงแป้นพิมพ์เมื่อโหมดป้อนข้อมูลแบบนุ่มเป็น
ADJUST_PAN
(I8eaeb, b/190539358, b/192043120) - เดสก์ท็อปใช้การเขียนเฉพาะที่สำหรับ
FontFamily.Resolver
- เราเลิกใช้งานเดสก์ท็อป
FontLoader
แล้ว createFontFamilyResolver
ใหม่ในเดสก์ท็อป (I6bbbb, b/174162090)- ประเภทการป้อนข้อมูลด้วยแป้นพิมพ์เสมือนจะไม่กะพริบอีกต่อไปเมื่อเปลี่ยน โฟกัสระหว่างช่องข้อความ (I1bf50, b/187746439)
เวอร์ชัน 1.2.0-alpha02
26 มกราคม 2022
androidx.compose.ui:ui-*:1.2.0-alpha02
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.2.0-alpha02 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม
Modifier.onRotaryScrollEvent()
และModifier.onPreRotaryScrollEvent()
สำหรับอุปกรณ์สวมใส่ที่มีปุ่มด้านข้างแบบหมุน (I18bf5, b/210748686) - เพิ่มส่วนขยาย
View.createLifecycleAwareRecomposer
เวอร์ชันทดลอง (I0cde6)
การมีส่วนร่วมภายนอก
PointerEvent.scrollDelta.y
ตอนนี้จะกลับด้านใน Android (ตอนนี้จะแสดงผลเป็น 1 แทน -1 หากเราเอียงล้อเมาส์ไปทางขวา) (Ia9811)
เวอร์ชัน 1.2.0-alpha01
12 มกราคม 2022
androidx.compose.ui:ui-*:1.2.0-alpha01
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.2.0-alpha01 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- เลิกใช้งาน
FontFamily.canLoadSynchronously
แล้ว พร็อพเพอร์ตี้นี้ไม่มีความหมายเชิงความหมาย (Ica5ef) - เพิ่มฟิลด์ข้อมูลระบุตัวตนลงใน
CompositionData
เพื่อสร้าง รหัสที่ไม่เปลี่ยนแปลงในเครื่องมือตรวจสอบเลย์เอาต์ (Ic116e) - เพิ่มรหัสอุปกรณ์ Wear OS ลงในรายการอุปกรณ์ตัวอย่าง (I93232)
การอัปเดตการขึ้นต่อกัน
- ตอนนี้ต้องใช้ 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 Components และมีลักษณะการทํางานที่สอดคล้องกันหากคุณใช้ทั้ง View และ Compose การเปลี่ยนแปลงนี้ยังช่วยให้มั่นใจได้ว่าเมื่อคุณสร้าง UI โดยใช้คอมโพเนนต์ Material ของ Compose ระบบจะปฏิบัติตามข้อกำหนดขั้นต่ำสำหรับการช่วยเหลือพิเศษของเป้าหมายการสัมผัส
- การรองรับแถบข้างสำหรับไปยังส่วนต่างๆ ที่เสถียร
- เปลี่ยน API ที่เคยอยู่ในระยะทดลองจำนวนหนึ่งให้เป็น API ที่เสถียร
- การรองรับ Kotlin เวอร์ชันใหม่กว่า
เวอร์ชัน 1.1.0-rc03
26 มกราคม 2022
androidx.compose.ui:ui-*:1.1.0-rc03
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.1.0-rc03 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- อัปเดตเพื่อรองรับ Compose Material 1.1.0-rc03
เวอร์ชัน 1.1.0-rc01
15 ธันวาคม 2021
androidx.compose.ui:ui-*:1.1.0-rc01
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.1.0-rc01 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องที่ทำให้การเลื่อนเพื่อการช่วยเหลือพิเศษหายไป (I7cbfb)
- ตอนนี้
SemanticsNodeInteraction.captureToImage()
จะใช้งานได้ด้วยหากHardwareRenderer.isDrawingEnabled()
เป็นfalse
โดยการเปิดใช้ในระยะเวลาการโทร (Idf3d0)
เวอร์ชัน 1.1.0-beta04
1 ธันวาคม 2021
androidx.compose.ui:ui-*:1.1.0-beta04
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.1.0-beta04 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- อัปเดตให้เข้ากันได้กับ Kotlin
1.6.0
การเปลี่ยนแปลง API
- ล้างค่า Null ใน
androidx.core.view
(I7078a, b/204917439) - เพิ่ม API ทดลองที่อนุญาตให้ผู้ใช้ใช้ PointerInputchange ทั้งหมด หรือตรวจสอบว่ามีการใช้หรือไม่ (I2e59d)
- เพิ่มการรองรับเหตุการณ์ล้อเลื่อนของเมาส์ในเลเยอร์ UI (Ia14eb, b/198214718)
- เพิ่ม
Modifier.composed
การโอเวอร์โหลดเชิงทดลองที่ยอมรับ คีย์เพื่อเปรียบเทียบความเท่ากันและมีสิทธิ์ข้ามการเพิ่มประสิทธิภาพ (Ice799, b/205851704) ComposeNotIdleException
ขยายจากException
แทนที่จะมาจากThrowable
โดยตรง โปรดทราบว่าการดำเนินการนี้หมายความว่าข้อความที่ครอบคลุม ซึ่งเคยครอบคลุมException
อาจครอบคลุมComposeNotIdleException
ในตอนนี้ ซึ่งก่อนหน้านี้ข้อความดังกล่าวจะไม่ครอบคลุม (I9c217)
การแก้ไขข้อบกพร่อง
- แก้ไขแฮนเดิลข้อความไม่เคลื่อนที่เมื่อระดับการมองเห็น IME เปลี่ยนแปลง (I25f2e)
เวอร์ชัน 1.1.0-beta03
17 พฤศจิกายน 2021
androidx.compose.ui:ui-*:1.1.0-beta03
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.1.0-beta03 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มตัวแก้ไข Modifier.onPlaced ใหม่เพื่อให้สังเกตการเปลี่ยนแปลงตำแหน่งได้ ดังนั้นจึงสามารถทำการเปลี่ยนแปลงเพิ่มเติมในออฟเซ็ตของตัวปรับแต่งย่อยได้ตาม การเปลี่ยนแปลงตำแหน่งที่สังเกตได้ (I558fd)
- นำ
InjectionScope.flush()
และInjectionScope.dispose()
ออกแล้ว การล้างเหตุการณ์ทั้งหมดและการทิ้ง ขอบเขตจะเกิดขึ้นเมื่อสิ้นสุดเมธอด perform*Input() ที่เรียกใช้เหมือน ก่อนหน้านี้ (I2bed8) - นำ
MultiModalInjectionScope.Touch
และMultiModalInjectionScope.Mouse
ออกแล้ว หากต้องการแทรกเหตุการณ์การสัมผัสและเมาส์ สำหรับท่าทางสัมผัสแบบหลายรูปแบบ ตอนนี้คุณสามารถใช้MultiModalInjectionScope.touch()
และMultiModalInjectionScope.mouse()
ซึ่งทั้ง 2 อย่างนี้ยอมรับ Lambda ที่มีขอบเขตตัวรับของรูปแบบนั้น (Idde18)
การแก้ไขข้อบกพร่อง
- ตอนนี้ระบบจะคำนวณค่าเริ่มต้นสำหรับ
durationMillis
ในTouchInjectionScope.swipeWithVelocity
เพื่อให้ปัดได้ (I19deb)
เวอร์ชัน 1.1.0-beta02
3 พฤศจิกายน 2021
androidx.compose.ui:ui-*:1.1.0-beta02
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.1.0-beta02 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม BringIntoView API เวอร์ชันทดลองที่ให้คุณส่งคำขอไปยังผู้ปกครองเพื่อให้เลื่อนเพื่อนำรายการมาแสดง (Ib918d, b/195353459)
- API ภาพเคลื่อนไหวใหม่สำหรับการสนับสนุนเครื่องมือ กล่าวคือ ช่วยให้เครื่องมือตรวจสอบภาพเคลื่อนไหวและการกำหนดค่าใน Transitions ได้ (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 ภาพเคลื่อนไหวใหม่สำหรับการสนับสนุนเครื่องมือ กล่าวคือ ช่วยให้เครื่องมือตรวจสอบภาพเคลื่อนไหวและการกำหนดค่าใน Transitions ได้ (I4116e)
เวอร์ชัน 1.1.0-alpha06
13 ตุลาคม 2021
androidx.compose.ui:ui-*:1.1.0-alpha06
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.1.0-alpha06 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- นำ
ExperimentalComposeUiApi
ออกจากViewRootForInspector
และLayoutInfo.ownerViewId
(I5c2e3) - เพิ่มการโอเวอร์โหลดที่ไม่มีการระบุองค์ประกอบย่อยสำหรับเลย์เอาต์เพื่อปรับปรุงประสิทธิภาพ (Ib0d9a)
- นำ
InternalCompilerApi
ออกจากเมธอด Composer ที่ต้องเรียกใช้ข้ามโมดูล (I1aa0b) - ตอนนี้
SemanticsNodeInteraction.performSemanticsAction
จะแสดงผลSemanticsNodeInteraction
ที่มีการเรียกใช้ฟังก์ชัน (I9e5db) - เพิ่ม CompositionLocal ของ LocalInputModeManager เพื่อตรวจหา TouchMode/NonTouchMode (I6a83c, b/175899786)
- เพิ่ม
viewConfiguration: ViewConfiguration
ในLayoutInfo
เพื่อให้ผู้บริโภคได้รับค่าที่ถูกต้องสำหรับสิ่งต่างๆ เช่น การหมดเวลา การกดแบบยาว (I76ca6)- เพิ่ม
viewConfiguration: ViewConfiguration
ในInjectionScope
เพื่อให้การทดสอบปรับการแทรกอินพุตตาม สิ่งต่างๆ เช่น การหมดเวลาการกดค้างหรือการเลื่อนด้วยการสัมผัส - เปลี่ยนระยะเวลาเริ่มต้นของการกดค้างและการแตะสองครั้งสําหรับทั้ง
การป้อนข้อมูลด้วยการสัมผัสและเมาส์ให้เป็นไปตามค่าใน
InjectionScope.viewConfiguration
- เพิ่ม
- การใช้งาน ExposedDropdownMenu โดยอิงตาม ExposedDropdownMenuBox ที่มี TextField และ DropdownMenu อยู่ภายใน (If60b2)
- เพิ่ม dismissOnOutsideClick ลงใน PopupProperties เพื่อแทนที่ dismissOnClickOutside ซึ่งเลิกใช้งานแล้ว พร็อพเพอร์ตี้ใหม่จะได้รับตําแหน่งการคลิกและขอบเขตของจุดยึด ซึ่งช่วยให้ควบคุมได้ละเอียดยิ่งขึ้นว่าจะเรียกใช้ onDismissRequest หรือไม่ เช่น การตั้งค่านี้อาจมีประโยชน์ในการป้องกันไม่ให้เลิกใช้สมอเมื่อมีการแตะที่สมอ
- มีการเพิ่ม updateAndroidWindowManagerFlags ลงใน PopupProperties ซึ่งช่วยให้ควบคุมแฟล็กที่ป๊อปอัปส่งไปยัง WindowManager ของ Android ได้ในระดับต่ำ พารามิเตอร์ของ Lambda จะเป็นค่าสถานะที่คำนวณจากค่า PopupProperties ซึ่งส่งผลให้เกิดค่าสถานะ WindowManager เช่น focusable ผลลัพธ์ของ Lambda จะเป็น Flag สุดท้ายที่จะส่งไปยัง WindowManager ของ Android โดยค่าเริ่มต้น updateAndroidWindowManagerFlags จะไม่เปลี่ยนแปลงค่าสถานะที่คำนวณจากพารามิเตอร์ คุณควรใช้ API นี้ด้วยความระมัดระวัง เฉพาะในกรณีที่ป๊อปอัปมีข้อกำหนดด้านลักษณะการทำงานที่เฉพาะเจาะจงมาก (I6e9f9)
Recomposer.state
ถูกเลิกใช้งานและแทนที่ด้วยRecomposer.currentState
เพื่อเปลี่ยนประเภทเป็น StateFlow (Ic2ab3, b/197773820)- เพิ่ม
flush()
และdispose()
ไปยังInjectionScope
แล้ว ใช้เมื่อต้องการล้างเหตุการณ์ทั้งหมดที่อยู่ในคิวทันทีและเมื่อต้องการทิ้งขอบเขตตามลำดับ (Ifb73a) - เพิ่ม
performScrollToNode(matcher: SemanticsMatcher)
ที่ เลื่อนคอนเทนเนอร์ที่เลื่อนได้ไปยังเนื้อหาที่ตรงกันโดย ตัวจับคู่ที่ระบุ (Ic1cb8) InjectionScope
ได้ติดตั้งใช้งานDensity
แล้ว ซึ่งช่วยให้คุณ แปลงระหว่าง px กับ dp ในperformTouchInput
และอื่นๆ ได้อย่างง่ายดาย (I8fe1f)
การแก้ไขข้อบกพร่อง
- ตอนนี้ AndroidView จะส่งต่อ LocalLifecycleOwner และ LocalSavedStateRegistryOwner ไปยังมุมมองผ่าน ViewTreeLifecycleOwner และ ViewTreeSavedStateRegistryOwner (I38f96, b/179708470)
- แก้ไขปัญหาที่ WearOS SwipeToDismissBox ไม่จัดการการปัดในบางครั้ง (I9387e)
- เวลาเริ่มต้นระหว่างเหตุการณ์การป้อนข้อมูลที่แทรกมีการเปลี่ยนแปลงจาก 10 มิลลิวินาทีเป็น 16 มิลลิวินาที ซึ่งอาจเปลี่ยนผลลัพธ์ของการทดสอบ ที่ดำเนินการท่าทางสัมผัสอินพุต เช่น การปัดที่เฉพาะเจาะจง (I829fd)
เวอร์ชัน 1.1.0-alpha05
29 กันยายน 2021
androidx.compose.ui:ui-*:1.1.0-alpha05
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.1.0-alpha05 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มการรองรับการสื่อสารระหว่างตัวแก้ไข (Id5467, b/198826874)
- เพิ่มตัวชี้ประวัติการทดลองลงใน PointerEventChange (Ic1fd8, b/197553056, b/199921305)
- เพิ่ม
density: Density
และlayoutDirection: LayoutDirection
ไปยังLayoutInfo
แล้ว ซึ่งจะช่วยให้ผู้ใช้LayoutInfo
ตีความมิติข้อมูลและตำแหน่งที่แสดงในLayoutInfo
ได้อย่างถูกต้อง (I002f1) - เพิ่มการรองรับการแทรกเหตุการณ์ของเมาส์ในเวอร์ชันทดลอง ใช้
performMouseInput
เพื่อเริ่มส่งเหตุการณ์ของเมาส์ หรือส่งเหตุการณ์ของเมาส์ ผ่านพร็อพเพอร์ตี้Mouse
ของMultiModalInjectionScope
ระหว่าง ท่าทางสัมผัสการป้อนข้อมูลหลายรูปแบบด้วยperformMultiModalInput
ดูเอกสารประกอบเกี่ยวกับ API ที่พร้อมใช้งานได้ที่MouseInjectionScope
(Iaa4a8, b/190493367)
การแก้ไขข้อบกพร่อง
- แก้ไขการรองรับการช่วยเหลือพิเศษสำหรับรายการที่เลื่อนได้ (ทั้งแบบเลซีและ แบบไม่เลซี) เกี่ยวกับการเลื่อน (I6cdb0)
- ปรับปรุงแล้ว
TouchInjectionScope.swipeWithVelocity
ตอนนี้ฟีเจอร์นี้ ยอมรับตัวแปรอินพุตที่หลากหลายมากขึ้น และจะแนะนำการเปลี่ยนแปลงอินพุตหากสร้างการปัดไม่ได้ (I40fbe, b/182477143)
เวอร์ชัน 1.1.0-alpha04
15 กันยายน 2021
androidx.compose.ui:ui-*:1.1.0-alpha04
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.1.0-alpha04 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ตอนนี้
PointerEvent
มีPointerEventType
เพื่อรองรับเหตุการณ์การวางเมาส์แล้ว (I091fa) - อนุญาตให้เด็กยอมรับอินพุตพอยน์เตอร์นอกขอบเขตอินพุตพอยน์เตอร์ของ ผู้ปกครอง ผู้ปกครองอาจสกัดกั้นการเรียกเหล่านั้นด้วยพร็อพเพอร์ตี้ PointerInputScope.alwaysInterceptChildEvents (I9eae3, b/192479655)
- เลิกใช้งาน
performGesture
และGestureScope
ซึ่งถูกแทนที่ด้วยperformTouchInput
และTouchInjectionScope
(Ia5f3f, b/190493367) - เพิ่ม
touchBoundsInRoot
ถึงSemanticsNode
ซึ่ง รวมถึงขนาดเป้าหมายการสัมผัสขั้นต่ำ เพื่อให้นักพัฒนาแอป มั่นใจได้ว่าเป้าหมายการสัมผัสเป็นไปตามข้อกำหนดขั้นต่ำด้านการช่วยเหลือพิเศษ (I2e14b, b/197751214) - แก้ไขการใช้งานที่ตรวจสอบได้ (I927bc, b/191017532)
- เปลี่ยนชื่อพารามิเตอร์ของ inspectable ให้ตรงกับ composed (I3a482, b/191017532)
เปิดตัว
performTouchInput
และTouchInjectionScope
เพื่อแทนที่performTouchInput
และTouchInjectionScope
ซึ่งเป็นการปูทางสำหรับรูปแบบอื่นๆ (เช่น เมาส์)TouchInjectionScope
มีวิธีการเหมือนกับGestureScope
ยกเว้นmovePointerTo
และmovePointerBy
ซึ่งเปลี่ยนชื่อเป็นupdatePointerTo
และupdatePointerBy
ส่วนวิธีอื่นๆ จะเหมือนเดิมลักษณะการทำงานของ
TouchInjectionScope
จะเหมือนกับGestureScope
เกือบทุกประการ โดยมีรายละเอียดเล็กๆ 2 อย่างดังนี้- เมื่อส่งเหตุการณ์ "ลง" ขณะที่ย้ายเคอร์เซอร์โดยไม่ส่งเหตุการณ์ "ย้าย" (กล่าวคือ มีการใช้
updatePointerTo()
แต่ไม่ได้ใช้move()
แล้วเรียกใช้down()
) การติดตั้งใช้งานก่อนหน้านี้จะเลื่อนเวลาเหตุการณ์และส่งเหตุการณ์ "ย้าย" ก่อนที่จะส่งเหตุการณ์ "ลง" การติดตั้งใช้งานใหม่จะยังคงส่งเหตุการณ์ ย้าย แต่จะไม่เลื่อนเวลาเหตุการณ์ในสถานการณ์ เฉพาะนี้ - เมื่อส่งเหตุการณ์ "ขึ้น" ขณะที่ย้ายเคอร์เซอร์โดยไม่ส่งเหตุการณ์ "ย้าย" (คล้ายกับด้านบน) การติดตั้งใช้งานก่อนหน้าจะเลื่อนเวลาของเหตุการณ์และส่งเหตุการณ์ "ย้าย" ก่อนที่จะส่งเหตุการณ์ "ขึ้น" การติดตั้งใช้งานใหม่จะไม่ทำทั้ง 2 อย่างนี้ โดยตำแหน่งใหม่ของ เคอร์เซอร์จะแสดงผ่านเหตุการณ์ขึ้นเท่านั้น
สุดท้าย
TouchInjectionScope
จะแนะนําวิธีใหม่currentPosition(pointerId: Int)
ในการรับตำแหน่งปัจจุบันของ เคอร์เซอร์ที่ระบุ (If1191, b/190493367)- เมื่อส่งเหตุการณ์ "ลง" ขณะที่ย้ายเคอร์เซอร์โดยไม่ส่งเหตุการณ์ "ย้าย" (กล่าวคือ มีการใช้
การแก้ไขข้อบกพร่อง
- อนุญาตให้คลิปขยายขอบเขตเป้าหมายการสัมผัสเกินกว่า ภูมิภาคคลิปเพื่อวัตถุประสงค์ของเป้าหมายการสัมผัสขั้นต่ำ (I43e10, b/171509422)
- เพิ่มการรองรับการเลื่อนเกินขอบเขตแบบยืดในอุปกรณ์ Android 12 แล้ว (Iccf3c, b/171682480)
เวอร์ชัน 1.1.0-alpha03
1 กันยายน 2021
androidx.compose.ui:ui-*:1.1.0-alpha03
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.1.0-alpha03 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- อัปเดต Compose
1.1.0-alpha03
ให้ขึ้นอยู่กับ Kotlin1.5.30
(I74545)
การเปลี่ยนแปลง API
- เพิ่ม
Modifier.inspectable
สำหรับการรวมตัวแก้ไขอื่นๆ (I1909b, b/191017532) - เพิ่ม
BlurredEdgeTreatment
API เพื่อลดความซับซ้อนของ Use Case การเบลอให้เป็นชุดค่าผสมของ แฟล็กคลิปและ TileMode ที่ใช้กันโดยทั่วไป Use Case ส่วนใหญ่เกี่ยวข้องกับ การอนุญาตให้แสดงเนื้อหาที่เบลอ นอกขอบเขตของเนื้อหาต้นฉบับ และการเบลอภูมิภาคนอกขอบเขตเหล่านี้ ด้วยสีดำโปร่งใส หรือการตัดเนื้อหา ตามขอบเขตของเนื้อหาโดยการสุ่มขอบที่ใกล้ที่สุด สำหรับเคอร์เนลเบลอที่ขยายออกไปนอกขอบเขตของเนื้อหา (I6b4b7, b/166927547) - เพิ่มการรองรับ RenderEffect ใน Compose Desktop เปิดตัว OffsetEffect รวมถึง ตัวแก้ไขเบลอเป็นวิธีง่ายๆ ในการ เพิ่มเอฟเฟกต์ภาพเบลอลงในส่วน ของลำดับชั้นการคอมโพสิต (I0f6aa, b/166927547)
- เปิดตัว RenderEffect API
ที่กำหนดค่าได้โดยไม่บังคับใน
Modifier.graphicsLayer
เพื่อเปลี่ยน เนื้อหาของเลเยอร์เอง ซึ่งใช้เพื่อเบลอเนื้อหาของ Composable และ Composable ย่อยภายในลำดับชั้นการจัดองค์ประกอบได้ (I47c4d, b/166927547) - ตอนนี้ AwaitPointerEventScope มี withTimeout() และ withTimeoutOrNull() แล้ว (I507f0, b/179239764, b/182397793)
- เพิ่มขนาดเป้าหมายการสัมผัสขั้นต่ำลงใน ViewConfiguration เพื่อใช้ในความหมายและอินพุตของเคอร์เซอร์เพื่อให้มั่นใจว่ามีการช่วยเหลือพิเศษ (Ie861c)
- เพิ่มการรองรับ TileMode.Decal ซึ่งมีประโยชน์ในการกำหนดขอบ ลักษณะการทำงานสำหรับ RenderEffect ที่อิงตามการเบลอ (I7e8ed, b/166927547)
performScrollToIndex
,performScrollToKey
,hasScrollToIndexAction
และhasScrollToKeyAction
เป็น API ที่เสถียรแล้ว (I142ae, b/178483889)- เพิ่มวิธีการทดสอบเพื่อรับขอบเขตที่ตัด (I6b28e)
การแก้ไขข้อบกพร่อง
- นำเมธอด isBounded ออก จาก BlurredEdgeTreatment เพื่อ ตรวจสอบอย่างชัดเจนว่าพารามิเตอร์ รูปร่างเป็น Null หรือไม่ (I85d68)
เวอร์ชัน 1.1.0-alpha02
18 สิงหาคม 2021
androidx.compose.ui:ui-*:1.1.0-alpha02
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.1.0-alpha02 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ตอนนี้ PointerEvent รองรับการอ่านสถานะปุ่มเมาส์และสถานะตัวแก้ไขแป้นพิมพ์แล้ว (I6310c, b/180075467)
- ตอนนี้ท่าทางสัมผัสที่แทรกจะใช้เวลาของ MainTestClock เป็น
แหล่งข้อมูลที่ถูกต้องสำหรับเวลา ระบบจะเริ่มต้นเวลาปัจจุบันสำหรับเหตุการณ์ที่แทรกใน
performGesture
เป็นเวลาปัจจุบันของ MainTestClock (Ifb364, b/192064452) - เพิ่มตัวสร้าง
DpRect(DpOffset, DpSize)
(I2cf16, b/194219828) - เพิ่มคลาส DpSize (I7abb1, b/194219828)
การแก้ไขข้อบกพร่อง
- อัปเดตการแยกวิเคราะห์ XML กราฟิกแบบเวกเตอร์ เพื่อรองรับ ColorStateLists เป็น พร็อพเพอร์ตี้ย้อมสีรูทใน VectorDrawable (I86915, b/195668138)
เวอร์ชัน 1.1.0-alpha01
4 สิงหาคม 2021
androidx.compose.ui:ui-*:1.1.0-alpha01
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.1.0-alpha01 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
RelocationRequester.bringIntoView
ตอนนี้ยอมรับสี่เหลี่ยมผืนผ้าเป็นพารามิเตอร์แล้ว ซึ่งช่วยให้เรานำส่วนของ Composable มาแสดงได้ (Ice2c5, b/194330245)AnimatedImageVector
และ API ที่เกี่ยวข้องอยู่ในโมดูลใหม่androidx.compose.animation:animation-graphics
แล้ว (I60873)- เพิ่มตัวแก้ไขเวอร์ชันทดลองเพื่อจัดการคำขอเปลี่ยนสถานที่ (I65a97, b/178211874)
เปิดตัว BrushPainter API เพื่อรองรับการวาด Brush ที่กำหนดเองภายใน Painter ซึ่งคล้ายกับ ColorPainter
อัปเดต Brush API ให้มีพารามิเตอร์ขนาดโดยธรรมชาติ ที่ค้นหาภายใน BrushPainter (Ia2752, b/189466433)
อัปเดตเมธอด DrawScope#drawImage ที่ ใช้สี่เหลี่ยมผืนผ้าต้นทางและปลายทาง เพื่อใช้พารามิเตอร์ FilterQuality ที่ไม่บังคับ ซึ่งมีประโยชน์สำหรับพิกเซล อาร์ตที่ต้องการให้เป็นพิกเซล เมื่อขยายขนาดสำหรับอาร์ตตามพิกเซล อัปเดต BitmapPainter + Image composable ให้ใช้พารามิเตอร์ FilterQuality ที่ไม่บังคับด้วย (Ie4fb0, b/180311607)
เพิ่มเมธอด
GestureScope.advanceEventTime
เพื่อให้ควบคุมช่วงเวลาของเหตุการณ์ในท่าทางสัมผัสได้มากขึ้น (Ibf3e2)
การแก้ไขข้อบกพร่อง
- โปรดตรวจสอบว่าการติดตั้งใช้งาน Modifier.paint
เรียกใช้ drawsContent เพื่อให้รองรับการเชื่อมต่อตัวแก้ไขการวาดได้ดียิ่งขึ้น
ก่อนหน้านี้ Modifier.paint คาดว่าจะเป็นโหนดใบใน
ห่วงโซ่ของตัวแก้ไข แต่การทำเช่นนั้นจะป้องกันไม่ให้
กำหนดค่าในคอนเทนเนอร์ที่ประกอบได้ (เช่น กล่อง)
หรือเพิ่มการตกแต่งเพิ่มเติมด้านบน เช่น
Modifier.paint().border()
การเรียกใช้ Modifier.paint drawContent หลังจากวาดเนื้อหาของ painter ที่ระบุจะช่วยให้เรามีความสอดคล้องด้านพฤติกรรมที่ดีขึ้นในพฤติกรรม ที่มีรูปแบบตัวแก้ไข (Ibb2a7, b/178201337, b/186213275) - ตอนนี้กล่องโต้ตอบจะทําตามลักษณะการปรับขนาดของแพลตฟอร์มแล้ว ตั้งค่า
usePlatformDefaultWidth
เป็น false เพื่อลบล้างลักษณะการทำงานนี้ (Iffaed, b/192682388) - ย้าย
InfiniteAnimationPolicy
ไปยัง :compose:ui (I5eb09, b/160602714) - ตอนนี้การเลื่อนผ่านการดำเนินการทางความหมายสำหรับรายการที่โหลดแบบ Lazy และคอมโพเนนต์การเลื่อนปกติจะมีการเคลื่อนไหวแล้ว (Id9066, b/190742024)
รุ่น 1.0
เวอร์ชัน 1.0.5
3 พฤศจิกายน 2021
androidx.compose.ui:ui-*:1.0.5
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.5 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขข้อขัดข้องในการติดตามอินสแตนซ์ derivedStateOf (aosp/1792247)
เวอร์ชัน 1.0.4
13 ตุลาคม 2021
androidx.compose.ui:ui-*:1.0.4
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.4 มีคอมมิตเหล่านี้
การอัปเดตการขึ้นต่อกัน
- อัปเดตให้ขึ้นอยู่กับ Kotlin
1.5.31
เวอร์ชัน 1.0.3
29 กันยายน 2021
androidx.compose.ui:ui-*:1.0.3
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.3 มีคอมมิตเหล่านี้
การอัปเดตการขึ้นต่อกัน
- อัปเดตให้ขึ้นอยู่กับ 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 มีคอมมิตเหล่านี้
การอัปเดตการขึ้นต่อกัน
- อัปเดตให้ขึ้นอยู่กับ Kotlin
1.5.21
เวอร์ชัน 1.0.0
28 กรกฎาคม 2021
androidx.compose.ui:ui-*:1.0.0
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0 มีคอมมิตเหล่านี้
ฟีเจอร์หลักของเวอร์ชัน 1.0.0
นี่คือ Compose เวอร์ชันเสถียรเวอร์ชันแรก โปรดดูรายละเอียดเพิ่มเติมในบล็อกการเปิดตัว Compose อย่างเป็นทางการ
ปัญหาที่ทราบ
หากคุณใช้ Android Studio Bumblebee Canary 4 หรือ AGP
7.1.0-alpha04
/7.1.0-alpha05
คุณอาจพบข้อขัดข้องต่อไปนี้java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
หากต้องการแก้ไข ให้เพิ่ม minSdkVersion เป็น 24 ขึ้นไปชั่วคราวในไฟล์
build.gradle
ปัญหานี้จะได้รับการแก้ไขใน Android Studio Bumblebee และ AGP7.1
เวอร์ชันถัดไป (b/194289155)
เวอร์ชัน 1.0.0-rc02
14 กรกฎาคม 2021
androidx.compose.ui:ui-*:1.0.0-rc02
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-rc02 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- ตอนนี้กล่องโต้ตอบจะทําตามลักษณะการปรับขนาดของแพลตฟอร์มแล้ว ตั้งค่า
usePlatformDefaultWidth
เป็น false เพื่อลบล้างลักษณะการทำงานนี้ (Iffaed, b/192682388)
เวอร์ชัน 1.0.0-rc01
1 กรกฎาคม 2021
androidx.compose.ui:ui-*:1.0.0-rc01
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-rc01 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- แยกโมดูล ui-tooling ออกเป็น
ui-tooling
และui-tooling-preview
(Iefa28, b/190649014)
การเปลี่ยนแปลง API
- นำฟีเจอร์ทดลอง
FocusManager#moveFocusIn
และFocusManager#moveFocusOut
ที่เลิกใช้งานแล้วออก (I227d7, b/170154986, b/186567354, b/168510304) - ตอนนี้ Canvas รองรับพารามิเตอร์ contentDescription เพื่อ การช่วยเหลือพิเศษแล้ว (Ib547c)
- เราได้เปลี่ยนชื่อ
useDefaultMaxWidth
ในPopupProperties
เป็นusePlatformDefaultWidth
แล้ว (I05710) - ตอนนี้กล่องโต้ตอบใช้ความกว้างของทั้งหน้าจอได้แล้ว (I83929, b/190810877)
- เพิ่มการรองรับการแสดงสี HSV และ HSL ในเวอร์ชันทดลอง (Id7cf8, b/180731008)
การเปลี่ยนแปลงลักษณะการทำงาน
- ตอนนี้ Compose
@Preview
มีLocalActivityResultRegistryOwner
ที่ช่วยให้คุณ แสดงตัวอย่าง Composable ที่ใช้ API เช่นrememberLauncherForActivityResult()
ซึ่งขึ้นอยู่กับ การมีอยู่ของเจ้าของนั้น (Ib13d1, b/185693006) - ตอนนี้ Compose
@Preview
มีLocalOnBackPressedDispatcherOwner
ที่ช่วยให้คุณ แสดงตัวอย่าง Composables ที่ใช้ API เช่นBackHandler
ซึ่งขึ้นอยู่กับเจ้าของที่มีอยู่ได้ (Ia1c05, b/185693006)
การแก้ไขข้อบกพร่อง
- ย้าย
InfiniteAnimationPolicy
ไปยังandroidx.compose.ui:ui
(I5eb09, b/160602714) แล้ว - เราได้นำ AnimatedImageVector ออกชั่วคราวเพื่อเปลี่ยนโครงสร้างโมดูล (I41906, b/160602714)
เวอร์ชัน 1.0.0-beta09
16 มิถุนายน 2021
androidx.compose.ui:ui-*:1.0.0-beta09
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-beta09 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เปลี่ยน enum Role และ LiveRegionMode เป็นคลาสอินไลน์ ที่มีตัวสร้างส่วนตัว (Id1890)
- ระบบจะแปลง KeyboardCapitalization เป็นคลาสอินไลน์ (Id5a1c)
- เปลี่ยน HapticFeedbackType เป็นคลาสแบบอินไลน์ (I255ec)
- Modifier.pointerInteropFilter เป็น @ExperimentalComposeUiApi (Iede6c)
- ตอนนี้ TextAlign, FontSynthesis และ TextDirection เป็นคลาสแบบอินไลน์แล้ว (I212fe)
- เปลี่ยน TextOverflow เป็นคลาสอินไลน์ (I433af)
- ตอนนี้ FontStyle เป็นคลาสแบบอินไลน์แล้ว (I9e48b)
การแก้ไขข้อบกพร่อง
- ตอนนี้ค่าคงที่หลักคือ @ExperimentalComposeUiApi โค้ดที่ใช้สามารถประกาศค่าคงที่ส่วนตัวก่อนการทำให้เสถียรได้ (Ia5d48)
- ตอนนี้คุณเรียกใช้การทดสอบ Compose ใน Robolectric ได้แล้ว ข้อจำกัดต่อไปนี้
ที่เราพบจนถึงตอนนี้มีดังนี้
- ไม่มีบิตแมปดั้งเดิม
ImageBitmap()
จึงทำให้เกิด NullPointerException - ไม่มีการวาด ดังนั้น
captureToImage()
จะรอการส่งผ่านการวาดครั้งถัดไปอย่างไม่มีกำหนด (กล่าวคือเกิดการหยุดชะงัก) - ไม่มีการโหลดแบบอักษร ดังนั้นระบบจะวัดข้อความอย่างไม่ถูกต้อง อักขระทั้งหมด มีความสูงคงที่ประมาณ 20 พิกเซลและความกว้าง 1 พิกเซล
ComposeTestRule.waitUntil {}
จะไม่เรียกใช้ชุดข้อความหลักขณะรอ ซึ่งทำให้มีประสิทธิภาพเหมือนกับComposeTestRule.mainClock.advanceTimeUntil {}
คาดว่าจะพบข้อจำกัดเพิ่มเติมในอนาคต (I284fa)
- ไม่มีบิตแมปดั้งเดิม
เพิ่มกฎโปรไฟล์
รุ่นนี้เพิ่มกฎของโปรไฟล์ลงในโมดูลการเขียนต่อไปนี้ (I14ed6)
- androidx.compose.animation
- androidx.compose.animation-core
- androidx.compose.foundation
- androidx.compose.foundation-layout
- androidx.compose.material
- androidx.compose.material-ripple
- androidx.compose.runtime
- androidx.compose.ui
- androidx.compose.ui.geometry
- androidx.compose.ui.graphics
- androidx.compose.ui.text
- androidx.compose.ui.text
- androidx.compose.ui.unit
- androidx.compose.ui.util
กฎโปรไฟล์คืออะไร
กฎของโปรไฟล์สำหรับไลบรารีจะระบุไว้ในไฟล์ข้อความ
baseline-prof.txt
ซึ่งอยู่ในsrc/main
หรือไดเรกทอรีที่เทียบเท่า ไฟล์จะระบุกฎต่อบรรทัด โดยในกรณีนี้กฎคือรูปแบบสำหรับการจับคู่กับเมธอดหรือคลาสในไลบรารี ไวยากรณ์ของกฎเหล่านี้เป็นซูเปอร์เซ็ตของรูปแบบโปรไฟล์ ART ที่มนุษย์อ่านได้ ซึ่งใช้เมื่อใช้adb shell profman --dump-classes-and-methods ...
กฎเหล่านี้มี 2 รูปแบบเพื่อกำหนดเป้าหมายไปยังเมธอดหรือคลาสกฎของเมธอดจะมีรูปแบบดังนี้
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
และกฎของชั้นเรียนจะมีรูปแบบดังนี้
<CLASS_DESCRIPTOR>
โดย
<FLAGS>
คืออักขระH
,S
และP
อย่างน้อย 1 ตัวเพื่อระบุว่าควรติดแฟล็กวิธีนี้เป็น "มาแรง" "สตาร์ทอัป" หรือ "หลังสตาร์ทอัป" หรือไม่<CLASS_DESCRIPTOR>
คือตัวอธิบายสำหรับคลาสที่เมธอดเป้าหมายเป็นของ เช่น คลาสandroidx.compose.runtime.SlotTable
จะมีตัวอธิบายเป็นLandroidx/compose/runtime/SlotTable;
<METHOD_SIGNATURE>
คือลายเซ็นของเมธอด ซึ่งรวมถึงชื่อ ประเภทพารามิเตอร์ และประเภทการคืนค่าของเมธอด เช่น เมธอดfun isPlaced(): Boolean
ในLayoutNode
มีลายเซ็นisPlaced()Z
รูปแบบเหล่านี้มีไวลด์การ์ด (
**
,*
และ?
) ได้เพื่อให้กฎเดียวครอบคลุมหลายเมธอดหรือคลาส
กฎมีหน้าที่อะไร
เมธอดที่มีแฟล็ก
H
แสดงว่าเมธอดนี้เป็นเมธอด "ยอดนิยม" และควรคอมไพล์ล่วงหน้าเมธอดที่มีแฟล็ก
S
แสดงว่าเป็นเมธอดที่เรียกใช้เมื่อเริ่มต้น และควรคอมไพล์ล่วงหน้าเพื่อหลีกเลี่ยงค่าใช้จ่ายในการคอมไพล์และตีความเมธอดเมื่อเริ่มต้นเมธอดที่มีแฟล็ก
P
แสดงว่าเป็นเมธอดที่เรียกใช้หลังจากเริ่มต้นคลาสที่มีอยู่ในไฟล์นี้บ่งบอกว่ามีการใช้คลาสดังกล่าวในระหว่างการเริ่มต้นระบบ และควรจัดสรรล่วงหน้าในฮีปเพื่อหลีกเลี่ยงค่าใช้จ่ายในการโหลดคลาส
ระบบนี้ทำงานอย่างไร
- ไลบรารีสามารถกำหนดกฎเหล่านี้ซึ่งจะรวมอยู่ในอาร์ติแฟกต์ AAR เมื่อสร้างแอปที่มีอาร์ติแฟกต์เหล่านี้ ระบบจะผสานรวมกฎเหล่านี้เข้าด้วยกันและใช้กฎที่ผสานรวมเพื่อสร้างโปรไฟล์ ART แบบไบนารีขนาดกะทัดรัดที่เฉพาะเจาะจงสำหรับแอปนั้นๆ จากนั้น ART จะใช้ประโยชน์จากโปรไฟล์นี้เมื่อติดตั้งแอปในอุปกรณ์เพื่อคอมไพล์ล่วงหน้าซึ่งเป็นชุดย่อยที่เฉพาะเจาะจงของแอปพลิเคชันเพื่อปรับปรุงประสิทธิภาพของแอปพลิเคชัน โดยเฉพาะการเรียกใช้ครั้งแรก โปรดทราบว่าการดำเนินการนี้จะไม่มีผลกับแอปพลิเคชันที่แก้ไขข้อบกพร่องได้
เวอร์ชัน 1.0.0-beta08
2 มิถุนายน 2021
androidx.compose.ui:ui-*:1.0.0-beta08
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-beta08 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ระบบจะแทนที่
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 และ Text semantics จะไม่ใช่ค่าเดียวอีกต่อไป แต่จะเป็นรายการ ซึ่งจะช่วยให้ผสานรวมได้โดยไม่ต้องต่อกัน นอกจากนี้ ยังมี API การทดสอบที่ดีขึ้นเพื่อใช้ประโยชน์จากการเปลี่ยนแปลงเหล่านี้ (Ica6bf, b/184825850)
Modifier.focusModifier()
เลิกใช้งานแล้วและแทนที่ด้วยModifier.focusTarget()
(I6c860)Modifier.onSizeChanged()
และModifier.onGloballyPositioned()
ไม่ใช่ฟังก์ชันแบบอินไลน์อีกต่อไป (I727f6, b/186109675)- ระบบจะแทนที่
KeyboardType
enum ด้วยคลาสแบบอินไลน์ (I73045, b/187055290) - แทนที่ Enum
FocusState
ด้วยอินเทอร์เฟซFocusState
(Iccc1a, b/187055290) - ระบบจะแทนที่ enum ImeAction ด้วยคลาสอินไลน์ (I18be5, b/187055290)
PlaceholderVerticalAlign
จะได้รับการแปลงเป็นคลาสแบบอินไลน์ (If6290)- ตอนนี้ TextUnitType เป็นคลาสแบบอินไลน์แล้ว (I4cba9)
AnnotatedString.withAnnotation
ตอนนี้ฟังก์ชันต่างๆ อยู่ใน ExperimentalTextApi แทนที่จะเป็น ExperimentalComposeApi (I0cd0a)- ตอนนี้ตัวสร้าง TextUnit ที่มี TextUnitType จะเป็น ExperimentalTextApi แทนที่จะเป็น ExperimentalComposeApi
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องที่เกิดขึ้นในเบต้า 07 ซึ่งรายการ LazyColumn/Row แสดงบางส่วนหลังจากเลื่อน (I8c9ac, b/188566058)
- ตอนนี้
detectDragGesures
,detectVerticalGestures
และdetectHorizontalGestures
จะใช้การเปลี่ยนแปลงตำแหน่งโดยอัตโนมัติ คุณจึงไม่จำเป็นต้องเรียกใช้ change.consumePositionChange ในการเรียกกลับ onDrag (I42fc4, b/185096350, b/187320697) - แก้ไข LayoutModifiers ที่แสดงเส้นแนว แก้ไขข้อบกพร่องที่ทำให้ระบบไม่วัดผู้ปกครองซ้ำเมื่อมีการเปลี่ยนแปลงเส้นแนวของบุตรหลาน (I4401f, b/174315652)
Modifier.onGloballyPositioned()
มีการเปลี่ยนแปลงเพื่อรายงานพิกัดของตัวแก้ไขนี้ในเชนตัวแก้ไข ไม่ใช่พิกัดเลย์เอาต์หลังจากใช้ตัวแก้ไขทั้งหมด ซึ่งหมายความว่าตอนนี้ลำดับของตัวแก้ไขจะส่งผลต่อพิกัดที่จะรายงาน (Ieb67d, b/177926591)
เวอร์ชัน 1.0.0-beta07
18 พฤษภาคม 2021
androidx.compose.ui:ui-*:1.0.0-beta07
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-beta07 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มอินเทอร์เฟซ
ViewRootForInspector
สำหรับใช้ในเครื่องมือตรวจสอบ (Ib70df) SubcomposeLayoutState
รองรับการตั้งค่าจำนวนช่องที่ใช้ซ้ำได้แล้ว เลย์เอาต์จะเก็บช่องโฆษณาไว้ตามจำนวนนี้แทนที่จะทิ้ง เพื่อให้ใช้ช่องโฆษณานั้นซ้ำได้ในครั้งต่อไปที่เราต้องการช่องโฆษณาใหม่ (Ieb981)- ระบบจะแทนที่ enum KeyEventType ด้วยคลาสแบบอินไลน์ (Id670a, b/187055290)
- ระบบจะแทนที่
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)- เพิ่ม API การช่วยเหลือพิเศษ CollectionInfo และ CollectionItemInfo ที่อนุญาตให้ทำเครื่องหมายคอลเล็กชันและรายการของคอลเล็กชันสำหรับบริการการช่วยเหลือพิเศษ (Id54ef, b/180479017)
- เพิ่ม
SemanticsActions.ScrollToIndex
เพื่อเลื่อนรายการที่มี รายการที่จัดทำดัชนีไปยังรายการที่มีดัชนีที่เฉพาะเจาะจง และSemanticsProperties.IndexForKey
เพื่อรับดัชนีของรายการในรายการ ที่มีรายการที่ใช้คีย์ ทั้ง 2 การดำเนินการนี้จะดำเนินการโดย LazyList- เพิ่ม
SemanticsNodeInteraction.performScrollToIndex
ที่เลื่อนรายการไปยังดัชนีที่ระบุ และSemanticsNodeInteraction.performScrollToKey
ที่เลื่อนรายการไปยังรายการที่มีคีย์ที่ระบุ (I4fe63, b/178483889, b/161584524)
- เพิ่ม
- เพิ่ม ownerViewId ไปยัง GraphicLayerInfo (I19f62)
- เพิ่มการโอเวอร์โหลด Font() เพื่อโหลดแบบอักษร จากเนื้อหา ไฟล์ และ FileDescriptor (I5d382)
- เพิ่ม API การช่วยเหลือพิเศษ
error
ที่อนุญาตให้ทำเครื่องหมายโหนดที่มีข้อมูลที่ไม่ถูกต้อง (I12997, b/180584804, b/182142737) - เพิ่มการโอเวอร์โหลด
Font()
เพื่อโหลดแบบอักษร จากเนื้อหา, File และ FileDescriptor (I43007) - รองรับการบันทึก AnnotatedString ไปยัง
TextFieldValue.Saver
เพิ่มฟังก์ชันยูทิลิตีaddTtsAnnotation
และ withAnnotation ลงในAnnotatedString.Builder
(I8cbdc, b/178446304) - เพิ่มฟังก์ชันตัวสร้าง TextUnit
TextUnit(value: Float, type: TextUnitType)
(I7ecce, b/178446304)
เวอร์ชัน 1.0.0-beta05
21 เมษายน 2021
androidx.compose.ui:ui-*:1.0.0-beta05
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-beta05 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม
FocusManager.moveFocus(In)
และFocusManager.moveFocus(Out)
เวอร์ชันทดลอง (Ic5534, b/183746743) - เพิ่ม
performTextInputSelection
API (I2dcbb, b/178510628) เวอร์ชันทดลอง - อินเทอร์เฟซ
InputEventCallback
เลิกใช้งานแล้ว ไม่สามารถใช้อินเทอร์เฟซใน API สาธารณะใดๆ และไม่มีการใช้งานในโค้ด (I34a02, b/184003208) - ฟังก์ชัน
TextLayoutResult/createTextLayoutResult
ที่เลิกใช้งานแล้ว เป็นฟังก์ชันสาธารณะที่ไม่ได้ใช้ซึ่งเพิ่มเข้ามา เพื่อการทดสอบ ฟังก์ชันนี้ไม่ได้ทำอะไรที่ใช้ได้กับ Compose text APIs ตอนนี้เราเลิกใช้งานฟังก์ชันนี้แล้วและจะ นำออกในภายหลัง (I80413)
การแก้ไขข้อบกพร่อง
- แก้ไขการดำเนินการเลื่อนการช่วยเหลือพิเศษ
ACTION_SCROLL_FORWARD
,ACTION_SCROLL_BACKWARD
,accessibilityActionScrollLeft
,accessibilityActionScrollUp
,accessibilityActionScrollRight
และaccessibilityActionScrollDown
แทนที่จะเลื่อนไปจนสุดของ เลื่อนได้ ตอนนี้จะเลื่อนทีละหน้าจอในทิศทางที่กำหนด (Ieccb0) - ตอนนี้ไฟล์ AndroidManifest จาก ui-test-manifest และ ui-tooling-data เข้ากันได้กับ Android 12 แล้ว (I6f9de, b/184718994)
เวอร์ชัน 1.0.0-beta04
7 เมษายน 2021
androidx.compose.ui:ui-*:1.0.0-beta04
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-beta04 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เปลี่ยนชื่อ
hideSoftwareKeyboard
และshowSoftwareKeyboard
ในSoftwareKeyboardController
เป็นhide()
และshow()
ตามลำดับ- ระบุอินเทอร์เฟซ CompositionLocal แบบเต็มสำหรับ LocalSoftwareKeyboardController เพื่อให้ตั้งค่าได้ (มีประโยชน์อย่างยิ่งในการทดสอบ) (I579a6)
- เพิ่ม API การช่วยเหลือพิเศษ LiveRegion หากมีการทำเครื่องหมายโหนดเป็นภูมิภาคที่มีการเผยแพร่ บริการการช่วยเหลือพิเศษ จะแจ้งให้ผู้ใช้ทราบเกี่ยวกับการเปลี่ยนแปลงโดยอัตโนมัติ (Idcf6f, b/172590946)
- เปิดตัว TextOverflow.Visible (Ic8f89)
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาเมื่อวางตำแหน่งไอเทมของ
LazyColumn
/LazyRow
ที่อยู่บริเวณขอบไม่ถูกต้องหลังจากปัดอย่างรวดเร็ว (Ie4d13, b/183877420) - ตอนนี้
AndroidViewBinding
จะนำ Fragment ที่ขยายผ่านFragmentContainerView
ออกอย่างถูกต้องเมื่อ นำAndroidViewBinding
ออกจากลำดับชั้นของ Compose (Ib0248, b/179915946) AndroidViewBinding
จะซ้อนFragmentContainerView
ที่ขยายผ่านFragmentContainerView
ได้อย่างถูกต้องเมื่อComposeView
อยู่ภายในFragment
ซึ่งจะช่วยแก้ไขปัญหาเกี่ยวกับการบันทึกและกู้คืนสถานะของ Fragment เหล่านั้น (I70eb0, b/179915946)- ตอนนี้ Compose ViewBinding ขึ้นอยู่กับ
Fragment
1.3.2
และตอนนี้จะแสดง Fragment ที่ขยายผ่านFragmentContainerView
อย่างสม่ำเสมอหลังจากการเปลี่ยนแปลงการกำหนดค่า (I0743d, b/179915946)
เวอร์ชัน 1.0.0-beta03
24 มีนาคม 2021
androidx.compose.ui:ui-*:1.0.0-beta03
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-beta03 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เลื่อนการตรวจสอบการอ้างอิง ViewTree ของ ComposeView (I8dbbf, b/182466548)
- เพิ่มพารามิเตอร์
startX
/endX
และstartY
/endY
ที่ไม่บังคับ ลงในฟังก์ชันswipeUp
/swipeDown
/swipeLeft
/swipeRight
ในGestureScope
(I49e2d, b/182063305)
เวอร์ชัน 1.0.0-beta02
10 มีนาคม 2021
androidx.compose.ui:ui-*:1.0.0-beta02
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-beta02 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม
LocalSoftwareKeyboardController
API การเขียนในเครื่อง ใหม่เพื่อแทนที่อินเทอร์เฟซ SoftwareKeyboardController ก่อนหน้าใน TextField (I5951e, b/168778053) - เพิ่ม
LocalSoftwareKeyboardController
API การเขียนในเครื่อง ใหม่เพื่อแทนที่อินเทอร์เฟซ SoftwareKeyboardController ก่อนหน้าใน TextField (I84472, b/168778053) - เราได้นำ
SemanticsMatcher
ต่อไปนี้ออกแล้วhasWidth(width, tolerance)
hasHeight(height, tolerance)
hasLeftPosition(left, tolerance)
hasTopPosition(top, tolerance)
hasRightPosition(right, tolerance)
hasBottomPosition(bottom, tolerance)
(If16bd)
- ทำเครื่องหมาย
SemanticsMatchers
ต่อไปนี้เป็น @ExperimentalTestApi:hasWidth(width, tolerance)
hasHeight(height, tolerance)
hasLeftPosition(left, tolerance)
hasTopPosition(top, tolerance)
hasRightPosition(right, tolerance)
hasBottomPosition(bottom, tolerance)
(Ia600c)
- เพิ่ม
SemanticsMatcher
ต่อไปนี้hasWidth(width, tolerance)
hasHeight(height, tolerance)
hasLeftPosition(left, tolerance)
hasTopPosition(top, tolerance)
hasRightPosition(right, tolerance)
hasBottomPosition(bottom, tolerance)
(I2f502)
การแก้ไขข้อบกพร่อง
- บังคับใช้ข้อจำกัดในการใช้งาน API เวอร์ชันทดลองแบบสาธารณะ (I6aa29, b/174531520)
androidx.compose.ui:ui
ไม่ได้ขึ้นอยู่กับ AppCompat หรือ Fragment อีกต่อไป หากคุณใช้ ComposeView ในแอปพลิเคชัน และใช้ Fragment และ/หรือ AppCompat โปรดตรวจสอบว่าคุณใช้ AppCompat 1.3 ขึ้นไป / Fragment 1.3 ขึ้นไป เนื่องจากต้องใช้เวอร์ชันเหล่านี้เพื่อตั้งค่าวงจรและเจ้าของสถานะที่บันทึกไว้อย่างถูกต้อง ซึ่งจำเป็นสำหรับ ComposeView (I1d6fa, b/161814404)- แก้ไข
rememberSaveable { mutableStateOf(0) }
ที่ใช้งานไม่ได้เมื่อใช้ภายในปลายทางของ Navigation Compose (I1312b, b/180042685, b/180701630) - เพิ่ม
LocalSoftwareKeyboardController
API การเขียนในเครื่อง ใหม่เพื่อแทนที่อินเทอร์เฟซ SoftwareKeyboardController ก่อนหน้าใน TextField (I658b6, b/168778053) - แก้ไข NoSuchElementException ที่พบได้ยากใน
ComposeRootRegistry
tearDownRegistry()
(Iddce1)
เวอร์ชัน 1.0.0-beta01
24 กุมภาพันธ์ 2021
androidx.compose.ui:ui-*:1.0.0-beta01
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-beta01 มีคอมมิตเหล่านี้
นี่คือรุ่นแรกของ Compose 1.0.0 เบต้า
การเปลี่ยนแปลง API
- เพิ่ม Callback 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() - สำหรับกรณีการใช้งานที่ซับซ้อน คุณสามารถใช้ InteractionSource.interactions เพื่อสังเกตสตรีมของการโต้ตอบได้ ดูข้อมูลเพิ่มเติมได้ในเอกสารประกอบและตัวอย่าง InteractionSource
- (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
- เพิ่มอินเทอร์เฟซ AccessibilityMananger และ LocalAccessibilityMananger ใน CompositionLocals (I53520)
- นำเมธอด LayoutCoordinates ที่เลิกใช้งานแล้วออก ให้ใช้ฟังก์ชันแทนพร็อพเพอร์ตี้สำหรับ positionInParent และ boundsInParent (I580ed, b/169874631, b/175142755)
- แทนที่นามแฝงประเภทด้วยประเภทพื้นฐาน
ColorStop
เปลี่ยนชื่อเป็นPair<Float, Color>
แล้วSpanStyleRange
เปลี่ยนชื่อเป็น `AnnotatedString.Rangeแล้ว ParagraphStyleRange
เปลี่ยนชื่อเป็นAnnotatedString.Range<ParagraphStyle>
แล้วStringAnnotation
เปลี่ยนชื่อเป็นAnnotatedString.Range<String>
แล้ว- (I8dd1a)
- สร้าง TextInputSession ใหม่สำหรับเซสชันอินพุตจากคอมโพเนนต์ข้อความระดับต่ำ เช่น CoreTextField (I8817f, b/177662148)
- ตอนนี้ Placeable จะแสดง measuredSize ซึ่งแสดงถึงขนาดที่เลย์เอาต์ย่อยวัดจริง ขนาดนี้อาจไม่เป็นไปตามข้อจำกัดในการวัด (Ib2729, b/172560206, b/172338608)
- เพิ่มตัวแก้ไข selectionGroup ที่อนุญาตให้ทำเครื่องหมายคอลเล็กชันของแท็บหรือ RadioButton เพื่อวัตถุประสงค์ในการช่วยเหลือพิเศษ (Ie5c29)
ตอนนี้คุณต้องระบุ
defaultFactory
สำหรับcompositionLocalOf
และstaticCompositionLocalOf
แทนที่จะระบุหรือไม่ก็ได้การเปลี่ยนแปลงนี้จะนำข้อผิดพลาดเกี่ยวกับประเภทที่อาจเกิดขึ้นสำหรับประเภทที่ไม่ใช่ Nullable ที่ไม่ได้ระบุ Factory เริ่มต้นออก ก่อนหน้านี้ จะให้การอ้างอิงเป็น Null สำหรับประเภทที่กำหนดให้ต้องมีค่า
สำหรับประเภทที่กำหนดให้เป็น Null ได้ ให้พิจารณาใส่
{ null }
เป็นค่าเริ่มต้น factoryเราไม่แนะนำให้ใช้ locales กับประเภทที่กำหนดให้ต้องมีค่า เว้นแต่จะระบุค่าเริ่มต้นที่เหมาะสมได้ หากไม่มีค่าเริ่มต้นที่เหมาะสม Lambda
defaultFactory
ควรส่งข้อยกเว้น อย่างไรก็ตาม การส่งข้อยกเว้นหมายความว่าผู้บริโภคของภาษาจะมี การอ้างอิงโดยนัยถึงการระบุภาษาดังกล่าว ซึ่งระบบประเภทไม่ได้บังคับ (Ifbd2a)นำเมธอดที่เลิกใช้งานแล้วออกจากโมดูล UI ออกแล้ว (I646f6)
มีการเปลี่ยนชื่อตัวแก้ไขขนาด เปลี่ยนชื่อ Modifier.width/height/size เป็น requiredWidth/requiredHeight/requiredSize เราเปลี่ยนชื่อ Modifier.preferredWidth/preferredHeight/preferredSize เป็น width/height/size (I5b414)
นำ
Modifier.tapGestureFilter
ออกแล้ว โปรดใช้Modifier.pointerInput { detectTapGestures(...) }
แทน (I266ed, b/175294473)นำการใช้งานบางส่วนออกจากระบบอินพุตของเคอร์เซอร์ วิธีที่แนะนำในการประสานการใช้งานบางส่วนคือ Modifier.nestedScroll (Ie9c9b)
ย้ายการปฐมนิเทศไปไว้ในแพ็กเกจพื้นฐานแล้ว 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 interface แทนคลาส ScrollableController (I4f5a5, b/174485541, b/175294473)
นำการรองรับ CustomEvens จาก PointerInputModifier ออกแล้ว (I02707, b/175294473)
SnapshotStateObserver ไม่ใช่เวอร์ชันทดลองอีกต่อไป (Id2e6a)
ลบ API ที่เลิกใช้งานไปก่อนหน้านี้บางรายการ (Ice5da, b/178633932)
เราได้นำ longPressGestureFilter และ doubleClickGestureFilter ออกแล้ว ให้ใช้ Modifier.pointerInput กับฟังก์ชันช่วย เช่น detectTapGestures (I2fedf, b/175294473)
นำ String.format API ออก ปรับโครงสร้างการใช้งานในเมธอด toString ต่างๆ เพื่อไม่ให้ใช้ String.format ภายใน (Id1290)
นำการยืนยัน dp ออก (I798d2)
นำ androidx.compose.runtime:runtime-dispatch ออก (I55feb)
ตอนนี้การดำเนินการกับข้อความจะตรวจสอบโฟกัสโดยอัตโนมัติ (I13777, b/179648629)
นำออก
runBlockingWithManualClock
(I15cdc, b/179664814)ตอนนี้ตำแหน่งการเลื่อนใน Modifier.verticalScroll()/horizontalScroll() จะแสดงด้วย Ints (I81298)
เราได้เปลี่ยนชื่อ FlingConfig เป็น FlingBehavior แล้ว ซึ่งตอนนี้อนุญาตให้ปรับแต่งภาพเคลื่อนไหวระงับแทนการลดทอนที่กำหนดไว้ล่วงหน้า (I02b86, b/175294473)
เพิ่มฟังก์ชันตัวช่วยที่เป็นประโยชน์ในการ ตั้งค่าการดำเนินการเดียวกันสําหรับการเรียกกลับ ImeAction ทั้งหมด (I63447, b/179226323)
นำการเรียกกลับ SoftwareKeyboardController ออกจากฟิลด์ข้อความทั้งหมด เพื่อแทนที่ด้วย API ใหม่ในเร็วๆ นี้ (Iae869, b/168778053)
ระบบจะไม่ใช้ FontSpan และ FontWeigthStyleSpan อีกต่อไปและจะนำออก (Ie5b56, b/177423444)
ทำการเปลี่ยนแปลง Material API ดังนี้
- เพิ่มพารามิเตอร์ contentPadding ลงใน Top/BottomAppBar เพื่อให้ปรับแต่งระยะเว้นเริ่มต้นได้
- จัดเรียงพารามิเตอร์ใหม่ใน BackdropScaffold เพื่อให้เป็นไปตามหลักเกณฑ์ของ API สำหรับพารามิเตอร์ที่จำเป็นซึ่งอยู่ก่อนพารามิเตอร์ที่ไม่บังคับ
- ย้ายพารามิเตอร์
icon
ใน BottomNavigationItem ไปไว้หลังselected
และonClick
- เปลี่ยนชื่อพารามิเตอร์
alwaysShowLabels
ใน BottomNavigationItem เป็นalwaysShowLabel
- เปลี่ยนชื่อพารามิเตอร์
bodyContent
ในคอมโพเนนต์บางรายการเป็นcontent
- พารามิเตอร์ที่จัดเรียงใหม่ใน
ButtonDefaults.buttonColors()
โปรดทราบว่าเนื่องจากประเภทของพารามิเตอร์ไม่ได้เปลี่ยนแปลง การดำเนินการนี้จึงไม่ทำให้เกิดข้อผิดพลาดในโค้ด โปรดตรวจสอบว่าคุณใช้พารามิเตอร์ที่มีชื่อหรืออัปเดตลำดับด้วยตนเอง มิฉะนั้นโค้ดจะทำงานไม่เหมือนเดิม - เพิ่มพารามิเตอร์
secondaryVariant
ไปยังdarkColors()
แล้ว โดยปกติแล้วสีนี้จะเหมือนกับsecondary
ในธีมมืด แต่เราได้เพิ่มสีนี้เพื่อให้มีความสอดคล้องกันและปรับแต่งเพิ่มเติมได้ - นำ ElevationDefaults และ animateElevation() ออกจาก API สาธารณะเนื่องจากไม่ได้ใช้กันทั่วไป / ไม่มีประโยชน์
- เปลี่ยนชื่อ
onValueChangeEnd
ในSlider
เป็นonValueChangeFinished
และทำให้เป็นค่าว่างได้ - เปลี่ยนชื่อพารามิเตอร์
text
ในSnackbar
เป็นcontent
เพื่อให้สอดคล้องกัน - เพิ่มพารามิเตอร์
contentPadding
ลงในDropdownMenuItem
เพื่ออนุญาตให้ปรับแต่งระยะเว้นเริ่มต้น และทำให้content
เป็นส่วนขยายในRowScope
- เปลี่ยนชื่อ
ModalDrawerLayout
เป็นModalDrawer
แล้ว - เปลี่ยนชื่อ
BottomDrawerLayout
เป็นBottomDrawer
แล้ว - (I1cc66)
การแก้ไขข้อบกพร่อง
- เพิ่ม API เพื่อใช้ทรัพยากร AnimatedVectorDrawable ใน Compose ใช้
animatedVectorResource เพื่อโหลด
<animated-vector>
XML เป็น AnimatedImageVector และเคลื่อนไหว ด้วย painterFor (I8ea91) - เพิ่มองค์ประกอบ LocalSoftwareKeyboardController ใหม่ API เพื่อแทนที่อินเทอร์เฟซ SoftwareKeyboardController ก่อนหน้าใน TextField (I658b6, b/168778053)
เวอร์ชัน 1.0.0-alpha12
10 กุมภาพันธ์ 2021
androidx.compose.ui:ui-*:1.0.0-alpha12
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha12 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- นำการรองรับ ViewGroups ออกจาก UiApplier แล้ว นำ Composable ของ emitView ที่เลิกใช้งานแล้วออก (Ifb214)
- ตอนนี้ Modifier.pointerInput ต้องใช้คีย์ remember เพื่อระบุ เมื่อควรเริ่มคอรเราทีนการตรวจหาอินพุตของเคอร์เซอร์ใหม่สำหรับ การอ้างอิงใหม่ (I849cd)
- เปลี่ยนชื่อ CompositionReference เป็น CompositionContext (I53fcb)
- เปลี่ยนชื่อ Bounds เป็น DpRect (I4b32a) แล้ว
- การอัปเดตการทดสอบ: hasText() จะตรวจสอบทั้งข้อความอินพุตและข้อความป้ายกำกับ/คำแนะนำ/ตัวยึดตำแหน่งในช่องข้อความ (Iab803)
- ย้าย Composable 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 เพื่อให้สอดคล้องกับ VectorPainter มากขึ้น และเพื่อให้การตั้งชื่อเป็นไปตาม รูปแบบการตั้งชื่อของ ImageBitmap และ ImageVector (Iba381, b/174565889)
- API การทดสอบสตริงย่อยที่ดีขึ้นโดยมีสตริงย่อยเป็นอาร์กิวเมนต์ (Icbe78)
- เพิ่ม
Modifier.focusOrder()
ที่ ยอมรับ FocusRequester โดยไม่ต้องระบุ ลำดับโฟกัสที่กำหนดเองเป็น Lambda ซึ่งจะมีประโยชน์ เมื่อเราต้องการระบุเฉพาะการอ้างอิง แต่ไม่ต้องการลำดับโฟกัสที่กำหนดเองสำหรับ Composable (I4f52a, b/179180978) - ComponentActivity.setContent ได้ย้ายไปอยู่ที่ androidx.activity.compose.setContent ในโมดูล androidx.activity:activity-compose แล้ว (Icf416)
- เราได้นำเมธอด Destructuring และ copy() ออกจาก คลาสหลายคลาสซึ่งไม่ค่อยมีการใช้งาน (I26702, b/178659281)
- ย้ายป๊อปอัปให้เป็นแพลตฟอร์มที่เฉพาะเจาะจง เราได้เปลี่ยนชื่อ AndroidPopupProperties เป็น PopupProperties และย้าย
isFocusable
ไปยังพารามิเตอร์focusable
ในPopupProperties
(Ieeea5) - ย้ายกล่องโต้ตอบให้เป็นแพลตฟอร์มที่เฉพาะเจาะจง เปลี่ยนชื่อ AndroidDialogProperties เป็น DialogProperties (I4ef69, b/179138130)
- ทำให้ LayoutNode เป็นแบบภายใน (I8a7b1, b/175103944)
- Constraints.enforce ถูกแทนที่ด้วย Constraints.constrain (I8b8ea)
- เลิกใช้งาน loadFontResource แล้ว โปรดใช้ fontResource แทน เลิกใช้งาน imageResource, loadImageResource, vectorResource และ loadVectorResource แล้ว ใช้ painterResource แทน (I6b809)
- ตอนนี้ความหมายของ ScrollAxisRange จะใช้ Lambda ที่แสดงผล Float แทนค่า Float โดยตรงเพื่อเหตุผลด้านประสิทธิภาพ (If4a35, b/178657186)
- เพิ่มซีแมนทิก 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) - เปลี่ยนชื่อ Ambients ให้ตรงกับการเปลี่ยนชื่อ Ambient -> CompositionLocal เดิมชื่อของ Ambients คือ AmbientFoo แต่ตอนนี้ชื่อของ CompositionLocals คือ LocalFoo (I2d55d)
- ตอนนี้เราได้นำ BaseTextField ที่เลิกใช้งานแล้วออกแล้ว โปรดใช้ BasicTextField แทน (I71368)
- ย้ายการเลือกไปยังมูลนิธิแล้ว (I7892b)
- เช่นเดียวกับที่เราเคยนำ
state { 0 }
composable ออกไปก่อนหน้านี้และตอนนี้เราแนะนำให้ใช้remember { mutableStateOf(0) }
เราจะนำsavedInstanceState { 0 }
composable ออก คุณควรใช้rememberSaveable { mutableStateOf(0) }
แทน และระบบจะบันทึกและกู้คืนโดยอัตโนมัติหากจัดเก็บประเภทที่ใช้ภายใน MutableState ไว้ใน Bundle ได้ หากก่อนหน้านี้คุณส่งออบเจ็กต์โปรแกรมประหยัดที่กำหนดเอง ตอนนี้คุณต้องใช้การโอเวอร์โหลดใหม่ของ rememberSaveable ซึ่งมีพารามิเตอร์stateSaver
การใช้งานจะมีลักษณะดังนี้val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) }
(Ib4c26, b/177338004) - เพิ่มความหมายของรหัสผ่านเพื่อการช่วยเหลือพิเศษ (I231ce)
- เพิ่ม ProgressBarRangeInfo.Indeterminate เพื่อทำเครื่องหมายแถบความคืบหน้าที่ไม่แน่นอนเพื่อการช่วยเหลือพิเศษ (I6fe05)
- เราได้เลิกใช้งานยูทิลิตี
emptyContent()
และ(@Composable () -> Unit).orEmpty()
แล้ว เนื่องจากยูทิลิตีดังกล่าวไม่มีผลต่อประสิทธิภาพหรือคุณค่าในเชิงบวกอีกต่อไป (I0484d) snapshotFlow
และwithMutableSnapshot
ไม่ใช่ฟีเจอร์ ทดลองอีกต่อไป (I6a45f)- ตอนนี้คุณปิด Recomposers ได้แล้ว Recomposer ที่ปิดอยู่จะ ทำการ Recomposition ต่อไปจนกว่าโคโรทีนของ Composable ลูกจะเสร็จสมบูรณ์ เปลี่ยนชื่อ Recomposer.shutDown เป็น cancel เพื่อให้แตกต่างจาก close (Ib6d76)
- เราได้เปลี่ยนชื่อ UiSavedStateRegistry เป็น SaveableStateRegistry, AmbientUiSavedStateRegistry เป็น AmbientSaveableStateRegistry และย้ายทั้ง 2 รายการไปยังแพ็กเกจ androidx.compose.runtime.saveable (I30224)
- เปลี่ยนชื่ออาร์ติแฟกต์ androidx:compose:runtime:runtime-saved-instance-state เป็น androidx:compose:runtime:runtime-saveable (I6dcac)
- ระบบจะลบ API ที่เลิกใช้งานมานานหลายรายการในแพ็กเกจ ui (I2f2dc)
- ตอนนี้เราเลิกใช้งานอาร์ติแฟกต์ compose:runtime-dispatch แล้ว ตอนนี้ MonotonicFrameClock อยู่ใน compose:runtime และ AndroidUiDispatcher อยู่ใน compose:ui (Ib5c36)
- คลาส Outline.* ไม่ใช่คลาสข้อมูลอีกต่อไป (I4879e, b/178001427)
- นำ
view.captureToImage()
ออกโดยไม่มีการแทนที่ (I7fcd2) - เปิดตัว ColorMatrix API ที่ใช้ เพื่อแก้ไขค่า RGB ของเนื้อหาต้นฉบับ ปรับโครงสร้าง ColorFilter API ให้เป็น อินเทอร์เฟซและตรงกับการใช้งาน ของ PathEffect (Ica1e8)
- เพิ่มพารามิเตอร์ layoutDirection ลงใน createOutline ของ Shape ซึ่งช่วยให้สร้างรูปร่างที่รับรู้ทิศทางของเลย์เอาต์ได้ (I57c20, b/152756983)
- เลิกใช้งาน onImeActionPerformed แล้ว ให้ใช้ KeyboardActions แทน (If0bbd, b/179071523)
- เปิดตัวองค์ประกอบบริบทโครูทีน
InfiniteAnimationPolicy
ที่จะใช้ในภาพเคลื่อนไหวแบบไม่มีที่สิ้นสุด โดยค่าเริ่มต้น ระบบจะไม่ติดตั้งนโยบายใดๆ ยกเว้นเมื่อเรียกใช้การทดสอบด้วยComposeTestRule
(I50ec4, b/151940543) - นำ canDrag ออกจาก Modifier.scrollable แล้ว (Id66e7, b/175294473)
- เปลี่ยนชื่อ LayoutCoordinates.parentCoordinates เป็น LayoutCoordinates.parentLayoutCoordinates เพื่อให้มีพร็อพเพอร์ตี้ parentCoordinates ใหม่ พร็อพเพอร์ตี้ parentCoordinates ตอนนี้มี LayoutCoordintes ของตัวแก้ไขระดับบนแล้ว ซึ่งจะช่วยให้มี Use Case ที่สมบูรณ์ยิ่งขึ้นสำหรับ onSizeChanged() และ onGloballyPositioned() (Idfbfd, b/177926591)
- เลิกใช้งาน tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter และ pressIndicaitonGestureFilter แล้ว โปรดใช้ Modifier.clickable หรือ Modifier.pointerInput กับฟังก์ชัน detectTapGestures แทน (I6baf9, b/175294473)
- นำ unregisterProvider ของ SaveableStateRegistry ออกแล้ว แต่ตอนนี้ registerProvider() จะแสดงออบเจ็กต์ SaveableStateRegistry.Entry ซึ่งคุณใช้เพื่อยกเลิกการลงทะเบียนได้ (Ic4274, b/178583739)
- เราได้เปลี่ยนชื่อ rememberSavedInstanceState() เป็น rememberSaveable() และย้ายไปยังแพ็กเกจ androidx.compose.runtime.saveable (I1366e, b/177338004)
- นำ CoreText และ CoreTextField ออกจาก API สาธารณะ
- นำการโอเวอร์โหลด SelectionContainer ที่เลิกใช้งานแล้วออก
- (I99c19)
- การทดสอบที่ใช้ Compose ในลำดับชั้นที่ เพิ่ม/นำออกจาก WindowManager โดยตรงจะมีความเสถียรมากขึ้น (Ie81ed, b/175765614)
- นำ Recomposer.current() ออกแล้ว [Abstract]ตอนนี้ ComposeView จะ ใช้ Recomposer ที่สร้างขึ้นแบบเลื่อนเวลาและมีขอบเขตระดับหน้าต่างโดยค่าเริ่มต้น ซึ่งขับเคลื่อนโดย ViewTreeLifecycleOwner สำหรับหน้าต่าง ระบบจะหยุดการสร้างใหม่และเครื่องหมายภาพเคลื่อนไหวตาม withFrameNanos ชั่วคราวขณะที่หยุดวงจรการทำงานของโฮสต์ (I38e11)
- Recomposer.runningRecomposers ตอนนี้มี StateFlow ทั่วโลกของ RecomposerInfo แบบอ่านอย่างเดียวสำหรับการสังเกตสถานะการจัดองค์ประกอบที่กำลังดำเนินการใน กระบวนการ ควรใช้ API นี้แทน Recomposer.current() ซึ่งตอนนี้เลิกใช้งานแล้ว (If8ebe)
- ย้าย Saver, listSaver(), mapSaver(), autoSaver จาก androidx.compose.runtime.savedinstancestate ไปยัง androidx.compose.runtime.saveable (I77fe6)
- EditCommands ยอมรับ AnnotatedString อย่างไรก็ตาม การเปลี่ยนแปลงนี้เป็น การเปลี่ยนแปลง API เท่านั้น และระบบยังไม่ได้ ใช้การแก้ไขข้อความหลายสไตล์ (I4c3ea)
- ระบบได้นำเวลาทำงานและระยะเวลาออกแล้ว (Ib9bf4, b/177420019)
- ย้าย CompositionData.asTree() และ API ที่เกี่ยวข้อง ไปยังโมดูล ui-tooling-data แยกต่างหากและทำเครื่องหมายเป็นเวอร์ชันทดลอง (Ic95b8)
- เราเปลี่ยนชื่อพารามิเตอร์ใน RounderCornerShape, CutCornerShape และ CornerBasedShape จากซ้าย/ขวาเป็นเริ่ม/สิ้นสุดเพื่อรองรับการมิเรอร์อัตโนมัติของรูปร่างในทิศทาง RTL เราได้เปิดตัว AbsoluteRounderCornerShape และ AbsoluteCutCornerShape สำหรับกรณีที่ไม่ต้องการการมิเรอร์อัตโนมัติ (I61040, b/152756983)
เราได้รีแฟคเตอร์ API ที่ปลั๊กอินคอมไพเลอร์ Compose กำหนดเป้าหมาย เพื่อใช้อินเทอร์เฟซแทน คลาสที่เฉพาะเจาะจง นอกจากนี้ อินเทอร์เฟซยังไม่ใช้พารามิเตอร์ประเภทอีกต่อไป
การเปลี่ยนแปลงนี้เป็นการเปลี่ยนแปลงภายในซึ่งไม่ควรส่งผลต่อความเข้ากันได้ของซอร์สโค้ด แต่เป็นการเปลี่ยนแปลงแบบไบนารีที่ทำให้เกิดการหยุดทำงาน (I3b922, b/169406779)
นำฟังก์ชัน StringBuilder.deleteAt ที่ตั้งค่าเป็นสาธารณะโดยไม่ตั้งใจออก (Id6ed9)
การแก้ไขข้อบกพร่อง
- ตอนนี้ ComposeView ที่วางไว้ในลำดับชั้นของ View ซึ่งเป็นองค์ประกอบย่อยของ องค์ประกอบอื่นจะโฮสต์องค์ประกอบย่อยของบรรพบุรุษ (I92883)
- อัปเดต API imageFromResource ของ Compose เพื่อใช้แคช Drawable ของทรัพยากรซ้ำ เมื่อโหลดออบเจ็กต์ ImageBitmap (If3627, b/178751994)
เวอร์ชัน 1.0.0-alpha11
28 มกราคม 2021
androidx.compose.ui:ui-*:1.0.0-alpha11
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha11 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เราได้ปรับปรุง WithConstraints เป็น BoxWithConstraints และย้ายไปที่ foundation.layout (I9420b, b/173387208)
- เลิกใช้งาน Key.DPadUp แล้ว ให้ใช้ Key.DirectionUp แทน (Iab335, b/177954892)
- อินเทอร์เฟซเจ้าของจะอยู่ภายในนับจากนี้ (If8e35)
- เพิ่ม API FocusManager.moveFocus() เพื่อย้ายโฟกัสโดยอัตโนมัติ (I045cb, b/177681839)
- เปลี่ยน PopupPositionProvider ให้ใช้พิกัดที่สัมพันธ์กับหน้าต่าง ไม่ใช่พิกัดส่วนกลาง เปลี่ยนชื่อ parentGlobalBounds เป็น anchorBounds และเปลี่ยน windowGlobalBounds เป็น windowSize: IntSize (I2994a)
- ระบบจะแทนที่ระยะเวลาและเวลาทำงานด้วยมิลลิวินาทีแบบยาว และขั้นตอนนี้จะนำการอ้างอิงอินพุตของเคอร์เซอร์ในคลาสเหล่านั้นออก (Ia33b2, b/175142755, b/177420019)
- AmbientSavedStateRegistryOwner ได้รับการเพิ่มในลักษณะเดียวกับ AmbientLifecycleOwner และ AmbientViewModelStoreOwner ที่มีอยู่แล้ว (I9a3e8, b/176756365)
- อัปเดตกราฟิกเวกเตอร์ API เพื่อรองรับการแยกวิเคราะห์การปรับสี ที่ใช้กับรูทของกราฟิกเวกเตอร์ (Id9d53, b/177210509)
- เพิ่ม toolType ลงใน PointerInputChange เพื่อแยกความแตกต่างของอุปกรณ์ (Iac787, b/175142755)
- เปลี่ยนชื่อ AmbientWindowManager เป็น AmbientWindowInfo (I2686a, b/177084714, b/177084983)
- เลิกใช้งานเมธอดพิกัดส่วนกลางและสร้างเมธอดพิกัดใหม่ตามหน้าต่าง (Iee284)
- เพิ่ม Modifier.toolingGraphicsLayer ซึ่งจะเพิ่มตัวปรับแต่งเลเยอร์กราฟิกเมื่อเปิดการตรวจสอบ (I315df)
- ตอนนี้ FocusRequester.createRefs มีเครื่องหมายระบุว่าอยู่ในขั้นทดลองเนื่องจากอาจมีการเปลี่ยนแปลง (I2d898, b/177000821)
- เปลี่ยนชื่อ SemanticsPropertyReceiver.hidden เป็น invisibleToUser และทำเครื่องหมาย @ExperimentalComposeUiApi เปลี่ยนชื่อ AccessibilityRangeInfo เป็น ProgressBarRangeInfo เปลี่ยนชื่อ stateDescriptionRange เป็น progressBarRangeInfo เปลี่ยนชื่อ AccessibilityScrollState เป็น ScrollAxisRange เปลี่ยนชื่อ horizontalAccessibilityScrollState เป็น horizontalScrollAxisRange เปลี่ยนชื่อ verticalAccessibilityScrollState เป็น verticalScrollAxisRange (Id3148)
- นำ PointerInputData ออกและแก้ไข PointerInputChange เพื่อให้มีฟิลด์ทั้งหมดของ PointerInputData ทำให้ PointerInputEvent และ PointerInputEventData เป็นแบบภายในเนื่องจากไม่ได้ใช้ใน API สาธารณะใดๆ (Ifff97, b/175142755)
- อัปเดตการใช้งาน GraphicsLayerScope density เพื่อรองรับการแปลง dp เป็น พิกเซลดิบ (Ied528, b/176819695)
- อัปเดต API ของเมทริกซ์ให้เป็นไปตามลำดับแถว หลักและระบุค่าคงที่ของดัชนี เพื่อช่วยในการแปลงระหว่างการแสดงเมทริกซ์ที่แตกต่างกัน ให้ตรงกับตรรกะการแปลงเฟรมเวิร์ก ระหว่าง SkMatrix กับ Matrix4 ภายใน (I432e6)
- นำเมธอด monotonicFrameAnimationClockOf ที่เป็นเวอร์ชันทดลองออกแล้ว (Ib753f, b/170708374)
- ย้าย String.fintPrecedingBreak และ String.fingFollowingBreak ไปยัง InternalTextApi (I657c4)
- นำ androidx.compose.ui.util.isSurrogatePair ออกจาก API สาธารณะแล้ว (Ia9494)
- เปลี่ยนชื่อ TransformedText.transformedText เป็น TransformedText.text
- TransformedText ไม่ใช่คลาสข้อมูลอีกต่อไป (Ie672a)
- นำ
data class
ออกจากชั้นเรียนต่อไปนี้แล้ว- InlineTextContent
- LocaleList (I605c7)
- คลาสต่อไปนี้ไม่ใช่คลาสข้อมูลอีกต่อไป
- AnnotatedString
- ParagraphStyle
- SpanStyle
- TextStyle
- FontWeight
- TextDecoration
- TextGeometricTransform
- TextIndex
- TextLayoutResult
- TextLayoutInput (Iaff99)
- เปลี่ยน VisualTransformation ให้เป็นอินเทอร์เฟซที่ใช้งานได้ (I3bba4)
- เพิ่มประเภทพารามิเตอร์ข้อมูลอ้างอิงฟังก์ชัน (I5e1bd)
- เพิ่มขอบเขตที่แปลงแล้วลงใน InspectorNode (Ice42f)
การแก้ไขข้อบกพร่อง
- onCommit, onDispose และ onActive ถูกเลิกใช้งานแล้วเพื่อรองรับ SideEffect และ DisposableEffect API (If760e)
การเปลี่ยนแปลงฟังก์ชันโรงงานสำหรับ Font/FontFamily/Typeface
- เพิ่มฟังก์ชัน Factory ที่ขึ้นต้นด้วยตัวพิมพ์ใหญ่
- เลิกใช้งานฟังก์ชันโรงงานก่อนหน้าที่มีตัวอักษรตัวแรกเป็นตัวพิมพ์เล็ก
- ฟังก์ชัน Factory ใหม่จะแสดงผล FontFamily แทน คลาสย่อย
- ซ่อนตัวสร้างของคลาสย่อยเพื่อให้สร้างได้ผ่านฟังก์ชัน Factory เท่านั้น
- เปลี่ยนชื่อ Font.asFontFamily เป็น Font.toFontFamily (I42aa7)
เปิดตัว
ComposeContentTestRule
ซึ่งขยายComposeTestRule
และกำหนดsetContent
ซึ่งถูกนำออกจากComposeTestRule
เพิ่มเมธอดจากโรงงานcreateEmptyComposeRule()
ซึ่งจะแสดงผลComposeTestRule
และไม่เปิดใช้กิจกรรมให้คุณ ใช้เมื่อต้องการเปิดใช้กิจกรรมระหว่างการทดสอบ เช่น ใช้ActivityScenario.launch
(I9d782, b/174472899)ตอนนี้ animateAsState คือ animateFooAsState โดยที่ Foo คือ ประเภทของตัวแปรที่กำลังเคลื่อนไหว เช่น Float, Dp, Offset ฯลฯ (Ie7e25)
เพิ่มพารามิเตอร์คำอธิบายเนื้อหาลงในรูปภาพและไอคอนแล้ว ใช้เพื่ออธิบายบริการการช่วยเหลือพิเศษ (I2ac4c)
นำ displaySize ออกเนื่องจากควรหลีกเลี่ยง โดยปกติแล้ว ควรใช้ขนาดของ onRoot() หรือขนาดหน้าต่างเป็นอย่างน้อย (I62db4)
OnSizeChanged รายงานขนาดของเนื้อหาเลย์เอาต์ ตอนนี้จะรายงานขนาดที่ตำแหน่งภายใน เชนตัวแก้ไข (I36b78, b/177562900)
เราเลิกใช้งาน API emit() และการโอเวอร์โหลดทั้งหมดแล้ว และเปลี่ยนชื่อเป็น ComposeNode API เหมือนกันทุกประการ เพียงแต่ใช้ชื่อต่างกันเพื่อให้เป็นไปตามรูปแบบการตั้งชื่อของ 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 แทน ผู้ใช้ยังคงเลือกได้ว่าจะไม่ใช้ลักษณะการทำงานแบบเลซี่และใช้ตัวแก้ไขโดยตรงได้ดังนี้ Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b, b/170468083)
items(count: Int)
เมธอด Factory ใหม่สำหรับขอบเขตของ LazyColumn/LazyRow/LazyVerticalGrid ตอนนี้items(items: List)
และitemsIndexed(items: List)
เป็นฟังก์ชันส่วนขยายแล้ว คุณจึงต้องนําเข้าด้วยตนเองเมื่อใช้งาน การโอเวอร์โหลดส่วนขยายใหม่สำหรับอาร์เรย์:items(items: Array)
และitemsIndexed(Array)
(I803fc, b/175562574)โปรดใช้ ImeAction.None แทน ImeAction.NoAction
- โปรดใช้ ImeAction.Default แทน ImeAction.Unspecified (Ie1bcc)
ใช้ประโยชน์จาก TestCoroutineDispatcher ในการทดสอบ (I532b6)
เปลี่ยนชื่อ TextInputService.onStateUpdated เป็น updateState (Id4853)
เลิกใช้งานการเปลี่ยนตาม TransitionDefinition แล้ว (I0ac57)
นำ TextUnitType.Inherit ออกแล้ว โปรดใช้ TextUnitType.Unspecified แทน (I9ff64)
เวอร์ชัน 1.0.0-alpha10
13 มกราคม 2021
androidx.compose.ui:ui-*:1.0.0-alpha10
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha10 มีคอมมิตเหล่านี้
การเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ
การปรับโครงสร้าง API ของคอมไพเลอร์ภายใน ช่วยให้สามารถจัดกลุ่มการเปลี่ยนแปลงไปยังโหนดที่สร้างขึ้น อันเป็นผลมาจากการจัดองค์ประกอบเป็นเฟส "ใช้การเปลี่ยนแปลง" ของการจัดองค์ประกอบ หลังจากที่ฟังก์ชัน
@Composable
ทั้งหมด เสร็จสมบูรณ์แล้วนี่เป็นการเปลี่ยนแปลงที่ทำให้เกิดข้อขัดข้องด้านลักษณะการทำงาน ซึ่งอาจส่งผลต่อโค้ดแอปพลิเคชันเนื่องจากโหนดจะไม่พร้อมใช้งานจาก API ภายในและ API ทดลองจนกว่าจะมีการใช้การเปลี่ยนแปลง โดยปกติแล้ว คุณสามารถหลีกเลี่ยงปัญหานี้ได้โดย ล้อมรอบโค้ดที่มีการอ้างอิงดังกล่าวใน
SideEffect
Composable เพื่อเลื่อนการเรียกใช้โค้ด จนกว่าจะสร้างและเริ่มต้นโหนดแล้ว (I018da)
การเปลี่ยนแปลง API
- เพิ่ม Modifier.focusOrder() ที่ใช้ระบุลำดับการย้ายโฟกัสที่กำหนดเองได้ (I90cf5, b/175899543, b/170155556, b/170155429)
- นำการใช้ focusObserver ที่เลิกใช้งานแล้วออก ให้ใช้ onFocusChanged หรือ onFocusEvent แทน (I3ecb9, b/175156387)
- การเปลี่ยนแปลง API ของ EditOperations
- เปลี่ยนชื่อ EditOperation เป็น EditCommand
- เพิ่มคำต่อท้าย Command สำหรับการติดตั้งใช้งานจริงของ EditOperation
- EditCommand ไม่ใช่คลาสข้อมูลอีกต่อไป
- เปลี่ยนชื่อฟังก์ชัน EditOperation.process เป็น applyTo
- เปลี่ยนชื่อ InputEventListener เป็น InputEventCallback
- (I0a366)
- นำ PxSquared, PxCubed, PxInverse ที่ไม่ได้ใช้ออก เปลี่ยน Size.center() ให้เป็นพร็อพเพอร์ตี้ (I973f7)
- ตอนนี้โมดูล ui-test จะกำหนดค่าการสร้าง Recomposer สำหรับ UI ที่อยู่ระหว่างการทดสอบได้แล้ว (Ibebd8)
- ความเร็วที่แก้ไขแล้วให้มีส่วนประกอบและ การดำเนินการทางคณิตศาสตร์ (Ib0447)
- เปลี่ยนชื่อ
@ExperimentalTesting
เป็น@ExperimentalTestApi
เพื่อให้ สอดคล้องกับคำอธิบายประกอบ API ทดลองที่คล้ายกัน (Ia4502, b/171464963) - เปลี่ยนชื่อ Color.useOrElse() เป็น Color.takeOrElse() (Ifdcf5)
- นำคลาส DpInverse, DpSquared และ DpCubed ที่ไม่ได้ใช้ออก (I4d62b)
- เปลี่ยนชื่อ Constraints#satisfiedBy เป็น isSatisfiedBy (I9cf5c)
- เพิ่มการเรียกกลับเพื่อแจ้งให้เจ้าของทราบเมื่อขอบเขตของ LayoutNode เปลี่ยนแปลง (I72fd1)
- เพิ่ม isSpecified, isUnspecified และ useOrElse สำหรับ คลาสอินไลน์ที่มีค่าคงที่ Unspecified (I93f7b, b/174310811)
ขยาย [Abstract]ComposeView API เพื่ออนุญาตให้รีไซเคิล มุมมองที่อิงตาม Compose โดยทิ้งการจัดองค์ประกอบเพื่อสร้างใหม่ ในภายหลัง เพิ่ม API สำหรับการติดตั้งและค้นหา Recomposer ที่มีขอบเขตหน้าต่าง และ CompositionReference สำหรับการสร้างองค์ประกอบย่อย
เพิ่ม ViewCompositionStrategy เพื่อกำหนดค่ากลยุทธ์การทิ้งองค์ประกอบของ [Abstract]ComposeViews ลักษณะการทำงานเริ่มต้นคือทิ้งเมื่อหน้าต่างถูกยกเลิกการเชื่อมต่อ (I860ab)
นำ Any.identityHashCode() API สาธารณะออกแล้ว (I025d7)
นำ toStringAsFixed API ออกเพื่อใช้ String.format แทนโดยตรง (Iaba6b)
เพิ่มสวิตช์ไปยัง foundation Strings.kt (I4a5b7, b/172366489)
ย้าย nativeClass ไปยัง โมดูล ui และทำให้เป็นโมดูลภายใน อัปเดตการใช้งาน nativeClass ใน การติดตั้งใช้งาน equals เพื่อใช้ 'is MyClass' แทน (I4f734)
เลิกใช้งาน Modifier.focus() และ Modifier.focusRequester() แล้ว ใช้ Modifier.focusModifier() และ Modifier.focusReference() แทน (I75a48, b/175160751, b/175160532, b/175077829)
เปิดตัว SelectionRegistrar.notifySelectableChange เพื่อแจ้งการอัปเดตที่เลือกได้ไปยัง SelectionManager (I6ff30, b/173215242)
เพิ่มพร็อพเพอร์ตี้ Outline.bounds เพื่อรับ Bounding Rect สำหรับการใช้งาน Outline ต่างๆ (I16e74, b/175093504)
เลิกใช้งาน TestUiDispatcher แล้ว ให้ใช้ Dispatchers.Main แทน (Ic171f, b/175385255)
ImeOptions และ KeyboardOptions ไม่ใช่คลาสข้อมูลอีกต่อไป (I3c898, b/168684531)
การเปลี่ยนแปลง VisualTransformation API
- เปลี่ยนชื่อ OffsetMap เป็น OffsetMapping
- เปลี่ยนชื่อ OffsetMapping.identityOffsetMap เป็น OffsetMapping.Identity
- PasswordTransformation ไม่ใช่คลาสข้อมูลอีกต่อไป
- ย้าย OffsetMapping ไปยังไฟล์ของตัวเอง
- (I0bdf3)
เปลี่ยนชื่อตำแหน่งเป็น DpOffset และนำ getDistance() ออก (Ib2dfd)
เปลี่ยนฟังก์ชัน Dp.isFinite() เป็นค่า Dp.isFinite (I50e00)
การแก้ไขข้อบกพร่อง
- ตอนนี้ Recomposer จะแสดง Flow ของสถานะปัจจุบัน ซึ่งช่วยให้สามารถตรวจสอบกิจกรรมของ Recomposer และกิจกรรมของเอฟเฟกต์ที่เชื่อมโยง (Ifb2b9)
- ตอนนี้คุณเข้าถึง keyEvent ดั้งเดิมได้แล้วผ่าน keyEvent.nativeKeyEvent (I87c57, b/173086397)
- ตอนนี้
animate()
ถูกแทนที่ด้วยanimateAsState()
ซึ่งจะแสดงผลState<T>
แทนT
ซึ่งจะช่วยให้ประสิทธิภาพดีขึ้น เนื่องจากสามารถจำกัดขอบเขตการลบล้างให้แคบลง ในตำแหน่งที่อ่านค่าสถานะ (Ib179e) - เพิ่ม API บทบาทของ Semantics และเพิ่มบทบาทเป็นพารามิเตอร์ไปยัง SemanticsModifier ที่คลิกได้ เลือกได้ และสลับได้ เปลี่ยน Modifier.progressSemantics เพื่อให้แถบเลื่อนใช้ได้ด้วย (I216cd)
- API ใหม่ที่ใช้โครูทีน
Animatable
ซึ่งรับประกันการแยกกันโดยเด็ดขาด ระหว่างภาพเคลื่อนไหว- DecayAnimationSpec ใหม่เพื่อรองรับภาพเคลื่อนไหวแบบลดทอนหลายมิติ
- (I820f2, b/168014930)
เวอร์ชัน 1.0.0-alpha09
16 ธันวาคม 2020
androidx.compose.ui:ui-*:1.0.0-alpha09
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha09 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- ตอนนี้เราได้นำ KeyEvent.Alt ที่เลิกใช้งานแล้วออก ใช้ KeyEvent.isAltPressed แทน (Idd695)
- เลิกใช้งาน Modifier.keyInputFilter และ Modifier.previewKeyInputFilter แล้ว โปรดใช้ Modifier.onKeyEvent และ Modifier.onPreviewKeyEvent แทน (Idbf1b, b/175156384)
- เลิกใช้งาน Modifier.focusObserver แล้ว ใช้ Modifier.onFocusChanged หรือ Modifier.onFocusEvent แทน (I30f17, b/168511863, b/168511484)
- สำหรับ API การป้อนข้อมูลด้วยเคอร์เซอร์ที่ระงับแล้ว เราได้เปลี่ยนชื่อ HandlePointerInputScope เป็น AwaitPointerEventScope และ handlePointerInput() เป็น awaitPointerEventScope() (Idf0a1, b/175142755)
- ตอนนี้ Autofill API เป็น API เวอร์ชันทดลองและต้องเลือกใช้ (I0a1ec)
- การเพิ่มการประกาศการแยกโครงสร้างเพื่อสร้างอินสแตนซ์ FocuSRequester (I35d84, b/174817008)
- เปลี่ยนชื่อ accessibilityLabel เป็น contentDescription เปลี่ยนชื่อ accessibilityValue เป็น stateDescription (I250f2)
- นำเหตุการณ์ที่กำหนดเองออกจาก API การระงับการป้อนข้อมูลด้วยเคอร์เซอร์ (Ia54d5, b/175142755)
- เปิดตัวฟังก์ชันใหม่หลายรายการใน SelectionRegistrar และเปลี่ยนชื่อ onPositionChange เป็น notifyPositionChange (Ifbaf7)
- สมาชิกเพิ่มเติมของ LayoutNode ที่เราทำเครื่องหมายเป็นภายใน (I443c6)
- เราได้เปิดตัว LayoutInfo เพื่อให้เครื่องมือและการทดสอบใช้งาน (I9b190)
- AndroidOwner สร้างภายใน (Ibcad0, b/170296980)
- นำคำอธิบายประกอบ ExperimentalPointerInput ออกแล้ว (Ia7a24)
- เพิ่มระบบการเลื่อนที่ซ้อนกัน ดูรายละเอียดเพิ่มเติมได้ที่ Modifier.nestedScroll (I36e15, b/162408885)
- มีการเปลี่ยนให้ subcomposeInto(LayoutNode) เป็นแบบภายใน (Id724a)
Applier
อินเทอร์เฟซมีการเปลี่ยนแปลงเพื่อลดความซับซ้อน ในการสร้างแผนผังจากล่างขึ้นบนแทนที่จะเป็นจากบนลงล่างเปลี่ยนชื่อเมธอด
insert()
เป็นinsertTopDown()
แล้วเพิ่มวิธีการใหม่
insertBottomUp()
แล้วโดยแอปพลิเคชันจะแทรกโหนดลงในทรีที่กำลังแก้ไข โดยใช้
insertTopDown()
หรือinsertBottomUp()
ขึ้นอยู่กับ ว่าตัวใดมีประสิทธิภาพดีกว่าต้นไม้บางต้น เช่น
LayoutNode
และView
มีประสิทธิภาพในการสร้างจากล่างขึ้นบนมากกว่าจากบนลงล่าง ก่อนการเปลี่ยนแปลงนี้ ต้องมีสแต็กของแทรกเพื่อใช้การสร้างจากล่างขึ้นบน ซึ่ง ต้องคัดลอกไปยังทุกแอปพลิเคชันที่ต้องมีการสร้างจากล่างขึ้นบน เพื่อประสิทธิภาพ การเปลี่ยนแปลงนี้จะApplier
ลบล้างinsertBottomUp()
เพื่อสร้างแผนภูมิตั้งแต่ล่างขึ้นบน และinsertTopDown()
เพื่อสร้างแผนภูมิตั้งแต่บนลงล่าง (Icbdc2)เพิ่มพร็อพเพอร์ตี้ dismissOnBackPress และ dismissOnClickOutside ลงใน AndroidDialogProperties ซึ่งช่วยให้กำหนดค่าได้ว่าจะเรียกใช้ Lambda ของ onDismissRequest ของกล่องโต้ตอบเมื่อใด (If5e17)
เพิ่ม API painterResource เพื่อจัดการการโหลดออบเจ็กต์ Painter แบบทึบแสง จากรูปแบบเนื้อหาที่แปลงเป็นรูปภาพ (เช่น PNG) หรือ VectorDrawable ผู้บริโภคไม่จำเป็นต้องระบุประเภทของชิ้นงานล่วงหน้าอีกต่อไป และสามารถเรียกใช้เมธอดนี้เพื่อรับออบเจ็กต์ Painter เพื่อใช้ใน Composable ของรูปภาพหรือตัวแก้ไข Painter (I2c703, b/173818471)
เพิ่ม Modifier.clearAndSetSemantics เพื่อล้างซีแมนติกขององค์ประกอบย่อย และตั้งค่าใหม่ (I277ca)
ย้าย ContentDrawScope ไปยังโมดูล ui-graphics เพื่อให้อยู่กับ DrawScope (Iee043, b/173832789)
เปิดตัวกราฟิก API ของ PathEffect เพื่อจัดเตรียมรูปแบบต่างๆ ให้กับรูปร่างที่ขีดเส้น เลิกใช้งาน NativePathEffect เพื่อ การใช้งาน PathEffect แบบ expect/actual (I5e976, b/171072166)
เพิ่มอินเทอร์เฟซ IdlingResource ลงใน Compose เพื่อให้เป็นตัวแปรที่รองรับ Compose ของทรัพยากรที่ไม่ได้ใช้งานของ Espresso โดยสามารถลงทะเบียน และยกเลิกการลงทะเบียนผ่าน ComposeTestRule (I433f3)
นำการ (ยกเลิก) ลงทะเบียน ComposeIdlingResource ทั่วโลกและ การ (ยกเลิก) ลงทะเบียนนาฬิกาทั่วโลกใน ComposeIdlingResource ออก (I32660)
การแก้ไขข้อบกพร่อง
- ตอนนี้ Lambda ในตัวแก้ไขออฟเซ็ตจะแสดงผล IntOffset แทน Float (Ic9ee5, b/174137212, b/174146755)
นำ SlotTable, SlotReader และ SlotWriter ออกจาก API สาธารณะ ก่อนหน้านี้มีการทำเครื่องหมายว่า InternalComposeAPI ตอนนี้ฟีเจอร์ดังกล่าวอยู่ภายใน โมดูล Compose
เพิ่ม CompositionData และ CompositionGroup เพื่อใช้แทน API เครื่องมือ UI ในการดึงข้อมูลองค์ประกอบ API เหล่านี้เป็นแบบสาธารณะ แต่ไม่ได้มีไว้สำหรับใช้ภายนอก API เครื่องมือ UI เนื่องจาก API เหล่านี้ให้ข้อมูลดิบที่ API เครื่องมือ UI ตีความ (I31a9c)
รีแฟกเตอร์ ShaderBrush เพื่อ สร้างอินสแตนซ์ของ Shader อย่างช้าๆ เมื่อ มีข้อมูลการกำหนดขนาดของ สภาพแวดล้อมการวาดภาพ ซึ่งมีประโยชน์ในการกำหนดการไล่ระดับสีที่ ครอบคลุมขอบเขตการวาดทั้งหมดของ Composable ในเวลาที่ทำการ Composable โดยไม่ต้อง ใช้การติดตั้งใช้งาน DrawModifier ที่กำหนดเอง
เลิกใช้งาน API ตัวสร้างฟังก์ชันการไล่ระดับสี เพื่อสนับสนุนเมธอด Factory ในออบเจ็กต์การไล่ระดับสี (I511fc, b/173066799)
เลิกใช้งาน LazyColumnFor, LazyRowFor, LazyColumnForIndexed และ LazyRowForIndexed ใช้ LazyColumn และ LazyRow แทน (I5b48c)
เลิกใช้งาน BuildCompat.isAtLeastR (Idb37e)
เพิ่มฟังก์ชัน Factory buildAnnotatedString เพื่อสร้าง AnnotatedString เลิกใช้งานฟังก์ชัน builder ของ annotatedString แล้ว (Idfe0b)
นำเมธอดส่วนขยาย ใน Float และ Double ออกเพื่อแปลงค่า เป็นเรเดียน ย้ายไปเป็นฟังก์ชันส่วนตัว ภายใน PathParser ของการติดตั้งใช้งาน ซึ่งเป็นที่เดียวที่มีการใช้งาน (I25f52)
เวอร์ชัน 1.0.0-alpha08
2 ธันวาคม 2020
androidx.compose.ui:ui-*:1.0.0-alpha08
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha08 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- เพิ่มการดำเนินการทางความหมาย Dismiss (I2b706)
- ย้าย DrawModifier APIs จากแพ็กเกจ androidx.compose.ui ไปยังแพ็กเกจ androidx.compose.ui.draw สร้างไฟล์ DrawModifierDeprecated.kt เพื่อ รวมประเภทแทน/วิธีการช่วยเพื่อช่วยในการ ย้ายข้อมูลจาก API ที่เลิกใช้งานแล้วไปยัง API ปัจจุบัน (Id6044, b/173834241)
- เปลี่ยนชื่อ Modifier.drawLayer เป็น Modifier.graphicsLayer และอัปเดตคลาสที่เกี่ยวข้องเป็น GraphicsLayer ตาม ความคิดเห็นเกี่ยวกับ API (I0bd29, b/173834241)
- เราได้เพิ่มเมธอดใหม่ที่ชื่อ placeable.placeWithLayer() และ placeable.placeRelativeWithLayer() ซึ่งช่วยให้เลย์เอาต์ที่กำหนดเองและตัวแก้ไขเลย์เอาต์วางองค์ประกอบย่อยได้โดยการเพิ่มเลเยอร์กราฟิกสำหรับการวาด ด้วยเหตุนี้ เราจึงสามารถเพิ่มประสิทธิภาพการวาดใหม่ได้ก่อน ดังนั้นเมื่อเราต้องการย้ายองค์ประกอบย่อย เราจึงไม่ต้องวาดเนื้อหาขององค์ประกอบนั้นใหม่ และประการที่สอง เราสามารถใช้การเปลี่ยนรูปการวาดสำหรับองค์ประกอบย่อยได้ (Ibd8f6, b/170296989, b/171493718, b/173030831)
- นำ
<T>
ออกจากการประกาศ SubcomposeLayout ตอนนี้คุณใช้ได้โดยไม่ต้องระบุประเภท (Ib60c8) - เพิ่ม Modifier.scale/rotate
APIs เพื่ออำนวยความสะดวกสำหรับ drawLayer
- เปลี่ยนชื่อ
Modifier.drawOpacity
เป็นModifier.alpha
แล้ว - เปลี่ยนชื่อ
Modifier.drawShadow
เป็นModifier.shadow
(I264ca, b/173208140)
- เปลี่ยนชื่อ
- ทำให้ฟิลด์เวลาทำงานและตำแหน่งของ PointerInputData ไม่เป็นค่าว่าง (Id468a)
- ตอนนี้ MaterialTheme จะกำหนดสีที่ถูกต้องสำหรับแฮนเดิลการเลือกและพื้นหลังการเลือกแล้ว แอปที่ไม่ใช่ Material สามารถใช้ AmbientTextSelectionColors เพื่อปรับแต่งสีที่ใช้สำหรับการเลือกได้ด้วยตนเอง (I1e6f4, b/139320372, b/139320907)
- เพิ่ม WindowManager.isWindowFocused เพื่อตรวจสอบว่าหน้าต่างโฮสต์อยู่ในโฟกัสหรือไม่ และ WindowFocusObserver ที่ให้การเรียกกลับ onWindowFocusChanged (I53b2a, b/170932874)
- อัปเดต TransformOrigin API
ให้มีไวยากรณ์การแยกโครงสร้างเพื่อแสดงผล
pivotFractionX
และpivotFractionY
เป็นcomponent1
และcomponent2
(If43c4, b/173586560) - เพิ่มการตรวจสอบ Lint สำหรับการตั้งชื่อและการวางตำแหน่งพารามิเตอร์ Lambda ที่ใช้ร่วมกันได้ เพื่อตรวจสอบความสอดคล้องกับหลักเกณฑ์ของ Compose
นอกจากนี้ ยังย้ายข้อมูล API บางรายการโดยใช้
children
เป็นชื่อสำหรับ Lambda ต่อท้ายเป็นcontent
ตามการตรวจสอบ Lint และคำแนะนำ (Iec48e) - เพิ่ม API เพื่อตรวจสอบว่ามีการกดแป้นกดร่วม Alt, Ctrl, Meta หรือ Shift หรือไม่เมื่อมีการส่ง Keyevent (I50ed9)
- เพิ่ม
Modifier.drawLayer()
โอเวอร์โหลดใหม่แล้ว โดยจะใช้บล็อก Lambda ใน GraphicsLayerScope ใหม่ ซึ่งคุณจะกําหนดพารามิเตอร์เลเยอร์ในลักษณะที่ช่วยให้ข้ามการจัดองค์ประกอบใหม่และการจัดเลย์เอาต์ใหม่ได้เมื่อมีการเปลี่ยนแปลงสถานะ ตอนนี้ DrawLayerModifier อยู่ภายในเพื่อเตรียมพร้อมที่จะย้ายตรรกะไปยังเมธอด placeable.placeWithLayer() ของ LayoutModifier (I15e9f, b/173030831) - เลิกใช้งาน Ambients ที่เลิกใช้งานแล้วซึ่งมี
Ambient
เป็นคำต่อท้าย และแทนที่ด้วยพร็อพเพอร์ตี้ใหม่ที่ขึ้นต้นด้วย Ambient ตามหลักเกณฑ์อื่นๆ ของ Ambients และ Compose API (I33440) - ย้าย
androidx.compose.ui.text.Typeface
ไปยังandroidx.compose.ui.text.font.Typeface
(Ic2b81) - มีการเปลี่ยนชื่ออาร์กิวเมนต์เชิงความหมาย mergeAllDescendants เป็น mergeDescendants (Ib6250)
- เครื่องตรวจจับท่าทางลากแบบใหม่ที่ระงับ API ของอินพุตพอยน์เตอร์ รวมถึงการล็อกการวางแนว (Icef25)
- เปลี่ยนชื่อ VectorAsset เป็น ImageVector ย้ายและเปลี่ยนชื่อ VectorAsset เป็น Builder เพื่อ ให้เป็นคลาสในของ ImageVector ตาม หลักเกณฑ์ของ API เพิ่ม typealias ของ VectorAssetBuilder เพื่อ ลิงก์ไปยัง ImageVector.Builder เพื่อความเข้ากันได้ (Icfdc8)
- เปลี่ยนชื่อ ImageAsset และ เมธอดที่เกี่ยวข้องเป็น ImageBitmap (Ia2d99)
- เพิ่มพารามิเตอร์ zIndex สำหรับ place() ของ PlacementScope เพื่อให้ Modifier.zIndex() ทำงานเป็น LayoutModifier ได้แล้ว และเลย์เอาต์ที่กำหนดเองจะตั้งค่า zIndex สำหรับองค์ประกอบย่อยได้โดยตรงในบล็อกการจัดวาง (I711f7, b/171493718)
- ย้ายพร็อพเพอร์ตี้ความหมายของรากฐานไปยัง UI (I6f05c)
- เลิกใช้งาน place(Offset) และ placeRelative(Offset) ใช้การโอเวอร์โหลดที่มีออฟเซ็ต int แทน (I4c5e7)
- นำ API ที่เลิกใช้งานไปก่อนหน้านี้ออก: นำ Modifier.onPositioned ออกแล้ว ให้ใช้ Modifier.onGloballyPositioned แทน นำ Modifier.onDraw ออกแล้ว ให้ใช้ Modifier.onDrawBehind แทน นำ Modifier.plus ออกแล้ว ให้ใช้ Modifier.then แทน นำ Color.Unset ออกแล้ว ให้ใช้ Color.Unspecified แทน ระบบได้นำคลาส PxBounds ออกแล้ว โปรดใช้ Rect แทน (Ie9d02, b/172562222)
- เราได้อัปเดตอินเทอร์เฟซการจัดแนวและทำให้ใช้งานได้ (I46a07, b/172311734)
- เพิ่มเครื่องตรวจจับท่าทางสัมผัสสำหรับการแตะ แตะสองครั้ง กดค้าง และการกดโดยใช้การป้อนข้อมูลตัวชี้ที่ระงับใหม่ นอกจากนี้ เรายังได้เพิ่มยูทิลิตีบางอย่างเพื่อช่วยให้นักพัฒนาแอปเขียนเครื่องตรวจจับท่าทางสัมผัสของตนเองได้ง่ายขึ้น (I00807)
- เปลี่ยนชื่อ
id
เป็นlayoutId
สำหรับLayoutIdParentData
แล้ว เปลี่ยนชื่อMeasurable.id
เป็นMeasurable.layoutId
แล้ว (Iadbcb, b/172449643) - ตัวตรวจจับท่าทางสัมผัสแบบหลายจุดใหม่ ซึ่งรวมถึง ฟังก์ชันช่วยในการตรวจจับการหมุน การซูม และการเลื่อน (Ic459d)
- เปิดตัว SweepGradientShader และ SweepGradientBrush API (Ia22c1)
- การควบคุมเวลาในการทดสอบ (TestAnimationClock และการใช้งาน) อยู่ในระยะทดลองแล้ว (I6ef86, b/171378521)
เพิ่ม API การเลื่อนตามโครูทีน
เพิ่ม LazyListState.snapToItem และ LazyListState.smoothScrollBy รวมถึง API ระดับล่าง สำหรับการควบคุมการเลื่อน API เหล่านี้มีอินเทอร์เฟซระงับเพื่อควบคุมการเลื่อน ซึ่งจะรอจนกว่าการเลื่อนจะเสร็จสิ้นก่อนที่จะส่งคืน (Ie5642)
เพิ่ม Modifier.focusable ที่จำเป็นใน Foundation ใช้แอตทริบิวต์นี้เพื่อเพิ่มลักษณะการทำงานที่โฟกัสได้ให้กับคอมโพเนนต์ โดยมี Semantic และการช่วยเหลือพิเศษที่ถูกต้อง (I41eb9, b/152525426, b/162865824)
ระบุการใช้งานเริ่มต้นของเมธอดและพร็อพเพอร์ตี้ใน AnimationClockTestRule ที่สามารถมอบสิทธิ์ให้กับ
clock
(I7ea3d, b/173399709)ตอนนี้ AndroidComposeTestRule ยอมรับตัวเรียกใช้กิจกรรมที่กำหนดเองได้แล้ว (Ib8288, b/153623653, b/154135019)
เลิกใช้งาน TextLayoutResult.getLineVisibleEnd แล้ว TextLayoutResult.getLineEnd มีพารามิเตอร์ใหม่ชื่อ visibleEnd เพื่อใช้แทน (I73282)
อัปเดต TextFieldValue API
- ทำให้ TextFieldValue.composition เป็นแบบอ่านอย่างเดียว
- นำข้อยกเว้นที่เกิดขึ้นสำหรับช่วงการเลือกที่ไม่ถูกต้องออกแล้ว (I4a675, b/172239032)
รองรับ TtsAnnotation สำหรับเครื่องมืออ่านออกเสียงข้อความ (I54cc6)
API ใหม่สำหรับการเรียกใช้ภาพเคลื่อนไหวในโครูทีน (Ied662)
การแก้ไขข้อบกพร่อง
- เปลี่ยนชื่อพารามิเตอร์การจัดแนวของ Box เป็น contentAlignment (I2c957)
- เปลี่ยนชื่อตัวแก้ไข offsetPx เป็น offset ตอนนี้ฟังก์ชันเหล่านี้รับพารามิเตอร์ Lambda แทน State แล้ว (Ic3021, b/173594846)
- เพิ่มพารามิเตอร์ resetInput ไปยัง TextInputService#onStateUpdated (I3e8f5, b/172239032, b/171860947)
- เพิ่มการตรวจสอบ Lint สำหรับพารามิเตอร์ Modifier ในฟังก์ชันที่ใช้ร่วมกันได้ การตรวจสอบ Lint นี้จะตรวจสอบการตั้งชื่อ ประเภทการคืนค่า ค่าเริ่มต้น และลำดับของพารามิเตอร์เพื่อให้สอดคล้องกับหลักเกณฑ์ของ Compose (If493b)
- เพิ่มตัวเลือกชั่วคราวเพื่อให้ MonotonicFrameClock ขับเคลื่อน TestAnimationClock ได้ (I1403b, b/173402197)
- เพิ่ม Wrapper ของ Android Typeface แล้ว คุณโหลด Android
Typeface ผ่านฟังก์ชัน
typeface
ได้ เช่นtypeface(Typeface.DEFAULT)
เปลี่ยนชื่อtypefaceFromFontFamily()
เป็นtypeface()
(I52ab7) ด้วย - เพิ่มการตรวจสอบ Lint เพื่อตรวจสอบว่าฟังก์ชัน Factory ของตัวแก้ไขได้รับการกำหนดเป็นส่วนขยายในตัวแก้ไข เพื่อให้สามารถเชื่อมโยงเข้าด้วยกันได้อย่างราบรื่น (I07981)
- นำโมดูล ui-test เก่าและ Stub ออก (I3a7cb)
- Recomposer ไม่รับ EmbeddingContext อีกต่อไป ระบบจะรับการขึ้นต่อกันในการจัดกำหนดการที่จำเป็นจาก effectCoroutineContext เลิกใช้งาน FrameManager แล้ว การผสานรวมแพลตฟอร์มควรเริ่มต้น การจัดการสแนปชอตส่วนกลางของตนเอง (I02369)
- ส่งข้อมูลรูปแบบไปยังโหนดการช่วยเหลือพิเศษ (If5e8d)
- เราเปลี่ยนชื่อ TextUnit.Inherit เป็น TextUnit.Unspecified เพื่อให้สอดคล้องกับหน่วยอื่นๆ (Ifce19)
Compose UI เวอร์ชัน 1.0.0-alpha07
11 พฤศจิกายน 2020
androidx.compose.ui:ui-*:1.0.0-alpha07
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha07 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เปิดตัวคลาส ScaleFactor
inline เพื่อแสดงถึง
ปัจจัยการปรับขนาดสำหรับแกนแนวนอนและแนวตั้ง
โดยไม่ขึ้นต่อกันเพื่อ
รองรับกรณีการใช้งานการปรับขนาดที่ไม่สม่ำเสมอ
- เพิ่มเมธอด computeScaleFactor ลงใน ContentScale
- เพิ่ม ContentScale.FillBounds เพื่อทำการ การปรับขนาดที่ไม่สม่ำเสมอเพื่อยืดขอบเขต src ให้ครอบคลุมปลายทางทั้งหมด
- เพิ่มวิธีการดำเนินการเพื่อคำนวณ พารามิเตอร์ ScaleFactor ด้วยพารามิเตอร์ Size
- (Ic96a6, b/172291582)
- เพิ่มโรงงาน BiasAlignment และ BiasAbsoluteAlignment สำหรับสร้างการจัดแนว (Iac836, b/169406772)
- อนุญาตให้นักพัฒนาแอปบังคับล้างโฟกัส (I90372)
- แก้ไขข้อบกพร่องที่ทำให้ไม่ได้วาดการยกระดับสำหรับ View ภายใน Compose (If7782)
- สร้าง API onDrawBehind ภายใน ContentDrawScope เพื่อให้เป็นไปตามรูปแบบการตั้งชื่อเดียวกับ Modifier.drawBehind (I4fc3a, b/171955269)
- เพิ่มการรองรับระยะกล้อง เพื่อเสริมการแปลง 3 มิติ rotationX/rotationY ใน API ของเลเยอร์ (I40213, b/171492100)
- เพิ่ม SelectionContainer โดยไม่มีการเรียกกลับ (Ibfadb)
- นำ ExperimentalSubcomposeLayoutApi ออกแล้ว ตอนนี้คุณใช้ SubcomposeLayout ได้โดยไม่ต้องเพิ่ม @OptIn (I708ad)
- ย้าย FirstBaseline และ LastBaseline ไปยังแพ็กเกจ androidx.compose.ui.layout (Ied2e7)
- นำความทึบออกจากตัวแก้ไข drawShadow() เนื่องจากทำให้เกิดความสับสน (I82c62, b/171624638)
- ย้าย MeasureResult ออกจาก MeasureScope (Ibf96d, b/171184002)
- เราได้ย้ายสัญลักษณ์ที่เกี่ยวข้องกับเลย์เอาต์หลายรายการจาก androidx.compose.ui ไปยัง androidx.compose.layout.ui (I0fa98, b/170475424)
- นำ FocusState2 ที่เลิกใช้งานแล้วออก (I686cb, b/168686446)
- ตอนนี้ ZIndexModifier เป็นแบบภายในแล้ว (I1808b, b/171493718)
- อัปเดตประเภทการคืนค่าของเมธอด lerp ในพารามิเตอร์ Size เพื่อคืนค่า Size ที่ไม่ใช่ค่าว่างเพื่อหลีกเลี่ยงการ Boxing ที่ไม่จำเป็น (Ib0044)
- เพิ่ม TestMonotonicFrameClock สำหรับทดสอบโค้ดที่ใช้ MonotonicFrameClock ของ Compose เพื่อรอเหตุการณ์เฟรมการแต่งโดยใช้ runBlockingTest ของ kotlinx-coroutines-test (I4402f)
- นำ GestureScope.localToGlobal ออก (I15299, b/171462785)
- เพิ่มเครื่องมือค้นหา
onAllNodesWithSubstring
(I81dd7, b/171462889) - เลิกใช้งานโมดูล androidx.ui.test แล้ว โปรดย้ายข้อมูลไปยัง androidx.compose.ui.test และ androidx.compose.ui.test.junit4 (I452e8)
การแก้ไขข้อบกพร่อง
- ย้าย captureToBitmap ไปยัง captureToImage (I86385)
- เลิกใช้งาน foundation.Text แล้วและแทนที่ด้วย material.Text หากต้องการใช้ Text API พื้นฐานที่ไม่แสดงความคิดเห็นซึ่งไม่ได้ใช้ค่าจากธีม โปรดดู androidx.compose.foundation.BasicText (If64cb)
- อัปเดต TextField ให้ยอมรับ KeyboardOptions (Ida7f3)
- เปลี่ยนชื่อ KeyboardOptions เป็น ImeOptions (I82f36)
- ย้าย KeyboardType และ ImeAction ไปยัง KeyboardOptions (I910ce)
- เราได้เพิ่ม provideDefault เป็นทางเลือกในการระบุแอมเบียนท์ และสามารถใช้เพื่อระบุค่าแอมเบียนท์ที่จะตั้งค่าก็ต่อเมื่อไม่มีค่าแอมเบียนท์ที่ระบุไว้แล้วเท่านั้น (Id6635, b/171024925)
- เลิกใช้งาน BaseTextField แล้ว โปรดใช้ BasicTextField แทน (I896eb)
- เปิดตัวโมดูล ui-test-junit4 (Ib91f8)
- เปลี่ยนชื่อ
relativePaddingFrom
เป็นpaddingFrom
แล้ว มีการเพิ่มตัวแก้ไขpaddingFromBaseline
เพื่อความสะดวกในการระบุระยะห่างจากขอบเขตเลย์เอาต์ไปยังบรรทัดฐานของข้อความ (I0440a, b/170633813) - LaunchedTask ได้เปลี่ยนชื่อเป็น LaunchedEffect เพื่อให้สอดคล้องกับ SideEffect และ DisposableEffect API ไม่อนุญาตให้ใช้ LaunchedEffect ที่ไม่มีพารามิเตอร์ Subject เพื่อส่งเสริมแนวทางปฏิบัติแนะนำ (Ifd3d4)
- เปิดตัวทรัพยากรที่สามารถคอมโพสได้ซึ่งจะคอมโพสใหม่เมื่อการกำหนดค่าอัปเดต (I6387c, b/167352819)
- ตอนนี้ Recomposer ต้องใช้ CoroutineContext ในการสร้าง (Ic4610)
- รวมค่า
zIndex
เมื่อใช้Modifier.zIndex()
หลายรายการ ก่อนหน้านี้รายการแรกเป็นผู้ชนะ (Ic514c, b/170623936) - การเปลี่ยนแปลงการใช้งาน SlotTable ภายในซึ่ง ไม่ควรส่งผลต่อ API สาธารณะ (If9828)
- เพิ่มตัวเลือก IME สำหรับการแก้ไขอัตโนมัติของแป้นพิมพ์ (I57b8d)
- ย้าย androidx.ui.test ไปยัง androidx.compose.ui.test (I9ffdb)
- นำ KeyboardOptions.toImeOptions ออกจาก API สาธารณะ (Ic2e45)
การมีส่วนร่วมภายนอก
- ปิดใช้การเผยแพร่ Artifact ภายใน androidx.compose.ui:ui-text-android (Ib93fa)
เวอร์ชัน 1.0.0-alpha06
28 ตุลาคม 2020
androidx.compose.ui:ui-*:1.0.0-alpha06
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha06 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ตอนนี้ Recomposer เป็น CompositionReference และเป็น องค์ประกอบหลักที่ถูกต้องแล้ว ตอนนี้คุณต้องใช้ Explicit Recomposer ในที่ต่างๆ น้อยลงแล้ว (I4036f)
- เลิกใช้งาน VectorPainter เพื่อใช้ rememberVectorPainter แทน เพื่อให้ระบุได้ดียิ่งขึ้นว่า API ที่ใช้ได้ภายในใช้ "remember" เพื่อคงข้อมูลไว้ในคอมโพสิท (Ifda43)
- อัปเดต Modifier.drawWithCache API เพื่อแสดง ContentDrawScope เป็นขอบเขตตัวรับ แทน DrawScope เพื่อให้การ ติดตั้งใช้งานสามารถจัดลำดับคำสั่ง การวาดใหม่ได้ ซึ่งมีประโยชน์สำหรับกรณีการใช้งานการผสม/ การปรับสีที่ต้องแสดงผลพิกเซลเนื้อหาก่อน เพื่อให้ระบบใช้อัลกอริทึมโหมดการผสมที่เกี่ยวข้องได้อย่างถูกต้อง (Ie7ec8)
- ย้าย SimpleContainer ไปยัง PopupTestUtils.kt (I78c57)
- ConsumedData ไม่ใช่คลาสข้อมูลอีกต่อไป ดูรายละเอียดได้ที่ https://android-review.googlesource.com/c/platform/frameworks/support/+/1455219 (I1737f)
- แก้ไขตำแหน่งแฮนเดิล RTL (I6e1e0)
- ปรับโครงสร้าง DrawScope และ
ContentDrawScope ให้เป็นอินเทอร์เฟซ
แทนที่จะเป็นคลาสแบบนามธรรม
- สร้างการใช้งาน CanvasDrawScope ของ DrawScope
- การติดตั้งใช้งาน DrawScope ที่ปรับโครงสร้างใหม่เพื่อใช้ CanvasScope แทน
- สร้าง DrawContext เพื่อรวมการอ้างอิง สำหรับ DrawScope
- นำวิธีการที่เลิกใช้งานแล้วใน DrawScope (I56f5e) ออก
- การเปลี่ยนแปลงที่ทำให้เกิดข้อผิดพลาด: นำค่าที่ส่งคืนออกจาก
PointerInputFilter.onPointerEvent(...)
เนื่องจากค่าเดียวที่ควรเปลี่ยนได้ในเหตุการณ์ของเคอร์เซอร์คือข้อมูลการใช้งาน ตอนนี้คุณสามารถเปลี่ยนข้อมูลการใช้งานของ PointerEvents ที่ส่งผ่านได้เลยแทนที่จะส่งคืนข้อมูลจากPointerInputFilter.onPointerEvent(...)
(I6acd0) - เราได้เปลี่ยน MeasureScope และ IntrinsicMeasureScope ให้เป็นอินเทอร์เฟซ (I1a087, b/170461665)
- ซ่อนฟังก์ชันผสานสำหรับ AlignmentLine แล้ว (I9da1a, b/170612900, b/170611568)
- เพิ่มความสามารถในการระบุข้อมูลเครื่องมือตรวจสอบในตัวแก้ไขที่ประกอบขึ้น (Idee08, b/163494569)
- เพิ่มตัวเลือก "เลือกทั้งหมด" ลงในเมนูการเลือก (Ief02b)
- อัปเดต DrawTransform.rotate เพื่อใช้
พารามิเตอร์ Pivot เริ่มต้นของกึ่งกลางให้ตรงกับ
เอกสารประกอบ
- อัปเดต DrawScope.rotateRad เพื่อใช้ Offset สำหรับ จุดหมุนให้ตรงกับวิธีการเปลี่ยนรูปแบบอื่นๆ
- เลิกใช้งานการโอเวอร์โหลด DrawScope.rotateRad ที่ใช้ โฟลตสำหรับพิกัด x และ y ของจุดหมุน
- (Iffcbb, b/170434992)
การแก้ไขข้อบกพร่อง
- เปิดใช้การตรวจสอบ Lint ของ API สำหรับ MissingGetterMatchingBuilder สำหรับ androidx (I4bbea, b/138602561)
- เพิ่มการทดสอบ (I6b8ae)
- เปิดใช้การเปลี่ยนฉากใน ComposeTestRule และนำตัวเลือกในการ เปิดใช้เคอร์เซอร์กะพริบออกจาก ComposeTestRule (If0de3)
- เพิ่มตัวเลือก IME สำหรับการใช้อักษรตัวพิมพ์ใหญ่ในแป้นพิมพ์ (I8ac38)
- เพิ่มตัวเลือกแป้นพิมพ์แบบบรรทัดเดียวลงใน CoreTextField (I72e6d)
- ย้าย SimpleContainer ไปยัง PopupTestUtils.kt (I65c3e)
- เปลี่ยนชื่อ Radius API เป็น CornerRadius เพื่อให้แสดง วิธีใช้ใน Compose ได้ดียิ่งขึ้น อัปเดตเอกสารประกอบเพื่อระบุ ว่ารัศมีมุมที่เป็นลบจะถูกจำกัด เป็น 0 (I130c7, b/168762961)
- ปรับปรุงการทำงานร่วมกันของ Android โดยส่ง MotionEvent ไปยัง Android View ย่อยที่แสดงผลเป็นเท็จสำหรับ onTouchEvent สำหรับการดำเนินการทั้งหมด ยกเว้น
ACTION_DOWN
(I94c5a, b/170320973) - Box ถูกทำให้เป็นฟังก์ชันอินไลน์ (Ibce0c, b/155056091)
การมีส่วนร่วมภายนอก
- รองรับภาษาต่างๆ สำหรับ
AnnotatedString.capitalize
และAnnotatedString.decapitalize
(I4aa7f)
เวอร์ชัน 1.0.0-alpha05
14 ตุลาคม 2020
androidx.compose.ui:ui-*:1.0.0-alpha05
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha05 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- เพิ่ม DSL สำหรับระบุข้อมูลผู้ตรวจสอบ (Ic9a22)
- ย้าย LongPress ไปยัง Text (Iff2bc)
- ตัวแก้ไขทดลอง Modifier.pointerInput ระงับตัวแก้ไขอินพุต (Ia77d2)
- เพิ่มการดำเนินการสำหรับการช่วยเหลือพิเศษในการคัดลอก/วาง/ตัด (I6db4f)
- นำตัวสร้างสาธารณะสำหรับ AndroidOwner ออกแล้ว (Iacaef)
- ตอนนี้ป๊อปอัปและกล่องโต้ตอบจะรับค่า FLAG_SECURE จากหน้าต่างหลัก นอกจากนี้ ยังเพิ่มตัวเลือกในการกำหนดค่านี้อย่างชัดเจน (I64966, b/143778148, b/143778149)
ตอนนี้ข้อมูลการบริโภคสามารถเปลี่ยนแปลงได้แล้ว นอกจากนี้ การเรียกฟังก์ชันส่วนขยายที่ใช้การบริโภค จะไม่แสดงผล PointerInputChange ใหม่ แต่จะเปลี่ยน PointerInputChange ที่ระบุแทน
นี่คือขั้นตอนแรกในกระบวนการ 2 ขั้นตอนเพื่อ ทำให้ข้อมูล PointerEvent เปลี่ยนแปลงได้เพื่อไม่ให้โค้ดของผู้ใช้ แก้ไขข้อมูลเคอร์เซอร์อื่นๆ ได้ ขั้นตอนที่ 2 คือการนำ
List<PointerInputChange>
ประเภทการคืนสินค้าออกจากPointerInputFilter.onPointerEvent(...)
(Id067e)ปิดใช้การเลือกในข้อความและเดโม (Ie7e97)
ทำให้ onGloballyPositioned เป็นฟังก์ชันแบบอินไลน์ (I15830)
เปลี่ยนชื่อ OnPositionedModifier เป็น OnGloballyPositionedModifier และเปลี่ยนชื่อ onPositioned() เป็น onGloballyPositioned() (I587e8, b/169083903)
เพิ่มพร็อพเพอร์ตี้ hasPendingMeasureOrLayout ลงใน Owner เพื่อระบุว่า Owner มีงานเลย์เอาต์ที่รอดำเนินการหรือไม่ (I3d9f8, b/169038599)
เพิ่ม API เพื่อล้างโฟกัสโดยอัตโนมัติ (Ie1dc2, b/161487952)
นำ
PointerInputFilter.onPointerInput(...)
ออกแล้วPointerInputFilter.onPointerEvent(...)
ควรใช้แทน (I6f04a)การเปลี่ยนแปลงขนาด
- นำ Size.getFlipped ออกแล้ว
- Removed Size.rem
- นำ Size.truncDiv ออก (Ief44d, b/169790720)
ในการปรับค่า Sentinel สำหรับคลาสแบบอินไลน์ให้เป็นมาตรฐาน ให้เปลี่ยนชื่อ Color.Unset เป็น Color.Unspecified เพื่อให้สอดคล้องกับคลาสแบบอินไลน์อื่นๆ (I97611, b/169797763)
เปิดตัว TextOverflow.None เมื่อการล้นเป็น None ข้อความจะไม่จัดการการล้นอีกต่อไป และจะรายงานขนาดจริงไปยัง LayoutNode (I175c9, b/158830170)
เปลี่ยนชื่อพารามิเตอร์ขอบเขตภายใน AnnotatedString.Builder.addStringAnnotation เป็นแท็กเพื่อให้ API สอดคล้องกัน (I7c8cb)
การแก้ไขข้อบกพร่อง
- ประสิทธิภาพการเลื่อนของ LazyColumn/Row ได้รับการปรับปรุงโดยการทำงานในองค์ประกอบย่อยน้อยลงในทุกการเลื่อน เราได้เพิ่มเมธอด hasInvalidations() ใหม่สำหรับคลาส Composition และเปลี่ยนชื่อเมธอด hasPendingChanges() จาก Recomposer เป็น hasInvalidations() (Ib2f32, b/168293643, b/167972292, b/165028371)
- อัปเดตพารามิเตอร์ Size.Unspecified ให้เป็น Float.NaN แทน Float.POSITIVE_INFINITY อัปเดตการใช้งาน Painter เพื่อ ตรวจสอบกับ Size.Unspecified ด้วย รวมถึงขนาดที่ไม่ใช่จำนวนจำกัด (I95a7e)
- ลำดับการเรียกใช้ place() ในเลย์เอาต์ที่กำหนดเองจะกำหนดลำดับการวาดสำหรับวิดเจ็ตย่อย (Ibc9f6)
- รองรับการแปลง AnnotatedString เป็น SpannableString เพื่อการช่วยเหลือพิเศษ (Ief907)
- เพิ่ม Stub สำหรับคลาส Android ที่อยู่ในแพลตฟอร์มรุ่นเก่าเพื่อหลีกเลี่ยงการใช้การสะท้อนเมื่อเป็นไปได้ (Ia1790)
- แก้ไขข้อบกพร่อง: หากแป้นพิมพ์ซอฟต์แวร์แสดงขึ้นทำให้แอปแปลภาษา พิกัดอินพุตของเคอร์เซอร์จะกลายเป็นไม่ถูกต้อง (Ic4cec, b/163077821)
เวอร์ชัน 1.0.0-alpha04
1 ตุลาคม 2020
androidx.compose.ui:ui-*:1.0.0-alpha04
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha04 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม OwnerScope เพื่ออนุญาตให้รวบรวม ขอบเขตการสังเกตเลย์เอาต์และการวาดเมื่อ ไม่ถูกต้องอีกต่อไป (Ic4cf8)
- เพิ่ม OnRemeasuredModifier และ onSizeChanged() เพื่อ รับการเรียกกลับเมื่อมีการวัดเลย์เอาต์เนื้อหาอีกครั้งและ ขนาดมีการเปลี่ยนแปลงตามลำดับ (I657cf, b/154108792)
- เพิ่มการดำเนินการตามความหมายของการคลิกแบบยาว (I6281b, b/156468846)
- ทำให้ FocusManager เป็นแบบส่วนตัว (I7872f)
อัปเดตการใช้งานเพื่อสร้าง การใช้งาน DrawCacheModifier โดยเฉพาะ แทนที่จะเพิ่มพร็อพเพอร์ตี้ที่ไม่บังคับใน DrawModifier
อัปเดตเอกสารประกอบสำหรับเมธอดต่างๆ (Ibd166)
ทำให้ TextRange เป็นแบบอินไลน์เพื่อหลีกเลี่ยงการสร้างออบเจ็กต์ (Id034b)
PlacementScope#parentWidth และ PlacementScope#parentLayoutDirection จะอ่านจากบล็อกตำแหน่งของเลย์เอาต์ที่กำหนดเองไม่ได้อีกต่อไป (Icc1ae, b/168295623)
เพิ่ม AccessibilityScrollState ลงในพร็อพเพอร์ตี้ความหมาย (Ifeda9)
เปิดตัว Modifier.drawWithCache เพื่อรองรับการสร้างออบเจ็กต์การวาด ที่สร้างการอ้างอิงใหม่แบบมีเงื่อนไข ซึ่งขึ้นอยู่กับข้อมูลขนาด/สถานะ (I376dc)
นำ ParagraphConstraints ออกแล้ว ตอนนี้ระบบจะส่งความกว้างไปยังย่อหน้าโดยตรง (Ica712)
การแก้ไขข้อบกพร่อง
- อัปเดต Graphics API หลายรายการ
- อัปเดต API การแปลงขนาดและการหมุน เพื่อใช้พารามิเตอร์ออฟเซ็ตเดียว เพื่อแสดงพิกัดจุดหมุน แทนพารามิเตอร์ลอยตัวแยกกัน สำหรับพิกัด x/y ใน DrawScope และ DrawTransform
- นำเมธอด Rect.expandToInclude และ Rect.join ออกแล้ว
- อัปเดตเอกสารประกอบเกี่ยวกับรัศมีให้ระบุว่าวงรี นอกเหนือจากวงกลม
- เพิ่มเอกสารเพื่อระบุว่าไม่ควรเรียกใช้ตัวสร้างสาธารณะสำหรับคลาส Radius แบบอินไลน์โดยตรง แต่ควรสร้างออบเจ็กต์ Radius ผ่านตัวสร้างฟังก์ชันของออบเจ็กต์แทน
- นำ API RoundRect ออกเพื่อค้นหา topRight, bottomRight, bottomCenter ฯลฯ
- เลิกใช้ Rect.shift เพื่อใช้ Rect.translate แทน
- นำ API RoundRect.grow และ Rect.shrink ออกแล้ว
- เปลี่ยนชื่อ RoundRect.outerRect เป็น Rect.boundingRect
- นำเมธอด RoundRect.middleRect/tallMiddleRect/wideMiddleRect และ Rect.isStadium ออก
- เปลี่ยนชื่อ RoundRect.longestSide เป็น RoundRect.maxDimension
- เปลี่ยนชื่อ RoundRect.shortestSide เป็น RoundRect.minDimension
- เปลี่ยน RoundRect.center ให้เป็นพร็อพเพอร์ตี้แทนที่จะเป็นฟังก์ชัน
- อัปเดตตัวสร้าง RoundRect เพื่อใช้พร็อพเพอร์ตี้ Radius แทนพารามิเตอร์แต่ละรายการสำหรับค่ารัศมี x/y
- นำ API ขนาดที่ถือว่าเป็นสี่เหลี่ยมผืนผ้าที่มี ต้นทางที่ 0,0 ออกแล้ว
- เพิ่ม API การทำลายลงใน Radius
- ย้ายฟังก์ชันส่วนขยาย RoundRect ต่างๆ ไปเป็น พร็อพเพอร์ตี้แทน
- (I8f5c7, b/168762961)
- เลิกใช้งาน foundation.Box แล้ว โปรดใช้ foundation.layout.Box แทน (Ie5950, b/167680279)
- เปลี่ยนชื่อ Stack เป็น Box แล้ว ระบบจะเลิกใช้งาน Box ที่มีอยู่ก่อนหน้านี้เพื่อรองรับ Box ใหม่ใน compose.foundation.layout ลักษณะการทำงานของ Box ใหม่คือการวางองค์ประกอบย่อยซ้อนกันเมื่อมีองค์ประกอบย่อยหลายรายการ ซึ่งแตกต่างจาก Box ก่อนหน้าที่มีลักษณะการทำงานคล้ายกับคอลัมน์ (I94893, b/167680279)
- เลิกใช้งานพารามิเตอร์การตกแต่งกล่องแล้ว หากต้องการมีการตกแต่ง/ระยะห่างภายในในช่อง ให้ใช้ตัวแก้ไขแทน (Modifier.background, Modifier.border, Modifier.padding) (Ibae92, b/167680279)
- อัปเดต Graphics API หลายรายการ
- อัปเดต DrawScope API ด้วยเมธอดการเปลี่ยนรูปแบบที่กำหนดขอบเขตเพื่อระบุว่าระบบจะใช้การเปลี่ยนรูปแบบภายในโค้ดเรียกกลับเท่านั้น และจะนำออกหลังจากเรียกใช้โค้ดเรียกกลับ
- อัปเดตเอกสารประกอบ clipPath เพื่ออ้างอิงถึง Path แทนสี่เหลี่ยมผืนผ้าโค้งมน
- แก้ไขการเว้นวรรคในเอกสารประกอบสำหรับพารามิเตอร์ right ใน clipPath
- เปลี่ยนชื่อ DrawScope.drawCanvas เป็น drawIntoCanvas และ นำพารามิเตอร์ขนาดออก
- เปลี่ยนชื่อพารามิเตอร์ dx/dy ในเมธอด inset เป็น horizontal และ vertical
- เพิ่มการโอเวอร์โหลด Inset ที่ให้ค่า Inset เดียวกันกับขอบทั้ง 4 ด้าน
- นำเอกสารเกี่ยวกับวิธีการแทรกที่ระบุว่า จะใช้การแทรกกับทั้ง 4 ด้านออก
- เอกสารประกอบที่อัปเดตสำหรับคลาส Rect
- อัปเดตความคิดเห็นเกี่ยวกับพารามิเตอร์ Rect ให้ตรงกับรูปแบบ kdoc
- นำ Rect.join และ Rect.expandToInclude ออกแล้ว
- สร้างการโอเวอร์โหลดสำหรับ Rect.translate(offset) และ เลิกใช้งาน Rect.shift
- (If086a, b/167737376)
- ใส่คำอธิบายประกอบ rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled และ textInputServiceFactory ด้วย @VisibleForTesting เพื่อให้เป็น API ภายในและซ่อน KDoc (I554eb, b/168308412)
- นำ SelectionContainer ออกจากด้านบนเพื่อปิดใช้การเลือกเริ่มต้นและหลีกเลี่ยงลักษณะการทำงานที่ไม่คาดคิด คุณสามารถใช้ SelectionContainer เพื่อห่อหุ้มเนื้อหาที่ต้องเลือกได้แทน (I8dfe0, b/158459594)
เวอร์ชัน 1.0.0-alpha03
16 กันยายน 2020
androidx.compose.ui:ui-*:1.0.0-alpha03
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha03 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- นำการดำเนินการเชิงความหมายของการเลื่อนไปข้างหน้า/ข้างหลังออก เพิ่มขั้นตอน ใน AccessibilityRangeInfo (Ia47b0)
- นำ
onInvalidate()
ออกจากOwner
--OwnedLayer
จัดการการทำให้เป็นโมฆะ (Ica72b, b/162061312) นำวิธีการของโอเปอเรเตอร์ใน Size API ที่ใช้พารามิเตอร์ออฟเซ็ตออก ผลลัพธ์ของการดำเนินการเหล่านี้ไม่ชัดเจน และประเภทของผลลัพธ์ไม่คาดคิด สำหรับรายการเหล่านี้ เช่น ควรให้ขนาด - ออฟเซ็ตส่งคืน ออฟเซ็ตหรือผลลัพธ์ขนาดที่มีความแตกต่าง
นอกจากนี้ยังนำเมธอดที่เลิกใช้งานแล้วในคลาส Size ออกด้วย (Iec902, b/166514214)
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาที่บางครั้งมีการวาดรายการของ LazyColumn อย่างไม่ถูกต้อง ซึ่งทำให้เกิดข้อขัดข้องในบางกรณีด้วย (Ibcf17, b/163066980, b/165921895)
- เราเลิกใช้งาน DpConstraints และ API ที่ใช้ DpConstraints แล้ว (I90cdb, b/167389835)
- ย้าย
createAndroidComposeRule
และAndroidInputDispatcher
จากandroidx.ui.test.android
ไปยังandroidx.ui.test
(Idef08, b/164060572) - การใช้งานแรงโน้มถ่วงได้รับการเปลี่ยนชื่ออย่างสม่ำเสมอเป็น "จัดแนว" หรือ "การจัดแนว" ใน Layout API (I2421a, b/164077038)
- เพิ่ม onNode และเมธอดส่วนกลางอื่นๆ ใน ComposeTestRule เนื่องจาก เมธอดส่วนกลางปัจจุบันจะเลิกใช้งาน (Ieae36)
เวอร์ชัน 1.0.0-alpha02
2 กันยายน 2020
androidx.compose.ui:ui-*:1.0.0-alpha02
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha02 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- remove callback to notify Owner when layoutnode bounds change. (If654e, b/166106882)
- เพิ่มการรองรับพารามิเตอร์ filltype ในเส้นทางกราฟิกแบบเวกเตอร์ เพื่อรองรับการตัดรูปร่างตาม กฎการเติมเส้นทาง evenOdd หรือ NonZero (I43dd2)
- ตอนนี้เวลาทำงานและความเร็วเป็นคลาสอินไลน์แล้ว (I48f4a)
- ตอนนี้ระยะเวลาเป็นคลาสแบบอินไลน์ (I565eb)
- เพิ่มการเรียกกลับเพื่อแจ้งให้เจ้าของทราบเมื่อขอบเขตของ LayoutNode เปลี่ยนแปลง (Ic40b3)
แก้ไขปัญหาที่ตัวสร้างฟังก์ชัน Rect ที่มีออฟเซ็ตและรัศมีจะสร้าง Rect ใน ลำดับซ้าย ขวา บน ล่าง แทนที่จะเป็น ซ้าย บน ขวา ล่าง
นำวิธีการที่เลิกใช้งานแล้วใน Rect ออกเพื่อใช้ตัวสร้างฟังก์ชันแทน
เพิ่มการทดสอบเพื่อยืนยันวิธีการใน Rect.kt (I08460, b/165822356)
การแก้ไขข้อบกพร่อง
- เพิ่ม MutableRect ซึ่งเป็นสี่เหลี่ยมผืนผ้าที่แก้ไขได้ (I71bd2, b/160140398)
- Matrix4 ถูกแทนที่ด้วย Matrix ส่วนอื่นๆ ทั้งหมด ของแพ็กเกจ vectormath ถูกนำออกแล้ว (Ibd665, b/160140398)
รูปแบบการเรียกฟังก์ชันที่ใช้ร่วมกันได้มีการเปลี่ยนแปลง นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบแบบไบนารี ต้อง คอมไพล์ไลบรารีทั้งหมดอีกครั้งเพื่อให้ทำงานร่วมกับปลั๊กอินคอมไพเลอร์ Compose เวอร์ชันนี้ได้
การเปลี่ยนแปลงนี้ไม่ได้สร้างการเปลี่ยนแปลงที่ทําให้เกิดข้อขัดข้องในระดับแหล่งที่มา เนื่องจากมีเพียง API ของคอมไพเลอร์เท่านั้นที่เปลี่ยนแปลงและต้องเลือกใช้โดยชัดแจ้ง (I7afd2, b/158123185)
แก้ไขข้อขัดข้องที่อาจเกิดขึ้นเมื่อ การส่งไปยัง PointerInputFilter อาจทำให้ ระบบนำ PointerInputFilter ออกพร้อมกัน (I58f25)
เวอร์ชัน 1.0.0-alpha01
26 สิงหาคม 2020
androidx.compose.ui:ui-*:1.0.0-alpha01
ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha01 มีคอมมิตต่อไปนี้
เวอร์ชัน 0.1.0-dev
เวอร์ชัน 0.1.0-dev17
19 สิงหาคม 2020
androidx.compose.ui:ui-*:0.1.0-dev17
ได้รับการเผยแพร่แล้ว เวอร์ชัน 0.1.0-dev17 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
emitView
ถูกเลิกใช้งานแล้ว หากเป็นไปได้ ให้ใช้AndroidView
แทนเพื่อส่ง View ภายใน Compose โปรดทราบว่าในอนาคตเราจะไม่รองรับการเขียน View และ ViewGroup โดยตรง เว้นแต่จะเป็นองค์ประกอบสุดท้ายในโครงสร้างการเขียน ซึ่งในกรณีนี้จะทำได้โดยใช้ AndroidView (I29b1e, b/163871221)FocusState2
ถูกเลิกใช้งานและแทนที่ด้วยFocusState
(Ia8b79, b/160822876, b/160923332)- นำการโอเวอร์โหลด AndroidView ที่เลิกใช้งานแล้วออก (I946b9, b/163802393)
- ตอนนี้ Custom emits สามารถประกาศได้ว่าข้ามตัวตั้งค่าอย่างน้อย 1 รายการ และประกอบใหม่โดยไม่ขึ้นอยู่กับ emit ได้ (Ibbd13)
เปลี่ยนคลาส Vector เพื่อไม่ให้เป็นคลาสข้อมูลอีกต่อไป เนื่องจากใช้ออบเจ็กต์อินสแตนซ์เดียวกัน สำหรับการเรียบเรียง
เพิ่มแฟล็ก mutableStateOf สำหรับ VectorPainter เพื่อวาดซ้ำแบบมีเงื่อนไขหากเนื้อหาของ เวกเตอร์มีการเปลี่ยนแปลง
รีแฟกเตอร์อินสแตนซ์ VectorComponent ให้เป็น ส่วนหนึ่งของ VectorPainter เนื่องจากมีการนำมาใช้ซ้ำ ในการเรียบเรียงเพลง
อัปเดต GroupComponent และ PathComponent เพื่อให้ฟิลด์ชื่อแก้ไขได้ (Ieae45, b/151378808)
นำ
onChildPositioned
และOnChildPositionedModifier
ออกแล้ว นักพัฒนาแอปควรใช้onPositioned
และOnPositionedModifier
ในเลย์เอาต์ย่อยแทน (I4522e, b/162109766)ออฟเซ็ตกลายเป็นคลาสอินไลน์ (Iaec70)
เพิ่มพารามิเตอร์ตัวแก้ไขลงใน SelectionContainer (I4aada, b/161487952)
นำ FocusModifier ที่เลิกใช้งานแล้วออก (I0b4ba, b/160922116, b/160821157, b/162441435, b/160822875, b/160921940)
เพิ่ม Lambda
mergePolicy
ไปยังSemanticsPropertyKey
แล้ว ซึ่งใช้เพื่อกำหนดนโยบายที่กำหนดเองสำหรับตรรกะของ mergeAllDescendants การผสานได้ นโยบายเริ่มต้นคือการใช้ค่าระดับบนหากมีอยู่แล้ว ไม่เช่นนั้นจะใช้ค่าระดับล่าง (Iaf6c4, b/161979921)ตอนนี้ข้อจำกัดเป็นคลาสแบบอินไลน์แล้ว (I88736)
เพิ่ม FocusManager ที่ย้ายตรรกะโฟกัสทั่วไปออกจาก AndroidComposeView (I528ef, b/161487952, b/162206799)
อัปเดตชื่อ PointerEventPass สำหรับรุ่นอัลฟ่า (Ifda6f)
ตอนนี้ IntOffset เป็นคลาสอินไลน์ (Iac0bf) แล้ว
ตอนนี้ IntSize เป็นคลาสแบบอินไลน์ (I2bf42) แล้ว
เราเปลี่ยนชื่อ
PlacementScope.placeAbsolute()
เป็นPlacementScope.place()
และเปลี่ยนชื่อPlacementScope.place()
ก่อนหน้าเป็นPlacementScope.placeRelative()
ด้วยเหตุนี้ วิธีPlacementScope.place()
จะไม่สะท้อนตำแหน่งในบริบทจากขวาไปซ้ายโดยอัตโนมัติอีกต่อไป หากต้องการใช้ฟีเจอร์นี้ ให้ใช้PlacementScope.placeRelative()
แทน (I873ac, b/162916675)ตอนนี้ AlertDialog ใช้ FlowRow สำหรับปุ่มแล้ว (I00ec1, b/161809319, b/143682374)
ทำให้ยูทิลิตีการทดสอบบางอย่างเป็นแบบไม่สาธารณะเนื่องจากไม่ได้อยู่ในตำแหน่งที่ควรอยู่ จะเผยแพร่ต่อสาธารณะในอนาคต (I32ab1)
จัดระเบียบโค้ดอินพุตของเคอร์เซอร์ใหม่ (Ie3f45)
เลิกใช้ PxBounds ใน Rect อัปเดตการใช้งานทั้งหมด ของ PxBounds ด้วย rect และเพิ่ม คำอธิบายประกอบที่เลิกใช้งาน/แทนที่อย่างเหมาะสม เพื่อช่วยในการ ย้ายข้อมูล (I37038, b/162627058)
นำ KeyEvent2 ที่เลิกใช้งานแล้วออก โปรดใช้ KeyEvent แทน (Ied2d0, b/162097587)
KeyEvent มีพร็อพเพอร์ตี้ Unicode ที่ใช้เพื่อรับอักขระ Unicode ที่สร้างขึ้นจากชุดค่าผสมของสถานะคีย์และสถานะเมตาคีย์ที่ระบุได้ (If3afc)
ทำให้เหตุการณ์ที่กำหนดเอง DelayUp และคลาสที่เกี่ยวข้องเป็น API ที่ต้องเลือกใช้เนื่องจาก มีแนวโน้มที่จะมีการเปลี่ยนแปลง (I56d6f)
นำ PointerEventPasses 2 รายการที่ไม่จำเป็นอีกต่อไปออก (I3dd9d)
เพิ่มพารามิเตอร์สี เงา และ TextDecoration ไปยัง Paragraph.paint ฟังก์ชันนี้มีประโยชน์ในการหลีกเลี่ยงการสร้าง Paragraph ใหม่โดยไม่จำเป็น (I81689)
การแก้ไขข้อบกพร่อง
- นำการเรียกกลับ onFocusChanged ออกจาก TextField ใช้ Modifier.focusObserver แทน (I51089, b/161297615)
- เลิกใช้งาน Modifier.drawBorder แล้ว โปรดใช้ Modifier.border แทน แทนที่คลาสข้อมูลเส้นขอบด้วย BorderStroke (I4257d, b/158160576)
นำการเรียก FrameManager ที่เลิกใช้งานแล้วออก
มีการเปลี่ยนแปลง API การเขียนภายในเพื่อลดปริมาณ ค่าใช้จ่ายในการติดตามออบเจ็กต์สถานะ เช่น
mutableStateof()
(I80ba6)เราได้นำ VerticalScroller และ HorizontalScroller ออกแล้ว โปรดใช้ ScrollableColumn/Row แทน นำ Modifier.drawBackground ออกแล้ว ใช้ Modifier.background (I73b0d, b/163019183)
แก้ไขข้อขัดข้องเมื่อมีการใช้สิ่งที่บันทึกสถานะภายในลูป for ตอนนี้ระบบอนุญาตให้มีคีย์เดียวกันใน savedInstanceState() แล้ว เราจึงปรับ API ของ UiSavedStateRegistry ให้เป็นไปตามข้อกำหนดใหม่นี้ (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561)
ตอนนี้เราเลิกใช้งาน
state { ... }
ที่ใช้ร่วมกันได้แล้วเพื่อเปลี่ยนไปใช้ การเรียกremember { mutableStateOf(...) }
อย่างชัดเจนเพื่อความชัดเจน ซึ่งจะช่วยลดพื้นผิว API โดยรวมและจำนวนแนวคิดสำหรับการจัดการสถานะ รวมถึงตรงกับรูปแบบby mutableStateOf()
สำหรับการมอบสิทธิ์พร็อพเพอร์ตี้ของคลาส (Ia5727)เปลี่ยนชื่อ RRect เป็น RoundRect เพื่อให้สอดคล้องกับรูปแบบการตั้งชื่อของ Compose มากขึ้น สร้างตัวสร้างฟังก์ชันที่คล้ายกัน กับ RRect และเลิกใช้งานตัวสร้างฟังก์ชัน RRect (I5d325)
เวอร์ชัน 0.1.0-dev16
5 สิงหาคม 2020
androidx.compose.ui:ui-*:0.1.0-dev16
ได้รับการเผยแพร่แล้ว เวอร์ชัน 0.1.0-dev16 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เลิกใช้งาน OnChildPositioned แล้ว ให้ใช้ OnPositioned ในองค์ประกอบย่อยแทน (I87f95, b/162109766)
- เลิกใช้งาน setViewContent แล้ว ควรใช้ setContent แทน (I7e497, b/160335130)
- เพิ่ม AndroidViewBinding API สำหรับการขยายและจัดองค์ประกอบทรัพยากรเลย์เอาต์ตาม ViewBinding (I081c6)
- KeyEvent2 จะแทนที่ด้วย KeyEvent (I2d770, b/162097585)
- เพิ่มการรองรับคีย์ฮาร์ดแวร์ Alt (I9036b)
- เลิกใช้งาน FocusManager แล้ว โปรดใช้ Modifier.focus(), Modifier.focusObserver() และ Modifier.focusRequester() แทน (I74ae4, b/162211322)
- loadVectorResource รองรับแอตทริบิวต์ trimPath (I808fe)
- ย้ายกล่องโต้ตอบไปยัง UI (I47fa6)
- นำ PointerEventPasses 2 รายการที่ไม่จำเป็นอีกต่อไปออก (I33ca7)
- ใช้ PointerInteropModifier ซึ่งช่วยให้รับ MotionEvent และโต้ตอบกับ Compose ได้ ราวกับว่าคุณใช้ Android View (Ieb08c)
- นำตัวแก้ไขแท็กที่เลิกใช้งานแล้วออก โปรดใช้ layoutId แทน (Idaa05, b/162023919)
- มีการอัปเดต API สำหรับการรองรับจากขวาไปซ้ายแล้ว เพิ่ม LayoutDirectionAmbient ซึ่งใช้เพื่ออ่านและเปลี่ยนทิศทางการจัดวางได้ นำ Modifier.rtl และ Modifier.ltr ออกแล้ว (I080b3)
- รองรับการตัดเส้นทางในกราฟิกเวกเตอร์ (Ie16c9, b/158188351)
- เพิ่ม Modifier.layout() ที่ช่วยให้สร้างตัวแก้ไขเลย์เอาต์ที่กำหนดเองได้อย่างสะดวก (I73b69, b/161355194)
- เพิ่ม API ของ AndroidView ใหม่และเลิกใช้งาน API ที่มีอยู่ (I5bcfd)
- เลิกใช้งาน Modifier.plus แล้ว ให้ใช้ Modifier.then แทน คำว่า "จากนั้น" มีสัญญาณที่ชัดเจนกว่าในการเรียงลำดับ และยังห้ามพิมพ์
Modifier.padding().background() + anotherModifier
ซึ่งจะทำให้การอ่านยากขึ้น (Iedd58, b/161529964) - เพิ่ม [Abstract]ComposeView คลาสย่อยของ View สำหรับโฮสต์เนื้อหา Compose ในลำดับชั้นของ View (I46357)
- ตอนนี้
Row
และColumn
เป็นฟังก์ชันแบบอินไลน์แล้ว ซึ่งช่วยลดค่าใช้จ่ายในการใช้งานได้อย่างมาก (I75c10) - เพิ่ม SubcomposeLayout แล้ว ซึ่งเป็นองค์ประกอบระดับต่ำที่ช่วยให้เราจัดวางองค์ประกอบย่อยในระหว่างการวัดได้ หากต้องการใช้ค่าบางอย่างที่ใช้ได้ในภายหลังระหว่างการวัดสำหรับการจัดวางองค์ประกอบย่อย เช่น WithConstraints ไม่ได้ใช้ SubcomposeLayout (I25cc8)
- เพิ่ม
SemanticsNode.positionInRoot
เพื่อรับตำแหน่งของ SemanticsNode ที่สัมพันธ์กับรูทของลำดับชั้น Compose (Icdf26, b/161336532) - MotionEvent จะส่งผ่านจาก Android ไปยัง Compose และกลับไปยัง Android (I14be8, b/158034713)
- นำ DropdownPopup ออกแล้ว (I00430)
- ตำแหน่งป๊อปอัปคงที่บนจอแสดงผลที่มีรอยบาก (Idd7dd)
- เพิ่มการดำเนินการสำหรับการช่วยเหลือพิเศษเพื่อรับ TextLayoutResult (I9d6e6)
- เพิ่ม RemeasurementModifier ซึ่งช่วยให้วัดเลย์เอาต์อีกครั้งแบบซิงโครนัสได้ โดยทั่วไปคุณไม่จำเป็นต้องใช้เนื่องจากระบบจะทำการวัดซ้ำ/จัดเลย์เอาต์ใหม่โดยอัตโนมัติ แต่เราใช้ภายใน LazyColumnItems ระหว่างการเลื่อน (I5f331, b/160791058)
- นำ getLineEllipsisOffset/getLineEllipsisCount ออก ใช้ getLineVisibleEnd/getLineEnd/isLineEllipsized แทน (I85aa2)
- เพิ่มเครื่องหมาย/คำอธิบายประกอบเพื่อเป็นแนวทางปฏิบัติแนะนำ (I66b20)
- เปิดเผย API บรรทัดเพิ่มเติมใน TextLayoutResult (I79bd2)
- ตอนนี้คุณเข้าถึงตัวแปลงเวกเตอร์แบบบิวท์อินเพื่อแปลงหน่วยแบบบิวท์อินได้แล้วผ่าน Foo.VectorConverter เช่น Dp.VectorConverter, Color.VectorConverter, Float.VectorConverter เป็นต้น (I3e273)
การแก้ไขข้อบกพร่อง
- แก้ไข API ที่กว้าง (I077bc)
- นำอินเทอร์เฟซ OffsetBase ที่ไม่ได้ใช้ออก
- จัดคลาส Offset และ IntOffset ให้มี พื้นผิว API ที่สอดคล้องกัน
- เปลี่ยนชื่อ IntOffset.Origin เป็น IntOffset.Zero เพื่อให้สอดคล้องกับ Offset API
- ย้ายเมธอด nativeCanvas ออกจากอินเทอร์เฟซ Canvas เพื่อรองรับผู้ใช้ในการสร้างอินสแตนซ์ Canvas ของตนเอง
- สร้างคลาส EmptyCanvas สตับเพื่อรีแฟคเตอร์ DrawScope ให้เป็นพารามิเตอร์ที่ไม่ใช่ Null แทน lateinit และตรวจสอบว่าฟิลด์ไม่ใช่ Null
- เปลี่ยนชื่อ Enum ของ ClipOp เป็น Pascal Case
- เปลี่ยนชื่อ Enum FilterQuality ให้เป็น Pascal Case
- เปลี่ยนชื่อ enum StrokeJoin เป็น Pascal Case
- เปลี่ยนชื่อ PointMode enums เป็น Pascal Case
- เปลี่ยนชื่อการแจงนับ PaintingStyle เป็น Pascal Case
- เปลี่ยนชื่อการแจงนับ PathFillType เป็น Pascal Case
- เปลี่ยนชื่อ Enum StrokeCap ให้เป็น Pascal Case
- อัปเดตการใช้งาน DrawCache เพื่อไม่ให้ ใช้พารามิเตอร์ lateinit อีกต่อไป
- อัปเดต DrawScope เพื่อไม่ให้ใช้การมอบสิทธิ์แบบเลื่อนเวลาอีกต่อไป สำหรับพารามิเตอร์ภายใน fillPaint และ strokePaint
- อัปเดต Image ที่ใช้ร่วมกันได้เพื่อหลีกเลี่ยงการใช้ Box เพื่อลดค่าใช้จ่าย
- อัปเดตคลาส Outline ให้มีคำอธิบายประกอบ @Immutable
- อัปเดต PathNode ให้มีคำอธิบายประกอบ @Immutable สำหรับ คำสั่งเส้นทางแต่ละรายการ
- อัปเดตองค์ประกอบย่อยของเวกเตอร์เพื่อนำการตรวจสอบแบบมีเงื่อนไขที่ซ้ำซ้อนออก สำหรับการตรวจสอบความเท่ากัน เนื่องจาก Compose จัดการการตรวจสอบเหล่านี้อยู่แล้ว
- เลิกใช้งานเมธอดตัวสร้างคู่ของ Rect เพื่อ ใช้ตัวสร้างฟังก์ชันแทน
- อัปเดตคลาส Brush และตัวสร้างฟังก์ชันด้วย @Immutable และ @Stable API
- อัปเดตการแจงนับ VertexMode ให้เป็น PascalCase
- อัปเดตเมธอด selectPaint ของ DrawScope เพื่อเขียนทับพารามิเตอร์การขีดเขียนแบบมีเงื่อนไข ในสีหากมีการเปลี่ยนแปลง
- อัปเดตขนาดเพื่อเพิ่ม API การแยกโครงสร้าง เปลี่ยนชื่อ UnspecifiedSize เป็น Unspecified และนำเมธอดที่ไม่ได้ใช้ออก
- อัปเดตการใช้งาน BlendMode API ของ Compose เพื่อแมประหว่าง BlendMode ของเฟรมเวิร์ก Android กับโหมด PorterDuff อย่างถูกต้องตามระดับ API เปิดตัว BlendMode#isSupported API เพื่อทำหน้าที่ เป็นคำค้นหาความสามารถเพื่อพิจารณาว่าอุปกรณ์รองรับ BlendMode หรือไม่ก่อนที่จะใช้งาน (I0ef42)
- เพิ่ม LazyItemScope สำหรับพารามิเตอร์ itemContent ของรายการ Lazy โดยจะให้ตัวแก้ไขเพื่อเติมขนาดสูงสุดขององค์ประกอบระดับบน ซึ่งจะแก้ Use Case เมื่อรายการควรเติมวิวพอร์ตและ Modifier.fillMaxSize() ปกติใช้ไม่ได้เนื่องจากระบบวัดรายการด้วยข้อจำกัดแบบอนันต์ (Ibd3b2, b/162248854)
- นำ
SemanticsNodeInteraction.performPartialGesture
ออกแล้ว โปรดใช้SemanticsNodeInteraction.performGesture
แทน (Id9b62) - เปลี่ยนชื่อ
LazyColumnItems
เป็นLazyColumnFor
แล้ว เปลี่ยนชื่อLazyRowItems
เป็นLazyRowFor
(I84f84) แล้ว foundation.shape.corner
แพ็กเกจถูกลดระดับเป็นfoundation.share
(I46491, b/161887429)- เปลี่ยนชื่อ
AndroidComposeTestRule
เป็นcreateAndroidComposeRule
แล้ว (I70aaf) - เพิ่ม API ลงใน
TextLayoutResult
(Id7e04) - เราได้เปลี่ยนชื่อ Material
FilledTextField
เป็นTextField
และเปลี่ยนชื่อพื้นฐานTextField
เป็นBaseTextField
เพื่อให้ค้นพบและใช้งาน API ที่ต้องการได้ง่ายที่สุด (Ia6242, b/155482676) - เปลี่ยนชื่อ Modifier.drawBackground เป็น Modifier.background (I13677)
เวอร์ชัน 0.1.0-dev15
22 กรกฎาคม 2020
androidx.compose.ui:ui-*:0.1.0-dev15
ได้รับการเผยแพร่แล้ว เวอร์ชัน 0.1.0-dev15 มีคอมมิตเหล่านี้
การอัปเดตการขึ้นต่อกัน
- หากต้องการใช้ Compose เวอร์ชัน
0.1.0-dev15
คุณจะต้องอัปเดตการอ้างอิง ตามข้อมูลโค้ดใหม่ที่แสดงด้านบนในส่วนการประกาศการอ้างอิง
การเปลี่ยนแปลง API
- FocusModifier เลิกใช้งานแล้วเพื่อใช้ Modifier.focus, Modifier.focusRequester, Modifier.focusObserver แทน เราเลิกใช้งาน FocusState และ FocusDetailedState แล้วเพื่อรองรับ FocusState2 (I46919, b/160822875, b/160922136)
- เพิ่มตัวแก้ไขเพื่อสังเกตการเปลี่ยนแปลงสถานะโฟกัส (I05866, b/160924455, b/160923326)
- เพิ่มตัวแก้ไขเพื่อขอการเปลี่ยนแปลงโฟกัส (I8dd73, b/161182057, b/160924778)
- ปรับเมนูแถบเครื่องมือเพื่อให้แสดงการคัดลอก ตัด วาง ได้อย่างถูกต้อง (Id3955)
- พร็อพเพอร์ตี้ที่มีความหมายแบบค่าเดียวจะใช้รูปแบบการเรียกในตอนนี้
เช่น ตอนนี้เขียน 'semantics { hidden = true }' เป็น
semantics { hidden() }
(Ic1afd, b/145951226, b/145955412) - เพิ่ม Modifier.focus ซึ่งจะแทนที่ FocusModifier (Ib852a, b/160924778)
- เพิ่ม FloatingToolbar สำหรับการเลือก TextField (Ie8b07)
- เพิ่มคำอธิบายประกอบ API เวอร์ชันทดลองสำหรับ API ที่เกี่ยวข้องกับการป้อนคีย์ (I53c0a)
- เพิ่มคำอธิบายประกอบ API เวอร์ชันทดลองสำหรับ API ทั้งหมดที่เกี่ยวข้องกับโฟกัส (I53b24, b/160903352)
- เพิ่ม FocusState2 ซึ่งจะแทนที่ FocusDetailedState (I0a3ba, b/160822595)
- เพิ่ม ExperimentalFocus ซึ่งเป็นคำอธิบายประกอบ @OptIn สำหรับ Focus API (I1544b, b/160820961)
- เพิ่มคลาสหน่วย IntBounds ซึ่งแสดงขอบเขตพิกเซลจำนวนเต็มจากการจัดวาง เราได้อัปเดต API ของ PopupPositionProvider เพื่อให้ใช้ได้แล้ว (I0d8d0, b/159596546)
- ตอนนี้ Applier ต้องมีเมธอด clear() สำหรับการทิ้ง องค์ประกอบ (Ibe697)
- เลิกใช้งาน KeyEvent แล้วและแทนที่ด้วย KeyEvent2 (I68730)
- เพิ่มแฟล็กที่ไม่บังคับใหม่ useUnmergedTree ลงในเครื่องมือค้นหาการทดสอบ (I2ce48)
- ทำให้ LayoutNode เป็น API เวอร์ชันทดลอง (I4f2e9)
เพิ่มวิธีการคัดลอกไปยังคลาสประเภทต่างๆ ในบรรทัด ได้แก่
- ออฟเซ็ต
- ขนาด
- รัศมี
- การเคลื่อนไหว
TransformOrigin
เลิกใช้งานเมธอด Size.copy companion object เพื่อใช้เมธอดสำเนาอินสแตนซ์แทน (Ife290, b/159905651)
ตอนนี้ป๊อปอัป กล่องโต้ตอบ และเมนูจะรับค่า MaterialTheme ตามบริบทแล้ว (Ia3665, b/156527485)
เปลี่ยนชื่อ TextDirection เป็น ResolvedTextDirection (I3ff38)
นำพารามิเตอร์ทิศทางเลย์เอาต์ออกจากบล็อกการวัดของฟังก์ชัน Layout() อย่างไรก็ตาม คุณสามารถดูทิศทางเลย์เอาต์ได้ภายในโค้ดเรียกกลับผ่านออบเจ็กต์ขอบเขตการวัด (Ic7d9d)
ปรับโครงสร้าง SelectionHandles เพื่อนำกลับมาใช้ใหม่ (I420e0)
นำ Clickable ออกแล้ว ใช้ Modifier.clickable (I84bdf)
ลบ TestTag และ Semantics แล้ว ให้ใช้ Modifier.testTag และ Modifier.semantics แทน (I15ff0, b/158841414)
ก่อนการเปลี่ยนแปลงนี้ ปลั๊กอินคอมไพเลอร์ Compose จะดักจับการเรียกไปยังตัวสร้างภายในฟังก์ชัน @Composable อย่างไม่เหมาะสมหากมี (I5205a, b/158123804)
เราเปลี่ยนชื่อ Modifier.tag เป็น Modifier.layoutId เพื่อไม่ให้เกิดความสับสนกับ Modifier.testTag (I995f0)
ตอนนี้ตำแหน่งบรรทัดการจัดแนว Int ที่แสดงผลจาก Placeable#get(AlignmentLine) จะไม่ใช่ค่าว่างแล้ว หากไม่มีเส้นแนวที่ค้นหา ระบบจะแสดงผล AlignmentLine.Unspecified (I896c5, b/158134875)
เพิ่มพารามิเตอร์ตัวแก้ไขลงใน Composable ของ AndroidView (I48a88, b/158746303)
เลิกใช้งาน Semantics() แล้ว โปรดใช้ Modifier.semantics() แทน (I72407, b/158841414)
เพิ่ม Composable viewModel() ซึ่งช่วยให้สร้างหรือรับ ViewModel ที่สร้างไว้แล้วได้ในลักษณะเดียวกับที่ทำงานใน Activity หรือ Fragment (I5fdd1)
แทนที่การใช้งาน IntPx ด้วย Int แทนที่ IntPxPosition ด้วย IntOffset แทนที่ IntPxSize ด้วย IntSize (Ib7b44)
เพื่อรวมจำนวนคลาสที่ใช้เพื่อแสดงข้อมูลการปรับขนาด ให้ใช้คลาส Size แทน PxSize ซึ่งจะให้ประโยชน์ ของคลาสอินไลน์เพื่อใช้ประโยชน์จาก Long ในการแพ็กค่า Float 2 ค่าเพื่อแสดง ความกว้างและความสูงที่แสดงเป็น Float (Ic0191)
เพื่อรวมจำนวนคลาสที่ใช้เพื่อแสดงข้อมูลการวางตำแหน่ง ให้ใช้คลาส Offset แทน PxPosition ซึ่งจะให้ประโยชน์ ของคลาสอินไลน์เพื่อใช้ประโยชน์จาก Long ในการแพ็กค่า Float 2 ค่าเพื่อแสดงออฟเซ็ต x และ y ที่แสดงเป็น Float (I3ad98)
แทนที่การใช้งานคลาส Px ในคลาส Compose ต่างๆ ซึ่งเป็นส่วนหนึ่งของความพยายามในการปรับโครงสร้างครั้งใหญ่เพื่อใช้เฉพาะ Dp และประเภทดั้งเดิมสำหรับพารามิเตอร์พิกเซล ลบคลาส Px ทั้งหมด (I3ff33)
แทนที่การใช้คลาส Px ในคลาส Compose ต่างๆ ซึ่งเป็นส่วนหนึ่งของความพยายามในการปรับโครงสร้างขนาดใหญ่เพื่อใช้เฉพาะ Dp และประเภทดั้งเดิมสำหรับพารามิเตอร์พิกเซล (I086f4)
แทนที่การใช้งานคลาส Px ในคลาส Compose ต่างๆ ซึ่งเป็นส่วนหนึ่งของความพยายามในการปรับโครงสร้างขนาดใหญ่เพื่อใช้เฉพาะ Dp และประเภทดั้งเดิมสำหรับพารามิเตอร์พิกเซล (Id3434)
แทนที่การใช้งานคลาส Px ในคลาส Compose ต่างๆ ซึ่งเป็นส่วนหนึ่งของความพยายามในการปรับโครงสร้างขนาดใหญ่เพื่อใช้เฉพาะ Dp และประเภทดั้งเดิมสำหรับพารามิเตอร์พิกเซล (I97a5a)
ตอนนี้เราเลิกใช้งาน TestTag แล้ว ใช้ Modifier.testTag แทน (If5110, b/157173105)
เราได้นำการติดตั้งใช้งานเริ่มต้นแบบไม่มีการดำเนินการของ ParentDataModifier#modifyParentData ออกแล้ว ซึ่งเทียบเท่ากับการไม่ติดตั้งใช้งานอินเทอร์เฟซตั้งแต่แรก (I0deaa)
เลิกใช้งาน ScaleFit ก่อนหน้านี้แล้ว จึงนำออก โปรดใช้ ContentScale แทน (Ifbc5b)
แทนที่การใช้คลาส Px ในคลาส Compose ต่างๆ ซึ่งเป็นส่วนหนึ่งของความพยายามในการปรับโครงสร้างขนาดใหญ่เพื่อใช้เฉพาะ Dp และประเภทดั้งเดิมสำหรับพารามิเตอร์พิกเซล (I19d02)
เพิ่มคอมโพเนนต์ DropdownMenu ใน ui-material ซึ่งเป็นการติดตั้งใช้งานเมนู Material Design (I9bb3d)
นำ LayoutTag() ที่เลิกใช้งานแล้วออก โปรดใช้ Modifier.tag() แทน นำ Modifier.matchParent() ที่เลิกใช้งานแล้วออก โปรดใช้ Modifier.matchParentSize() แทน (If8044)
แทนที่การใช้คลาส Px ในคลาส Compose ต่างๆ ซึ่งเป็นส่วนหนึ่งของความพยายามในการปรับโครงสร้างขนาดใหญ่ เพื่อให้ใช้เฉพาะ Dp และประเภทดั้งเดิมสำหรับพารามิเตอร์พิกเซล (I57bff)
เราเลิกเลิกการเลิกใช้งาน Modifier.semantics เพื่ออนุญาตให้ใช้กับคอมโพเนนต์ระดับสูง (I4cfdc)
การใช้งาน CanvasScope ที่รวมกัน ตอนนี้จึงมีเพียง DrawScope และ ContentDrawScope เปลี่ยนชื่อ CanvasScope เป็น DrawScope อัปเดต DrawScope เพื่อใช้ Density interface และจัดเตรียม LayoutDirection อัปเดตคลาสย่อย DrawScope ที่ลบแล้วใน ContentDrawScope Painter และ PainterModifier เพื่อไม่ให้รักษาพร็อพเพอร์ตี้ RTL ไว้ด้วยตนเองอีกต่อไป เนื่องจาก DrawScope มีพร็อพเพอร์ตี้นี้อยู่แล้ว โดยไม่ต้องระบุด้วยตนเอง (I1798e)
ตอนนี้ DoubleTapGestureFilter จะแยกความแตกต่างของ SingleTapGestureFilter ในโครงสร้าง (If92b1)
อัปเดต Alignment API และเพิ่มการรองรับการจัดแนวแบบสัมบูรณ์ (ซึ่งจะไม่พลิกอัตโนมัติในบริบท RTL) (I38cd3)
มีการเปลี่ยนแปลง API ตัวแก้ไข DrawLayer โดยเปลี่ยนชื่อ outlineShape เป็น shape และมีค่าเริ่มต้นเป็น RectangleShape และตอนนี้ไม่สามารถเป็น Null ได้ เปลี่ยนชื่อ clipToOutline เป็น clip และนำ clipToBounds ออกเนื่องจากเหมือนกับ clip == true ที่มี RectangleShape (I7ef11, b/155075735)
อัปเดต API Compose ระดับสูงขึ้น ที่แสดง Canvas เพื่อ แสดง CanvasScope แทน ซึ่งจะช่วยลดความจำเป็นที่ผู้บริโภคต้องดูแลออบเจ็กต์ Paint ของตนเอง สำหรับผู้บริโภคที่ยังต้องการเข้าถึง Canvas สามารถใช้วิธีส่วนขยาย drawCanvas ซึ่งมีฟังก์ชันเรียกกลับเพื่อออกคำสั่งวาดด้วย Canvas พื้นฐาน (I80afd)
มีการเปลี่ยนแปลง API ของ Lambda ที่ต่อท้าย WithConstraints ตอนนี้แทนที่จะมี 2 พารามิเตอร์ ก็จะมีขอบเขตของตัวรับซึ่งนอกเหนือจากข้อจำกัดและ layoutDirection แล้ว ยังมีพร็อพเพอร์ตี้ minWidth, maxWidth, minHeight และ maxHeight ใน Dp (I91b9a, b/149979702)
เปลี่ยนชื่อ LayoutModifier2 เป็น LayoutModifier (Id29f3)
นำอินเทอร์เฟซ LayoutModifier ที่เลิกใช้งานแล้วออก (I2a9d6)
ฟังก์ชันการวัดค่าโดยธรรมชาติใน Layout และ LayoutModifier2 มีตัวรับ IntrinsicMeasureScope แล้ว ซึ่งมี API การค้นหาค่าโดยธรรมชาติพร้อมทิศทางการจัดวางที่ส่งต่อโดยนัย (Id9945)
เลย์เอาต์และองค์ประกอบย่อย LayoutModifier สามารถวัดได้ด้วยทิศทางเลย์เอาต์ที่แตกต่างกัน (Ibd731)
เพิ่ม Modifier.zIndex() ใหม่เพื่อควบคุมลำดับการวาดขององค์ประกอบย่อยภายในเลย์เอาต์ระดับบนสุดเดียวกัน เปลี่ยนชื่อพร็อพเพอร์ตี้ elevation ใน DrawLayerModifier เป็น shadowElevation และจะไม่ควบคุมลำดับการวาดอีกต่อไป มีการเปลี่ยนแปลงลำดับพารามิเตอร์สำหรับ DrawShadow โดยตอนนี้ค่าระดับความสูงจะเป็นพารามิเตอร์แรก และรูปร่างจะเป็นพารามิเตอร์ที่ 2 โดยมี RectangleShape เป็นค่าเริ่มต้น (I20150, b/152417501)
นำ onSizeChange และ onPositionChange ออกใน Owner (I5c718)
เพิ่ม Constraints2 ซึ่งเป็นสำเนาของ Constraints ที่รองรับเฉพาะค่าข้อจำกัด Int แทน IntPx IntPx จะถูกนำออก และจะถือว่าข้อจำกัดจำนวนเต็มทั้งหมด เป็นพิกเซลเหมือน Android
- นอกจากนี้ เรายังเพิ่ม IntSize ซึ่งจะมาแทนที่ IntPxSize ในที่สุด (I4b43a)
ทำให้ Alignment สร้างอินสแตนซ์ได้ด้วยค่าที่กำหนดเอง เพิ่มการจัดแนว 1 มิติ (Ia0c05)
ตอนนี้ alignToSiblings ยอมรับ Measured แทน Placeable แล้ว (I5788d)
-
- เปลี่ยนชื่อ ScaleFit เป็น ContentScale
- ย้าย ContentScale จาก ui-graphics ไปยังโมดูล ui-core เพื่อให้อยู่ในโมดูลเดียวกับ Alignment API
- เปลี่ยนชื่อ FillMaxDimension เป็น Crop
- เปลี่ยนชื่อ FillMinDimension เป็น Fit
- เปลี่ยนชื่อ Fit เป็น Inside เพื่อให้สอดคล้องกันมากขึ้น
- เทียบเท่า ImageView.ScaleType
- เพิ่มเอกสารที่ระบุว่าการรวม Crop และ Alignment.Center ให้ผลลัพธ์เดียวกันกับ ImageView.ScaleType.CENTER_CROP และ Fit ที่ใช้กับ Alignment.Center ให้ผลลัพธ์เดียวกันกับ ImageView.ScaleType.FIT_CENTER และ Inside ที่ใช้กับ Alignment.Center ให้ผลลัพธ์เดียวกันกับ ImageView.ScaleType.CENTER_INSIDE
การรองรับ RTL สำหรับตัวแก้ไขการวาด (I0aaf9)
เปิดตัว API สำหรับขยาย Android View จาก XML ดูรายละเอียดเพิ่มเติมได้ที่การสาธิต ViewInCompose (I42916)
ปรับปรุง DrawModifier API:
- สร้างขอบเขตตัวรับสำหรับ draw() ContentDrawScope
- นำพารามิเตอร์ทั้งหมดใน draw() ออก
- DrawScope มีอินเทอร์เฟซเหมือนกับ CanvasScope รุ่นก่อน
- ContentDrawScope มีเมธอด drawContent() (Ibaced, b/152919067)
เพิ่ม positionInParent และ boundsInParent สำหรับ LayoutCoordinates (Icacdd, b/152735784)
ตอนนี้ DrawLayerModifier และ drawLayer() จะตั้งค่าเริ่มต้น clipToBounds และ clipToOutline เป็น false (I0eb8b, b/152810850)
เปลี่ยนชื่อ LayoutResult เป็น MeasureResult (Id8c68)
เพิ่ม LayoutModifier2 ซึ่งเป็น API ใหม่สำหรับการกำหนดตัวแก้ไขเลย์เอาต์ และเลิกใช้งาน LayoutModifier (If32ac)
แทนที่ตัวแก้ไขและตัวดำเนินการด้วยฟังก์ชันส่วนขยายของโรงงาน (I225e4)
เพิ่มพร็อพเพอร์ตี้ translationX/Y เพื่อรองรับ การชดเชยรายการที่แสดงของคำสั่งการวาดสำหรับ เลเยอร์ที่กำหนด ซึ่งมีประโยชน์ในการย้ายเนื้อหา เพื่อตอบสนองต่อภาพเคลื่อนไหวหรือเหตุการณ์การแตะ (I8641c)
เพิ่มพารามิเตอร์ pivotX, pivotY ลงใน Layer API เพื่อรองรับการหมุนและการปรับขนาด รอบจุดหนึ่งๆ ในเลเยอร์ (Icf7c3)
เพิ่ม OnPositionedModifier และ OnChildPositionedModifier เพื่อแทนที่ฟังก์ชันที่ใช้ได้ของ OnPositioned และ OnChildPositioned (I2ec8f)
เพิ่ม LayerModifier ซึ่งเป็นตัวแก้ไขที่อนุญาต ให้เพิ่ม RenderNode สำหรับเลย์เอาต์ ซึ่งช่วยให้ตั้งค่า การครอบตัด ความทึบ การหมุน การปรับขนาด และเงาได้ ซึ่งจะแทนที่ RepaintBoundary (I7100d, b/150774014)
ทำให้ระบบส่งต่อทิศทางเลย์เอาต์จากโหนดเลย์เอาต์หลักไปยังโหนดลูก เพิ่มตัวปรับแต่งทิศทางเลย์เอาต์แล้ว (I3d955)
คอมโพเนนต์ Stack รองรับทิศทางจากขวาไปซ้าย (Ic9e00)
การรองรับ RTL ในเลย์เอาต์ Compose ในช่วงแรก (Ia5519)
เราได้รวม Density และ DensityScope ไว้ในอินเทอร์เฟซเดียว ตอนนี้คุณใช้ DensityAmbient.current แทน ambientDensity() ได้แล้ว แทนที่จะใช้ withDensity(density) ให้ใช้ with(density) (I11cb1)
เปลี่ยน LayoutCoordinates เพื่อให้ providedAlignmentLines เป็น Set แทนที่จะเป็น Map และให้ LayoutCoordinates ใช้โอเปอเรเตอร์ get() แทนเพื่อดึงค่า ซึ่งจะช่วยให้ผู้แก้ไขแก้ไขค่าอย่างน้อย 1 ค่าของชุดได้ง่ายขึ้นโดยไม่ต้องสร้างคอลเล็กชันใหม่สำหรับผู้แก้ไขแต่ละราย (I0245a)
LayoutCoordinates ไม่มีพร็อพเพอร์ตี้ตำแหน่งอีกต่อไป พร็อพเพอร์ตี้ position จะไม่มีผลเมื่อพิจารณา LayoutModifiers, rotation หรือการปรับขนาด นักพัฒนาแอปควรใช้ parentCoordinates และ childToLocal() เพื่อคำนวณการเปลี่ยนจาก LayoutCoordinate หนึ่ง ไปยังอีกอันหนึ่งแทน
LayoutCoordinates ใช้ IntPxSize สำหรับพร็อพเพอร์ตี้ขนาดแทน PxSize เลย์เอาต์ใช้ขนาดพิกเซลจำนวนเต็มสำหรับเลย์เอาต์ ดังนั้นขนาดเลย์เอาต์ทั้งหมด ควรใช้จำนวนเต็มและไม่ใช่ค่าทศนิยม (I9367b)
การปรับปรุงพื้นผิว API ของข้อจำกัด (I0fd15)
สร้าง CanvasScope API ที่ห่อหุ้มออบเจ็กต์ Canvas เพื่อแสดงพื้นผิว API การวาดภาพแบบประกาศที่ไม่มีสถานะ การเปลี่ยนรูปแบบจะอยู่ในขอบเขตของตัวรับสัญญาณเอง และข้อมูลการปรับขนาดจะอยู่ในขอบเขตของขอบเขตการแทรกที่สอดคล้องกันด้วย โดยไม่จำเป็นต้องให้ผู้ใช้ดูแลออบเจ็กต์สถานะ Paint ของตนเองเพื่อกำหนดค่าการดำเนินการวาด
- เพิ่ม CanvasScopeSample รวมถึง อัปเดตแอปเดโมให้มีเดโมกราฟิกแบบประกาศ (Ifd86d)
นำ MaskFilter API ที่ไม่ได้ใช้ออก เนื่องจากมีการใช้งานที่จำกัดและไม่ได้ปรับให้เหมาะสม สำหรับการเร่งด้วยฮาร์ดแวร์ในกรณีการใช้งานส่วนใหญ่ (I54f76)
ย้าย RectangleShape จาก androidx.ui.foundation.shape.* ไปยัง androidx.ui.graphics.* (Ia74d5, b/154507984)
แทนที่การใช้ Color ที่อนุญาตให้เป็น Null ทั้งหมดใน API ด้วย ที่ไม่ใช่ Null และใช้ Color.Unset แทน Null (Iabaa7)
เพิ่มพารามิเตอร์ rect ที่ไม่บังคับเพิ่มเติมลงใน ImagePainter เพื่อรองรับ การวาดภาพส่วนย่อยของ ImageAsset พื้นฐาน (I0ea9e)
เพิ่มสีที่ไม่ได้ตั้งค่าเพื่อแสดงค่าที่ไม่ได้ตั้งค่าโดยไม่ ต้องใส่สีในกรอบ (If901a)
เพิ่มเมธอดส่วนขยาย Canvas.rotate และ Canvas.scale เพื่อใช้พิกัดจุดหมุนที่ไม่บังคับสำหรับการเปลี่ยนรูป ค่าเริ่มต้นเหล่านี้จะอยู่ที่มุมซ้ายบนของ การแปล Canvas ปัจจุบัน
นอกจากนี้ ยังย้าย Canvas.rotateRad ไปเป็น เมธอดส่วนขยายเพื่อความสอดคล้องกัน (Ibaca6)
สร้าง PixelMap API เพื่อรองรับ การค้นหาข้อมูลพิกเซลจาก ImageAsset (I69ad6)
เปลี่ยนชื่อเป็น toFrameworkRect/toFrameworkRectF เป็น toAndroidRect/toAndroidRectF เพื่อให้ตรงกับรูปแบบการตั้งชื่อ สำหรับการแปลงออบเจ็กต์ระหว่าง Compose กับ Android Framework API ที่สร้างขึ้น นอกจากนี้ เรายังอัปเดตเอกสารเกี่ยวกับ API เหล่านี้ด้วย (I86337)
เพิ่ม VectorPainter API เพื่อแทนที่ API องค์ประกอบย่อยที่มีอยู่สำหรับ กราฟิกแบบเวกเตอร์ ผลลัพธ์ขององค์ประกอบย่อย คือออบเจ็กต์ VectorPainter แทนที่จะเป็น DrawModifier เลิกใช้งาน Composable DrawVector ก่อนหน้าเพื่อใช้ VectorPainter
เปลี่ยนชื่อ Image(Painter) API เป็น PaintBox(Painter) สร้าง Vector ที่ใช้ร่วมกันได้ซึ่งทำงานเหมือน Image ที่ใช้ร่วมกันได้ แต่ใช้ VectorAsset แทน ImageAsset (I9af9a, b/149030271)
เปลี่ยนชื่อ Image เป็น ImageAsset เพื่อให้เห็นความแตกต่างระหว่างข้อมูลรูปภาพกับ Image composable ที่กำลังจะเปิดตัวซึ่งใช้ในการเข้าร่วมเลย์เอาต์และวาดเนื้อหาได้ดียิ่งขึ้น _Body:สร้างเมธอดส่วนขยายใน android.graphics.Bitmap Bitmap.asImageAsset() เพื่อสร้างอินสแตนซ์ของ ImageAsset ที่มีประโยชน์ในการรวมการพัฒนาแอปพลิเคชัน Android แบบเดิมเข้ากับเฟรมเวิร์ก Compose (Id5bbd)
เพิ่ม TextDirection.Content (I48f36)
เพิ่มตัวดำเนินการ TextDecoration.plus (I0ad1a)
นำ
Force
ออกจากค่า enum ของ TextDirectionAlgorithm (Icc944)เปลี่ยนชื่อ TextDirectionAlgorithm เป็น TextDirection (I75ce8)
ใช้ LongPressAndDrag สำหรับการเลือก TextField (I17919)
เพิ่ม AnnotatedString.getStringAnnotations ที่แสดงผลคำอธิบายประกอบทั้งหมดภายในช่วง (I1fa00)
เปลี่ยนชื่อแพ็กเกจสำหรับ Locale และ LocaleList จาก androidx.ui.text เป็น androidx.ui.intl (I8132c)
เคอร์เซอร์ของ TextField มีภาพเคลื่อนไหวแบบกะพริบ (Id10a7)
การเปลี่ยนแปลง API: เปลี่ยนชื่อ AnnotatedString(builder: Builder) เป็น annotatedString(builder: Builder) (Ia6377)
การเปลี่ยนแปลง API: เปลี่ยนชื่อ AnnotatedString.Item เป็น AnnotatedString.Range (I2d44d)
เปลี่ยนชื่อ AnnotatedString.Builder.addAnnotationString เป็น addStringAnnotation (I5059e)
ตอนนี้คุณสามารถซ่อน/แสดงแป้นพิมพ์ซอฟต์แวร์ได้โดยใช้ SoftwareKeyboardController ซึ่งส่งผ่านโดยการเรียกกลับ onTextInputStarted (I8dc44, b/151860051)
เพิ่มโอเปอเรเตอร์บวกสำหรับ (Text/Paragraph/Span)Style ซึ่ง มอบหมายให้ฟังก์ชัน merge() (Ia1add)
FontWeight.lerp ไม่ได้สแนปอีกต่อไป แต่ยังคงเป็นคลาสข้อมูล (I521c2)
ตอนนี้ตัวสร้าง FontWeight เป็นแบบสาธารณะแล้ว และไม่ใช่คลาสข้อมูลอีกต่อไป (Id6b1f)
เพิ่ม getLineStart, getLineEnd, getEllipsisOffset และ getEllipsisCount ลงใน TextLayoutResult (Ibc801)
เปลี่ยนชื่อโมดูล ui-text เป็น ui-text-core (I57dec)
นำคลาส Size ที่ไม่ได้ใช้ออก เนื่องจากมีคลาส Size ที่ซ้ำกัน ในโมดูล ui-geometry ที่ กำลังใช้งานอยู่ (I1b602)
เพิ่ม AdapterList ซึ่งเป็นคอมโพเนนต์รายการแบบเลื่อนที่ จัดองค์ประกอบและวางรายการที่มองเห็นได้เท่านั้น ปัญหาที่ทราบในปัจจุบัน คือมีเฉพาะแนวตั้งและไม่สามารถจัดการการเปลี่ยนแปลง ในกรณีทั้งหมดของบัญชีย่อยได้ (Ib351b)
เพิ่มระยะห่าง เส้นขอบ รูปร่าง และพารามิเตอร์พื้นหลังลงใน Box (I05027, b/148147281)
การแก้ไขข้อบกพร่อง
- เปลี่ยนชื่อการเรียกกลับ onFocusChange ในช่องข้อความเป็น onFocusChanged (Ida4a1)
- เลิกใช้งาน VerticalScroller และ HoriziontalScroller แล้ว ใช้ ScrollableColumn และ ScrollableRow เพื่อสร้างประสบการณ์การใช้งานในตัวที่มีลักษณะการทำงานและพารามิเตอร์ของ Column/Row หรือ Modifier.verticalScroll และ Modifier.horizontalScroll ในองค์ประกอบของคุณเอง ในทำนองเดียวกัน เราได้เลิกใช้งาน ScrollerPosition เพื่อให้ใช้ ScrollState แทน (I400ce, b/157225838, b/149460415, b/154105299)
- เปลี่ยนชื่อเป็น
runOnIdle
(I83607)runOnIdleCompose
- เราได้เปลี่ยนชื่อ API สำหรับการทดสอบหลายรายการเพื่อให้ใช้งานง่ายขึ้น เราได้เปลี่ยนชื่อ API ทั้งหมดที่ขึ้นต้นด้วย findXYZ เป็น onNodeXYZ API ทั้งหมดที่ขึ้นต้นด้วย doXYZ จะเปลี่ยนชื่อเป็น performXYZ (I7f164)
- ตอนนี้คุณสามารถเขียน UI ของ Compose ภายใน ViewGroup ได้โดยไม่ต้องเขียนใหม่ ดูตัวอย่างได้ที่ ViewInteropDemo (I9ab0b, b/160455080)
- เพิ่ม sortWith และ removeRange ลงใน MutableVector (Icccf7)
- ใช้แฮนเดิลการเลือกแบบลากเพื่อเปลี่ยนการเลือกสำหรับ TextField (I27032)
- นำคลาสอินไลน์ Shader ที่ ห่อหุ้มคลาสที่คาดไว้ของ NativeShader ออก เปลี่ยนชื่อ NativeShader เป็น Shader คลาสอินไลน์ Shader ที่ห่อไว้ไม่ได้เพิ่มสิ่งที่มีประโยชน์ใดๆ ให้กับพื้นผิว API และเป็นคลาสอินไลน์ ดังนั้นให้ใช้คลาส NativeShader โดยตรง (I25e4d)
ปรับโครงสร้าง PainterModifier เพื่อไม่ให้มีการปรับขนาดตาม ข้อจำกัดและพารามิเตอร์ ContentScale ที่ระบุอีกต่อไป การใช้งาน Painter จะต้องปรับขนาดเนื้อหาการวาด ด้วยตนเองตามขนาดที่กำหนดของ DrawScope ที่วาดลงไป
แก้ไขปัญหาที่แคชของ VectorPainter บิตแมปมีขนาดเป็นขนาดเริ่มต้น แทนที่จะเป็นขนาดที่ระบุเพื่อวาด
อัปเดต ImagePainter เพื่อปรับขนาดเนื้อหา แทนที่จะใช้ PainterModifier เพื่อดำเนินการดังกล่าวในนามของตน (I6ba90)
เพิ่มฟังก์ชัน withFrameNanos ระดับบนสุดสำหรับการกำหนดเวลาภาพเคลื่อนไหว (Ie34c5)
เราเลิกใช้งานคำอธิบายประกอบ @Untracked แล้ว แทนที่ด้วย @ComposableContract(tracked=false) (Id211e)
เลิกใช้งาน androidx.ui.foundation.TextFieldValue และ androidx.ui.input.EditorValue แล้ว นอกจากนี้ ยังมีการเลิกใช้งาน Composable TextField, FilledTextField และ CoreTextField ที่ใช้ประเภทดังกล่าวด้วย โปรดใช้ androidx.ui.input.TextFieldValue แทน (I4066d, b/155211005)
แก้ไขปัญหาที่อินพุตของเคอร์เซอร์ dispatch จะทำให้เกิดข้อขัดข้องหาก PointerInputFilters ถูกนำออกผ่าน subcomposition ระหว่างการส่ง ซึ่งตอนนี้ปัญหาได้รับการแก้ไขแล้ว (I1f48b, b/157998762)
แก้ไขปัญหาที่การเรียกใช้การป้อนข้อมูลเคอร์เซอร์จะทำให้เกิดข้อขัดข้องหากมีการนำ PointerInputFilters ออกผ่าน องค์ประกอบย่อยระหว่างการเรียกใช้ ซึ่งตอนนี้ปัญหาได้รับการแก้ไขแล้ว (Iab398, b/157998762)
ปรับโครงสร้างคลาส Radius ให้เป็น คลาสอินไลน์ นำวิธีการสร้างคอมแพเนียนออก เพื่อใช้ตัวสร้างฟังก์ชัน ที่มีพารามิเตอร์เริ่มต้นเพื่อให้รัศมี ตามแกน y ตรงกับพารามิเตอร์รัศมีแกน x ที่จำเป็น
อัปเดต DrawScope.drawRoundRect เพื่อใช้ พารามิเตอร์รัศมีเดียวแทนค่าลอยตัว 2 ค่าแยกกัน สำหรับรัศมีตามแกน x และ y (I46d1b)
Composable ของ Recompose ไม่ใช่การแยกส่วนที่มีประโยชน์อีกต่อไป การประกอบใหม่ส่วนใหญ่ควรเกิดขึ้นจากการกำหนด MutableState หากต้องการดำเนินการอื่นๆ นอกเหนือจากนี้ เราขอแนะนำให้คุณใช้ฟังก์ชัน
invalidate
เพื่อทริกเกอร์การจัดองค์ประกอบขอบเขตปัจจุบันใหม่ (Ifc992)แทนที่การใช้คลาส Px ในคลาส Compose ต่างๆ ซึ่งเป็นส่วนหนึ่งของความพยายามในการปรับโครงสร้างขนาดใหญ่เพื่อให้ใช้เฉพาะ Dp และประเภทดั้งเดิมสำหรับพารามิเตอร์พิกเซล (Iede0b)
เปลี่ยนกลยุทธ์การสร้างโค้ดของคอมไพเลอร์ของ Compose ก่อนการเปลี่ยนแปลงนี้ คอมไพเลอร์การเขียนจะเปลี่ยนการเรียกฟังก์ชันที่เขียนได้ การเปลี่ยนแปลงนี้ทำให้เราสามารถเปลี่ยนเนื้อหาของฟังก์ชันที่ใช้ร่วมกันได้โดยไม่ต้องแก้ไขตำแหน่งที่เรียกใช้ (ส่วนใหญ่)
ซึ่งหมายความว่าตรรกะส่วนใหญ่ที่สื่อสารกับรันไทม์ของ Compose จะเกิดขึ้นที่จุดเริ่มต้นของเนื้อหาฟังก์ชัน แทนที่จะเป็นที่ Callsite
การเปลี่ยนแปลงนี้ควรเป็นแหล่งที่มาที่เข้ากันได้สำหรับการใช้งาน Compose ทั้งหมด ผู้ใช้ Compose ส่วนใหญ่ไม่จำเป็นต้องอัปเดตโค้ดใดๆ อันเป็นผลมาจากการเปลี่ยนแปลงนี้
เราได้เปลี่ยนลายเซ็น JVM ของฟังก์ชันที่สามารถคอมโพสได้ทั้งหมดเพื่อรองรับการทำงานนี้ ฟังก์ชันที่ใช้ร่วมกันได้ซึ่งยอมรับพารามิเตอร์เดียวจะเปลี่ยนเป็นฟังก์ชันที่ยอมรับ 3 พารามิเตอร์ โดยพารามิเตอร์เพิ่มเติมคือ Composer ซึ่งเป็นจำนวนเต็ม "คีย์" จำนวนเต็มบิตมาสก์ที่ใช้ในการเผยแพร่ข้อมูลเมตาผ่านการเรียก
ตอนนี้ Compose จะแปลงอาร์กิวเมนต์เริ่มต้นเป็นฟังก์ชันที่ใช้ร่วมกันได้ด้วย โดยการดำเนินการนี้จะไม่ทำให้ฟังก์ชันมีการโอเวอร์โหลดเริ่มต้นแบบสังเคราะห์เพิ่มเติม ดังนั้นการเปลี่ยนแปลงนี้จะส่งผลให้มีการกำหนดฟังก์ชันน้อยลง
การเปลี่ยนแปลงพฤติกรรมโดยเจตนาที่ทราบซึ่งเป็นผลมาจากการเปลี่ยนแปลงนี้มีดังนี้
- การโทรบางสายจะข้ามในกรณีที่ก่อนหน้านี้จะไม่ข้าม
- ตอนนี้ระบบจะติดตามและจัดการนิพจน์ที่ประกอบได้ในนิพจน์อาร์กิวเมนต์เริ่มต้นอย่างถูกต้องแล้ว
การทำงานนี้รวมถึงการเพิ่มประสิทธิภาพบางอย่าง ดังนี้ 1. ผลลัพธ์ของการเปรียบเทียบพารามิเตอร์จะเผยแพร่ผ่านกราฟการเรียกไปยังฟังก์ชันอื่นๆ ที่ประกอบได้ ซึ่งจะส่งผลให้มีการเปรียบเทียบน้อยลงในขณะรันไทม์ ลดขนาดตารางสล็อต รวมถึงข้ามฟังก์ชันที่ใช้ร่วมกันได้มากขึ้นซึ่งก่อนหน้านี้ไม่ได้ข้าม 2. ระบบจะไม่เปรียบเทียบหรือจัดเก็บพารามิเตอร์ที่พิจารณาว่า "คงที่" ในเวลาคอมไพล์ในรันไทม์อีกต่อไป ซึ่งจะช่วยลดจำนวนการเปรียบเทียบและลดขนาดตารางช่อง 3. ระบบจะใช้โครงสร้างโฟลว์การควบคุมของเนื้อหาฟังก์ชันเพื่อลดจำนวนกลุ่มที่สร้างขึ้น ซึ่งจะช่วยลดขนาดตารางสล็อตและทำให้รันไทม์ 4 ทำงานน้อยลง ระบบจะไม่รวมพารามิเตอร์การเรียกใช้และพารามิเตอร์ผู้รับที่ไม่ได้ใช้ในฟังก์ชันในการพิจารณาว่าฟังก์ชันข้ามได้หรือไม่ หากไม่ได้ใช้พารามิเตอร์เหล่านั้นภายในเนื้อหาของฟังก์ชัน
การเปลี่ยนแปลงที่ทำให้เกิดข้อขัดข้องส่วนใหญ่เป็น API ที่คอมไพเลอร์กำหนดเป้าหมายโดยตรง และการใช้งาน Compose โดยทั่วไปจะไม่ได้รับผลกระทบ 1. นำ Composer::startExpr ออกแล้ว 2. นำ Composer::endExpr ออกแล้ว 3. เลิกใช้งาน Composer::call แล้ว 4. เราได้นำโอเวอร์โหลดที่ไม่ใช่ varargs ของ
key
ออกแล้ว ตั้งแต่นี้ไปให้ใช้vararg
5. เราเลิกใช้งานคำอธิบายประกอบที่สำคัญแล้ว ใช้key
แทน 6. มีการเปลี่ยนแปลง ScopeUpdateScope::updateScope ให้คาดหวัง Function3 แทน Function1 7 มีการอัปเดต restartableFunction และ restartableFunctionN ให้รวมพารามิเตอร์เพิ่มเติมในเวลาคอมไพล์ (I60756, b/143464846)นำตัวแก้ไข LayoutAlign ที่เลิกใช้งานแล้วออก (I10877)
นำ RepaintBoundary ออกเพื่อใช้ DrawLayerModifier (I00aa4)
ตอนนี้ปุ่ม, FloatingActionButton และ Clickable มี
enabled
param แยกกันแล้ว มีการเปลี่ยนชื่อหรือจัดเรียงพารามิเตอร์บางรายการในปุ่มใหม่ (I54b5a)แทนที่ ButtonStyle ด้วยฟังก์ชันที่แตกต่างกันและนำการโอเวอร์โหลดข้อความ (สตริง) ออก ดูตัวอย่างที่อัปเดตแล้วสำหรับข้อมูลการใช้งาน (If63ab, b/146478620, b/146482131)
การเปลี่ยนแปลงที่ไม่รองรับการทำงานย้อนหลังใน Ambient API ดูรายละเอียดได้ในบันทึกและเอกสารประกอบของ
Ambient<T>
(I4c7ee, b/143769776)เปลี่ยนลักษณะการทำงานของ TextDirection เริ่มต้นให้กำหนดโดย LayoutDirection กล่าวคือ หาก LayoutDirection เป็น RTL TextDirection เริ่มต้นจะเป็น RTL ก่อนหน้านี้คือ TextDirection.ContentOrLtr/Rtl (I4e803)
การแก้ไขข้อบกพร่อง: เมื่อมีการซ้อนน้ำหนักแบบอักษรและรูปแบบแบบอักษรใน AnnotatedString ระบบจะไม่แสดงข้อความอย่างถูกต้อง (I77a9d)
เพิ่มพารามิเตอร์ที่ใช้กันทั่วไปลงใน Text() หากปัจจุบันคุณสร้างรูปแบบข้อความในเครื่องเพื่อส่งพารามิเตอร์เหล่านี้จำนวนเล็กน้อย เช่น Text(style = TextStyle(textAlign = TextAlign.Center)) ตอนนี้คุณก็ระบุพารามิเตอร์ได้โดยตรง: Text(textAlign = TextAlign.Center) (I82768)
เปลี่ยนชื่อโมดูล ui-android-text เป็น ui-text-android (I68cbe)