Compose Foundation
androidx.compose.foundation
androidx.compose.foundation.layout
androidx.compose.foundation.gestures
androidx.compose.foundation.selection
androidx.compose.foundation.lazy
androidx.compose.foundation.interaction
androidx.compose.foundation.text
(ดูเอกสารอ้างอิง API สำหรับแพ็กเกจการเขียนทั้งหมด)
อัปเดตล่าสุด | รุ่นที่เสถียร | ตัวเลือกถอนการอ้างสิทธิ์ | รุ่นเบต้า | รุ่นอัลฟ่า |
---|---|---|---|---|
4 กันยายน 2024 | 1.7.0 | - | - | 1.8.0-alpha01 |
โครงสร้าง
การเขียนจะรวมรหัสกลุ่ม Maven 7 รายการภายใน androidx
แต่ละกลุ่ม
มีชุดย่อยของฟังก์ชันเป้าหมาย โดยแต่ละฟังก์ชันมีชุดรุ่นของตัวเอง
หมายเหตุ
ตารางนี้จะอธิบายกลุ่มและลิงก์ไปยังบันทึกประจำรุ่นแต่ละชุด
กลุ่ม | คำอธิบาย |
---|---|
compose.animation | สร้างภาพเคลื่อนไหวในแอปพลิเคชัน Jetpack Compose เพื่อยกระดับประสบการณ์ของผู้ใช้ |
compose.compiler | แปลงฟังก์ชัน @Composable และเปิดใช้การเพิ่มประสิทธิภาพด้วยปลั๊กอินคอมไพเลอร์ Kotlin |
compose.foundation | เขียนแอปพลิเคชัน Jetpack Compose ด้วยองค์ประกอบพร้อมใช้และต่อยอดจากรากฐานเพื่อสร้างชิ้นงานของระบบการออกแบบของคุณเอง |
compose.material | สร้าง UI ของ Jetpack Compose ด้วยคอมโพเนนต์ดีไซน์ Material ที่พร้อมใช้งาน นี่คือจุดแรกเข้าของ Compose ในระดับที่สูงกว่า ซึ่งออกแบบมาเพื่อมอบคอมโพเนนต์ที่ตรงกับคอมโพเนนต์ที่อธิบายไว้ใน www.material.io |
compose.material3 | สร้าง UI ของ Jetpack Compose ด้วยคอมโพเนนต์ Material Design 3 ซึ่งเป็นการพัฒนาครั้งใหม่ของดีไซน์ Material Material 3 ประกอบด้วยธีมและคอมโพเนนต์ที่อัปเดตใหม่ และฟีเจอร์การปรับเปลี่ยนในแบบของคุณของ Material You เช่น สีแบบไดนามิก ทั้งยังออกแบบมาให้สอดคล้องกับสไตล์ภาพและ UI ของระบบใหม่ของ Android 12 |
compose.runtime | องค์ประกอบพื้นฐานพื้นฐานของโมเดลการเขียนโปรแกรมและการจัดการสถานะของ Compose และรันไทม์หลักของปลั๊กอิน Compose Compiler ที่จะกำหนดเป้าหมาย |
compose.ui | องค์ประกอบพื้นฐานของ UI การเขียนซึ่งจำเป็นต่อการโต้ตอบกับอุปกรณ์ ซึ่งรวมถึงเลย์เอาต์ การวาดภาพ และการป้อนข้อมูล |
การประกาศทรัพยากร Dependency
หากต้องการเพิ่มทรัพยากร Dependency ใน Compose คุณต้องเพิ่มที่เก็บ Google Maven ไปยัง อ่านที่เก็บ Maven ของ Google เพื่อดูข้อมูลเพิ่มเติม
เพิ่มทรัพยากร Dependency สำหรับอาร์ติแฟกต์ที่คุณต้องการในไฟล์ build.gradle
สำหรับ
ในแอปหรือโมดูล
ดึงดูด
dependencies { implementation "androidx.compose.foundation:foundation:1.7.0" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.foundation:foundation:1.7.0") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
ดูข้อมูลเพิ่มเติมเกี่ยวกับทรัพยากร Dependency ได้ที่หัวข้อเพิ่มการอ้างอิงของบิลด์
ความคิดเห็น
ความคิดเห็นของคุณช่วยปรับปรุง Jetpack ให้ดียิ่งขึ้น โปรดแจ้งให้เราทราบหากคุณพบปัญหาใหม่หรือมี ไอเดียในการปรับปรุงไลบรารีนี้ โปรดดูที่ ปัญหาที่มีอยู่ ในไลบรารีนี้ก่อนที่จะสร้างใหม่ คุณสามารถเพิ่มการโหวตให้กับปัญหาที่มีอยู่ได้โดย คลิกปุ่มดาว
ดูเอกสารประกอบเกี่ยวกับเครื่องมือติดตามปัญหา เพื่อดูข้อมูลเพิ่มเติม
เวอร์ชัน 1.8
เวอร์ชัน 1.8.0-alpha01
4 กันยายน 2024
ปล่อย androidx.compose.foundation:foundation-*:1.8.0-alpha01
แล้ว เวอร์ชัน 1.8.0-alpha01 มีคอมมิตเหล่านี้
เวอร์ชัน 1.7
เวอร์ชัน 1.7.0
4 กันยายน 2024
ปล่อย androidx.compose.foundation:foundation-*:1.7.0
แล้ว เวอร์ชัน 1.7.0 มีคอมมิตเหล่านี้
การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 1.6.0
- ประสิทธิภาพของ
Modifier.clickable
,Modifier.focusable
,Modifier.indication
,Modifier.scrollable
และModifier.draggable
ดีขึ้นอย่างมาก การเปลี่ยนแปลง API ต่อไปนี้เกิดขึ้นเพิ่มเติมจากการเปลี่ยนแปลงภายในด้วยความพยายามนี้- เพิ่ม
IndicationNodeFactory
ของ Indation API ใหม่แล้ว การดําเนินการนี้ทําให้การใช้งานการบ่งชี้ที่มีประสิทธิภาพมากขึ้นเมื่อเทียบกับ API ของrememberUpdatedInstance
ก่อนหน้านี้ (ปัจจุบันเลิกใช้งานแล้ว) สำหรับข้อมูลการย้ายข้อมูล โปรดดู developer.android.com clickable
/combinedClickable
/selectable
/toggleable
ยอมรับพารามิเตอร์MutableInteractionSource
ที่เป็นค่าว่างแล้ว หากไม่มีค่า และการบ่งชี้ที่ระบุเป็นIndicationNodeFactory
ระบบจะสามารถสร้างตัวบ่งชี้แบบ Lazy Loading ได้เมื่อจำเป็นเท่านั้น ซึ่งจะช่วยปรับปรุงประสิทธิภาพ หากคุณไม่ได้รอกและใช้MutableInteractionSource
เราขอแนะนำให้ส่ง null แทนการส่งผ่านremember { MutableInteractionSource() }
Indication#rememberUpdatedInstance
เลิกใช้งานแล้ว เนื่องจากมีบทลงโทษด้านประสิทธิภาพสูงที่หลีกเลี่ยงไม่ได้และขัดขวางการเพิ่มประสิทธิภาพอื่นๆ คุณควรใช้IndicationNodeFactory
API ใหม่แทน
- เพิ่ม
BasicTextField
ที่ใช้TextFieldState
มีความเสถียรแล้วในตอนนี้ และเราขอแนะนำให้ไซต์การโทรทั้งหมดเริ่มย้ายข้อมูลจากBasicTextField(value, onValueChange)
ไปยังBasicTextField(TextFieldState)
- เลิกใช้งาน
ClickableText
แล้ว หากต้องการเพิ่มลิงก์ที่คลิกได้ลงในข้อความ ให้ใช้BasicText
พร้อมคำอธิบายประกอบใหม่ของLinkAnnotation
ในAnnotatedString
LinkAnnotation
อนุญาตให้มีการจัดรูปแบบที่กำหนดเองตามสถานะลิงก์ (เช่น โฟกัสอยู่ วางเมาส์เหนือ) - ขอแนะนำ
ContextualFlowRow
และEnhanced FlowRow/Column
พร้อมMaxLines
และOverflow
เรามีความยินดีที่จะประกาศเกี่ยวกับการปรับปรุงFlowRow
และFlowColumn
เวอร์ชันทดลอง โดยตอนนี้มีmaxLines
และการสนับสนุนเพิ่มเติม ควบคู่กับการเปิดตัวContextualFlowRow
และContextualFlowColumn
การอัปเดตนี้ออกแบบมาเพื่อมอบองค์ประกอบที่มีประสิทธิภาพสูงสุด โดยContextualFlow*
เหมาะสำหรับรายการจำนวนมากที่ใช้การกำหนดค่า maxLines ขนาดเล็กและ +N แบบไดนามิกจะเห็นปุ่มมากขึ้น และFlowRow
และFlowColumn
เหมาะสำหรับรายการที่มีจำนวนไม่มาก แต่ไม่เกิน 100 รายการ สำคัญ: หากต้องการคงลักษณะการทำงานที่มีอยู่ในFlowRow
หรือFlowColumn
ซึ่งมีการเขียนข้อความทั้งหมด ไม่ว่ารายการเหล่านั้นจะพอดีกับค่าสูงสุดของแกนไขว้หรือไม่ ให้ตั้งค่ารายการเพิ่มเติมเป็นFlowRowOverflow.Visible
หรือFlowColumnOverflow.Visible
ในระหว่างการเริ่มต้น สำรวจContextualFlowRowSample
และFlowRowSample
เพื่อดูตัวอย่างการใช้งานฟีเจอร์ใหม่เหล่านี้ (Ib9135, b/293577082) - เพิ่มการรองรับลักษณะที่ปรากฏของรายการและภาพเคลื่อนไหวจากการหายไปใน
LazyColumn
และLazyRow
แล้ว ก่อนหน้านี้ คุณสามารถเพิ่มตัวแก้ไขModifier.animateItemPlacement()
เพื่อรองรับภาพเคลื่อนไหวตำแหน่งโฆษณา (การจัดเรียงใหม่) เราเลิกใช้งานตัวแก้ไขนี้และเปิดตัวตัวแก้ไขใหม่ที่ไม่ใช่เวอร์ชันทดลองซึ่งมีชื่อว่าModifier.animateItem()
ซึ่งช่วยให้คุณรองรับภาพเคลื่อนไหวทั้ง 3 ประเภท ได้แก่ ลักษณะที่ปรากฏ (เฟดเข้า) การหายไป (จางลง) และการจัดเรียงใหม่ (I2d7f7, b/150812265) - รองรับเวอร์ชันทดลองสำหรับภาพหน้าจอแบบยาวในคอนเทนเนอร์ Compose ของคอนเทนเนอร์โดยใช้ Android API อย่างเป็นทางการ (
ScrollCaptureCallback
) UserInput
และSideEffect
จะมาแทนที่แหล่งที่มาการลากและวางNestedScroll
เพื่อรองรับคำจำกัดความแบบขยายของแหล่งที่มาเหล่านี้ ซึ่งตอนนี้จะมีภาพเคลื่อนไหว (เอฟเฟกต์ด้านข้าง) และล้อเลื่อนของเมาส์ (UserInput
)- ตอนนี้เราทำเครื่องหมายคำขอที่ดึงข้อมูลล่วงหน้า
LazyLayout
รายการเป็น "ด่วน" ได้ ซึ่งหมายความว่าเราคาดว่าจะต้องใช้รายการนี้ในเฟรมถัดไปและไม่ต้องสนใจงบประมาณเฟรมเพื่อให้ทำงานล่วงหน้าได้มากขึ้น (Id513f) - รองรับฟีเจอร์การเขียนด้วยลายมือโดยใช้สไตลัสในอุปกรณ์หลังจาก Android U (I002e4)
- API ต่างๆ ได้รับการโปรโมตให้มีความเสถียร
- เพจเจอร์ การสแนป ส่วนแทรกหน้าต่าง
เวอร์ชัน 1.7.0-rc01
21 สิงหาคม 2024
ปล่อย androidx.compose.foundation:foundation-*:1.7.0-rc01
แล้ว เวอร์ชัน 1.7.0-rc01 มีคอมมิตเหล่านี้
แก้ไขข้อบกพร่อง
- แก้ไขการถดถอยซึ่งเกิดข้อขัดข้องเมื่อองค์ประกอบใดก็ตามโฟกัสอยู่ภายในองค์ประกอบระดับบนสุดที่โฟกัสได้ (หรือคลิกได้) และปิดใช้ได้ (b/317561689)
เวอร์ชัน 1.7.0-beta07
7 สิงหาคม 2024
ปล่อย androidx.compose.foundation:foundation-*:1.7.0-beta07
แล้ว เวอร์ชัน 1.7.0-beta07 มีคอมมิตเหล่านี้
แก้ไขข้อบกพร่อง
- ตอนนี้ฟังก์ชัน
SemanticsNodeInteraction
ที่เกี่ยวข้องกับการป้อนข้อความperformTextReplacement
,performTextInput
และperformTextClearance
จะแสดงข้อผิดพลาดเกี่ยวกับการยืนยันเมื่อเรียกใช้ฟังก์ชันTextFields
แบบอ่านอย่างเดียว (I4ae8f) - แก้ไขข้อบกพร่องของภาพในไฮเปอร์ลิงก์ (I23311)
- แก้ไขแป้นกดร่วม
contentReceiver
ที่ไม่ทำงานกับ IME บางรายการ - การสร้างอัตราความเร็ว: ป้องกันการเผยแพร่ค่า NaN ใน Compose UI และ Foundation
เวอร์ชัน 1.7.0-beta06
24 กรกฎาคม 2024
ปล่อย androidx.compose.foundation:foundation-*:1.7.0-beta06
แล้ว เวอร์ชัน 1.7.0-beta06 มีคอมมิตเหล่านี้
เวอร์ชัน 1.7.0-beta05
10 กรกฎาคม 2024
ปล่อย androidx.compose.foundation:foundation-*:1.7.0-beta05
แล้ว เวอร์ชัน 1.7.0-beta05 มีสัญญาผูกมัดเหล่านี้
แก้ไขข้อบกพร่อง
- แก้ไขการรักษาค่า Nan ใน
SnapFlingBehavior
และ เพจเจอร์
เวอร์ชัน 1.7.0-beta04
26 มิถุนายน 2024
ปล่อย androidx.compose.foundation:foundation-*:1.7.0-beta04
แล้ว เวอร์ชัน 1.7.0-beta04 มีคอมมิตเหล่านี้
แก้ไขข้อบกพร่อง
- หลีกเลี่ยงข้อขัดข้องเมื่อวัดบรรทัดข้อความขนาดใหญ่มาก (เช่น 10,000 อักขระ) (8157ab)
- แก้ไขการวัดข้อความขนาดใหญ่มากที่ทำให้เกิดข้อขัดข้องใน
BasicTextField
ใหม่ (6b7575) - เปลี่ยนกลับการเปลี่ยนแปลงลักษณะการทำงานในการวัดแถว/คอลัมน์ที่ทำให้การใช้ข้อความทำงานผิดในบางสถานการณ์ (69e8ba)
เวอร์ชัน 1.7.0-beta03
12 มิถุนายน 2024
ปล่อย androidx.compose.foundation:foundation-*:1.7.0-beta03
แล้ว เวอร์ชัน 1.7.0-beta03 มีสัญญาผูกมัดเหล่านี้
เวอร์ชัน 1.7.0-beta02
29 พฤษภาคม 2024
ปล่อย androidx.compose.foundation:foundation-*:1.7.0-beta02
แล้ว เวอร์ชัน 1.7.0-beta02 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม API ทดลองสำหรับการกำหนดค่าพฤติกรรมการดึงข้อมูลล่วงหน้าของ
LazyGrids
ที่คล้ายกับ API ทดลองที่มีอยู่สำหรับLazyLists
ซึ่งรวมถึงการรองรับการดึงข้อมูลรายการล่วงหน้าในLazyGrids
ที่ฝังไว้ ค่าเริ่มต้นของการใช้งานเหมือนกับLazyListPrefetchStrategy
คือให้ดึงข้อมูลรายการที่ฝัง 2 รายการแรกของแต่ละตารางกริดล่วงหน้า แต่จะกำหนดค่าได้โดย API ของLazyGridPrefetchStrategy(nestedPrefetchItemCount)
และLazyListPrefetchStrategy#onNestedPrefetch
ใหม่ (I591c4) - เปลี่ยนชื่อ
SemanticsProperties.Editable
เป็นIsEditable
และเปลี่ยนSemanticsPropertyReceiver.editable
เป็น ค่าisEditable
ตอนนี้พร็อพเพอร์ตี้นี้จะเป็นบูลีนและช่องข้อความจะระบุเสมอ (I8acd8) - ย้ายค่าเริ่มต้น
basicMarquee
ค่าไปยังออบเจ็กต์MarqueeDefaults
แล้ว (I12ff6) - เปลี่ยนชื่อพารามิเตอร์
delayMillis
basicMarquee
รายการเป็นrepeatDelayMillis
แล้ว (I12ff6) - อัปเดต API สำหรับการจัดรูปแบบลิงก์: ย้าย
TextLinkStyles
ไปที่TextStyle
และนำTextDefaults
ออกจากเนื้อหา (I5477b)
แก้ไขข้อบกพร่อง
- เปลี่ยนชื่อ
LayoutCoordinates.introducesFrameOfReference
เป็นLayoutCoordinates.introducesMotionFrameOfReference
แล้วเพื่อให้สื่อถึงวัตถุประสงค์ได้ดียิ่งขึ้น เปลี่ยนชื่อฟังก์ชันที่เกี่ยวข้องเพื่อคำนวณพิกัดตามค่าสถานะนั้น (I3a330) - นำ "ค่าเริ่มต้น" ออกแล้ว จากพร็อพเพอร์ตี้
MarqueeDefaults
(I1d8a0) - นำ "Marquee" ออกแล้ว จากพร็อพเพอร์ตี้
MarqueeDefaults
รายการ (Iad4f4) - นำ
TextLinkStyles
ออกจากชั้นเรียนTextStyle
แล้ว แต่TextLinkStyles
เป็นส่วนหนึ่งของตัวสร้างLinkAnntation
และเมธอดAnnotatedString.fromHtml
(I90b2b) - แก้ไขข้อบกพร่องที่เพจเจอร์จะสแนปเมื่อเลื่อนไปยังเส้นแบ่งขณะอยู่ในเส้นแบ่งแล้ว (I9f373, b/339171222)
- ตอนนี้ BTF2 มีท่าทางสัมผัสการเลือกเมาส์ที่ถูกต้อง (Ibe8c6)
การสนับสนุนภายนอก
- ส่ง "สร้างประเภทเนื้อหาการคำนวณเวลาเขียน/วัดโดยดึงข้อมูลล่วงหน้าเพื่อปรับปรุงความแม่นยำ" อีกครั้ง (Iea622)
- กำหนดประเภทเนื้อหาคำนวณเวลาเขียน/วัดโดยดึงข้อมูลล่วงหน้าเพื่อปรับปรุงความแม่นยำ (Ibccb1)
- ทำให้ตัวแก้ไข
WindowInsetsPadding
พร้อมใช้งานจากชุดแหล่งที่มาทั่วไป (I070b2)
เวอร์ชัน 1.7.0-beta01
14 พฤษภาคม 2024
ปล่อย androidx.compose.foundation:foundation-*:1.7.0-beta01
แล้ว เวอร์ชัน 1.7.0-beta01 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มพร็อพเพอร์ตี้
KeyboardOptions.shouldShowKeyboardOnFocus
กลับมาเนื่องจากเลิกใช้งานไปแล้วเพื่อความเข้ากันได้ของไบนารี (I15cfe) - ตอนนี้
Modifier.anchoredDraggable
จะเปลี่ยนกลับเดลต้าการลากโดยค่าเริ่มต้นสำหรับคอมโพเนนต์ที่มีการวางแนวแบบแนวนอนเมื่อใช้ในเลย์เอาต์ RTL (I3c6d9) AnnotatedString.hasEqualsAnnotations
เปลี่ยนชื่อเป็นhasEqualAnnotations
แล้ว (I685c0)- อัปเดต API เพื่อรับลิงก์ธีม Material ในข้อความ กล่าวโดยเจาะจงคือ ได้นำเมธอดออกจาก
TextDefaults
สำหรับการสร้างLinkAnnotations
ตามธีมและแยกวิเคราะห์ HTML ที่มีลิงก์ที่มีธีม แต่ได้เพิ่มคลาสTextLinkStyles
ที่อนุญาตให้จัดรูปแบบลิงก์เป็นพารามิเตอร์ไปยัง Text Composable แทน (I31B93) - แทนที่
onDragStarted
และonDragStopped
ด้วย Callback ที่มีการระงับแล้ว (I59de8)
แก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องที่เพจเจอร์ขัดข้องเมื่อ
contentPadding
ใหญ่กว่าข้อจำกัดขาเข้า ตอนนี้เพจเจอร์บังคับค่าลบที่แสดงผลจากPageSize
เป็น 0 (Iba5d8, b/314008560)
เวอร์ชัน 1.7.0-alpha08
1 พฤษภาคม 2024
ปล่อย androidx.compose.foundation:foundation-*:1.7.0-alpha08
แล้ว เวอร์ชัน 1.7.0-alpha08 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เพิ่มเมนูตามบริบทแบบคลิกขวาใน
BasicTextField
และSelectionContainer
พร้อมรายการสำหรับตัด คัดลอก วาง และเลือกการดำเนินการทั้งหมด (If8c93, Ia2b49, I6f268)
การเปลี่ยนแปลง API
- ตอนนี้เราทำเครื่องหมายคำขอที่ดึงข้อมูลล่วงหน้า
LazyLayout
รายการเป็น "ด่วน" ได้ ซึ่งหมายความว่าเราคาดว่าจะต้องใช้รายการนี้ในเฟรมถัดไปและไม่ต้องสนใจงบประมาณเฟรมเพื่อให้ทำงานล่วงหน้าได้มากขึ้น (Id513f) - เปลี่ยนชื่อ
isPositionedByParentWithDirectManipulation
เป็นintroducesFrameOfReference
แล้ว โปรดทราบว่าตอนนี้การตั้งค่าจะเกิดการย้อนกลับ ซึ่งหมายความว่าโดยค่าเริ่มต้นLayoutCoordinates
ส่วนใหญ่จะใช้กรอบอ้างอิง และเมื่ออยู่ภายใต้การควบคุมโดยตรง พร็อพเพอร์ตี้จะเป็นเท็จเท่านั้น หากต้องการค้นหาตำแหน่งที่มีเฉพาะรายการที่มีกรอบอ้างอิง ให้ใช้positionInLocalFrameOfReference(...)
หรือpositionInLocalLookaheadFrameOfReference
จากLookaheadScope
(Ifc5f7) - เปลี่ยนชื่อ
onClicked
เป็นonClick
ในLinkInteractionListener
(Iaa35c) - เปลี่ยนการดำเนินการ lambda สำหรับ
getScrollViewportLength
ตามความคิดเห็นเกี่ยวกับ API ของสภา (Ibc74a) - เปลี่ยนชื่อ API การมอบสิทธิ์การเขียนด้วยลายมือโดยใช้สไตลัส (Ica45f, b/327271923)
- เปลี่ยนชื่อ
TextInclusionStrategy.isInside
เป็นisIncluded
ทำให้ประเภทผลลัพธ์Paragraph/MultiParagraph#getRangeForRect()
เป็นค่าว่างไม่ได้ (I51F26)
แก้ไขข้อบกพร่อง
- เพิ่ม "เลือกทั้งหมด" แล้ว เมนูตามบริบทของข้อความทั้งหมดใน
SelectionContainer
(Ib750e, b/240143283) - แก้ไขการจับภาพหน้าจอแบบยาวสำหรับคอนเทนเนอร์แบบเลื่อนด้วย
reverseScrolling=true
(I7c59C) - แก้ไขปัญหาที่
currentValue
ของAnchoredDraggableState
จะเปลี่ยนแปลงเมื่อเข้าใกล้ขอบเขตของรัฐ (Iea30b, b/333846848)
การสนับสนุนภายนอก
- เปลี่ยนชื่อ
PrefetchExecutor
แล้ว ->PrefetchScheduler
เพื่อให้สอดคล้องกับความรับผิดชอบมากขึ้น (Ib9154) - เพิ่มการรองรับสำหรับการดึงข้อมูลรายการล่วงหน้าใน
LazyLists
ที่ฝังไว้ (เช่นLazyColumn
ที่แสดงผลLazyRows
ที่ฝัง) การเปลี่ยนแปลงนี้คาดว่าจะช่วยลดการลดลงของเฟรมระหว่างการเลื่อนสำหรับLazyLists
เหล่านี้ ค่าเริ่มต้นของการใช้งานคือให้ดึงข้อมูลรายการที่ฝัง 2 รายการแรกไว้ล่วงหน้า อย่างไรก็ตาม API ของLazyLayoutPrefetchStrategy(nestedPrefetchItemCount)
และLazyListPrefetchStrategy#onNestedPrefetch
ใหม่จะควบคุมลักษณะการทำงานนี้ได้ (I51952)
เวอร์ชัน 1.7.0-alpha07
17 เมษายน 2024
ปล่อย androidx.compose.foundation:foundation-*:1.7.0-alpha07
แล้ว เวอร์ชัน 1.7.0-alpha07 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เพิ่มออบเจ็กต์
TextDefaults
ที่มีวิธีสร้างLinkAnnotation
และแยกวิเคราะห์สตริงที่ติดแท็ก HTML ซึ่งใช้MaterialTheme
กับลิงก์ (I98532, b/139312671) - เพิ่มการรองรับลักษณะที่ปรากฏของรายการและภาพเคลื่อนไหวจากการหายไปใน
LazyVerticalGrid
และLazyHorizontalGrid
แล้ว ก่อนหน้านี้ คุณสามารถเพิ่มตัวแก้ไขModifier.animateItemPlacement()
เพื่อรองรับภาพเคลื่อนไหวตำแหน่งโฆษณา (การจัดเรียงใหม่) เราเลิกใช้งานตัวแก้ไขนี้และเปิดตัวตัวแก้ไขใหม่ที่ไม่ใช่เวอร์ชันทดลองซึ่งมีชื่อว่าModifier.animateItem()
ซึ่งช่วยให้คุณรองรับภาพเคลื่อนไหวทั้ง 3 ประเภท ได้แก่ ลักษณะที่ปรากฏ (เฟดเข้า) การหายไป (จางลง) และการจัดเรียงใหม่ (Ib7d12, b/330510929) - เพิ่มการรองรับลักษณะที่ปรากฏของรายการและภาพเคลื่อนไหวจากการหายไปใน
LazyVerticalStaggeredGrid
และLazyHorizontalStaggeredGrid
แล้ว ก่อนหน้านี้ คุณสามารถเพิ่มตัวแก้ไขModifier.animateItemPlacement()
เพื่อรองรับภาพเคลื่อนไหวตำแหน่งโฆษณา (การจัดเรียงใหม่) เราเลิกใช้งานตัวแก้ไขนี้และเปิดตัวตัวแก้ไขใหม่ที่ไม่ใช่เวอร์ชันทดลองซึ่งมีชื่อว่าModifier.animateItem()
ซึ่งช่วยให้คุณรองรับภาพเคลื่อนไหวทั้ง 3 ประเภท ได้แก่ ลักษณะที่ปรากฏ (เฟดเข้า) การหายไป (จางลง) และการจัดเรียงใหม่ (I69bc9, b/330511290)
การเปลี่ยนแปลง API
- เพิ่ม
ContextMenuColors
และLocalContextMenuTheme
ProvidableCompositionLocal
ที่เชื่อมโยง สีของเมนูตามบริบทในช่องข้อความและข้อความที่เลือกได้สามารถแก้ไขได้ด้วยการระบุองค์ประกอบที่มีอยู่ในเครื่อง (Ifa154) - ลิงก์ข้อความได้รับตัวเลือกการจัดรูปแบบสถานะที่กดนอกเหนือจากการจัดรูปแบบปกติ วางเมาส์เหนือ และโฟกัส (I5f864, b/139312671)
- แนะนำ
ViewConfiguration.HandwritingGestureLineMargin
สำหรับท่าทางสัมผัสการเขียนด้วยลายมือ รองรับท่าทางสัมผัสการเขียนด้วยลายมือสำหรับBasicTextField
(Ie6e13, b/325660505) - นำ
DelegatableNode.scrollIntoView
สำหรับรุ่น 1.7 ออกแล้วเนื่องจากเราไม่มีเวลาในการแก้การสั่นไหวส่วนที่เหลือของแพลตฟอร์ม API ที่เกี่ยวข้องให้เสร็จสิ้น ฟังก์ชันนี้จะเปิดตัวอีกครั้งใน 1.8 (I6cf61, b/333421581, b/332900232) - เมื่อค้นหาพิกัดของเลย์เอาต์ ตอนนี้คุณสามารถใช้อาร์กิวเมนต์
excludeDirectManipulationOffset
เพื่อยกเว้นออฟเซ็ตที่เลย์เอาต์ระดับบนสุดซึ่งวางองค์ประกอบระดับล่างโดยใช้Placeable.PlacementScope.withDirectManipulationPlacement
ได้แล้ว ในทำนองเดียวกัน เลย์เอาต์ที่เปลี่ยนตำแหน่งรายการย่อยบ่อยๆ อาจวางเลย์เอาต์โดยใช้withDirectManipulationPlacement
(เช่น เลื่อน ซึ่งมีการใช้งานโดยค่าเริ่มต้น) วิธีนี้จะช่วยให้ภาพเคลื่อนไหวที่อิงตามapproachLayout
ใช้งานง่ายขึ้น ทำให้มีโอกาสแยกความแตกต่างของออฟเซ็ตที่จะสร้างภาพเคลื่อนไหว และสิ่งที่จะนำไปใช้โดยตรงเมื่อตัดสินใจเลือกภาพเคลื่อนไหว (I60ec7) - แนะนำ
requestScrollToItem
ในราคาLazyStaggeredGrid
สำหรับ Measure Pass แต่ละรายการ ตอนนี้ลูกค้าสามารถเลือกไม่ใช้การรักษาดัชนีตามคีย์โดยโทรหาrequestScrollToItem
การดําเนินการนี้จะไม่เปลี่ยนแปลงลักษณะการทำงานที่มีอยู่แต่อย่างใด เว้นแต่มีการเรียกrequestScrollToItem
(I63983) - แนะนำ
requestScrollToPage
ในเพจเจอร์ สำหรับ Measure Pass แต่ละรายการ ตอนนี้ลูกค้าสามารถเลือกไม่ใช้การรักษาดัชนีตามคีย์โดยโทรหาrequestScrollToPage
การดําเนินการนี้จะไม่เปลี่ยนแปลงลักษณะการทำงานที่มีอยู่แต่อย่างใด เว้นแต่มีการเรียกrequestScrollToPage
(Ic4213) - แนะนำ
requestScrollToItem
สำหรับLazyGrids
สำหรับ Measure Pass แต่ละรายการ ตอนนี้ลูกค้าสามารถเลือกไม่ใช้การรักษาดัชนีตามคีย์โดยโทรหาrequestScrollToItem
การดําเนินการนี้จะไม่เปลี่ยนแปลงลักษณะการทำงานที่มีอยู่แต่อย่างใด เว้นแต่มีการเรียกrequestScrollToItem
(I0a7a0) - ทำเครื่องหมาย
ClickableText
ว่าเลิกใช้งานแล้ว หากต้องการเพิ่มลิงก์ไปยังข้อความ ให้สร้างAnnotatedString
ที่มีLinkAnnotation
ที่สอดคล้องกับลิงก์ของคุณ แล้วส่งAnnotatedString
นี้ไปยังText
ที่เขียนด้วย Compose (I34d4b, b/323346994) UrlAnnotation
เลิกใช้งานแล้ว โปรดใช้LinkAnnotation.Url
แทน หากคุณใช้ธีม Material ให้ใช้ออบเจ็กต์TextDefaults
เพื่อสร้างคำอธิบายประกอบที่มีการใช้ธีม Material (I8d180, b/323346545)String.parseAsHtml
เปลี่ยนชื่อเป็นAnnotatedString.Companion.fromHtml
(I43dcd)- เพิ่มอาร์กิวเมนต์การจัดรูปแบบ (
linkStyle
,focusedLinkStyle
,hoveredLinkStyle
) และ Listener การโต้ตอบลิงก์ให้กับเมธอดparseAsHtml
เมื่อแยกวิเคราะห์สตริงที่ติดแท็ก HTML ด้วยแท็ก<a>
เมธอดจะสร้างLinkAnnotation.Url
สำหรับแท็กดังกล่าวแต่ละแท็ก และส่งออบเจ็กต์การจัดรูปแบบและ Listener การโต้ตอบลิงก์ไปยังคำอธิบายประกอบแต่ละรายการ (I7c977) - ตอนนี้
LinkAnnotation
จะใช้อาร์กิวเมนต์การจัดรูปแบบตามสถานะและLinkInteractionListener
เพิ่มคำอธิบายประกอบนี้ในAnnotatedString
เพื่อรับไฮเปอร์ลิงก์ เมื่อส่งผ่านfocusedState
และ/หรือhoveredState
คุณจะสามารถกำหนดการกำหนดค่าภาพสำหรับลิงก์เมื่อลิงก์ถูกโฟกัสและ/หรือวางเมาส์เหนือ (I81ce4, b/139312671) - มีการนำแฟล็กฟีเจอร์สำหรับภาพหน้าจอแบบยาวออก (I28648, b/329128246)
- ตอนนี้
LazyColumn
จะแสดงส่วนหัวแบบติดหนึบอย่างถูกต้องในภาพหน้าจอขนาดยาว (I8d239, b/329296635) - ปรับให้ API ทดลองที่เหลือส่วนใหญ่ที่เริ่มใช้ด้วย
BasicTextField
ใหม่มีความเสถียร (I714e2) - เพิ่มพารามิเตอร์
textObfuscationCharacter
ในBasicSecureTextField
ที่ควบคุมอักขระที่จะใช้ขณะที่ปรับเนื้อหาให้ยากต่อการอ่าน (Obfuscate) (I0588B) UserInput
และSideEffect
จะมาแทนที่แหล่งที่มาการลากและวางNestedScroll
เพื่อรองรับคำจำกัดความแบบขยายของแหล่งที่มาเหล่านี้ ซึ่งตอนนี้จะมีภาพเคลื่อนไหว (เอฟเฟกต์ด้านข้าง) และล้อเลื่อนของเมาส์ (UserInput
) (I40579)- แนะนำ
LocalBringIntoViewSpec
ซึ่งเป็นลักษณะการเลื่อนโฟกัสที่ขึ้นอยู่กับแพลตฟอร์มและนำไปใช้กับเลเยอร์ตัวปรับแต่งแบบเลื่อนได้ (I27aa5, b/317453911) - นำ
TextFieldCharSequence
ออกแล้วTextFieldBuffer.originalValues
จะถูกแทนที่ด้วยTextFieldBuffer.originalText
และTextFieldBuffer.originalSelection
(I2c7d6) ImeOptions.hintLocales
เป็นค่าว่างไม่ได้แล้ว หากคุณต้องการส่งรายการภาษาที่ว่างเปล่า โปรดใช้LocaleList.Empty
(Ic5bc4)- เปลี่ยนชื่อ
getOffsetFractionForPage
เป็นgetOffsetDistanceInPages
แล้ว (Ia05e2)
แก้ไขข้อบกพร่อง
- เมื่อ
InputTransformations
รวมเข้ากับnext
ระบบจะรวมKeyboardOptions
อย่างถูกต้องตามตัวเลือกแต่ละรายการโดยใช้เมธอดKeyboardOptions.merge
ใหม่ (Ie5304, b/295951492) - ในตอนนี้
targetValue
ของAnchoredDraggableState
ไม่พิจารณาเกณฑ์ตำแหน่งอีกต่อไป ตอนนี้มีเกณฑ์โดยนัยอยู่ที่ 50% ซึ่งหมายความว่าtargetValue
จะเปลี่ยนแปลงที่จุดกึ่งกลางระหว่าง Anchor 2 รายการ (I82c2c)
การสนับสนุนภายนอก
- เปลี่ยนชื่อ API การเลื่อน 2 รายการ (I56a75)
เวอร์ชัน 1.7.0-alpha06
3 เมษายน 2024
ปล่อย androidx.compose.foundation:foundation-*:1.7.0-alpha06
แล้ว เวอร์ชัน 1.7.0-alpha06 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เพิ่มการรองรับลักษณะที่ปรากฏของรายการและภาพเคลื่อนไหวจากการหายไปใน
LazyColumn
และLazyRow
แล้ว ก่อนหน้านี้ คุณสามารถเพิ่มตัวแก้ไขModifier.animateItemPlacement()
เพื่อรองรับภาพเคลื่อนไหวตำแหน่งโฆษณา (การจัดเรียงใหม่) เราเลิกใช้งานตัวแก้ไขนี้และเปิดตัวตัวแก้ไขใหม่ที่ไม่ใช่เวอร์ชันทดลองซึ่งมีชื่อว่าModifier.animateItem()
ซึ่งช่วยให้คุณรองรับภาพเคลื่อนไหวทั้ง 3 ประเภท ได้แก่ ลักษณะที่ปรากฏ (เฟดเข้า) การหายไป (จางลง) และการจัดเรียงใหม่ (I2d7f7, b/150812265) - ตอนนี้ลูกค้าของ
LazyColumn/LazyRow
สามารถเลือกไม่ใช้การรักษาดัชนีตามคีย์สำหรับ Measure-Pass ที่กำลังจะมีขึ้น โดยการเรียกใช้LazyListState.requestToScroll
ที่ไม่ถูกระงับ (I98036, b/209652366) - เพิ่มเมธอด
parseAsHtml
สำหรับสตริงที่มีการจัดรูปแบบ: ช่วยให้แปลงสตริงที่มีเครื่องหมายแท็ก HTML เป็นAnnotatedString
ได้ โปรดทราบว่าระบบยังไม่รองรับแท็กบางรายการ เช่น คุณจะยังแสดงรายการหัวข้อย่อยไม่ได้ (I84d3d) - รองรับเวอร์ชันทดลองสำหรับภาพหน้าจอแบบยาวในคอนเทนเนอร์ Compose ของคอนเทนเนอร์โดยใช้ Android API อย่างเป็นทางการ (
ScrollCaptureCallback
) ฟีเจอร์นี้ยังอยู่ระหว่างการทดสอบและอาจไม่สามารถจัดการได้ในทุกกรณีอย่างถูกต้อง ด้วยเหตุนี้ ระบบจึงปิดใช้ฟีเจอร์นี้โดยค่าเริ่มต้น หากต้องการเลือกใช้ ให้ตั้งค่าแฟล็กComposeFeatureFlag_LongScreenshotsEnabled
เป็น "จริง" การแจ้งว่าไม่เหมาะสมนี้จะถูกนำออกก่อนรุ่นเบต้า 1.7 (I2b055, b/329296471) - เปิดตัว API ใหม่ของ
GraphicsLayer
เพื่อให้ตำแหน่งและการแสดงผลของอินสแตนซ์GraphicsLayer
มีความยืดหยุ่นมากขึ้น รวมถึงรองรับฟีเจอร์การแสดงผลภายในโดยไม่ต้องทำงานร่วมกับการใช้งาน Composable เพื่อระบุอินสแตนซ์ที่มีตัวแก้ไขGraphicsLayer
การเปลี่ยนแปลง API
- ตอนนี้พารามิเตอร์
KeyboardOptions
ทั้งหมดจะมีค่าที่ไม่ระบุโดยค่าเริ่มต้น เพิ่มKeyboardOptions.merge
วิธีแล้ว - เปลี่ยนชื่อ
KeyboardOptions.autoCorrect
เป็นautoCorrectEnabled
และทำให้เป็นค่าว่างได้ โดยค่า Null บ่งบอกว่าไม่ได้ระบุค่าใดๆ (Ia8ba0, b/295951492) - เปลี่ยนชื่อ
outOfBoundsPageCount
เป็นbeyondViewportPageCount
แล้ว (I129c6) fun ClipEntry.getMetadata()
เปลี่ยนเป็นval ClipEntry.clipMetadata
(I50155)- นำ
TextFieldState.valueAsFlow()
ออกแล้ว ต้องการใช้snapshotFlow { state.text }
หรือsnapshotFlow { TextFieldCharSequence(state.text, state.selection) }
(I7d629) - จัดระเบียบพารามิเตอร์
InputTransformation.transformInput
ใหม่แล้ว นำoriginalValue: TextFieldCharSequence
ออกแล้ว ตอนนี้TextFieldBuffer
จะมีค่านี้ในชื่อเดียวกันแทน นำพารามิเตอร์valueWithChanges: TextFieldBuffer
ออกด้วย ตอนนี้TextFieldBuffer
จะเป็นขอบเขตตัวรับในฟังก์ชันแล้ว (I919cc) - ตอนนี้ตัวแปร
BasicTextField(state)
และBasicSecureTextField
ใช้KeyboardActionHandler
แทนKeyboardActions
ในการประมวลผลการดำเนินการที่ทำโดยซอฟต์แวร์แป้นพิมพ์ (I58dda) - API การมอบสิทธิ์การเขียนด้วยลายมือโดยใช้สไตลัสเพื่อรองรับการเขียนด้วยลายมือโดยใช้สไตลัสในรูปแบบ "ปลอม" ช่องป้อนข้อความ (I9c09c, b/327271923)
- เปลี่ยนชื่อ
KeyboardOptions.shouldShowKeyboardOnFocus
เป็นshowKeyboardOnFocus
แล้ว (Ib4b7a, b/295951492) - นำพารามิเตอร์
hintMediaTypes
ออกจากModifier.contentReceiver
แล้ว เราแนะนำให้นักพัฒนาแอปตรวจสอบประเภทสื่อของTransferableContent
ที่ได้รับแล้ว เนื่องจากอาจใช้ร่วมกับhintMediaTypes
ที่กำหนดค่าไว้ไม่ได้ (I82f99) - เรียงลำดับพารามิเตอร์ของ
BasicSecureTextField
ใหม่ นำพารามิเตอร์keyboardType
และimeAction
ออกเพื่อใช้คลาสKeyboardOptions
แบบเต็ม แต่ยังคงเก็บค่าเริ่มต้นเดิมที่เหมาะสำหรับBasicSecureTextField
ไว้ นำพารามิเตอร์scrollState
ออกด้วย (Ibbfa9) - เปลี่ยนประเภทของ
TextFieldState.text
จากTextFieldCharSequence
เป็นCharSequence
เท่านั้น ดังนั้น ให้เพิ่มTextFieldState.selection: TextRange
และTextFieldState.composition: TextRange?
เพื่ออ่านค่าการเลือกและองค์ประกอบปัจจุบันจากออบเจ็กต์สถานะโดยตรง - นำ
TextFieldState.forEachTextValue
ออกแล้ว (Idb2a2) - นำฟังก์ชัน
ClipboardManager.getClipMetadata
และClipboardManager.hasClip
ออกแล้ว โปรดใช้clipEntry.getMetadata()
เพื่ออ่านข้อมูลเมตาของรายการคลิปปัจจุบัน นอกจากนี้ โปรดตรวจสอบผลลัพธ์ของClipboardManager.getClip
ว่าเป็นค่าว่างหรือไม่ เพื่อดูว่าคลิปบอร์ดมีคลิปปัจจุบันหรือไม่ (I50498) ClipboardManager.setClip
ยอมรับค่า Null เพื่อล้างคลิปบอร์ดแล้ว (I7d2e9)ReceiveContentListener
แปลงเป็นอินเทอร์เฟซของฟังก์ชันแล้ว นอกจากนี้Modifier.receiveContent
โอเวอร์โหลดที่ใช้ lambda จะถูกนำออกเนื่องจากReceiveContentListener
เป็นอินเทอร์เฟซฟังก์ชันในขณะนี้Modifier.receiveContent
เปลี่ยนชื่อเป็นModifier.contentReceiver
แล้ว (I1e6af)- เปลี่ยนชื่อ
TransferableContent.consumeEach
เป็นTransferableContent.consume
แล้ว (I1e462) rememberTextFieldState
เปลี่ยนไปใช้ API เวอร์ชันเสถียรแล้ว (I37999)
แก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องที่รูปแบบ
BasicTextField(state)
ใช้ไม่ได้กับแป้นพิมพ์ CJK(ตามองค์ประกอบ) (I54425) - แก้ไขข้อบกพร่องที่
Modifier.dragAndDropTarget()
อ้างอิงข้อมูลที่ไม่มีอัปเดตในบางสถานการณ์ได้โดยใช้Modifier.Node
ซ้ำ (I05bb1) - เปลี่ยนกลับการเปลี่ยนแปลงสัญญาล่าสุดซึ่งการเรียกใช้
AnchoredDraggableState#anchoredDrag
จะสแนปเมื่อสิ้นสุดการดำเนินการanchoredDrag
(I95715)
เวอร์ชัน 1.7.0-alpha05
20 มีนาคม 2024
ปล่อย androidx.compose.foundation:foundation-*:1.7.0-alpha05
แล้ว เวอร์ชัน 1.7.0-alpha05 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- นำองค์ประกอบ
LocalTextLinkStyle
แบบทดลองในเครื่องออกสำหรับการจัดรูปแบบไฮเปอร์ลิงก์ (Iebfa7) - นำการลบล้างทดสอบของ
BasicText
ที่มีอาร์กิวเมนต์onLinkClicked
ออกแล้ว API ทดแทนสำหรับการสนับสนุนไฮเปอร์ลิงก์ในอนาคตจะตามมาในอนาคต (I107d5) - นำเมธอดและพร็อพเพอร์ตี้ที่เกี่ยวข้องกับ Codepoints ออกจาก
TextFieldState
และTextFieldBuffer
แล้ว นำคำต่อท้ายinChars
ออกจาก API ที่เกี่ยวข้องกับการเลือกและการเรียบเรียงที่เหลือด้วย (Ief7ce) currentValue
ของAnchoredDraggable
จะอัปเดตเมื่อผ่านจุดยึด ใช้settledValue
เพื่อรับความหมายcurrentValue
ก่อนหน้า ซึ่งจะอัปเดตก็ต่อเมื่ออยู่ในจุดยึด ตอนนี้ความคืบหน้าจะแสดงเป็นฟังก์ชัน (ต้องใช้จุดเริ่มต้นและจุดสิ้นสุด) แทนพร็อพเพอร์ตี้ (Ibe6e8, b/318707189, b/298271489, b/294991954)BasicTextField(state)
,TextFieldState
,InputTransformation
,OutputTransformation
,TextFieldLineLimits
,TextFieldDecorator
เลื่อนระดับเป็นเสถียรแล้ว (I9582B)- เปิดตัว
InterceptPlatformTextInput
เพื่อช่วยเขียนการทดสอบที่เกี่ยวข้องกับ IME ระดับต่ำและกรณีการใช้งาน IME ระดับต่ำอื่นๆPlatformTextInputTestOverride
เลิกใช้งานแล้ว (I862ed, b/322680547) - แยก
restrictedConstraints()
เป็น 2 วิธี:fitPrioritizingWidth()
และfitPrioritizingHeight()
(I6d7fd)
การสนับสนุนภายนอก
- เพิ่ม API ใหม่ 2 รายการ
isLastScrollForward
/isLastScrollBackward
เพื่อตรวจสอบทิศทางการเลื่อนสำหรับการเลื่อนล่าสุด แสดงค่า "เท็จ" หากยังไม่ได้เลื่อน (I63a0e)
เวอร์ชัน 1.7.0-alpha04
6 มีนาคม 2024
ปล่อย androidx.compose.foundation:foundation-*:1.7.0-alpha04
แล้ว เวอร์ชัน 1.7.0-alpha04 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- รองรับฟีเจอร์การเขียนด้วยลายมือโดยใช้สไตลัสในอุปกรณ์หลังจาก Android U (I002e4)
- เพิ่ม
hintLocales
ในKeyboardOptions
เพื่อให้TextFields
มีความสามารถในการแนะนำ IME กับภาษาเฉพาะเพื่อตั้งค่าภาษาที่เลือกไว้ล่วงหน้า (รหัส 18c2) - นำโอเวอร์โหลด
BasicTextField2
และBasicSecureTextField
แบบทดลองที่ใช้พารามิเตอร์value: String
และonValueChange: () -> String
ออก (I568b4) - เพิ่มฟังก์ชัน
applySemantics
(ไม่บังคับ) ลงในInputTransformation
เพื่อกำหนดความหมายของBasicTextField2
ที่จะใช้กับฟังก์ชันดังกล่าว (I74a2f, b/170648072) - ใน CL นี้ เราจะเพิ่มการทำงานเชิงความหมาย
GetScrollViewportLength
เพื่อให้เราสามารถเชื่อมโยงข้อมูลเกี่ยวกับคอมโพเนนต์ที่กำลังเลื่อนในการเขียนไปยังระบบ a11y ได้ CL นี้ยังนำการใช้งานพร็อพเพอร์ตี้ดังกล่าวในรายการแบบเลื่อนได้ของพื้นฐานไปใช้ด้วย (Ic5fa2) BasicTextField2
เปลี่ยนชื่อเป็นBasicTextField
แล้ว (Ie5713)FocusRequester.createRefs
มีความเสถียรแล้ว (I4d92c, b/261436820)- เปิดตัว
DelegatableNode.scrollIntoView()
เพื่อให้โหนดตัวปรับแต่งส่งคำขอscrollIntoView
ได้โดยตรง (I2b3b7, b/299939840) - เปิดตัว
DelegatableNode.requireView()
เพื่อให้โหนดตัวแก้ไขรับView
ของ Android ในปัจจุบันได้โดยไม่ต้องอ่านการเรียบเรียงเพลงในเครื่อง (I40768) - ขอแนะนำข้อมูลเลย์เอาต์ตามบริบทภายในขอบเขตของแถวโฟลว์บริบทและขอบเขตของคอลัมน์โฟลว์บริบท ซึ่งแสดงดัชนีเส้น ตำแหน่ง และข้อจำกัดต่างๆ ที่ความกว้างและความสูงสูงสุดเพื่ออยู่ในตำแหน่งที่ระบุไว้ รายการที่เกินความกว้าง/ความสูงสูงสุดอาจย้ายไปอยู่บรรทัดถัดไปหรือละเว้นตามการตั้งค่ารายการเพิ่มเติม (Id13f8, b/292114798)
แก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องที่ในบางเงื่อนไขที่สลับแอตทริบิวต์
enabled
หรือreadOnly
ของTextField
จะทำให้เกิดข้อขัดข้อง (Iae17b)
เวอร์ชัน 1.7.0-alpha03
21 กุมภาพันธ์ 2024
ปล่อย androidx.compose.foundation:foundation-*:1.7.0-alpha03
แล้ว เวอร์ชัน 1.7.0-alpha03 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- แนะนำ
DelegatableNode.requireLayoutCoordinates()
เพื่อเป็นวิธีรับLayoutCoordinates
ปัจจุบันของModifier.Node
โดยไม่ต้องลบล้างonPlaced
และจัดเก็บพิกัดในพร็อพเพอร์ตี้ด้วยตนเอง (Ia8657) - แนะนำ
DelegatableNode.currentLayoutCoordinates
เพื่อเป็นวิธีรับLayoutCoordinates
ปัจจุบันของModifier.Node
โดยไม่ต้องลบล้างonPlaced
และจัดเก็บพิกัดในพร็อพเพอร์ตี้ด้วยตนเอง (Iaebaa) - การเพิ่มประสิทธิภาพการทำงานใน
DraggableAnchors
ใช้โดยAnchoredDraggable
(I89cff) - ย้าย
BasicTextField2
และ API ที่เกี่ยวข้องภายใต้แพ็กเกจandroidx.compose.foundation.text2
ไปยังandroidx.compose.foundation.text
แล้ว (I9F635) BasicTextField2
ไม่รับพารามิเตอร์CodepointTransformation
แล้ว ใช้BasicSecureTextField
หรือOutputTransformation
(Id34ff)- เพิ่มวิธีการเปรียบเทียบเฉพาะคำอธิบายประกอบของ
AnnotatedStrings
2 รายการ (I32659) - ขอแนะนำ
ContextualFlowRow
และFlowRow
/Column
ที่ปรับปรุงแล้วร่วมกับMaxLines
และOverflow
เรามีความยินดีที่จะประกาศเกี่ยวกับการปรับปรุงFlowRow
และFlowColumn
เวอร์ชันทดลอง ซึ่งตอนนี้มีmaxLines
และการสนับสนุนเพิ่มเติม ควบคู่กับการเปิดตัวContextualFlowRow
และContextualFlowColumn
การอัปเดตนี้ออกแบบมาเพื่อมอบองค์ประกอบที่มีประสิทธิภาพสูงสุด ซึ่งContextualFlow*
เหมาะอย่างยิ่งกับสินค้าจำนวนมากที่ใช้การกำหนดค่าmaxLines
ขนาดเล็กและปุ่ม +N แบบไดนามิกเพื่อดูปุ่มได้มากขึ้น นอกจากนี้FlowRow
และFlowColumn
ยังเหมาะสำหรับรายการที่มีจำนวนไม่มากแต่น้อยกว่า 100 รายการ สำคัญ: หากต้องการคงลักษณะการทำงานที่มีอยู่ในFlowRow
หรือFlowColumn
ซึ่งมีการเขียนข้อความทั้งหมด ไม่ว่ารายการเหล่านั้นจะพอดีกับค่าสูงสุดของแกนไขว้ ให้ตั้งค่าoverflow
เป็นFlowRowOverflow.Visible
หรือFlowColumnOverflow.Visible
ระหว่างการเริ่มต้น สำรวจContextualFlowRowSample
และFlowRowSample
เพื่อดูตัวอย่างการใช้งานฟีเจอร์ใหม่เหล่านี้ (Ib9135, b/293577082)
แก้ไขข้อบกพร่อง
- ภาพเคลื่อนไหวของเคอร์เซอร์ไม่ขอเฟรมระหว่างสถานะเปิดและปิดอีกต่อไป (Ia2253)
KeyboardOptions
นาที เครื่องมือสร้างสำเนาที่เลิกใช้งานแล้วจะคัดลอกคุณสมบัติทั้งหมดอย่างถูกต้อง (If12de)
เวอร์ชัน 1.7.0-alpha02
7 กุมภาพันธ์ 2024
ปล่อย androidx.compose.foundation:foundation-*:1.7.0-alpha02
แล้ว เวอร์ชัน 1.7.0-alpha02 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
HorizontalPager
,VerticalPager
และPagerState
ได้รับการโปรโมตเป็นเวอร์ชันเสถียร (I67660, b/316966909)- เพิ่มองค์ประกอบ
LocalTextLinkStyle
ในเครื่องที่ช่วยให้เปลี่ยนรูปแบบของลิงก์ในข้อความในแอปได้ หากคุณใช้ธีมของคุณเองในแอป คุณควรตั้งค่าการเรียบเรียงนี้ตามธีมของคุณ เมื่อใช้ธีม Material สีของลิงก์จะตั้งเป็นสีหลักของ Material โดยค่าเริ่มต้น (I7eb10) - เปิดตัวตัวแก้ไข
receiveContent
ที่ช่วยให้นักพัฒนาซอฟต์แวร์รับเนื้อหาอย่างละเอียดใน Jetpack Compose receiveContent
ทำงานร่วมกับBasicTextField2
เพื่อยอมรับเนื้อหาแบบสมบูรณ์ที่มาจากซอฟต์แวร์แป้นพิมพ์ หรือผ่านการดำเนินการวางคลิปบอร์ด (I81B72)- ในการเปลี่ยนแปลงครั้งนี้ เราจะแทนที่
SnapFlingBehavior
ด้วยTargetedFlingBehavior
ในเพจเจอร์เพื่อปลดล็อกกรณีการใช้งานอื่นๆ และมีความยืดหยุ่นมากขึ้น (I762ea) - ในการเปลี่ยนแปลงนี้ เราจะทำให้ Snapping API เสถียร นอกจากนี้ เรายังล้างโค้ดการทดสอบบางส่วนและเพิ่มตัวอย่างไปยังการสแนปด้วย (Id8da9)
- แนะนำ
TargetedFlingBehavior
ซึ่งเป็นFlingBehavior
ที่อนุญาตให้เผยแพร่ข้อมูลเกี่ยวกับสถานะของภาพเคลื่อนไหวที่ต่อเนื่องและออฟเซ็ตการเลื่อนเป้าหมาย (I6a207)
แก้ไขข้อบกพร่อง
- ตอนนี้
BasicTextField2
จะคงเคอร์เซอร์ไว้ในมุมมองขณะพิมพ์เมื่อเลื่อนออกจากมุมมองหรือเลื่อนออกจากมุมมองเนื่องจากการป้อนข้อมูล (Ieb856, b/237190748)
การสนับสนุนภายนอก
- เพิ่ม API ทดลองเพื่อกำหนดค่าลักษณะการดึงข้อมูลล่วงหน้าของ LazyLists (I022a4)
เวอร์ชัน 1.7.0-alpha01
24 มกราคม 2024
ปล่อย androidx.compose.foundation:foundation-*:1.7.0-alpha01
แล้ว เวอร์ชัน 1.7.0-alpha01 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เพิ่ม
Indication API
ใหม่เป็นIndicationNodeFactory
แล้ว ซึ่งจะทําให้การใช้งานIndication
มีประสิทธิภาพมากขึ้นเมื่อเทียบกับrememberUpdatedInstance
API ก่อนหน้านี้ (ปัจจุบันเลิกใช้งานแล้ว) สำหรับข้อมูลการย้ายข้อมูล โปรดดู developer.android.com clickable / combinedClickable / selectable / toggleable
ยอมรับพารามิเตอร์MutableInteractionSource
ที่เป็นค่าว่างแล้ว หากค่า Null และIndication
ที่ระบุเป็นIndicationNodeFactory
คุณจะสร้างIndication
แบบ Lazy Loading ได้เมื่อจำเป็นเท่านั้น ซึ่งจะช่วยปรับปรุงประสิทธิภาพ หากคุณไม่ทำการรอกและใช้MutableInteractionSource
ขอแนะนำให้ส่งผ่านค่า Null
การเปลี่ยนแปลง API
- แนะนำ
DecayAnimation
ในAnchoredDraggable
การเปลี่ยนแปลงนี้จะเพิ่มพารามิเตอร์decayAnimationSpec
ลงในAnchoredDraggable
ทำให้สามารถใช้ภาพเคลื่อนไหวแบบลดลงเมื่อลงไปอยู่ใน Anchor ตัวใดตัวหนึ่ง การเปลี่ยนแปลงนี้ยังรวมถึงการเปลี่ยนชื่อanimationSpec
ที่มีอยู่เป็นsnapAnimationSpec
เพื่อช่วยให้เข้าใจกรณีการใช้งานของข้อกำหนดแต่ละรายการด้วย BasicTextField2
เปิดให้ทดลองใช้แล้ว ซึ่งควรอยู่ในระดับใกล้เคียงของฟีเจอร์กับBasicTextField
และลักษณะการทำงานควรพร้อมใช้งานเวอร์ชันที่ใช้งานจริง แต่ขณะนี้ API ดังกล่าวยังอยู่ระหว่างการทดสอบ ก่อนที่จะลดการสั่นไหว ระบบจะเปลี่ยนชื่อเป็นBasicTextField
และย้ายไปอยู่ในแพ็กเกจเดียวกัน- แนะนำฉบับร่างแรกของ
OutputTransformation
API สำหรับBasicTextField2
API นี้มาแทนที่ Use Case ส่วนใหญ่ของVisualTransformation
ในBasicTextField
แบบเก่า อย่างไรก็ตาม การทดสอบดังกล่าวยังไม่สมบูรณ์และบางอย่างอาจทำงานไม่ถูกต้อง แต่เราจะขอความคิดเห็นใดๆ เกี่ยวกับความสามารถในการใช้งาน API สำหรับกรณีการใช้งานของคุณ (aosp/2708848) - แนะนำ
LinkAnnotation
ที่ช่วยให้เพิ่มลิงก์และคลิกได้ลงในข้อความ ฟีเจอร์ลิงก์ยังไม่สมบูรณ์และจะมีการเปลี่ยนแปลง API เพิ่มเติม - เปิดตัวตัวแก้ไข
receiveContent
ที่ช่วยให้นักพัฒนาซอฟต์แวร์รับเนื้อหาอย่างละเอียดใน Jetpack Compose receiveContent
ทำงานร่วมกับBasicTextField2
เพื่อยอมรับเนื้อหาแบบสมบูรณ์ที่มาจากซอฟต์แวร์แป้นพิมพ์ หรือผ่านการวางจากคลิปบอร์ดKeyboardOptions.shouldShowKeyboardOnFocus
อนุญาตให้คุณปิดใช้ลักษณะการทำงานเริ่มต้นของBasicTextField
ในการขอซอฟต์แวร์แป้นพิมพ์ที่โฟกัสได้TextInputService
และLocalTextInputService
เลิกใช้งานแล้ว โปรดใช้PlatformTextInputModifierNode
เพื่อผสานรวมกับ IME API ของแพลตฟอร์มโดยตรงแทน (aosp/2862698)Indication#rememberUpdatedInstance
เลิกใช้งานแล้ว เนื่องจากมีบทลงโทษด้านประสิทธิภาพสูงที่หลีกเลี่ยงไม่ได้และขัดขวางการเพิ่มประสิทธิภาพอื่นๆ คุณควรใช้IndicationNodeFactory
API ใหม่แทน
แก้ไขข้อบกพร่อง
- ตอนนี้
BasicTextField
จะตรวจสอบการแมปออฟเซ็ตบางส่วนที่เลือกไว้ล่วงหน้าเมื่อผ่านVisualTransformation
ซึ่งจะช่วยตรวจหาข้อผิดพลาดที่พบบ่อยในการเขียนโค้ดซึ่งนำไปสู่ข้อยกเว้นที่กู้คืนไม่ได้ในการวัดผลในภายหลังหรือการสุ่มบัตรผ่าน การแสดงข้อผิดพลาดระหว่างการเรียบเรียงอาจทำให้นักพัฒนาแอปเห็นข้อผิดพลาดเหล่านี้ระหว่างการพัฒนามากขึ้น ซึ่งจะช่วยป้องกันข้อขัดข้องในการผลิต (I0fd42) VisualTransformation
จะไม่มีการส่งหากคุณแสดงผลดัชนีที่ไม่ถูกต้องสำหรับดัชนีที่ไม่ถูกต้อง (b/316401857 )
เวอร์ชัน 1.6
เวอร์ชัน 1.6.8
12 มิถุนายน 2024
ปล่อย androidx.compose.foundation:foundation-*:1.6.8
แล้ว เวอร์ชัน 1.6.8 มีคอมมิตเหล่านี้
เวอร์ชัน 1.6.7
1 พฤษภาคม 2024
ปล่อย androidx.compose.foundation:foundation-*:1.6.7
แล้ว เวอร์ชัน 1.6.7 มีคอมมิตเหล่านี้
เวอร์ชัน 1.6.6
17 เมษายน 2024
ปล่อย androidx.compose.foundation:foundation-*:1.6.6
แล้ว เวอร์ชัน 1.6.6 มีคอมมิตเหล่านี้
แก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องที่ในบางเงื่อนไขที่สลับแอตทริบิวต์
enabled
หรือreadOnly
ของTextField
จะทำให้เกิดข้อขัดข้อง (Iae17b)
เวอร์ชัน 1.6.5
3 เมษายน 2024
ปล่อย androidx.compose.foundation:foundation-*:1.6.5
แล้ว เวอร์ชัน 1.6.5 มีคอมมิตเหล่านี้
แก้ไขข้อบกพร่อง
- เพิ่มบันทึกการแก้ไขข้อบกพร่องไปยังข้อบกพร่องที่ทำซ้ำได้ยากในแถว/คอลัมน์: (b/300280216 และ b/297974033)
เวอร์ชัน 1.6.4
20 มีนาคม 2024
ปล่อย androidx.compose.foundation:foundation-*:1.6.4
แล้ว เวอร์ชัน 1.6.4 มีคอมมิตเหล่านี้
แก้ไขข้อบกพร่อง
- ท่าทางสัมผัสการเลือกแบบกดค้างแล้วลากซึ่งย้ายออกจากขอบเขตของเลย์เอาต์ข้อความในเฟรมแรกของการลากจะไม่เกิดข้อขัดข้องอีกต่อไป (Icdf90, b/325307463)
เวอร์ชัน 1.6.3
6 มีนาคม 2024
ปล่อย androidx.compose.foundation:foundation-*:1.6.3
แล้ว เวอร์ชัน 1.6.3 มีคอมมิตเหล่านี้
เวอร์ชัน 1.6.2
21 กุมภาพันธ์ 2024
ปล่อย androidx.compose.foundation:foundation-*:1.6.2
แล้ว เวอร์ชัน 1.6.2 มีคอมมิตเหล่านี้
แก้ไขข้อบกพร่อง
- แก้ไข
AnimateContentSize
ที่รีเซ็ตไม่ถูกต้อง (I07051) - แก้ไขปัญหาที่ข้อความ
intrinsicHeight
ถูกแคชมากเกินไปในบางสถานการณ์ (3cd398, b/217910352)
เวอร์ชัน 1.6.1
7 กุมภาพันธ์ 2024
ปล่อย androidx.compose.foundation:foundation-*:1.6.1
แล้ว เวอร์ชัน 1.6.1 มีคอมมิตเหล่านี้
แก้ไขข้อบกพร่อง
- แก้ไขการวัดตารางกริดแบบสับเปลี่ยนเมื่อเลื่อนเกินขีดจำกัด (bffc39)
- เพิ่มเครื่องหมายถูกสำหรับเลย์เอาต์ที่มีขนาดใหญ่ (e74af5)
- แก้ไขตำแหน่งรายการขนาด 0 ที่จุดเริ่มต้นของตารางกริดที่จัดเรียงไว้ (785f94)
- Callback ของ OnRelease ในลำดับเดียวกันกับ onForgotten (31ce3b)
เวอร์ชัน 1.6.0
24 มกราคม 2024
ปล่อย androidx.compose.foundation:foundation-*:1.6.0
แล้ว เวอร์ชัน 1.6.0 มีคอมมิตเหล่านี้
การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 1.5.0
- ตัวปรับแต่งใหม่
Modifier.anchoredDraggable
ที่จะปลดล็อกความสามารถในการลากและเคลื่อนไหวระหว่างชุด Anchor ที่กำหนดไว้ล่วงหน้า ตัวแก้ไขนี้มีไว้เพื่อใช้แทนModifier.swipeable
ดูวิธีใช้และย้ายข้อมูลจากModifier.swipeable
ในคำแนะนำในการย้ายข้อมูล - เพิ่มฟังก์ชันลากและวางระหว่างแอปและคอมโพเนนต์แล้ว โปรดดูที่
DragAndDropTarget
,Modifier.dragAndDropSource
และ API อื่นๆ เพื่อเริ่มต้นใช้งาน Modifier.draggable2D
เป็นแป้นกดร่วมแบบใหม่ที่ช่วยให้รองรับการลากแบบ 2 มิติได้อย่างง่ายดาย ดูตัวอย่าง- มีการเพิ่ม
AndroidExternalSurface
และAndroidEmbeddedExternalSurface
เพื่อให้เพิ่มคอมโพเนนต์ที่ขับเคลื่อนด้วยแพลตฟอร์มในการเขียนได้ง่ายขึ้น - การเปลี่ยนแปลงและการปรับปรุง API ต่างๆ ใน
Pager
และsnapFlingBehaviour
- API ต่างๆ สำหรับโฟกัส ข้อความ และชิ้นงานได้รับการเลื่อนระดับเป็น API ที่เสถียร
เวอร์ชัน 1.6.0-rc01
10 มกราคม 2024
ปล่อย androidx.compose.foundation:foundation-*:1.6.0-rc01
แล้ว เวอร์ชัน 1.6.0-rc01 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- นำเครื่องมือสร้างส่วนขยาย
DragAndDropTarget()
ออกแล้ว สร้างอินสแตนซ์ใหม่โดยใช้object: DragAndDropTarget {}
(I32318)
เวอร์ชัน 1.6.0-beta03
13 ธันวาคม 2023
ปล่อย androidx.compose.foundation:foundation-*:1.6.0-beta03
แล้ว เวอร์ชัน 1.6.0-beta03 มีการคอมมิตเหล่านี้
แก้ไขข้อบกพร่อง
- แก้ไขข้อขัดข้องที่ส่งผลต่อข้อความขนาดใหญ่มากซึ่งวัดด้วยข้อจำกัดไม่สิ้นสุด (I1a7df, b/312294386)
- ขณะนี้
PlatformImeOptions
เป็นคลาสที่เป็นรูปธรรมแทนที่จะเป็นอินเทอร์เฟซ (If40a4)
เวอร์ชัน 1.6.0-beta02
29 พฤศจิกายน 2023
ปล่อย androidx.compose.foundation:foundation-*:1.6.0-beta02
แล้ว เวอร์ชัน 1.6.0-beta02 มีการคอมมิตเหล่านี้
แก้ไขข้อบกพร่อง
- แก้ไข
canScroll
ไม่ได้รับการอัปเดตหลังจากเลื่อนแบบ Relayout เท่านั้น (I60a86) - แก้ไข
Modifier.animateItemPlacement()
และLookaheadScope
หลังจากเลื่อนลงทีละน้อย (I3a2b7)
เวอร์ชัน 1.6.0-beta01
15 พฤศจิกายน 2023
ปล่อย androidx.compose.foundation:foundation-*:1.6.0-beta01
แล้ว เวอร์ชัน 1.6.0-beta01 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ตอนนี้ตัวแก้ไข
DragAndDropTarget
จะรับDragAndDropTarget
อย่างชัดเจนและมี lambda สำหรับเลือกใช้เซสชันลากและวาง ตอนนี้DragAndDropModifierNode
มีฟังก์ชันจากโรงงาน 2 ฟังก์ชัน ช่องหนึ่งสำหรับรับการโอนข้อมูลและอีกช่องสำหรับโอนข้อมูล (I69481) - อัปเดต
maximumFlingVelocity
ให้แสดงเป็น "ลอย" แล้ว ปรับปรุงเอกสารประกอบเพื่อให้เข้าใจความเป็นเอกภาพของmaximumFlingVelocity
ชัดเจนยิ่งขึ้น (I8adc7) onDragAndDropStart
ในDragAndDropModifierNode
เปลี่ยนชื่อโรงงานเป็นacceptDragAndDropTransfer
แล้วเพิ่ม
acceptsDragAndDropTransfer
ในModifier
ของdragAndDropTarget
แล้วเพื่อยอมรับจากเซสชันการลากและวาง แลมบ์ดานี้คืนชีวิตDragAndDropTarget
หากสนใจเซสชันลากและวาง มีการใช้พารามิเตอร์นี้แทน lambda อื่นๆ สำหรับการประมวลผลเหตุการณ์การลากแล้วเพิ่มฟังก์ชันเริ่มต้น
DragAndDropTarget
เพื่อรับจากเซสชันการลากและวาง (Iebf3a)การแสดง
startDragImmediately
ในAnchoredDraggable
ช่วยให้ควบคุมการตรวจหาท่าทางสัมผัสการลากได้เมื่อใช้ การตั้งค่านี้มีประโยชน์เมื่อวิดเจ็ตกำลังเคลื่อนไหวไปยังจุดยึดเป้าหมาย ดูตัวอย่าง (Ie6d13, b/285139987)ขณะนี้ API เคล็ดลับเครื่องมือพื้นฐานคือ
@ExperimentalFoundationApi
(I30b0b)นำ
DragAndDropInfo
ที่เป็นประเภทDragAndDropModifierNode.drag
ออกแล้วตอนนี้จะใช้พารามิเตอร์สำหรับtransferData
, ขนาดการตกแต่ง และการตกแต่งแบบลากDrawScope
lambda ได้แล้วDragAndDropTarget
มีวิธีสําหรับเหตุการณ์ลากและวางบางอย่างแทนที่จะใช้วิธีนามธรรมวิธีเดียวonDragAndDropEvent
ในฟังก์ชันเริ่มต้นสำหรับDragAndDropModifierNode
ได้เปลี่ยนชื่อเป็นonDragAndDropStart
เพื่อให้สื่อสารได้ดียิ่งขึ้นว่าDragAndDropTarget
ที่ระบุใช้ได้สำหรับเซสชันการลากและวางที่ระบุเท่านั้นนำ
DragAndDropEventType
ออกแล้ว (I645b1)เปลี่ยนชื่อ
PlatformTextInputModifierNode.runTextInputSession
เป็นestablishTextInputSession
แล้ว (I03cd0)แทนที่
OriginalText
ด้วยTextSubstitution
(Ifa5a8)เปลี่ยนชื่อ
PlatformTextInputModifierNode.textInputSession
เป็นrunTextInputSession
แล้ว (Ie9c6b)องค์ประกอบย่อยของ
SubcomposeLayout
(และเลย์เอาต์ เช่นLazyColumn
ที่ขึ้นอยู่กับรายการนี้) ที่เก็บรักษาไว้เพื่อนำมาใช้ซ้ำในอนาคตจะถือว่าปิดใช้งานแล้ว มีการใช้ API ทดสอบassertIsDeactivated()
ใหม่เพื่อทดสอบโหนดดังกล่าว API ทดสอบที่เหลือจะกรองโหนดที่ปิดใช้งานออกโดยค่าเริ่มต้น (I2ef84, b/187188981)เปลี่ยนชื่อพารามิเตอร์
clippingEnabled
ของModifier.magnifier
เป็นclip
แล้วทำให้พารามิเตอร์
magnifierCenter
ของModifier.magnifier
เป็นค่าว่างได้ โดยคงลักษณะการทำงานเริ่มต้นแบบเดิมไว้ (I6aa66)ตอนนี้ Material
SwipeToReveal
API (สำหรับการ์ดและชิป) ใช้ API ตามสล็อต (ตามที่ Compose แนะนำ) แทนอินสแตนซ์ที่อิงตามคลาสข้อมูลเพื่อสร้างสล็อตแล้ว การเปลี่ยนแปลงนี้เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ โปรดดูการสาธิตและโค้ดตัวอย่างเพื่อดูตัวอย่างวิธีใช้ API ใหม่ (Ia8943)
แก้ไขข้อบกพร่อง
- ใช้เท่ากับและแฮชโค้ดสำหรับ
PageSize.Fixed
(Ie3ede, b/300134276) - แก้ไขข้อบกพร่องที่ทำให้เลย์เอาต์
BasicText
ไม่ย่อเมื่อเปลี่ยนminWidth
และลดminWidth
น้อยกว่าข้อจำกัดการวัดเริ่มต้นmaxWidth
(Idb19c) - เพิ่มการรองรับตัวแสดงผลสำหรับการไล่ระดับสีกวาดใน
ArcLine
(I4d5bb) - แก้ไขปัญหาความเข้ากันได้ของไบนารีที่มีการเปลี่ยนแปลง Window Inset (Iee695)
- นำเลเยอร์หลักของวัสดุสำหรับชิป/ปุ่ม Material3 ออก เนื่องจากการเปรียบเทียบย่อยจะแสดงประสิทธิภาพที่ดีกว่าหากไม่มีข้อมูลเหล่านี้ (I55555)
เวอร์ชัน 1.6.0-alpha08
18 ตุลาคม 2023
ปล่อย androidx.compose.foundation:foundation-*:1.6.0-alpha08
แล้ว เวอร์ชัน 1.6.0-alpha08 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
Modifier.draggable2D
เป็นแป้นกดร่วมแบบใหม่ที่ช่วยให้รองรับการลากแบบ 2 มิติได้อย่างง่ายดาย ดูตัวอย่าง (Id95f5, b/214412658)
การเปลี่ยนแปลง API
Modifier.dragAndDrawSource
ได้เปลี่ยนชื่อ lambda ของonDrawDragShadow
เป็นdrawDragDecoration
และDragAndDropInfo
ได้เปลี่ยนชื่อพารามิเตอร์ขนาดเป็นdragDecorationSize
(Id0e30, b/303904810)- พารามิเตอร์
decorationBox
ของBasicTextField2
เปลี่ยนชื่อเป็นdecorator
แล้ว และเปลี่ยนประเภทของรูปแบบเป็นอินเทอร์เฟซสนุกๆ ที่เทียบเท่าTextFieldDecorator
ด้วย (I23c1c)
แก้ไขข้อบกพร่อง
- ปรับปรุงเอกสารประกอบเกี่ยวกับ
BasicTextField
เกี่ยวกับข้อกำหนดของonValueChange
(I90fc9, b/160257648)
เวอร์ชัน 1.6.0-alpha07
4 ตุลาคม 2023
ปล่อย androidx.compose.foundation:foundation-*:1.6.0-alpha07
แล้ว เวอร์ชัน 1.6.0-alpha07 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- แนะนำ
PlatformTextInputMethodTestOverride
สำหรับการทดสอบการเขียนสำหรับเครื่องมือแก้ไขข้อความที่กำหนดเอง (Id159b) - เปลี่ยนชื่อ
GraphicsSurface
เป็นAndroidExternalSurface
(I11680) แล้ว - เพิ่ม Flag ชั่วคราว
DisableNonLinearFontScalingInCompose
เพื่อปิดใช้การปรับขนาดแบบอักษรที่ไม่ใช่แบบเชิงเส้น ตั้งค่าDisableNonLinearFontScalingInCompose = true
ในการทดสอบหากต้องการเวลาทำความสะอาด ระบบจะนำธงนี้ออกใน Compose 1.6.0-beta01 (Ic9486) - เพิ่มคอลเล็กชัน
ColorList
และColorSet
ที่หลีกเลี่ยงการจัดสรร (I744bd) - การเปลี่ยนแปลงนี้จะนํา
shortSnapVelocityThreshold
ซึ่งเปลี่ยนเป็นรายละเอียดการติดตั้งใช้งานSnapLayoutInfoProvider
ออก (I65f6d) - เพิ่ม
dragAndDropSource
Modifier สำหรับการเริ่มเซสชันลากและวาง และdragAndDropTarget
Modifier สําหรับการรับจากเซสชันลากและวาง (Ib7828, b/286038936) - อัปเดตเอกสาร
SnapPositionInLayout
และวิธีจัดตำแหน่ง แนะนำระยะห่างจากขอบของเนื้อหาให้กับเมธอดการวางตำแหน่งในSnapPositionInLayout
(Id7938, b/300116110) - เพิ่ม
UndoState
ในTextFieldState
ที่ให้ความสามารถในการเลิกทำ/ทำซ้ำการเปลี่ยนแปลงที่ผู้ใช้ทำ (Icc024)
แก้ไขข้อบกพร่อง
- แก้ไขแล้ว
basicMarquee
ไม่เคลื่อนไหวหลังจากเปลี่ยนอัตราความเร็ว (รหัส 2e77, b/297974036)
เวอร์ชัน 1.6.0-alpha06
20 กันยายน 2023
ปล่อย androidx.compose.foundation:foundation-*:1.6.0-alpha06
แล้ว เวอร์ชัน 1.6.0-alpha06 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- Wrapper ที่ประกอบกันได้ใหม่สำหรับ
SurfaceView
และTextureView: GraphicsSurface()
และEmbeddedGraphicsSurface()
API นี้เป็น API ทดลองและอาจมีการเปลี่ยนแปลงและแก้ไข (I9ddb2) - ตอนนี้
Modifier.magnifier()
เป็น API ที่มีความเสถียรแล้ว ซึ่งรวมถึงการนำMagnifierStyle
ออกเพื่อใช้พารามิเตอร์แบบอินไลน์ในตัวแก้ไขเอง (I83bec, b/298381260, b/262367109, b/261438887)
การเปลี่ยนแปลง API
- เปิดตัว
updateCurrentPage
และupdateTargetPage
ในScrollScope
ซึ่งเป็นผลงานชิ้นสุดท้ายที่จำเป็นต่อการปรับแต่งการเลื่อนแบบเคลื่อนไหวผ่านPagerState.scroll
(I9cad5, b/267744105, b/243786897) - นำความหนาแน่นออกจาก
SnapFlingBehavior
การใช้งานSnapLayoutInfoProvider
ทั้งหมดมีวิธีเข้าถึงความหนาแน่นอยู่แล้ว ดังนั้นอาจมีการนำขอบเขตตัวรับออก ซึ่งจะทำให้การใช้งานทั้งSnapFlingBehavior
และSnapLayoutInfoProviders
มีความซับซ้อนน้อยลง (I153c3) - ตัวแก้ไขอื่นๆ ทำเครื่องหมายว่าเสถียรแล้ว (I56af1, b/298046462)
- นำ
SnapStepSize
ออกจากSnapLayoutInfoProvider
แล้ว การคำนวณควรทำโดยใช้ข้อมูลเลย์เอาต์และให้ผ่านวิธีการหรือระยะสแนปออฟเซ็ต (If320C)
การเปลี่ยนแปลงลักษณะการทำงาน
- ตอนนี้การเขียนใช้การปรับขนาดแบบอักษรที่ไม่ใช่แบบเชิงเส้นเพื่อให้อ่านและช่วยเหลือพิเศษได้ง่ายขึ้น เมื่อปรับขนาดแบบอักษร > 100% ในการตั้งค่าระบบ ข้อความขนาดเล็กจะมีขนาดเพิ่มขึ้นตามปกติ แต่ข้อความขนาดใหญ่อยู่แล้วจะเพิ่มขนาดเพิ่มขึ้นเล็กน้อยเท่านั้น นอกจากนี้ ความสูงของบรรทัดที่กำหนดไว้ใน SP จะปรับโดยอัตโนมัติเพื่อให้เป็นสัดส่วนกับความสูงที่ต้องการมาตราส่วน 100% ดูข้อมูลเพิ่มเติมได้ที่แนวทางปฏิบัติแนะนำในการปรับขนาดแบบอักษร (I11518)
แก้ไขข้อบกพร่อง
- นำการใช้
rememberSaveable
สำหรับเคล็ดลับเครื่องมือออก (Icc131, b/299500338)
เวอร์ชัน 1.6.0-alpha05
6 กันยายน 2023
ปล่อย androidx.compose.foundation:foundation-*:1.6.0-alpha05
แล้ว เวอร์ชัน 1.6.0-alpha05 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มโอเวอร์โหลดสำหรับ
BasicSecureTextField
ที่ยอมรับค่าที่เปลี่ยนแปลงไม่ได้และ Callback เพื่อเปลี่ยนค่าดังกล่าว เช่นเดียวกับ API ของBasicTextField
ปัจจุบัน (Ia4882) - เพิ่ม
Modifier.preferKeepClear()
เพื่อทำเครื่องหมายเป็น Composable เป็นที่ต้องการเพื่อไม่ให้มีหน้าต่างแบบลอยใน API 33 ขึ้นไป (Ib51d5, b/297260115) - ความเร็วการลอยในคอมโพเนนต์ View เช่น
ScrollView
และRecyclerView
จำกัดอยู่ที่ViewConfiguration.ScaledMaximumFlingVelocity
การเขียนมีmaximumFlingVelocity
เวอร์ชันของตนเองซึ่งตอนนี้มีผลกับDraggable
(Ibf974) - นำโอเวอร์โหลด
Pager
และPagerState
ที่เลิกใช้งานแล้วออก (Iea07e) - เพิ่ม
BasicTooltipBox
ในcompose.foundation
และอัปเดตPlainTooltipBox
และRichTooltipBox
เพื่อใช้TooltipBox
กับ Composable ของPlainTooltip
และRichTooltip
ใหม่ (I79e1d)
เวอร์ชัน 1.6.0-alpha04
23 สิงหาคม 2023
ปล่อย androidx.compose.foundation:foundation-*:1.6.0-alpha04
แล้ว เวอร์ชัน 1.6.0-alpha04 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มอินเทอร์เฟซ
ReusableComposition
เพื่อจัดการวงจรและการใช้องค์ประกอบย่อยซ้ำ (I812d1, b/252846775) Modifier.focusGroup
ได้รับการโปรโมตเป็น API ที่เสถียรแล้ว (I7ffa3)- เพิ่มโอเวอร์โหลดสำหรับ
BasicTextField2
ที่ยอมรับค่าที่เปลี่ยนแปลงไม่ได้และ Callback เพื่อเปลี่ยนค่าดังกล่าว เช่นเดียวกับ API ของBasicTextField
ปัจจุบัน (I3f2b8) - ตอนนี้
GridItemSpan::currentLineSpan
เป็น API ที่มีความเสถียรแล้ว (Icc29c) - Canvas ที่ยอมรับ
contentDescription
เป็น API ที่เสถียรแล้ว (Ib3d29) - เปิดตัว
viewportSize
ในScrollState
ซึ่งเป็นวิธีรู้ขนาดviewPort
ของคอมโพเนนต์ที่ใช้ScrollState
หลังจากเกิดการวัดค่าแล้ว (I8b85a, b/283102682) - แก้ไขปัญหาที่การดึงข้อมูลล่วงหน้าในเพจเจอร์ไม่ตรงกับลักษณะการทำงานใน View (I93352, b/289088847)
Modifier.consumeWindowInsets(PaddingValues)
มีความเสถียรแล้วตอนนี้- นำ API ของ
Deprecated Modifier.consumedWindowInsets
ออกแล้ว โปรดใช้Modifier.consumeWindowInsets
แทน (Id72bb)
- นำ API ของ
เวอร์ชัน 1.6.0-alpha03
9 สิงหาคม 2023
ปล่อย androidx.compose.foundation:foundation-*:1.6.0-alpha03
แล้ว เวอร์ชัน 1.6.0-alpha03 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม
LazyLayout
มากเกินไป แต่รับ lambda ของLazyLayoutItemProvider
ไม่ใช่ออบเจ็กต์ธรรมดาเหมือนก่อนหน้านี้ เลิกใช้งานโอเวอร์โหลดก่อนหน้านี้แล้ว (I42a5a) - เพิ่มการรองรับการกำหนดค่า
privateImeOptions
(Idb772)
แก้ไขข้อบกพร่อง
- ช่องข้อความที่แก้ไขแล้วที่แสดงแป้นพิมพ์และจะแก้ไขได้เมื่อ
readOnly
เป็นจริง รวมทั้งแก้ไขแป้นพิมพ์ไม่แสดงเมื่อเปลี่ยนreadOnly
จาก true เป็น false ขณะโฟกัสอยู่ (I34a19, b/246909589)
เวอร์ชัน 1.6.0-alpha02
26 กรกฎาคม 2023
ปล่อย androidx.compose.foundation:foundation-*:1.6.0-alpha02
แล้ว เวอร์ชัน 1.6.0-alpha02 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เปิดตัว
PagerLayoutInfo
ด้วยข้อมูลที่รวบรวมหลังจากผ่านการตรวจสอบการวัดในPager
รวมทั้งแนะนำPageInfo
ซึ่งเป็นข้อมูลเกี่ยวกับหน้าเว็บที่วัดหน้าเดียวในPager
(Iad003, b/283098900) - คำอธิบายประกอบเพิ่มเติมเพื่อระบุอินพุตที่อนุญาตสำหรับ Composable (I51109)
- เพิ่ม
SemanticsNodeInteraction.requestFocus
เพื่อให้การมุ่งเน้นในการทดสอบที่สะดวกและค้นพบได้มากขึ้น (Ie8722) - ออกแบบ API ของ
PlatformTextInput*
ใหม่ทั้งหมด (I6c93a, b/274661182, b/267235947, b/277380808) SoftwareKeyboardController
และLocalSoftwareKeyboardController
ไม่ใช่เวอร์ชันทดลองอีกต่อไป ตอนนี้LocalSoftwareKeyboardController
เป็นCompositionLocal
ที่เหมาะสมแล้ว (I4c364)- ตอนนี้
Modifier.transformable
ระบุเดลต้าในการแพนในพารามิเตอร์canPan
เพื่อช่วยกำหนดทิศทางของการเลื่อนเพื่ออนุญาตหรือไม่อนุญาต (I692aa, b/266829800) - อัปเดตตัวแก้ไข
consumeWindowInsets
เพื่อขยาย SuperclassAbstractComposeView
(Iacd74, b/269479941)
เวอร์ชัน 1.6.0-alpha01
21 มิถุนายน 2023
ปล่อย androidx.compose.foundation:foundation-*:1.6.0-alpha01
แล้ว เวอร์ชัน 1.6.0-alpha01 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เปิดตัว
AnchoredDraggable
API ใหม่ใน Foundation ซึ่งใช้สร้างคอมโพเนนต์ที่สามารถลากไปมาระหว่างสถานะที่แยกกันได้ เช่น Bottom Sheet ของโมดัล API นี้มาแทนที่Swipeable
API ของ Material (I4a2ed)
การเปลี่ยนแปลง API
- สนับสนุน
InputConnection#requestCursorUpdates
(I0c69b) - เปิดตัว
scrollAnimationSpec
เพื่ออนุญาตข้อกำหนดของภาพเคลื่อนไหวที่กำหนดเอง อัปเดตBringIntoViewCalculator
เป็นBringIntoViewScroller
แล้ว (Idb741) - เพิ่มประเภท
ResourceResolutionException
เพื่อรวมเนื้อหาที่ส่งได้เมื่อพยายามโหลดเนื้อหาบิตแมปที่มีคําอธิบายเส้นทางของเนื้อหาที่โหลดไม่สําเร็จ (I19f44, b/230166331, b/278424788) - เพิ่มพร็อพเพอร์ตี้และการดำเนินการด้านอรรถศาสตร์เพื่อรองรับการแปลข้อความ (I4a6bc)
- เปิดตัว API ของ
BringIntoViewCalculator
ที่สามารถใช้เพื่อปรับแต่งวิธีที่คอมโพเนนต์อย่างScrollable
ตอบสนองต่อคำขอbringIntoView
เปลี่ยนการใช้งานที่เลื่อนได้มากเกินไปเพื่อยอมรับอินสแตนซ์ของBringIntoViewCalculator
แล้ว (Iaf5af)
แก้ไขข้อบกพร่อง
- เพิ่มการตรวจสอบ Lint เพื่อเตือนหากคุณกำลังสร้าง
MutableInteractionSource
ในการเรียบเรียงโดยที่จำไม่ได้ ซึ่งคล้ายกับการตรวจสอบ Lint สำหรับสร้างสถานะที่เปลี่ยนแปลงได้ /Animatable
(I5daae) - เพิ่มการสนับสนุนสำหรับการเลือกด้วยเมาส์ การเลือกตามการแตะจะขยายทีละคำและย่อลงอักขระ (Ic0c6c, b/180639271)
- เพิ่มอินเทอร์เฟซ
FocusTargetModifierNode
ที่สามารถใช้สร้างFocusTarget
ที่กำหนดเอง (I9790e)
รุ่น 1.5
เวอร์ชัน 1.5.4
18 ตุลาคม 2023
ปล่อย androidx.compose.foundation:foundation-*:1.5.4
แล้ว เวอร์ชัน 1.5.4 มีคอมมิตเหล่านี้
เวอร์ชัน 1.5.3
4 ตุลาคม 2023
ปล่อย androidx.compose.foundation:foundation-*:1.5.3
แล้ว เวอร์ชันนี้ไม่มีการเปลี่ยนแปลง
รุ่น 1.5.2
27 กันยายน 2023
ปล่อย androidx.compose.foundation:foundation-*:1.5.2
แล้ว เวอร์ชัน 1.5.2 มีคอมมิตเหล่านี้
แก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องในข้อความที่ทำให้เกิดข้อขัดข้องในบางสถานการณ์เมื่อความหมายไม่ถูกต้อง
รุ่น 1.5.1
6 กันยายน 2023
ปล่อย androidx.compose.foundation:foundation-*:1.5.1
แล้ว เวอร์ชัน 1.5.1 มีคอมมิตเหล่านี้
แก้ไขข้อบกพร่อง
- ช่องข้อความที่แก้ไขแล้วที่แสดงแป้นพิมพ์และจะแก้ไขได้เมื่อ
readOnly
เป็นจริง รวมทั้งแก้ไขแป้นพิมพ์ไม่แสดงเมื่อเปลี่ยนreadOnly
จาก true เป็น false ขณะโฟกัสอยู่ (I34a19, b/246909589)
เวอร์ชัน 1.5.0
9 สิงหาคม 2023
ปล่อย androidx.compose.foundation:foundation-*:1.5.0
แล้ว เวอร์ชัน 1.5.0 มีคอมมิตเหล่านี้
การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 1.4.0
- ตัวแก้ไขพื้นฐานหลายรายการ ได้แก่
Modifier.clickable
,Modifier.draggable
,Modifier.scrollable
, ตัวแก้ไขเลย์เอาต์ และอื่นๆ ได้ย้ายข้อมูลไปยังModifier.Node
API แล้ว ซึ่งจะช่วยลดโอเวอร์เฮดในการเรียบเรียงเบื้องต้น - การปรับปรุงความเสถียรของเพจเจอร์ ข้อบกพร่องจำนวนมากได้รับการแก้ไขแล้ว
- ตอนนี้พารามิเตอร์
pageCount
อยู่ในPagerState
แทนที่จะเป็น Pager
เวอร์ชัน 1.5.0-rc01
26 กรกฎาคม 2023
ปล่อย androidx.compose.foundation:foundation-*:1.5.0-rc01
แล้ว เวอร์ชัน 1.5.0-rc01 มีคอมมิตเหล่านี้
แก้ไขข้อบกพร่อง
การตรวจสอบที่ไม่บังคับสำหรับแนะนำให้ย้ายข้อมูลการเรียก
mutableStateOf()
ไปยังประเภทเฉพาะที่เกี่ยวข้องสำหรับค่าพื้นฐานที่พร้อมใช้งาน รหัส Lint คือAutoboxingStateCreation
ซึ่งก่อนหน้านี้ ระบบจะเปิดใช้การตรวจสอบนี้โดยค่าเริ่มต้นสำหรับทุกโปรเจ็กต์ หากต้องการดูคำเตือนนี้ในตัวแก้ไขของ Android Studio และเอาต์พุต Lint ของโปรเจ็กต์ ให้เปลี่ยนความรุนแรงจากการให้ข้อมูลเป็นคำเตือน (หรือสูงกว่า) โดยประกาศwarning "AutoboxingStateCreation"
ภายในการกำหนดค่าbuild.gradle
หรือbuild.gradle.kts
ของโมดูลตามที่แสดงไว้ (I34f7e) ดังนี้android { lint { warning "AutoboxingStateCreation" } ... }
เวอร์ชัน 1.5.0-beta03
28 มิถุนายน 2023
ปล่อย androidx.compose.foundation:foundation-*:1.5.0-beta03
แล้ว เวอร์ชัน 1.5.0-beta03 มีการคอมมิตเหล่านี้
เวอร์ชัน 1.5.0-beta02
7 มิถุนายน 2023
ปล่อย androidx.compose.foundation:foundation-*:1.5.0-beta02
แล้ว เวอร์ชัน 1.5.0-beta02 มีการคอมมิตเหล่านี้
เวอร์ชัน 1.5.0-beta01
24 พฤษภาคม 2023
ปล่อย androidx.compose.foundation:foundation-*:1.5.0-beta01
แล้ว เวอร์ชัน 1.5.0-beta01 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ใช้
PlatformDataProvider
เพื่อระบุอัตราการเต้นของหัวใจและจํานวนก้าวในแต่ละวัน นำอินเทอร์เฟซSensorGateway
ออกจาก API สาธารณะแล้ว (I55b84)
แก้ไขข้อบกพร่อง
- ลดการจัดสรรในระหว่างรายการ/ตารางกริด/อื่นๆ แบบ Lazy Loading ค่าที่วัดได้ (Iaf9e2)
- การจัดสรรที่ลดลงเมื่อใช้สแนปชอต (I65c09)
- นำการจัดสรรออกจากภาพเคลื่อนไหวฤดูใบไม้ผลิ (Ie9431)
- นำการจัดสรรออกจาก
TextLayout
(I0fd11) แล้ว - นำการจัดสรรหลายรายการในการติดตามอัตราความเร็วตัวชี้ (I26bae) ออก
เวอร์ชัน 1.5.0-alpha04
10 พฤษภาคม 2023
ปล่อย androidx.compose.foundation:foundation:1.5.0-alpha04
และ androidx.compose.foundation:foundation-layout:1.5.0-alpha04
แล้ว เวอร์ชัน 1.5.0-alpha04 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม
TextStyle.merge(...)
ที่เพิ่มประสิทธิภาพแล้วซึ่งมีรายการพารามิเตอร์ทั้งหมด (Iad234, b/246961787) - แนะนำ
SnapLayoutInfoProvider
ที่ใช้ได้กับLazyGridState
(I92134, b/269237141, b/260914964) - เพิ่ม
Modifier.animateItemPlacement()
เวอร์ชันทดลองสำหรับขอบเขตรายการแบบตารางกริดแบบ Lazy Loading แล้ว คุณสามารถนําไปใช้กับรายการเพื่อเปลี่ยนตําแหน่งอัตโนมัติ/จัดเรียงภาพเคลื่อนไหวได้ (I4b62d, b/257034719) - เลื่อนระดับ
GridCells.FixedSize
เป็นเสถียรFixedSize
กำหนดLazyGrid
ซึ่งแต่ละเซลล์มีขนาดที่แน่นอนบนแกนไขว้ และพื้นที่ว่างที่เหลือซึ่งกระจายตามการจัดเรียงแกนไขว้ (I8542F) - เริ่มใช้ขอบเขตตัวรับ
PagerScope
สำหรับเพจเจอร์และฟังก์ชันยูทิลิตีในการคำนวณการชดเชยหน้าที่ระบุ (If2577) - แนะนำ
snapPositionalThreshold
เมื่อสร้างลักษณะการสแนป ใช้พารามิเตอร์นี้เพื่อระบุเกณฑ์ของตำแหน่งสำหรับการสแนปสั้นๆ ในเพจเจอร์ (If8f7f) - แทนที่
SnapLayoutInfoProvider.calculateSnappingOffsetBounds
ด้วยcalculateSnappingOffset
แล้ว ในวิธีการใหม่นี้ เราจะขอการชดเชยถัดไปเพื่อสแนปไป การคํานวณขอบเขตควรดําเนินการที่ระดับการใช้งาน เนื่องจากอาจแตกต่างออกไป โดยขึ้นอยู่กับว่ามีการสแนปเกิดขึ้นอย่างไร (I923a4) LazyStaggeredGrid
API ได้รับการโปรโมตให้มีความเสถียร (I633a5)- นำ
pageCount
ออกจากHorizontal/VerticalPager
ซึ่งควรระบุไว้ในการสร้างรัฐ อัปเดตPagerState
และrememberPagerState
ให้ยอมรับpageCount
(Ieb52d, b/266965072) - นำ
pageCount
ออกจากHorizontal/VerticalPager
ซึ่งควรระบุไว้ในการสร้างรัฐ อัปเดตPagerState
และrememberPagerState
ให้ยอมรับpageCount
(Ifa3cb, b/266965072) - แนะนำ
shortSnapVelocityThreshold
ในSnapFlingBehavior
ของเพจเจอร์ (I7379e, b/275579012) - เพิ่ม
FlowRowScope
และFlowColumnScope
(I54fe2)
แก้ไขข้อบกพร่อง
- การเรียกเพื่อรับความหมายในข้อความเมื่อข้อจำกัดมี
minWidth
และminHeight
ไม่มีการขัดข้องอีกต่อไป (Ibd072) - แก้ไขการถดถอยที่แป้นพิมพ์ไม่แสดงสำหรับช่องข้อความภายในกล่องโต้ตอบที่ไม่ได้สร้างโดย Composable
Dialog
(I82551, b/262140644)
เวอร์ชัน 1.5.0-alpha03
19 เมษายน 2023
ปล่อย androidx.compose.foundation:foundation:1.5.0-alpha03
และ androidx.compose.foundation:foundation-layout:1.5.0-alpha03
แล้ว เวอร์ชัน 1.5.0-alpha03 มีคอมมิตเหล่านี้
รุ่นนี้เปิดใช้สแต็กการแสดงผลข้อความใหม่สำหรับ Compose สแต็กใหม่ได้รับการเพิ่มประสิทธิภาพให้มีประสิทธิภาพแล้ว และคุณจะไม่เห็นการเปลี่ยนแปลงใดๆ ที่เห็นได้ชัด
หากคุณเห็นการเปลี่ยนแปลงในข้อความที่แสดงผล คุณแก้ไขข้อบกพร่องได้โดยการตั้งค่า NewTextRendering1_5 = false
เพื่อยืนยันความแตกต่างของลักษณะการทำงาน การตั้งค่านี้จะบังคับให้จัดวางใหม่ โปรดยื่นความแตกต่างของลักษณะการทำงานเป็นข้อบกพร่อง
ระบบจะนำแฟล็กการแก้ไขข้อบกพร่องออกก่อนรุ่น 1.5 Beta01 (Iada23, b/246960758)
การเปลี่ยนแปลง API
- ทำให้
FlowColumn/FlowRow
เป็นแบบในหน้า (Idab37)
เวอร์ชัน 1.5.0-alpha02
5 เมษายน 2023
ปล่อย androidx.compose.foundation:foundation:1.5.0-alpha02
และ androidx.compose.foundation:foundation-layout:1.5.0-alpha02
แล้ว เวอร์ชัน 1.5.0-alpha02 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มการสนับสนุนสำหรับเซลล์ขนาดคงที่ใน
LazyGrid
และจัดเรียงเซลล์เหล่านั้นด้วยการจัดเรียงข้ามแกน (I83ed9, b/235121277, b/267942510) - เพิ่มการสนับสนุนสำหรับเลนที่มีขนาดคงที่ใน
LazyStaggeredGrid
และจัดเรียงด้วยการจัดเรียงแบบกากบาท (I7d519) - ตอนนี้
UrlAnnotation
ในAnnotatedString
จะเปิดผ่านบริการการช่วยเหลือพิเศษอย่างเช่นTalkBack
ได้แล้ว (If4d82, b/253292081) - เพิ่มการดำเนินการอรรถศาสตร์
InsertTextAtCursor
สำหรับช่องข้อความแล้ว (I11ed5) - ตอนนี้การดำเนินการทดสอบที่เกี่ยวข้องกับข้อความ (เช่น
performTextInput
) จะขอโฟกัสโดยตรง โดยใช้การดำเนินการอรรถศาสตร์แทนการคลิกที่ช่อง (I6ed05) - เพิ่มการสนับสนุนสำหรับการเว้นระยะห่าง/การจัดเรียงข้ามแกนโดยใช้
verticalArrangement
ในFlowRow
และhorizontalArrangement
ในFlowColumn
นอกจากนี้ เรายังนำverticalAlignment
และhorizontalAlignment
ระดับบนสุดในFlowRow/FlowColumn
ออกด้วย นักพัฒนาแอปใช้Modifier.align
แทนได้ ซึ่งจะช่วยลดความสับสนระหว่างรูปแบบการตั้งชื่อของverticalAlignment
กับverticalArrangement
(I87b60, b/268365538)
เวอร์ชัน 1.5.0-alpha01
22 มีนาคม 2023
ปล่อย androidx.compose.foundation:foundation:1.5.0-alpha01
และ androidx.compose.foundation:foundation-layout:1.5.0-alpha01
แล้ว เวอร์ชัน 1.5.0-alpha01 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ข้อความและ
BasicText
เปลี่ยนโครงสร้างภายในโค้ดเพื่อใช้ระบบแป้นกดร่วมใหม่ ส่งผลให้ประสิทธิภาพเพิ่มขึ้นอย่างมากในหลายๆ กรณี ไม่ควรมองเห็นการเปลี่ยนแปลง (If1d17, b/246961435) - เพิ่มการดำเนินการด้านความหมาย
PerformImeAction
เพื่อเรียกใช้การดำเนินการ IME บนโหนดเครื่องมือแก้ไขข้อความ (Ic606f, b/269633506)
แก้ไขข้อบกพร่อง
- อัปเดตภายในของ
Modifier.hoverable
แล้ว ตัวแก้ไขhoverable
จะแสดงในเครื่องมือตรวจสอบก็ต่อเมื่อเปิดใช้ไว้ (I82103)
เวอร์ชัน 1.4
เวอร์ชัน 1.4.3
3 พฤษภาคม 2023
ระบบเผยแพร่ androidx.compose.foundation:foundation:1.4.3
และ androidx.compose.foundation:foundation-layout:1.4.3
โดยไม่มีการเปลี่ยนแปลง (เฉพาะเวอร์ชันเพิ่มเติม)
เวอร์ชัน 1.4.2
19 เมษายน 2023
ปล่อย androidx.compose.foundation:foundation:1.4.2
และ androidx.compose.foundation:foundation-layout:1.4.2
แล้ว เวอร์ชัน 1.4.2 มีคอมมิตเหล่านี้
เวอร์ชัน 1.4.1
5 เมษายน 2023
ปล่อย androidx.compose.foundation:foundation:1.4.1
และ androidx.compose.foundation:foundation-layout:1.4.1
แล้ว เวอร์ชัน 1.4.1 มีคอมมิตเหล่านี้
เวอร์ชัน 1.4.0
22 มีนาคม 2023
ปล่อย androidx.compose.foundation:foundation:1.4.0
และ androidx.compose.foundation:foundation-layout:1.4.0
แล้ว เวอร์ชัน 1.4.0 มีคอมมิตเหล่านี้
การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 1.3.0
- เพิ่มการผสานรวมความเข้ากันได้กับอีโมจิใน
Text
และTextField
รวมถึงย่อหน้าระดับต่ำลงมา โดยจะเปิดใช้โดยค่าเริ่มต้นเมื่อกำหนดค่าอีโมจิที่ใช้ร่วมกันแล้ว - คุณสามารถกำหนดค่า
EmojiCompat
ในข้อความที่เจาะจงได้โดยใช้PlatformParagraphStyle
- เพิ่มการรองรับช่วงสายเต็มใน
LazyStaggeredGrid
(I28252) - กำลังเพิ่ม
onHover
รุ่นทดลองไปยังClickableText
(I6938f) - เปิดตัวโอเวอร์โหลดทดสอบใหม่สำหรับฟังก์ชัน
runComposeUiTest
และฟังก์ชันcreate*ComposeRule
ที่ยอมรับพารามิเตอร์CoroutineContext
บริบทจะใช้สำหรับการเรียบเรียงเพลงและการเรียกLaunchedEffect
และrememberCoroutineScope()
ในการแต่งเพลง (I10614, b/265177763) FlowRow
และFlowColumn
พร้อมใช้งานเป็น@ExperimentalFoundationApi
แล้ว ซึ่งอนุญาตให้มีเลย์เอาต์ของคอมโพเนนต์ตามแถวและคอลัมน์ที่ยืดหยุ่นมากขึ้น ซึ่งจะแบ่งเป็นบรรทัดใหม่หากแกนหลักมีพื้นที่ไม่เพียงพอ (I3a7b2)Modifier.basicMarquee()
พร้อมใช้งานเป็นเวอร์ชันทดลองสำหรับการแสดงเนื้อหาที่มีเอฟเฟกต์เส้นมาร์คีเลื่อน (I2df44, b/139321650)
เวอร์ชัน 1.4.0-rc01
8 มีนาคม 2023
ปล่อย androidx.compose.foundation:foundation:1.4.0-rc01
และ androidx.compose.foundation:foundation-layout:1.4.0-rc01
แล้ว เวอร์ชัน 1.4.0-rc01 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เปิดตัว API ใหม่ระดับต่ำของ
PlatformTextInputAdapter
เพื่อสร้างการใช้งานการป้อนข้อความที่กำหนดเองซึ่งสื่อสารกับ API ของแพลตฟอร์มโดยตรง (I58df4) - เพิ่มการรองรับเลย์เอาต์แบบย้อนกลับใน
LazyStaggeredGrid
(I3ef4a)
แก้ไขข้อบกพร่อง
- ตอนนี้การดำเนินการความหมาย
SetText
ของBasicTextField
จะอัปเดตบัฟเฟอร์ข้อความโดยใช้เส้นทางโค้ดเดียวกันกับการอัปเดต IME และฟังก์ชันการทดสอบ (เช่นperformTextReplacement
) - ตอนนี้ฟังก์ชันการทดสอบข้อความ
performTextClearance
,performTextReplacement
และperformTextSelection
ใช้SemanticsActions
แล้ว (I0807d, b/269633168, b/269624358)
เวอร์ชัน 1.4.0-beta02
22 กุมภาพันธ์ 2023
ปล่อย androidx.compose.foundation:foundation:1.4.0-beta02
และ androidx.compose.foundation:foundation-layout:1.4.0-beta02
แล้ว เวอร์ชัน 1.4.0-beta02 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม Callback ของ
Modifier.Node.onReset()
ใหม่ซึ่งช่วยให้คุณรีเซ็ตสถานะในเครื่องบางสถานะเพื่อจัดการกับกรณีได้อย่างเหมาะสมเมื่อจะนำLayout
มาใช้ซ้ำ (เช่น เป็นรายการของLazyColumn
) แก้ไขFocusTargetModifierNode
เพื่อรีเซ็ตสถานะการโฟกัสอย่างถูกต้อง (I65495, b/265201972) - เพิ่มพารามิเตอร์
BlendMode
ในเมธอดDrawScope.drawText
,Paragraph.paint
และMultiParagraph.paint
เพื่อรองรับอัลกอริทึมการผสานต่างๆ เมื่อวาดข้อความบน Canvas (I57508) - นำ
modifierElementOf()
API ออกแล้ว โปรดขยายเวลาจากModifierNodeElement
โดยตรงแทน (Ie6d21)
แก้ไขข้อบกพร่อง
- การปรับแฮนเดิลการเลือกจะไม่สามารถเลือกอักขระบางส่วนได้อีกต่อไป (Idedd1)
- แก้ไขข้อขัดข้องเมื่อ ctrl+backspace เป็น
TextField
ว่าง (I0427f, b/244185537)
เวอร์ชัน 1.4.0-beta01
8 กุมภาพันธ์ 2023
ปล่อย androidx.compose.foundation:foundation:1.4.0-beta01
และ androidx.compose.foundation:foundation-layout:1.4.0-beta01
แล้ว เวอร์ชัน 1.4.0-beta01 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- ตั้งแต่เวอร์ชัน 1.3 ได้เพิ่มการผสานรวมความเข้ากันได้กับอีโมจิใน
Text
และTextField
รวมถึงย่อหน้าระดับต่ำลงมา โดยจะเปิดใช้โดยค่าเริ่มต้นเมื่อกำหนดค่าอีโมจิที่ใช้ร่วมกันแล้ว - คุณสามารถกำหนดค่า
EmojiCompat
ในข้อความที่เจาะจงได้โดยใช้PlatformParagraphStyle
การเปลี่ยนแปลง API
- เพิ่มการใช้งานทั่วไปของ
PinnableContainer
API ที่ใช้ในLazyLayouts
ทั้งหมดเพื่อเก็บรักษารายการที่ออกจากการเรียบเรียง แต่ยังคงต้องใช้งานอยู่ (If45a4) PinnableContainer.PinnedHandle.unpin()
เปลี่ยนชื่อเป็นrelease()
(I4667a)
การสนับสนุนภายนอก
- เพิ่มพร็อพเพอร์ตี้
mainAxisItemSpacing
ลงในLazyListLayoutInfo
,LazyGridLayoutInfo
และLazyStaggeredGridItemInfo
(I52fad) แล้ว
เวอร์ชัน 1.4.0-alpha05
25 มกราคม 2023
ปล่อย androidx.compose.foundation:foundation:1.4.0-alpha05
และ androidx.compose.foundation:foundation-layout:1.4.0-alpha05
แล้ว เวอร์ชัน 1.4.0-alpha05 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เพิ่มการรองรับช่วงสายเต็มใน
LazyStaggeredGrid
(I28252) - กำลังเพิ่ม
onHover
แบบทดลองไปยังClickableText
(I6938f) - เปิดตัวโอเวอร์โหลดทดสอบใหม่สำหรับฟังก์ชัน
runComposeUiTest
และฟังก์ชันcreate*ComposeRule
ที่ยอมรับพารามิเตอร์CoroutineContext
บริบทจะใช้สำหรับการเรียบเรียงเพลงและการเรียกLaunchedEffect
และrememberCoroutineScope()
ในการแต่งเพลง (I10614, b/265177763)
การเปลี่ยนแปลง API
- รวม API ก่อน/หลังของ
OverscrollEffect
เป็น "decorator" ที่รวมเข้าด้วยกันapplyToScroll
และapplyToFling
ดูตัวอย่างที่อัปเดตในเอกสารประกอบเพื่อดูตัวอย่างวิธีใช้งานเอฟเฟกต์การเลื่อนเกินด้วยรูปร่าง API ใหม่ (I8a9c4, b/255554340) - ประเภท/ความสามารถในการเว้นว่างที่มากขึ้นของฟังก์ชันในบรรทัด/เลิกใช้งานซึ่งซ่อน (I24f91)
LineBreak
และHyphens
API ในTextStyle
ได้เลื่อนระดับเป็นเวอร์ชันเสถียรแล้ว (Ic1e1d)
แก้ไขข้อบกพร่อง
- เคอร์เซอร์ในช่องข้อความจะยังกะพริบอยู่แม้จะปิดใช้ภาพเคลื่อนไหวก็ตาม (I95e70, b/265177763)
- ตอนนี้
Modifier.basicMarquee
จะเคลื่อนไหวแม้ว่าจะปิดใช้ภาพเคลื่อนไหวในการตั้งค่าระบบ (I23389, b/262298306, b/265177763)
การสนับสนุนภายนอก
- ไม่ได้เลิกใช้งาน
notifyFocusedRect
เมธอดในTextInputSession
และTextInputService
อีกแล้ว (I23a04, b/262648050)
เวอร์ชัน 1.4.0-alpha04
11 มกราคม 2023
ปล่อย androidx.compose.foundation:foundation:1.4.0-alpha04
และ androidx.compose.foundation:foundation-layout:1.4.0-alpha04
แล้ว เวอร์ชัน 1.4.0-alpha04 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
FlowRow
และFlowColumn
พร้อมใช้งานเป็น@ExperimentalFoundationApi
แล้ว ซึ่งอนุญาตให้มีเลย์เอาต์ของคอมโพเนนต์ตามแถวและคอลัมน์ที่ยืดหยุ่นมากขึ้น ซึ่งจะแบ่งเป็นบรรทัดใหม่หากแกนหลักมีพื้นที่ไม่เพียงพอ (I3a7b2)Modifier.basicMarquee()
พร้อมใช้งานเป็นเวอร์ชันทดลองสำหรับการแสดงเนื้อหาที่มีเอฟเฟกต์เส้นมาร์คีเลื่อน (I2df44, b/139321650)
การเปลี่ยนแปลง API
FocusRequesterModifier
FocusRequesterNode
- เครื่องมือสร้าง
AndroidFont
ที่มีvariationSettings
เป็น API ที่เสถียรแล้วในตอนนี้ และใช้เพื่อสร้างข้อบ่งชี้แบบอักษรประเภทใหม่ๆ ได้ (I5adcc, b/261565807) - เปิดตัว API
PinnableContainer
ที่เผยแพร่โดยรายการแบบ Lazy Loading ผ่านการเรียบเรียงเพลงในเครื่องที่อนุญาตให้ปักหมุดรายการปัจจุบัน ซึ่งหมายความว่าระบบจะไม่กำจัดรายการดังกล่าวเมื่อเลื่อนออกจากมุมมอง ตัวอย่างเช่นModifier.focusable()
จะปักหมุดรายการที่โฟกัสปัจจุบันผ่านกลไกนี้ (Ib8881, b/259274257, b/195049010) - ปรับเปลี่ยนวิธีที่การเลื่อนได้ตอบสนองต่อ
bringIntoViewRequesters
และการโฟกัสได้ เพื่อสร้างแบบจำลองความซับซ้อนของการดำเนินการเหล่านั้นให้ดียิ่งขึ้นและจัดการกับกรณีที่เป็นปัญหาจับต้องได้อื่นๆ เพิ่มเติม (I2e5fe, b/241591211, b/192043120, b/237190748, b/230756508, b/239451114) - ประเภทการแสดงผลเพิ่มเติมของฟังก์ชันที่ซ่อนซึ่งเลิกใช้งานแล้ว (Ibf7b0)
- เพิ่ม
TextMotion
แบบทดลองลงในTextStyle
เพื่อกำหนดข้อความเป็นStatic(default)
หรือเป็นภาพเคลื่อนไหว ใช้TextMotion.Animated
หากข้อความจะมีการปรับขนาด แปล หรือหมุนผ่านภาพเคลื่อนไหว (I24dd7) - เพิ่ม
TextFieldFocusModifier
เพื่อแก้ไขพฤติกรรมการไปยังส่วนต่างๆ แบบโฟกัสสำหรับแพลตฟอร์ม Android (I00303) - แทนที่อาร์กิวเมนต์
maxSize: IntSize
ในdrawText
ด้วยsize: Size
ให้สอดคล้องกับฟังก์ชันDrawScope
อื่นๆ แล้วsize
ได้รับการตั้งค่าเป็นSize.Unspecified
โดยค่าเริ่มต้น ซึ่งไม่ควรเปลี่ยนลักษณะการทำงานเริ่มต้นก่อนหน้า (Icd27d)
แก้ไขข้อบกพร่อง
- การปรับฟิสิกส์การสแนปใน
SnapFlingBehaviour
เพื่อให้รู้สึกเป็นธรรมชาติยิ่งขึ้น
ปัญหาที่ทราบ
- เมื่ออัปเดตจาก
androidx.compose.foundation:1.4.0-alpha03
เป็นandroidx.compose.foundation:1.4.0-alpha04
คุณอาจพบข้อผิดพลาดjava.lang.NoSuchFieldError
มีการรายงานปัญหานี้ที่นี่ ส่งการแก้ไขแล้ว และจะพร้อมให้ใช้งานในการอัปเดต Compose ครั้งถัดไป เพื่อเป็นการหลีกเลี่ยงปัญหา โปรดอัปเดตไลบรารีandroidx.compose.material
และandroidx.compose.material3
เป็นเวอร์ชันล่าสุด(1.1.0-alpha04) หรือดาวน์เกรดandroidx.compose.foundation
เป็น 1.4.0-alpha03
เวอร์ชัน 1.4.0-alpha03
7 ธันวาคม 2022
ปล่อย androidx.compose.foundation:foundation:1.4.0-alpha03
และ androidx.compose.foundation:foundation-layout:1.4.0-alpha03
แล้ว เวอร์ชัน 1.4.0-alpha03 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ในการทดสอบ UI โดยใช้กฎการเขียน ระบบจะไม่ส่งความต่อเนื่องที่ดำเนินการต่อในระหว่าง Callback
withFrameNanos
จนกว่า Callback ของเฟรมทั้งหมดจะทำงานเสร็จสิ้น ซึ่งจะตรงกับลักษณะการทำงานของการเขียนเมื่อทำงานตามปกติ อย่างไรก็ตาม การทดสอบที่อิงตามลักษณะการทำงานแบบเดิมอาจล้มเหลว การดำเนินการนี้ควรส่งผลกับโค้ดที่เรียกใช้withFrameNanos
หรือwithFrameMillis
โดยตรงเท่านั้น และมีตรรกะนอก Callback ที่ส่งผ่านไปยังฟังก์ชันเหล่านั้นซึ่งอาจต้องย้ายภายใน Callback ดูการเปลี่ยนแปลงในการทดสอบภาพเคลื่อนไหวในตัวอย่าง CL นี้ - เพิ่มพารามิเตอร์
onPerformTraversals: (Long) -> Unit
ที่ไม่บังคับลงในเครื่องมือสร้างTestMonotonicFrameClock
และฟังก์ชันจากโรงงานเพื่อเรียกใช้โค้ดหลัง CallbackwithFrameNanos
รายการ แต่ก่อนที่จะเรียกให้ผู้โทรกลับมาทำงานอีกครั้ง โครูทีน (Idb413, b/254115946, b/222093277, b/255802670) - แนะนำการดำเนินการสำหรับการเข้าถึงหน้าเว็บ:
PageUp
,PageDown
,PageLeft
,PageRight
โปรดทราบว่าข้อมูลเหล่านี้มีใน API 29 เท่านั้น (Ida4ab) - แนะนำ
HorizontalPager
และVerticalPager
ซึ่งเป็นวิธีแสดง Composable ในลักษณะเพจเจอร์ แนะนำPagerState
เพื่อควบคุมเพจเจอร์ รวมถึงข้อมูลข้อความค้นหาเกี่ยวกับสถานะปัจจุบันของเพจเจอร์ ขอแนะนำPageSize
ซึ่งเป็นวิธีควบคุมขนาดหน้าของเพจเจอร์ซึ่งใช้สร้างภาพหมุนได้เหมือนกับเพจเจอร์ เปิดตัวPagerSnapDistance
ซึ่งเป็นวิธีควบคุมการทำงานของการสแนปตามลักษณะการสะบัดของเพจเจอร์ (I01120) - เริ่มใช้โอเวอร์โหลดใน
SnapFlingBehavior.performFling
เพื่อช่วยให้เข้าใจว่าการสะบัดจะคงที่ที่ตำแหน่งใด (I569f6) - นำ
OverscrollEffect#isEnabled
ออกแล้ว แทนที่จะต้องจำและตั้งค่า Flag นี้ เพียงแค่อย่าส่งเหตุการณ์ไปยังเอฟเฟกต์การเลื่อนมากเกินไปในกรณีที่ไม่ต้องการให้แสดงการเลื่อนเกิน (เช่น หากScrollableState#canScrollForward/backward
แสดงค่า "เท็จ" ทั้งคู่) (I1a4b0, b/255554340, b/255557085) - เพิ่ม
ScrollableState#canScrollForward
และScrollableState#canScrollBackward
ลงในการค้นหาว่าScrollableState
มีพื้นที่ว่างสำหรับการเลื่อนในทิศทางใดหรือไม่ (ไม่ว่าจะอยู่ต่ำสุด / สูงสุดของช่วงหรือไม่) ซึ่งจะมีค่าเริ่มต้นเป็น true สำหรับความเข้ากันได้แบบย้อนหลังกับการใช้งานScrollableState
ที่มีอยู่ ผู้บริโภคสามารถใช้เครื่องหมายนี้เพื่อแสดงสัญญาณบอกสถานะให้ผู้ใช้ทราบว่ายังมีพื้นที่ให้เลื่อนได้ และสามารถใช้เพื่อหลีกเลี่ยงการส่งเดลต้าไปยังScrollableStates
ที่ไม่มีที่ว่างให้เลื่อนตามทิศทางที่กำหนด เพื่อลดงานที่ไม่จำเป็น (Idf1a0, b/255557085) - เพิ่ม Modifier API เพื่อค้นหาข้อมูลการเลื่อนระดับบน (I2ba9d, b/203141462)
- ใช้ใน
Clickable
เพื่อหน่วงเวลาการโต้ตอบกับการกดอย่างถูกต้อง เมื่อท่าทางสัมผัสอาจกลายเป็นเหตุการณ์การเลื่อน - แก้ไข
Clickables
ไม่ให้เลื่อน Ripples อย่างถูกต้องเมื่อใช้ภายในScrollable ViewGroup
- ลิ้นชักและชีตที่อัปเดตใหม่เพื่อให้หน่วงเวลาการกดได้อย่างถูกต้องในกรณีที่ท่าทางสัมผัสอาจกลายเป็นเหตุการณ์การเลื่อน
- อัปเดตชื่อของ
snapStepSize
ให้สอดคล้องกับวิธีอื่นในSnapLayoutInfoProvider
(Ife67c) - เพิ่ม
EmojiCompat
ในCompose
(Ibf6f9, b/139326806) แล้ว - เปลี่ยนชื่อ
consumedWindowInsets()
เป็นconsumeWindowInsets()
และwithConsumedWindowInsets()
เป็นonConsumedWindowInsetsChanged()
และทำให้ตัวปรับแต่งเป็นแบบสาธารณะ (Ie44e1)
แก้ไขข้อบกพร่อง
- ข้อขัดข้องที่เกิดขึ้นกับ
Modifier.animateItemPlacement()
และตารางกริดแบบ Lazy ได้รับการแก้ไขแล้ว เหตุการณ์นี้เกิดขึ้นได้ในบางเงื่อนไขเมื่อจํานวนรายการใหม่น้อยกว่ารายการก่อนหน้า (I0bcac, b/253195989)
เวอร์ชัน 1.4.0-alpha02
9 พฤศจิกายน 2022
ปล่อย androidx.compose.foundation:foundation:1.4.0-alpha02
และ androidx.compose.foundation:foundation-layout:1.4.0-alpha02
แล้ว เวอร์ชัน 1.4.0-alpha02 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ตอนนี้
awaitFirstDown
และwaitForUpOrCancellation
ยอมรับPointerEventPass
เพื่อให้มีความยืดหยุ่นมากขึ้น (I7579a, b/212091796) - เปลี่ยนกลับ API ของ
beyondBoundCount
จาก Lazy* API (I12197) - แนะนำพารามิเตอร์ใน Lazy API เพื่อเขียนและวางรายการในวิวพอร์ต (I69e89, b/172029355)
- เพิ่มพารามิเตอร์
minLines
ในBasicText
และBasicTextField
วิธีนี้ช่วยตั้งค่าความสูงขั้นต่ำของ Composable เหล่านี้ในแง่ของ จำนวนสาย (I24294, b/122476634)
เวอร์ชัน 1.4.0-alpha01
24 ตุลาคม 2022
ปล่อย androidx.compose.foundation:foundation:1.4.0-alpha01
และ androidx.compose.foundation:foundation-layout:1.4.0-alpha01
แล้ว เวอร์ชัน 1.4.0-alpha01 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มวิธีการใหม่ "
awaitEachGesture()
" สำหรับตัวตรวจจับท่าทางสัมผัส โดยจะทำงานคล้ายกับforEachGesture()
แต่ท่าทางสัมผัสแบบวนซ้ำจะทำงานทั้งหมดภายในAwaitPointerEventScope
เพื่อไม่ให้เหตุการณ์หายไประหว่างการทำซ้ำ forEachGesture()
เลิกใช้งานแล้วเพื่อใช้awaitEachGesture()
เนื่องจากช่วยให้เหตุการณ์หายไประหว่างท่าทางสัมผัสได้ (Iffc3f, b/251260206)- เพิ่ม
WindowInsets.imeAnimationSourc
e และWindowInsets.imeAnimationTarget
เพื่อกำหนดความคืบหน้าของภาพเคลื่อนไหวและรู้ว่า IME จะอยู่ที่ใดหลังจากเล่นภาพเคลื่อนไหวเสร็จแล้ว (I356f1, b/217770337)
เวอร์ชัน 1.3
เวอร์ชัน 1.3.1
9 พฤศจิกายน 2022
ปล่อย androidx.compose.foundation:foundation:1.3.1
และ androidx.compose.foundation:foundation-layout:1.3.1
แล้ว เวอร์ชัน 1.3.1 มีคอมมิตเหล่านี้
แก้ไขข้อบกพร่อง
- แก้ไขปัญหาด้านประสิทธิภาพใน
BeyondBoundsLayout
(aosp/2255266) ContentInViewModifier
จะไม่อ่านพิกัดของเลย์เอาต์ เว้นแต่จะแนบไว้ (aosp/2241316)
เวอร์ชัน 1.3.0
24 ตุลาคม 2022
ปล่อย androidx.compose.foundation:foundation:1.3.0
และ androidx.compose.foundation:foundation-layout:1.3.0
แล้ว เวอร์ชัน 1.3.0 มีคอมมิตเหล่านี้
การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 1.2.0
- เปิดตัว
LazyVerticalStaggeredGrid
และLazyHorizontalStaggeredGrid
เวอร์ชันทดลอง - ระบบได้เพิ่ม
SnapFlingBehavior
,rememberSnapFlingBehavior
และ API อื่นๆ ที่เกี่ยวข้องเป็นเวอร์ชันทดลอง - ตอนนี้
Modifier.clickable
,Modifier.toggleable
และModifier.selectable
จะแสดงระลอกคลื่นเมื่อคลิกด้วยแป้นพิมพ์หรือ D-pad บนรีโมตคอนโทรล
เวอร์ชัน 1.3.0-rc01
5 ตุลาคม 2022
ปล่อย androidx.compose.foundation:foundation:1.3.0-rc01
และ androidx.compose.foundation:foundation-layout:1.3.0-rc01
แล้ว เวอร์ชัน 1.3.0-rc01 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- แนะนำ
lowVelocityAnimationSpec
ซึ่งใช้โดยขั้นตอนวิธีการเมื่อความเร็วกระพริบไม่เพียงพอสำหรับการเสื่อมสภาพ (Iaeb27) - เพิ่มขีดกลางสั้น API แบบทดลองใหม่เพื่อรองรับการใส่ยัติภังค์อัตโนมัติในข้อความ (Iaa869)
เวอร์ชัน 1.3.0-beta03
21 กันยายน 2022
ปล่อย androidx.compose.foundation:foundation:1.3.0-beta03
และ androidx.compose.foundation:foundation-layout:1.3.0-beta03
แล้ว เวอร์ชัน 1.3.0-beta03 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มตัวเลือกเพื่อปรับแต่งการขึ้นบรรทัดใหม่ในข้อความ (I86907)
- ตอนนี้
BringIntoViewResponder
รับขอบเขตล่าสุดของคำขอได้แล้วขณะที่ประมวลผลคำขอ (If86a5, b/241591211) - แนะนำการรองรับการเว้นวรรคระหว่างรายการกับ
Staggered Grid
(I10b82) เวอร์ชันทดลอง - แนะนำระยะห่างจากขอบของเนื้อหาใน
Staggered Grid
(I342ea) เวอร์ชันทดลอง - เปลี่ยนอาร์กิวเมนต์
size:IntSize
ที่มีconstraints: Constraints
ในเมธอดTextMeasurer.measure
เพื่อรองรับการจำกัดความกว้างขั้นต่ำแล้ว (I37530, b/242707525) - เพิ่ม
Modifier.withConsumedWindowInsets()
เพื่อรับการใช้งานWindowInsets
สำหรับใช้ภายนอกwindowInsetsPadding
- เพิ่ม
MutableWindowInsets
เพื่อให้เปลี่ยนWindowInsets
ได้อย่างง่ายดายโดยไม่ต้องจัดองค์ประกอบใหม่ (I7fd28, b/237019262, b/243119659)
เวอร์ชัน 1.3.0-beta02
7 กันยายน 2022
ปล่อย androidx.compose.foundation:foundation:1.3.0-beta02
และ androidx.compose.foundation:foundation-layout:1.3.0-beta02
แล้ว เวอร์ชัน 1.3.0-beta02 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เวอร์ชันเริ่มต้นของ
StaggeredGrid
เวอร์ชันทดลอง (Ia48be) - เปลี่ยนชื่อ
FocusDirection.In
และFocusDirection.Out
เป็นFocusDirection.Enter
และFocusDirection.Exit
(Ia4262, b/183746982) แล้ว - เปิดตัวโอเวอร์โหลด
rememberSnapFlingBehavior
ซึ่งช่วยให้เปิดใช้การสแนปในLazyLists
ได้อย่างรวดเร็ว (Ifb48a) - แทนที่โรงงาน
snapFlingBehavior
ด้วยคลาสSnapFlingBehavior
ที่เป็นคอนกรีตแล้ว กำหนดขอบเขตเมธอดSnapLayoutInfoProvider
เป็นความหนาแน่นเพื่อทำให้ Conversion Dp<->Px ง่ายขึ้นสำหรับผู้ใช้ API (I54a11) - อัปเดต
LazyLayoutMeasureScope.measure
เพื่อแสดงรายการตำแหน่งที่มีตำแหน่งได้ โดยไฮไลต์ความไม่เปลี่ยนแปลงที่ต้องการของค่าที่ส่งคืน (I48b7c) - แนะนำ
SnapLayoutInfoProvider
ซึ่งใช้LazyListState
ในการสร้างอินสแตนซ์ของSnapLayoutInfoProvider
ที่ใช้เพื่อเปิดใช้สแนปFlingBehavior
สำหรับLazyLists
ได้ (I2dd10)
แก้ไขข้อบกพร่อง
- เปลี่ยนโครงสร้างภายในโค้ด
AwaitPointerEventScope#awaitLongPressOrCancellation
ให้ตรงกับฟังก์ชันอื่นๆ ที่รออยู่ (I646e6)
เวอร์ชัน 1.3.0-beta01
24 สิงหาคม 2022
ปล่อย androidx.compose.foundation:foundation:1.3.0-beta01
และ androidx.compose.foundation:foundation-layout:1.3.0-beta01
แล้ว เวอร์ชัน 1.3.0-beta01 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- นำ
pointerPosition
ออกจากOverscrollEffect
แล้ว - เอฟเฟกต์ที่สนใจเกี่ยวกับตำแหน่งตัวชี้สามารถใช้Modifier.pointerInput { }
ในeffectModifier
เพื่อรับตำแหน่งตัวชี้ปัจจุบันแทน (I9f606, b/241239306) - เปิดเผย
AwaitPointerEventScope#awaitLongPressOrCancellation
เป็นองค์ประกอบที่ใช้สร้างสรรค์เพิ่มเติมสำหรับการตรวจจับท่าทางสัมผัสที่ซับซ้อนยิ่งขึ้น (I04374, b/181577176) - เปิดตัว
lazyListSnapLayoutInfoProvider
เพื่อให้สแนปในรายการแบบ Lazy Loading (I3ecdf) - แนะนำ
SnapFlingBehavior
ซึ่งเป็นลักษณะการทำงานของการสแนปรายการ ระบุอินสแตนซ์ของSnapLayoutInfoProvider
ที่มีข้อมูลเกี่ยวกับเลย์เอาต์การสแนป (Ie754C)
เวอร์ชัน 1.3.0-alpha03
10 สิงหาคม 2022
ปล่อย androidx.compose.foundation:foundation:1.3.0-alpha03
และ androidx.compose.foundation:foundation-layout:1.3.0-alpha03
แล้ว เวอร์ชัน 1.3.0-alpha03 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ตอนนี้ Resource Fonts รองรับการตั้งค่ารูปแบบของแบบอักษร (API 26 ขึ้นไป) แล้ว (I900dd, b/143703328)
- การรองรับแบบอักษรที่ปรับเปลี่ยนได้ในภาษา
DeviceFontFamilyNameFont
(Ic1279, b/143703328) - นำหมายเหตุทดลองออกจาก
PlatformTextStyle
และLineHeightStyle
แล้ว (I64bef) - ตอนนี้ช่องข้อความจะแสดงข้อยกเว้นโดยละเอียดมากขึ้นเมื่อ
OffsetMapping
ที่ระบุโดยVisualTransformation
แสดงผลดัชนีที่ไม่ถูกต้อง (Ie73f9, b/229378536) - เปิดตัว API เวอร์ชันทดลองเพื่อแชร์ตรรกะผู้ให้บริการรายการระหว่างเลย์เอาต์แบบ Lazy Loading (Ic891C)
ScrollableDefaults.reverseDirection()
ไม่ใช่เวอร์ชันทดลองอีกต่อไป (Iba646)- เลิกใช้งาน
SemanticsModifier.id
และย้ายรหัสความหมายไปยังLayoutInfo.semanticsId
แทน (Iac808, b/203559524) checkScrollableContainerConstraints()
ไม่ใช่เวอร์ชันทดลองอีกต่อไป (I2C290)Modifier.clipScrollableContainer()
ไม่ใช่เวอร์ชันทดลองอีกต่อไป (Ia2b44)- เลิกใช้งาน
TextInputService.show|hideSoftwareKeyboard
โปรดใช้SoftwareKeyboardController
แทนในโค้ดของแอปและใช้TextInputSession
ในโค้ดการจัดการ IME (I14e4c, b/183448615)
เวอร์ชัน 1.3.0-alpha02
27 กรกฎาคม 2022
ปล่อย androidx.compose.foundation:foundation:1.3.0-alpha02
และ androidx.compose.foundation:foundation-layout:1.3.0-alpha02
แล้ว เวอร์ชัน 1.3.0-alpha02 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มฟังก์ชันของส่วนขยาย
drawText
ในDrawScope
เพื่อระบุวิธีเขียนข้อความที่มีสไตล์หลากหลายใน Composable และตัวแก้ไขที่ทำงานในDrawScope
เช่นCanvas
และdrawBehind
(I16a62, b/190787898)
แก้ไขข้อบกพร่อง
- ตอนนี้แป้นพิมพ์เสมือนจะซ่อนไปเมื่อมีการปิดใช้ช่องข้อความขณะโฟกัส (I6e3e4, b/237308379)
- เมื่อเพิ่มเหตุการณ์
InputEventChange
ลงในตัวติดตามอัตราความเร็ว ตอนนี้เราจะพิจารณาเดลต้าแทนตำแหน่ง ซึ่งจะรับประกันอัตราความเร็วที่มีการคำนวณอย่างถูกต้องสำหรับทุกกรณีแม้ว่าองค์ประกอบเป้าหมายจะมีการขยับ (Icea9d, b/216582726, b/223440806, b/227709803) - เมื่อเลื่อนได้มีเด็กที่โฟกัสอยู่ ตอนนี้หน้าจอจะเลื่อนได้อย่างถูกต้องเพื่อให้เด็กที่โฟกัสอยู่ในมุมมองเมื่อลดขนาดลง แม้ว่าขนาดจะเป็นภาพเคลื่อนไหวก็ตาม (I80867, b/230756508, b/220119990)
- แก้ไขข้อขัดข้องที่
TextField
ถูกล้างและเติมข้อมูลใหม่ขณะที่เลือกทำงาน (I1235b, b/208655565, b/214253689)
เวอร์ชัน 1.3.0-alpha01
29 มิถุนายน 2022
ปล่อย androidx.compose.foundation:foundation:1.3.0-alpha01
และ androidx.compose.foundation:foundation-layout:1.3.0-alpha01
แล้ว เวอร์ชัน 1.3.0-alpha01 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เปิดตัวประเภทคำอธิบายประกอบ
UrlAnnotation
และวิธีที่เกี่ยวข้องเพื่อรองรับการรองรับลิงก์TalkBack
ในAnnotatedString
วินาที (I1c754, b/231495122)
แก้ไขข้อบกพร่อง
BasicTextField
cursorBrush
อาจเปลี่ยนเป็นภาพเคลื่อนไหวได้โดยไม่ต้องเริ่มตัวจับเวลาเคอร์เซอร์ใหม่ (I812e6, b/236383522)
เวอร์ชัน 1.2
เวอร์ชัน 1.2.1
10 สิงหาคม 2022
ปล่อย androidx.compose.foundation:foundation:1.2.1
และ androidx.compose.foundation:foundation-layout:1.2.1
แล้ว เวอร์ชัน 1.2.1 มีคอมมิตเหล่านี้
เวอร์ชัน 1.2.0
27 กรกฎาคม 2022
ปล่อย androidx.compose.foundation:foundation:1.2.0
และ androidx.compose.foundation:foundation-layout:1.2.0
แล้ว เวอร์ชัน 1.2.0 มีคอมมิตเหล่านี้
การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 1.1.0
LazyVerticalGrid
และLazyHorizontalGrid
มีความเสถียรแล้วตอนนี้- คุณจะระบุประเภทเนื้อหาให้กับรายการต่างๆ ในรายการแบบ Lazy และตารางกริดก็ได้ ซึ่งจะช่วยให้คอมโพเนนต์ต่างๆ นำองค์ประกอบกลับมาใช้ใหม่ได้อย่างมีประสิทธิภาพมากขึ้น
- ตอนนี้รายการแบบ Lazy Loading และตารางกริดมีพารามิเตอร์
userScrollEnabled
แล้ว ซึ่งจะช่วยให้คุณปิดใช้การเลื่อนผ่านท่าทางสัมผัสของผู้ใช้ได้ - เพิ่ม API ทดลองใหม่ที่ชื่อ
LazyLayout
แล้ว โดยเป็น API ที่เราใช้ภายในเพื่อขับเคลื่อนรายการและตารางกริดแบบ Lazy Loading - เปิดตัว
OverscrollEffect
API เป็นเวอร์ชันทดลอง โดยคุณสามารถกำหนดเอฟเฟกต์การเลื่อนเกินที่กำหนดเอง รวมถึงเพิ่มแพลตฟอร์มมาตรฐานลงในคอนเทนเนอร์แบบเลื่อนได้ที่กำหนดเอง - มีการนำ API ความสามารถในการทำงานร่วมกันของการเลื่อนที่ซ้อนกันมาใช้เพื่อช่วยให้สามารถทำงานร่วมกันระหว่างมุมมองและเขียนตัวดำเนินการแบบเลื่อนได้
- มีการเพิ่มการเลื่อนเมาส์และแทร็กแพดลงในคอนเทนเนอร์ที่เลื่อนทั้งหมด
เวอร์ชัน 1.2.0-rc03
29 มิถุนายน 2022
ปล่อย androidx.compose.foundation:foundation:1.2.0-rc03
และ androidx.compose.foundation:foundation-layout:1.2.0-rc03
แล้ว เวอร์ชัน 1.2.0-rc03 มีคอมมิตเหล่านี้
- ไม่มีการเปลี่ยนแปลงตั้งแต่ 1.2.0-rc02
เวอร์ชัน 1.2.0-rc02
22 มิถุนายน 2022
ปล่อย androidx.compose.foundation:foundation:1.2.0-rc02
และ androidx.compose.foundation:foundation-layout:1.2.0-rc02
แล้ว เวอร์ชัน 1.2.0-rc02 มีคอมมิตเหล่านี้
เวอร์ชัน 1.2.0-rc01
15 มิถุนายน 2022
ปล่อย androidx.compose.foundation:foundation:1.2.0-rc01
และ androidx.compose.foundation:foundation-layout:1.2.0-rc01
แล้ว เวอร์ชัน 1.2.0-rc01 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เปิดตัว
OverscrollEffect
เวอร์ชันทดลองเพื่อรองรับเอฟเฟกต์การเลื่อนเกินแบบกำหนดเอง ร่วมกับโอเวอร์โหลดModifier.scrollable
ที่รองรับเอฟเฟกต์ดังกล่าว LocalOverScrollConfiguration
เวอร์ชันทดลองย้ายจากfoundation.gesture
ไปยังแพ็กเกจพื้นฐานและเปลี่ยนชื่อเป็นLocalOverscrollConfiguration
(If19fb, b/204650733)- ตอนนี้อินเทอร์เฟซในไลบรารีการเขียนที่สร้างขึ้นโดยใช้เมธอดอินเทอร์เฟซเริ่มต้น jdk8 (I5bcf1)
- เปิดตัว API เวอร์ชันทดลอง
checkScrollableContainerConstraints()
ซึ่งช่วยให้ตรวจสอบว่าเราไม่ได้ฝังคอนเทนเนอร์ที่เลื่อนได้ คุณสามารถใช้ฟีเจอร์นี้เมื่อสร้างเลย์เอาต์แบบ Lazy Loading ของคุณเองได้ผ่านLazyLayout
(Id6fab, b/233352497) - นำ
LazyVerticalGrid
ที่เลิกใช้งานแล้วออกจากแพ็กเกจandroidx.compose.foundation.lazy
API ที่เสถียรใหม่อยู่ในandroidx.compose.foundation.lazy.grid
(I73c76, b/225192009)
เวอร์ชัน 1.2.0-beta03
1 มิถุนายน 2022
ปล่อย androidx.compose.foundation:foundation:1.2.0-beta03
และ androidx.compose.foundation:foundation-layout:1.2.0-beta03
แล้ว เวอร์ชัน 1.2.0-beta03 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม
IntervalList
และMutableIntervalList
แบบทดลองใหม่ ทำให้สามารถแสดงรายการค่าบางส่วนผ่านช่วงเวลาหลายช่วง ซึ่งจะมีประโยชน์เมื่อคุณต้องการกำหนด dsl ของคุณเองที่คล้ายกับรายการที่LazyColumn
ใช้ ซึ่งสามารถกำหนดรายการผ่านการเรียก item/items ได้หลายรายการ (I2d05e, b/228580728)
แก้ไขข้อบกพร่อง
- ชี้แจงเอกสารประกอบสำหรับ
WindowInsets.ime
เพื่อระบุว่ามีการรายงานชุดเนื้อหาime
ย้อนตั้งแต่ API 23 แต่เป็นภาพเคลื่อนไหวในเวอร์ชัน 30 ขึ้นไปเท่านั้น (Ia7fc0, b/230756508) - การกดแป้นลบไปข้างหน้าเมื่อเคอร์เซอร์อยู่ที่จุดสิ้นสุดของช่องข้อความจะไม่ขัดข้องอีกต่อไป
- ตอนนี้
DeleteSurroundingTextCommand
และDeleteSurroundingTextInCodePointsCommand
กำหนดให้อาร์กิวเมนต์ตัวสร้างเป็นค่าไม่ติดลบ (Ica8e6, b/199919707)
เวอร์ชัน 1.2.0-beta02
18 พฤษภาคม 2022
ปล่อย androidx.compose.foundation:foundation:1.2.0-beta02
และ androidx.compose.foundation:foundation-layout:1.2.0-beta02
แล้ว เวอร์ชัน 1.2.0-beta02 มีการคอมมิตเหล่านี้
- ความละเอียดแบบอักษรที่ดาวน์โหลดได้ที่ไม่เปลี่ยนแปลงขนาดเลย์เอาต์ของข้อความหรือ
TextField
จะไม่วาดซ้ำ ซึ่งส่งผลให้การแสดงแบบอักษรไม่มีการอัปเดต การแก้ไขข้อบกพร่องนี้ช่วยให้มั่นใจว่าเลย์เอาต์ข้อความจะทริกเกอร์การวาดซ้ำเสมอ (b/229727404) (I1d49e, b/229727404)
เวอร์ชัน 1.2.0-beta01
11 พฤษภาคม 2022
ปล่อย androidx.compose.foundation:foundation:1.2.0-beta01
และ androidx.compose.foundation:foundation-layout:1.2.0-beta01
แล้ว เวอร์ชัน 1.2.0-beta01 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- นี่เป็นรุ่นเบต้ารุ่นแรกของ 1.2!
การเปลี่ยนแปลง API
- เพิ่ม
BeyondBoundsInterval
แบบทดลองที่ใช้ได้แล้ว ตามการติดตั้งใช้งานที่กําหนดเองของLazyList
เมื่อเลย์เอาต์รายการอยู่นอกขอบเขตที่มองเห็นได้ (Ifabfb, b/184670295) LineHeightBehavior
เปลี่ยนชื่อเป็นLineHeightStyle
แล้วLineVerticalAlignment
เปลี่ยนชื่อเป็นLineHeightStyle.Alignment
แล้ว- เปลี่ยนชื่อ
LineHeightTrim
เปลี่ยนชื่อเป็นLineHeightStyle.Trim
- นำค่าเริ่มต้นของตัวสร้างจาก
LineHeightStyle
ออกแล้ว (I582bf, b/181155707) - เพิ่มค่าเริ่มต้นสำหรับสมาชิกที่ไม่บังคับของอินเทอร์เฟซ
LazyLayoutItemProvider
(Iba8a0) - ตอนนี้ใน API ของ
LazyLayoutItemProvider
แทนที่จะเป็นโรงงานที่ส่งคืน lambda แบบประกอบได้ด้วยดัชนี ตอนนี้เรามีรายการฟังก์ชันที่ประกอบกันได้ซึ่งง่ายกว่าซึ่งยอมรับดัชนี (รหัส 2196) - LazyLayoutItemsProvider เปลี่ยนชื่อเป็น LazyLayoutItemProvider (I0638c)
LazyLayoutItemsProvider.itemsCount
เปลี่ยนชื่อเป็นitemCount
(Id409c)- เพิ่มแปรงใน
TextStyle
และSpanStyle
เพื่อให้สามารถวาดข้อความด้วยการไล่ระดับสี (I53869, b/187839528) trimFirstLineTop
,trimLastLineBottom
แอตทริบิวต์ของLineHeightBehavior
เปลี่ยนเป็น enum เดียว:LineHeightTrim
LineHeightTrim
มีค่า 4 สถานะที่กำหนดโดยบูลีน 2 ตัว ได้แก่FirstLineTop
,LastLineBottom
, ทั้ง 2 และไม่มี (Ifc6a5, b/181155707)เพิ่ม
LineHeightBehavior
ในTextStyle
และParagraphStyle. LineHeightBehavior
จะควบคุมการใช้ความสูงของบรรทัดกับส่วนบนของบรรทัดแรกและท้ายบรรทัดสุดท้าย และยังกำหนดการจัดแนวเส้นในช่องว่างที่TextStyle
(lineHeight
) จัดเตรียมไว้ให้ตัวอย่างเช่น คุณอาจได้รับพฤติกรรมที่คล้ายกับ CSS กำหนดผ่าน
LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false)
การกำหนดค่า
trimFirstLineTop
,trimLastLineBottom
ทำงานได้อย่างถูกต้อง เฉพาะเมื่อincludeFontPadding
มีค่าเป็น false (I97332, b/181155707)เพิ่มตัวแก้ไข
imeNestedScroll()
แบบทดลองเพื่อให้นักพัฒนาซอฟต์แวร์ควบคุม IME ผ่านการเลื่อนได้ (I60759)
แก้ไขข้อบกพร่อง
- แก้ไขการถดถอยที่ช่องข้อความไม่ซ่อนแป้นพิมพ์เมื่อนำออกจากการเรียบเรียงขณะโฟกัส (I7a410, b/230536793, b/225541817)
- รองรับจุดไข่ปลาเมื่อมีการจำกัดความสูงและไม่พอดีกับบรรทัดข้อความทั้งหมด (Ie528c, b/168720622)
- ตอนนี้
BringIntoViewRequester.bringIntoView
จะระงับใช้จนกว่าคำขอจะเสร็จสมบูรณ์หรือถูกขัดจังหวะโดยคำขอที่ใหม่กว่าที่ไม่ทับซ้อนกัน คำขอที่ทับซ้อนกันจะอยู่ในคิว (I43e7f, b/216790855) - การเรียก
BringIntoViewRequester.bringIntoView
พร้อมกันสำหรับรูปสี่เหลี่ยมผืนผ้าที่ซ้อนทับกันทั้งหมดจะมีผลเฉพาะ คำขอของสี่เหลี่ยมผืนผ้าที่ใหญ่กว่า (I34be7, b/216790855, b/184760918) - เปิด
includeFontPadding
ตามค่าเริ่มต้นแล้ว คุณปิดincludeFontPadding
ได้โดยใช้แอตทริบิวต์TextStyle.platformTextStyle
ส่วนในอนาคตอันใกล้ เราจะเปลี่ยนลักษณะการทำงานเริ่มต้นแต่จนกว่าจะถึงเวลานั้น วิธีนี้จะช่วยให้เราผสานรวมการปรับปรุงความสูงของบรรทัด (aosp/2058653) และแก้ปัญหาการคลิปTextField
ได้ดียิ่งขึ้น (I01423, b/171394808) Modifier.bringIntoViewRequester
ไม่ได้ใช้onGloballyPositioned
แล้ว (I630f5)
การสนับสนุนภายนอก
- ตอนนี้
MouseInjectionScope.scroll(delta = someDelta)
จะกลับสีใน Android หากเราเลื่อนในแนวตั้ง (หาก Delta เป็นบวก จะเลื่อนลง) (Ifb697, b/224992993)
เวอร์ชัน 1.2.0-alpha08
20 เมษายน 2022
ปล่อย androidx.compose.foundation:foundation:1.2.0-alpha08
และ androidx.compose.foundation:foundation-layout:1.2.0-alpha08
แล้ว เวอร์ชัน 1.2.0-alpha08 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- แสดงน้ำหนักที่ใช้ได้ทั้งหมดสำหรับแบบอักษรของระบบใน Android เมื่อใช้
FontFamily.SansSerif
ซึ่งจะใช้ชื่อแบบอักษรสำรอง เช่น sans-serif-medium ภายใน API 21-28 นี่เป็นการเปลี่ยนแปลงลักษณะการทำงานเนื่องจากก่อนหน้านี้ API 21-28 รองรับเฉพาะน้ำหนัก 400 และ 700 เท่านั้น (I380fe, b/156048036, b/226441992) - ตอนนี้ย่อหน้าและหลายย่อหน้ายอมรับพารามิเตอร์ข้อจำกัดแล้ว การส่งผ่าน
Constraints.maxHeight
ยังไม่มีการดำเนินการในขณะนี้ แต่จะอนุญาตให้ ก็ทำการคำนวณบางอย่างในอนาคตได้ด้วย เช่น จุดไข่ปลาตามความสูง (I6afee, b/168720622) - ตอนนี้
SubcomposeSlotReusePolicy.getSlotsToRetain()
ยอมรับคลาสที่เหมือน MutableSet ที่กำหนดเองแล้ว ซึ่งไม่อนุญาตให้เพิ่มรายการใหม่ในชั้นนั้น (Icd314) - เราเลิกใช้งานการใช้งานบางส่วน (ลดลง OR) แล้วใน
PointerInputChange
คุณใช้consume()
เพื่อทำการเปลี่ยนแปลงได้ทั้งหมด คุณสามารถใช้isConsumed
เพื่อดูว่าคนอื่นได้ใช้การเปลี่ยนแปลงก่อนหน้านี้หรือไม่ - ตอนนี้
PointerInputChange::copy()
จะทําสําเนาแบบตื้นเสมอ ซึ่งหมายความว่าระบบจะใช้สำเนาของPointerInputChange
เมื่อเลือกใช้สำเนา 1 ชุด หากต้องการสร้างPointerInputChange
ที่ไม่มีการเชื่อมโยง ให้ใช้ตัวสร้างแทน (Ie6be4, b/225669674) - เปิดตัว API ใหม่ของ
LazyLayout
รุ่นทดลอง ซึ่งจะช่วยให้คุณสร้างคอมโพเนนต์ของคุณเองได้ เช่นLazyColumn
จากLazyVerticalGrid
โปรดทราบว่า API อยู่ในช่วงเริ่มต้น และสามารถเปลี่ยนแปลงได้ในรุ่นต่อๆ ไป (Iba2bc, b/166591700) - ตอนนี้
AndroidFont
จะนำtypefaceLoader
เป็นพารามิเตอร์ตัวสร้าง (I2c971) - ตอนนี้โฆษณาที่แสดงร่วม
WindowInsets
จะแสดงการมองเห็น (ไม่ว่าจะอยู่บนหน้าจอหรือไม่ก็ตาม) และขนาดที่จะปรากฏได้หากพร้อมใช้งานในอุปกรณ์ แต่ยังไม่ได้ใช้งานอยู่ (I65182, b/217770337)
เวอร์ชัน 1.2.0-alpha07
6 เมษายน 2022
ปล่อย androidx.compose.foundation:foundation:1.2.0-alpha07
และ androidx.compose.foundation:foundation-layout:1.2.0-alpha07
แล้ว เวอร์ชัน 1.2.0-alpha07 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม
PinnableParent
API ที่อนุญาตให้บุตรหลานใช้เลย์เอาต์แบบ Lazy Loading เพื่อป้องกันการกำจัดรายการที่เขียนในปัจจุบัน (Ibbdd0, b/184670295) - ตอนนี้
LazyListLayoutInfo
และLazyGridLayoutInfo
มีช่องbeforeContentPadding
และafterContentPadding
(I3b628, b/200920410) - เพิ่ม
KeyboardType.Decimal
เป็นทางเลือกสำหรับKeyboard.Number
สำหรับการรวมตัวคั่นทศนิยมใน IME โดยเฉพาะ (Iec4c8, b/209835363) - เพิ่มแบบอักษรข้อบ่งชี้แบบอักษรใหม่(DeviceFontFamilyName) ไปยัง เลือกค้นหาแบบอักษรที่ระบบติดตั้งในระหว่างห่วงโซ่สำรองแบบอักษร (I30468, b/219754572)
PointerEventType.Scroll
และPointerEvent.scrollDelta
เป็น API ที่เสถียรแล้ว (I574c5, b/225669674)- การกำหนดค่าความเข้ากันได้ชั่วคราวสำหรับ
includeFontPadding
ในTextStyle/ParagraphStyle. includeFontPadding
ที่เพิ่มสามารถเปลี่ยนแปลงได้ผ่านTextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false))
ตัวเลือกนี้เป็นตัวเลือกการกำหนดค่าชั่วคราวเพื่อเปิดใช้การย้ายข้อมูลและจะถูกนำออก (If47be, b/171394808) - อัปเดต
FontFamily.Resolver
เพื่อผสานรวมการตั้งค่าการช่วยเหลือพิเศษสำหรับข้อความเป็นตัวหนาทั้งระบบ (I6c1e7) - พร็อพเพอร์ตี้ส่วนขยาย
consumeWindowInsets
ของComposeView
ช่วยให้นักพัฒนาซอฟต์แวร์ปิดใช้ Android WindowInsets ได้ ซึ่งจะทำให้ComposeViews
ที่แยกกันในลำดับชั้นมีผลกับWindowInsets
แต่ละรายการโดยไม่รบกวนกันและกัน (I0ef08, b/220943142)
เวอร์ชัน 1.2.0-alpha06
23 มีนาคม 2022
ปล่อย androidx.compose.foundation:foundation:1.2.0-alpha06
และ androidx.compose.foundation:foundation-layout:1.2.0-alpha06
แล้ว เวอร์ชัน 1.2.0-alpha06 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มการดำเนินการด้านความหมาย
RequestFocus
เพื่อขอให้โฟกัสที่เป้าหมายที่โฟกัสได้ (I17b71) FocusOrder
ได้รวมกันเป็นFocusProperties
แล้ว และตอนนี้focusProperties()
มีความสามารถทั้งหมดของfocusOrder()
FocusOrder
และfocusOrder()
เลิกใช้งานแล้ว คุณควรแทนที่focusOrder()
ที่ยอมรับfocusRequester
ด้วยตัวแก้ไขfocusRequester()
ร่วมกับfocusProperties()
วิธีนี้ช่วยให้ผู้ปรับแยกข้อกังวลได้ชัดเจนขึ้น (I601b7)- เพิ่ม
WindowInsets.asPaddingValues(Density)
แล้วเพื่ออนุญาตให้นักพัฒนาซอฟต์แวร์แปลงได้โดยไม่จำเป็นต้องเขียนเนื้อหา (I94c35) - อัปเดตการแยกวิเคราะห์ของเวกเตอร์ที่ถอนออกได้เพื่อรองรับการมิเรอร์อัตโนมัติ เพื่อพลิกเนื้อหาของ
VectorPainter
หากเลย์เอาต์ปัจจุบัน คือขวาไปซ้าย (I79cd9, b/185760237)
แก้ไขข้อบกพร่อง
- ตอนนี้ตัวแก้ไขการเลื่อน (
Modifier.verticalScroll()
,Modifier.horizontalScroll()
และModifier.scrollable()
) จะเลื่อนเพื่อให้ Composable ที่โฟกัสมองเห็นได้หากมีการปรับขนาดพื้นที่การเลื่อนและมองเห็น Composable ที่โฟกัสไว้ก่อนหน้านี้ - ตอนนี้ฟิลด์ข้อความจะเก็บไว้ด้านบนแป้นพิมพ์เมื่อโฟกัสและมีการแสดงแป้นพิมพ์ เมื่ออยู่ภายในแบบเลื่อนไม่ได้แบบ Lazy Loading และโหมดการป้อนข้อมูลแบบซอฟต์คือ
ADJUST_RESIZE
(I4a485, b/190539358, b/192043120, b/216842427)
เวอร์ชัน 1.2.0-alpha05
9 มีนาคม 2022
ปล่อย androidx.compose.foundation:foundation:1.2.0-alpha05
และ androidx.compose.foundation:foundation-layout:1.2.0-alpha05
แล้ว เวอร์ชัน 1.2.0-alpha05 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ขณะนี้
LazyVerticalGrid
และLazyHorizontalGrid
มีความเสถียรแล้ว (I307c0) LazyGridItemInfo.Unknown
ถูกแทนที่ด้วยLazyGridItemInfo.UnknownRow
และLazyGridItemInfo.UnknownColumn
แยกกัน (I56d51)LazyVerticalGrid
/LazyHorizontalGrid
และ API ที่เกี่ยวข้องทั้งหมดถูกย้ายไปยังแพ็กเกจย่อย.grid
แล้ว โปรดอัปเดตการนำเข้าจากandroidx.compose.foundation.lazy
ไปยังandroidx.compose.foundation.lazy.grid
(I2d446, b/219942574)- ข้อความ:
includeFontPadding
จะปิดอยู่โดยค่าเริ่มต้น ปัญหาการคลิปที่เกิดจากincludeFontPadding=false
ได้รับการจัดการแล้ว และไม่ควรสร้างคลิปสำหรับสคริปต์แบบยาว (I31c84, b/171394808) - อินเทอร์เฟซที่วัดได้จะแสดงพร็อพเพอร์ตี้ parentData (I3313f)
- เปิดตัว
Modifier.onFocusedBoundsChanged
เวอร์ชันทดลองเพื่อให้ โดยสังเกตขอบเขตของสิ่งที่เด็กๆ โฟกัสได้ (I14283, b/220030968, b/190539358, b/192043120, b/216842427) - เพิ่ม LazyHorizontalGrid แล้ว (I61ae7, b/191238807)
- เพิ่ม API ของ
LazyVerticalGrid
ใหม่เพื่อกำหนดขนาดของแกนไขว้ (I17723) - เพิ่มตัวปรับแต่ง FocusGroup แล้ว (I64bc0, b/213508274, b/184670295)
แก้ไขข้อบกพร่อง
- ตอนนี้
WindowInsets.toString()
จะแสดงค่าที่ถูกต้อง (I1585D)
การสนับสนุนภายนอก
- อัปเดตเพื่อใช้ Kotlinx coroutines 1.6.0 (I3366d)
เวอร์ชัน 1.2.0-alpha04
23 กุมภาพันธ์ 2022
ปล่อย androidx.compose.foundation:foundation:1.2.0-alpha04
และ androidx.compose.foundation:foundation-layout:1.2.0-alpha04
แล้ว เวอร์ชัน 1.2.0-alpha04 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ไม่จำเป็นต้องใช้
BringIntoViewResponders
ในการทำสิ่งต่างๆ ด้วยตนเองแล้ว ส่งคำขอไปยังผู้ตอบที่เป็นผู้ปกครอง และจำเป็นต้องดำเนินการ ส่งคืนสี่เหลี่ยมผืนผ้าที่ต้องการให้ผู้ปกครองนำไปทันที ให้ได้เห็น (I8e66a) - รองรับการโหลดแบบอักษรแบบไม่พร้อมกันในข้อความ (I77057, b/214587005)
- ตอนนี้
LazyVerticalGrid
รองรับline breaking
ก่อนรายการที่มีช่วงที่ไม่พอดีกับบรรทัดปัจจุบัน (I05c40, b/207462103) - เปลี่ยนชื่อ
excludeFromSystemGestures
เป็นsystemGesturesExclusion
(I19526) แล้ว LazyVerticalGrid
รองรับ ReverseLayout แล้ว (I6d7d7, b/215572963, b/211753558)- เพิ่มเมธอด
WindowInsets.only()
เพื่ออนุญาตให้นักพัฒนาซอฟต์แวร์ ให้รวมเฉพาะมิติข้อมูลจาก WindowInsets (I14c94, b/217768486) เพิ่ม
ComposableTarget
,ComposableTargetMarker
และComposableOpenTarget
ที่อนุญาตการรายงานเวลาคอมไพล์เมื่อ ฟังก์ชันที่ประกอบกันได้เรียกว่าการกำหนดเป้าหมายไปยังแอปพลิเคชันซึ่งไม่ใช่ ที่ออกแบบมาเพื่อใช้ในกรณีส่วนใหญ่ คำอธิบายประกอบสามารถอนุมานได้โดยผู้ประพันธ์ ปลั๊กอินคอมไพเลอร์ ดังนั้นการใช้คำอธิบายประกอบเหล่านี้โดยตรงควร หายาก กรณีที่ไม่สามารถอนุมานได้ ได้แก่ การสร้างและ โดยใช้ฟังก์ชัน Composable เชิงนามธรรมที่นำไปใช้ที่กำหนดเอง (เช่น เมธอดของอินเทอร์เฟซ) ฟิลด์ หรือตัวแปรร่วมที่ lambda แบบประกอบได้ (การอนุมานตัวแปรและพารามิเตอร์ในเครื่อง) หรือเมื่อใช้
ComposeNode
หรือฟังก์ชัน Composable ที่เกี่ยวข้องสำหรับผู้ใช้ที่กำหนดเอง ฟังก์ชันที่ประกอบกันได้ซึ่งเรียกใช้
ComposeNode
หรือReusableComposeNode
ต้องเพิ่ม คำอธิบายประกอบCompoableTarget
สำหรับฟังก์ชันและฟังก์ชัน ประเภทพารามิเตอร์ lambda ที่ประกอบกันได้ อย่างไรก็ตาม เราขอแนะนำว่า เพื่อสร้างคำอธิบายประกอบที่มีคำอธิบายประกอบComposableTargetMarker
จากนั้นจะมีการใช้คำอธิบายประกอบที่ทำเครื่องหมายไว้ แทนComposableTarget
โดยตรง คำอธิบายประกอบที่ประกอบกันได้ ทำเครื่องหมายด้วยComposableTargetMarker
เทียบเท่ากับComposbleTarget
ด้วยชื่อที่สมบูรณ์ในแอตทริบิวต์ เป็นพารามิเตอร์ที่เกี่ยวข้อง ตัวอย่างเช่นComposableTargetMarker
ดูanroidx.compose.ui.UiComposable
(I38f11)
แก้ไขข้อบกพร่อง
- ขณะนี้ได้รับอนุญาตให้ส่งผ่านค่าออฟเซ็ตการเลื่อนเชิงลบไปยัง
LazyGridState.scrollToItem()
และLazyGridState.animateScrollToItem()
(I025c6, b/211753558) - สนับสนุนการโหลดแบบอักษรแบบไม่พร้อมกันสำหรับ TextField (Icc4bf, b/214587005)
เวอร์ชัน 1.2.0-alpha03
9 กุมภาพันธ์ 2022
ปล่อย androidx.compose.foundation:foundation:1.2.0-alpha03
และ androidx.compose.foundation:foundation-layout:1.2.0-alpha03
แล้ว เวอร์ชัน 1.2.0-alpha03 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
notifyFocusedRect
วิธีในTextInputSession
และTextInputService
เลิกใช้งานแล้วและจะไม่มีการเรียกใช้ ใช้BringIntoViewRequester
แทน (Ia4302, b/192043120, b/216842427, b/178211874)- เปิดใช้ภาพเคลื่อนไหวสำหรับรายการตารางกริดแบบ Lazy Loading ด้วย Modifier.animateItemplacement() (Ib6621, b/211753218)
BringIntoViewRequester
เผยแพร่คำขอไปยังโฮสติ้งแล้ว Android View (Ia7a51)FontFamilyResolver
พร้อมให้บริการแล้วผ่าน วันที่LocalFontFamilyResolver.current
- เพิ่ม
createFontFamilyResolver(context)
และcreateFontFamilyResolver(context, coroutineScope)
เพื่อสร้างรายการใหม่ รีโซลเวอร์ FontFamily ที่อยู่นอกการใช้งานการเขียน - ตอนนี้การใช้ย่อหน้าและย่อหน้าหลายย่อหน้าใช้เวลา
FontFamily.Resolver
- ขณะนี้
TextLayoutResult.layoutInput.fontFamilyResolver
มี รีโซลเวอร์ที่ใช้สำหรับเลย์เอาต์นี้ เลิกใช้งานแล้วTextLayoutResult.layoutInput.resourceLoader
เนื่องจากไม่มีการใช้งานแล้ว (Id5a45, b/174162090)
- เพิ่ม
- เพิ่ม
AndroidFont
ซึ่งเป็น API ใหม่ระดับล่างสำหรับการระบุประเภทใหม่ๆ ของตัวบอกทรัพยากรแบบอักษรใน Android เช่น กำลังโหลดแบบอักษรจาก แบ็กเอนด์เฉพาะแอป โดยจะค้นหาแบบอักษรที่ติดตั้งไว้ล่วงหน้า (ไม่บังคับ) ในอุปกรณ์ หรือการโหลดแบบอักษรจากทรัพยากรที่ไม่ได้ระบุไว้ในปัจจุบัน โรงงานแบบอักษร- ขยาย API ของ
Font.ResourceLoaded
เพื่อรองรับแบบไม่บังคับและไม่พร้อมกัน กำลังโหลดแบบอักษร ไม่แนะนำให้นักพัฒนาแอปพลิเคชันใช้ API ได้โดยตรง หากต้องการเพิ่มแบบอักษรประเภทใหม่ โปรดดู AndroidFont Font.AndroidResourceLoader
ฟังก์ชันของส่วนขยายทำให้ การสร้างFont.ResourceLoader
เมื่ออยู่นอกองค์ประกอบ- เพิ่มพารามิเตอร์
loadingStrategy
ลงในแบบอักษรที่อิงตามทรัพยากรแล้วเพื่ออนุญาต การโหลดแบบไม่พร้อมกันเมื่อแบบอักษรของทรัพยากรอ้างอิง XML แบบอักษรที่ดาวน์โหลดได้ (Ie5aea, b/174162090)
- ขยาย API ของ
- เลิกใช้งานตัวสร้าง
Typeface(FontFamily)
แล้ว นี่คือ ที่ใช้ก่อนหน้านี้เพื่อโหลดแบบอักษรล่วงหน้า ซึ่งอาจใช้เวลาถึง 10 วินาที แบบอักษรที่ดาวน์โหลดได้ หากใช้แบบอักษรที่ดาวน์โหลดได้ การเรียกนี้อาจบล็อกเป็นเวลา 10 วินาที โปรดใช้FontFamilyResolver.preload
แทนfontResource(FontFamily): Typeface
เลิกใช้งานแล้ว นี่คือ ที่ใช้ก่อนหน้านี้เพื่อโหลดแบบอักษรล่วงหน้า ซึ่งอาจใช้เวลาถึง 10 วินาที แบบอักษรที่ดาวน์โหลดได้ โปรดใช้FontFamilyResolver.preload
แทน (If8e7c, b/174162090)
- คุณระบุประเภทเนื้อหาสำหรับรายการของ
LazyVerticalGrid
สำหรับฟังก์ชัน item/items ในLazyGridScope
ยอมรับพารามิเตอร์ดังกล่าวได้แล้ว การให้ข้อมูลดังกล่าวจะช่วยให้ระบบใช้ตรรกะในการจัดองค์ประกอบรายการซ้ำได้ ทำให้มีประสิทธิภาพมากขึ้น และใช้เฉพาะเนื้อหาระหว่างรายการที่คล้ายคลึงกันเท่านั้น (I7b355, b/215372836) - ตอนนี้
LazyListLayoutInfo
และLazyGridLayoutInfo
มีพร็อพเพอร์ตี้ใหม่ ได้แก่viewportSize
,orientation
,reverseLayout
(Ifc8ed, b/200920410) - คุณระบุประเภทเนื้อหาสําหรับรายการ LazyColumn/LazyRow ได้แล้ว โดยฟังก์ชันรายการ/รายการใน LazyListScope จะยอมรับพารามิเตอร์ดังกล่าวได้แล้ว การให้ข้อมูลดังกล่าวจะช่วยให้ระบบใช้ตรรกะในการจัดองค์ประกอบรายการซ้ำได้ เพื่อเพิ่มประสิทธิภาพให้มีประสิทธิภาพมากขึ้น และใช้เฉพาะเนื้อหาระหว่างรายการต่างๆ ที่คล้ายคลึงกันเท่านั้น (I26506)
- เลิกใช้งานตัวสร้าง
SubcomposeLayoutState
ที่ยอมรับmaxSlotsToRetainForReuse
แล้ว แต่มีตัวสร้างใหม่ที่ยอมรับSubcomposeSlotReusePolicy
- อินเทอร์เฟซใหม่ที่ช่วยให้ควบคุมช่องได้ละเอียดยิ่งขึ้นว่าควรเก็บรักษาสล็อตใดไว้ใช้ซ้ำในอนาคต (I52c4d) - เพิ่มตัวปรับแต่งสำหรับ WindowInsets ทั้งเพื่อระยะห่างจากขอบ และการปรับขนาด ซึ่งทำให้เนื้อหาบางส่วนขยายออกไปในพื้นที่ และยังคงมีเนื้อหาหลักอยู่นอกพื้นที่โดยรอบ ตัวอย่างเช่น windowInsetsPadding อาจใช้เพื่อแพดเนื้อหา เพื่อหลีกเลี่ยงพื้นที่ที่อาจครอบคลุมเต็มหรือบางส่วน (Id0395, b/213942085)
แก้ไขข้อบกพร่อง
- ตอนนี้ฟิลด์ข้อความจะถูกเก็บไว้ด้านบนแป้นพิมพ์
โฟกัสและแป้นพิมพ์แสดงอยู่ เมื่ออยู่ในโหมดการป้อนข้อมูลแบบซอฟต์
ADJUST_PAN
(I8eaeb, b/190539358, b/192043120) - เดสก์ท็อปใช้การเรียบเรียงในเครื่องสำหรับ
FontFamily.Resolver
FontLoader
สำหรับเดสก์ท็อปเลิกใช้งานแล้ว- โรงงาน
createFontFamilyResolver
ใหม่บนเดสก์ท็อป (I6bbbb, b/174162090)
- ประเภทการป้อนข้อมูลด้วยแป้นพิมพ์ไม่กะพริบอีกต่อไปเมื่อเปลี่ยน โฟกัสระหว่างช่องข้อความ (I1bf50, b/187746439)
- ช่องข้อความไม่ต้องกดย้อนกลับเพิ่มเติมเมื่อ แฮนเดิลเคอร์เซอร์แสดงอยู่ (Ideb4b, b/205726883)
- ปรับแต่งลักษณะการทำงานของแว่นขยายการเลือกข้อความเป็น ตรงกับแว่นขยายแพลตฟอร์ม (Idd918, b/206833278)
เวอร์ชัน 1.2.0-alpha02
26 มกราคม 2022
ปล่อย androidx.compose.foundation:foundation:1.2.0-alpha02
และ androidx.compose.foundation:foundation-layout:1.2.0-alpha02
แล้ว เวอร์ชัน 1.2.0-alpha02 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม
NonRestartableComposable
ในเมธอดที่โอเวอร์โหลด ของวิธีการที่มีอยู่โดยไม่ต้องใช้ตรรกะที่ซับซ้อน วิธีนี้ช่วยลดคอมไพเลอร์ การตรวจสอบบันทึกที่สร้างขึ้น (เท่ากับ) สำหรับพารามิเตอร์ทั้งหมดที่ เกิดขึ้นซ้ำๆ ในฟังก์ชันภายในที่ถูกเรียก (I90490) - เพิ่มตัวปรับแต่ง
excludeFromSystemGesture
รายการสำหรับ เข้าถึงsetSystemGestureExclusionRects
ของ Android (I46f07) ได้ง่าย
แก้ไขข้อบกพร่อง
- ปรับแต่งลักษณะการทำงานของแว่นขยายการเลือกข้อความเป็น ตรงกับแว่นขยายแพลตฟอร์ม (Idd918, b/206833278)
LazyColumn
,LazyRow
,Modifier.verticalScroll
และคอนเทนเนอร์อื่นๆ ที่ใช้Modifier.scrollable
รองรับการเลื่อนล้อเลื่อนของเมาส์แล้ว (I2b5e1, b/198214718)
เวอร์ชัน 1.2.0-alpha01
12 มกราคม 2022
ปล่อย androidx.compose.foundation:foundation:1.2.0-alpha01
และ androidx.compose.foundation:foundation-layout:1.2.0-alpha01
แล้ว เวอร์ชัน 1.2.0-alpha01 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มพารามิเตอร์ใหม่
userScrollEnabled
ในLazyColumn
,LazyRow
และLazyVerticalGrid
เพื่ออนุญาตให้ผู้ใช้ปิดใช้การเลื่อนผ่านท่าทางสัมผัสการแตะหรือการช่วยเหลือพิเศษเป็นการชั่วคราวหรือถาวร อย่างไรก็ตาม ระบบจะยังคงอนุญาตให้เลื่อนผ่านเมธอดในสถานะแบบเป็นโปรแกรมได้ (I7eae9, b/201150093) - เพิ่ม Callback
onSizeChanged
ไปยังตัวแก้ไขแว่นขยาย (I6879f) - ตอนนี้วิดเจ็ตแว่นขยายจะแสดงขึ้นเมื่อลากการเลือก
ใน
SelectionContainer
(I30b38, b/139320979)
แก้ไขข้อบกพร่อง
- แก้ไขแฮนเดิลเคอร์เซอร์
TextField
ที่ไม่ได้ซ่อนเมื่อเลื่อนออกจาก (I14552, b/208883748)
การอัปเดตการขึ้นต่อกัน
- ตอนนี้ขึ้นอยู่กับ
1.6.10
ของ Kotlin
เวอร์ชัน 1.1
เวอร์ชัน 1.1.1
23 กุมภาพันธ์ 2022
ปล่อย androidx.compose.foundation:foundation:1.1.1
และ androidx.compose.foundation:foundation-layout:1.1.1
แล้ว เวอร์ชัน 1.1.1 มีคอมมิตเหล่านี้
แก้ไขข้อบกพร่อง
- แก้ไข
NullPointerException
ที่androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList
(aosp/1947059, b/206677462) - แก้ไขข้อขัดข้องที่เกิดจากเนื้อหาในคลิปบอร์ดขณะอ่านจาก คลิปบอร์ดใน Android (I06020, b/197769306)
- RTL แบบคงที่ใน
LazyVerticalGrid
(aosp/1931080, b/207510535)
เวอร์ชัน 1.1.0
9 กุมภาพันธ์ 2022
ปล่อย androidx.compose.foundation:foundation:1.1.0
และ androidx.compose.foundation:foundation-layout:1.1.0
แล้ว เวอร์ชัน 1.1.0 มีคอมมิตเหล่านี้
การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 1.0.0
- การรองรับที่เสถียรสําหรับเอฟเฟกต์การเลื่อนเกินของ Android 12
- การปรับปรุงการปรับขนาดเป้าหมายการสัมผัส
- โปรดทราบว่าในส่วน Compose 1.0 คอมโพเนนต์ Material จะขยายพื้นที่เลย์เอาต์เพื่อให้เป็นไปตามหลักเกณฑ์การช่วยเหลือพิเศษของ Material สำหรับขนาดเป้าหมายการสัมผัส ตัวอย่างเช่น เป้าหมายการสัมผัสปุ่มจะขยายเป็นขนาดขั้นต่ำ 48x48dp แม้ว่าคุณจะตั้งค่าขนาดของปุ่มให้เล็กลงก็ตาม การทำเช่นนี้ช่วยจัดองค์ประกอบใน Compose ให้เหมือนกับคอมโพเนนต์ดีไซน์ Material ซึ่งมีลักษณะการทำงานที่สอดคล้องกันหากใช้มุมมองและการเขียนผสมกัน การเปลี่ยนแปลงนี้ยังช่วยให้มั่นใจว่าเมื่อคุณสร้าง UI โดยใช้คอมโพเนนต์ Compose Material แล้ว จะเป็นไปตามข้อกำหนดขั้นต่ำสำหรับการช่วยเหลือพิเศษเป้าหมายการสัมผัส
- การสนับสนุนเสถียรสำหรับรางนำทาง
- เปลี่ยน API ที่ทดลองใช้ก่อนหน้านี้จำนวนหนึ่งไปใช้เวอร์ชันเสถียร
- การรองรับสำหรับ Kotlin เวอร์ชันใหม่
เวอร์ชัน 1.1.0-rc03
26 มกราคม 2022
ปล่อย androidx.compose.foundation:foundation:1.1.0-rc03
และ androidx.compose.foundation:foundation-layout:1.1.0-rc03
แล้ว เวอร์ชัน 1.1.0-rc03 มีคอมมิตเหล่านี้
แก้ไขข้อบกพร่อง
- อัปเดตเพื่อสนับสนุน Compose Material 1.1.0-rc03
เวอร์ชัน 1.1.0-rc01
15 ธันวาคม 2021
ปล่อย androidx.compose.foundation:foundation:1.1.0-rc01
และ androidx.compose.foundation:foundation-layout:1.1.0-rc01
แล้ว เวอร์ชัน 1.1.0-rc01 มีคอมมิตเหล่านี้
แก้ไขข้อบกพร่อง
- ขณะนี้ได้รับอนุญาตให้ส่งผ่านค่าออฟเซ็ตการเลื่อนเชิงลบไปยัง
LazyListState.scrollToItem()
และLazyListState.animateScrollToItem()
(Iceb90, b/184252837) - แก้ไขข้อบกพร่องที่ทำให้การเลื่อนการช่วยเหลือพิเศษหายไป (I7cbfb)
เวอร์ชัน 1.1.0-beta04
1 ธันวาคม 2021
ปล่อย androidx.compose.foundation:foundation:1.1.0-beta04
และ androidx.compose.foundation:foundation-layout:1.1.0-beta04
แล้ว เวอร์ชัน 1.1.0-beta04 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- อัปเดตให้เข้ากันได้กับ Kotlin
1.6.0
การเปลี่ยนแปลง API
- ล้างข้อมูลความสามารถในการเว้นว่างใน
androidx.core.view
(I7078a, b/204917439) - มีการเพิ่ม API ทดลองที่อนุญาตให้ใช้ PointerInputchange ทั้งหมดหรือตรวจสอบว่ามีการใช้ PointerInputchange ไปแล้วหรือไม่ (I2e59d)
- แสดงวิดเจ็ตแว่นขยายเมื่อลากเคอร์เซอร์ หรือ แฮนเดิลสำหรับเลือกภายในช่องข้อความ (I5391e, b/203781358)
แก้ไขข้อบกพร่อง
- แก้ไขแฮนเดิลข้อความไม่ย้ายเมื่อมีการเปลี่ยนแปลงการเปิดเผย IME (I25f2e)
เวอร์ชัน 1.1.0-beta03
17 พฤศจิกายน 2021
ปล่อย androidx.compose.foundation:foundation:1.1.0-beta03
และ androidx.compose.foundation:foundation-layout:1.1.0-beta03
แล้ว เวอร์ชัน 1.1.0-beta03 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มการรองรับช่วงแนวนอนใน LazyVerticalGrid แล้ว (I7e2fa, b/176758183)
เพิ่มความสามารถในการทำให้ตำแหน่งรายการแบบ Lazy Loading เป็นภาพเคลื่อนไหวได้แล้ว มีแป้นกดร่วมใหม่ชื่อ
Modifier.animateItemPlacement()
ใน LazyItemScope ตัวอย่างการใช้งาน:var list by remember { mutableStateOf(listOf("A", "B", "C")) } LazyColumn { item { Button(onClick = { list = list.shuffled() }) { Text("Shuffle") } } items(list, key = { it }) { Text("Item $it", Modifier.animateItemPlacement()) } }
- เมื่อคุณระบุคีย์ผ่าน
LazyListScope.item
หรือLazyListScope.items
ตัวแก้ไขนี้จะเปิดใช้การจัดเรียงภาพเคลื่อนไหวใหม่ นอกจากการจัดเรียงรายการใหม่ทั้งหมดที่การเปลี่ยนแปลงตำแหน่งอื่นๆ ทั้งหมดซึ่งเกิดจากเหตุการณ์ต่างๆ เช่น การเปลี่ยนแปลงการจัดเรียงหรือการจัดแนวก็จะเป็นภาพเคลื่อนไหวเช่นกัน (I59e7b, b/150812265)
- เมื่อคุณระบุคีย์ผ่าน
เวอร์ชัน 1.1.0-beta02
3 พฤศจิกายน 2021
ปล่อย androidx.compose.foundation:foundation:1.1.0-beta02
และ androidx.compose.foundation:foundation-layout:1.1.0-beta02
แล้ว เวอร์ชัน 1.1.0-beta02 มีการคอมมิตเหล่านี้
แก้ไขข้อบกพร่อง
- ตอนนี้ Ripples และสัญญาณบอกสถานะอื่นๆ จะล่าช้าก็ต่อเมื่ออยู่ในคอนเทนเนอร์
Modifier.scrollable()
แทนที่จะล่าช้าอยู่เสมอสำหรับเหตุการณ์ดาวน์ (Ibefe0, b/203141462) - เพิ่ม BringIntoView API เวอร์ชันทดลองที่ให้คุณส่งคำขอถึงผู้ปกครองเพื่อให้ผู้ปกครองเลื่อนเพื่อนำรายการเข้ามาดูได้ (Ib918d, b/195353459)
การสนับสนุนภายนอก
- เพิ่ม
Modifier.pointerHoverIcon
(I95f01)
เวอร์ชัน 1.1.0-beta01
27 ตุลาคม 2021
ปล่อย androidx.compose.foundation:foundation:1.1.0-beta01
และ androidx.compose.foundation:foundation-layout:1.1.0-beta01
แล้ว เวอร์ชัน 1.1.0-beta01 มีการคอมมิตเหล่านี้
แก้ไขข้อบกพร่อง
- เพิ่ม BringIntoView API เวอร์ชันทดลองที่ให้คุณส่งคำขอถึงผู้ปกครองเพื่อให้ผู้ปกครองเลื่อนเพื่อนำรายการเข้ามาดูได้ (Ib918d, b/195353459)
เวอร์ชัน 1.1.0-alpha06
13 ตุลาคม 2021
ปล่อย androidx.compose.foundation:foundation:1.1.0-alpha06
และ androidx.compose.foundation:foundation-layout:1.1.0-alpha06
แล้ว เวอร์ชัน 1.1.0-alpha06 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มโอเวอร์โหลดที่ไร้เด็กสำหรับ Layout แล้วโดยมีประสิทธิภาพดีขึ้น (Ib0d9a)
SemanticsNodeInteraction.performSemanticsAction
กลับมาแล้วSemanticsNodeInteraction
ที่มีการเรียกใช้ฟังก์ชัน (I9e5db)- เพิ่ม
performScrollToNode(matcher: SemanticsMatcher)
แล้ว จะเลื่อนคอนเทนเนอร์ที่เลื่อนได้ไปยังเนื้อหาที่ตรงกับ ตัวจับคู่ที่กำหนด (Ic1cb8)
เวอร์ชัน 1.1.0-alpha05
29 กันยายน 2021
ปล่อย androidx.compose.foundation:foundation:1.1.0-alpha05
และ androidx.compose.foundation:foundation-layout:1.1.0-alpha05
แล้ว เวอร์ชัน 1.1.0-alpha05 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มตัวชี้ประวัติการใช้งานรุ่นทดลองลงใน PointerEventChange (Ic1fd8, b/197553056, b/199921305)
แก้ไขข้อบกพร่อง
- แก้ไขการสนับสนุนการช่วยเหลือพิเศษสำหรับการเลื่อนได้ (ทั้งแบบ Lazy Loading และ ไม่ใช่แบบ Lazy Loading) สำหรับการเลื่อน (I6cdb0)
เวอร์ชัน 1.1.0-alpha04
15 กันยายน 2021
ปล่อย androidx.compose.foundation:foundation:1.1.0-alpha04
และ androidx.compose.foundation:foundation-layout:1.1.0-alpha04
แล้ว เวอร์ชัน 1.1.0-alpha04 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เลิกใช้งาน
performGesture
และGestureScope
ซึ่งมี ถูกแทนที่ด้วยperformTouchInput
และTouchInjectionScope
(Ia5f3f, b/190493367) - เพิ่ม
touchBoundsInRoot
ไปยังSemanticsNode
แล้ว มีขนาดเป้าหมายการสัมผัสขั้นต่ำเพื่อให้นักพัฒนาซอฟต์แวร์ ตรวจสอบได้ว่าเป้าหมายการสัมผัส เป็นไปตามข้อกำหนดขั้นต่ำสำหรับการช่วยเหลือพิเศษ (I2e14b, b/197751214)
แก้ไขข้อบกพร่อง
- อุปกรณ์ Android 12 เพิ่มการรองรับการเลื่อนแบบยืดได้มากแล้ว (Iccf3c, b/171682480)
เวอร์ชัน 1.1.0-alpha03
1 กันยายน 2021
ปล่อย androidx.compose.foundation:foundation:1.1.0-alpha03
และ androidx.compose.foundation:foundation-layout:1.1.0-alpha03
แล้ว เวอร์ชัน 1.1.0-alpha03 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- อัปเดต Compose
1.1.0-alpha03
เพื่อใช้ Kotlin1.5.30
แล้ว (I74545)
การเปลี่ยนแปลง API
- เพิ่มเอฟเฟกต์เปล่งประกายสำหรับการเลื่อนแล้ว มีการเพิ่ม Over ScrollConfiguration API เวอร์ชันทดลองใหม่เพื่อให้สามารถกำหนดค่าเอฟเฟ็กต์ภาพแบบเลื่อนผ่านได้ ระบุค่า Null เพื่อปิดเอฟเฟกต์การเลื่อนเกิน (I0c304, b/171682480)
- ตอนนี้ AwaitPointerEventScope มี withระยะหมดเวลา() และ withระยะหมดเวลาOrNull() (I507f0, b/179239764, b/182397793)
- เพิ่มวิธีทดสอบเพื่อรับขอบเขตที่ตัดทอน (I6b28e)
- เพิ่มขนาดเป้าหมายการสัมผัสขั้นต่ำลงใน ViewConfiguration แล้ว เพื่อใช้ในอรรถศาสตร์และการป้อนข้อมูลตัวชี้เพื่อการช่วยเหลือพิเศษ (Ie861C)
เวอร์ชัน 1.1.0-alpha02
18 สิงหาคม 2021
ปล่อย androidx.compose.foundation:foundation:1.1.0-alpha02
และ androidx.compose.foundation:foundation-layout:1.1.0-alpha02
แล้ว เวอร์ชัน 1.1.0-alpha02 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มเวอร์ชัน DpSize สำหรับ
Modifier.size
และrequiredSize
(I3fc7e, b/194219828)
เวอร์ชัน 1.1.0-alpha01
4 สิงหาคม 2021
ปล่อย androidx.compose.foundation:foundation:1.1.0-alpha01
และ androidx.compose.foundation:foundation-layout:1.1.0-alpha01
แล้ว เวอร์ชัน 1.1.0-alpha01 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- อัปเดตเมธอด
DrawScope#drawImage
ที่ ใช้ Rett ต้นทางและปลายทาง เพื่อใช้ตัวเลือกFilterquality พารามิเตอร์ มีประโยชน์สำหรับ Pixel อาร์ตเวิร์กที่มีจุดประสงค์ให้เป็นพิกเซล เมื่อปรับขนาดขึ้นสำหรับอาร์ตเวิร์กที่ใช้พิกเซล อัปเดต BitmapPainter + รูปภาพ Composable แล้ว ในการใช้ตัวเลือกFilter Quality ด้วย (Ie4fb0, b/180311607) - ตอนนี้ TextField จะล้างการเลือกเมื่อกดปุ่มย้อนกลับ ซึ่งตรงกับลักษณะการทำงาน EditText ของ Android (I3ca16, b/174173645)
- เพิ่มแฮนเดิลเคอร์เซอร์ (I07a82, b/173016579)
แก้ไขข้อบกพร่อง
- ตอนนี้การเลื่อนผ่านการดําเนินการทางอรรถศาสตร์สําหรับรายการแบบ Lazy และคอมโพเนนต์การเลื่อนปกติเป็นภาพเคลื่อนไหวแล้ว (Id9066, b/190742024)
การสนับสนุนภายนอก
LazyVerticalGrid
ยอมรับทั้งพารามิเตอร์การจัดเรียงทั้งแนวนอนและแนวตั้งแล้ว (If9c92)
รุ่น 1.0
เวอร์ชัน 1.0.5
3 พฤศจิกายน 2021
ปล่อย androidx.compose.foundation:foundation:1.0.5
และ androidx.compose.foundation:foundation-layout:1.0.5
แล้ว เวอร์ชัน 1.0.5 มีคอมมิตเหล่านี้
แก้ไขข้อบกพร่อง
- แก้ไขอินสแตนซ์ DerivedStateOf ในการติดตามข้อขัดข้อง (aosp/1792247)
เวอร์ชัน 1.0.4
13 ตุลาคม 2021
ปล่อย androidx.compose.foundation:foundation:1.0.4
และ androidx.compose.foundation:foundation-layout:1.0.4
แล้ว เวอร์ชัน 1.0.4 มีคอมมิตเหล่านี้
การอัปเดตการขึ้นต่อกัน
- อัปเดตเป็น Kotlin
1.5.31
แล้ว
เวอร์ชัน 1.0.3
29 กันยายน 2021
ปล่อย androidx.compose.foundation:foundation:1.0.3
และ androidx.compose.foundation:foundation-layout:1.0.3
แล้ว เวอร์ชัน 1.0.3 มีคอมมิตเหล่านี้
การอัปเดตการขึ้นต่อกัน
- อัปเดตเป็น Kotlin
1.5.30
แล้ว
เวอร์ชัน 1.0.2
1 กันยายน 2021
ปล่อย androidx.compose.foundation:foundation:1.0.2
และ androidx.compose.foundation:foundation-layout:1.0.2
แล้ว เวอร์ชัน 1.0.2 มีคอมมิตเหล่านี้
อัปเดตเพื่อรองรับรุ่น Compose 1.0.2
เขียน 1.0.2
ยังคงใช้งานร่วมกับ Kotlin 1.5.21
ได้
เวอร์ชัน 1.0.1
4 สิงหาคม 2021
ปล่อย androidx.compose.foundation:foundation:1.0.1
และ androidx.compose.foundation:foundation-layout:1.0.1
แล้ว เวอร์ชัน 1.0.1 มีคอมมิตเหล่านี้
การอัปเดตการขึ้นต่อกัน
- อัปเดตเพื่อใช้ Kotlin
1.5.21
แล้ว
เวอร์ชัน 1.0.0
28 กรกฎาคม 2021
ปล่อย androidx.compose.foundation:foundation:1.0.0
และ androidx.compose.foundation:foundation-layout:1.0.0
แล้ว เวอร์ชัน 1.0.0 มีคอมมิตเหล่านี้
ฟีเจอร์หลักของ 1.0.0
นี่เป็นเวอร์ชันเสถียรรุ่นแรกของ Compose โปรดดูรายละเอียดเพิ่มเติมในบล็อกการเผยแพร่ของ Compose อย่างเป็นทางการ
ปัญหาที่ทราบ
หากใช้ Android Studio Bumblebee Canary 4 หรือ AGP
7.1.0-alpha04
/7.1.0-alpha05
คุณอาจเจอข้อขัดข้องต่อไปนี้java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
หากต้องการแก้ไข ให้เพิ่ม minSdkVersion เป็น 24 ขึ้นไปชั่วคราวในไฟล์
build.gradle
ปัญหานี้จะได้รับการแก้ไขใน Android Studio Bumblebee และ AGP7.1
เวอร์ชันถัดไป (b/194289155)
เวอร์ชัน 1.0.0-rc02
14 กรกฎาคม 2021
ปล่อย androidx.compose.foundation:foundation:1.0.0-rc02
และ androidx.compose.foundation:foundation-layout:1.0.0-rc02
แล้ว เวอร์ชัน 1.0.0-rc02 มีคอมมิตเหล่านี้
- อัปเดตการแสดงเส้นขอบสำหรับรูปร่างทั่วไปเพื่อจัดการปัญหาเกี่ยวกับเส้นทาง กำหนดด้วยมิติข้อมูลคงที่ (aosp/1748871, b/191817116)
เวอร์ชัน 1.0.0-rc01
1 กรกฎาคม 2021
ปล่อย androidx.compose.foundation:foundation:1.0.0-rc01
และ androidx.compose.foundation:foundation-layout:1.0.0-rc01
แล้ว เวอร์ชัน 1.0.0-rc01 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ตอนนี้ Canvas รองรับพารามิเตอร์ contentDescription สำหรับแล้ว การช่วยเหลือพิเศษ (Ib547C)
แก้ไขข้อบกพร่อง
- ปุ่ม การ์ด ช่องทำเครื่องหมาย และช่อง
Modifier.clickable(enabled=false)
ทั้งหมดที่ปิดใช้ จะบล็อกการคลิกไม่ให้ขึ้นไปยังระดับบนสุด (Ic2c3b, b/183908811)
เวอร์ชัน 1.0.0-beta09
16 มิถุนายน 2021
ปล่อย androidx.compose.foundation:foundation:1.0.0-beta09
และ androidx.compose.foundation:foundation-layout:1.0.0-beta09
แล้ว เวอร์ชัน 1.0.0-beta09 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- นำ
ManualFrameClock
ออกแล้ว หากต้องการควบคุมภาพเคลื่อนไหว ใช้composeTestRule.mainClock
แทน (I3c3e8, b/189951065) - เปลี่ยนบทบาท enum และ LiveRegionMode เป็นคลาสในบรรทัด พร้อมเครื่องมือสร้างส่วนตัว (Id1890)
- แป้นพิมพ์ลัดได้รับการแปลงเป็นคลาสในบรรทัด (Id5a1c)
- TextOverflow จะเปลี่ยนเป็นคลาสในบรรทัด (I433af)
แก้ไขข้อบกพร่อง
- ตอนนี้เมื่อคุณระบุคีย์ที่ไม่ซ้ำกันสำหรับรายการ LazyColumn/แถว ตำแหน่งการเลื่อนจะคงเดิมตามคีย์ดังกล่าว ซึ่งหมายความว่าหากคุณเพิ่ม/นำรายการออกก่อนรายการที่มองเห็นได้ในปัจจุบัน รายการที่มีคีย์ที่กำหนดจะยังคงอยู่เป็นรายการที่เห็นเป็นอันดับแรก (Id263f, b/184257857)
- ปัจจุบันค่าคงที่หลักคือ @ExperimentalComposeUiApi การใช้งาน สามารถประกาศค่าคงที่ส่วนตัวก่อนระบบกันภาพสั่นได้ (Ia5d48)
- เพิ่ม IdlingStrategy ลงใน AndroidComposeTestRule แล้ว
ใช้โดยการทดสอบเฟรมเวิร์กเพื่อติดตั้งกลไกสำรองที่จะรอ
หรือไม่หยุดนิ่ง ใช้
AndroidComposeTestRule.setIdlingStrategyFactory()
ก่อนการทดสอบ เริ่มติดตั้งกลยุทธ์ ของคุณเอง (I608fa)
เพิ่มกฎโปรไฟล์
รุ่นนี้เพิ่มกฎโปรไฟล์ในโมดูลการเขียนต่อไปนี้ (I14ed6)
- androidx.compose.animation
- androidx.compose.animation-core
- androidx.compose.foundation
- androidx.compose.foundation-layout
- androidx.compose.material
- androidx.compose.material-ripple
- androidx.compose.runtime
- androidx.compose.ui
- androidx.compose.ui.geometry
- androidx.compose.ui.graphics
- androidx.compose.ui.text
- androidx.compose.ui.text
- androidx.compose.ui.unit
- androidx.compose.ui.util
กฎโปรไฟล์คืออะไร
กฎโปรไฟล์สำหรับไลบรารีจะระบุอยู่ในไฟล์ข้อความ
baseline-prof.txt
ที่อยู่ในsrc/main
หรือไดเรกทอรีที่เทียบเท่า ไฟล์จะระบุกฎต่อบรรทัด ซึ่งกฎในกรณีนี้เป็นรูปแบบสำหรับจับคู่กับเมธอดหรือคลาสในไลบรารี ไวยากรณ์สำหรับกฎเหล่านี้คือชุดพิเศษของรูปแบบโปรไฟล์ ART ที่มนุษย์อ่านได้ซึ่งใช้เมื่อใช้adb shell profman --dump-classes-and-methods ...
กฎเหล่านี้มี 1 ใน 2 รูปแบบเพื่อกำหนดเป้าหมายเมธอดหรือคลาสกฎของเมธอดจะมีรูปแบบต่อไปนี้
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
และกฎของชั้นเรียนจะมีรูปแบบต่อไปนี้
<CLASS_DESCRIPTOR>
<FLAGS>
คืออักขระอย่างน้อย 1 ตัว ได้แก่H
,S
และP
เพื่อระบุว่าควรแจ้งว่าเมธอดนี้เป็น "Hot", "Startup" หรือ "Post Startup" หรือไม่<CLASS_DESCRIPTOR>
เป็นตัวบ่งชี้คลาสของวิธีที่กำหนดเป้าหมาย เช่น คลาสandroidx.compose.runtime.SlotTable
จะมีตัวบ่งชี้Landroidx/compose/runtime/SlotTable;
<METHOD_SIGNATURE>
เป็นลายเซ็นของเมธอด ซึ่งจะมีชื่อ ประเภทพารามิเตอร์ และประเภทการคืนสินค้าของเมธอด ตัวอย่างเช่น เมธอดfun isPlaced(): Boolean
ในLayoutNode
มีลายเซ็นisPlaced()Z
รูปแบบเหล่านี้มีไวลด์การ์ดได้ (
**
,*
และ?
) เพื่อให้กฎเดียวครอบคลุมเมธอดหรือคลาสหลายรายการ
กฎเหล่านี้มีหน้าที่อะไร
เมธอดที่มีแฟล็ก
H
หมายความว่าเมธอดนี้เป็น "hot" และควรคอมไพล์ไว้ล่วงหน้าเมธอดที่มี Flag
S
บ่งบอกว่าเป็นเมธอดที่มีการเรียกใช้เมื่อเริ่มต้น และควรรวบรวมล่วงหน้าเพื่อหลีกเลี่ยงค่าใช้จ่ายในการคอมไพล์และการตีความเมธอดเมื่อเริ่มต้นเมธอดที่มีแฟล็ก
P
บ่งบอกว่าเป็นเมธอดที่มีการเรียกใช้หลังจากเริ่มต้นใช้งานคลาสที่อยู่ในไฟล์นี้ระบุว่ามีการใช้คลาสระหว่างการเริ่มต้นใช้งานและควรมีการจัดสรรล่วงหน้าในฮีปเพื่อหลีกเลี่ยงค่าใช้จ่ายในการโหลดคลาส
ระบบนี้ทำงานอย่างไร
- ไลบรารีสามารถกำหนดกฎเหล่านี้ที่จะจัดแพ็กเกจในอาร์ติแฟกต์ AAR เมื่อมีการสร้างแอปซึ่งรวมถึงอาร์ติแฟกต์เหล่านี้ ระบบจะรวมกฎเหล่านี้เข้าด้วยกันและใช้กฎรวมเพื่อสร้างโปรไฟล์ ART แบบไบนารีขนาดกะทัดรัดที่เจาะจงสำหรับแอปดังกล่าวโดยเฉพาะ จากนั้น ART จะสามารถใช้ประโยชน์จากโปรไฟล์นี้เมื่อติดตั้งแอปในอุปกรณ์เพื่อคอมไพล์ชุดย่อยที่เจาะจงของแอปพลิเคชันล่วงหน้าเพื่อปรับปรุงประสิทธิภาพของแอปพลิเคชัน โดยเฉพาะการเรียกใช้ครั้งแรก โปรดทราบว่าการดำเนินการนี้จะไม่มีผลต่อแอปพลิเคชันที่แก้ไขข้อบกพร่องได้
เวอร์ชัน 1.0.0-beta08
2 มิถุนายน 2021
ปล่อย androidx.compose.foundation:foundation:1.0.0-beta08
และ androidx.compose.foundation:foundation-layout:1.0.0-beta08
แล้ว เวอร์ชัน 1.0.0-beta08 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- enum ของ NestedscrollSource แทนด้วยคลาสในบรรทัด (Ie321b, b/187055290)
- เปลี่ยนโครงสร้างการใช้ enum เป็นคลาสในบรรทัดเพื่อหลีกเลี่ยง ที่เป็นปัญหาโดยละเอียดเมื่อข้อความแสดง เพิ่มค่า enum ใหม่ (I2b5eb)
- เพิ่มระยะหมดเวลาการแตะให้คลิกได้/เปิด/ปิดได้เพื่อป้องกันการแสดงระลอกคลื่นในระหว่างการเลื่อน/ลาก (Ia2704, b/168524931)
- พร็อพเพอร์ตี้คำอธิบายเนื้อหาและความหมายของข้อความไม่มีให้บริการแล้ว ค่าเดียวยกเว้นรายการ วิธีนี้จะทำให้สามารถรวมพร็อพเพอร์ตี้ตามที่เป็น ของการเชื่อมต่อกัน นอกจากนี้ยังมี API การทดสอบที่ดีกว่าเดิมเพื่อใช้ประโยชน์จากสิ่งเหล่านี้ การเปลี่ยนแปลง (Ica6bf, b/184825850)
Modifier.focusModifier()
เลิกใช้งานแล้วและแทนที่ด้วยModifier.focusTarget()
(I6c860)- enum ของ KeyboardType จะถูกแทนที่ด้วยคลาสในบรรทัด (I73045, b/187055290)
- แทนที่ enum ของ
FocusState
ด้วยอินเทอร์เฟซFocusState
แล้ว (Iccc1a, b/187055290) - enum ของ ImeAction จะถูกแทนที่ด้วยคลาสในบรรทัด (I18be5, b/187055290)
- ฟังก์ชัน
AnnotatedString.withAnnotation
รายการคือ เหลือเพียง ExperimentalTextApi แทน ExperimentalComposeApi (I0cd0a)- เครื่องมือสร้าง TextUnit ที่มี TextUnitType พร้อมใช้งานแล้ว ExperimentalTextApi แทน ExperimentalComposeApi
- ขณะนี้ PaddingValues มีค่าเป็น
@Stable
แทนที่จะเป็น@Immutable
(I88c50)
แก้ไขข้อบกพร่อง
- แก้ไขการขัดข้องของการกดพื้นที่ว่างในข้อความที่ไม่ว่างเปล่าค้างไว้ (I33ab5, b/187437299)
- แสดงแถบเครื่องมือหลังจาก SelectAll (I495d9, b/185919613)
- แก้ไขคอนเทนเนอร์ที่เลื่อนได้ซึ่งตัดองค์ประกอบย่อยบนแกนกากบาท ซึ่งสามารถทำซ้ำได้ง่ายหากคุณมี LazyRow ที่มีรายการการ์ด เงาก็จะไม่ถูกตัดออก (Icb635, b/186318448)
- แก้ไขปัญหาที่บางครั้งคลื่น / สัญญาณบอกสถานะอื่นๆ ค้างอยู่เมื่อคลิกที่ค้างเมื่อใช้ Modifier.combinedClickable (I2298c, b/186223077)
- ตอนนี้
detectDragGesures
,detectVerticalGestures
และdetectHorizontalGestures
จะใช้การเปลี่ยนแปลงตำแหน่งโดยอัตโนมัติ โดยไม่จำเป็นต้องเรียก change.conssumPositionChange ใน onDrag callbacks (I42fc4, b/185096350, b/187320697) Modifier.onGloballyPositioned()
มีการเปลี่ยนแปลงเพื่อรายงานพิกัดของตัวแก้ไขนี้ในสายตัวปรับแต่ง ไม่ใช่พิกัดเลย์เอาต์หลังจากใช้ตัวปรับแต่งทั้งหมดแล้ว ซึ่งหมายความว่าตอนนี้ลำดับของตัวปรับส่งผลต่อพิกัดที่จะรายงาน (Ieb67d, b/177926591)
เวอร์ชัน 1.0.0-beta07
18 พฤษภาคม 2021
ปล่อย androidx.compose.foundation:foundation:1.0.0-beta07
และ androidx.compose.foundation:foundation-layout:1.0.0-beta07
แล้ว เวอร์ชัน 1.0.0-beta07 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เปิดตัวลอจิกการดึงข้อมูลรายการที่ปรากฏล่วงหน้าสำหรับ LazyColumn/Row (I8a4bc, b/184940225)
- เพิ่มแฮนเดิลการเลือกคลิป (Iff80d, b/183408447)
แก้ไขข้อบกพร่อง
- ตอนนี้ LazyColumn/Row จะเก็บรายการที่มองเห็นได้ก่อนหน้านี้สูงสุด 2 รายการที่ใช้งานอยู่ (ไม่ทิ้ง) แม้จะเลื่อนออกแล้วก็ตาม วิธีนี้จะช่วยให้คอมโพเนนต์สามารถนำองค์ประกอบย่อยที่ใช้งานอยู่มาใช้ซ้ำเมื่อเราต้องสร้างรายการใหม่ ซึ่งช่วยปรับปรุงประสิทธิภาพการเลื่อน (Ie5555)
- นำ PaintBackground ออก (I38660)
- วาดพื้นหลังของการเลือกโดยใช้ DrawScope (I73c61, b/186674472)
- การถดถอยเบต้า 06 ที่ส่งผลต่อแถว/คอลัมน์ที่ใช้การจัดเรียงแบบเว้นวรรคกับการจัดเลย์เอาต์ย่อยที่ถ่วงน้ำหนักได้รับการแก้ไขแล้ว (Ifaf8c, b/187326588)
เวอร์ชัน 1.0.0-beta06
5 พฤษภาคม 2021
ปล่อย androidx.compose.foundation:foundation:1.0.0-beta06
และ androidx.compose.foundation:foundation-layout:1.0.0-beta06
แล้ว เวอร์ชัน 1.0.0-beta06 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- แก้ไขความขัดแย้งด้วยท่าทางสัมผัสการนำทาง (I1145e)
- เพิ่ม API การช่วยเหลือพิเศษ CollectionInfo และ CollectionItemInfo ซึ่งช่วยทำเครื่องหมายคอลเล็กชันและรายการสำหรับบริการช่วยเหลือพิเศษได้ (Id54ef, b/180479017)
- เพิ่ม
SemanticsActions.ScrollToIndex
เพื่อเลื่อนรายการที่มี รายการที่จัดทำดัชนีให้กับรายการที่มีดัชนีที่กำหนด และSemanticsProperties.IndexForKey
เพื่อรับดัชนีของรายการในรายการ กับรายการคีย์ การดำเนินการทั้ง 2 รายการมีการใช้งานโดย LazyList- เพิ่ม
SemanticsNodeInteraction.performScrollToIndex
แล้ว จะเลื่อนรายการไปยังดัชนีที่กำหนด และSemanticsNodeInteraction.performScrollToKey
ที่เลื่อนรายการไปยัง ด้วยคีย์ที่ระบุ (I4fe63, b/178483889, b/161584524)
- เพิ่ม
- AnnotatedString บันทึกการสนับสนุนไปยัง TextFieldValue.Saver เพิ่ม addtAnnotation และมีฟังก์ชันยูทิลิตีคำอธิบายประกอบเพื่อ AnnotatedString.Builder (I8cbdc, b/178446304)
- เพิ่มค่าพารามิเตอร์
0.dp
เริ่มต้นลงในPaddingValues(horizontal, vertical)
แล้ว (I05571, b/181336792)
แก้ไขข้อบกพร่อง
- แถวและ คอลัมน์ย่อยที่มี
weight(fill = false)
จะไม่ทำให้คอลัมน์หลักแสดงเต็มพื้นที่แกนหลักที่มีอยู่อีกต่อไป (Ied94d, b/186012444, b/184355105)
เวอร์ชัน 1.0.0-beta05
21 เมษายน 2021
ปล่อย androidx.compose.foundation:foundation:1.0.0-beta05
และ androidx.compose.foundation:foundation-layout:1.0.0-beta05
แล้ว เวอร์ชัน 1.0.0-beta05 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ตอนนี้อินเทอร์เฟซ FlingBehavior ถูกทำเครื่องหมายเป็น @Stable การใช้งานทั้งหมดควรเป็นไปตามสัญญา
@Stable
(I93354, b/184830577)
แก้ไขข้อบกพร่อง
- ราคาคงที่
ACTION_SCROLL_FORWARD
,ACTION_SCROLL_BACKWARD
accessibilityActionScrollLeft
accessibilityActionScrollUp
accessibilityActionScrollRight
และaccessibilityActionScrollDown
การดำเนินการเลื่อนสำหรับการช่วยเหลือพิเศษ แทนที่จะเลื่อนไปที่จุดสิ้นสุดของ ซึ่งจะเลื่อนได้ 1 หน้าจอตามทิศทางที่กำหนด (Ieccb0) - ไฟล์ AndroidManifest จาก ui-test-Manifest และ ui-tooling-data ใช้งานร่วมกับ Android 12 ได้แล้ว (I6f9de, b/184718994)
เวอร์ชัน 1.0.0-beta04
7 เมษายน 2021
ปล่อย androidx.compose.foundation:foundation:1.0.0-beta04
และ androidx.compose.foundation:foundation-layout:1.0.0-beta04
แล้ว เวอร์ชัน 1.0.0-beta04 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เปลี่ยนชื่อ hideSoftwareKeyboard และ show SoftwareKeyboard ในได้อย่างไร
SoftwareKeyboardController เป็น
hide()
และshow()
ตามลำดับ- จัดเตรียมอินเทอร์เฟซ CompositionLocal เต็มรูปแบบสำหรับ LocalSoftwareKeyboardController ให้คุณสามารถตั้งค่า (โดยเฉพาะอย่างยิ่ง มีประโยชน์ในการทดสอบ) (I579a6)
- เปิดตัว
TextOverflow.Visible
(Ic8f89) - นำอินสแตนซ์สาธารณะของ
RowScope
,ColumnScope
,BoxScope
,BoxWithConstraintsScope
ออกแล้ว (I4e83e, b/181869067)
แก้ไขข้อบกพร่อง
- แก้ไขปัญหาเมื่อรายการ
LazyColumn
/LazyRow
ที่อยู่บนขอบอยู่ในตำแหน่งที่ไม่ถูกต้องหลังจากการสะบัดอย่างรวดเร็ว (Ie4d13, b/183877420) ก่อนการเปลี่ยนแปลงนี้ ฟังก์ชัน Composable ในเครื่องจะข้ามได้ตามพารามิเตอร์ หลังจากการเปลี่ยนแปลงนี้ ฟังก์ชัน Composable ในเครื่องจะไม่ข้าม การเปลี่ยนแปลงนี้เกิดขึ้นเนื่องจากเป็นเรื่องปกติและคาดหวังว่าฟังก์ชันในเครื่องจะตรวจจับพารามิเตอร์จากระดับบนสุดและการข้ามถือเป็นแหล่งที่มาทั่วไปของข้อบกพร่อง
กล่าวโดยสรุปคือ
@Composable fun Counter(count: Int, onCountChange: (Int) -> Unit) { @Composable fun ShowCount() { Text("Count: $count") } ShowCount() Button(onClick={ onCountChange(count + 1) }) { Text("Increment") } }
ก่อนการเปลี่ยนแปลงนี้ ฟังก์ชัน Composable
ShowCount
จะข้ามเสมอ แม้ว่าจะอัปเดตพารามิเตอร์count
แล้วก็ตาม แต่เหตุการณ์ดังกล่าวจะไม่เกิดขึ้นแล้ว (I5648a)
เวอร์ชัน 1.0.0-beta03
24 มีนาคม 2021
ปล่อย androidx.compose.foundation:foundation:1.0.0-beta03
และ androidx.compose.foundation:foundation-layout:1.0.0-beta03
แล้ว เวอร์ชัน 1.0.0-beta03 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
DefaultMonotonicFrameClock
เลิกใช้งานแล้ว การโทรwithFrameNanos
หรือRecomposer.runRecomposeAndApplyChanges
ที่ไม่มี ตอนนี้MonotonicFrameClock
จะขว้างIllegalStateException
(I4eb0d)
แก้ไขข้อบกพร่อง
- ตอนนี้ระบบจะเรียก
FlingBehavior.performFling()
แม้จะความเร็วเป็น 0 (I0b6e5, b/181237123)
เวอร์ชัน 1.0.0-beta02
10 มีนาคม 2021
ปล่อย androidx.compose.foundation:foundation:1.0.0-beta02
และ androidx.compose.foundation:foundation-layout:1.0.0-beta02
แล้ว เวอร์ชัน 1.0.0-beta02 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มการเพิ่มประสิทธิภาพเล็กๆ น้อยๆ หลายรายการในตรรกะการวัด LazyColumn (Ic6889)
- เพิ่มการเรียบเรียงเพลง
LocalSoftwareKeyboardController
ใหม่ในเครื่อง API สำหรับแทนที่อินเทอร์เฟซ SoftwareKeyboardController ก่อนหน้าที่เปิดอยู่ ฟิลด์ข้อความ (I5951e, b/168778053) - เพิ่มการเรียบเรียงเพลง
LocalSoftwareKeyboardController
ใหม่ในเครื่อง API สำหรับแทนที่อินเทอร์เฟซ SoftwareKeyboardController ก่อนหน้าที่เปิดอยู่ ฟิลด์ข้อความ (I84472, b/168778053)
แก้ไขข้อบกพร่อง
- บังคับใช้ข้อจำกัดกับการใช้งาน API ทดลองแบบสาธารณะ (I6aa29, b/174531520)
เวอร์ชัน 1.0.0-beta01
24 กุมภาพันธ์ 2021
ปล่อย androidx.compose.foundation:foundation:1.0.0-beta01
และ androidx.compose.foundation:foundation-layout:1.0.0-beta01
แล้ว เวอร์ชัน 1.0.0-beta01 มีการคอมมิตเหล่านี้
นี่เป็นรุ่นแรกของ Compose 1.0.0 เบต้า
การเปลี่ยนแปลง API
- เพิ่ม onStart callback ไปยัง
detectDragGestures
แล้ว (I67269, b/179995594) - ตัวปรับแต่งสำหรับปรับขนาดให้พอดีกับภายในไม่ใช่เวอร์ชันทดลองอีกต่อไป (I15744)
- นำการยืนยัน dp ออกแล้ว (I798d2)
- นำ Callback SoftwareKeyboardController ออกจากข้อความทั้งหมดแล้ว ที่จะแทนที่ด้วย API ใหม่ในไม่ช้า (Iae869, b/168778053)
- MeasureBlocks ได้เปลี่ยนชื่อเป็น MeasurePolicy ซึ่งกลายเป็นอินเทอร์เฟซสนุกๆ Layout API ได้รับการอัปเดต / ทำให้การใช้ MeasurePolicy ง่ายขึ้น (Icab48, b/167662468, b/156751158)
- แทนที่
InteractionState
ด้วย[Mutable]InteractionSource
แล้ว- อินเทอร์เฟซมีหน้าที่ในการสร้าง / รวบรวมเหตุการณ์การโต้ตอบ
- แทนที่จะส่ง
interactionState = remember { InteractionState() }
ไปยังคอมโพเนนต์ เช่นButton
และModifier.clickable()
ให้ใช้interactionSource = remember { MutableInteractionSource() }
- คุณควรใช้ฟังก์ชันส่วนขยายใน InteractionSource แทน
Interaction.Pressed in interactionState
เช่น InteractionSource.collectIsPressedAsState() - สำหรับ Use Case ที่ซับซ้อน คุณสามารถใช้ InteractionSource.interactions เพื่อดูกระแสการโต้ตอบได้ ดูเอกสารประกอบและตัวอย่าง InteractionSource เพื่อดูข้อมูลเพิ่มเติม
- (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
- นำเมธอด LayoutCoordinates ที่เลิกใช้งานแล้วออก ใช้ฟังก์ชันแทนพร็อพเพอร์ตี้สำหรับPositionInParent และ boundsInParent (I580ed, b/169874631, b/175142755)
- สร้าง TextInputSession ใหม่สำหรับเซสชันอินพุตจากคอมโพเนนต์ข้อความระดับต่ำ เช่น CoreTextField (I8817f, b/177662148)
- "วางได้" จะแสดงขนาดที่วัดแล้ว ซึ่งจะแสดงขนาดที่เลย์เอาต์ย่อยวัดได้จริง ขนาดนี้อาจไม่เป็นไปตามข้อจำกัดในการวัด (Ib2729, b/172560206, b/172338608)
- เพิ่มตัวเลือกการปรับแต่งกลุ่มที่ช่วยให้ทำเครื่องหมายชุดแท็บหรือปุ่มตัวเลือกเพื่อวัตถุประสงค์ในการช่วยเหลือพิเศษ (Ie5c29)
เพิ่ม LazyListState.animatescrollToItem
วิธีนี้จะช่วยเลื่อนไปยังรายการที่ต้องการได้อย่างลื่นไหล (I4bfd7)
ScrollableState.smoothscrollBy() เปลี่ยนชื่อเป็น animatescrollBy() LazyListState.snapToItemIndex() เปลี่ยนชื่อเป็น ScrollToItem() ScrollState.smooth ScrollTo() เปลี่ยนชื่อเป็น animatescrollTo() (I35ded)
Modifier.zoomable แทนที่ Modifier.transformable แล้ว SmoothPanBy จึงมีการเพิ่มเครื่องมือmotationBy เป็นฟังก์ชันการใช้งาน (Ifc32b, b/175294473)
defaultFactory
สำหรับcompositionLocalOf
และ ตอนนี้คุณจำเป็นต้องใช้staticCompositionLocalOf
แทน ไม่บังคับการเปลี่ยนแปลงนี้จะนําข้อผิดพลาดประเภทที่อาจเป็นค่าว่างออก ประเภทที่ไม่ได้ระบุค่าเริ่มต้นจากโรงงาน ก่อนหน้านี้ จะให้การอ้างอิง Null สำหรับประเภทที่ไม่เป็นค่าว่าง
สำหรับประเภทที่เว้นว่างได้ ให้พิจารณาระบุ
{ null }
เป็นค่าเริ่มต้น โรงงานเราไม่แนะนำให้ใช้ท้องถิ่นที่มีประเภทที่ไม่มีค่าว่าง ยกเว้น สามารถระบุค่าเริ่มต้นที่เหมาะสมได้ หากไม่มีค่าเริ่มต้นที่เหมาะสม lambda
defaultFactory
ควรส่งข้อยกเว้น อย่างไรก็ตาม การส่งคำขอยกเว้นหมายความว่าผู้บริโภคในพื้นที่จะ การพึ่งพาโดยนัยที่ให้ไว้ซึ่งไม่ได้บังคับใช้ ตามระบบประเภท (Ifbd2a)เปลี่ยน
Indication#createIndication()
เป็นIndication#rememberUpdatedIndication(InteractionState)
และนำพารามิเตอร์InteractionState
ออกจาก IndicationInstance#drawIndication()
IncationInstance ควรรับผิดชอบในการวาดเอฟเฟกต์ภาพเท่านั้น และไม่เปิดภาพเคลื่อนไหว / สถานะการเขียนเพื่อตอบสนองต่อการเปลี่ยนแปลงของ InteractionState ภาพเคลื่อนไหวและการเขียนสถานะเหล่านี้ควรเกิดขึ้นภายในrememberUpdatedIndication()
แทน พารามิเตอร์indication
ในModifier.indication
ได้เปลี่ยนเป็นพารามิเตอร์ที่จำเป็นด้วย (Ic1764, b/152525426)ขณะนี้การดำเนินการกับข้อความจะตรวจสอบโฟกัสโดยอัตโนมัติ (I13777, b/179648629)
นำ
runBlockingWithManualClock
ออก (I15cdc, b/179664814)ตำแหน่งการเลื่อนใน Modifier.verticalscroll()/ลิงก์แนวนอน() จะแสดงด้วย Ints ทันที (I81298)
momothy ScrollBy และเมธอด ScrollBy แพ็กเกจเปลี่ยนเป็น
androidx.compose.foundation.gestures.*
(I3f7c1, b/175294473)ตอนนี้ FlingConfig ได้เปลี่ยนชื่อเป็น FlingBehavior จึงสามารถปรับแต่งภาพเคลื่อนไหวที่ระงับได้ โดยไม่ต้องการสลายตัวตามที่กำหนดไว้ (I02b86, b/175294473)
เปลี่ยนชื่อตัวปรับขนาดแล้ว เปลี่ยนชื่อ Modifier.width/height/size เป็น requiredWidth/requiredHeight/requiredSize แล้ว เปลี่ยนชื่อ Modifier.suggestedWidth/ใส่ความสูงของเนื้อหา/เลือกขนาดเป็นความกว้าง/ความสูง/ขนาด (I5B414)
defaultMinSizeConstraints เปลี่ยนชื่อเป็น defaultMinSize (I4eaae)
Modifier.tapGestureFilter ถูกนำออกแล้ว โปรดใช้
Modifier.pointerInput { detectTapGestures(...) }
แทน (I266ed, b/175294473)มีการนำการบริโภคบางส่วนออกจากระบบอินพุตตัวชี้ วิธีที่แนะนำในการประสานงานการใช้งานบางส่วนคือ Modifier.nestedscroll (Ie9c9b)
การวางแนวย้ายไปไว้ที่แพ็กเกจฐานแล้ว ย้าย VelocirtTracker จาก ui.gesture ไปยัง ui.input.pointer (Iff4a8, b/175294473)
ย้ายข้อมูล AnimationClockObservable และคลาสย่อยแล้ว ลบแล้ว นำ AnimatedFloat ออกแล้ว (Icde52, b/177457083)
ขณะนี้ลิ้นชักState.open() และ โดยทั่วไปสถานะ.close() กำลังระงับฟังก์ชันต่างๆ ใช้ RememberCoroutineScope() เพื่อรับขอบเขตของการเรียบเรียงเพื่อเรียกใช้ (I16f60, b/175294473)
ผู้ให้บริการเปลี่ยนชื่อเป็น CompositionLocalProvider
- เครื่องมือสร้างการเรียบเรียงไม่ยอมรับพารามิเตอร์คีย์อีกต่อไปและเลิกใช้งานแล้ว
- ได้เปลี่ยนcurrentCompositeKeyHash เป็นพร็อพเพอร์ตี้ระดับบนสุดที่ประกอบได้แทนฟังก์ชันระดับบนสุดที่ประกอบกันได้
- ย้าย CompositionData และ CompositionGroup ไปยังเนมสเปซ androidx.compose.runtime.tooling แล้ว
- ComposableLambda ได้รับการสร้างเป็นอินเทอร์เฟซแทนคลาสที่เป็นรูปธรรมและไม่มีพารามิเตอร์ประเภทอีกต่อไป
- ComposableLambdaN ได้รับการสร้างเป็นอินเทอร์เฟซแทนคลาสที่เป็นรูปธรรมและไม่มีพารามิเตอร์ประเภทอีกต่อไป
- ย้ายฟังก์ชัน Snapshot ไปยังเนมสเปซ androidx.compose.runtime แล้ว
- วิธีการผสานของ SnapshotMutationPolicy ไม่ใช่เวอร์ชันทดลองอีกต่อไป
- ฟังก์ชัน clearRoots ระดับบนสุด
@TestOnly
ถูกนำออกแล้ว ไม่จำเป็นอีกต่อไป - ลบฟังก์ชัน keySourceInfoOf และresetSourceInfo แล้ว เนื่องจากไม่จำเป็นต้องใช้อีกต่อไป
- Composer.collectKeySourceInformation ถูกนำออกแล้ว ไม่จำเป็นอีกต่อไป
- นำเมธอด isjoinedKey, JoinedKeyLeft และ joinKeyRight ออกแล้ว เนื่องจากไม่จำเป็นต้องใช้อีกต่อไป
- API ระดับบนสุดหลายรายการถูกย้ายและจัดระเบียบใหม่เป็นไฟล์ที่ต่างกัน เนื่องจากอรรถศาสตร์คลาสไฟล์ของ Kotlin จะทำให้ความเข้ากันได้ของไบนารีเสียหาย แต่ไม่ใช่ความเข้ากันได้ของแหล่งที่มา ดังนั้นจึงไม่ควรเป็นปัญหาสำหรับผู้ใช้ส่วนใหญ่
- (I99b7d, b/177245490)
Modifier.scrollable ที่ปรับปรุงใหม่ แต่ตอนนี้ระบบใช้อินเทอร์เฟซ Scrollable แทนคลาส ScrollableController (I4f5a5, b/174485541, b/175294473)
ตอนนี้ Modifier.draggable ยอมรับ DraggableState แทน lambda แบบง่าย คุณสามารถสร้างสถานะผ่าน
rememberDraggableState { delta -> }
เพื่อรับลักษณะการทำงานเดิมเหมือนก่อนหน้านี้ได้ (Ica70f, b/175294473)เพิ่มตัวปรับแต่ง requiredWidth(IntrinsicSize) และ requiredHeight(IntrinsicSize) ระดับสำหรับการกำหนดขนาดตามที่กำหนดไว้ (I0a6b4)
เลิกใช้งาน
emptyContent()
แล้ว โปรดใช้{}
แทน (Idb33f, b/179432510)ลบ API ที่เลิกใช้งานก่อนหน้านี้บางรายการ (Ice5da, b/178633932)
แก้ไขข้อบกพร่อง
- เพิ่มองค์ประกอบ Local SoftwareKeyboardController ใหม่ในเครื่องแล้ว API สำหรับแทนที่อินเทอร์เฟซ SoftwareKeyboardController ก่อนหน้าที่เปิดอยู่ ฟิลด์ข้อความ (I658b6, b/168778053)
เวอร์ชัน 1.0.0-alpha12
10 กุมภาพันธ์ 2021
ปล่อย androidx.compose.foundation:foundation:1.0.0-alpha12
และ androidx.compose.foundation:foundation-layout:1.0.0-alpha12
แล้ว เวอร์ชัน 1.0.0-alpha12 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ตอนนี้ Modifier.pointerInput ต้องใช้แป้นจดจำเพื่อระบุ เมื่อใดที่ Coroutine ตรวจจับอินพุตตัวชี้ควรรีสตาร์ทสำหรับ ทรัพยากร Dependency (I849cd)
- การอัปเดตจากการทดสอบ: hasText() จะตรวจสอบทั้งอินพุตและข้อความป้ายกำกับ/คำแนะนำ/ตัวยึดตำแหน่งในช่องข้อความ (Iab803)
- เพิ่ม PaddingValues.Absolute แล้วและใช้ใน API ที่ยอมรับ PaddingValues ได้ (Ia5f30)
- onImeActionActioned เลิกใช้งานแล้ว ใช้ KeyboardActions แทน (If0bbd, b/179071523)
- เพื่อให้ชื่อตรงกันมากขึ้น แบบแผนกับ ImageBitmap และ ImageVector ImagePainter เปลี่ยนชื่อเป็น BitmapPainter แล้ว กับ VectorPainter แบบขนาน (Iba381, b/174565889)
- API การทดสอบสตริงย่อยที่ดีขึ้นซึ่งมีสตริงย่อยเป็นอาร์กิวเมนต์ (Icbe78) แล้ว
- เริ่มใช้บริบทโครูทีน
InfiniteAnimationPolicy
แล้ว ที่จะนำไปใช้ในภาพเคลื่อนไหวที่ไม่จำกัด โดยค่าเริ่มต้น "ไม่" จะติดตั้งนโยบายแล้ว ยกเว้นเมื่อทำการทดสอบกับComposeTestRule
(I50ec4, b/151940543) - ตอนนี้ Animatable.snapTo และ Animatable.stop ระงับฟังก์ชันแล้ว (If4288)
- ย้าย ComponentActivity.setContent ไปยัง androidx.activity.compose.setContent ใน androidx.activity:activity-compose โมดูล (Icf416)
- วิธีการทำลายโครงสร้างและ copy() ถูกนำออกจาก หลายชั้นเรียนที่แทบไม่ได้ใช้ (I26702, b/178659281)
เพิ่มการรองรับคีย์ที่กำหนดเองสำหรับ LazyColumn/LazyRow แล้ว ทำให้เราจัดการกับการจัดลำดับสินค้าใหม่ได้อย่างชาญฉลาดยิ่งขึ้น ดังนั้นสถานะที่คุณจัดเก็บไว้ใน "จำ" บล็อก {} จะย้ายไปอยู่รวมกับรายการเมื่อคุณเรียงลำดับองค์ประกอบหรือนำรายการออกจากตรงกลาง
LazyColumn { items(users, key = { user -> user.id }) { ... } }
เปลี่ยนตัวบ่งชี้#createInstance เป็น @Composable และเปลี่ยน LocalIndication ให้มีเครื่องหมาย ไม่ใช่ () -> การบ่งชี้ (I5eeea, b/157150564)
แทนที่
Constraints.enforce
ด้วยConstraints.constrain
แล้ว (I8b8ea)เลิกใช้งานloadFontResource แล้ว โปรดใช้ fontResource แทน imageResource,LoadImageResource, vectorResource และloadVectorResource เลิกใช้งานแล้ว โปรดใช้ PainterResource แทน (I6B809)
ด้วยเหตุผลด้านประสิทธิภาพ ตอนนี้ความหมายของ ScrollAxisRange lambdas จะแสดงค่า Float แทนค่า Float โดยตรง (If4a35, b/178657186)
เพิ่มความหมายของ EditableText เพื่อทำเครื่องหมายอินพุตที่แก้ไขได้ของช่องข้อความสำหรับการช่วยเหลือพิเศษและวิธีการทดสอบที่เกี่ยวข้องเพื่อตรวจสอบความหมาย (I8e07a)
ขณะนี้ Modifier.clickable ยังไม่มีการสนับสนุนการคลิกแบบดับเบิลคลิกและยาว ใช้ Modifier.combinedClickable เพื่อทำฟังก์ชันนี้ (Iafad1)
toIntPx() เปลี่ยนชื่อเป็น roundToPx() (I9b7e4, b/173502290)
IntBounds ได้เปลี่ยนชื่อเป็น IntRect และปรับปรุง API ให้ดีขึ้น (I1f6ff)
เลิกใช้งาน Modifier.dragGestureFilter แล้ว โปรดใช้
Modifier.pointerInput { detectDragGestures (...)}
แทน หรือใช้ Modifier.draggable สำหรับการลากแกน 1 แกน (I0ba93, b/175294473)เปลี่ยนชื่อแอมเบียนท์ให้ตรงกับแอมเบียนท์ -> การเปลี่ยนชื่อ CompositionLocal แอมเบียนท์เคยมีชื่อว่า AmbientFoo แต่ปัจจุบัน CompositionLocals เรียกว่า LocalFoo (I2d55d)
ย้ายรายการที่เลือกไปยังพื้นฐานแล้ว (I7892B)
เช่นเดียวกับที่เรานำ Composable ของ
state { 0 }
ออกก่อนหน้านี้และตอนนี้โปรโมตการใช้งาน เช่นremember { mutableStateOf(0) }
เราจะนำ Composable ของsavedInstanceState { 0 }
ออก คุณควรใช้rememberSaveable { mutableStateOf(0) }
แทน จากนั้นระบบจะบันทึกและคืนค่าโดยอัตโนมัติหากเก็บประเภทที่ใช้ภายใน MutableState ไว้ใน Bundle ได้ หากก่อนหน้านี้คุณส่งผ่านออบเจ็กต์เซฟที่กำหนดเอง ตอนนี้คุณต้องใช้แอตทริบิวต์ RememberSaveable ที่โอเวอร์โหลดใหม่ซึ่งมีพารามิเตอร์stateSaver
การใช้งานจะมีลักษณะดังนี้:val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) }
(Ib4c26, b/177338004)เพิ่มความหมายของรหัสผ่านสำหรับการช่วยเหลือพิเศษ (I231ce)
เพิ่ม ProgressBarRangeInfo เพิ่ม ProgressBarRangeInfo เพื่อทําเครื่องหมายแถบความคืบหน้าแบบไม่ชัดเจนสําหรับการช่วยเหลือพิเศษ (I6fe05)
ขณะนี้เวลาเล่นในภาพเคลื่อนไหวยังไม่เท่ากับนาโนวินาที (If776a)
@ComposableContract เลิกใช้งานแล้วเพื่อใช้คำอธิบายประกอบที่เจาะจงมากขึ้นอีก 3 รายการ
@ComposableContract(restartable = false)
เปลี่ยนเป็น@NonRestartableComposable
แล้ว@ComposableContract(readonly = true)
เปลี่ยนเป็น@ReadOnlyComposable
แล้ว@ComposableContract(preventCapture = true)
ได้เปลี่ยนเป็น@DisallowComposableCalls
นำ@ComposableContract(tracked = true)
ออกแล้ว (I60a9d)เลิกใช้งานยูทิลิตี
emptyContent()
และ(@Composable () -> Unit).orEmpty()
แล้วเนื่องจากไม่มีผลกระทบหรือค่าด้านประสิทธิภาพในเชิงบวกอีกต่อไป (I0484d)ปิดเครื่องมือปรับแต่งได้แล้ว รีคอมโพสเซอร์แบบปิดจะ จัดองค์ประกอบใหม่ต่อจนกว่าโครูทีนเด็กการเรียบเรียงเพลงจะเสร็จสมบูรณ์ Recomposer.shutDown เปลี่ยนชื่อเพื่อตัดกับการปิด (Ib6d76)
มีการทำเครื่องหมาย API ที่เกี่ยวข้องกับ LazyVerticalGrid ว่าเป็นเวอร์ชันทดลอง (Ia53e3, b/178519862)
RememberSavedInstanceState() เปลี่ยนชื่อเป็น RememberSaveable() และย้ายไปที่แพ็กเกจ androidx.compose.runtime.saveable แล้ว (I1366e, b/177338004)
relorableStateHolder เปลี่ยนชื่อเป็น SaveableStateHolder และย้ายไปยังแพ็กเกจ androidx.compose.runtime.saveable เมธอดภายในRESTorableStateProvider ถูกเปลี่ยนชื่อเป็น SaveableStateProvider มีการนำประเภททั่วไปออก เพื่อให้คุณสามารถส่งเพียง "ใดก็ได้" เป็นคีย์ ไม่จำเป็นต้องใช้คำอธิบายประกอบรุ่นทดลองอีกต่อไป (I0902e, b/174598702)
โหมดประหยัด, listSaver(), MapSaver(), autoSaver ถูกย้ายจาก androidx.compose.runtime.savedinstancestate ไปยัง androidx.compose.runtime.saveable (I77fe6) แล้ว
อาร์ติแฟกต์ androidx:compose:runtime:runtime-saved-instance-state เปลี่ยนชื่อเป็น androidx:compose:runtime:runtime-saveable (I6dcac) แล้ว
มีการลบ API ที่เลิกใช้มานานจำนวนมากในแพ็กเกจ UI (I2f2dc)
เลิกใช้งานอาร์ติแฟกต์ Compose:runtime-dispatch แล้ว ขณะนี้สามารถดู MonotonicFrameClock ได้ใน write:runtime และ ดู AndroidUiDispatcher ได้ในCompose:ui (Ib5c36)
พารามิเตอร์ใน RounderCornerShape, CutCornerShape และ CornerBasedShape ถูกเปลี่ยนชื่อจากซ้าย/ขวาไปยังจุดเริ่มต้น/สิ้นสุดเพื่อรองรับการมิเรอร์อัตโนมัติของรูปร่างในทิศทาง RTL เราได้เริ่มใช้ AbsoluteRounderCornerShape และ AbsoluteCutCornerShape สำหรับกรณีที่ไม่ต้องการให้มิเรอร์อัตโนมัติ (I61040, b/152756983)
นำ canDrag ออกจาก Modifier.scrollable แล้ว (Id66e7, b/175294473)
API เป้าหมายของปลั๊กอินคอมไพเลอร์ Compose ได้รับการปรับโครงสร้างภายในโค้ดใหม่ เพื่อใช้อินเทอร์เฟซแทน ที่แน่นอนได้ง่าย อินเทอร์เฟซก็ไม่ใช้งาน พารามิเตอร์ประเภท
นี่เป็นการเปลี่ยนแปลงภายในที่ไม่ควรมีผลกับแหล่งที่มา สามารถใช้งานร่วมกันของโค้ดได้ แต่เป็นการเปลี่ยนแปลงการขัดข้องแบบไบนารี (I3b922, b/169406779)
นำ Modifier.scaleGestureFilter ออกแล้ว ใช้ Modifier.zoomable แทน หรือใช้
Modifier.pointerInput { detectMultitouchGestures { ... }}
(Id5da1, b/175294473)เลิกใช้งาน AnimatedValue/Float แล้ว โปรดใช้ ภาพเคลื่อนไหวแทน (I71345, b/177457083)
- นำ CoreText และ CoreTextField ออกจาก API สาธารณะ
- นำ SelectionContainer โอเวอร์โหลด (I99c19) ที่เลิกใช้งานแล้วออก
นำฟังก์ชันการเลื่อนที่ไม่ถูกระงับที่เลิกใช้งานแล้วออก การใช้การเลื่อนอย่างต่อเนื่องตามการเปลี่ยนแปลงจากรุ่นล่าสุดคือการเลื่อนแบบไม่ถูกระงับ ฟังก์ชันจะถูกลบทั้งหมด โปรดเปลี่ยนเป็นการระงับ ที่มีชื่อเดียวกัน ขอบเขต Coroutine หาได้จาก RememberCoroutineScope() (I3d39c, b/178169563)
androidx.compose.foundation.layout.ConstraintLayout เลิกใช้งานแล้วเพื่อใช้ androidx.constraintlayout.compose.ConstraintLayout แทน คุณจะต้องเพิ่มทรัพยากร Dependency ใน
androidx.constraintlayout:constraintlayout-compose:1.0.0-alpha01
(I87adc)เลิกใช้งาน "tapGestureFilter, DoubleTouchGestureFilter, lengthPressGestureFilter และ pressIndicaitonGestureFilter ) แล้ว ใช้ Modifier.clickable หรือ Modifier.pointerInput กับฟังก์ชัน preventTouchGestures แทน (I6baf9, b/175294473)
นำ
Recomposer.current()
ออกแล้ว [Abstract]ComposeView เลย จะใช้ค่าเริ่มต้นเป็น Recomposer ที่สร้างแบบ Lazy Loading เป็น Recomposer ที่มีขอบเขตเป็นหน้าต่าง ซึ่งขับเคลื่อนด้วย ViewTreeLifecycleOwner สำหรับหน้าต่าง การจัดองค์ประกอบใหม่และ หยุดภาพเคลื่อนไหวจาก withFrameNanos ไว้ชั่วคราวขณะ Lifecycle ของโฮสต์ จะหยุดลง (I38e11)ตอนนี้ Recomposer.runningRecomposers มีระบบ StateFlow ระดับโลก RecomposerInfo แบบอ่านอย่างเดียวสำหรับสังเกตสถานะการเรียบเรียงต่อเนื่องใน ขั้นตอน เลือกใช้ API นี้กับ Recomposer.current() ซึ่งตอนนี้คือ เลิกใช้งานแล้ว (If8ebe)
เวอร์ชัน 1.0.0-alpha11
28 มกราคม 2021
ปล่อย androidx.compose.foundation:foundation:1.0.0-alpha11
และ androidx.compose.foundation:foundation-layout:1.0.0-alpha11
แล้ว เวอร์ชัน 1.0.0-alpha11 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
เลิกใช้งานการเลื่อนแบบไม่ถูกระงับ นำ ScrollTo ที่ไม่ถูกระงับออก
เราขอแนะนำให้ใช้ฟังก์ชันระงับเพื่อควบคุมการเลื่อนและรอ เพื่อให้การเลื่อนเสร็จสิ้น เรากำลังจะเลิกใช้งานและ/หรือนำ ฟังก์ชันเหล่านี้ในเวอร์ชันที่ไม่ถูกระงับซึ่งเป็นส่วนหนึ่งของการเปลี่ยนแปลงนี้ (Ie9ced)
เลิกใช้งาน Smooth ScrollBy เป็นการระงับ เราขอแนะนำให้ใช้ฟังก์ชันระงับเพื่อควบคุมการเลื่อนและรอ เพื่อให้การเลื่อนเสร็จสิ้น เรากำลังจะเลิกใช้งานเวอร์ชันที่ไม่ถูกระงับ ฟังก์ชันเหล่านี้ไว้เป็นส่วนหนึ่งของการเปลี่ยนผ่านนี้ (I12880)
เพิ่มพารามิเตอร์คำอธิบายเนื้อหาลงในรูปภาพและไอคอนแล้ว โดยใช้เพื่อให้คำอธิบายเกี่ยวกับบริการการช่วยเหลือพิเศษ (I2ac4c)
BasicTextField ได้รับพารามิเตอร์ใหม่ชื่อ "decorationBox" ทำให้สามารถเพิ่มการตกแต่ง เช่น ไอคอน ตัวยึดตำแหน่ง ป้ายกำกับ และคล้ายกับช่องข้อความ และเพิ่มพื้นที่เป้าหมาย Hit ของช่อง (I16996)
นำพารามิเตอร์ canDrag ออกจาก Modifier.draggable (Ic4bec, b/175294473) แล้ว
นำ AnimatedFloat.fling ที่ยอมรับ FlingConfig ออกแล้ว โปรดใช้การระงับ Animatable.animatedecay แทน (I4659b, b/177457083)
นำ
data class
ออกจากชั้นเรียนต่อไปนี้แล้ว:- เนื้อหาข้อความในบรรทัด
- รายชื่อสถานที่
- (I605c7)
สามารถสร้างคลิกได้ เปิด/ปิด และเลือกได้นอกการเรียบเรียงได้แล้ว (I0a130, b/172938345, b/175294473)
เลิกใช้งาน ScrollableColumn/Row แล้ว การใช้ ScrollableColumn มีประสิทธิภาพน้อยกว่าเมื่อเทียบกับ LazyColumn เมื่อคุณมีเนื้อหาแบบเลื่อนจำนวนมาก เนื่องจาก LazyColumn ทำให้เราสามารถเขียน/วัด/วาดองค์ประกอบที่มองเห็นได้เท่านั้น เพื่อป้องกันไม่ให้ผู้ใช้ทำงานได้อย่างมีประสิทธิภาพ เราจึงตัดสินใจเลิกใช้งาน ScrollableColumn และ ScrollableRow และโปรโมตการใช้งาน LazyColumn และ LazyRow แทน ผู้ใช้ยังคงสามารถตัดสินใจได้ว่าไม่ต้องการลักษณะการทำงานแบบ Lazy Loading และใช้ตัวแก้ไขโดยตรง เช่น Column(Modifier.verticalscroll(rememberscrollState())) (Ib976b, b/170468083)
วิธีการใหม่จาก
items(count: Int)
เริ่มต้นสําหรับขอบเขต LazyColumn/LazyRow/LazyVerticalGrid ตอนนี้items(items: List)
และitemsIndexed(items: List)
เป็นฟังก์ชันส่วนขยายแล้ว คุณจึงต้องนำเข้าฟังก์ชันเหล่านั้นด้วยตนเองเมื่อใช้ การใช้งานส่วนขยายใหม่มากเกินไปสำหรับอาร์เรย์: items(items: Array) และ itemsIndexed(Array) (I803fc, b/175562574)ระบบนำ AbsoluteAsortment ที่เลิกใช้งานแล้วออกแล้ว (Iffa96, b/177641870)
มีการเพิ่มพารามิเตอร์ DistributionMinConstraints ลงใน Box เพื่อระบุว่าควรส่งข้อจำกัดขั้นต่ำที่เข้ามาใหม่ไปยังเนื้อหาของ Box หรือไม่ ทั้งนี้ ระบบตั้งค่าเริ่มต้นไว้ที่ false (I0125b, b/152613457)
แก้ไขข้อบกพร่อง
- เราเลิกใช้งาน onCommit, onDispose และ onActive แล้วเพื่อเปลี่ยนไปใช้ SideEffect และ DisposableEffect API (If760e) แทน
- โดยWithConstraints ได้รับการปรับปรุงใหม่เป็น BoxWithConstraints และย้ายไปยัง Foundation.layout (I9420b, b/173387208)
การเปลี่ยนแปลงฟังก์ชันเริ่มต้นสำหรับแบบอักษร/FontFamily/แบบอักษร
- เพิ่มฟังก์ชันจากโรงงานที่เริ่มต้นด้วยตัวพิมพ์ใหญ่
- เลิกใช้งานฟังก์ชันจากโรงงานก่อนหน้าที่มีตัวพิมพ์เล็ก อักษรตัวแรก
- ฟังก์ชันใหม่เป็นค่าเริ่มต้นจะแสดง FontFamily แทนที่จะเป็น คลาสย่อย
- ซ่อนตัวสร้างของคลาสย่อยเพื่อให้คุณสามารถ จะสร้างขึ้นผ่านฟังก์ชันจากโรงงานเท่านั้น
- เปลี่ยนชื่อ Font.asFontFamily เป็น Font.toFontFamily แล้ว
- (I42aa7)
เปิดตัว
ComposeContentTestRule
ซึ่งครอบคลุมถึงComposeTestRule
และกำหนดsetContent
ซึ่งถูกนำออกจากComposeTestRule
เพิ่มเมธอดจากโรงงานcreateEmptyComposeRule()
แล้ว ที่แสดงComposeTestRule
และไม่เรียกใช้กิจกรรมสำหรับ ให้ทำงานแทนคุณ ใช้ตัวเลือกนี้เมื่อคุณต้องการเปิด "กิจกรรม" ระหว่างการทดสอบ เช่น กำลังใช้ActivityScenario.launch
(I9d782, b/174472899)animateAsState เปลี่ยนเป็น animateFooAsState โดย Foo คือ ประเภทของตัวแปรที่เคลื่อนไหวได้ เช่น Float, Dp, ออฟเซ็ต ฯลฯ (Ie7e25)
ตอนนี้ความหนาแน่นเปลี่ยนเป็นขอบเขตผู้รับสำหรับอินเทอร์เฟซการจัดเรียงแล้ว (I18aad)
TextFieldValue ยอมรับ AnnotatedString อย่างไรก็ตาม การเปลี่ยนแปลงเฉพาะ API และการแก้ไขข้อความแบบหลายสไตล์ไม่ใช่ มีการใช้งานแล้ว
- นำ
initial
ออกจากพารามิเตอร์ตัวสร้าง EditBuffer (I326d5)
- นำ
"โมฆะ" และ "ComCompositionReference()" จะถูกเลิกใช้งานเพื่อใช้ CurrentRecomposeScope และ RememberComCompositionReference ตามลำดับ (I583a8)
AnnotatedString มีการเปลี่ยนแปลงเพื่อขยายจาก kotlin.CharSequence ดังนั้น ความยาวและลำดับย่อยจึงกลายเป็นฟังก์ชันอินสแตนซ์ และฟังก์ชันของส่วนขยายจะถูกนำออก (Iaf429)
ระบบจะแทนที่ระยะเวลาและระยะเวลาทำงานด้วยมิลลิวินาทีที่ใช้เวลานาน และขั้นตอนนี้จะนำการอ้างอิงอินพุตของตัวชี้เหล่านั้นออก ใหม่ (Ia33b2, b/175142755, b/177420019)
RememberObserver มาแทนที่ CompositionLifecycleObserver และ CompositionLifecycleObserver เลิกใช้งานแล้ว
RememberObserver
มาแทนที่CompositionLifecycleObserver
อรรถศาสตร์ที่ดัดแปลงและ ที่เปลี่ยนชื่อแล้ว การเปลี่ยนไปใช้ API ใหม่สามารถทำได้โดยกลไก สำหรับออบเจ็กต์ที่ถูกจดจำเพียงครั้งเดียว ซึ่งก็คือ แนวทางปฏิบัติที่แนะนำ อย่างไรก็ตาม หากข้อมูลอ้างอิง ถูกจดจำมากกว่า 1 ครั้งในการเรียบเรียงเพลงonRemembered
สำหรับการอ้างอิงแต่ละรายการที่มีการเรียกonEnter
เพียงครั้งเดียวonEnter
ถูกเรียกหลายครั้ง หากใช้อ็อบเจกต์ในองค์ประกอบย่อย เช่นWithConstraints
และScaffold
ที่สร้างซิงเกิล การรับประกันการโทรของonEnter
ไม่น่าเชื่อถือและถูกนำออกสำหรับRememberObserver
RememberObserver
จะเพิ่มonAbandoned
ซึ่งจะถูกเรียกหากฟิลด์ ส่งคืนอินสแตนซ์RememberObserver
รายการจาก Callback ที่ผ่านแล้ว ถึงremember
แต่ระบบจำไม่ได้ในสถานะการเรียบเรียง ดังนั้นจึงจะไม่มีการเรียกใช้onRemembered
เลย สิ่งนี้สามารถ เกิดขึ้นเมื่อข้อยกเว้นสิ้นสุดการเรียบเรียงก่อนเสร็จสิ้นหรือ การแต่งเพลงถูกยกเลิกเนื่องจากสถานะกำลังสร้าง การแต่งเพลงสำหรับ ไม่เป็นปัจจุบันหรือไม่ได้เป็นอีกต่อไปแล้ว ที่จำเป็น ถ้าอินสแตนซ์ของRememberObserver
ต่อจากซิงเกิล คำแนะนำข้อมูลอ้างอิงด้านบนกำลังติดตามทรัพยากรภายนอก ทั้งonForgotten
และonAbandoned
ต่างก็ระบุว่า ไม่จำเป็นต้องใช้ทรัพยากรอีกแล้ว หากออบเจ็กต์กำลังติดตามงาน เริ่มต้นหรือทรัพยากรที่จัดสรรในonRemembered
,onAbandoned
สามารถเพิกเฉยได้ เนื่องจากจะไม่เรียกใช้หากonRemembered
คือ โทรออก (I02c36)เปลี่ยนชื่อ TransformedText.transformedText เป็น TransformedText.text แล้ว
- TransformText ไม่ใช่คลาสข้อมูลอีกต่อไป (Ie672a)
คลาสต่อไปนี้ไม่ใช่คลาสข้อมูลแล้ว
- สตริงคำอธิบายประกอบ
- ParagraphStyle
- สไตล์ Span
- TextStyle
- น้ำหนักแบบอักษร
- การตกแต่งข้อความ
- เปลี่ยนรูปแบบเรขาคณิตของข้อความ
- ดัชนีข้อความ
- ผลลัพธ์ของเลย์เอาต์ข้อความ
- อินพุต TextLayout (Iaff99)
นำเมธอด monotonicFrameAnimationClockOf แบบทดลอง (Ib753f, b/170708374) ออกแล้ว
เลิกใช้งานวิธีการพิกัดโลกและ "สร้าง" วิธีการพิกัดใหม่ตามหน้าต่าง (Iee284)
โปรดใช้ ImeAction.None แทน ImeAction.NoAction
- โปรดใช้ ImeAction.Default แทน ImeAction.Unidentifier (Ie1bcc)
ตอนนี้ FocusRequester.createRefs มีการทำเครื่องหมายเป็นทดลองเนื่องจากอาจมีการเปลี่ยนแปลง (I2d898, b/177000821)
SemanticsPropertyReceiver.hidden เปลี่ยนชื่อเป็น invisibleToUser และมีการทำเครื่องหมาย @ExperimentalComposeUiApi เปลี่ยนชื่อ AccessibilityRangeInfo เป็น ProgressBarRangeInfo StateDescriptionRange เปลี่ยนชื่อเป็นprogressBarRangeInfo AccessibilitySlideState เปลี่ยนชื่อเป็น ScrollAxisRange VerticalAccessibilitySlideState เปลี่ยนชื่อเป็น LandscapescrollAxisRange verticalAccessibilitySlideState เปลี่ยนชื่อเป็น verticalscrollAxisRange (รหัส 3148)
เปลี่ยน VisualTransformation ให้เป็นอินเทอร์เฟซที่ใช้งานได้ (I3bba4)
ใช้ประโยชน์จาก TestCoroutineDispatcher ในการทดสอบ (I532b6)
นำ PointerInputData ออกและ PointerInputChange ที่แก้ไขแล้ว เพื่อระบุฟิลด์ทั้งหมดของ PointerInputData สร้างเหตุการณ์ป้อนข้อมูลตัวชี้ และ PointerInputEventData ภายในเนื่องจากไม่ได้ใช้ใน API สาธารณะทั้งหมด (Ifff97, b/175142755)
เปลี่ยนชื่อ TextInputService.onStateUpdated เป็น updateState (Id4853)
นำ displaySize ออกตามที่ควรหลีกเลี่ยง โดยปกติจะเป็น ควรใช้ขนาดของ onRoot() หรือขนาดหน้าต่างเป็นอย่างน้อย (I62db4)
เวอร์ชัน 1.0.0-alpha10
13 มกราคม 2021
ปล่อย androidx.compose.foundation:foundation:1.0.0-alpha10
และ androidx.compose.foundation:foundation-layout:1.0.0-alpha10
แล้ว เวอร์ชัน 1.0.0-alpha10 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ImeOptions และ KeyboardOptions ไม่ใช่คลาสข้อมูลอีกต่อไป (I3c898, b/168684531)
- การเปลี่ยนแปลง VisualTransformation API
- เปลี่ยนชื่อ OffsetMap เป็น OffsetMapping แล้ว
- เปลี่ยนชื่อ OffsetMapping.identityOffsetMap เป็น OffsetMapping.Identity แล้ว
- PasswordTransformation ไม่ใช่คลาสข้อมูลอีกต่อไป
- ย้าย OffsetMapping ไปยังไฟล์ของตัวเอง
- (I0bdf3)
- การเปลี่ยนแปลง EditOperations API
- เปลี่ยนชื่อ EditOperation เป็น EditCommand
- เพิ่มคำต่อท้ายคำสั่งสำหรับการติดตั้งใช้งานอย่างเป็นรูปธรรมของ EditOperation
- EditCommand ไม่ใช่คลาสข้อมูลอีกต่อไป
- เปลี่ยนชื่อฟังก์ชัน EditOperation.process เป็น ApplyTo แล้ว
- เปลี่ยนชื่อ InputEventListener เป็น InputEventCallback แล้ว
- (I0a366)
- อัตราความเร็วที่ปรับแล้วให้มีชิ้นส่วนประกอบและการคำนวณทางคณิตศาสตร์ (Ib0447)
- เปลี่ยนชื่อ @ExperimentalTesting เป็น @ExampleTestApi เป็น สอดคล้องกับคำอธิบายประกอบ API ทดลองที่คล้ายกัน (Ia4502, b/171464963)
- เพิ่มเมธอด StickyHeader แบบทดลองสำหรับ LazyColumn/LazyRow (I0a81d)
- Color.useOrElse() เป็น Color.takeOrElse() (Ifdcf5)
- TestUiDispatcher เลิกใช้งานแล้ว ใช้ Dispatchers.Main แทน (Ic171f, b/175385255)
- เพิ่มปุ่มสลับไปยัง Strings.kt พื้นฐาน (I4a5b7, b/172366489)
- ย้าย NativeClass ไปยัง โมดูล UI และทำให้เป็นโมดูลภายใน อัปเดตการใช้งาน NativeClass ใน เท่ากับการติดตั้งใช้งาน "is MyClass" แทน (I4f734)
- เลิกใช้งาน FlowRow และ FlowColumn แล้ว โปรดใช้รูปแบบที่กำหนดเองแทน (I09027)
- เลิกใช้งาน Modifier.Focus() และ Modifier.focusRequester() แล้ว โปรดใช้ Modifier.focusModifier() และ Modifier.FocusReference() แทน (I75a48, b/175160751, b/175160532, b/175077829)
- เปิดตัว SelectionRegistrar.notifySelectableChange เพื่อแจ้งการอัปเดต Selectable ใน SelectionManager (I6ff30, b/173215242)
- เปลี่ยน
fun Dp.isFinite()
เป็นval Dp.isFinite
(I50e00) - เปลี่ยนชื่อ Constraints#sจะเปลี่ยนโดย เป็น isSPricingBy (I9cf5c)
- เพิ่ม isSpecified, isUnidentifier และ useOrElse สำหรับ คลาสในบรรทัดที่มีค่าคงที่ที่ไม่ระบุ (I93f7b, b/174310811)
แก้ไขข้อบกพร่อง
- API ใหม่ที่อิงตาม Coroutine
Animatable
เพื่อให้มั่นใจว่าไม่มีการแบ่งแยก ท่ามกลางภาพเคลื่อนไหว DecayAnimationSpec ใหม่เพื่อรองรับภาพเคลื่อนไหวลดลงหลายมิติ (I820f2, b/168014930) - เพิ่มการสนับสนุนสำหรับฟิลด์ข้อความที่ปิดใช้และอ่านอย่างเดียว (I35279, b/171040474, b/166478534)
- ตอนนี้แทนที่
animate()
ด้วยanimateAsState()
แล้ว ซึ่งแสดงผลเป็นState<T>
แทนT
วิธีนี้ทำให้ ประสิทธิภาพสูงสุด เนื่องจากสามารถจำกัดขอบเขตการใช้งานไม่ได้ให้แคบลงได้ ตรงตำแหน่งที่มีการอ่านค่า State (Ib179e) - เพิ่ม API บทบาทความหมาย และเพิ่มบทบาทเป็นพารามิเตอร์ใน SemanticsModifier ที่คลิกได้ เลือกได้ และสลับได้ เปลี่ยนแปลงแล้ว Modifier.progressSemantics เพื่อให้ Slider ใช้งานได้ (I216cd)
- ตอนนี้คุณจะเข้าถึง keyEvent แบบเนทีฟได้ผ่าน keyEvent.nativeKeyEvent (I87c57, b/173086397)
เวอร์ชัน 1.0.0-alpha09
16 ธันวาคม 2020
ปล่อย androidx.compose.foundation:foundation:1.0.0-alpha09
และ androidx.compose.foundation:foundation-layout:1.0.0-alpha09
แล้ว เวอร์ชัน 1.0.0-alpha09 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
เพิ่มอินเทอร์เฟซแบบเลื่อนได้
วิธีนี้ทำให้ระบบยอมรับ ScrollState และ LazyListState ร่วมกัน ซึ่งทำให้สามารถใช้การเลื่อนที่กำหนดเองในทั้ง 2 ประเภทได้
ซึ่งจะเป็นการย้าย ให้เลื่อนไปที่ฟังก์ชันส่วนขยายใน Scrollable การใช้ประโยชน์จากฟังก์ชันนี้ (I2153B)
เพิ่ม LazyVerticalGrid แล้ว (I17267, b/162213211)
เลิกใช้งาน LazyColumnFor, LazyRowFor, LazyColumnForIndexed และ LazyRowForIndexed ใช้ LazyColumn และ LazyRow แทน (I5b48c)
สำหรับการระงับ API อินพุตตัวชี้ เปลี่ยนชื่อ HandlePointerInputScope กับ AwaitPointerEventScope และ ManagePointerInput() ไปยัง awaitPointerEventScope() (Idf0a1, b/175142755)
มีการเพิ่ม LazyListState.layoutInfo ซึ่งจะแสดงรายการขนาดและออฟเซ็ตของรายการที่ปรากฏในปัจจุบัน (If8678, b/170472532)
นำคำอธิบายประกอบ ExperimentalPointerInput ออกแล้ว (Ia7a24)
เพิ่มการสนับสนุน InteractionState สำหรับ TextFields แล้ว (I61d91)
เพิ่มพารามิเตอร์ ReverseLayout สําหรับ LazyColumn/แถว เมื่อ
true
รายการจะเขียนจากล่างขึ้นบนและLazyListState.firstVisibleItemIndex == 0
จะหมายถึงรายการแรกอยู่ด้านล่าง (I552ae, b/166589935)เพิ่มพารามิเตอร์แนวตั้งของ LazyColumn แล้ว เพิ่มพารามิเตอร์ Alignment ของแนวนอนสำหรับ LazyRow แล้ว การจัดเรียงช่วยให้เราสามารถเพิ่มระยะห่างระหว่างสินค้า และระบุการจัดเรียงสินค้าเมื่อมีสินค้าไม่เพียงพอที่จะเติมเต็มขนาดขั้นต่ำทั้งหมด (Icf79a, b/170394300)
ตอนนี้ตรวจจับท่าทางสัมผัสแบบมัลติทัชจะใช้ Callback 1 รายการร่วมกับการผสม พารามิเตอร์แบบเซนทรอยด์ เลื่อน ซูม และหมุน (Ie6e1c)
ย้าย ContentDrawScope ไปยังกราฟิก UI แล้ว กับ DrawScope (Iee043, b/173832789)
แก้ไขข้อบกพร่อง
- ตอนนี้ Lambda ในตัวแก้ไขออฟเซ็ตจะแสดงผล IntOffset แทนที่จะเป็น Float (Ic9ee5, b/174137212, b/174146755)
นำ SlotTable, SlotReader และ ออกแล้ว SlotWriter จาก API สาธารณะ โดยทำเครื่องหมายเป็น InternalComposeAPI ไว้ก่อนหน้านี้ แต่เป็นการใช้งานภายใน ไปยังโมดูลการเขียน
เพิ่ม CompositionData และ CompositionGroup เป็น การแทนที่ ui-tooling API เพื่อใช้ในการดึงข้อมูล ข้อมูลการเรียบเรียง รายการเหล่านี้เป็นแบบสาธารณะแต่ไม่ใช่ ใช้สำหรับภายนอก UI-tooling API เนื่องจากมี ข้อมูลดิบที่ API ของเครื่องมือ UI ตีความ (I31a9c)
เปลี่ยนตัวแปร ShaderBrush เป็น สร้างอินสแตนซ์ตัวปรับแสงเงาเมื่อ ข้อมูลของขนาดภาพวาด ที่มีอยู่ วิธีนี้มีประโยชน์ในการกำหนดการไล่ระดับสีที่ อยู่ในขอบเขตการวาดของ Composable ในเวลาเขียน โดยไม่ต้อง ติดตั้งใช้งาน DrawModifier ที่กำหนดเอง
API ตัวสร้างฟังก์ชันการไล่ระดับสีที่เลิกใช้งานแล้ว ในวิธีจากโรงงานกับวัตถุการไล่ระดับสี (I511fc, b/173066799)
Modifier. นั่นคือObserver เลิกใช้งานแล้ว ใช้ Modifier.onFocusChanged หรือ Modifier.onFocusEvent แทน (I30f17, b/168511863, b/168511484)
ขณะนี้ API ป้อนข้อความอัตโนมัติเป็น API ที่อยู่ระหว่างการทดลองและต้องมีการเลือกใช้ (I0a1ec)
การเพิ่มการประกาศการยกเลิกโครงสร้างเพื่อสร้างอินสแตนซ์ FocusRequester (I35d84, b/174817008)
ได้เปลี่ยนชื่อ AccessibilityLabel เป็น contentDescription AccessibilityValue เปลี่ยนชื่อเป็น statusDescription แล้ว (I250f2)
ได้เปิดตัวฟังก์ชันใหม่หลายอย่างใน SelectionRegistrar รวมถึงเปลี่ยนชื่อ onPositionChange เป็นแจ้งให้ทราบPositionChange (Ifbaf7)
AndroidOwner สร้างภายใน (Ibcad0, b/170296980)
ฟังก์ชัน infinitefiniteable แบบใหม่สำหรับการสร้าง InfiniteDuplicateableSpec (I668e5)
มีการเปลี่ยนแปลงอินเทอร์เฟซของ
Applier
เพื่อลดความซับซ้อน สร้างต้นไม้จากล่างขึ้นบนแทนที่จะสร้างจากด้านบนเมธอด
insert()
เปลี่ยนชื่อเป็นinsertTopDown()
แล้วเพิ่มเมธอด
insertBottomUp()
ใหม่แล้วแอปพลิเคชันจะแทรกโหนดลงในแผนผังที่กำลังแก้ไข โดยใช้
insertTopDown()
หรือinsertBottomUp()
ขึ้นอยู่กับ ซึ่งทำงานได้ดีกว่าต้นไม้บางต้น เช่น
LayoutNode
และView
จะมีขนาดใหญ่กว่า มีประสิทธิภาพในการสร้างจากล่างขึ้นบน มากกว่าจากด้านบนลงล่าง ก่อนการเปลี่ยนแปลงนี้ ต้องมีกลุ่มของส่วนแทรกในการใช้งานจากล่างขึ้นบน จำเป็นต้องคัดลอกไปยังเครื่องมือทั้งหมดที่ต้องขึ้นไปด้านล่าง ที่ช่วยเพิ่มประสิทธิภาพ การเปลี่ยนแปลงนี้จะทำให้Applier
ลบล้างinsertBottomUp()
เพื่อสร้างแผนผังต้นไม้และinsertTopDown()
เพื่อสร้างแผนผังต้นไม้ (Icbdc2)เพิ่ม API ของ PainterResource แล้ว ในการจัดการกับออบเจ็กต์ Painter ที่โหลดแบบทึบ จากรูปแบบชิ้นงานแรสเตอร์ (เช่น PNG) หรือ VectorDrawables ผู้บริโภคไม่มี เพื่อระบุประเภทของเนื้อหาล่วงหน้า และสามารถเรียกใช้เมธอดนี้เพื่อรับออบเจ็กต์ Painter เพื่อใช้ใน Image Composables หรือ Painters (I2c703, b/173818471)
เพิ่มฟังก์ชันค่าเริ่มต้น createAnnotatedString ในลำดับ เพื่อสร้าง AnnotatedString สตริงที่มีคำอธิบายประกอบที่เลิกใช้งานแล้ว เครื่องมือสร้างขึ้นมา (Idfe0b)
เวอร์ชัน 1.0.0-alpha08
2 ธันวาคม 2020
ปล่อย androidx.compose.foundation:foundation:1.0.0-alpha08
และ androidx.compose.foundation:foundation-layout:1.0.0-alpha08
แล้ว เวอร์ชัน 1.0.0-alpha08 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- นำพารามิเตอร์
maxLines
ออกจากCoreTextField
แล้ว หากต้องการจำกัดความสูงของช่องข้อความตามจำนวนบรรทัด ให้ใช้BasicTextField
แทน (Iec002) - เปลี่ยนเมธอด
await*TouchSlop()
เป็น ไม่พบตัวชี้ลงและเปลี่ยนชื่อเป็น*OrCancellation
และลดความจำเป็นใน พารามิเตอร์orientationLock
(Ie96e1) - เพิ่มการตรวจสอบ Lint สำหรับการตั้งชื่อและตำแหน่งของพารามิเตอร์ lambda ที่ประกอบกันได้ เพื่อตรวจสอบความสอดคล้องของหลักเกณฑ์การเขียน
รวมทั้งย้ายข้อมูล API บางรายการโดยใช้
children
เป็นชื่อสำหรับ lambda ต่อท้ายcontent
ตามการตรวจสอบ Lint และคำแนะนำ (Iec48e) - ย้าย
foundation:foundation-text
API ไปยังfoundation:foundation
แล้ว โครงสร้างแพ็กเกจยังคงเหมือนเดิม (Id3eb2) - ตัวตรวจจับท่าทางสัมผัสแบบมัลติทัชแบบใหม่ ได้แก่ ในการตรวจหาการหมุน การซูม และการเลื่อน (Ic459d)
- ตัวตรวจจับท่าทางสัมผัสการลากแบบใหม่ที่ระงับเคอร์เซอร์ API ของอินพุต รวมถึงการล็อกการวางแนว (Icef25)
- เปลี่ยนชื่อ VectorAsset เป็น ImageVector แล้ว ย้ายและเปลี่ยนชื่อ VectorAsset เป็น Builder เป็นคลาสภายในของ ImageVector ตาม หลักเกณฑ์ API ของสภา เพิ่ม typealias ของ VectorAssetBuilder แล้ว ลิงก์ไปยัง ImageVector.Builder สำหรับความเข้ากันได้ (Icfdc8)
- เปลี่ยนชื่อ ImageAsset และ เมธอดที่เกี่ยวข้องกับ ImageBitmap (Ia2d99)
- ย้ายคุณสมบัติพื้นฐานทางอรรถศาสตร์เป็น UI (I6f05c) แล้ว
เพิ่ม API การเลื่อนที่ใช้โครูทีน:
เพิ่ม LazyListState.snapToItem และ LazyListState.smoothscrollBy รวมถึงระดับต่ำลง API สำหรับการควบคุมการเลื่อน API เหล่านี้มีอินเทอร์เฟซการระงับเพื่อควบคุมการเลื่อน ที่รอจนการเลื่อนเสร็จสิ้นจึงค่อยกลับมา (Ie5642)
เพิ่มพารามิเตอร์ singeLine ลงใน BasicTextField, TextField และ OutlinedTextField ตั้งค่าพารามิเตอร์นี้เป็น "จริง" เพื่อให้ช่องข้อความเป็นบรรทัดเดียวที่เลื่อนในแนวนอนได้ (I57004, b/168187755)
ตัวตรวจจับท่าทางสัมผัสสำหรับการแตะ แตะสองครั้ง กดค้าง และสัญลักษณ์การกดถูกเพิ่มโดยใช้ตัวชี้การระงับใหม่ อินพุต มีการเพิ่มยูทิลิตีบางอย่างด้วย ซึ่งทำให้ง่ายขึ้น ให้นักพัฒนาซอฟต์แวร์เขียนตัวตรวจจับท่าทางสัมผัสของตนเอง (I00807)
ต้องเพิ่ม Modifier.focusable ในพื้นฐาน ใช้ฟีเจอร์นี้เพื่อเพิ่มลักษณะการทำงานที่โฟกัสได้ลงในคอมโพเนนต์ โดยใช้ความหมายและการช่วยเหลือพิเศษที่ถูกต้อง (I41eb9, b/152525426, b/162865824)
ก่อนหน้านี้ API ที่เลิกใช้งานถูกนำออก: มีการนำเส้นขอบออก โปรดใช้ BorderStroke แทน นำ Modifier.drawBorder ออกแล้ว โปรดใช้ Modifier.border แทน นำ Modifier.gravity ออกแล้ว โปรดใช้ Modifier.align แทน นำสแต็กออกแล้ว โปรดใช้ Box แทน (I32c2b, b/172470874)
AbsoluteAรายอื่นๆ ได้รับการเปลี่ยนชื่อเป็น Asortment.Absolute (If26f2)
แก้ไขข้อบกพร่อง
- ย้าย DrawModifier API จาก ในแพ็กเกจ androidx.compose.ui แพ็กเกจ androidx.compose.ui.draw สร้างไฟล์ DrawModifierDeprecated.kt ไปยังแล้ว รวมถึง typealiases/helper เพื่อช่วย การย้ายข้อมูลจาก API (รหัส 6044, b/173834241)
- เปลี่ยนชื่อ Modifier.drawLayer เป็น Modifier.graphicsLayer แล้ว รวมทั้งอัปเดตคลาสที่เกี่ยวข้องเป็น GraphicsLayer ตาม ความคิดเห็นเกี่ยวกับ API ของสภา (I0bd29, b/173834241)
- นํา
<T>
ออกจากการประกาศ SubcomposeLayout คุณสามารถใช้โดยไม่ต้องระบุประเภทได้เลย (Ib60c8) - สร้างระยะเวลาทำงานของ PointerInputData และ ฟิลด์ตำแหน่งต้องไม่เป็นค่าว่าง (Id468a)
- ตอนนี้ MaterialTheme จะตั้งค่าสีที่ถูกต้องสำหรับแฮนเดิลการเลือกและพื้นหลังของการเลือก แอปที่ไม่ใช่ Material สามารถใช้ AmbientTextSelectionColors เพื่อปรับแต่งสีที่ใช้ในการเลือกได้ (I1e6f4, b/139320372, b/139320907)
- พารามิเตอร์การจัดแนวของ Box เปลี่ยนชื่อเป็น contentAlignment แล้ว (I2c957)
- เปลี่ยนชื่อตัวปรับแต่งออฟเซ็ตPx เป็นออฟเซ็ต ตอนนี้จะใช้พารามิเตอร์ lambda แทน State แล้ว (Ic3021, b/173594846)
- เพิ่ม WindowManager.isWindowFocused เพื่อตรวจสอบว่าหน้าต่างโฮสต์อยู่ในโฟกัสหรือไม่ และ WindowFocusObserver ที่แสดง Callback onWindowFocusChanged (I53b2a, b/170932874)
- เพิ่มพารามิเตอร์resetInput ลงใน TextInputService#onStateUpdated (I3e8f5, b/172239032, b/171860947)
- API TextFieldValue ที่อัปเดต
- ทำให้ TextFieldValue.composition เป็นแบบอ่านอย่างเดียว
- มีการส่งข้อยกเว้นออกสำหรับช่วงการเลือกที่ไม่ถูกต้อง (I4a675, b/172239032)
- แอมเบียนท์ที่เลิกใช้งานซึ่งตั้งชื่อด้วย
Ambient
เป็นคำต่อท้าย และแทนที่ด้วยพร็อพเพอร์ตี้ใหม่ที่ขึ้นต้นด้วย "แอมเบียนท์" ตามหลักเกณฑ์อื่นๆ ของแอมเบียนท์และ Compose API (I33440) - เพิ่ม Wrapper ของแบบอักษร Android แล้ว คุณสามารถโหลด Android
แบบตัวพิมพ์ผ่านฟังก์ชัน
typeface
เช่นtypeface(Typeface.DEFAULT)
และเปลี่ยนชื่อtypefaceFromFontFamily()
เป็นtypeface()
(I52ab7) ด้วย - เพิ่มการตรวจสอบ Lint เพื่อตรวจสอบว่าโรงงานของตัวปรับแต่งใช้
androidx.compose.ui.composed {}
ภายในหรือไม่ แทนการทำเครื่องหมายเป็น@Composable
(I3c4bc) - เพิ่มการตรวจสอบ Lint เพื่อดูว่าฟังก์ชันจากโรงงานของ Modifier ถือเป็นส่วนขยายใน Modifier เพื่อให้เชื่อมต่อกันได้อย่างคล่องแคล่ว (I07981)
- เปลี่ยนชื่ออาร์กิวเมนต์ "MergeAllDescendants" แล้วเป็น MergeDescendants (Ib6250)
- การควบคุมเวลาในการทดสอบ (TestAnimationClock และการใช้งาน) คือ อยู่ในขั้นทดลอง (I6ef86, b/171378521)
- นำโมดูลการทดสอบ UI เก่าและสตับของโมดูลออก (I3a7cb)
- TextUnit.Inherit เปลี่ยนชื่อเป็น TextUnit แล้วแต่ยังไม่ระบุให้สอดคล้องกับหน่วยอื่นๆ (กรณีที่ 19)
- อัปเดตอินเทอร์เฟซการปรับแนวและทำให้ใช้งานได้แล้ว (I46a07, b/172311734)
- รวมโมดูล
foundation:foundation-text
เข้ากับfoundation:foundation
(Idac0f) แล้ว - สถานที่ที่เลิกใช้งาน(ออฟเซ็ต) และ PlaceRelative(ออฟเซ็ต) ใช้โอเวอร์โหลดที่มีออฟเซ็ต Int แทน (I4c5e7)
id
เปลี่ยนชื่อเป็นlayoutId
สำหรับLayoutIdParentData
แล้ว เปลี่ยนชื่อMeasurable.id
เป็นMeasurable.layoutId
แล้ว (Iadbcb, b/172449643)
เวอร์ชัน 1.0.0-alpha07
11 พฤศจิกายน 2020
ปล่อย androidx.compose.foundation:foundation:1.0.0-alpha07
, androidx.compose.foundation:foundation-layout:1.0.0-alpha07
และ androidx.compose.foundation:foundation-text:1.0.0-alpha07
แล้ว เวอร์ชัน 1.0.0-alpha07 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เช่นเดียวกับ
Modifier.fillMaxSize[Width|Height]
ขณะนี้เรารองรับเศษส่วนในModifier.fillParentMaxSize[Width|Height]
ภายในขอบเขตของLazyColumn/Row
(I797e2, b/166586426) - นำ
KeyboardOptions.toImeOptions
ออกจาก API สาธารณะแล้ว (Ic2e45) - เลิกใช้งาน AmbientTextStyle, ProvideTextStyle และ AmbientContentColor ของพื้นฐานแล้ว โปรดใช้เวอร์ชันใหม่ที่มีในไลบรารี Material แทน สำหรับแอปพลิเคชันที่ไม่ใช่ Material คุณควรสร้างระบบการออกแบบเฉพาะธีมสิ่งแวดล้อมที่สามารถใช้งานได้ในคอมโพเนนต์ของคุณเอง (I74acc, b/172067770)
- Foundation.Text เลิกใช้งานแล้วและแทนที่ด้วย Material.Text สำหรับ API ข้อความพื้นฐานที่ไม่ถูกตัดสินซึ่งไม่ใช้ค่าจากธีม โปรดดู androidx.compose.foundation.BasicText (If64cb)
- เพิ่ม maxLines ลงใน TextFields (Ib2a5b)
- อัปเดตฟิลด์ข้อความเพื่อยอมรับ KeyboardOptions (Ida7f3)
- เพิ่ม KeyboardOptions สำหรับการใช้งานใน TextFields (I9ca32)
- เพิ่ม BasicText เป็น API ที่ไม่ได้ออกแบบให้สำหรับข้อความ โดยขนานกับ BasicTextField (I28268)
- นำคำอธิบายประกอบ ExperimentalLazyDsl ออกแล้ว ตอนนี้คุณใช้ LazyColumn/LazyRow โดยไม่ต้องเพิ่ม @OptIn (Idab7a, b/166584730) ได้แล้ว
- เลิกใช้งาน BaseTextField แล้ว โปรดใช้ BasicTextField แทน (I896eb)
- มีการเพิ่ม BasicTextField มาแทนที่ทั้ง CoreTextField และ BaseTextField (Id4cea)
- นำ LazyColumnItems/LazyRowItems ที่เลิกใช้งานแล้ว (I1d8a8) ที่เลิกใช้งานแล้วออก
- Composable ที่เลิกใช้งานแล้วสำหรับการปรับขนาดตามการวัดที่แท้จริงถูกนำออก (I18537, b/171811496)
- RelativePaddingFrom เป็น paddingFrom แทน เพิ่มตัวปรับแต่ง addingFromBaseline เพื่ออำนวยความสะดวกในการระบุระยะทางตั้งแต่ขอบเขตของเลย์เอาต์ไปจนถึงเกณฑ์พื้นฐานของข้อความ (I0440a, b/170633813)
- เพิ่มพารามิเตอร์ matchHeightConstraintsFirst ลงในตัวปรับสัดส่วนการแสดงผล ซึ่งสามารถใช้เพื่อระบุตัวปรับให้มีขนาดตามการจำกัดความสูง ก่อนที่จะลองใช้ค่าที่สอดคล้องด้านความกว้าง (Ie7c43, b/155290593)
- นำ DpConstraints ที่เลิกใช้งานแล้วออกแล้ว (I87884, b/171702471)
แก้ไขข้อบกพร่อง
- เปิดตัว ScaleFactor
คลาสแบบอินไลน์เพื่อแสดงสัดส่วน
ปัจจัยสำหรับแนวนอนและแนวตั้ง
แกนที่เป็นอิสระจากกันตามลำดับ
เพื่อรองรับ Use Case ของการปรับขนาดที่ไม่ใช่แบบเดียวกัน
- เพิ่มเมธอด computeScaleFactor ไปยัง สเกลเนื้อหา
- เพิ่ม ContentScale.FillBounds เพื่อดำเนินการ การปรับขนาดไม่เป็นแบบเดียวกันเพื่อยืด src ขอบเขตเพื่อให้ครอบคลุมปลายทางทั้งหมด
- เพิ่มเมธอดโอเปอเรเตอร์ที่จะประมวลผลแล้ว พารามิเตอร์ ScaleFactor ที่มีพารามิเตอร์ขนาด
- (Ic96a6, b/172291582)
- ย้าย CaptureToBitmap ไปยัง CaptureToImage แล้ว (I86385)
- ทำเครื่องหมาย CoreText เป็น @internalTextApi โปรดใช้ BasicText แทน (I6aaeb)
- เปลี่ยนชื่อ KeyboardOptions เป็น ImeOptions (I82f36)
- ย้าย KeyboardType และ ImeAction ลงใน KeyboardOptions (I910ce)
- ทำเครื่องหมาย CoreTextField เป็น @internalTextApi ใช้ BasicTextField แทน (Ie2469)
- ลบคำอธิบายประกอบ ExperimentalSubcomposeLayoutApi แล้ว ตอนนี้สามารถใช้ SubcomposeLayout ได้โดยไม่ต้องเพิ่ม @OptIn (I708ad)
- แนะนำโมดูล ui-test-junit4 (Ib91f8)
- อัปเดต Icon API เพื่อใช้โหมด Color.Unidentifier เป็นสีจางที่เป็นไปได้ ซึ่งจะวาดตามที่ให้ไว้ Asset หรือ Painter ที่ไม่มี ColorFilter ก่อนหน้านี้ พยายามเพิกเฉยต่อการย้อมสีด้วย Color.Unidentifier จะย้อมด้วยสีโปร่งใสที่สุดท้าย โดยไม่แสดงผลเลย (I049e2, b/171624632)
- ย้าย Measureผลลัพธ์ ออกจาก MeasureScope (Ibf96d, b/171184002)
- มีการย้ายสัญลักษณ์ที่เกี่ยวข้องกับเลย์เอาต์หลายรายการจาก androidx.compose.ui ไปยัง androidx.compose.layout.ui (I0fa98, b/170475424)
- ย้าย androidx.ui.test ไปยัง androidx.compose.ui.test (I9ffdb) แล้ว
- FirstBaseline และ LastBaseline ย้ายไปยังแพ็กเกจ androidx.compose.ui.layout (Ied2e7) แล้ว
- เพิ่ม SelectionContainer โดยไม่มี Callback (Ibfadb) แล้ว
- เพิ่มการทดสอบสำหรับ SelectionHandles ตำแหน่งใน SelectionContainer (Ie93db)
- เพิ่มตัวเลือก IME การแก้ไขอัตโนมัติบนแป้นพิมพ์ (I57b8d)
เวอร์ชัน 1.0.0-alpha06
28 ตุลาคม 2020
ปล่อย androidx.compose.foundation:foundation:1.0.0-alpha06
, androidx.compose.foundation:foundation-layout:1.0.0-alpha06
และ androidx.compose.foundation:foundation-text:1.0.0-alpha06
แล้ว เวอร์ชัน 1.0.0-alpha06 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- androidx.compose.foundation.Icon ย้ายไปยัง androidx.compose.material.Icon แล้ว คุณสามารถใช้คอมโพเนนต์รูปภาพ / Modifier.paint() กับ Painter ได้เช่นกันหากไม่ต้องการใช้ไลบรารี Material (I9f622)
- เพิ่มInteractionState ลงใน Modifier.scrollable, ScrollableColumn และ LazyColumnFor (I81566, b/169509805)
- เพิ่ม PixelbookByBaseline ไปยัง RowScope และได้เปลี่ยนชื่อ alignWithSiblings เป็น alignBy (I06503, b/170628732)
- Box สร้างฟังก์ชันในบรรทัด (Ibce0c, b/155056091)
- เพิ่ม maxLines ลงใน CoreTextField (Ibee58, b/143687793)
- เพิ่ม softwrap ใน CoreTextField (I21a4b)
แก้ไขข้อบกพร่อง
- เลิกใช้งาน VectorPainter ใน โปรดจำ VectorPainter เพื่อ ระบุว่า Composable API ภายใน ใช้ประโยชน์จาก "การจดจำ" เพื่อคงข้อมูลไว้ งานประพันธ์ (Ifda43)
- เปิดใช้การเปลี่ยนใน ComposeTestRule ลบตัวเลือกในการ เปิดใช้เคอร์เซอร์ที่กะพริบจาก ComposeTestRule (If0de3)
- เพิ่มตัวเลือกแป้นพิมพ์บรรทัดเดียวใน CoreTextField (I72e6d)
- เปลี่ยนชื่อ Radius API เป็น CornerRadius แสดงออกได้ดียิ่งขึ้น วิธีใช้งานใน Compose อัปเดตเอกสารประกอบเพื่อระบุว่า รัศมีมุมลบถูกบีบ เป็น 0 (I130c7, b/168762961)
- เพิ่มความสามารถในการระบุข้อมูลเครื่องมือตรวจสอบในตัวปรับแต่งที่เขียน (Idee08, b/163494569)
- เพิ่มตัวเลือก IME สำหรับ KeyboardCapitalization (I8ac38)
- แก้ไขตำแหน่งแฮนเดิล Rtl (I6e1e0)
- การเปลี่ยนแปลงที่ส่งผลล่าสุด: นำค่าที่ส่งกลับออกจาก PointerInputFilter.onPointerEvent(...) เนื่องจากค่าเดียวที่ควรเปลี่ยนได้ในเหตุการณ์ตัวชี้คือข้อมูลการใช้งาน ตอนนี้คุณสามารถเปลี่ยนแปลงข้อมูลการใช้งานของ PointerEvents ที่ส่งผ่านแทนการส่งคืนข้อมูลจาก PointerInputFilter.onPointerEvent(...) ได้แล้ว (I6acd0)
- เพิ่มตัวเลือก SelectAll ในเมนูการเลือกแล้ว (Ief02b)
เวอร์ชัน 1.0.0-alpha05
14 ตุลาคม 2020
ปล่อย androidx.compose.foundation:foundation:1.0.0-alpha05
, androidx.compose.foundation:foundation-layout:1.0.0-alpha05
และ androidx.compose.foundation:foundation-text:1.0.0-alpha05
แล้ว เวอร์ชัน 1.0.0-alpha05 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ตอนนี้ CoreTextField รองรับฟังก์ชันการทำงานของเคอร์เซอร์ (Id23aa) แล้ว
เลิกใช้งาน contentColor() และ CurrentTextStyle() และแทนที่ด้วย AmbientContentColor และ AmbientTextStyleแอมเบียนท์ตามลำดับ คุณสามารถเข้าถึงค่าปัจจุบันได้โดยใช้
.current
ในพร็อพเพอร์ตี้ แอมเบียนท์ เช่นเดียวกับสภาพแวดล้อมอื่นๆ โดยเราทำการเปลี่ยนแปลงนี้เพื่อให้เกิดความสม่ำเสมอ และเพื่อหลีกเลี่ยงไม่ให้มีหลายวิธีในการทำสิ่งเดียวกัน นอกจากนี้ ยังเปลี่ยนชื่อพร็อพเพอร์ตี้แอมเบียนท์บางรายการเพื่ออธิบายวัตถุประสงค์ได้ดียิ่งขึ้นดังนี้- ContentColorAmbient -> สีเนื้อหาแอมเบียนท์
- รูปแบบข้อความแอมเบียนท์ -> รูปแบบข้อความแอมเบียนท์
- ตัวบ่งชี้แอมเบียนท์ -> ตัวบ่งชี้แบบแอมเบียนท์
- การเน้นความสำคัญ -> ระดับแสงแวดล้อม
- RippleThemeAmbient -> AmbientRippleTheme (I37b6d)
แก้ไขข้อบกพร่อง
- ในฐานะส่วนหนึ่งของการกำหนดมาตรฐาน ของค่าที่ส่งสำหรับคลาสในบรรทัด เปลี่ยนชื่อสี ยกเลิกการตั้งค่าเป็นสี ไม่ระบุ เพื่อความสอดคล้องกับคลาสแบบอินไลน์อื่นๆ (I97611, b/169797763)
- เพิ่มการดำเนินการช่วยเหลือพิเศษการคัดลอก/วาง/ตัด (I6db4f)
- แนะนำ TextOverflow.None เมื่อส่วนเพิ่มเติมเป็น "ไม่มี" Text จะไม่จัดการกับส่วนเพิ่มเติมอีกต่อไป และจะรายงานขนาดจริงไปยัง LayoutNode (I175c9, b/158830170)
- ขนาดที่อัปเดตแล้ว ไม่ระบุ ให้เป็น Float.NaN แทน Float.POSITIVE_INFINITY อัปเดตการติดตั้งใช้งาน Painter เป็น ตรวจสอบกับ Size.Unidentifier ด้วย เป็นขนาดแบบไม่จำกัด (I95a7e)
- เพิ่มโมดูล Paging Compose และการผสานรวมการแบ่งหน้า (Ib85da)
- แก้ไข LazyListScope เพื่อรับค่า Nullable (I1765b)
- OnPositionedModifier เปลี่ยนชื่อเป็น OnGloballyPositionedModifier และ onPositioned() จะเปลี่ยนชื่อเป็น onGloballyPositioned() (I587e8, b/169083903)
- เพิ่มตัวอย่างสำหรับ LazyColumn/แถว (Idc16d)
- แก้ไขเมธอด items และ itemsIndexed เพื่ออนุญาต emptyList (I06647)
- เพิ่ม DSL เพื่อระบุข้อมูลเครื่องมือตรวจสอบ (Ic9a22)
- เลื่อน LongPress ไปไว้ในข้อความ (Iff2bc)
- ปิดใช้การเลือกในข้อความและการสาธิต (Ie7e97)
- รองรับการแปลง AnnotatedString เป็น SAttachableString สำหรับการเข้าถึง (Ief907)
- นำ
PointerInputFilter.onPointerInput(...)
ออกแล้ว ควรใช้PointerInputFilter.onPointerEvent(...)
แทน (I6F04a)
เวอร์ชัน 1.0.0-alpha04
1 ตุลาคม 2020
ปล่อย androidx.compose.foundation:foundation:1.0.0-alpha04
, androidx.compose.foundation:foundation-layout:1.0.0-alpha04
และ androidx.compose.foundation:foundation-text:1.0.0-alpha04
แล้ว เวอร์ชัน 1.0.0-alpha04 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เปลี่ยนชื่อกลุ่มเป็น Box แล้ว Foundation.Box ที่มีอยู่ก่อนหน้านี้จะเลิกใช้งานเพื่อใช้ Box ใหม่ใน publisher.foundation.layout ลักษณะการทำงานของ Box ใหม่คือการเรียงรายการย่อยซ้อนทับกันเมื่อมีรายการย่อยหลายคน ซึ่งแตกต่างจาก Box ก่อนหน้านี้ ซึ่งมีลักษณะการทำงานที่คล้ายกับคอลัมน์ (I94893, b/167680279)
- เลิกใช้งานพารามิเตอร์การตกแต่งกล่องแล้ว หากต้องการให้มีการตกแต่ง/ระยะห่างจากขอบบนกล่อง ให้ใช้ตัวปรับแต่งแทน (Modifier.background, Modifier.border, Modifier.padding) (Ibae92, b/167680279)
- เพิ่มคลาส LazyListState ใหม่ วิธีนี้ทำให้สังเกตและควบคุมตำแหน่งการเลื่อนของ คอมโพเนนต์ LazyRow และ LazyColumn คุณสร้างอินสแตนซ์ได้โดยใช้ จดจำLazyListState() และส่งเข้าไปในพารามิเตอร์สถานะของ คอมโพเนนต์ ในขณะนี้ รายการแรกและออฟเซ็ตที่ปรากฏสามารถ ที่พบในเวอร์ชันเริ่มต้นนี้ (Ic7cb7, b/159307669)
- ตอนนี้ระบบจะบันทึกตําแหน่งรายการแบบ Lazy Loading และออฟเซ็ตการเลื่อนและ กู้คืนในกิจกรรมสันทนาการ (Ie045f, b/166589058)
- เพิ่มการทำงานของความหมายของคลิกยาว (I6281b, b/156468846)
- เพิ่มยูทิลิตี MutatorHandlex สำหรับเก็บค่า กลายพันธุ์เพียง 1 ตัว สถานะที่แชร์เมื่อเวลาผ่านไปและการยกเลิกการเปลี่ยนแปลงที่ขัดแย้งกันตามลำดับความสำคัญ (I3f975)
- ที่มีคำอธิบายประกอบrootAnimationClockfactor, การเปลี่ยนเปิดใช้, blinkingCursorEnabled และ textInputServiceFactory กับ @VisibleForTesting, ทำให้เป็น API ภายในและซ่อน kdoc (I554eb, b/168308412)
- นำพารามิเตอร์ inlineContent ออกจากข้อความที่มีอินพุตสตริงแล้ว จะไม่ถูกนำมาใช้เนื่องจาก inlineContent ต้องใช้งานกับ AnnotatedString ได้ (Ief403)
- ระบบนำ Asortment API ที่กำหนดเองซึ่งเลิกใช้งานแล้วออก (Ic576d, b/168297922, b/168297923)
- เพิ่มพารามิเตอร์
unbounded
ลงในตัวแก้ไข wrapContentSize ซึ่งทำให้วัดองค์ประกอบเลย์เอาต์ที่มีข้อจำกัดสูงสุดแบบไม่จำกัด (I77951, b/158559319) - เราป้องกันไม่ให้มีการนำเข้าเนื้อหาของขอบเขตเลย์เอาต์แบบคงที่ (เช่น alignWithSiblings ใน RowScope) ควรใช้ตัวเลือกขอบเขตที่ชัดเจนแทน:
with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }
(I216be, b/166760797)
แก้ไขข้อบกพร่อง
- อัปเดต Graphics API หลายรายการ
- อัปเดตการปรับขนาดและการหมุนแล้ว การเปลี่ยนรูปแบบที่จะใช้ พารามิเตอร์ออฟเซ็ตเพื่อแสดง Pivot พิกัดแทนที่จะเป็นจุดลอยตัวแยกต่างหาก พารามิเตอร์ของพิกัด x/y ใน DrawScope และ DrawTransform
- นำ Rect.expandToInclude และ Rect.join ออกแล้ว วิธีการ
- อัปเดตเอกสารประกอบของรัศมีที่แสดงรูปวงรี นอกเหนือจากเครื่องอีลิปติคอล
- เพิ่มเอกสารประกอบเพื่อระบุ เครื่องมือสร้างสาธารณะสำหรับรัศมีในบรรทัด ไม่ ต้องเรียกโดยตรง แต่ วัตถุที่มีรัศมีควรสร้างอินสแตนซ์ผ่าน เครื่องมือสร้างฟังก์ชัน
- นำ RoundRect API ออกแล้วเพื่อค้นหาtopRight, bottomRight, bottomCenter ฯลฯ
- เลิกใช้งาน Rect.shift เพื่อใช้ Rect.translate แล้ว
- นำ API RoundRect.grow และ Rect.shrink ออกแล้ว
- เปลี่ยนชื่อ RoundRect.outerRect เป็น Rect.boundingRect แล้ว
- นำ RoundRect.middleRect/tallMiddleRect/wideMiddleRect ออกแล้ว และวิธีการ Rect.isStadium
- เปลี่ยนชื่อ RoundRect.longestSide เป็น RoundRect.maxDimension แล้ว
- เปลี่ยนชื่อ RoundRect.shortestSide เป็น RoundRect.minDimension แล้ว
- เปลี่ยน RoundRect.center เป็นพร็อพเพอร์ตี้แทนฟังก์ชัน
- อัปเดตตัวสร้าง RoundRect เพื่อใช้คุณสมบัติของรัศมี แทนพารามิเตอร์แต่ละตัวสำหรับค่ารัศมี x/y
- นำ API ขนาดที่สันนิษฐานว่าเป็นสี่เหลี่ยมผืนผ้าที่มี ต้นทางที่ 0,0
- เพิ่ม API ที่ทำลายลงในรัศมีแล้ว
- ย้ายฟังก์ชันส่วนขยาย RoundRect ต่างๆ เป็น พร็อพเพอร์ตี้แทน
- (I8f5c7, b/168762961)
- การเพิ่มประสิทธิภาพสำหรับ LazyColumnFor/LazyRowFor ของการเลื่อนโดยไม่จัดตำแหน่งใหม่ที่ไม่จำเป็นระหว่างการเลื่อนทุกครั้ง (I64f65, b/168293643, b/167972292, b/165028371)
- แก้ไขข้อขัดข้องใน LazyColumnFor/LazyRowFor หลังเลื่อนแล้วเปลี่ยนรายการและใช้การเลื่อนอัตโนมัติขึ้นเมื่อมีการนำรายการที่มองเห็นได้ก่อนหน้านี้ออก เพื่อไม่ให้เราแสดงช่องว่างในตอนท้ายอีกต่อไป (I220ab, b/161480164, b/167855468)
- ไม่อนุญาตให้ใช้การฝังที่เลื่อนได้ในคอนเทนเนอร์ทิศทางเดียวกัน เช่น ScrollableContainer และ LazyColumnFor อีกต่อไป ไม่เคยมีการสนับสนุนเลย แต่เขียนไม่ได้เลยและขจัดกับความขี้เกียจทั้งหมดในการเขียนรายการ LazyColumnFor (I6e101)
- อัปเดต Graphics API หลายรายการ
- อัปเดต DrawScope API ที่มีขอบเขต เพื่อระบุว่าการเปลี่ยนแปลง การเปลี่ยนแปลงจะมีผลเฉพาะภายใน Callback และนำออกหลังจากมีการเรียกใช้ Callback
- อัปเดตเอกสาร ClipsPath เพื่ออ้างอิงไปยังเส้นทางแล้ว แทนสี่เหลี่ยมผืนผ้ามุมมน
- ระยะห่างคงที่ในเอกสารสำหรับพารามิเตอร์ที่ถูกต้อง ในClipPath
- เปลี่ยนชื่อ DrawScope.drawCanvas เป็น DrawIntoCanvas และ พารามิเตอร์ขนาดที่นำออก
- เปลี่ยนชื่อพารามิเตอร์ dx/dy ในเมธอด inset เป็น แนวนอนและแนวตั้ง
- เพิ่มโอเวอร์โหลดส่วนที่ให้ ค่าที่แทรกเป็นขอบเขตทั้ง 4 ส่วน
- ลบเอกสารที่ระบุว่าวิธีการฝัง ส่วนนั้นจะใช้กับทั้ง 4 ด้าน
- อัปเดตเอกสารประกอบสำหรับคลาส Rect แล้ว
- อัปเดตความคิดเห็นเกี่ยวกับพารามิเตอร์ Rect ให้ตรงกับ kdoc ภาพถ่ายไฮเปอร์เรียลลิสติก
- นำ Rect.join และ Rect.expandToInclude ออกแล้ว
- สร้างการโอเวอร์โหลดสำหรับ Rect.translate(offset) และ Rect.shift เลิกใช้งานแล้ว
- (If086a, b/167737376)
- เพิ่ม AccessibilityscrollState ลงในพร็อพเพอร์ตี้ความหมาย (Ifeda9)
- ทำให้ TextRange แทรกในบรรทัดเพื่อหลีกเลี่ยงการสร้างออบเจ็กต์ (Id034b)
- นำ ParagraphConstraints ออกแล้ว ระบบจะส่งความกว้างไปยังย่อหน้าโดยตรงตอนนี้ (Ica712)
เวอร์ชัน 1.0.0-alpha03
16 กันยายน 2020
ปล่อย androidx.compose.foundation:foundation:1.0.0-alpha03
, androidx.compose.foundation:foundation-layout:1.0.0-alpha03
และ androidx.compose.foundation:foundation-text:1.0.0-alpha03
แล้ว เวอร์ชัน 1.0.0-alpha03 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- InnerPadding ได้เปลี่ยนชื่อเป็น PaddingValues (I195f1, b/167389171)
- มีการเปลี่ยนชื่อการใช้แรงโน้มถ่วงอย่างต่อเนื่องเพื่อจัดแนวหรือจัดแนวใน API เลย์เอาต์ (I2421a, b/164077038)
- ระบบเพิ่มพารามิเตอร์การจัดข้อความลงในกลุ่ม ซึ่งช่วยให้ระบุการจัดข้อความเริ่มต้นสำหรับกลุ่มย่อยทั้งหมดของกลุ่มได้ (Ie80ca, b/164085265)
แก้ไขข้อบกพร่อง
- DpConstraints และ API ที่ใช้เลิกใช้งานแล้ว (I90cdb, b/167389835)
- พารามิเตอร์
minWidth
และmaxWidth
ของwidthIn
เปลี่ยนชื่อเป็นmin
และmax
แล้ว ในทำนองเดียวกันสำหรับpreferredWidthIn
,heightIn
,preferredHeightIn
(I0e5e1, b/167389544) - เพิ่ม onNode และเมธอดส่วนกลางอื่นๆ ใน ComposeTestRule เป็น เราจะเลิกใช้งานรายการสากลปัจจุบัน (Ieae36)
- การคำนวณขนาดและตำแหน่งใน GestureScope ซึ่งเกิดจากท่าทางสัมผัสการปัดที่ไม่ถูกต้องในรูปแบบอื่นๆ (Iaf358, b/166589947)
- ย้าย
createAndroidComposeRule
และAndroidInputDispatcher
จากandroidx.ui.test.android
ไปยังandroidx.ui.test
(Idef08, b/164060572)
เวอร์ชัน 1.0.0-alpha02
2 กันยายน 2020
ปล่อย androidx.compose.foundation:foundation:1.0.0-alpha02
, androidx.compose.foundation:foundation-layout:1.0.0-alpha02
และ androidx.compose.foundation:foundation-text:1.0.0-alpha02
แล้ว เวอร์ชัน 1.0.0-alpha02 มีคอมมิตเหล่านี้
แก้ไขข้อบกพร่อง
- TestUiDispatcher ได้รับการระบุว่าเป็นการทดลอง (Iae99d, b/161247083)
เพิ่มเมื่อ
ManualFrameClock.hasAwaiters
เพื่อดูว่ามีสิ่งใดหรือไม่ กำลังรอเฟรมจากนาฬิกานั้นrunWithManualClock
โดยแทนที่ สำหรับrunBlocking
เมื่อเรียกใช้การทดสอบที่ต้องใช้ ManualFrameClockTestUiDispatcher.Main
ที่ช่วยให้เข้าถึงผู้มอบหมายงาน UI หลักได้ง่าย ในการทดสอบเช่น
@Test fun myTest() = runWithManualClock { clock -> // set some compose content withContext(TestUiDispatcher.Main) { clock.advanceClock(1000L) } if (clock.hasAwaiters) { println("The clock has awaiters") } else { println("The clock has no more awaiters") } }
เวอร์ชัน 1.0.0-alpha01
26 สิงหาคม 2020
ปล่อย androidx.compose.foundation:foundation:1.0.0-alpha01
, androidx.compose.foundation:foundation-layout:1.0.0-alpha01
และ androidx.compose.foundation:foundation-text:1.0.0-alpha01
แล้ว เวอร์ชัน 1.0.0-alpha01 มีคอมมิตเหล่านี้
เวอร์ชัน 0.1.0-dev
เวอร์ชัน 0.1.0-dev17
19 สิงหาคม 2020
ปล่อย androidx.compose.foundation:foundation:0.1.0-dev17
, androidx.compose.foundation:foundation-layout:0.1.0-dev17
และ androidx.compose.foundation:foundation-text:0.1.0-dev17
แล้ว เวอร์ชัน 0.1.0-dev17 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- มีการเพิ่ม SpacedBy Asortment สำหรับแถวและคอลัมน์ เพื่อเปิดใช้เลย์เอาต์การกำหนดตำแหน่งที่มีระยะห่างคงที่ นอกจากนี้ยังเพิ่มการจัดแนวย่อหน้าด้วย เพื่อให้สามารถจัดตำแหน่งการจัดวางรายการย่อยถัดจากอีกแบบหนึ่ง และจัดไว้ในแถว/คอลัมน์ตามการปรับแนว เลิกใช้วิธีการ Asortment.Vertical#asort และ A Sortment.Horizontal#ahandling แล้ว และจะไม่ได้รับการสนับสนุนการเขียนการจัดเรียงที่กำหนดเองในอนาคต (I6733d, b/161985975)
- ออฟเซ็ตได้กลายเป็นคลาสอินไลน์ (Iaec70)
- นำ onFocusChanged Callbacks ออกจาก TextField แล้ว ใช้ Modifier.FocusObserver แทน (I51089, b/161297615)
- เลิกใช้งาน Modifier.drawBorder แล้ว ใช้ Modifier.border แทน คลาสข้อมูลเส้นขอบถูกแทนที่ด้วย BorderStroke (I4257d, b/158160576)
- Verticalscroller และ Horizontalscroller ออกแล้ว โปรดใช้ ScrollableColumn/Row แทน นำ Modifier.drawBackground ออกแล้ว ใช้ Modifier.background (I73b0d, b/163019183)
- นำตัวแก้ไขที่ทำเครื่องหมายว่าเป็น FillMax* ที่เลิกใช้งานแล้วออกจาก LazyItemScope เนื่องจากจะทำให้เพิ่มตัวแก้ไขดังกล่าวอย่างถูกต้องได้ยากขึ้นสำหรับรายการที่ไม่ใช่ตัวแก้ไขย่อยของ LazyColumnFor (Ifa78d)
- เพิ่มการติดตั้งใช้งาน LazyColumn/LazyRow เป็น DSL (I93cc6)
- ขณะนี้ข้อจำกัดเป็นคลาสอินไลน์ (I88736)
- เพิ่มความสามารถในการปรับขนาดเลย์เอาต์ให้มีขนาดเพียงเศษเสี้ยวของพื้นที่ว่างโดยใช้ตัวปรับแต่ง fitMaxWidth,พยายามกรอกfillMaxHeight และพยายาม ให้กรอกMaxSize (I945bb, b/161562591)
แก้ไขข้อบกพร่อง
- เพิ่มพารามิเตอร์ตัวแก้ไขลงใน SelectionContainer (I4aada, b/161487952)
- เพิ่มMergePolicy lambda ลงใน SemanticsPropertyKey แล้ว ประเภท ใช้เพื่อกำหนดนโยบายที่กำหนดเองสำหรับความหมายการผสานAllDescendants การผสาน นโยบายเริ่มต้นคือใช้ค่าระดับบน หากมีอยู่แล้ว ปรากฏ หรือไม่ก็มีค่าย่อย (Iaf6c4, b/161979921)
PlacementScope.placeAbsolute()
เปลี่ยนชื่อเป็นPlacementScope.place()
และPlacementScope.place()
ก่อนหน้านี้เปลี่ยนชื่อเป็นPlacementScope.placeRelative()
ด้วยเหตุนี้ เมธอดPlacementScope.place()
จะไม่มิเรอร์ตำแหน่งในบริบทแบบขวาไปซ้ายโดยอัตโนมัติอีกต่อไป หากต้องการ โปรดใช้PlacementScope.placeRelative()
แทน (I873ac, b/162916675)- นำคอมโพเนนต์ FilledTextField ที่เลิกใช้งานแล้วออก โปรดใช้ TextField แทนเพื่อรับการใช้งานดีไซน์ Material ของช่องข้อความที่กรอก (I5e889)
- เพิ่มพารามิเตอร์ backgroundColor ไปยัง LinearProgressIndicator และนำระยะห่างจากขอบภายในออกจาก CircularProgressIndicator เพิ่ม ProgressIndicatorConstants.DefaultProgressAnimationSpec ใหม่ซึ่งสามารถใช้เป็น AnimationSpec เริ่มต้นได้เมื่อแสดงความคืบหน้าระหว่างค่าต่างๆ (If38b5, b/161809914, b/161804677)
- ขณะนี้ Composable ของ
state { ... }
เลิกใช้งานแล้วเพื่อให้ การเรียกไปที่remember { mutableStateOf(...) }
อย่างชัดแจ้งเพื่อความชัดเจน การดำเนินการนี้จะลดแพลตฟอร์ม API โดยรวมและจำนวนแนวคิดสำหรับสถานะ การจัดการ และตรงกับรูปแบบby mutableStateOf()
สำหรับชั้นเรียน การมอบสิทธิ์พร็อพเพอร์ตี้ (Ia5727) - เปลี่ยนชื่อ Rect เป็น RoundRect แล้ว เพื่อให้พอดีกับรูปแบบการตั้งชื่อ สร้างตัวสร้างฟังก์ชันที่คล้ายกัน ไปยัง "Rect" และเลิกใช้งานฟังก์ชัน RRect แล้ว เครื่องมือสร้าง (I5d325)
- นำ onChildPositioned และ OnChildPositionedModifier ออกแล้ว นักพัฒนาแอปควรใช้ onPositioned และ OnPositionedModifier ในเลย์เอาต์ย่อยแทน (I4522e, b/162109766)
- IntSize เป็นคลาสแบบอินไลน์แล้วในตอนนี้ (I2bf42)
- กดพื้นที่ว่างค้างไว้เพื่อแก้ไข (Ib1e5b)
- ซ่อน FloodToolbar หลังจากแตะข้อความ (If4525)
- ซ่อน FloodToolbar เมื่ออัปเดตการเลือก (I8444C)
- ยกเลิกการเลือกเมื่อเบลอ (I781a2)
เวอร์ชัน 0.1.0-dev16
5 สิงหาคม 2020
ปล่อย androidx.compose.foundation:foundation:0.1.0-dev16
, androidx.compose.foundation:foundation-layout:0.1.0-dev16
และ androidx.compose.foundation:foundation-text:0.1.0-dev16
แล้ว เวอร์ชัน 0.1.0-dev16 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม LazyItemScope สำหรับพารามิเตอร์ itemContent ของรายการแบบ Lazy โดยให้ตัวแก้ไขเพื่อเติมขนาดสูงสุดระดับบนสุดซึ่งจะแก้ปัญหา Use Case เมื่อรายการควรเติมเต็มวิวพอร์ต และ Modifier.fillMaxSize() ปกติจะไม่ทำงานเนื่องจากมีการวัดรายการด้วยข้อจำกัดอนันต์ (Ibd3b2, b/162248854)
- ย้ายกล่องโต้ตอบไปยัง UI (I47fa6)
- เพิ่ม LazyColumnForIndexed/LazyRowForIndexed - เวอร์ชันของ LazyColumnFor/LazyRowFor ที่ให้ทั้งดัชนีและรายการใน itemCallback ซึ่งจะเป็นประโยชน์เมื่อนอกเหนือจากรายการปัจจุบันที่คุณจำเป็นต้องทราบดัชนีปัจจุบัน (I65ff3)
- Modifier.deternimateProgress เปลี่ยนชื่อเป็น Modifier.progressSemantics (I9c0b4)
- LazyColumnItems เปลี่ยนชื่อเป็น LazyColumnFor LazyRowItems เปลี่ยนชื่อเป็น LazyRowFor (I84f84)
- เพิ่มเครื่องหมาย/คำอธิบายประกอบเพื่อเหตุผลของแนวทางปฏิบัติแนะนำ (I66B20)
- แพ็กเกจ Foundation.shape.corner ถูกตัดเป็น Foundation.share (I46491, b/161887429)
- เพิ่มพารามิเตอร์แรงโน้มถ่วงโสเลงในสกรูสำหรับ LazyRowItems/LazyColumnItems LazyRowItems/LazyColumnItems รองรับลักษณะการทำงานของเนื้อหาการรวมแล้ว (Ib39fc)
- ZoomableState เปลี่ยนชื่อเป็น ZoomableController แล้ว เพิ่มการรองรับเส้นโค้งที่กำหนดเองสำหรับ SmoothScale เพิ่มฟังก์ชัน
enabled
และonZoomStarted
แล้ว (If8b8f) - Material FilledTextField ถูกเปลี่ยนชื่อเป็น TextField และ TextField พื้นฐานได้เปลี่ยนชื่อเป็น BaseTextField เพื่อให้สามารถค้นหาและใช้ API ที่ต้องการได้ง่ายที่สุด (Ia6242, b/155482676)
- โดยได้นำ AdapterList ที่เลิกใช้งานแล้วก่อนหน้านี้ออกแล้ว ใช้ LazyColumnItems แทน (I12b9b)
- Modifier.drawBackground ได้เปลี่ยนชื่อเป็น Modifier.background (I13677)
- ConstraintLayout DSL เดิมถูกนำออกแล้ว ConstraintSet2 เปลี่ยนชื่อเป็น ConstraintSet แล้ว (If58d1, b/162450908)
- เพิ่ม Modifier.absoluteOffset() และ Modifier.absoluteOffsetPx() ตัวปรับแต่งออฟเซ็ตแบบสัมบูรณ์จะไม่มิเรอร์อัตโนมัติในบริบทจากขวาไปซ้าย (I3aa21) ซึ่งต่างจากตัวปรับแต่งออฟเซ็ต
- ตอนนี้
Row
และColumn
เปลี่ยนเป็นฟังก์ชันในบรรทัดแล้ว ซึ่งช่วยลดค่าใช้จ่ายในการใช้งาน (I75C10)
แก้ไขข้อบกพร่อง
- แก้ไข API แบบกว้าง (I077bc)
- นำอินเทอร์เฟซ OffsetBase ที่ไม่ได้ใช้ออก
- จัดคลาสออฟเซ็ตและ IntOffset ให้มี แพลตฟอร์ม API ที่สอดคล้องกัน
- เปลี่ยนชื่อ IntOffset.Origin เป็น IntOffset.Zero เพื่อให้สอดคล้องกับ Offset API
- ย้ายเมธอด NativeCanvas ออกจาก Canvas แล้ว สำหรับสนับสนุนให้ผู้บริโภคสร้าง อินสแตนซ์ Canvas ของตัวเอง
- สร้างคลาส EmptyCanvas เพื่อเปลี่ยนโครงสร้างภายในโค้ดแล้ว DrawScope ให้เป็นพารามิเตอร์ที่ไม่ใช่ค่าว่างได้แทน lateinit และตรวจสอบว่าฟิลด์จะไม่เป็นโมฆะ
- เปลี่ยนชื่อ ClipOp enum เป็น Pascal Case แล้ว
- เปลี่ยนชื่อ enum ของFilterquality เป็น Pascal Case แล้ว
- เปลี่ยนชื่อ Strokeเข้าร่วม enum เป็น Pascal Case แล้ว
- เปลี่ยนชื่อ enum ของ PointMode เป็น Pascal Case แล้ว
- เปลี่ยนชื่อ enum ของ PaintingStyle เป็น Pascal Case แล้ว
- เปลี่ยนชื่อ PathFillType enum เป็น Pascal Case แล้ว
- เปลี่ยนชื่อ StrokeCap enum เป็น Pascal Case แล้ว
- อัปเดตการใช้งาน DrawCache เป็นไม่แล้ว ใช้พารามิเตอร์ Latinit
- อัปเดต DrawScope เพื่อไม่ให้ใช้การมอบสิทธิ์แบบ Lazy อีกต่อไป สำหรับพารามิเตอร์ภายในfillPaint และ Straint
- อัปเดตรูปภาพที่ประกอบขึ้นได้เพื่อหลีกเลี่ยงการใช้ Box ลดค่าใช้จ่าย
- อัปเดตคลาส Outline ให้มีคำอธิบายประกอบ @Immutable
- อัปเดต PathNode ให้มีคำอธิบายประกอบ @Immutable สำหรับ วิธีการในแต่ละเส้นทาง
- อัปเดตองค์ประกอบย่อยเวกเตอร์เพื่อนำรายการที่ซ้ำซ้อนออก การตรวจสอบความเทียบเท่าแบบมีเงื่อนไขตามแฮนเดิลของการเขียนที่มีอยู่แล้ว พวกมัน
- เลิกใช้งานเมธอดตัวสร้างโฆษณาที่แสดงร่วมรูปสี่เหลี่ยมผืนผ้าที่ต้องการแล้ว ของตัวสร้างฟังก์ชัน
- อัปเดตคลาสของแปรงและเครื่องมือสร้างฟังก์ชันด้วย API @ที่เปลี่ยนแปลงไม่ได้และ @เสถียร
- อัปเดต enum VertexMode เป็น PascalCase
- อัปเดต DrawScope เมธอด SelectPaint เป็นแบบมีเงื่อนไข เขียนทับพารามิเตอร์เส้นโครงร่างในการแสดงผล หากมี เปลี่ยนแปลงแล้ว
- อัปเดตขนาดเพื่อเพิ่ม API ที่ทำลายโครงสร้างแล้ว เปลี่ยนชื่อ UnidentifierSize เป็น "Unidentifier [ไม่ระบุ]" และ "นำเมธอดที่ไม่ได้ใช้ออก"
เพิ่ม MonotonicFrameAnimationClock ที่ให้คุณใช้ MonotonicFrameClock เป็น AnimationClockObservable เพื่อเชื่อมช่องว่าง ระหว่างนาฬิกาที่ใช้โครูทีนใหม่และ API ที่ยังคงใช้ ที่อิงจากนาฬิกา Callback
ตอนนี้เทียบเท่ากับ MonotonicFrameClock ของ ManualAnimationClock ManualFrameClock (I111c7, b/161247083)
นำ
SemanticsNodeInteraction.performPartialGesture
ออกแล้ว ใช้SemanticsNodeInteraction.performGesture
แทน (Id9b62)เปลี่ยนชื่อ
SemanticsNodeInteraction.getBoundsInRoot()
เป็นSemanticsNodeInteraction.getUnclippedBoundsInRoot()
(Icafdf, b/161336532)API สำหรับการสนับสนุนข้อความจากขวาไปซ้ายได้รับการอัปเดตแล้ว เพิ่ม LayoutDirectionAmbient แล้วซึ่งใช้เพื่ออ่านและเปลี่ยนทิศทางเลย์เอาต์ได้ นำ Modifier.rtl และ Modifier.ltr ออกแล้ว (I080b3)
เลิกใช้งาน Modifier.plus แล้ว โปรดใช้ Modifier.then แทน "จากนั้น" มีสัญญาณในการจัดลำดับมากกว่า ในขณะเดียวกันก็ห้ามพิมพ์
Modifier.padding().background() + anotherModifier
ทำให้เชนหลุดและอ่านยากขึ้น (Iedd58, b/161529964)เพิ่ม
isFocused()
และisNotFocused()
SemanticsMatcher แล้ว (I0b760)เพิ่ม RemeasurementModifier แล้ว ซึ่งจะช่วยให้ผู้ใช้วัดเลย์เอาต์ได้พร้อมกัน โดยทั่วไปแล้ว คุณไม่จำเป็นต้องใช้ฟีเจอร์นี้เพราะจะมีการวัด/รีเลย์เอาท์ใหม่โดยอัตโนมัติ แต่เรานำมาใช้ภายใน LazyColumnItems ระหว่างการเลื่อน (I5f331, b/160791058)
ตอนนี้ isSystemInDarkTheme จะพิจารณาการตั้งค่าธีมมืดของทั้งระบบเสมอ และจะไม่สนใจสถานะการประหยัดพลังงานก่อน Q ตามคำแนะนำล่าสุด (I0c10c)
เลิกใช้งาน OnChildPositioned แล้ว ใช้ OnPositioned ในหน้าย่อยแทน (I87f95, b/162109766)
เปลี่ยนชื่อ AndroidComposeTestRule เพื่อสร้าง AndroidComposeRule แล้ว (I70aaf)
เพิ่มการดำเนินการช่วยเหลือพิเศษเพื่อรับ TextLayoutผลลัพธ์ (I9d6e6)
เวอร์ชัน 0.1.0-dev15
22 กรกฎาคม 2020
ปล่อย androidx.compose.foundation:foundation:0.1.0-dev15
, androidx.compose.foundation:foundation-layout:0.1.0-dev15
และ androidx.compose.foundation:foundation-text:0.1.0-dev15
แล้ว เวอร์ชัน 0.1.0-dev15 มีคอมมิตเหล่านี้
หากต้องการใช้ Compose เวอร์ชัน 0.1.0-dev15
คุณจะต้องดำเนินการต่อไปนี้
การอัปเดตการขึ้นต่อกัน
- หากต้องการใช้ Compose เวอร์ชัน
0.1.0-dev15
คุณจะต้องอัปเดตทรัพยากร Dependency ตามข้อมูลโค้ดใหม่ที่แสดงด้านบนในการประกาศทรัพยากร Dependency
การเปลี่ยนแปลง API
- ในทำนองเดียวกัน พารามิเตอร์ใหม่ใน ScrollableColumn/scrollableRow LazyColumnItems/LazyRowItems ยังมีพารามิเตอร์ contentPadding ที่ช่วยให้เพิ่มระยะห่างจากขอบของเนื้อหาหลังจากที่มีการตัดทอน ซึ่งทำไม่ได้หากใช้เพียงพารามิเตอร์ตัวปรับแต่งเท่านั้น นอกจากนี้ยังอนุญาตให้เพิ่มระยะห่างก่อนรายการแรก/หลังรายการสุดท้ายเท่านั้น (Ibc24e)
- onFocusChange Callback ในช่องข้อความที่เปลี่ยนชื่อเป็น onFocusChanged (Ida4a1)
- เลิกใช้งาน Vertical Scroller และ Horiziontalscroller แล้ว ใช้ ScrollableColumn และ ScrollableRow สำหรับประสบการณ์แบบบิวท์อินที่มีลักษณะการทำงานของคอลัมน์/แถวและพารามิเตอร์ หรือใช้ Modifier.verticalscroll และ Modifier.Inventoryscroll ในองค์ประกอบของคุณเอง ในทำนองเดียวกัน ScrollerPosition ถูกเลิกใช้งานเพื่อใช้ ScrollState แล้ว (I400ce, b/157225838, b/149460415, b/154105299)
- ปรับปรุง API Modifier.draggable และ Modifier.scrollable ใหม่ มีการนำ DragDirection ออกเพื่อใช้การวางแนว สถานะที่จำเป็นสำหรับการเลื่อนได้มีการปรับให้เรียบง่ายขึ้น ScrollableState ได้รับการเปลี่ยนชื่อเป็น ScrollableController (Iab63c, b/149460415)
- ตอนนี้พร็อพเพอร์ตี้ความหมายค่าเดี่ยวใช้รูปแบบการเรียกแล้ว
ตัวอย่างเช่น 'ความหมาย { hide = true }' เขียนเป็น:
semantics { hidden() }
(Ic1afd, b/145951226, b/145955412) - ตอนนี้ขนาดมุมที่ RoundedCornerShape และ CutCornerShape ใช้ได้จะใหญ่กว่า 50% (Id2340, b/160400213)
- เปลี่ยน ContentScale เริ่มต้นแล้ว พารามิเตอร์สำหรับ Image Composable จาก Inside ไปยัง Fit ขั้นตอนนี้ทำตามลำดับ เพื่อรับพฤติกรรมที่จะปรับขนาด แหล่งที่มา เครื่องมือทาสีหากเลย์เอาต์มีขนาดใหญ่กว่า ขนาดที่แท้จริงของจิตรกร การคงอัตราส่วนกว้างยาวไว้ ช่วงเวลานี้ พฤติกรรมตรงกับความคาดหวังมากกว่า สำหรับการกำหนดขนาดคงที่ให้กับภาพ ในขณะที่ไม่ส่งผลกระทบต่อลักษณะการทำงานเริ่มต้น หากใช้เฉพาะขนาดภายในเพื่อ คำนวณขนาดของ Composable (I40ae3, b/159838006)
- ใช้ AnimationSpec แทน AnimationBuilder ใน API ระดับบนสุด เพื่อสร้างความชัดเจนเกี่ยวกับข้อกำหนดของภาพเคลื่อนไหวแบบคงที่ -ปรับปรุง DSL การเปลี่ยนด้วยการนำข้อกำหนด lambda ออกสำหรับ การสร้าง AnimationSpecs เช่น Tween, Spring แต่กลับใช้ พารามิเตอร์ตัวสร้างโดยตรง -เพิ่มความสะดวกในการใช้งานโดยรวมของ AnimationSpec ผู้สร้างแทนที่จะพึ่งพาผู้สร้าง -เปลี่ยนระยะเวลาและการหน่วงเวลาสำหรับ KeyFrame และ Tween เป็น Int ช่วงเวลานี้ ขจัดประเภทการแคสต์ที่ไม่จำเป็นและวิธีการโหลดมากเกินไป (สำหรับ สนับสนุนทั้ง Long และ Int) (Ica0b4)
- "คลิกได้" ถูกนำออกแล้ว ใช้ Modifier.clickable (I84bdf)
- LazyRowItems ที่เพิ่ม - แอนะล็อกแบบเลื่อนแนวนอนของ LazyColumnItems (Ibbcf7)
- เปิดตัว API ภาพเคลื่อนไหวแบบไม่เก็บสถานะระดับต่ำ API เหล่านี้ (I63bf7)
- androidx.ui.foundation.TextFieldValue และ เลิกใช้งาน androidx.ui.input.EditorValue แล้ว ฟิลด์ข้อความ FilledTextField และ CoreTextField ที่ใช้ Composable ที่ใช้ ประเภทนั้นก็เลิกใช้งานแล้วด้วย โปรดใช้ androidx.ui.input.TextFieldValue แทน (I4066d, b/155211005)
- แทนที่การใช้ IntPx ด้วย Int. แทนที่ IntPxPosition ด้วย IntOffset แทนที่ IntPxSize ด้วย IntSize (Ib7b44)
- นำ androidx.ui.foundation.shape.RectangleShape ออกแล้ว ใช้ androidx.ui.graphics.RectangleShape (I94939, b/154507984)
- ในการรวม จำนวนคลาสที่ใช้แสดง ข้อมูลขนาด, ทำให้เป็นมาตรฐาน เกี่ยวกับการใช้คลาส Size แทน ของ PxSize ซึ่งมีประโยชน์ ของคลาสในหน้าที่จะใช้ประโยชน์จาก เพื่อบรรจุค่าจำนวนลอยตัว 2 ค่าเพื่อแสดง ความกว้างและความสูงแสดงเป็นแบบลอย (Ic0191)
- ในการรวม จำนวนคลาสที่ใช้แสดง ข้อมูลการวางตำแหน่ง, ทำให้เป็นมาตรฐาน เกี่ยวกับการใช้คลาสออฟเซ็ตแทน ของ PxPosition ซึ่งมีประโยชน์ ของคลาสในหน้าที่จะใช้ประโยชน์จาก เพื่อบรรจุค่าจำนวนลอยตัว 2 ค่าเพื่อแสดง x และออฟเซ็ต y แสดงเป็นเลขทศนิยม (I3ad98)
- เพิ่ม Modifier.zoomable สำหรับฟังก์ชันการบีบนิ้วเพื่อซูม (Id5d63)
- เลิกใช้งานคอมโพเนนต์ที่เปิด/ปิดได้ ใช้ Modifier.toggleable แทน (I35220, b/157642842)
- เลิกใช้งาน MutuallyExclusiveSetItem แล้ว ใช้ Modifier.selectable แทน (I02b47, b/157642842)
- เลิกใช้งาน TestTag แล้ว โปรดใช้ Modifier.testTag แทน (If5110, b/157173105)
- เพิ่มพารามิเตอร์ fontweight ไปยังข้อความ ซึ่งไม่ได้เพิ่มไว้ก่อนหน้านี้ (I56937)
- แทนที่การใช้คลาส Px ใน เขียนชั้นเรียนในฐานะส่วนหนึ่งของ ความพยายามในการเปลี่ยนโครงสร้างโดยใช้ Dp เท่านั้น และประเภทดั้งเดิมสำหรับพารามิเตอร์พิกเซล (I19d02)
- ตอนนี้ Vertical Scroller สามารถจัดเตรียมคอลัมน์ให้ใช้งานได้แล้ว ตอนนี้ Horizontalscroller แสดง "แถวแนวนอน" จากกล่องแล้ว (Ieca5d, b/157020670)
- แทนที่การใช้คลาส Px ใน เขียนชั้นเรียนในฐานะส่วนหนึ่งของ ความพยายามในการเปลี่ยนโครงสร้างโดยใช้ Dp เท่านั้น และประเภทพื้นฐานสำหรับพารามิเตอร์พิกเซล (Iede0b)
- เพิ่ม Modifier.indication ในแพ็กเกจพื้นฐานแล้ว ใช้เพื่อแสดงการกด/ลาก/สัญญาณอื่นๆ บนองค์ประกอบแบบอินเทอร์แอกทีฟที่กำหนดเอง (I8425f, b/155287131)
- Vertical Scroller และ Horizontalscroller รองรับการเลื่อนแบบย้อนกลับแล้ว โดยมีการตั้งค่า isReversed ใน ScrollerPosition (I953bd)
- รองรับการเพิ่ม Composable ในเลย์เอาต์ข้อความ (I1373C)
- การใช้ CanvasScope แบบรวม ตอนนี้ก็มีแค่ DrawScope และ ขอบเขตการวาดเนื้อหา เปลี่ยนชื่อ CanvasScope เป็น DrawScope อัปเดต DrawScope เพื่อใช้ความหนาแน่น อินเทอร์เฟซ และแสดง LayoutDirection ลบคลาสย่อย DrawScope ใน ContentDrawScope อัปเดต Painter และ PainterModifier แล้ว เพื่อไม่ให้มีพร็อพเพอร์ตี้ RTL อีกต่อไป และ DrawScope มีข้อมูลนี้แล้ว โดยไม่ต้องระบุด้วยตนเอง (I1798e)
- นำ DrawBackground ที่เลิกใช้งานแล้วออก API เปลี่ยนไปใช้ส่วนขยาย DrawBackground API ใน Modifier เปลี่ยนโครงสร้างภายในโค้ดแล้ว สี พู่กัน และระบายสี การวาดพื้นหลัง การใช้งานเพื่อลดเส้นทางโค้ดด้วยเช่นกัน เป็นข้อกำหนดในการลบตัวปรับแต่งให้สร้างขึ้น เพื่อเป็นส่วนหนึ่งของการเขียน (I0343a)
- อัปเดตระดับสูงขึ้นแล้ว เขียน API ที่เปิดเผย Canvas ต่อ แสดง CanvasScope แทน การดำเนินการนี้จะนำ ความต้องการของผู้บริโภคในการรักษา เป็นเจ้าของออบเจ็กต์ Paint สำหรับผู้บริโภคที่ ยังคงต้องการเข้าถึง Canvas ก็สามารถใช้ส่วนขยาย DrawCanvas ที่ให้ผลลัพธ์ Callback ไปยังปัญหา ให้วาดคำสั่งด้วยฟังก์ชัน Canvas (I80afd)
- Horizontalscroller และ Verticalscroller ไม่คืนค่าตำแหน่งการเลื่อนโดยใช้สถานะอินสแตนซ์ที่บันทึกไว้ (Ia0fae, b/155075048)
- นำ FocusManagerAmbient ออกแล้ว ใช้ FocusModifier.requestFocus เพื่อให้ได้โฟกัส (Ic4826)
- ระบบได้นำเลย์เอาต์ตารางออกชั่วคราวจนกว่าเราจะทำให้ใช้งานได้อีกครั้งด้วย API ที่มีการรีเฟรช (Id88a7)
สร้าง CanvasScope API ที่รวม วัตถุ Canvas เพื่อแสดงเป็นแบบไม่เก็บสถานะและมีการประกาศ วาดเขียน API มีการเปลี่ยนรูปแบบ ภายในขอบเขตตัวรับและขนาดของข้อมูล ยังกำหนดขอบเขตไว้เป็นขอบเขตที่เกี่ยวข้องด้วย ผู้บริโภคไม่จำเป็นต้องรักษาสถานะ Paint ของตนเองไว้ สำหรับการกำหนดค่าการดำเนินการวาด
เพิ่ม CanvasScopeSample รวมถึง อัปเดตแอปเดโมให้รวมกราฟิกประกาศ เดโม (Ifd86d)
นำ ColoredRect ออกแล้ว กล่องผู้ใช้ที่มีตัวปรับแต่งDrawBackground แทน (I983c7, b/152753731)
เพิ่มการปรับแต่งสีของเคอร์เซอร์ลงใน TextField (I6e33f)
ตอนนี้คุณสามารถซ่อน/แสดงแป้นพิมพ์ของซอฟต์แวร์ได้โดยใช้ SoftwareKeyboardController ที่นำส่งโดย onTextInputStarted Callback (I8dc44, b/151860051)
ตอนนี้ TextFieldValue ที่ใช้กับ TextField สามารถอยู่รอดจากกิจกรรมสันทนาการได้เมื่อใช้แบบนี้
var text by savedInstanceState(saver = TextFieldValue.Saver) { TextFieldValue() }
(I5c3ce, b/155075724)เพิ่มพารามิเตอร์ที่ใช้กันโดยทั่วไปลงใน Text() หากคุณกำลังสร้างรูปแบบข้อความในเครื่องเพื่อส่งผ่านพารามิเตอร์เหล่านี้จำนวนไม่มาก เช่น
Text(style = TextStyle(textAlign = TextAlign.Center))
ตอนนี้คุณสามารถระบุพารามิเตอร์ได้โดยตรง:Text(textAlign = TextAlign.Center)
(I82768)แทนที่ CoreTextField/TextFieldIdentifierIdentifier กับ FocusNode เพื่อผสานรวมกับระบบย่อยของโฟกัส (I7ea48)
อัปเดตฟิลด์ข้อความ - ขนาดแนวนอนจะใช้พื้นที่ว่างทั้งหมดที่ให้ไว้ (Ib08df, b/154638552)
เพิ่ม InteractionState และการโต้ตอบ ทำให้สร้างคอมโพเนนต์ที่ตอบสนองต่อการเปลี่ยนแปลงสถานะ UI เช่น การกดแล้วลาก (Icfe25, b/152525426) ได้ง่ายขึ้น
RectangleShape ย้ายจาก androidx.ui.foundation.shape.* ไปยัง androidx.ui.graphics* (Ia74d5, b/154507984)
แทนที่การใช้สีที่เป็นค่าว่างทั้งหมดใน API ด้วย ไม่ใช่ค่าว่าง และใช้ Color.Unset แทนค่า Null (Iabaa7)
การอัปเดต TextField API - รวม Callback onFocus และ onBlur เป็น Callback เดียว onFocusChange(Boolean) ที่มีพารามิเตอร์ (I66cd3)
เปลี่ยนชื่อ ScaleFit เป็น ContentScale แล้ว ย้าย ContentScale จาก UI-graphics เป็น UI-core แล้ว อยู่ในโมดูลเดียวกับการจัดแนว API เปลี่ยนชื่อ FillMaxDimension เป็น Crop แล้ว เปลี่ยนชื่อ FillMinDimension เป็น Fit แล้ว เปลี่ยนชื่อ Fit เป็น "Inside" เพื่อการจับคู่ที่ดียิ่งขึ้น เทียบเท่า ImageView.ScaleType เพิ่มเอกสารประกอบที่ระบุว่าการผสม Crop และ Alignment.Center ได้ผลลัพธ์ที่เหมือนกัน เป็น ImageView.ScaleType.CENTER_CROP และ Fit ที่ใช้กับ Alignment.Center จะได้ผลลัพธ์เหมือนกับ ImageView.ScaleType.FIT_CENTER ภายในที่ใช้ร่วมกับ Alignment.Center ทำได้ดีเท่ากัน ผลลัพธ์เป็น ImageView.ScaleType.CENTER_INSIDE (I45f09, b/152842521)
นำ ProvideContentColor ออก แค่ใช้ ContentColorAmbient กับ
Providers
โดยตรง (Iee942)เพิ่มพารามิเตอร์สีในข้อความ ทำให้สามารถลบล้างสีของรูปแบบข้อความได้โดยไม่ต้องผสานกับสไตล์ที่มีให้ในธีมด้วยตนเอง (I41a66)
ปรับปรุง DrawModifier API:
- สร้างขอบเขตตัวรับสำหรับDraw() ContentDrawScope
- นำพารามิเตอร์ทั้งหมดในDraw() ออก
- DrawScope มีอินเทอร์เฟซเดียวกันกับ CanvasScope เดิม
- ContentDrawScope มีเมธอดDrawContent() (Ibaced, b/152919067)
เลิกใช้งาน ColoredRect แล้ว โปรดใช้
Box(Modifier.preferredSize(width, height).drawBackground(color))
แทน (I499fa, b/152753731)ระบบมีการอัปเดตธีมรูปร่างตามข้อกำหนดของดีไซน์ Material ตอนนี้คุณสามารถระบุรูปร่างขนาดเล็ก กลาง และใหญ่ที่คอมโพเนนต์ส่วนใหญ่จะใช้ได้แล้ว (Ifb4d1)
เปลี่ยนตัวปรับแต่งและโอเปอเรเตอร์ด้วยฟังก์ชันส่วนขยายจากโรงงาน (I225e4)
ลากได้ย้ายไปที่ตัวแก้ไข (Id9b16, b/151959544)
ย้าย
Text
จาก androidx.ui.core ไปยังแพ็กเกจ androidx.ui.foundation (I87ce5)เพิ่มพารามิเตอร์
enabled
ไปยังช่องทำเครื่องหมาย สวิตช์ และสลับได้ (I41c16)ตอนนี้ Ripple เป็นตัวแก้ไข แม้ว่าฟีเจอร์ "คลิกได้" ยังไม่ได้แปลง แต่การใช้งานที่แนะนำคือ
Clickable(onClick = { ... }, modifier = ripple())
(Ie5200, b/151331852, b/150060763)เพิ่ม VectorPainter API ใน แทนที่ API องค์ประกอบย่อยที่มีอยู่สำหรับ กราฟิกเวกเตอร์ ผลลัพธ์ขององค์ประกอบย่อย เป็นออบเจ็กต์ VectorPainter แทนที่จะเป็น DrawModifier เลิกใช้ DrawVector ก่อนหน้า Composable ดีกว่า VectorPainter
เปลี่ยนชื่อ API ของ
Image(Painter)
เป็นPaintBox(Painter)
แล้ว สร้าง Vector Composable ที่มีลักษณะการทำงานเหมือน รูปภาพ Composable ยกเว้น VectorAsset แทน ของ ImageAsset (I9af9a, b/149030271)สร้างรูปภาพประกอบที่สามารถจัดการได้ การปรับขนาด/การจัดวางนอกเหนือจากการวาด ImageAsset ในหน้าจอ Composable นี้ ยังสนับสนุนการวาดภาพใดๆ ก็ตามที่กำหนดเอง อินสแตนซ์ที่คำนึงถึงขนาดที่แท้จริง รวมถึงการสนับสนุน ขนาดหรือขนาดต่ำสุด (Ibcc8f)
ตอนนี้ปุ่ม, FloodActionButton และ Clickable ได้จะมีพารามิเตอร์
enabled
แยกต่างหากแล้ว มีการเปลี่ยนชื่อหรือจัดเรียงพารามิเตอร์บางรายการบนปุ่ม (I54b5a)เปลี่ยนชื่อรูปภาพเป็น ImageAsset เพื่อให้แยกความแตกต่างได้ดีขึ้น ความแตกต่างระหว่างข้อมูลภาพและ รูปภาพประกอบที่ใช้เพื่อเข้าร่วมเลย์เอาต์และการวาดได้ เนื้อหา
สร้างวิธีการส่วนขยายบน android.graphics.Bitmap
Bitmap.asImageAsset()
เพื่อสร้างอินสแตนซ์ ImageAsset มีประโยชน์สำหรับการรวม Android ดั้งเดิมเข้าด้วยกัน การพัฒนาแอปพลิเคชันด้วยเฟรมเวิร์กการเขียน (Id5bbd)นํา Composable ของ DrawImage ออกแล้ว ใช้ ImagePainter เพื่อวาดภาพบนเลย์เอาต์ที่มีอยู่ หรือใช้ SimpleImage เพื่อแนะนำรูปภาพที่กินพื้นที่ (I595e1, b/149827027)
คอมโพเนนต์ของสแต็กรองรับทิศทางจากขวาไปซ้าย (Ic9e00)
เพิ่มไอคอน, IconButton และ IconToggleButton เพื่อนำ AppBarIcon ออก คุณสามารถแทนที่การใช้งาน AppBarIcon ที่มีอยู่ได้โดยตรงด้วย IconButton และอุปกรณ์จะมีเป้าหมายการสัมผัสที่ถูกต้อง ดูตัวอย่างสำหรับ ข้อมูลการใช้งาน และดูไอคอนสำหรับไอคอน Material ที่ให้ไว้ ที่คุณสามารถใช้กับคอมโพเนนต์เหล่านี้ได้โดยตรง (I96849)
ลบ DrawShape Composable แล้ว ใช้ตัวแก้ไข DrawBackground แทน (I7ceb2)
เพิ่ม AdapterList ซึ่งเป็นคอมโพเนนต์รายการแบบเลื่อนที่ เขียนและจัดเลย์เอาต์รายการที่ปรากฏ ปัญหาที่ทราบในปัจจุบัน รวมว่าเป็นการแสดงแนวตั้งเท่านั้นและไม่ได้จัดการทั้งหมด เมื่อมีการเปลี่ยนแปลงกับองค์กรย่อยๆ (Ib351B)
เพิ่มคอมโพเนนต์ที่เลื่อนได้ ซึ่งช่วยให้สร้างตัวเลื่อน/รายการที่กำหนดเองได้ (I5fd37)
เปลี่ยนชื่อพื้นหลังเป็น DrawBackground และทำให้ตั้งให้จดจำเป็นค่าเริ่มต้น (Ia0bd3)
เพิ่มระยะห่างจากขอบ เส้นขอบ รูปร่าง และพารามิเตอร์พื้นหลังลงใน Box (I05027, b/148147281)
เพิ่มคอมโพเนนต์ Canvas แล้ว Composable นี้ใช้พื้นที่ขนาดจำนวนหนึ่ง (ระบุโดยผู้ใช้) และให้คุณวาดโดยใช้ CanvasScope (I0d622) ได้
เปลี่ยนชื่อตัวปรับแต่ง
Border
เป็นDrawBorder
(I8ffcc)เพิ่มคอมโพเนนต์ Box สำหรับการรวมเลย์เอาต์และการสร้างฟังก์ชันทั่วไปเข้าด้วยกัน (I6e2a7)
ตอนนี้เครื่องมือเลื่อนแสดงลักษณะการเคลื่อนไหวแบบสะบัด Android แบบดั้งเดิม (I922af, b/147493715)
แทนที่ DrawBorder เพื่อใช้ตัวควบคุมเส้นขอบ (Id335a)
Modifier.tag เปลี่ยนชื่อเป็น Modifier.layoutId เพื่อหลีกเลี่ยงความสับสนกับ Modifier.testTag (I995f0)
พารามิเตอร์เปอร์เซ็นต์เมื่อสร้างหลักเกณฑ์ ConstraintLayout ถูกเปลี่ยนชื่อเป็นเศษส่วน (Ida2db)
เพิ่มการรองรับระยะขอบของอุปสรรค ConstraintLayout (I47ffe)
แก้ไขการรองรับ RTL ใน ConstraintLayout เพิ่ม API ที่ไม่รู้จักของ RTL (I3b1c7)
มีการเพิ่ม DSL ใหม่สำหรับ ConstraintLayout โปรดดูรายละเอียดเพิ่มเติมในตัวอย่าง (Icaa9a)
เพิ่มคำอธิบายประกอบ @ExperimentalLayout แล้ว ตอนนี้ ConstraintLayout, FlowRow และ FlowColumn ติดแท็กด้วยเพื่อทำเครื่องหมายว่า API กำลังจะมีการเปลี่ยนแปลง (I412a8)
เพิ่ม
Modifier.padding(InnerPadding)
แล้ว (I94985, b/157133803)นำ RowAlign, ColumnAlign ในแถวและคอลัมน์ที่เลิกใช้งานแล้วออก (If60d4, b/155858731)
นำ LayoutTag() ที่เลิกใช้งานแล้วออก โปรดใช้ Modifier.tag() แทน นำ Modifier.matchParent() ที่เลิกใช้งานแล้วออก โปรดใช้ Modifier.matchParentSize() แทน (If8044)
เพิ่มตัวแก้ไขเลย์เอาต์ออฟเซ็ตPx ซึ่งสามารถใช้เพื่อกำหนดออฟเซ็ต (แบบไดนามิก) ในหน่วยพิกเซล (I5af57)
เลิกใช้งาน AlignmentLineOffset composable แล้ว โปรดใช้ตัวปรับแต่ง relatedPaddingFrom() แทน CenterAlignmentLine Composable ถูกนำออกแล้ว (I60107)
เพิ่มตัวแก้ไขเลย์เอาต์ defaultMinSizeConstraints ซึ่งตั้งค่าข้อจำกัดด้านขนาดให้กับเลย์เอาต์ที่รวมไว้เมื่อไม่ได้ระบุข้อจำกัดที่เข้ามาใหม่ที่ตรงกันเท่านั้น (0 สำหรับข้อจำกัดขั้นต่ำและค่าอนันต์สำหรับข้อจำกัดสูงสุด) (I311ea, b/150460257)
นำคอนเทนเนอร์ออกแล้ว ใช้ Box แทน (Ibbc2b, b/151407926)
นำตัวแก้ไขความกว้าง/ความสูง/ขนาดของเลย์เอาต์ที่เลิกใช้งานแล้วออก (Ib0bc1)
เพิ่มค่าพารามิเตอร์เริ่มต้นสำหรับตัวปรับแต่งออฟเซ็ต (I37f06)
เพิ่มตัวแก้ไขระยะห่างจากขอบแบบสมมาตรแล้ว (I39840)
นำตัวปรับแต่ง LayoutAspectRatio ที่เลิกใช้งานแล้วออก (I65a74)
นำตัวปรับแต่ง LayoutAlign ที่เลิกใช้งานแล้วออก (I10877)
แก้ไขข้อบกพร่องของตัวปรับความกว้างและความสูงที่ทำให้วัดเลย์เอาต์ที่รวมกันโดยไม่มีข้อจำกัดของแกนด้านตรงข้าม (I210b8, b/154797971)
เพิ่มพารามิเตอร์แบบแรงโน้มถ่วงแนวตั้งและแนวนอนแรงโน้มถ่วงที่แถวและคอลัมน์ตามลำดับ (I7dc5a)
อัปเดต wrapContentWidth และ wrapContentHeight เพื่อคงการปรับแนวในแนวตั้งหรือแนวนอนแทนการจัดแนวใดๆ อัปเดตเครื่องแก้ไขแรงโน้มถ่วงให้ยอมรับการปรับแนวในแนวตั้งหรือแนวนอน มีการอัปเดตแถว คอลัมน์ และสแต็กเพื่อรองรับการปรับแนวอย่างต่อเนื่องแบบกำหนดเอง (Ib0728)
ทำให้การปรับความสอดคล้องเป็นค่าที่กำหนดเองได้ เพิ่มการจัดแนว 1D แล้ว (Ia0c05)
เปลี่ยนชื่อ EdgeInsets เป็น InnerPadding เปลี่ยนชื่อพารามิเตอร์ teriorPadding ของ Material Buttons เป็น Paddding (I66165)
alignToSiblings ยอมรับ "วัดแล้ว" แทนที่จะเป็น "ตำแหน่งได้" (I5788D)
เพิ่มตัวแก้ไขเพื่อปรับขนาดให้กับการวัดที่แท้จริง และเลิกใช้งานคอมโพเนนต์ที่ตอบสนองวัตถุประสงค์นี้ (I8295d)
เพิ่มการสนับสนุนสำหรับการปรับแต่งขนาดย่อยของ ConstraintLayout (Idb1a5)
นำ Composable ของ Wrap และ Center ที่เลิกใช้งานแล้วออก (I29e23)
เพิ่ม LayoutModifier2 ซึ่งเป็น API ใหม่สำหรับกำหนดตัวแก้ไขเลย์เอาต์ LayoutModifier ที่เลิกใช้งานแล้ว (If32ac)
ขณะนี้สมาชิก RowScope และ ColumnScope สามารถเข้าถึงได้นอกแถวและคอลัมน์ (I3a641)
คอนเทนเนอร์เลิกใช้งานแล้ว โปรดใช้ Box แทน (I675ce, b/151407926)
เพิ่มตัวแก้ไข LayoutOffset เพื่อชดเชยตำแหน่งเลย์เอาต์ (I0b8a3)
การสนับสนุนเบื้องต้นสำหรับ Rtl ในเลย์เอาต์ของการเขียน (Ia5519)
อัปเดต LayoutAlign เพื่อไม่ให้ครอบคลุมพื้นที่ที่มีอยู่อีกต่อไป (I2b14f)
นำ AspectRatio ที่ประกอบกันได้ออกเพื่อใช้แป้นกดร่วม ลบแล้ว FlexColumn, FlexRow Composables และตัวปรับแต่งช่องว่าง (Iec8a7) ล้าสมัย
นำตัวแก้ไข LayoutInflexible สำหรับแถวและคอลัมน์ออก (I0d820)
ใช้แฮนเดิลการเลือกการลากเพื่อเปลี่ยนการเลือกสำหรับ TextField (I27032)
ใช้ LongPressAndDrag สำหรับการเลือกฟิลด์ข้อความ (I17919)
แก้ไขข้อบกพร่อง
- FocusModifier เลิกใช้งานไปแล้วเพื่อใช้ Modifier.Focus, Modifier.focusRequester, Modifier.FocusObserver แทน FocusState และ FocusDescriptionState เลิกใช้งานแล้วเพื่อใช้ FocusState2 (I46919, b/160822875, b/160922136)
runOnIdleCompose
เปลี่ยนชื่อเป็นrunOnIdle
(I83607)- มีการเปลี่ยนชื่อ API การทดสอบหลายรายการเพื่อให้ใช้งานง่ายขึ้น ทั้งหมด searchXYZ API ได้เปลี่ยนชื่อเป็น onNodeXYZ เปลี่ยนชื่อ API ของ doXYZ ทั้งหมดเป็น OperatXYZ (I7F164)
- นำ Modifier.ripple ที่เลิกใช้งานแล้วออก ตอนนี้ฟีเจอร์ "คลิกได้" จะใช้ระลอกคลื่นเป็นตัวบ่งชี้เริ่มต้น (หากคุณตั้งค่า MaterialTheme {} ไว้ในแอปพลิเคชัน) ดังนั้นในกรณีส่วนใหญ่ คุณสามารถใช้สัญลักษณ์แบบคลิกและรับสัญญาณระลอกคลื่นได้ฟรี หากคุณต้องการปรับแต่งพารามิเตอร์สี / ขนาด / ที่มีขอบเขตสำหรับ RippleIndication คุณสามารถสร้าง RippleIndication ด้วยตนเองและส่งไปยังคลิกเพื่อใช้เป็นพารามิเตอร์ตัวบ่งชี้ได้ (I663b2, b/155375067)
- นำ API การทดสอบขนาดที่ล้าสมัยออก (Iba0a0)
- Made LayoutNode รุ่นทดลอง (I4f2e9)
- การล็อกการวางแนวแบบเลื่อนเวอร์ชัน 1 คือ ที่ใช้งานใน Compose ได้ (I1ce7a, b/150289741)
- ป๊อปอัป กล่องโต้ตอบ และเมนูกำลังรับค่า MaterialTheme ตามบริบท (Ia3665, b/156527485)
- นำพารามิเตอร์ทิศทางของเลย์เอาต์ออกจากบล็อกการวัดของฟังก์ชัน Layout() อย่างไรก็ตาม ทิศทางของเลย์เอาต์จะมีอยู่ใน Callback ผ่านออบเจ็กต์ Measure Scope (Ic7d9d)
- เพิ่ม AbsoluteAhandlingment - ช่วยให้จัดการเด็กในแถวได้โดยไม่ต้องมิเรอร์ใน RTL (I3a1df) โดยอัตโนมัติ
- เลิกใช้งานคำอธิบายประกอบ @ที่ไม่ได้ติดตามแล้ว แทนที่ด้วย @ComposableContract(tracked=false) (Id211e)
- ก่อนการเปลี่ยนแปลงนี้ ปลั๊กอินคอมไพเลอร์ของการเขียนจะสกัดกั้นการเรียกไปยังตัวสร้างภายในฟังก์ชัน @Composable หากมี (I5205a, b/158123804)
- เพิ่ม
viewModel()
Composable ซึ่งอนุญาตให้สร้างหรือสร้าง ViewModel แล้วคล้ายกับวิธีการทำงานในกิจกรรมหรือ Fragment (I5fdd1) คลาสรัศมีแบบปรับโครงสร้างใหม่ให้เป็น ในบรรทัด นำการสร้างโฆษณาที่แสดงร่วมออกแล้ว เมธอดที่ใช้กับตัวสร้างฟังก์ชัน พร้อมด้วยพารามิเตอร์เริ่มต้นให้มีรัศมี ตามแกน y ให้ตรงกับค่าของ พารามิเตอร์รัศมีแกน x
อัปเดต DrawScope.drawRoundRect เพื่อใช้งาน พารามิเตอร์รัศมีเดียว แทนที่จะเป็นพารามิเตอร์แยกกัน 2 ตัว ค่าจำนวนลอยตัวของรัศมีตามด้าน x และ y แกน (I46d1b)
แทนที่การใช้คลาส Px ใน เขียนชั้นเรียนในฐานะส่วนหนึ่งของ ความพยายามในการเปลี่ยนโครงสร้างโดยใช้ Dp เท่านั้น และประเภทดั้งเดิมสำหรับพารามิเตอร์พิกเซล ลบคลาส Px ทั้งหมดแล้ว (I3ff33)
แทนที่การใช้คลาส Px ใน เขียนชั้นเรียนในฐานะส่วนหนึ่งของ ความพยายามในการเปลี่ยนโครงสร้างโดยใช้ Dp เท่านั้น และประเภทดั้งเดิมสำหรับพารามิเตอร์พิกเซล (I086f4)
แทนที่การใช้คลาส Px ใน เขียนชั้นเรียนในฐานะส่วนหนึ่งของ ความพยายามในการเปลี่ยนโครงสร้างโดยใช้ Dp เท่านั้น และประเภทพื้นฐานสำหรับพารามิเตอร์พิกเซล (Id3434)
แทนที่การใช้คลาส Px ใน เขียนชั้นเรียนในฐานะส่วนหนึ่งของ ความพยายามในการเปลี่ยนโครงสร้างโดยใช้ Dp เท่านั้น และประเภทดั้งเดิมสำหรับพารามิเตอร์พิกเซล (I97a5a)
เคอร์เซอร์ของ TextField มีภาพเคลื่อนไหวกะพริบ (Id10a7)
ไม่จำเป็นต้องทำท่าทางสัมผัสบางส่วนผ่านอีกต่อไป GestureToken (Id7ae5)
แทนที่การใช้คลาส Px ใน เขียนชั้นเรียนในฐานะส่วนหนึ่งของ ความพยายามในการเปลี่ยนโครงสร้างโดยใช้ Dp เท่านั้น และประเภทดั้งเดิมสำหรับพารามิเตอร์พิกเซล (I57bff)
เลิกใช้งาน Modifier.semantics เพื่ออนุญาตให้ใช้คอมโพเนนต์ระดับสูงได้ (I4cfdc)
เปลี่ยนชื่อ AnnotatedString.Builder.addAnnotationString เป็น addStringAnnotation (I5059e)
อัปเดต Alignment API และเพิ่มการรองรับการปรับแนวแบบสัมบูรณ์ (ซึ่งไม่มิเรอร์อัตโนมัติในบริบท Rtl) (I38cd3)
องค์ประกอบย่อยของเลย์เอาต์และ LayoutModifier วัดได้ด้วยทิศทางของเลย์เอาต์ที่แตกต่างกัน (Ibd731)
แนะนำสี่เหลี่ยมผืนผ้าเพิ่มเติม พารามิเตอร์ไปยัง ImagePainter เพื่อรองรับ วาดส่วนย่อยของ ImageAsset ที่เกี่ยวข้อง (I0ea9e)
แก้ไขข้อขัดข้องใน AdapterList เมื่อนำรายการออก (Ic64b0, b/153195921)
เราได้เปลี่ยนวิธีวัดเลย์เอาต์แรกที่คุณใส่ไว้ในบล็อก activity.setContent { } ก่อนหน้านี้ระบบบังคับให้แสดงทั้งหน้าจอกิจกรรมทั้งหมด และตอนนี้ก็จะทํางานเสมือนว่าคุณวางเลย์เอาต์ไว้ในกลุ่ม โดยอาจมีขนาดเล็กกว่าหน้าจอและจะอยู่ในหน้าจอซ้ายบน หากต้องการใช้ลักษณะการทำงานเดิม คุณสามารถใช้ Modifier.fillMaxSize() กับเลย์เอาต์ได้ (Ie88a7, b/153453714)
โมดูล ui-text-compose ถูกเปลี่ยนชื่อเป็นข้อความ ui-text ข้อความ UI ตอนนี้มี CoreText และ CoreTextField Composables (Ib7d47)
โมดูลข้อความ UI เปลี่ยนชื่อเป็น ui-text-core (I57dec)
ย้าย ui-framework/CoreText, CoreTextField composables ภายใต้แล้ว ui-text-compose คุณอาจต้องการใส่ "ui-text-compose" ไว้ใน (I32042)
runOnIdleCompose
และrunOnUiThread
เป็นฟังก์ชันส่วนกลางแล้ว แทนเมธอดใน ComposeTestRule (Icbe8f)[Mutable]ย้ายโอเปอเรเตอร์ที่ได้รับมอบสิทธิ์พร็อพเพอร์ตี้ของรัฐไปยังส่วนขยายแล้ว เพื่อรองรับการเพิ่มประสิทธิภาพการมอบสิทธิ์พร็อพเพอร์ตี้ของ Kotlin 1.4 ผู้โทรจะต้องเพิ่ม เพื่อนำเข้าเพื่อใช้
by state { ... }
หรือby mutableStateOf(...)
ต่อไป (I5312C)DrawLayerModifier และDrawLayer() สร้างคลิปToBounds ตามค่าเริ่มต้นแล้ว และClipToOutline เป็น "เท็จ" (I0eb8b, b/152810850)
เปลี่ยนชื่อ Layoutผลลัพธ์ เป็น Measureผลลัพธ์แล้ว (Id8c68)
เลิกใช้งาน Center Composable แล้ว ควรแทนที่ด้วยตัวแก้ไข LayoutSize.Fill + LayoutAlign.Center หรือด้วย Composable ของ Box หรือ Stack ที่มีการใช้ตัวแก้ไขที่เหมาะสม (Idf5e0)
เปลี่ยนชื่อ Layoutแบบยืดหยุ่น เป็น Layoutweight แล้ว เปลี่ยนชื่อพารามิเตอร์ที่เข้มงวดเพื่อเติมแล้ว (If4738)
DrawVector เปลี่ยนจากปกติ ฟังก์ชัน Composable เพื่อแสดงผล ModifierDrawVector() ที่ จะวาดเวกเตอร์เป็นพื้นหลังของเลย์เอาต์ (I7b8e0)
แทนที่ฟังก์ชันที่ประกอบได้ด้วยคลิปด้วยแป้นกดร่วม DrawClip() DrawClipToBounds เป็นตัวแก้ไขที่สะดวก ไว้ใช้เมื่อคุณแค่ต้องการตัดคลิปกับขอบเขตของเลเยอร์เท่านั้น ด้วยรูปร่างสี่เหลี่ยมผืนผ้า (If28eb)
แทนที่ฟังก์ชัน Composable ของ DrawShadow ด้วย DrawShadow() แล้ว แป้นกดร่วม ขณะนี้เงาถูกวาดเป็นส่วนหนึ่งของ LayerModifier (I0317a)
ย้าย androidx.compose.ViewComposer ไปยัง androidx.ui.node.UiComposer แล้ว นำ androidx.compose.Emittable ออกแล้ว คอมโพเนนต์นี้ซ้ำซ้อนกับ ComponentNode นำ androidx.compose.ViewAdapters ออกแล้ว ซึ่งจะไม่ใช่ Use Case ที่รองรับอีกต่อไป Compose.composeInto เลิกใช้งานแล้ว โปรดใช้
setContent
หรือsetViewContent
แทน Compose.disposeComposition เลิกใช้งานแล้ว โปรดใช้เมธอดdispose
ในComposition
ที่แสดงผลโดยsetContent
แทน androidx.compose.Compose.subcomposeInto ได้ย้ายไปที่ androidx.ui.core.subcomposeInto ComponentNode#emitInsertAt เปลี่ยนชื่อเป็น ComponentNode#insertAt แล้ว ComponentNode#emitRemoveAt เปลี่ยนชื่อเป็น ComponentNode#removeAt แล้ว ComponentNode#emitMode เปลี่ยนชื่อเป็น ComponentNode#move (Idef00)เลิกใช้งานการรวม Composable แล้ว โดยสามารถแทนที่ด้วยตัวปรับแต่ง LayoutAlignment หรือด้วย Stack Composable (Ib237f)
ทำให้ทิศทางของเลย์เอาต์ได้รับการเผยแพร่จากโหนดเลย์เอาต์ระดับบนสุดไปยังโหนดย่อย เพิ่มตัวแก้ไขทิศทางของเลย์เอาต์แล้ว (I3d955)
เปลี่ยนชื่อ Painter.toModifier เป็น Painter.asModifier เนื่องจากตัวปรับแต่งที่สร้างขึ้นใหม่มีการอ้างอิงจาก Painter เดิมซึ่งแชร์ในอินสแตนซ์ Modifier หลายรายการได้ (I7195b)
รองรับทิศทางจากขวาไปซ้ายในตัวแก้ไข LayoutPadding (I9e8da)
เราได้รวมความหนาแน่นและ DensityScope เป็นอินเทอร์เฟซเดียว ตอนนี้คุณใช้ DensityAmbient.current แทนเงื่อนไขแอมเบียนท์Density() ได้แล้ว แทน withDensity(density) เพียงด้วย(density) (I11cb1)
นำคลาส ValueHolder ออกแล้ว ปรับโครงสร้างคลาส AnimatedValue, คลาส AnimatedFloat เป็น ทำให้ฟิลด์ค่าภาพเคลื่อนไหวมีลักษณะเป็นนามธรรมเพื่อให้คลาสย่อยดูการอัปเดตค่าได้
- เพิ่มคลาสโมเดลสำหรับ AnimatedValue, AnimatedFloat ฯลฯ
- เพิ่ม @Composable API ชุดใหม่เพื่อให้ภาพเคลื่อนไหวระหว่างค่าต่างๆ เคลื่อนไหว
- (I79530)
การเปลี่ยนแปลงที่ส่งผลกับ Environments API โปรดดูรายละเอียดในบันทึกและเอกสาร
Ambient<T>
(I4c7ee, b/143769776)ขณะนี้ตำแหน่ง Int ของเส้นจัดตำแหน่งที่แสดงผลจาก Placeable#get(AlignmentLine) ไม่เป็นค่าว่างแล้ว หากบรรทัดการจัดเรียงที่ค้นหาขาดหายไป ระบบจะแสดงผล AlignmentLine.Unidentifier (I896c5, b/158134875)
แก้ไขข้อบกพร่อง ConstraintLayout ที่ทำให้เกิดข้อขัดข้องในการจัดองค์ประกอบใหม่ (Ibee5a, b/158164341)
มีการเปลี่ยนแปลงด้วย WithConstraints ต่อท้าย lambda API จากนี้จะมีเพียง 2 พารามิเตอร์ แต่กลับมีขอบเขตตัวรับ ซึ่งนอกเหนือจากข้อจำกัดและการจัดวางDirection ยังมีคุณสมบัติ minWidth, maxWidth, minHeight และ maxHeight ใน Dp (I91b9a, b/149979702)
เปลี่ยนชื่อ LayoutModifier2 เป็น LayoutModifier (Id29f3)
ฟังก์ชันการวัดภายในใน Layouts และ LayoutModifier2 มีตัวรับ IntrinsicMeasureScope ในปัจจุบันซึ่งมี API การค้นหาภายในพร้อมทิศทางของเลย์เอาต์ที่เผยแพร่โดยปริยาย (Id9945)
เลิกใช้งาน LayoutDirectionAmbient แล้ว หากต้องการอ่านทิศทางการจัดวางที่กำหนดโดยภาษา ให้ใช้ localeLayoutDirection ใน ConfigurationAmbient (I851b1)
เพิ่ม positionInParent และ boundsInParent สำหรับ LayoutCoordinates แล้ว (Icacdd, b/152735784)
ParentData Composable เลิกใช้งานแล้ว คุณควรสร้างตัวแก้ไขที่ใช้อินเทอร์เฟซ ParentDataModifier หรือใช้ตัวแก้ไข LayoutTag หากคุณเพียงต้องการติดแท็กองค์ประกอบย่อยเพื่อให้จดจำองค์ประกอบเหล่านั้นภายในบล็อกการวัด (I51368, b/150953183)
เพิ่ม OnPositionedModifier และ OnChildPositionedModifier เพื่อแทนที่ OnPositioned และ OnChildPositioned Composable (I2ec8f)
ไม่อนุญาตระยะห่างจากขอบที่ลบใน LayoutPadding ควรใช้ LayoutOffset แทนสำหรับออฟเซ็ตตำแหน่งเชิงลบ (Ifb5b1)
WithConstraints ได้รับพารามิเตอร์ LayoutDirection (I6d6f7)
อัปเดตแฟล็ก
ComposeFlags.COMPOSER_PARAM
เป็นtrue
ซึ่งจะเปลี่ยนกลยุทธ์การสร้างโค้ดสำหรับปลั๊กอินการเขียน การดำเนินการนี้จะทำให้มีการสร้างฟังก์ชัน @Composable ขึ้นพร้อมกับพารามิเตอร์สังเคราะห์เพิ่มเติม ซึ่งส่งผ่านไปยังการเรียก @Composable ที่ตามมาเพื่อให้รันไทม์จัดการการดำเนินการได้อย่างเหมาะสม นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในไบนารีที่สำคัญ อย่างไรก็ตาม ควรรักษาความเข้ากันได้ระดับต้นทางในการใช้งานการเขียนที่ถูกคว่ำบาตรทั้งหมด (I7971C)เปลี่ยน LayoutCoordinates เพื่อสร้าง providedAlignmentLines แล้ว ตั้งค่าแทนแผนที่ และให้ LayoutCoordinates นำ get() อีกครั้งสำหรับการดึงข้อมูลค่า วิธีนี้ทำให้ สำหรับตัวปรับแต่งเพื่อแก้ไขค่าของชุดอย่างน้อยหนึ่งค่าโดยไม่มี เพื่อสร้างคอลเล็กชันใหม่สำหรับคีย์ตัวปรับแต่งแต่ละตัว (I0245a)
LayoutCoordinates ไม่มีพร็อพเพอร์ตี้ตำแหน่งอีกต่อไป คุณสมบัติตำแหน่งไม่สมเหตุสมผลเมื่อพิจารณา LayoutModifier การหมุน หรือการปรับขนาด นักพัฒนาซอฟต์แวร์ควรใช้ parentCoordinates แทน และ childToLocal() เพื่อคำนวณการแปลงจาก เลย์เอาต์ประสานงานกับอีกส่วน
LayoutCoordinates ใช้ IntPxSize สำหรับคุณสมบัติขนาดแทน PxSize เค้าโครงจะใช้ขนาดพิกเซลที่เป็นจำนวนเต็มสำหรับการจัดวาง ดังนั้นขนาดเค้าโครงทั้งหมด ควรใช้จำนวนเต็ม ไม่ใช่ค่าทศนิยม (I9367b)
การปรับปรุงแพลตฟอร์ม API ของข้อจำกัด (I0fd15)
เพิ่ม TextDirection.Content (I48f36)
ปรับเมนูแถบเครื่องมือเพื่อแสดงการคัดลอก ตัด วาง อย่างถูกต้อง (Id3955)
เพิ่ม FloodToolbar สำหรับการเลือกฟิลด์ข้อความ (Ie8b07)
TextDirectionAlgorithm เปลี่ยนชื่อเป็น TextDirection (I75ce8)
TextDirection เปลี่ยนชื่อเป็น ResolvedTextDirection (I3ff38)
เพิ่ม HapticFeedback ลงในการเลือก TextField (I58050)
เพิ่มวิธีการคัดลอก ตัด และวางลงในการเลือกฟิลด์ข้อความ (Idb70b)
ลบ TestTag และความหมายแล้ว ใช้ Modifier.testTag และ Modifier.semantics แทน (I15ff0, b/158841414)
เปลี่ยนชื่อแพ็กเกจสำหรับ Locale และ LocaleList จาก androidx.ui.text ไปยัง androidx.ui.intl (I8132c)
การเปลี่ยนแปลง API:
AnnotatedString(builder: Builder)
เปลี่ยนชื่อเป็นannotatedString(builder: Builder)
(Ia6377)การเปลี่ยนแปลง API:
AnnotatedString.Item
เปลี่ยนชื่อเป็นAnnotatedString.Range
(I2d44d)เพิ่มแถบเครื่องมือสำหรับการดำเนินการที่เกี่ยวข้องกับข้อความ (I49d53)
LifecycleOwnerAmbient ใหม่พร้อมใช้งานแล้ว ขณะนี้กิจกรรมที่คุณใช้กับ Compose UI ควรขยาย androidx.activity.ComponentActivity (หรือ AppCompatActivity) เลิกใช้งาน setContent บน android.app.Activity แล้ว (Idb25a, b/153141084)
ชื่อแพ็กเกจ ui-android-text (androidx.text) ถูกแทนที่ด้วย androidx.ui.text.platform เพื่อให้สอดคล้องกับนโยบาย androidx (I42711)