Compose Foundation

เขียนแอปพลิเคชัน Jetpack Compose ด้วยองค์ประกอบพื้นฐานที่พร้อมใช้งาน และขยายรากฐานเพื่อสร้างชิ้นส่วนระบบการออกแบบของคุณเอง
อัปเดตล่าสุด รุ่นที่เสถียร รุ่นที่อาจได้รับการเผยแพร่ รุ่นเบต้า รุ่นอัลฟ่า
2 กรกฎาคม 2025 1.8.3 - 1.9.0-beta02 -

โครงสร้าง

Compose คือการรวมรหัสกลุ่ม Maven 7 รายการภายใน androidx แต่ละกลุ่ม มีฟังก์ชันการทำงานย่อยที่กำหนดเป้าหมาย ซึ่งแต่ละกลุ่มมีชุดหมายเหตุประจำรุ่นของตัวเอง

ตารางนี้อธิบายกลุ่มและลิงก์ไปยังชุดหมายเหตุประจำรุ่นแต่ละชุด

กลุ่มคำอธิบาย
compose.animationสร้างภาพเคลื่อนไหวในแอปพลิเคชัน Jetpack Compose เพื่อยกระดับประสบการณ์ของผู้ใช้
compose.compilerแปลงฟังก์ชัน @Composable และเปิดใช้การเพิ่มประสิทธิภาพด้วยปลั๊กอินคอมไพเลอร์ Kotlin
compose.foundationเขียนแอปพลิเคชัน Jetpack Compose ด้วยองค์ประกอบพื้นฐานที่พร้อมใช้งาน และขยายรากฐานเพื่อสร้างชิ้นส่วนระบบการออกแบบของคุณเอง
compose.materialสร้าง UI ของ Jetpack Compose ด้วยคอมโพเนนต์ Material Design ที่พร้อมใช้งาน ซึ่งเป็นจุดแรกเข้าของ Compose ในระดับที่สูงขึ้น ออกแบบมาเพื่อจัดหาคอมโพเนนต์ที่ตรงกับคอมโพเนนต์ที่อธิบายไว้ที่ www.material.io
compose.material3สร้าง UI ของ Jetpack Compose ด้วยคอมโพเนนต์ Material Design 3 ซึ่งเป็นวิวัฒนาการขั้นถัดไปของ Material Design Material 3 มีการอัปเดตธีมและคอมโพเนนต์ รวมถึงฟีเจอร์การปรับเปลี่ยนในแบบของคุณของ Material You เช่น สีแบบเปลี่ยนอัตโนมัติ และออกแบบมาให้สอดคล้องกับสไตล์ภาพและ UI ของระบบ Android 12 ใหม่
compose.runtimeส่วนประกอบพื้นฐานของรูปแบบการเขียนโปรแกรมและการจัดการสถานะของ Compose รวมถึงรันไทม์หลักสำหรับปลั๊กอินคอมไพเลอร์ Compose เพื่อกำหนดเป้าหมาย
compose.uiองค์ประกอบพื้นฐานของ Compose UI ที่จำเป็นต่อการโต้ตอบกับอุปกรณ์ ซึ่งรวมถึงเลย์เอาต์ การวาด และอินพุต

การประกาศทรัพยากร Dependency

หากต้องการเพิ่มทรัพยากร Dependency ใน Compose คุณต้องเพิ่มที่เก็บ Maven ของ Google ลงในโปรเจ็กต์ อ่านข้อมูลเพิ่มเติมได้ที่ที่เก็บ Maven ของ Google

เพิ่มการอ้างอิงสำหรับอาร์ติแฟกต์ที่คุณต้องการในไฟล์ build.gradle สำหรับแอปหรือโมดูลของคุณ

Groovy

dependencies {
    implementation "androidx.compose.foundation:foundation:1.8.3"
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

dependencies {
    implementation("androidx.compose.foundation:foundation:1.8.3")
}

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

ดูข้อมูลเพิ่มเติมเกี่ยวกับการพึ่งพาได้ที่เพิ่มการพึ่งพาบิลด์

ความคิดเห็น

ความคิดเห็นของคุณจะช่วยให้ Jetpack ทำงานได้ดียิ่งขึ้น โปรดแจ้งให้เราทราบหากพบปัญหาใหม่หรือมี ไอเดียในการปรับปรุงไลบรารีนี้ โปรดดูปัญหาที่มีอยู่ ในไลบรารีนี้ก่อนสร้างปัญหาใหม่ คุณสามารถโหวตปัญหาที่มีอยู่ได้โดย คลิกปุ่มดาว

สร้างปัญหาใหม่

ดูข้อมูลเพิ่มเติมได้ในเอกสารประกอบของเครื่องมือติดตามปัญหา

เวอร์ชัน 1.9

เวอร์ชัน 1.9.0-beta02

2 กรกฎาคม 2025

androidx.compose.foundation:foundation-*:1.9.0-beta02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.9.0-beta02 มีการเปลี่ยนแปลงเหล่านี้

ฟีเจอร์ใหม่

  • รองรับรายการอัจฉริยะในเมนูตามบริบทและแถบเครื่องมือการเลือก

การเปลี่ยนแปลง API

  • แก้ไขข้อบกพร่องที่แป้นพิมพ์ฮาร์ดแวร์หรือรีโมตทีวีบางรุ่นไม่สามารถย้ายเคอร์เซอร์ใน TextFields ใหม่โดยใช้ปุ่มทิศทาง และเปลี่ยนโฟกัสไปยัง Composable อื่นแทน เพิ่ม ComposeFoundationFlag.isTextFieldDpadNavigationFixEnabled เพื่อให้ปิดใช้การแก้ไขนี้ได้ชั่วคราวหากทำให้เกิดลักษณะการทำงานที่ไม่พึงประสงค์ในลักษณะที่กู้คืนไม่ได้ (Ie1922)

การแก้ไขข้อบกพร่อง

  • แก้ไขปัญหาที่ส่วนหัวแบบติดหนึบไม่ติดหากมีรายการที่ปักหมุด (I9198d, b/385006133)
  • TextObfuscationMode.RevealLastTyped ตอนนี้จะทำตามการตั้งค่าระบบ "TEXT_SHOW_PASSWORD" แล้ว (I41c0c)
  • แก้ไขข้อบกพร่องที่ BasicTextField แสดงคำเตือน "วางจากคลิปบอร์ด" อย่างไม่ถูกต้องเมื่อแถบเครื่องมือข้อความเปิดขึ้นเป็นครั้งแรก (I5fda2)

เวอร์ชัน 1.9.0-beta01

18 มิถุนายน 2025

androidx.compose.foundation:foundation-*:1.9.0-beta01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.9.0-beta01 มีการเปลี่ยนแปลงเหล่านี้

การเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ

  • ตอนนี้โหนดตัวแก้ไข background และ border ได้ใช้ SemanticsModifierNode แล้ว ซึ่งอาจส่งผลให้มีการเพิ่ม SemanticsNodes ใหม่ลงในแผนผังความหมาย และทำให้การทดสอบที่ตั้งสมมติฐานเกี่ยวกับโครงสร้างแผนผังความหมายล้มเหลว เช่น การทดสอบที่ใช้ onChild, onParent, onSibling และวิธีอื่นๆ ที่คล้ายกันเพื่อยืนยันอาจล้มเหลวหากมีการเพิ่มโหนดใหม่ระหว่างโหนดปัจจุบันและโหนดเป้าหมาย วิธีที่แนะนำในการแก้ไขข้อผิดพลาดเหล่านี้คือการเพิ่ม testTag ลงในโหนดเป้าหมายโดยตรง อีกวิธีหนึ่งคือการใช้ตัวเทียบที่ยืดหยุ่นกว่า เช่น onNode(hasAnyAncestor(hasText(“ancestor”)) and hasText(“target”)) (I638b5)

การเปลี่ยนแปลง API

  • เปลี่ยนชื่อ Modifier.addTextContextMenuComponents เป็น appendTextContextMenuComponents (I4c43f)
  • นำฟังก์ชัน AnnotatedOutputTransformation ออกและย้ายฟังก์ชัน addStyle ไปยัง TextFieldBuffer addStyle ยังคงรับสายได้จาก OutputTransformation เท่านั้น (I9930a, b/417991824)
  • เราเขียน Clickable ใหม่เพื่อไม่ให้ใช้การป้อนข้อมูลด้วยเคอร์เซอร์ที่ระงับเป็นการเพิ่มประสิทธิภาพ ฟีเจอร์นี้เปิดใช้โดยแฟล็ก คุณปิดใช้ได้หากพบข้อบกพร่องในการติดตั้งใช้งานใหม่ - ComposeFoundationFlags.isNonSuspendingPointerInputInClickableEnabled (I85b65)
  • เปิดตัว isFlingCancellationWithNestedScrollFixEnabled เพื่อแก้ไขปัญหาการแพร่กระจายการปัดในการเลื่อนที่ซ้อนกัน ใน CL นี้ เราจะกู้คืนลักษณะการทำงานของการโยนที่ถูกนำออกไปใน aosp/3260391 เราจะยังคงยกเลิกภาพเคลื่อนไหวการปัดในกรณีที่นำเด็กออกจากองค์ประกอบ (I467f4, b/405910180, b/419049142, b/416784125)
  • WindowInsetsRulers: เปลี่ยน rulersIgnoringVisibility เป็นสูงสุด เปลี่ยน getDisplayCutoutBounds() ให้เป็นฟังก์ชันส่วนขยายของ PlacementScope WindowInsetsAnimationProperties เปลี่ยนเป็น WindowInsetsAnimation และ getAnimationProperties() เปลี่ยนเป็น getAnimation() แล้ว (I3816f)
  • เปลี่ยน InsetsRulers ให้เป็นโค้ดทั่วไปที่มีชื่อ WindowInsetsRulers ปรับ API ให้เรียบง่ายขึ้นเพื่อให้การแทรกทั้งหมดเป็น WindowInsetsRulers แยกพร็อพเพอร์ตี้ภาพเคลื่อนไหวที่ไม่ใช่ไม้บรรทัดไปยังคลาส AnimationProperties WindowInsetsRulers.innermostOf() ใช้เพื่อผสาน WindowInsetsRulers หลายรายการได้ (I2f0c6, b/415012444)

การแก้ไขข้อบกพร่อง

  • เพิ่มการใช้งาน scrollAnimationSpec ใน ContentInViewNode อีกครั้ง เราได้นำลักษณะการทำงานนี้ออกในระหว่างscrollAnimationSpecการเลิกใช้งาน ซึ่งทำให้กรณีการใช้งานใช้งานไม่ได้ (I1436a, b/403301605)

เวอร์ชัน 1.9.0-alpha04

4 มิถุนายน 2025

androidx.compose.foundation:foundation-*:1.9.0-alpha04 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.9.0-alpha04 มีการเปลี่ยนแปลงเหล่านี้

การเปลี่ยนแปลง API

  • PrefetchScheduler และการปรับแต่งได้เลิกใช้งานแล้วเพื่อรองรับการติดตั้งใช้งานภายในที่ทำงานทั้งหมดโดยอัตโนมัติ (I3a9a6, b/420551535)
  • อัปเดต Scrollable2DState ให้ใช้ออฟเซ็ตในเมธอด canScroll แทนมุม (I28694, b/417268474)
  • แทนที่ addAnnotation ใน AnnotatedOutputTransformation ด้วย addStyle (I91c6f, b/417991824)
  • แก้การสั่นไหวแล้ว LazyLayout (If5db4)
  • ปรับปรุงตัวสร้างที่ว่างเปล่าสำหรับ LazyLayoutPrefetchState และวิธีการกำหนดเวลา schedulePrecomposition และ schedulePrecompositionAndPremeasure (I4362f, b/252853717)
  • เปิดตัว ProcessTextKey ใน Android ที่ใช้สำหรับรายการเมนูตามบริบทซึ่งเพิ่มสำหรับการPROCESS_TEXTดำเนินการตามความตั้งใจ (If0ac4)
  • ทำให้ API เมนูตามบริบทเป็นแบบสาธารณะ เปิดเผย Modifier.addTextContextMenuComponents และ Modifier.filterTextContextMenuComponents เพื่อเพิ่มและนำรายการออกในเมนูตามบริบท นอกจากนี้ เรายังได้เปิดตัว API พื้นฐานต่อไปนี้เพื่อให้ผู้ใช้สร้างเมนูบริบทที่กำหนดเองได้
    • TextContextMenuProvider
    • TextContextMenuDataProvider
    • TextContextMenuData
    • TextContextMenuComponent
    • LocalTextContextMenuDropdownProvider
    • LocalTextContextMenuToolbarProvider (I1b7b0)
  • ทำให้ LazyLayoutItemProvider เสถียร (Icce09, b/261565751)
  • เปิดตัวฟีเจอร์การเลือกอัจฉริยะของ Android ที่เปิด/ปิดใช้ได้ผ่าน ComposeFoundationFlags.isSmartSelectionEnabled นอกจากนี้ ยังมี compositionLocal LocalTextClassifierCoroutineContext แบบคงที่ที่ใช้ระบุ CoroutineContext ซึ่งจะเปิดตัวงาน TextClassification ได้ด้วย (I1dbaa, b/139321320)

เวอร์ชัน 1.9.0-alpha03

20 พฤษภาคม 2025

androidx.compose.foundation:foundation-*:1.9.0-alpha03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.9.0-alpha03 มีการเปลี่ยนแปลงเหล่านี้

การเปลี่ยนแปลง API

  • เพิ่ม AnnotatedOutputTransformation ที่ช่วยให้คุณเพิ่มคำอธิบายประกอบใน TextField ก่อนที่จะแสดงผลได้ (Ibc6f0, b/389978748)
  • เปิดตัว LazyLayoutMeasurePolicy และทำให้ LazyLayoutMeasureScope เสถียร (I8c5df, b/252853717)
  • ตอนนี้ BasicSecureTextField จะยก ScrollState ของ BasicTextField ภายใน (I6e576)
  • Modifier.onFirstVisible และModifier.onVisibilityChanged ซึ่งเป็นตัวแก้ไขระดับสูงที่สร้างขึ้นบน Modifier.onLayoutRectChanged ตัวแก้ไขเหล่านี้สร้างขึ้นมาเพื่อจัดการข้อกำหนดของแอปพลิเคชันทั่วไปจำนวนมากโดยเฉพาะ เช่น การบันทึกการแสดงผล การเล่นวิดีโออัตโนมัติ เป็นต้น ตัวแก้ไขเหล่านี้สร้างขึ้นโดยคำนึงถึงประสิทธิภาพเพื่อให้สามารถใช้ในสถานการณ์ที่สำคัญซึ่งอิงตามรายการได้โดยไม่ต้องเสี่ยงต่อการลดประสิทธิภาพการเลื่อน นอกจาก API ตัวแก้ไขเหล่านี้แล้ว เรายังได้เพิ่ม API อื่นๆ เพื่อ RelativeLayoutBounds เพื่อรองรับ Use Case เหล่านี้ รวมถึงช่วยให้นักพัฒนาแอปสร้างตัวแก้ไขที่กำหนดเองที่คล้ายกันซึ่งเหมาะกับ Use Case ของตนเองได้อย่างง่ายดาย (I759b8)
  • เปิดตัวโอเวอร์โหลด detectDragGestures ที่มีการควบคุมการล็อกการวางแนวและการเลื่อนด้วยนิ้ว (Iadb0d)
  • เปิดตัว Modifier.scrollable2D, Scrollable2DState และ API ที่แสดงร่วมสำหรับการสร้างสถานะ นอกจากนี้ ยังได้เปิดตัวฟังก์ชันส่วนขยายการเลื่อนทั่วไปด้วย (Ic61c8, b/214410040)
  • ค่าสี 64 บิตของ Compose เปรียบเทียบกับ Android โดยตรงไม่ได้ColorLongs เนื่องจากรหัสพื้นที่สีบางรายการไม่เป็นไปตามลำดับ เราได้เพิ่ม API ใหม่ 2 รายการ ได้แก่ toColorLong() และ fromColorLong() เพื่อใช้แปลงเป็นและจากพื้นที่สีของ Android (I36899)

การแก้ไขข้อบกพร่อง

  • ข้อความที่คัดลอกจาก Text Composable หลายรายการใน SelectionContainer จะมีตัวคั่นบรรทัด \n เพิ่มระหว่างข้อความที่มาจาก Text Composable ที่แยกกัน (I25332, b/285036739)

เวอร์ชัน 1.9.0-alpha02

7 พฤษภาคม 2025

androidx.compose.foundation:foundation-*:1.9.0-alpha02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.9.0-alpha02 มีการเปลี่ยนแปลงเหล่านี้

การเปลี่ยนแปลง API

  • แก้ไขวิธีเพิ่มการเปลี่ยนแปลงอินพุตของเคอร์เซอร์ใน VelocityTracker ใน DragGestureNode ซึ่งควบคุมได้ด้วยฟีเจอร์ใหม่ isOffsetPositionBeforeAddingToVelocityTrackerEnabled (Ic7992, b/292556787, b/236451818)
  • ทำให้ await[Vertical/Horizontal]PointerSlopOrCancellation เป็นแบบสาธารณะ (I6968b, b/298903681)
  • AbstractComposeView.consumeWindowInsets ตอนนี้ค่าเริ่มต้นคือ false WindowInsets จะปรับขนาดและตำแหน่งให้เหมาะกับเด็กโดยอัตโนมัติเมื่อตั้งค่าเป็น "เท็จ" คุณจึงไม่จำเป็นต้องตั้งค่าเริ่มต้นเป็น "จริง" อีกต่อไป ซึ่งจะแก้ไขปัญหาที่ View ของลูกไม่ได้รับการอัปเดต WindowInsets โดยค่าเริ่มต้น นักพัฒนาแอปสามารถเลือกไม่รับการอัปเดตได้โดยเปลี่ยน ComposeFoundationLayout.isWindowInsetsDefaultPassThroughEnabled เป็น true หรือโดยการตั้งค่า AbstractComposeView.consumeWindowInsets เป็น true ในอินสแตนซ์มุมมอง Compose ทั้งหมด (I6fa0a, b/411868840)

การมีส่วนร่วมภายนอก

  • แก้ไขข้อขัดข้องของ Pager เมื่อมีค่า beyondViewportPageCount ขนาดใหญ่มาก (Idb2db)

เวอร์ชัน 1.9.0-alpha01

23 เมษายน 2025

androidx.compose.foundation:foundation-*:1.9.0-alpha01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.9.0-alpha01 มีการเปลี่ยนแปลงเหล่านี้

การเปลี่ยนแปลงลักษณะการทำงาน

  • การตรวจสอบ Lint ที่มาพร้อมกับ Compose ต้องใช้ AGP เวอร์ชัน 8.8.2 เป็นอย่างน้อย หากอัปเกรด AGP ไม่ได้ คุณสามารถอัปเกรด Lint ด้วยตนเองได้โดยใช้ android.experimental.lint.version=8.8.2 (หรือเวอร์ชันที่ใหม่กว่า) ใน gradle.properties หากต้องการเรียกใช้การตรวจสอบ Lint ของ Compose ภายใน IDE คุณต้องใช้ Android Studio Ladybug หรือใหม่กว่า

  • การเปลี่ยนแปลงที่ทำให้เกิดข้อขัดข้อง: โอเวอร์โหลด clickable, combinedClickable, selectable, toggleable และ triStateToggleable ที่ไม่มีพารามิเตอร์ Indication จะรองรับเฉพาะอินสแตนซ์ IndicationNodeFactory ที่ระบุโดยใช้ LocalIndication เท่านั้น การเปลี่ยนแปลงนี้จะมีผลเมื่อคุณคอมไพล์การใช้งานตัวแก้ไขเหล่านี้อีกครั้งโดยใช้ Compose เวอร์ชันนี้ การขึ้นต่อกันแบบไบนารี / การขึ้นต่อกันแบบทรานซิทีฟจะไม่ได้รับผลกระทบ หากคุณใช้การติดตั้งใช้งานการระบุที่เลิกใช้งานแล้วกับ LocalIndication และใช้ API เหล่านี้ จะทำให้เกิดข้อขัดข้องขณะรันไทม์ การเปลี่ยนแปลงลักษณะการทำงานนี้จำเป็นต่อการปรับปรุงประสิทธิภาพ และช่วยให้ฟังก์ชันที่ประกอบได้ซึ่งใช้ตัวแก้ไขเหล่านี้ข้ามระหว่างการประกอบใหม่ได้ คุณใช้ ComposeFoundationFlags.isNonComposedClickableEnabled=false เพื่อเลือกไม่ใช้การเปลี่ยนแปลงลักษณะการทำงานนี้ชั่วคราวได้ เพื่อเปิดใช้การอัปเกรด Compose โดยไม่ถูกบล็อกในการย้ายข้อมูลนี้ เราจะนำฟีเจอร์นี้ออกหลังจากเปิดตัวเวอร์ชันเสถียร 1 เวอร์ชัน หากต้องการแก้ไข ให้ย้ายข้อมูลการติดตั้งใช้งานการระบุที่เลิกใช้งานแล้วเพื่อใช้ IndicationNodeFactory แทน นอกจากนี้ คุณยังใช้การโอเวอร์โหลดกับพารามิเตอร์ Indication ที่ชัดเจนได้ด้วย ซึ่งการโอเวอร์โหลดเหล่านี้จะยังคงรองรับอินสแตนซ์ Indication ที่ไม่ใช่ IndicationNodeFactory ต่อไป แม้ว่าเราจะไม่แนะนำให้ทำเนื่องด้วยเหตุผลด้านประสิทธิภาพ (I6bcdc, b/316914333)

การเปลี่ยนแปลง API

  • เปิดตัว API สำหรับสร้างรายการหัวข้อย่อยที่กำหนดเองผ่าน AnnotatedString (I1d066, b/383269496, b/139326648)
  • อนุญาตให้ฟีเจอร์เขียนทริกเกอร์ ViewTreeObserver.OnScrollChanged ลักษณะการทำงานนี้จะเปิดตัวภายใต้ฟีเจอร์ทดลอง isOnScrollChangedCallbackEnabled นอกจากนี้ เรายังได้เปิดตัวฟังก์ชันส่วนขยายของ DelegatableNode dispatchOnScrollChanged ด้วย (I34b9d, b/238109286)
  • โปรเจ็กต์ที่เผยแพร่ด้วย Kotlin 2.0 ต้องใช้ KGP 2.0.0 ขึ้นไปจึงจะใช้งานได้ (Idb6b5)
  • เพิ่มการรองรับการตรวจสอบ Lint สำหรับ TextFieldState เพื่อให้แน่ใจว่าระบบจะจดจำไว้ภายในการเขียน ลองใช้ rememberTextFieldState แทน (I53d74)
  • เพิ่มการรองรับการตรวจสอบ Lint สำหรับ FocusRequester เพื่อให้แน่ใจว่าระบบจะจดจำไว้ในการเขียน (I6bf91)
  • เพิ่มการรองรับการตรวจสอบ Lint สำหรับ BringIntoViewRequester เพื่อให้แน่ใจว่าระบบจะจดจำไว้ภายในการเขียน (Ibfba6)
  • เปิดตัวขอบเขตสำหรับschedulePrefetchการเรียกในกลยุทธ์ตารางกริดและรายการเพื่อให้สอดคล้องกับLazyListPrefetchStateความสามารถในการให้ข้อมูลขนาดและดัชนี (Iad80c)
  • การเปลี่ยนแปลงที่ทำให้เกิดข้อขัดข้อง: โอเวอร์โหลด clickable, combinedClickable, selectable, toggleable และ triStateToggleable ที่ไม่มีพารามิเตอร์ Indication จะรองรับเฉพาะอินสแตนซ์ IndicationNodeFactory ที่ระบุโดยใช้ LocalIndication เท่านั้น การเปลี่ยนแปลงนี้จะมีผลเมื่อคุณคอมไพล์การใช้งานตัวแก้ไขเหล่านี้อีกครั้งโดยใช้ Compose เวอร์ชันนี้ การขึ้นต่อกันแบบไบนารี / การขึ้นต่อกันแบบทรานซิทีฟจะไม่ได้รับผลกระทบ หากคุณใช้การติดตั้งใช้งานการระบุที่เลิกใช้งานแล้วกับ LocalIndication และใช้ API เหล่านี้ จะทำให้เกิดข้อขัดข้องขณะรันไทม์ การเปลี่ยนแปลงลักษณะการทำงานนี้จำเป็นต่อการปรับปรุงประสิทธิภาพ และช่วยให้ฟังก์ชันที่ประกอบได้ซึ่งใช้ตัวแก้ไขเหล่านี้ข้ามระหว่างการประกอบใหม่ได้ คุณใช้ ComposeFoundationFlags.isNonComposedClickableEnabled=false เพื่อเลือกไม่ใช้การเปลี่ยนแปลงลักษณะการทำงานนี้ชั่วคราวได้ เพื่อเปิดใช้การอัปเกรด Compose โดยไม่ถูกบล็อกในการย้ายข้อมูลนี้ เราจะนำฟีเจอร์นี้ออกหลังจากเปิดตัวเวอร์ชันเสถียร 1 เวอร์ชัน หากต้องการแก้ไข ให้ย้ายข้อมูลการติดตั้งใช้งานการระบุที่เลิกใช้งานแล้วเพื่อใช้ IndicationNodeFactory แทน นอกจากนี้ คุณยังใช้การโอเวอร์โหลดกับพารามิเตอร์ Indication ที่ชัดเจนได้ด้วย ซึ่งการโอเวอร์โหลดเหล่านี้จะยังคงรองรับอินสแตนซ์ Indication ที่ไม่ใช่ IndicationNodeFactory ต่อไป แม้ว่าเราจะไม่แนะนำให้ทำเนื่องด้วยเหตุผลด้านประสิทธิภาพ (I6bcdc, b/316914333)
  • เพิ่มฟีเจอร์ควบคุมลักษณะการทำงานของการดึงข้อมูลล่วงหน้าแบบซ้อนอัตโนมัติ: isAutomaticNestedPrefetchEnabled (I8d448)
  • แนะนำโอเวอร์โหลดสำหรับ LazyGridState และ rememberLazyGridState ที่ใช้ LazyLayoutCacheWindow (I51151)
  • เพิ่มไม้บรรทัดสำหรับระยะขอบหน้าต่าง เพิ่ม DerivedRuler เพื่ออนุญาตให้คำนวณไม้บรรทัดจากไม้บรรทัดอื่น แก้ไข PlacmentScope เพื่อใช้ความหนาแน่น (I658bc, b/359260964)
  • เพิ่มฟังก์ชันโรงงาน WindowInsets() ที่ไม่มีอาร์กิวเมนต์เพื่อสร้าง WindowInsets ที่ว่างเปล่าได้อย่างง่ายดาย (I65f62, b/395311689)
  • เพิ่ม PaddingValues.Zero สำหรับ PaddingValues ที่ว่างเปล่า (If193e, b/386255688)

การแก้ไขข้อบกพร่อง

  • stateการโอเวอร์โหลดของ BasicTextField จะทำให้เคอร์เซอร์เลื่อนเข้าสู่มุมมองเมื่อขนาดของเคอร์เซอร์เปลี่ยนแปลง (I0eb41, b/406187741)
  • อัปเดต API ของ onVisibleItemsUpdated ใน LazyListPrefetchStrategy และ LazyGridPrefetchStrategy เพื่อแจ้งสถานะเริ่มต้น (If2cfa)

เวอร์ชัน 1.8

เวอร์ชัน 1.8.3

18 มิถุนายน 2025

androidx.compose.foundation:foundation-*:1.8.3 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.3 มีการเปลี่ยนแปลงเหล่านี้

เวอร์ชัน 1.8.2

20 พฤษภาคม 2025

androidx.compose.foundation:foundation-*:1.8.2 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.2 มีการเปลี่ยนแปลงเหล่านี้

การแก้ไขข้อบกพร่อง

  • แก้ไขไม่ให้การคำนวณจำนวนรายการที่จะโหลดสำหรับการค้นหาที่เน้นทำให้เกิดการหารด้วย 0 ใช้การตรวจสอบกับเลย์เอาต์ทั้งหมดที่ใช้ LazyLayoutBeyondBoundsState (8e6dc8)

เวอร์ชัน 1.8.1

7 พฤษภาคม 2025

androidx.compose.foundation:foundation-*:1.8.1 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.1 มีการเปลี่ยนแปลงเหล่านี้

การแก้ไขข้อบกพร่อง

  • แก้ไขข้อบกพร่องใน BasicText และ TextAutoSize ที่การใช้ TextOverflow.Ellipsize จะทำให้ข้อความมีขนาดเล็กกว่าที่ควร (I1e1d8, b/396582066)
  • แก้ไขข้อบกพร่องใน BasicTextField ที่ทำให้เกิดข้อขัดข้องอื่นๆ เมื่อ TextFieldDecorator ข้ามการเรียก innerTextField (I2638c), b/308398612
  • แก้ไขข้อบกพร่องใน TextField ที่ทำให้แถบเครื่องมือข้อความและแฮนเดิลการเลือกหายไปโดยสมบูรณ์เมื่อเปลี่ยนอินสแตนซ์ TextFieldState (I8068a), b/390477786
  • แก้ไขข้อบกพร่องใน BasicText ซึ่งการเปลี่ยนข้อจำกัดความกว้างขั้นต่ำไม่ได้อัปเดตตำแหน่งของข้อความเมื่อตั้งค่า textAlign เป็นค่าที่ไม่ใช่ค่าเริ่มต้น (I77a96), b/406305552

เวอร์ชัน 1.8.0

23 เมษายน 2025

androidx.compose.foundation:foundation-*:1.8.0 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0 มีการเปลี่ยนแปลงเหล่านี้

เวอร์ชัน 1.8.0-rc03

9 เมษายน 2025

androidx.compose.foundation:foundation-*:1.8.0-rc03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-rc03 มีการเปลี่ยนแปลงเหล่านี้

เวอร์ชัน 1.8.0-rc02

26 มีนาคม 2025

androidx.compose.foundation:foundation-*:1.8.0-rc02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-rc02 มีการเปลี่ยนแปลงเหล่านี้

เวอร์ชัน 1.8.0-rc01

12 มีนาคม 2025

androidx.compose.foundation:foundation-*:1.8.0-rc01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-rc01 มีการคอมมิตเหล่านี้

เวอร์ชัน 1.8.0-beta03

26 กุมภาพันธ์ 2025

androidx.compose.foundation:foundation-*:1.8.0-beta03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-beta03 มีการเปลี่ยนแปลงเหล่านี้

การแก้ไขข้อบกพร่อง

  • เพิ่มพร็อพเพอร์ตี้ความหมายใหม่ InputText ที่บันทึกค่าของช่องข้อความก่อนที่จะใช้การแปลงเอาต์พุต (Iae46a, b/395911609, b/176949051)
  • นำการโอเวอร์โหลด AutoSize ที่เลิกใช้งานแล้วออก โปรดใช้ TextAutoSize API ที่มีฟังก์ชันเดียวกัน (I2c90f)
  • แก้ไขปัญหาการแคชด้วย TextAutoSize ซึ่งการส่งเลย์เอาต์ครั้งที่ 2 ที่มีข้อจำกัดเดียวกันอาจทำให้ใช้ขนาดแบบอักษรที่ใหญ่เป็นอันดับ 2 แทนที่จะเป็นขนาดที่ใหญ่ที่สุด (Id367f)

เวอร์ชัน 1.8.0-beta02

12 กุมภาพันธ์ 2025

androidx.compose.foundation:foundation-*:1.8.0-beta02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-beta02 มีการเปลี่ยนแปลงเหล่านี้

การแก้ไขข้อบกพร่อง

  • แก้ไขปัญหาที่การใช้งานการเลื่อนเกินโดยใช้ LayoutModifierNode จะทํางานไม่ถูกต้องภายในคอนเทนเนอร์ที่เลื่อนได้

เวอร์ชัน 1.8.0-เบต้า01

29 มกราคม 2025

androidx.compose.foundation:foundation-*:1.8.0-beta01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-beta01 มีการเปลี่ยนแปลงเหล่านี้

การเปลี่ยนแปลง API

  • นำ SemanticsNodeInteraction.semanticsId() ออกแล้ว โปรดใช้ SemanticsNodeInteraction.fetchSemanticsNode().id แทน (Ie397a)
  • เขียน requestAutofill API ใหม่ให้อยู่นอกเครื่องมือจัดการการป้อนข้อความอัตโนมัติ (Id1929)
  • ContextualFlowRow และ ContextualFlowColumn ได้รับการทำเครื่องหมายว่าเลิกใช้งานแล้ว คอมโพเนนต์เวอร์ชันทดลองนี้เปิดตัวในเวอร์ชัน 1.7 และยังไม่เสถียร รวมถึงการใช้งานยังไม่เป็นที่น่าพอใจ ในอนาคต เราอาจมีคอมโพเนนต์ที่แก้กรณีการใช้งานที่คอมโพเนนต์นี้มีไว้เพื่อแก้ปัญหา
    • FlowRow และ FlowColumn มีการโอเวอร์โหลดทดลองที่เปิดตัวในเวอร์ชัน 1.7 ซึ่งมีพารามิเตอร์ overflow เราเลิกใช้งานพารามิเตอร์นี้แล้ว และคุณสามารถใช้การโอเวอร์โหลดที่ไม่มีพารามิเตอร์นี้แทนได้ ลักษณะการทำงาน "overflow" เริ่มต้นสำหรับการโอเวอร์โหลดเหล่านี้จะเป็น "Clip" เช่นเดียวกับตั้งแต่เปิดตัว
    • กรณีการใช้งานจำนวนมากสำหรับ ContextualFlowRow สามารถทำได้โดยใช้ FlowRow แต่เราทราบดีว่าไม่ใช่ทุกกรณี ContextualFlowRow สามารถนำไปใช้ในพื้นที่ผู้ใช้ได้อย่างสมบูรณ์ และคุณสามารถพยายามคัดลอกการติดตั้งใช้งานและปรับเปลี่ยนได้หากต้องการ ในอนาคต เราหวังว่าจะแก้ปัญหา Use Case เหล่านี้ได้ด้วยวิธีอื่น (Ibafec)

การแก้ไขข้อบกพร่อง

  • แก้ไขเลย์เอาต์ข้อความที่มีจุดไข่ปลาซึ่งบางครั้งแปลไม่ถูกต้องระหว่างภาพเคลื่อนไหว ดูข้อมูลเพิ่มเติมได้ที่ b/389707025 (Ie55b1, b/389707025)
  • แก้ไขข้อบกพร่องใน BasicText ที่มีการตั้งค่า TextAutoSize และ maxLines เป็น 1 (Ic0450, b/376834366)
  • ตอนนี้ความสูงขั้นต่ำของข้อความจะพิจารณาพารามิเตอร์ minLines แล้ว ซึ่งหมายความว่าความสูงขั้นต่ำของเนื้อหาที่รายงานจะไม่น้อยกว่าความสูงที่จำเป็นเพื่อให้เป็นไปตามพารามิเตอร์ minLines (I225f9, b/388299762)

เวอร์ชัน 1.8.0-alpha08

15 มกราคม 2025

androidx.compose.foundation:foundation-*:1.8.0-alpha08 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-alpha08 มีการเปลี่ยนแปลงเหล่านี้

การเปลี่ยนแปลง API

  • AutoSize: เปลี่ยนชื่อ AutoSize เป็น TextAutoSize และเผยแพร่ API ที่ช่วยให้สร้างการติดตั้งใช้งาน TextAutoSize ที่กำหนดเองได้ ดูตัวอย่างการใช้งานการปรับขนาดข้อความอัตโนมัติที่กำหนดเองได้ที่ TextAutoSizeSample (I85756)
  • ย้ายฟีเจอร์แฟล็ก DetectTapGesturesEnableNewDispatchingBehavior ไปยัง ComposeFoundationFlags และเปลี่ยนชื่อเป็น isDetectTapGesturesImmediateCoroutineDispatchEnabled เราเลิกใช้งานฟีเจอร์การแจ้งว่าไม่เหมาะสมแบบเดิมแล้ว และจะเปลี่ยนไปใช้ComposeFoundationFlags.isDetectTapGesturesImmediateCoroutineDispatchEnabled แทน (I62932)

การแก้ไขข้อบกพร่อง

  • เปิดใช้ DetectTapGesturesEnableNewDispatchingBehavior โดยค่าเริ่มต้น ตอนนี้ API ของ TapGestureDetector ใช้ลักษณะการทำงานของการส่งแบบใหม่ (การส่งทันที) โดยค่าเริ่มต้น (I9f2bc, b/369648479)
  • แก้ไขตัวแก้ไข requiredWidth/Height/Size เพื่อจัดการขนาดโดยธรรมชาติอย่างถูกต้อง (Ie3d7d, b/368113212)

การมีส่วนร่วมภายนอก

  • BasicTooltip ที่ใช้กันทั่วไปใน Foundation และ BasicTooltip/Tooltip ใน Material3 (Ifc2e6)
  • เพิ่มอินเทอร์เฟซคลิปบอร์ดใหม่และองค์ประกอบภายในสำหรับอินเทอร์เฟซดังกล่าว (I80809)

เวอร์ชัน 1.8.0-alpha07

11 ธันวาคม 2024

androidx.compose.foundation:foundation-*:1.8.0-alpha07 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-alpha07 มีคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • ลบธง ComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabled ที่ช่วยย้อนการนำ graphicsLayer ภายในออกจาก BasicText หากคุณใช้ฟีเจอร์นี้ โปรดแจ้งเหตุผลให้เราทราบโดยการรายงานข้อบกพร่อง นอกจากนี้ คุณยังส่ง Modifier.graphicsLayer() ไปยังการเรียกใช้ BasicText เพื่อให้ได้ลักษณะการทำงานแบบเดิมได้ด้วย (Id9f90)
  • เพิ่มการติดตั้งใช้งานเริ่มต้นสำหรับ stickyHeader DSL ใหม่ (I68986)
  • มีLocalAutofillHighlightColorองค์ประกอบการใช้งานในพื้นที่เป็นประเภทสี (I0e05b)
  • เปลี่ยนชื่อ OverscrollEffect#withoutDrawing เป็น OverscrollEffect#withoutVisualEffect แล้ว (I1a154)

การแก้ไขข้อบกพร่อง

  • การแก้ไขเพิ่มเติมสำหรับปัญหาในการคำนวณเป้าหมายของ AnchoredDraggable ซึ่งอาจทำให้มีการตั้งค่าที่จุดยึดที่ไม่ถูกต้องสำหรับการปัดบางรายการ (I23b87, b/367660226)

การมีส่วนร่วมภายนอก

  • เพิ่ม BringIntoViewResponderModifierNode ลงใน UI ซึ่งเป็นวิธีใหม่ในการใช้ฟังก์ชันการนำเข้าสู่มุมมอง รวมถึงอนุญาตให้ใช้ในระดับแพลตฟอร์ม (Ia6dd8)
  • เรากำลังเปลี่ยนแปลงวิธีวาดเคอร์เซอร์เล็กน้อย คุณใช้ LocalCursorBlinkEnabled เพื่อปิดใช้การวาดเคอร์เซอร์ในการทดสอบได้ (I4c697)

เวอร์ชัน 1.8.0-alpha06

13 พฤศจิกายน 2024

androidx.compose.foundation:foundation-*:1.8.0-alpha06 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-alpha06 มีการเปลี่ยนแปลงเหล่านี้

การเปลี่ยนแปลง API

  • เพิ่มตัวปรับแต่ง stylusHoverIcon (Iff20a, b/331289114)
  • confirmValueChange ของ AnchoredDraggableState ที่เลิกใช้งานแล้ว แทนที่จะยับยั้งการเปลี่ยนแปลงสถานะ จุดยึดที่ไม่ได้รับอนุญาตไม่ควรอยู่ในชุดจุดยึดที่ใช้งานอยู่ และควรใช้ OverscrollEffect เพื่อระบุว่าการดำเนินการที่ขอไม่พร้อมใช้งาน (Ia717f)
  • เปลี่ยนตัวจัดการการป้อนข้อความอัตโนมัติให้เป็นอินเทอร์เฟซ (I84914, b/376080755)
  • เพิ่ม API OverscrollEffect#withoutDrawing และ OverscrollEffect#withoutEventHandling - API เหล่านี้สร้างอินสแตนซ์ที่ห่อหุ้มของเอฟเฟกต์การเลื่อนเกินที่ระบุซึ่งไม่ได้วาด / จัดการเหตุการณ์ตามลำดับ ซึ่งช่วยให้แสดงผลการเลื่อนเกินในคอมโพเนนต์แยกต่างหากจากคอมโพเนนต์ที่ส่งเหตุการณ์ได้ เช่น ปิดใช้การวาดการเลื่อนเกินในรายการแบบเลื่อนขี้เกียจ แล้ววาดการเลื่อนเกินแยกกันที่ด้านบน / ที่อื่น (Idbb3d, b/266550551, b/204650733, b/255554340, b/229537244)
  • เพิ่มการรองรับการป้อนข้อความอัตโนมัติในแถบเครื่องมือข้อความ (Ie6a4c)
  • เลิกใช้งาน OverscrollConfiguration และ LocalOverscrollConfiguration และเพิ่ม rememberPlatformOverscrollFactory เพื่อสร้างอินสแตนซ์ของ / ปรับแต่งพารามิเตอร์ของการใช้งานการเลื่อนเกินเริ่มต้น หากต้องการปิดใช้การเลื่อนเกิน ให้ใช้ LocalOverscrollFactory provides null แทน LocalOverscrollConfiguration provides null หากต้องการเปลี่ยนสีเรืองแสง / ระยะขอบ ให้ใช้ LocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding) แทน LocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding) (Ie71f9, b/255554340, b/234451516)
  • เปลี่ยนพร็อพเพอร์ตี้ effectModifier ใน OverscrollEffect เป็น node: DelegatableNode เพื่อให้สอดคล้องกับ API อื่นๆ (Ic0b46, b/255554340)
  • นำ GlobalAssertions API เวอร์ชันทดลองออกแล้ว โดยมีวัตถุประสงค์เพื่อใช้ในการเรียกใช้การตรวจสอบการช่วยเหลือพิเศษ โปรดดู enableAccessibilityChecks() เพื่อวัตถุประสงค์ดังกล่าวแทน (I59322)

เวอร์ชัน 1.8.0-alpha05

30 ตุลาคม 2024

androidx.compose.foundation:foundation-*:1.8.0-alpha05 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-alpha05 มีการเปลี่ยนแปลงเหล่านี้

ฟีเจอร์ใหม่

  • รองรับการปรับขนาดข้อความอัตโนมัติ ส่งอินสแตนซ์ AutoSize (เช่น AutoSize.StepBased) ไปยัง Composable ของข้อความที่คุณชื่นชอบ (เช่น BasicText) แล้วดูว่าขนาดข้อความจะปรับให้เข้ากับพื้นที่ว่างที่มีได้อย่างไร (Ice7e0, b/139320827)
  • เพิ่ม API OverscrollFactory และ LocalOverscrollFactory เพื่ออนุญาตให้กำหนดค่าการเลื่อนเลยขอบเขตภายในลำดับชั้น ระบบจะใช้ค่าที่ระบุผ่าน LocalOverscrollFactory เป็นค่าเริ่มต้นเพื่อสร้าง OverscrollEffect หากต้องการสร้างและจดจำเอฟเฟกต์จากค่าเริ่มต้นที่ระบุในปัจจุบัน ให้ใช้ rememberOverscrollEffect() (I51ca4, b/255554340)

การเปลี่ยนแปลง API

  • เปิดตัว CompositionLocal ที่ใช้เพื่อแก้ไขเฉดสีของไฮไลต์การป้อนข้อความอัตโนมัติที่สำเร็จ (I32092)
  • นำ ScrollableDefaults.overscrollEffect ออกแล้ว คุณควรใช้ rememberOverscrollEffect แทน ซึ่งจะสร้างอินสแตนซ์ของการใช้งานการเลื่อนเลยขอบเขตปัจจุบันที่มาพร้อมกับ LocalOverscrollFactory (I1651a, b/255554340),(b/234451516)
  • ขอแนะนำAutofillManagerอินเทอร์เฟซใหม่ที่ใช้ปรับแต่งเส้นทางการป้อนข้อความอัตโนมัติของผู้ใช้ได้ และisSemanticAutofillEnabledฟีเจอร์ที่ใช้เปิดใช้ฟีเจอร์ป้อนข้อความอัตโนมัติเวอร์ชันใหม่นี้ (I9d484)
  • นำ CombinedClickableNode ออก เราได้เปิดเผย API ที่อยู่ในขั้นทดลองนี้ชั่วคราวเพื่อปลดบล็อกงานด้านประสิทธิภาพ แต่ตอนนี้ไม่จำเป็นต้องใช้แล้ว แต่คุณควรใช้ Modifier.combinedClickable โดยตรงเหมือนกับ API ตัวแก้ไขอื่นๆ (I4b658)
  • เพิ่มการโอเวอร์โหลดให้กับ horizontalScroll, verticalScroll, LazyColumn, LazyRow, LazyHorizontalGrid, LazyVerticalGrid, LazyHorizontalStaggeredGrid, LazyVerticalStaggeredGrid, HorizontalPager และ VerticalPager พร้อมรองรับการระบุ OverscrollEffect ที่กำหนดเอง OverscrollEffect ที่ระบุจะได้รับเหตุการณ์และแสดงผลภายในขอบเขตของคอมโพเนนต์เหล่านี้ โปรดทราบว่าระบบไม่รองรับการวาด OverscrollEffect เดียวกัน 2 ครั้ง คุณจึงวาด OverscrollEffect เดียวกันที่ระบุไว้ในคอมโพเนนต์ใดคอมโพเนนต์หนึ่งเหล่านี้แยกกันด้วย Modifier.overscroll ไม่ได้ กรณีการใช้งานการวาดการเลื่อนเกินขอบเขตของคอมโพเนนต์เหล่านี้จะได้รับการแก้ไขแยกต่างหากในอนาคต (I2dc42, b/266550551, b/234274772, b/224572538, b/353805117)

เวอร์ชัน 1.8.0-alpha04

16 ตุลาคม 2024

androidx.compose.foundation:foundation-*:1.8.0-alpha04 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-alpha04 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • เพิ่มการเรียกกลับ DelegatableNode#onDensityChange และ DelegatableNode#onLayoutDirectionChange เพื่ออนุญาตให้อัปเดตสถานะโหนดเมื่อมีการเปลี่ยนแปลง (I04f3e, b/340662451)
  • ตอนนี้พารากราฟและ ParagraphIntrinsics จะใช้รายการคำอธิบายประกอบทั้งหมดที่ใช้กับ AnnotatedString ได้แล้ว ก่อนหน้านี้ใช้ได้เฉพาะรายการ SpanStyles เท่านั้น (I12f80)
  • เปิดตัว PointerInputModifierNode#touchBoundsExpansion ซึ่งใช้เพื่อขยายขอบเขตการแตะของตัวแก้ไขอินพุตตัวชี้เดียวได้ (Iccf02, b/335339283)

การแก้ไขข้อบกพร่อง

  • แก้ไขข้อบกพร่องที่ระบบไม่พิจารณาเกณฑ์ตำแหน่งที่ส่งไปยัง AnchoredDraggableDefaults.flingBehavior อย่างถูกต้องในบางสถานการณ์ (Ifdf0d, b/367660226)
  • เปิดตัวการแก้ไขสำหรับรายการที่เลื่อนได้แบบซ้อนกันซึ่งถูกนำออกจากแผนผังโหนดระหว่างการปัดที่กำลังดำเนินอยู่ ตอนนี้โหนดเหล่านี้จะยกเลิกการปัดและส่งเหตุการณ์ onPostFling อย่างถูกต้องด้วยความเร็วที่เหลือ นอกจากนี้ เรายังจะเปิดตัวฟีเจอร์ NewNestedScrollFlingDispatchingEnabled เพื่อควบคุมลักษณะการทำงานในกรณีที่เกิดการถดถอย เราจะนำฟีเจอร์นี้ออกก่อนเปิดตัวเวอร์ชันเบต้า (I05c37, b/371168883)
  • แก้ไขข้อบกพร่องในเรื่องที่ OverscrollEffects ที่ส่งไปยัง Modifier.anchoredDraggable จะได้รับเดลต้า 2 มิติแทนที่จะเป็น 1 มิติ (Ie52c0)

เวอร์ชัน 1.8.0-alpha03

2 ตุลาคม 2024

androidx.compose.foundation:foundation-*:1.8.0-alpha03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-alpha03 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • อัปเดต Kotlin เป็นเวอร์ชัน 1.9 (I1a14c)
  • เปิดตัวฟีเจอร์ DraggableAddDownEventFixEnabled (I848d5)
  • เปิดตัวบทบาทเชิงความหมายใหม่ที่เรียกว่า Carousel เพื่อจำลองลักษณะการทำงานของรายการใน Pager สำหรับบริการ a11y (Id354b, b/354109776, b/239672673)
  • นำตัวแก้ไข graphicsLayer โดยนัยออกจาก Composable BasicText เพิ่มComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabledแฟล็กทดลองเพื่อให้เปลี่ยนกลับไปใช้ลักษณะการทำงานแบบเดิมได้ (Ie478d)
  • เพิ่ม Modifier.recalculateWindowInsets() เพื่ออนุญาตให้เด็กในลำดับชั้นใช้ insetsPadding ได้แม้ว่าผู้ปกครองจะเชื่อมโยงเด็กโดยไม่มี consumeWindowInsets() ก็ตาม (I7f9e4)

การแก้ไขข้อบกพร่อง

  • ใช้การเลือกท่าทางสัมผัสใน detectDragGestures, draggables และ scrollables ตอนนี้หากองค์ประกอบที่ลากได้ของบุตรหลานยกเลิกท่าทางสัมผัส ผู้ปกครองจะมีโอกาสรับองค์ประกอบดังกล่าว ซึ่งช่วยให้การจัดการท่าทางสัมผัสต่อเนื่องและผสานรวมมากขึ้น (Ic88fe)
  • อัปเดตลักษณะการทำงานของการยกเลิกการปัดในรายการที่เลื่อนได้ ตอนนี้หากการปัดที่เลื่อนได้ไปถึงขอบเขต ระบบจะส่งต่อความเร็วของการปัดไปยังรายการที่เลื่อนได้ถัดไปในเชนอย่างถูกต้องแทนที่จะขับเคลื่อนการปัดต่อไป (I9326a)

เวอร์ชัน 1.8.0-alpha02

18 กันยายน 2024

androidx.compose.foundation:foundation-*:1.8.0-alpha02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-alpha02 มีการเปลี่ยนแปลงเหล่านี้

การเปลี่ยนแปลง API

  • TextOverflow.StartEllipsis และ TextOverflow.MiddleEllipsis พร้อมใช้งานแล้ว ซึ่งช่วยให้วางจุดไข่ปลาที่จุดเริ่มต้นหรือตรงกลางของบรรทัดข้อความบรรทัดเดียวได้ (I38913, b/185418980)

เวอร์ชัน 1.8.0-alpha01

4 กันยายน 2024

androidx.compose.foundation:foundation-*:1.8.0-alpha01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-alpha01 มีการเปลี่ยนแปลงเหล่านี้

เวอร์ชัน 1.7

เวอร์ชัน 1.7.8

12 กุมภาพันธ์ 2025

androidx.compose.foundation:foundation-*:1.7.8 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.8 มีการเปลี่ยนแปลงเหล่านี้

การแก้ไขข้อบกพร่อง

  • แก้ไขข้อขัดข้องใน BasicTextField ที่มีการเปลี่ยนรูปแบบอินพุตเมื่อแทนที่ข้อความที่วางบางส่วน (I73702)

เวอร์ชัน 1.7.7

29 มกราคม 2025

androidx.compose.foundation:foundation-*:1.7.7 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.7 มีการเปลี่ยนแปลงเหล่านี้

การแก้ไขข้อบกพร่อง

  • แก้ไขข้อขัดข้อง IndexOutOfBound ด้วยคำอธิบายประกอบลิงก์ (Ic96d2)
  • แก้ไขการจัดองค์ประกอบใหม่แบบไม่สิ้นสุดในกรณีที่พบได้ยากบางกรณีที่มีลิงก์ (I04a03)

ข้อบกพร่องที่ทราบ

  • เราพบข้อบกพร่องที่อาจทำให้ข้อความขึ้นบรรทัดใหม่โดยไม่คาดคิดในสถานการณ์ที่พบได้ยากใน Android API ระดับ 35 เราไม่สามารถแก้ไขในเวอร์ชัน 1.7 ได้ จึงจะแก้ไขในเวอร์ชัน 1.8 (b/391378120)

เวอร์ชัน 1.7.6

11 ธันวาคม 2024

androidx.compose.foundation:foundation-*:1.7.6 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.6 มีการเปลี่ยนแปลงเหล่านี้

การแก้ไขข้อบกพร่อง

  • แก้ไขปัญหาเนื้อหาข้อความในบรรทัดที่บริการการช่วยเหลือพิเศษมองไม่เห็น
  • แก้ไขปัญหาที่ AndroidEmbeddedExternalSurface จะรีเซ็ตไม่ถูกต้องและค้างเมื่อนำไปใช้ซ้ำในรายการแบบเลื่อน

เวอร์ชัน 1.7.5

30 ตุลาคม 2024

androidx.compose.foundation:foundation-*:1.7.5 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.5 มีการเปลี่ยนแปลงเหล่านี้

การแก้ไขข้อบกพร่อง

  • ตรวจสอบว่าไม่มีการคอมโพสย่อยรายการที่ปักหมุด 2 ครั้งในพื้นที่การเว้นวรรคเนื้อหา (Ic6224)

เวอร์ชัน 1.7.4

16 ตุลาคม 2024

androidx.compose.foundation:foundation-*:1.7.4 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.4 มีการเปลี่ยนแปลงเหล่านี้

การแก้ไขข้อบกพร่อง

  • แก้ไขข้อบกพร่องที่ทำให้เกิดข้อขัดข้องในช่องข้อความ (I475c6, b/313010266)
  • นำ ReusableContentHost ที่รูทของรายการเลย์เอาต์แบบ Lazy ออกแล้ว ซึ่งอาจเป็นสาเหตุต้นตอที่ทำให้เกิดข้อขัดข้อง "มีการเรียกใช้การวัดในโหนดที่ปิดใช้งาน" (Id6e60)

เวอร์ชัน 1.7.3

2 ตุลาคม 2024

androidx.compose.foundation:foundation-*:1.7.3 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.3 มีการเปลี่ยนแปลงเหล่านี้

การแก้ไขข้อบกพร่อง

  • แก้ไขปัญหาหน่วยความจำรั่วใน BasicText เมื่อตั้งค่า minLines เป็นค่าที่ไม่ใช่ค่าเริ่มต้น

เวอร์ชัน 1.7.2

18 กันยายน 2024

androidx.compose.foundation:foundation-*:1.7.2 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.2 มีการเปลี่ยนแปลงเหล่านี้

การแก้ไขข้อบกพร่อง

  • แก้ไขปัญหาเกี่ยวกับองค์ประกอบที่ลากได้ซึ่งไม่มีเหตุการณ์ "ลง" ซึ่งทำให้การปัดดูช้ากว่าปกติ

เวอร์ชัน 1.7.1

10 กันยายน 2024

  • ไม่มีการเปลี่ยนแปลงอาร์ติแฟกต์ Android ระบบได้นำอาร์ติแฟกต์ -desktop รายการออกแล้ว และเพิ่มอาร์ติแฟกต์ -jvmStubs และ -linuxx64Stubs รายการ เป้าหมายเหล่านี้ไม่มีไว้ให้ใช้งาน แต่เป็นตัวยึดตำแหน่งเพื่อช่วยให้ Jetbrains Compose ทำงานได้

เวอร์ชัน 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 ต่อไปนี้เพิ่มเติมจากการเปลี่ยนแปลงภายในเพื่อเป็นส่วนหนึ่งของความพยายามนี้
    • เพิ่ม Indication API ใหม่ IndicationNodeFactory ซึ่งจะช่วยให้การติดตั้งใช้งานข้อบ่งชี้มีประสิทธิภาพมากขึ้นเมื่อเทียบกับ rememberUpdatedInstance API ก่อนหน้า (ซึ่งตอนนี้เลิกใช้งานแล้ว) ดูข้อมูลการย้ายข้อมูลได้ที่ developer.android.com
    • ตอนนี้ clickable / combinedClickable / selectable / toggleable ยอมรับพารามิเตอร์ MutableInteractionSource ที่เป็น Null ได้แล้ว หากเป็น Null และ Indication ที่ระบุเป็น IndicationNodeFactory ระบบจะสร้าง Indication แบบเลื่อนเวลาได้เฉพาะเมื่อจำเป็นเท่านั้น ซึ่งจะช่วยปรับปรุงประสิทธิภาพ หากคุณไม่ได้โฮสต์และใช้ 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)
  • NestedScrollแหล่งที่มาของ Drag และ Fling จะถูกแทนที่ด้วย UserInput และ SideEffect เพื่อรองรับคำจำกัดความที่ขยายออกไปของแหล่งที่มาเหล่านี้ ซึ่งตอนนี้รวมถึงภาพเคลื่อนไหว (Side Effect) และล้อเมาส์และคีย์บอร์ด (UserInput)
  • LazyLayout ตอนนี้คุณสามารถทำเครื่องหมายคำขอ Prefetch เป็นด่วนได้แล้ว ซึ่งหมายความว่าเราคาดว่ารายการนี้จะต้องใช้ในเฟรมถัดไป และต้องการไม่สนใจงบประมาณเฟรมเพื่อให้แน่ใจว่าได้ทำงานล่วงหน้ามากขึ้น (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 และ Pager

เวอร์ชัน 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 ที่ซ้อนกัน การติดตั้งใช้งานเริ่มต้นจะดึงข้อมูลล่วงหน้าสำหรับรายการที่ซ้อนกัน 2 รายการแรกของแต่ละตารางกริด แต่สามารถกำหนดค่าได้โดยใช้ API LazyGridPrefetchStrategy(nestedPrefetchItemCount) และ LazyListPrefetchStrategy#onNestedPrefetch ใหม่ ซึ่งคล้ายกับ LazyListPrefetchStrategy (I591c4)
  • เปลี่ยนชื่อ SemanticsProperties.Editable เป็น IsEditable และเปลี่ยน SemanticsPropertyReceiver.editable เป็นค่า isEditable ตอนนี้พร็อพเพอร์ตี้เป็นบูลีนและระบุโดยช่องข้อความเสมอ (I8acd8)
  • ย้ายค่าเริ่มต้นของ basicMarquee ไปยังออบเจ็กต์ MarqueeDefaults (I12ff6)
  • เปลี่ยนชื่อพารามิเตอร์ basicMarquee delayMillis เป็น repeatDelayMillis (I12ff6)
  • อัปเดต API สำหรับการจัดรูปแบบลิงก์: ย้าย TextLinkStyles ไปยัง TextStyle และนำ TextDefaults ออกจาก Material (I5477b)

การแก้ไขข้อบกพร่อง

  • เปลี่ยนชื่อ LayoutCoordinates.introducesFrameOfReference เป็น LayoutCoordinates.introducesMotionFrameOfReference เพื่อให้สะท้อนวัตถุประสงค์ได้ดียิ่งขึ้น เปลี่ยนชื่อฟังก์ชันที่เกี่ยวข้องเพื่อคำนวณพิกัดตามธงนั้น (I3a330)
  • นำ "ค่าเริ่มต้น" ออกจากพร็อพเพอร์ตี้ MarqueeDefaults (I1d8a0)
  • นำ "Marquee" ออกจากพร็อพเพอร์ตี้ MarqueeDefaults (Iad4f4)
  • นำ TextLinkStyles ออกจากชั้นเรียน TextStyle แต่ TextLinkStyles เป็นส่วนหนึ่งของตัวสร้าง LinkAnntation และเมธอด AnnotatedString.fromHtml (I90b2b)
  • แก้ไขข้อบกพร่องที่ทำให้ Pager สแนปเมื่อปัดไปที่ขอบเขตขณะที่อยู่ที่ขอบเขตอยู่แล้ว (I9f373, b/339171222)
  • ตอนนี้ BTF2 มีท่าทางสัมผัสการเลือกด้วยเมาส์ที่ถูกต้องแล้ว (Ibe8c6)

การมีส่วนร่วมภายนอก

  • ส่ง "Make compose/measure time calculation content-type based in prefetch to improve accuracy" (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คลาสที่อนุญาตให้จัดรูปแบบลิงก์เป็นพารามิเตอร์ไปยัง Composable ของข้อความแทน (I31b93)
  • แทนที่ onDragStarted และ onDragStopped ด้วยการเรียกกลับที่ไม่ระงับ (I59de8)

การแก้ไขข้อบกพร่อง

  • แก้ไขข้อบกพร่องที่ทำให้ Pager ขัดข้องเมื่อ contentPadding มีขนาดใหญ่กว่าข้อจำกัดขาเข้า ตอนนี้ Pager จะบังคับให้ค่าลบที่แสดงผลจาก 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 ตอนนี้คุณสามารถทำเครื่องหมายคำขอ Prefetch เป็นด่วนได้แล้ว ซึ่งหมายความว่าเราคาดว่ารายการนี้จะต้องใช้ในเฟรมถัดไป และต้องการไม่สนใจงบประมาณเฟรมเพื่อให้แน่ใจว่าได้ทำงานล่วงหน้ามากขึ้น (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)
  • แก้ไขปัญหาที่รหัสไปรษณีย์ AnchoredDraggableState ของ currentValue จะเปลี่ยนเมื่อเข้าใกล้ขอบเขตของรัฐ (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 (เช่น Scroll ซึ่งมีการใช้งานโดยค่าเริ่มต้น) ซึ่งจะช่วยให้ภาพเคลื่อนไหวที่อิงตาม approachLayout ใช้งานง่ายขึ้น เนื่องจากตอนนี้มีโอกาสที่จะแยกความแตกต่างระหว่างสิ่งที่ต้องชดเชยเพื่อสร้างภาพเคลื่อนไหวกับสิ่งที่ต้องใช้โดยตรงเมื่อตัดสินใจที่จะสร้างภาพเคลื่อนไหวในแนวทางของตน (I60ec7)
  • เปิดตัว requestScrollToItem สำหรับ LazyStaggeredGrid ตอนนี้ไคลเอ็นต์สามารถเลือกไม่ใช้การรักษาดัชนีตามคีย์ได้โดยการเรียก requestScrollToItem สำหรับการวัดผลแต่ละครั้ง ซึ่งจะไม่เปลี่ยนแปลงลักษณะการทำงานที่มีอยู่แต่อย่างใด เว้นแต่จะมีการเรียกใช้ requestScrollToItem (I63983)
  • แนะนำ requestScrollToPage ในเพจ ตอนนี้ไคลเอ็นต์สามารถเลือกไม่ใช้การรักษาดัชนีตามคีย์ได้โดยการเรียก requestScrollToPage สำหรับการวัดผลแต่ละครั้ง ซึ่งจะไม่เปลี่ยนแปลงลักษณะการทำงานที่มีอยู่แต่อย่างใด เว้นแต่จะมีการเรียกใช้ requestScrollToPage (Ic4213)
  • เปิดตัว requestScrollToItem สำหรับ LazyGrids ตอนนี้ไคลเอ็นต์สามารถเลือกไม่ใช้การรักษาดัชนีตามคีย์ได้โดยการเรียก requestScrollToItem สำหรับการวัดผลแต่ละครั้ง ซึ่งจะไม่เปลี่ยนแปลงลักษณะการทำงานที่มีอยู่แต่อย่างใด เว้นแต่จะมีการเรียกใช้ requestScrollToItem (I0a7a0)
  • ClickableText มีการทำเครื่องหมายว่าเลิกใช้งานแล้ว หากต้องการเพิ่มลิงก์ไปยังข้อความ ให้สร้าง AnnotatedString ที่มี LinkAnnotation ที่สอดคล้องกับลิงก์ แล้วส่ง AnnotatedString นี้ไปยัง Composable Text (I34d4b, b/323346994)
  • UrlAnnotation เลิกใช้งานแล้ว โปรดใช้ LinkAnnotation.Url แทน หากใช้การจัดธีม Material ให้ใช้วัตถุ TextDefaults เพื่อสร้างคำอธิบายประกอบที่มีการจัดธีม Material (I8d180, b/323346545)
  • เปลี่ยนชื่อเป็น AnnotatedString.Companion.fromHtml (I43dcd)String.parseAsHtml
  • เพิ่มอาร์กิวเมนต์การจัดรูปแบบ (linkStyle, focusedLinkStyle, hoveredLinkStyle) และเครื่องมือตรวจหาการโต้ตอบลิงก์ไปยังเมธอด parseAsHtml เมื่อแยกวิเคราะห์สตริงที่ติดแท็ก HTML ด้วยแท็ก <a> เมธอดจะสร้าง LinkAnnotation.Url สำหรับแท็กดังกล่าวแต่ละแท็ก และส่งออบเจ็กต์การจัดรูปแบบและเครื่องมือฟังการโต้ตอบลิงก์ไปยังคำอธิบายประกอบแต่ละรายการ (I7c977)
  • ตอนนี้ LinkAnnotation จะรับอาร์กิวเมนต์การจัดรูปแบบตามสถานะและ LinkInteractionListener เพิ่มคำอธิบายประกอบนี้ลงใน AnnotatedString เพื่อรับไฮเปอร์ลิงก์ การส่ง focusedState และ/หรือ hoveredState จะช่วยให้คุณกำหนดค่าภาพสำหรับลิงก์เมื่อมีการโฟกัสและ/หรือวางเมาส์เหนือลิงก์ได้ (I81ce4, b/139312671)
  • เราได้นำฟีเจอร์แฟล็กสำหรับภาพหน้าจอยาวออกแล้ว (I28648, b/329128246)
  • LazyColumn จะแสดงผลส่วนหัวที่ไม่เคลื่อนที่อย่างถูกต้องในภาพหน้าจอแบบยาว (I8d239, b/329296635)
  • ปรับ API ที่เหลือซึ่งยังอยู่ในระยะทดลองส่วนใหญ่ให้เสถียร ซึ่ง API เหล่านี้เปิดตัวพร้อมกับ BasicTextField เวอร์ชันใหม่ (I714e2)
  • เพิ่มพารามิเตอร์ textObfuscationCharacter ลงใน BasicSecureTextField ซึ่งควบคุมอักขระที่จะใช้ขณะที่ทำให้เนื้อหาอ่านไม่ออก (I0588b)
  • NestedScroll แหล่งที่มา Drag และ Fling จะถูกแทนที่ด้วย UserInput และ SideEffect เพื่อรองรับคำจำกัดความที่ขยายออกไปของแหล่งที่มาเหล่านี้ ซึ่งตอนนี้รวมถึงภาพเคลื่อนไหว (Side Effect) และล้อเมาส์และคีย์บอร์ด (UserInput) (I40579)
  • ขอแนะนำ LocalBringIntoViewSpec ซึ่งเป็นลักษณะการเลื่อนโฟกัสที่ขึ้นอยู่กับแพลตฟอร์มซึ่งใช้ที่เลเยอร์ตัวแก้ไขที่เลื่อนได้ (I27aa5, b/317453911)
  • นำ TextFieldCharSequence ออกแล้ว TextFieldBuffer.originalValues จะถูกแทนที่ด้วย TextFieldBuffer.originalText และ TextFieldBuffer.originalSelection (I2c7d6)
  • ImeOptions.hintLocales จะไม่ใช่ค่า Null อีกต่อไป หากต้องการส่งรายการภาษาที่ว่างเปล่า โปรดใช้ LocaleList.Empty (Ic5bc4)
  • เปลี่ยนชื่อ getOffsetFractionForPage เป็น getOffsetDistanceInPages แล้ว (Ia05e2)

การแก้ไขข้อบกพร่อง

  • เมื่อรวม InputTransformations กับ next แล้ว ระบบจะผสาน KeyboardOptions อย่างถูกต้องตามตัวเลือกแต่ละรายการโดยใช้วิธีการ KeyboardOptions.merge ใหม่ (Ie5304, b/295951492)
  • AnchoredDraggableState targetValue จะไม่พิจารณาเกณฑ์ตำแหน่งอีกต่อไป ตอนนี้มีเกณฑ์โดยนัยที่ 50% ซึ่งหมายความว่า targetValue จะเปลี่ยนที่จุดกึ่งกลางระหว่างจุดยึด 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 สามารถเลือกไม่ใช้การดูแลดัชนีตามคีย์สำหรับการวัดผลแบบส่งผ่านที่กำลังจะมาถึงได้โดยเรียกใช้ LazyListState.requestToScroll ที่ไม่ระงับ (I98036, b/209652366)
  • เพิ่มparseAsHtmlเมธอดสำหรับสตริงที่มีสไตล์ ซึ่งช่วยให้แปลงสตริงที่ทำเครื่องหมายด้วยแท็ก HTML เป็น AnnotatedString ได้ โปรดทราบว่าระบบไม่รองรับแท็กบางแท็ก เช่น คุณยังแสดงรายการหัวข้อย่อยไม่ได้ (I84d3d)
  • ใช้การรองรับแบบทดลองสำหรับภาพหน้าจอแบบยาวในคอนเทนเนอร์เลื่อนของ Compose โดยใช้ Android API อย่างเป็นทางการ (ScrollCaptureCallback) ฟีเจอร์นี้อยู่ในขั้นทดลองและอาจยังจัดการบางกรณีได้ไม่ถูกต้อง ด้วยเหตุนี้ ฟีเจอร์นี้จึงปิดใช้อยู่โดยค่าเริ่มต้นในขณะนี้ หากต้องการเลือกใช้ ให้ตั้งค่า Flag ComposeFeatureFlag_LongScreenshotsEnabled เป็น "จริง" เราจะนำฟีเจอร์นี้ออกก่อนเปิดตัวเวอร์ชันเบต้า 1.7 (I2b055, b/329296471)
  • เปิดตัว GraphicsLayer API ใหม่เพื่อให้มีความยืดหยุ่นมากขึ้นในการจัดวางและแสดงผลอินสแตนซ์ GraphicsLayer และรองรับฟีเจอร์การแสดงผลโดยธรรมชาติโดยไม่ต้องประสานงานกับการติดตั้งใช้งานที่ประกอบได้เพื่อระบุอินสแตนซ์ตัวแก้ไข GraphicsLayer

การเปลี่ยนแปลง API

  • ตอนนี้KeyboardOptionsพารามิเตอร์ทั้งหมดมีค่า "ไม่ได้ระบุ" เป็นค่าเริ่มต้น เพิ่มวิธีการKeyboardOptions.mergeแล้ว
  • เปลี่ยนชื่อ KeyboardOptions.autoCorrect เป็น autoCorrectEnabled และทำให้เป็นค่าว่างได้ โดยค่าว่างจะบ่งบอกว่าไม่ได้ระบุค่า (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 ได้รับการอัปเกรดเป็น Stable 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)
  • นำเมธอดและพร็อพเพอร์ตี้ที่เกี่ยวข้องกับ Codepoint ออกภายใต้ TextFieldState และ TextFieldBuffer นอกจากนี้ เรายังนำคำต่อท้าย inChars ออกจาก API ที่เหลือที่เกี่ยวข้องกับการเลือกและการจัดองค์ประกอบ (Ief7ce)
  • ตอนนี้ AnchoredDraggable ของ currentValue จะอัปเดตเมื่อผ่านจุดยึด ใช้ settledValue เพื่อรับความหมายของ currentValue ก่อนหน้า โดยจะอัปเดตเมื่อมีการตั้งค่าที่จุดยึดเท่านั้น ตอนนี้ความคืบหน้าจะแสดงเป็นฟังก์ชัน (ต้องมีจุดเริ่มต้นและจุดสิ้นสุด) แทนที่จะเป็นพร็อพเพอร์ตี้ (Ibe6e8, b/318707189, b/298271489, b/294991954)
  • BasicTextField(state), TextFieldState, InputTransformation, OutputTransformation, TextFieldLineLimits, TextFieldDecorator ได้รับการอัปเกรดเป็นเวอร์ชันเสถียรแล้ว (I9582b)
  • เปิดตัว InterceptPlatformTextInput เพื่อช่วยเขียนการทดสอบที่เกี่ยวข้องกับ IME ระดับต่ำและ Use Case อื่นๆ ของ 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 ด้วยภาษาเฉพาะเพื่อตั้งค่าภาษาที่ต้องการล่วงหน้า (Id18c2)
  • นำการโอเวอร์โหลด BasicTextField2 และ BasicSecureTextField เวอร์ชันทดลองที่ใช้พารามิเตอร์ value: String และ onValueChange: () -> String ออก (I568b4)
  • เพิ่มฟังก์ชัน applySemantics (ไม่บังคับ) ลงใน InputTransformation เพื่อส่งผลต่อความหมายของ BasicTextField2 ที่ใช้ (I74a2f, b/170648072)
  • ใน CL นี้ เราจะเพิ่มGetScrollViewportLengthการดำเนินการเชิงความหมายเพื่อให้เราส่งข้อมูลเกี่ยวกับคอมโพเนนต์ที่กำลังเลื่อนใน Compose ไปยังระบบ A11y ได้ CL นี้ยังใช้การใช้งานพร็อพเพอร์ตี้นี้ในรายการที่เลื่อนได้ของ Foundation ด้วย (Ic5fa2)
  • เปลี่ยนชื่อ BasicTextField2 เป็น BasicTextField (Ie5713)
  • FocusRequester.createRefs ตอนนี้เสถียรแล้ว (I4d92c, b/261436820)
  • เปิดตัว DelegatableNode.scrollIntoView() เพื่อให้โหนดตัวแก้ไขส่งคำขอ scrollIntoView ได้โดยตรง (I2b3b7, b/299939840)
  • เปิดตัว DelegatableNode.requireView() เพื่อให้โหนดตัวแก้ไขรับ View Android ปัจจุบันได้โดยไม่ต้องอ่าน CompositionLocal (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() เพื่อเป็นวิธีรับModifier.Nodeปัจจุบันของ LayoutCoordinates โดยไม่ต้องลบล้าง onPlaced และจัดเก็บพิกัดในพร็อพเพอร์ตี้ด้วยตนเอง (Ia8657)
  • เปิดตัว DelegatableNode.currentLayoutCoordinates เพื่อเป็นวิธีรับModifier.Nodeปัจจุบันของ LayoutCoordinates โดยไม่ต้องลบล้าง onPlaced และจัดเก็บพิกัดในพร็อพเพอร์ตี้ด้วยตนเอง (Iaebaa)
  • การเพิ่มประสิทธิภาพใน DraggableAnchors ที่ใช้โดย AnchoredDraggable (I89cff)
  • BasicTextField2 และ API ที่เกี่ยวข้องในแพ็กเกจ androidx.compose.foundation.text2 จะย้ายไปที่ androidx.compose.foundation.text (I9f635)
  • BasicTextField2 ไม่รับพารามิเตอร์ CodepointTransformation อีกต่อไป ใช้ BasicSecureTextField หรือ OutputTransformation (Id34ff)
  • เพิ่มวิธีเปรียบเทียบเฉพาะคำอธิบายประกอบของ AnnotatedStrings รายการ (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 CompositionLocal ที่ช่วยให้เปลี่ยนรูปแบบของลิงก์ในข้อความทั่วทั้งแอปได้ หากคุณใช้ธีมของคุณเองในแอป คุณควรตั้งค่า CompositionLocal นี้ตามธีมของคุณ เมื่อใช้ธีม Material ระบบจะตั้งค่าสีของลิงก์เป็นสีหลักของ Material โดยค่าเริ่มต้น (I7eb10)
  • เปิดตัวreceiveContentตัวแก้ไขที่ช่วยให้นักพัฒนาแอปมีวิธีรับเนื้อหาที่สมบูรณ์ใน Jetpack Compose
  • receiveContent ทำงานร่วมกับ BasicTextField2 เพื่อรับเนื้อหารูปแบบ Rich ที่แป้นพิมพ์ซอฟต์แวร์ให้มา หรือผ่านการวางจากคลิปบอร์ด (I81b72)
  • ในการเปลี่ยนแปลงนี้ เราจะแทนที่ SnapFlingBehavior ด้วย TargetedFlingBehavior ใน Pager เพื่อปลดล็อกกรณีการใช้งานอื่นๆ และมอบความยืดหยุ่นที่มากขึ้น (I762ea)
  • การเปลี่ยนแปลงนี้จะทำให้ Snapping API มีความเสถียร นอกจากนี้ เรายังจะล้างข้อมูลโค้ดการทดสอบบางส่วนและเพิ่มตัวอย่างเพิ่มเติมในการสแนปด้วย (Id8da9)
  • ขอแนะนำ TargetedFlingBehavior ซึ่งเป็น FlingBehavior ที่อนุญาตให้เผยแพร่ข้อมูลเกี่ยวกับสถานะของภาพเคลื่อนไหวที่กำลังดำเนินการและออฟเซ็ตการเลื่อนเป้าหมาย (I6a207)

การแก้ไขข้อบกพร่อง

  • BasicTextField2 จะทำให้เคอร์เซอร์อยู่ในมุมมองขณะพิมพ์เมื่อมีการเลื่อนเคอร์เซอร์ออกนอกมุมมองหรือเคอร์เซอร์จะเลื่อนออกนอกมุมมองเนื่องจากอินพุต (Ieb856, b/237190748)

การมีส่วนร่วมภายนอก

  • เพิ่ม API เวอร์ชันทดลองสำหรับการกำหนดค่าลักษณะการทำงานของการดึงข้อมูลล่วงหน้าของ LazyList (I022a4)

เวอร์ชัน 1.7.0-alpha01

24 มกราคม 2024

androidx.compose.foundation:foundation-*:1.7.0-alpha01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.0-alpha01 มีคอมมิตต่อไปนี้

ฟีเจอร์ใหม่

  • เพิ่ม Indication API ใหม่ IndicationNodeFactory ซึ่งส่งผลให้การติดตั้งใช้งาน Indication มีประสิทธิภาพมากขึ้นเมื่อเทียบกับ API rememberUpdatedInstance ก่อนหน้า (ปัจจุบันเลิกใช้งานแล้ว) ดูข้อมูลการย้ายข้อมูลได้ที่ developer.android.com
  • clickable / combinedClickable / selectable / toggleable ตอนนี้ยอมรับพารามิเตอร์ MutableInteractionSource ที่กำหนดให้เป็น Null ได้แล้ว หากเป็น Null และ Indication ที่ระบุเป็น IndicationNodeFactory ระบบจะสร้าง Indication แบบเลื่อนเวลาได้เมื่อจำเป็นเท่านั้น ซึ่งจะช่วยปรับปรุงประสิทธิภาพ หากไม่ได้โฮสต์และใช้ MutableInteractionSource ขอแนะนำให้ส่งค่าเป็น null

การเปลี่ยนแปลง API

  • การเปลี่ยนแปลงนี้ซึ่งเปิดตัวใน DecayAnimation ใน AnchoredDraggable จะเพิ่มพารามิเตอร์ decayAnimationSpec ลงใน AnchoredDraggable เพื่อให้ใช้ภาพเคลื่อนไหวการลดทอนเมื่อเลื่อนไปยังจุดยึดจุดใดจุดหนึ่งได้ การเปลี่ยนแปลงนี้ยังรวมถึงการเปลี่ยนชื่อ animationSpec ที่มีอยู่เป็น snapAnimationSpec เพื่อช่วยให้เข้าใจกรณีการใช้งานของแต่ละข้อกำหนด
  • BasicTextField2 พร้อมให้ใช้งานในเวอร์ชันทดลองแล้ว โดยควรมีฟีเจอร์ที่เทียบเท่ากับ BasicTextField และลักษณะการทำงานควรพร้อมใช้งานจริง อย่างไรก็ตาม API ยังคงเป็นเวอร์ชันทดลองในตอนนี้ ก่อนที่จะทำให้เสถียร เราจะเปลี่ยนชื่อเป็น BasicTextField และย้ายไปไว้ในแพ็กเกจเดียวกัน
  • เปิดตัวร่างแรกของ OutputTransformation API สำหรับ BasicTextField2 API นี้จะแทนที่ Use Case ส่วนใหญ่ของ VisualTransformation ใน BasicTextField รุ่นเก่า อย่างไรก็ตาม API นี้ยังไม่สมบูรณ์และบางอย่างอาจทำงานไม่ถูกต้อง แต่เรายินดีรับฟังความคิดเห็นเกี่ยวกับความสามารถในการใช้งาน API สำหรับกรณีการใช้งานของคุณ (aosp/2708848)
  • เปิดตัว LinkAnnotation ที่ช่วยให้เพิ่มลิงก์และข้อความที่คลิกได้ลงในข้อความ ฟีเจอร์ลิงก์ยังไม่สมบูรณ์และจะมีการเปลี่ยนแปลง API เพิ่มเติม
  • เปิดตัวreceiveContentตัวแก้ไขที่ช่วยให้นักพัฒนาแอปมีวิธีรับเนื้อหาที่สมบูรณ์ใน Jetpack Compose
  • receiveContent ทำงานร่วมกับ BasicTextField2 เพื่อรับเนื้อหารูปแบบ Rich Content ที่แป้นพิมพ์ซอฟต์แวร์ให้มา หรือผ่านการวางจากคลิปบอร์ด
  • 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)
  • เรียกใช้แฮนเดิลการเรียกกลับ onRelease ตามลำดับเดียวกับ onForgotten (31ce3b)

เวอร์ชัน 1.6.0

24 มกราคม 2024

androidx.compose.foundation:foundation-*:1.6.0 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.0 มีคอมมิตเหล่านี้

การเปลี่ยนแปลงสำคัญตั้งแต่เวอร์ชัน 1.5.0

  • ตัวปรับแต่งใหม่ Modifier.anchoredDraggable ที่ช่วยให้ลากและเคลื่อนไหวระหว่างชุดจุดยึดที่กำหนดไว้ล่วงหน้าได้ โดยตัวแก้ไขนี้มีไว้เพื่อแทนที่ Modifier.swipeable ดูวิธีใช้งานและวิธีย้ายข้อมูลจาก Modifier.swipeable ได้ในคู่มือการย้ายข้อมูล
  • เพิ่มฟังก์ชันการลากและวางระหว่างแอปและคอมโพเนนต์ โปรดดู DragAndDropTarget, Modifier.dragAndDropSource และ API อื่นๆ เพื่อเริ่มต้นใช้งาน
  • Modifier.draggable2D เป็นแป้นกดร่วมใหม่ที่ช่วยให้รองรับการลากแบบ 2 มิติได้ง่าย ดูตัวอย่าง
  • เราได้เพิ่ม AndroidExternalSurface และ AndroidEmbeddedExternalSurface เพื่อให้เพิ่มคอมโพเนนต์ที่ขับเคลื่อนด้วยพื้นผิวใน Compose ได้ง่ายขึ้น
  • การเปลี่ยนแปลงและการปรับปรุง 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 ไม่อัปเดตหลังจากเลื่อนเฉพาะการจัดวางใหม่ (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 เพื่อเลือกใช้เซสชันการลากและวาง ตอนนี้มีฟังก์ชัน Factory 2 รายการสำหรับ DragAndDropModifierNode 1 เครื่องสำหรับรับการโอนและอีก 1 เครื่องสำหรับโอนข้อมูล (I69481)
  • อัปเดต maximumFlingVelocity ให้แสดงเป็น Float อัปเดตเอกสารเพื่อให้มีความชัดเจนมากขึ้นเกี่ยวกับmaximumFlingVelocityความสามัคคี (I8adc7)
  • เปลี่ยนชื่อ onDragAndDropStart ใน DragAndDropModifierNode Factory เป็น acceptDragAndDropTransfer แล้ว

    เพิ่ม acceptsDragAndDropTransfer ลงใน dragAndDropTarget Modifier เพื่อยอมรับจากเซสชันการลากและวาง Lambda นี้จะแสดงผล viable DragAndDropTarget หากสนใจเซสชันการลากและวาง ระบบได้แทนที่ Lambda อื่นๆ สำหรับการประมวลผลเหตุการณ์การลากด้วยฟังก์ชันนี้

    เพิ่มฟังก์ชันโรงงาน DragAndDropTarget เพื่อรับจากเซสชันการลากและวาง (Iebf3a)

  • การเปิดเผย startDragImmediately ใน AnchoredDraggable จะช่วยให้ควบคุมการตรวจหาท่าทางการลากเมื่อใช้งานได้ การตั้งค่านี้จะมีประโยชน์เมื่อวิดเจ็ตเคลื่อนไหวไปยังจุดยึดเป้าหมาย ดูตัวอย่าง (Ie6d13, b/285139987)

  • ตอนนี้ Foundation Tooltip API อยู่ในสถานะ@ExperimentalFoundationApi (I30b0b) แล้ว

  • นำ DragAndDropInfo ออกจากประเภท DragAndDropModifierNode.drag ตอนนี้ใช้พารามิเตอร์สำหรับ transferData, ขนาดการตกแต่ง และ Lambda การตกแต่งแบบลาก DrawScope

    DragAndDropTarget มีเมธอดสำหรับเหตุการณ์การลากและวางที่เฉพาะเจาะจงแทนที่จะเป็นเมธอดแบบนามธรรมเดียว

    onDragAndDropEvent ในฟังก์ชัน Factory สำหรับ DragAndDropModifierNode ได้เปลี่ยนชื่อเป็น onDragAndDropStart เพื่อสื่อสารให้ดียิ่งขึ้นว่า DragAndDropTarget ที่ระบุใช้ได้เฉพาะเซสชันการลากและวางที่กำหนดเท่านั้น

    ระบบได้นำ DragAndDropEventType ออกแล้ว (I645b1)

  • เปลี่ยนชื่อ PlatformTextInputModifierNode.runTextInputSession เป็น establishTextInputSession แล้ว (I03cd0)

  • แทนที่ OriginalText ด้วย TextSubstitution (Ifa5a8)

  • เปลี่ยนชื่อ PlatformTextInputModifierNode.textInputSession เป็น runTextInputSession แล้ว (Ie9c6b)

  • ระบบจะถือว่าองค์ประกอบย่อยของ SubcomposeLayout (และเลย์เอาต์ที่คล้ายกัน เช่น LazyColumn ที่อิงตามองค์ประกอบย่อยนี้) ซึ่งเก็บไว้เพื่อนำกลับมาใช้ใหม่ในอนาคตนั้นปิดใช้งานแล้ว เราได้เปิดตัว assertIsDeactivated() test API ใหม่เพื่อทดสอบโหนดดังกล่าว ส่วน API ทดสอบอื่นๆ จะกรองโหนดที่ปิดใช้งานออกโดยค่าเริ่มต้น (I2ef84, b/187188981)

  • เปลี่ยนชื่อพารามิเตอร์ clippingEnabled ของ Modifier.magnifier เป็น clip

  • เราทำให้พารามิเตอร์ magnifierCenter ของ Modifier.magnifier เป็นค่า Null ได้โดยยังคงลักษณะการทำงานเริ่มต้นไว้เหมือนเดิม (I6aa66)

  • ตอนนี้ Material SwipeToReveal API (สำหรับ Card และ Chip) ใช้ API ที่อิงตามช่อง (ตามที่ Compose แนะนำ) แทนอินสแตนซ์ที่อิงตามคลาสข้อมูลเพื่อสร้างช่องเหล่านั้น นี่เป็นการเปลี่ยนแปลงที่ทำให้เกิดข้อขัดข้อง โปรดดูการสาธิตและโค้ดตัวอย่างเพื่อดูตัวอย่างวิธีใช้ API ใหม่ (Ia8943)

การแก้ไขข้อบกพร่อง

  • ใช้ equals และ hashcode สำหรับ PageSize.Fixed (Ie3ede, b/300134276)
  • แก้ไขข้อบกพร่องที่ทำให้เลย์เอาต์ BasicText ไม่ย่อเมื่อ minWidth เปลี่ยนแปลงและ minWidth น้อยกว่าข้อจำกัดการวัดเริ่มต้น maxWidth (Idb19c)
  • เพิ่มการรองรับโปรแกรมแสดงผลสำหรับ Sweep Gradient ใน ArcLine (I4d5bb)
  • แก้ไขปัญหาความเข้ากันได้ของไบนารีกับการเปลี่ยนแปลง Window Inset (Iee695)
  • นำเลเยอร์หลักของ Material ออกสำหรับชิป/ปุ่ม Material3 เนื่องจาก Microbenchmark แสดงให้เห็นว่าไม่มีเลเยอร์ดังกล่าวแล้วประสิทธิภาพจะดีกว่า (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)
  • เพิ่มDisableNonLinearFontScalingInCompose Flag ชั่วคราวเพื่อปิดใช้การปรับขนาดแบบอักษรที่ไม่ใช่แบบเชิงเส้น ตั้งค่า DisableNonLinearFontScalingInCompose = true ในการทดสอบหากคุณต้องการเวลาในการล้างข้อมูล เราจะนำฟีเจอร์นี้ออกใน Compose 1.6.0-beta01 (Ic9486)
  • เพิ่มคอลเล็กชัน ColorList และ ColorSet ที่หลีกเลี่ยงการจัดสรร (I744bd)
  • การเปลี่ยนแปลงนี้จะนำ shortSnapVelocityThreshold ออก ซึ่งได้กลายเป็นรายละเอียดการใช้งานของการใช้งาน SnapLayoutInfoProvider (I65f6d)
  • เพิ่มตัวแก้ไข dragAndDropSource สำหรับการเริ่มเซสชันการลากและวาง และตัวแก้ไข dragAndDropTarget สำหรับการรับจากเซสชันการลากและวาง (Ib7828, b/286038936)
  • อัปเดตSnapPositionInLayoutเอกสารประกอบและวิธีการระบุตำแหน่ง เพิ่มระยะขอบเนื้อหาลงในเมธอดตำแหน่งใน SnapPositionInLayout (Id7938, b/300116110)
  • เพิ่ม UndoState ลงใน TextFieldState ซึ่งช่วยให้สามารถเลิกทำ/ทำซ้ำการเปลี่ยนแปลงที่ผู้ใช้ดำเนินการ (Icc024)

การแก้ไขข้อบกพร่อง

  • แก้ไขปัญหา basicMarquee ไม่เคลื่อนไหวหลังจากเปลี่ยนความเร็ว (Id2e77, b/297974036)

เวอร์ชัน 1.6.0-alpha06

20 กันยายน 2023

androidx.compose.foundation:foundation-*:1.6.0-alpha06 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.0-alpha06 มีคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • Composables 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)

การเปลี่ยนแปลงลักษณะการทำงาน

  • ตอนนี้ Compose ใช้การปรับขนาดแบบอักษรที่ไม่ใช่แบบเชิงเส้นเพื่อให้อ่านและเข้าถึงได้ง่ายขึ้น เมื่อการปรับขนาดแบบอักษร > 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 ที่ยอมรับค่าที่ไม่เปลี่ยนและโค้ดเรียกกลับเพื่อเปลี่ยนค่านั้น เช่นเดียวกับ API BasicTextField ปัจจุบัน (Ia4882)
  • เพิ่ม Modifier.preferKeepClear() เพื่อทำเครื่องหมายเป็น Composable เนื่องจากต้องการหลีกเลี่ยงหน้าต่างลอยใน API 33 ขึ้นไป (Ib51d5, b/297260115)
  • ความเร็วในการดีดในคอมโพเนนต์ View เช่น ScrollView และ RecyclerView จะจำกัดไว้ที่ ViewConfiguration.ScaledMaximumFlingVelocity ตอนนี้ Compose มี 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 ที่ยอมรับค่าที่ไม่เปลี่ยนและโค้ดเรียกกลับเพื่อเปลี่ยนค่านั้น เช่นเดียวกับ API BasicTextField ปัจจุบัน (I3f2b8)
  • ตอนนี้ GridItemSpan::currentLineSpan เป็น API ที่เสถียรแล้ว (Icc29c)
  • Canvas ที่ยอมรับ contentDescription ตอนนี้เป็น API ที่เสถียรแล้ว (Ib3d29)
  • เปิดตัว viewportSize ใน ScrollState ซึ่งเป็นวิธีทราบขนาด viewPort ของคอมโพเนนต์ที่ใช้ ScrollState หลังจากวัดผล (I8b85a, b/283102682)
  • แก้ไขปัญหาที่การดึงข้อมูลล่วงหน้าใน Pager ไม่ตรงกับลักษณะการทำงานใน Views (I93352, b/289088847)
  • Modifier.consumeWindowInsets(PaddingValues) เสถียรแล้ว
    • ตอนนี้เราได้นำ Deprecated Modifier.consumedWindowInsets API ออกแล้ว โปรดใช้ Modifier.consumeWindowInsets แทน (Id72bb)

เวอร์ชัน 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 จากจริงเป็นเท็จขณะโฟกัส (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)
  • ออกแบบ PlatformTextInput* API ใหม่ทั้งหมด (I6c93a, b/274661182, b/267235947, b/277380808)
  • SoftwareKeyboardController และ LocalSoftwareKeyboardController ไม่ใช่ฟีเจอร์ทดลองอีกต่อไป ตอนนี้ LocalSoftwareKeyboardController เป็น CompositionLocal อย่างเป็นทางการแล้ว (I4c364)
  • ตอนนี้ Modifier.transformable มีเดลต้าการแพนในพารามิเตอร์ canPan เพื่อช่วยกำหนดทิศทางการแพนเพื่ออนุญาตหรือไม่อนุญาต (I692aa, b/266829800)
  • อัปเดตตัวแก้ไข consumeWindowInsets เพื่อขยายซูเปอร์คลาส AbstractComposeView (Iacd74, b/269479941)

เวอร์ชัน 1.6.0-alpha01

21 มิถุนายน 2023

androidx.compose.foundation:foundation-*:1.6.0-alpha01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.6.0-alpha01 มีคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • เปิดตัว AnchoredDraggable API ใหม่ใน Foundation ซึ่งใช้สร้างคอมโพเนนต์ที่ลากระหว่างสถานะต่างๆ ได้ เช่น แถบเลื่อนด้านล่างแบบโมดัล API นี้จะมาแทนที่ Swipeable API ของ Material (I4a2ed)

การเปลี่ยนแปลง API

  • การสนับสนุน InputConnection#requestCursorUpdates (I0c69b)
  • เปิดตัว scrollAnimationSpec เพื่ออนุญาตให้ใช้ข้อกำหนดภาพเคลื่อนไหวที่กำหนดเอง อัปเดตBringIntoViewCalculatorเป็น BringIntoViewScroller แล้ว (Idb741)
  • เพิ่มประเภท ResourceResolutionException เพื่อห่อ Throwable ที่เกิดขึ้นเมื่อพยายามโหลดชิ้นงานบิตแมปพร้อมคำอธิบายเส้นทางชิ้นงานที่โหลดไม่สำเร็จ (I19f44, b/230166331, b/278424788)
  • เพิ่มพร็อพเพอร์ตี้และการดำเนินการทางความหมายเพื่อรองรับการแปลข้อความ (I4a6bc)
  • เปิดตัว BringIntoViewCalculator API ที่ใช้ปรับแต่งวิธีที่คอมโพเนนต์ต่างๆ เช่น Scrollable ตอบสนองต่อคำขอ bringIntoView เปลี่ยนการโอเวอร์โหลดของ Scrollable เพื่อยอมรับอินสแตนซ์ของ 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 จากจริงเป็นเท็จขณะโฟกัส (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() ไปยังประเภทเฉพาะทางที่เกี่ยวข้องสำหรับ Primitive ได้ รหัส 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 (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 สำหรับ Pager และฟังก์ชันยูทิลิตีสำหรับการคำนวณออฟเซ็ตของหน้าที่กำหนด (If2577)
  • แนะนำ snapPositionalThreshold เมื่อสร้างลักษณะการทำงานของการปัด Snap ใช้พารามิเตอร์นี้เพื่อระบุเกณฑ์ตำแหน่งสำหรับการสแนปกับวิดีโอสั้นใน Pager (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 ของ Pager (I7379e, b/275579012)
  • เพิ่ม FlowRowScope และ FlowColumnScope (I54fe2)

การแก้ไขข้อบกพร่อง

  • การเรียกใช้เพื่อรับความหมายในข้อความเมื่อข้อจำกัดมี minWidth และ minHeight จะไม่ทำให้เกิดข้อขัดข้องอีกต่อไป (Ibd072)
  • แก้ไขการถดถอยที่แป้นพิมพ์ไม่แสดงสำหรับช่องข้อความภายในกล่องโต้ตอบที่ไม่ได้สร้างโดย Dialog composable (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 เบต้า 01(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
  • 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

  • เปิดตัว PlatformTextInputAdapter API ระดับต่ำใหม่สำหรับการสร้างการใช้งานอินพุตข้อความที่กำหนดเองซึ่งสื่อสารกับ API ของแพลตฟอร์มโดยตรง (I58df4)
  • เพิ่มการรองรับเลย์เอาต์ย้อนกลับใน LazyStaggeredGrid (I3ef4a)

การแก้ไขข้อบกพร่อง

  • ตอนนี้การดำเนินการตามความหมายของ BasicTextFieldSetText จะอัปเดตบัฟเฟอร์ข้อความโดยใช้เส้นทางโค้ดเดียวกับการอัปเดต 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

  • เพิ่มการเรียกกลับ 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
  • 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 เข้ากับฟังก์ชัน applyToScroll และ applyToFling ที่รวมกัน ดูตัวอย่างที่อัปเดตแล้วในเอกสารประกอบเพื่อดูตัวอย่างวิธีใช้เอฟเฟกต์การเลื่อนเกินด้วยรูปร่าง API ใหม่ (I8a9c4, b/255554340)
  • ประเภท/ค่า Null ของฟังก์ชันที่ซ่อนในบรรทัด/เลิกใช้งานแล้ว (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 (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589)
  • ตอนนี้ตัวสร้าง AndroidFont ที่มี variationSettings เป็น API ที่เสถียรแล้ว และสามารถใช้เพื่อสร้างตัวอธิบายแบบอักษรประเภทใหม่ได้ (I5adcc, b/261565807)
  • เปิดตัว PinnableContainer API ที่เผยแพร่โดย Lazy List ผ่าน Composition Local ซึ่งช่วยให้ปักหมุดรายการปัจจุบันได้ ซึ่งหมายความว่าระบบจะไม่ทิ้งรายการดังกล่าวเมื่อเลื่อนออกจากมุมมอง เช่น 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 โดยใช้กฎ Compose ระบบจะไม่ส่งต่อการดำเนินการต่อที่กลับมาทำงานอีกครั้งในระหว่างการเรียกกลับ withFrameNanos จนกว่าการเรียกกลับของเฟรมทั้งหมดจะทำงานเสร็จ ซึ่งจะตรงกับลักษณะการทำงานของ Compose เมื่อเรียกใช้ตามปกติ อย่างไรก็ตาม การทดสอบที่อิงตามลักษณะการทำงานแบบเดิมอาจล้มเหลว การเปลี่ยนแปลงนี้ควรมีผลกับโค้ดที่เรียกใช้ withFrameNanos หรือ withFrameMillis โดยตรงเท่านั้น และมีตรรกะภายนอก Callback ที่ส่งไปยังฟังก์ชันเหล่านั้น ซึ่งอาจต้องย้ายไปไว้ภายใน Callback ดูการเปลี่ยนแปลงการทดสอบภาพเคลื่อนไหวใน CL นี้เพื่อดูตัวอย่าง
  • เพิ่มพารามิเตอร์ onPerformTraversals: (Long) -> Unit ที่ไม่บังคับลงในตัวสร้าง TestMonotonicFrameClock และฟังก์ชัน Factory เพื่อเรียกใช้โค้ดหลังจาก Callback ของ withFrameNanos แต่ก่อนที่จะกลับมาใช้ Coroutine ของผู้โทร (Idb413, b/254115946, b/222093277, b/255802670)
  • แนะนำการดำเนินการด้านการช่วยเหลือพิเศษของหน้าเว็บ: PageUp, PageDown, PageLeft, PageRight โปรดทราบว่าฟีเจอร์เหล่านี้จะใช้ได้ตั้งแต่ API 29 เป็นต้นไป (Ida4ab)
  • ขอแนะนำ HorizontalPager และ VerticalPager ซึ่งเป็นวิธีแสดง Composable ในลักษณะของ Pager เปิดตัว PagerState เพื่อควบคุม Pager รวมถึงข้อมูลการค้นหาเกี่ยวกับสถานะปัจจุบันของ Pager เราได้เปิดตัว PageSize ซึ่งเป็นวิธีควบคุมขนาดหน้าของ Pager โดยสามารถใช้เพื่อสร้างภาพสไลด์เหมือน Pager ได้ เปิดตัว PagerSnapDistance ซึ่งเป็นวิธีควบคุมการทำงานของการสแนปในลักษณะการปัดของ Pager (I01120)
  • เปิดตัวการโอเวอร์โหลดใน SnapFlingBehavior.performFling เพื่อช่วยให้เข้าใจว่าฟลิงจะไปลงที่ใด (I569f6)
  • นำ OverscrollEffect#isEnabled ออกแล้ว คุณไม่จำเป็นต้องจดจำและตั้งค่าสถานะนี้ เพียงแค่ไม่ต้องส่งเหตุการณ์ไปยังเอฟเฟกต์การเลื่อนเกินในกรณีที่คุณไม่ต้องการให้แสดงการเลื่อนเกิน (เช่น หาก ScrollableState#canScrollForward/backward ทั้ง 2 รายการแสดงผลเป็นเท็จ) (I1a4b0, b/255554340, b/255557085)
  • เพิ่ม ScrollableState#canScrollForward และ ScrollableState#canScrollBackward เพื่อสอบถามว่า ScrollableState มีพื้นที่ให้เลื่อนในทิศทางใดทิศทางหนึ่งหรือไม่ (ไม่ว่าจะอยู่ที่ค่าต่ำสุด / สูงสุดของช่วงหรือไม่) ค่าเริ่มต้นจะเป็นจริงเพื่อให้เข้ากันได้แบบย้อนหลังกับการใช้งาน ScrollableState ที่มีอยู่ ผู้ใช้สามารถใช้สิ่งนี้เพื่อแสดงให้ผู้ใช้เห็นว่ายังเลื่อนได้ และยังใช้เพื่อหลีกเลี่ยงการส่งส่วนต่างไปยัง ScrollableStates ที่ไม่มีที่ว่างให้เลื่อนในทิศทางที่กำหนดได้ด้วย เพื่อลดการทำงานที่ไม่จำเป็น (Idf1a0, b/255557085)
  • เพิ่ม Modifier API เพื่อค้นหาข้อมูลการเลื่อนขององค์ประกอบระดับบน (I2ba9d, b/203141462)
  • ใช้ใน Clickable เพื่อหน่วงเวลาการโต้ตอบการกดอย่างถูกต้อง เมื่อท่าทางสัมผัสอาจกลายเป็นเหตุการณ์การเลื่อน
  • แก้ไขปัญหาที่ Clickables ไม่หน่วงเวลาการกระเพื่อมอย่างถูกต้องเมื่อใช้ภายใน Scrollable ViewGroup
  • อัปเดตลิ้นชักและชีตเพื่อหน่วงเวลาการกดอย่างถูกต้องในกรณีที่ท่าทางสัมผัสอาจกลายเป็นเหตุการณ์การเลื่อน
  • อัปเดตการตั้งชื่อ snapStepSize ให้สอดคล้องกับวิธีการอื่นๆ ใน SnapLayoutInfoProvider (Ife67c)
  • เพิ่ม EmojiCompat ใน Compose (Ibf6f9, b/139326806)
  • เปลี่ยนชื่อ consumedWindowInsets() เป็น consumeWindowInsets() และ withConsumedWindowInsets() เป็น onConsumedWindowInsetsChanged() รวมถึงทำให้ตัวแก้ไขเป็นแบบสาธารณะ (Ie44e1)

การแก้ไขข้อบกพร่อง

  • แก้ไขข้อขัดข้องกับ Modifier.animateItemPlacement() และ Lazy Grid แล้ว ปัญหานี้เกิดขึ้นในบางกรณีเมื่อจำนวนสินค้าใหม่น้อยกว่าจำนวนสินค้าก่อนหน้า (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)
  • เปลี่ยน beyondBoundCount API จาก 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.imeAnimationSource และ 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 Factory ด้วยคลาส SnapFlingBehavior ที่เฉพาะเจาะจง SnapLayoutInfoProviderเมธอดที่กำหนดขอบเขตไว้สำหรับความหนาแน่นเพื่อให้ผู้ใช้ API แปลง Dp<->Px ได้ง่ายขึ้น (I54a11)
  • อัปเดต LazyLayoutMeasureScope.measure เพื่อแสดงรายการของที่วางได้ โดยเน้นความคงที่ที่ต้องการของค่าที่แสดงผล (I48b7c)
  • เปิดตัว SnapLayoutInfoProvider ซึ่งใช้ LazyListState เพื่อสร้างอินสแตนซ์ของ SnapLayoutInfoProvider ที่ใช้เปิดใช้ Snap FlingBehavior สำหรับ LazyLists ได้ (I2dd10)

การแก้ไขข้อบกพร่อง

  • ปรับโครงสร้าง AwaitPointerEventScope#awaitLongPressOrCancellation ให้ตรงกับฟังก์ชัน await อื่นๆ (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 List (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

  • ตอนนี้แบบอักษรทรัพยากรรองรับการตั้งค่าตัวแปรแบบอักษร (API 26 ขึ้นไป) แล้ว (I900dd, b/143703328)
  • การรองรับแบบอักษรที่ปรับแต่งได้ใน DeviceFontFamilyNameFont (Ic1279, b/143703328)
  • นำคำอธิบายประกอบเวอร์ชันทดลองออกจาก PlatformTextStyle และ LineHeightStyle แล้ว (I64bef)
  • ตอนนี้ฟิลด์ข้อความจะแสดงข้อยกเว้นที่ละเอียดยิ่งขึ้นเมื่อ OffsetMapping ที่ VisualTransformation ระบุส่งคืนดัชนีที่ไม่ถูกต้อง (Ie73f9, b/229378536)
  • เปิดตัว API เวอร์ชันทดลองเพื่อแชร์ตรรกะของผู้ให้บริการไอเทมระหว่างเลย์เอาต์แบบ Lazy (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 ลงใน Velocity Tracker เราจะพิจารณาเดลต้าแทนตำแหน่ง ซึ่งจะรับประกันว่าระบบจะคำนวณความเร็วได้อย่างถูกต้องในทุกกรณี แม้ว่าองค์ประกอบเป้าหมายจะเคลื่อนที่ (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 List และ Grid มีพารามิเตอร์ userScrollEnabled ซึ่งช่วยให้ปิดใช้การเลื่อนผ่านท่าทางของผู้ใช้ได้
  • เพิ่ม API เวอร์ชันทดลองใหม่ชื่อ LazyLayout ซึ่งเป็น API ที่เราใช้ภายในเพื่อขับเคลื่อนรายการและตารางแบบ Lazy
  • OverscrollEffect เราได้เปิดตัว API ในเวอร์ชันทดลอง คุณกําหนดเอฟเฟกต์การเลื่อนเกินที่กําหนดเอง รวมถึงเพิ่มเอฟเฟกต์แพลตฟอร์มมาตรฐานลงในคอนเทนเนอร์ที่เลื่อนได้ที่กําหนดเองได้
  • เราได้เปิดตัวAPI ความสามารถในการทำงานร่วมกันของการเลื่อนที่ซ้อนกันเพื่อให้สามารถทำงานร่วมกันระหว่างมุมมองและนักแสดงการเลื่อน Compose
  • เพิ่มการเลื่อนด้วยเมาส์และแทร็กแพดลงในคอนเทนเนอร์การเลื่อนทั้งหมดแล้ว

เวอร์ชัน 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)
  • ตอนนี้อินเทอร์เฟซในไลบรารี Compose สร้างขึ้นโดยใช้เมธอดอินเทอร์เฟซเริ่มต้นของ jdk8 (I5bcf1)
  • เปิดตัว API เวอร์ชันทดลองcheckScrollableContainerConstraints() ซึ่งช่วยให้ตรวจสอบได้ว่าเราไม่ได้ซ้อนคอนเทนเนอร์ที่เลื่อนได้ คุณใช้ฟีเจอร์นี้ได้เมื่อสร้างเลย์เอาต์แบบเลื่อนที่โหลดแบบ Lazy ของตัวเองผ่าน 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 ของคุณเองที่คล้ายกับ DSL ที่ใช้โดย LazyColumn ซึ่งสามารถกำหนดรายการได้ผ่านการเรียกใช้ item/items หลายครั้ง (I2d05e, b/228580728)

การแก้ไขข้อบกพร่อง

  • ชี้แจงเอกสารประกอบสำหรับ WindowInsets.ime เพื่อระบุว่า ime มีการรายงานระยะขอบตั้งแต่ API 23 เป็นต้นไป แต่จะเคลื่อนไหวได้เฉพาะใน API 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)
  • ใน LazyLayoutItemProvider API แทนที่จะให้โรงงานส่งคืน Lambda ที่ประกอบได้ตามดัชนี ตอนนี้เรามีฟังก์ชันที่ประกอบได้ที่ง่ายกว่าเดิมชื่อ Item ซึ่งยอมรับดัชนี (Id2196)
  • เปลี่ยนชื่อ LazyLayoutItemsProvider เป็น LazyLayoutItemProvider (I0638c)
  • LazyLayoutItemsProvider.itemsCount เปลี่ยนชื่อเป็น itemCount (Id409c)
  • เพิ่มแปรงใน TextStyle และ SpanStyle เพื่อให้วาดข้อความด้วยการไล่ระดับสีได้ (I53869, b/187839528)
  • แอตทริบิวต์ trimFirstLineTop, trimLastLineBottom ของ LineHeightBehavior เปลี่ยนเป็น Enum เดียว: LineHeightTrim LineHeightTrim มีค่า 4 สถานะที่กำหนดโดยบูลีน 2 รายการ FirstLineTop, LastLineBottom, ทั้งคู่ และไม่มี (Ifc6a5, b/181155707)
  • เพิ่ม LineHeightBehavior ลงในตัวควบคุม TextStyle และ ParagraphStyle. LineHeightBehavior เพื่อกำหนดว่าจะใช้ความสูงของบรรทัดกับด้านบนของบรรทัดแรกและด้านล่างของบรรทัดสุดท้ายหรือไม่ นอกจากนี้ยังกำหนดการจัดแนวบรรทัดในช่องว่างที่ TextStyle(lineHeight) จัดไว้ให้ด้วย

    เช่น คุณสามารถรับลักษณะการทำงานที่คล้ายกับสิ่งที่ CSS กำหนดผ่าน LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false) ได้

  • trimFirstLineTop, trimLastLineBottom การกำหนดค่าจะทำงานอย่างถูกต้อง เมื่อ includeFontPadding เป็นเท็จเท่านั้น (I97332, b/181155707)

  • เพิ่มตัวแก้ไข 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 หากเราเลื่อนในแนวตั้ง (หาก someDelta เป็นบวก ระบบจะเลื่อนลง) (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)
  • ตอนนี้ Paragraph และ MultiParagraph ยอมรับพารามิเตอร์ข้อจำกัดแล้ว การส่ง Constraints.maxHeight จะไม่มีผลในตอนนี้ แต่จะช่วยให้ ทำการคำนวณบางอย่างได้ในอนาคต เช่น การย่อข้อความตามความสูง (I6afee, b/168720622)
  • SubcomposeSlotReusePolicy.getSlotsToRetain() ตอนนี้ยอมรับคลาสที่กำหนดเองซึ่งคล้ายกับ MutableSet ซึ่งไม่อนุญาตให้เพิ่มรายการใหม่ในคลาส (Icd314)
  • การดูบางส่วน (ลงหรือตำแหน่ง) เลิกใช้งานแล้วใน PointerInputChange คุณใช้ consume() เพื่อใช้การเปลี่ยนแปลงทั้งหมดได้ คุณใช้ isConsumed เพื่อพิจารณาว่ามีบุคคลอื่นใช้การเปลี่ยนแปลงไปก่อนหน้านี้หรือไม่
  • PointerInputChange::copy() จะทำสำเนาแบบตื้นเสมอ ซึ่งหมายความว่าระบบจะใช้สำเนาของ PointerInputChange เมื่อมีการใช้สำเนาใดสำเนาหนึ่ง หากต้องการสร้าง PointerInputChange ที่ไม่มีขอบเขต ให้ใช้ตัวสร้างแทน (Ie6be4, b/225669674)
  • เปิดตัว LazyLayout API เวอร์ชันทดลองใหม่ ซึ่งจะช่วยให้คุณสร้างคอมโพเนนต์ของคุณเองได้ เช่น LazyColumn ของ LazyVerticalGrid โปรดทราบว่า API อยู่ในช่วงเริ่มต้นและอาจมีการเปลี่ยนแปลงในรุ่นต่อๆ ไป (Iba2bc, b/166591700)
  • ตอนนี้ AndroidFont ใช้ typefaceLoader เป็นพารามิเตอร์ของเครื่องมือสร้าง (I2c971)
  • ตอนนี้ WindowInsets Companion จะแสดงระดับการมองเห็น (ไม่ว่าจะอยู่บนหน้าจอหรือไม่ ไม่ว่าจะมีส่วนทับซ้อนกับหน้าต่างหรือไม่) และขนาดที่อาจเป็นได้หากพร้อมใช้งานในอุปกรณ์ แต่ไม่ได้ใช้งานอยู่ในขณะนี้ (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 ป้องกันไม่ให้ทิ้งรายการที่คอมโพสอยู่ในปัจจุบัน (Ibbdd0, b/184670295)
  • ตอนนี้ LazyListLayoutInfo และ LazyGridLayoutInfo มีช่อง beforeContentPadding และ afterContentPadding แล้ว (I3b628, b/200920410)
  • เพิ่ม KeyboardType.Decimal เป็นทางเลือกแทน Keyboard.Number เพื่อรวมตัวคั่นทศนิยมใน IME โดยเฉพาะ (Iec4c8, b/209835363)
  • เพิ่มตัวอธิบายแบบอักษรใหม่ Font(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)
  • อัปเดตการแยกวิเคราะห์ Vector Drawable เพื่อรองรับการมิเรอร์อัตโนมัติเพื่อพลิกเนื้อหาของ VectorPainter หากเลย์เอาต์ปัจจุบัน เป็นแบบ RTL (I79cd9, b/185760237)

การแก้ไขข้อบกพร่อง

  • ตอนนี้ตัวแก้ไขการเลื่อน (Modifier.verticalScroll(),Modifier.horizontalScroll() และ Modifier.scrollable()) จะเลื่อนเพื่อให้ Composable ที่โฟกัสยังคงมองเห็นได้หากมีการปรับขนาดพื้นที่เลื่อนและ Composable ที่โฟกัสมองเห็นได้ก่อนหน้านี้
  • ตอนนี้ระบบจะเก็บ TextField ไว้เหนือแป้นพิมพ์เมื่อมีการโฟกัสและแสดงแป้นพิมพ์ เมื่ออยู่ภายในรายการที่เลื่อนได้แบบไม่เลซีและโหมดป้อนข้อมูลแบบนุ่มเป็น 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แก้ไขปัญหาการตัดข้อความอันเป็นผลมาจากincludeFontPadding=falseแล้ว และไม่ควรมีการตัดข้อความสำหรับสคริปต์ที่มีความยาว (I31c84, b/171394808)
  • ตอนนี้อินเทอร์เฟซที่วัดผลได้จะแสดงพร็อพเพอร์ตี้ parentData (I3313f)
  • เปิดตัว Modifier.onFocusedBoundsChanged เพื่ออนุญาต สังเกตขอบเขตขององค์ประกอบที่โฟกัสได้ขององค์ประกอบย่อย (I14283, b/220030968, b/190539358, b/192043120, b/216842427)
  • เพิ่ม LazyHorizontalGrid แล้ว (I61ae7, b/191238807)
  • เพิ่ม LazyVerticalGrid API ใหม่เพื่อกำหนดขนาดแกนไขว้ (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() method เพื่ออนุญาตให้นักพัฒนาแอป รวมเฉพาะมิติข้อมูลจาก WindowInsets (I14c94, b/217768486)
  • เพิ่ม ComposableTarget, ComposableTargetMarker และ ComposableOpenTarget ที่อนุญาตให้รายงานเวลาคอมไพล์เมื่อมีการเรียกใช้ ฟังก์ชันที่ประกอบกันได้ซึ่งกำหนดเป้าหมายไปยังแอปพลิเคชันที่ไม่ได้ ออกแบบมาให้ใช้

    ในกรณีส่วนใหญ่ ปลั๊กอินคอมไพเลอร์ Compose จะอนุมานคำอธิบายประกอบได้ ดังนั้นการใช้คำอธิบายประกอบเหล่านี้โดยตรงจึงไม่ค่อยเกิดขึ้น กรณีที่อนุมานไม่ได้ ได้แก่ การสร้างและ การใช้แอปพลิเคชันที่กำหนดเอง ฟังก์ชันที่ประกอบกันได้แบบนามธรรม (เช่น เมธอดอินเทอร์เฟซ) ฟิลด์หรือตัวแปรส่วนกลางที่เป็น แลมบ์ดาที่ประกอบกันได้ (ระบบจะอนุมานตัวแปรและพารามิเตอร์ภายใน) หรือเมื่อใช้ ComposeNode หรือฟังก์ชันที่ประกอบกันได้ที่เกี่ยวข้อง

    สำหรับฟังก์ชันที่กำหนดเองที่เรียกใช้ฟังก์ชันที่ใช้ร่วมกันได้ ComposeNode หรือ ReusableComposeNode จะต้องเพิ่ม CompoableTarget คำอธิบายประกอบสำหรับฟังก์ชันและประเภทพารามิเตอร์แลมบ์ดาที่ใช้ร่วมกันได้ อย่างไรก็ตาม เราขอแนะนำ ให้สร้างคำอธิบายประกอบที่มีคำอธิบายประกอบเป็น 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 ด้วย Modifier.animateItemPlacement() (Ib6621, b/211753218)
  • ตอนนี้ BringIntoViewRequester จะส่งต่อคำขอไปยัง Android View ที่โฮสต์ (Ia7a51)
  • FontFamilyResolver พร้อมให้บริการแล้วผ่าน LocalFontFamilyResolver.current
    • เพิ่ม createFontFamilyResolver(context) และ createFontFamilyResolver(context, coroutineScope) เพื่อสร้างตัวแก้ไข FontFamily ใหม่นอกเหนือจากการใช้งาน Compose
    • ตอนนี้ Paragraph และ MultiParagraph ใช้ FontFamily.Resolver
    • TextLayoutResult.layoutInput.fontFamilyResolver มี รีโซลเวอร์ที่ใช้สำหรับเลย์เอาต์นี้ ซึ่งเลิกใช้งานแล้ว TextLayoutResult.layoutInput.resourceLoader เนื่องจากไม่ได้ใช้แล้ว (Id5a45, b/174162090)
  • เพิ่ม AndroidFont ซึ่งเป็น API ระดับต่ำตัวใหม่สำหรับระบุตัวอธิบายทรัพยากรแบบอักษรประเภทใหม่ใน Android เช่น การโหลดแบบอักษรจาก แบ็กเอนด์เฉพาะแอป การค้นหาแบบอักษรที่ติดตั้งไว้ล่วงหน้า ในอุปกรณ์ หรือการโหลดแบบอักษรจากทรัพยากรที่ไม่ได้มาจาก โรงงานแบบอักษรปัจจุบัน
    • ขยาย Font.ResourceLoaded API เพื่อรองรับการโหลดแบบไม่พร้อมกันและแบบไม่บังคับ ของแบบอักษร เราไม่แนะนำให้นักพัฒนาแอปพลิเคชันใช้ API นี้โดยตรง หากต้องการเพิ่มแบบอักษรประเภทใหม่ โปรดดู AndroidFont
    • ฟังก์ชันส่วนขยาย Font.AndroidResourceLoader อนุญาต การสร้าง Font.ResourceLoader เมื่ออยู่นอกองค์ประกอบ
    • เพิ่มพารามิเตอร์ loadingStrategy ลงในแบบอักษรที่อิงตามทรัพยากรเพื่อให้โหลดแบบอะซิงโครนัสได้เมื่อการอ้างอิงแบบอักษรของทรัพยากรเป็น XML ของแบบอักษรที่ดาวน์โหลดได้ (Ie5aea, b/174162090)
  • เราเลิกใช้งานเครื่องมือสร้าง Typeface(FontFamily) แล้ว ซึ่งก่อนหน้านี้ใช้เพื่อโหลดแบบอักษรไว้ล่วงหน้า ซึ่งอาจใช้เวลาไม่เกิน 10 วินาทีสำหรับ แบบอักษรที่ดาวน์โหลดได้ หากใช้แบบอักษรที่ดาวน์โหลดได้ การเรียกนี้อาจถูกบล็อกเป็นเวลา 10 วินาที ให้ใช้ FontFamilyResolver.preload แทน
    • fontResource(FontFamily): Typeface เลิกใช้งานแล้ว ซึ่งก่อนหน้านี้ใช้เพื่อโหลดแบบอักษรไว้ล่วงหน้า ซึ่งอาจใช้เวลาไม่เกิน 10 วินาทีสำหรับ แบบอักษรที่ดาวน์โหลดได้ ให้ใช้ FontFamilyResolver.preload (If8e7c, b/174162090) แทน
  • ตอนนี้คุณระบุประเภทเนื้อหาสำหรับรายการของฟังก์ชัน LazyVerticalGrid - item/items ได้แล้วใน LazyGridScope ซึ่งตอนนี้ยอมรับพารามิเตอร์ดังกล่าวแล้ว การให้ข้อมูลดังกล่าวจะช่วยให้ตรรกะการนำองค์ประกอบของไอเทมกลับมาใช้ซ้ำมีประสิทธิภาพมากขึ้น และนำเนื้อหาระหว่างไอเทมประเภทเดียวกันกลับมาใช้ซ้ำเท่านั้น (I7b355, b/215372836)
  • ตอนนี้ LazyListLayoutInfo และ LazyGridLayoutInfo มีพร็อพเพอร์ตี้ใหม่แล้ว ได้แก่ viewportSize, orientation, reverseLayout (Ifc8ed, b/200920410)
  • ตอนนี้คุณระบุประเภทเนื้อหาสำหรับรายการของฟังก์ชัน LazyColumn/LazyRow - item/items ใน LazyListScope ได้แล้ว เนื่องจากฟังก์ชันดังกล่าวยอมรับพารามิเตอร์ดังกล่าวแล้ว การให้ข้อมูลดังกล่าวจะช่วยให้ตรรกะการนำองค์ประกอบของไอเทมกลับมาใช้ซ้ำมีประสิทธิภาพมากขึ้น และนำเนื้อหาระหว่างไอเทมประเภทเดียวกันกลับมาใช้ซ้ำเท่านั้น (I26506)
  • ตอนนี้เราเลิกใช้งานเครื่องมือสร้าง SubcomposeLayoutState ที่ยอมรับ maxSlotsToRetainForReuse แล้ว แต่เรามีตัวสร้างใหม่ที่รับ SubcomposeSlotReusePolicy ซึ่งเป็นอินเทอร์เฟซใหม่ที่ช่วยให้ควบคุมได้อย่างละเอียดมากขึ้นว่าจะเก็บช่องใดไว้เพื่อนำกลับมาใช้ใหม่ในอนาคต (I52c4d)
  • เพิ่มตัวแก้ไขสำหรับ WindowInsets ทั้งสำหรับการจัดระยะ และการกำหนดขนาด ซึ่งจะช่วยให้เนื้อหาบางส่วนขยายเข้าไปในพื้นที่ขอบ และยังคงมีเนื้อหาหลักอยู่นอกพื้นที่ขอบ เช่น คุณสามารถใช้ windowInsetsPadding เพื่อเพิ่มระยะขอบให้กับพื้นที่เนื้อหา เพื่อหลีกเลี่ยงพื้นที่ที่อาจถูกบดบังบางส่วนหรือทั้งหมด (Id0395, b/213942085)

การแก้ไขข้อบกพร่อง

  • ตอนนี้ระบบจะเก็บ TextField ไว้เหนือแป้นพิมพ์เมื่อมีการ โฟกัสและแสดงแป้นพิมพ์เมื่อโหมดป้อนข้อมูลแบบนุ่มเป็น 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 (I46f07) ของ Android ได้ง่ายขึ้น

การแก้ไขข้อบกพร่อง

  • เราได้ปรับปรุงลักษณะการทำงานของแว่นขยายสำหรับการเลือกข้อความให้ สอดคล้องกับแว่นขยายของแพลตฟอร์ม (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)
  • เพิ่มonSizeChangedการเรียกกลับไปยังตัวแก้ไขแว่นขยาย (I6879f)
  • ตอนนี้วิดเจ็ตแว่นขยายจะแสดงเมื่อลากแฮนเดิลการเลือกใน SelectionContainer (I30b38, b/139320979)

การแก้ไขข้อบกพร่อง

  • แก้ไขปัญหาTextFieldแฮนเดิลเคอร์เซอร์ไม่ซ่อนเมื่อเลื่อนออกนอกมุมมอง (I14552, b/208883748)

การอัปเดตการขึ้นต่อกัน

  • ตอนนี้ต้องใช้ Kotlin 1.6.10

เวอร์ชัน 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 มีลักษณะการทํางานเหมือนกับ Material Design Components และมีลักษณะการทํางานที่สอดคล้องกันหากคุณใช้ทั้ง View และ Compose การเปลี่ยนแปลงนี้ยังช่วยให้มั่นใจได้ว่าเมื่อคุณสร้าง UI โดยใช้คอมโพเนนต์ Material ของ Compose ระบบจะปฏิบัติตามข้อกำหนดขั้นต่ำสำหรับการช่วยเหลือพิเศษของเป้าหมายการสัมผัส
  • การรองรับ Navigation Rail อย่างเสถียร
  • เปลี่ยน API ที่เคยอยู่ในระยะทดลองจำนวนหนึ่งให้เป็น 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

  • ล้างค่า Null ใน androidx.core.view(I7078a, b/204917439)
  • เพิ่ม API เวอร์ชันทดลองที่อนุญาตให้ใช้ 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 List เคลื่อนไหว มีตัวแก้ไขใหม่พร้อมใช้งานภายใน LazyItemScope ชื่อ Modifier.animateItemPlacement() ตัวอย่างการใช้งาน

      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 มีคอมมิตเหล่านี้

การแก้ไขข้อบกพร่อง

  • ตอนนี้การกระเพื่อมและสัญญาณอื่นๆ จะล่าช้าก็ต่อเมื่ออยู่ภายในคอนเทนเนอร์ 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

  • เพิ่มการโอเวอร์โหลดที่ไม่มีการระบุองค์ประกอบย่อยสำหรับเลย์เอาต์เพื่อปรับปรุงประสิทธิภาพ (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)

การแก้ไขข้อบกพร่อง

  • แก้ไขการรองรับการช่วยเหลือพิเศษสำหรับรายการที่เลื่อนได้ (ทั้งแบบเลซีและ แบบไม่เลซี) เกี่ยวกับการเลื่อน (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 ให้ขึ้นอยู่กับ Kotlin 1.5.30 (I74545)

การเปลี่ยนแปลง API

  • เพิ่มเอฟเฟกต์เรืองแสงสำหรับการเลื่อนแล้ว เพิ่ม API OverScrollConfiguration เวอร์ชันทดลองใหม่เพื่อให้กำหนดค่าเอฟเฟกต์ภาพการเลื่อนเกินได้ ระบุค่าเป็น null เพื่อปิดเอฟเฟกต์การเลื่อนเกิน (I0c304, b/171682480)
  • ตอนนี้ AwaitPointerEventScope มี withTimeout() และ withTimeoutOrNull() แล้ว (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เมธอดที่ ใช้สี่เหลี่ยมผืนผ้าต้นทางและปลายทาง เพื่อใช้พารามิเตอร์ FilterQuality ที่ไม่บังคับ ซึ่งมีประโยชน์สำหรับพิกเซล อาร์ตที่ต้องการให้เป็นพิกเซล เมื่อขยายขนาดสำหรับอาร์ตตามพิกเซล อัปเดต BitmapPainter + Image composable ให้ใช้พารามิเตอร์ FilterQuality ที่ไม่บังคับด้วย (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 Compose 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 และ AGP 7.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 Role และ LiveRegionMode เป็นคลาสอินไลน์ พร้อมตัวสร้างส่วนตัว (Id1890)
  • ระบบจะแปลง KeyboardCapitalization เป็นคลาสในบรรทัด (Id5a1c)
  • เปลี่ยน TextOverflow เป็นคลาสอินไลน์ (I433af)

การแก้ไขข้อบกพร่อง

  • ตอนนี้เมื่อคุณระบุคีย์ที่ไม่ซ้ำกันสำหรับรายการ LazyColumn/Row ระบบจะรักษาตำแหน่งการเลื่อนตามคีย์ ซึ่งหมายความว่าหากคุณเพิ่ม/นำรายการออกก่อนรายการที่มองเห็นได้ในปัจจุบัน ระบบจะเก็บรายการที่มีคีย์ที่ระบุไว้เป็นรายการแรกที่มองเห็นได้ (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 ... กฎเหล่านี้มี 2 รูปแบบเพื่อกำหนดเป้าหมายไปยังเมธอดหรือคลาส

  • กฎของเมธอดจะมีรูปแบบดังนี้

    <FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
    
  • และกฎของชั้นเรียนจะมีรูปแบบดังนี้

    <CLASS_DESCRIPTOR>
    
  • โดย <FLAGS> คืออักขระ H, S และ P อย่างน้อย 1 ตัวเพื่อระบุว่าควรติดแฟล็กวิธีนี้เป็น "มาแรง" "สตาร์ทอัป" หรือ "หลังสตาร์ทอัป" หรือไม่

  • <CLASS_DESCRIPTOR> คือตัวอธิบายสำหรับคลาสที่เมธอดเป้าหมายเป็นของ เช่น คลาส androidx.compose.runtime.SlotTable จะมีตัวอธิบายเป็น Landroidx/compose/runtime/SlotTable;

  • <METHOD_SIGNATURE> คือลายเซ็นของเมธอด ซึ่งรวมถึงชื่อ ประเภทพารามิเตอร์ และประเภทการคืนค่าของเมธอด เช่น เมธอด fun isPlaced(): Boolean ใน LayoutNode มีลายเซ็น isPlaced()Z

  • รูปแบบเหล่านี้มีไวลด์การ์ด (**, * และ ?) ได้เพื่อให้กฎเดียวครอบคลุมหลายเมธอดหรือคลาส

กฎมีหน้าที่อะไร

  • เมธอดที่มีแฟล็ก H แสดงว่าเมธอดนี้เป็นเมธอด "ยอดนิยม" และควรคอมไพล์ล่วงหน้า

  • เมธอดที่มีแฟล็ก S แสดงว่าเป็นเมธอดที่เรียกใช้เมื่อเริ่มต้น และควรคอมไพล์ล่วงหน้าเพื่อหลีกเลี่ยงค่าใช้จ่ายในการคอมไพล์และตีความเมธอดเมื่อเริ่มต้น

  • เมธอดที่มีแฟล็ก P แสดงว่าเป็นเมธอดที่เรียกใช้หลังจากเริ่มต้น

  • คลาสที่มีอยู่ในไฟล์นี้บ่งบอกว่ามีการใช้คลาสดังกล่าวในระหว่างการเริ่มต้นระบบ และควรจัดสรรล่วงหน้าในฮีปเพื่อหลีกเลี่ยงค่าใช้จ่ายในการโหลดคลาส

ระบบนี้ทำงานอย่างไร

  • ไลบรารีสามารถกำหนดกฎเหล่านี้ซึ่งจะรวมอยู่ในอาร์ติแฟกต์ AAR เมื่อสร้างแอปที่มีอาร์ติแฟกต์เหล่านี้ ระบบจะผสานรวมกฎเหล่านี้เข้าด้วยกันและใช้กฎที่ผสานรวมเพื่อสร้างโปรไฟล์ ART แบบไบนารีขนาดกะทัดรัดที่เฉพาะเจาะจงสำหรับแอปนั้นๆ จากนั้น ART จะใช้ประโยชน์จากโปรไฟล์นี้เมื่อติดตั้งแอปในอุปกรณ์เพื่อคอมไพล์ล่วงหน้าซึ่งเป็นชุดย่อยที่เฉพาะเจาะจงของแอปพลิเคชันเพื่อปรับปรุงประสิทธิภาพของแอปพลิเคชัน โดยเฉพาะการเรียกใช้ครั้งแรก โปรดทราบว่าการดำเนินการนี้จะไม่มีผลกับแอปพลิเคชันที่แก้ไขข้อบกพร่องได้

เวอร์ชัน 1.0.0-beta08

2 มิถุนายน 2021

androidx.compose.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 เป็นคลาสแบบอินไลน์เพื่อหลีกเลี่ยง ปัญหาเกี่ยวกับคำสั่ง when ที่ครอบคลุมเมื่อ มีการเพิ่มค่า enum ใหม่ (I2b5eb)
  • เพิ่มการหมดเวลาการแตะไปยังองค์ประกอบที่คลิกได้ / สลับได้เพื่อป้องกันไม่ให้แสดงเอฟเฟกต์ระลอกระหว่างการเลื่อน / ลาก (Ia2704, b/168524931)
  • พร็อพเพอร์ตี้ ContentDescription และ Text semantics จะไม่ใช่ค่าเดียวอีกต่อไป แต่จะเป็นรายการ ซึ่งจะช่วยให้ผสานรวมได้โดยไม่ต้องต่อกัน นอกจากนี้ ยังมี 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.consumePositionChange ในการเรียกกลับ onDrag (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 ที่ส่งผลต่อแถว/คอลัมน์ที่ใช้การจัดเรียง spacedBy เพื่อจัดวางองค์ประกอบย่อยที่มีการถ่วงน้ำหนัก (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 เพิ่มฟังก์ชันยูทิลิตี addTtsAnnotation และ withAnnotation ลงใน 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 แทนที่จะเลื่อนไปจนสุดของ เลื่อนได้ ตอนนี้จะเลื่อนทีละหน้าจอในทิศทางที่กำหนด (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 และ showSoftwareKeyboard ใน SoftwareKeyboardController เป็น hide() และ show() ตามลำดับ
    • ระบุอินเทอร์เฟซ CompositionLocal แบบเต็มสำหรับ LocalSoftwareKeyboardController เพื่อให้ตั้งค่าได้ (มีประโยชน์อย่างยิ่งในการทดสอบ) (I579a6)
  • TextOverflow.Visible เปิดตัว (Ic8f89)
  • เราได้นำอินสแตนซ์สาธารณะของ RowScope, ColumnScope, BoxScope, BoxWithConstraintsScope ออกแล้ว (I4e83e, b/181869067)

การแก้ไขข้อบกพร่อง

  • แก้ไขปัญหาเมื่อวางตำแหน่งไอเทมของ LazyColumn/LazyRow ที่อยู่บริเวณขอบไม่ถูกต้องหลังจากปัดอย่างรวดเร็ว (Ie4d13, b/183877420)
  • ก่อนการเปลี่ยนแปลงนี้ ฟังก์ชันที่ใช้ร่วมกันได้ในเครื่องจะข้ามได้ตามพารามิเตอร์ หลังจากการเปลี่ยนแปลงนี้ ฟังก์ชันที่ใช้ร่วมกันได้ในเครื่องจะไม่ข้าม การเปลี่ยนแปลงนี้เกิดขึ้นเนื่องจากฟังก์ชันในเครื่องมักจะดึงพารามิเตอร์จากฟังก์ชันหลัก และการข้ามพารามิเตอร์ดังกล่าวเป็นแหล่งที่มาของข้อบกพร่องที่พบบ่อย

    โดยสรุป ให้พิจารณาตัวอย่างต่อไปนี้

    @Composable fun Counter(count: Int, onCountChange: (Int) -> Unit) {
      @Composable fun ShowCount() { Text("Count: $count") }
      ShowCount()
      Button(onClick={ onCountChange(count + 1) }) {
        Text("Increment")
      }
    }
    

    ก่อนการเปลี่ยนแปลงนี้ 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)
  • เพิ่ม LocalSoftwareKeyboardControllerAPI การเขียนในเครื่อง ใหม่เพื่อแทนที่อินเทอร์เฟซ SoftwareKeyboardController ก่อนหน้าใน TextField (I5951e, b/168778053)
  • เพิ่ม LocalSoftwareKeyboardControllerAPI การเขียนในเครื่อง ใหม่เพื่อแทนที่อินเทอร์เฟซ SoftwareKeyboardController ก่อนหน้าใน TextField (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

  • เพิ่ม Callback onStart ไปยัง detectDragGestures แล้ว (I67269, b/179995594)
  • ตัวแก้ไขสำหรับการปรับขนาดให้ตรงกับขนาดที่แท้จริงไม่ได้อยู่ในขั้นทดลองอีกต่อไป (I15744)
  • นำการยืนยัน dp ออก (I798d2)
  • นำการเรียกกลับ SoftwareKeyboardController ออกจากฟิลด์ข้อความทั้งหมด เพื่อแทนที่ด้วย API ใหม่ในเร็วๆ นี้ (Iae869, b/168778053)
  • เราเปลี่ยนชื่อ MeasureBlocks เป็น MeasurePolicy ซึ่งกลายเป็นอินเทอร์เฟซที่สนุกสนาน เราได้อัปเดต / ลดความซับซ้อนของ Layout API เพื่อให้ใช้ MeasurePolicy ได้ (Icab48, b/167662468, b/156751158)
  • InteractionState ถูกแทนที่ด้วย [Mutable]InteractionSource แล้ว
    • อินเทอร์เฟซมีหน้าที่ในการปล่อย / รวบรวมเหตุการณ์การโต้ตอบ
    • ใช้ interactionSource = remember { MutableInteractionSource() } แทนการส่ง interactionState = remember { InteractionState() } ไปยังคอมโพเนนต์ เช่น Button และ Modifier.clickable()
    • แทนที่จะเป็น: Interaction.Pressed in interactionState คุณควรใช้ฟังก์ชันส่วนขยายใน InteractionSource แทน เช่น InteractionSource.collectIsPressedAsState()
    • สำหรับกรณีการใช้งานที่ซับซ้อน คุณสามารถใช้ InteractionSource.interactions เพื่อสังเกตสตรีมของการโต้ตอบได้ ดูข้อมูลเพิ่มเติมได้ในเอกสารประกอบและตัวอย่าง InteractionSource
    • (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
  • นำเมธอด LayoutCoordinates ที่เลิกใช้งานแล้วออก ให้ใช้ฟังก์ชันแทนพร็อพเพอร์ตี้สำหรับ positionInParent และ boundsInParent (I580ed, b/169874631, b/175142755)
  • สร้าง TextInputSession ใหม่สำหรับเซสชันอินพุตจากคอมโพเนนต์ข้อความระดับต่ำ เช่น CoreTextField (I8817f, b/177662148)
  • ตอนนี้ Placeable จะแสดง measuredSize ซึ่งแสดงถึงขนาดที่เลย์เอาต์ย่อยวัดจริง ขนาดนี้อาจไม่เป็นไปตามข้อจำกัดในการวัด (Ib2729, b/172560206, b/172338608)
  • เพิ่มตัวแก้ไข selectionGroup ที่อนุญาตให้ทำเครื่องหมายคอลเล็กชันของแท็บหรือ RadioButton เพื่อวัตถุประสงค์ในการช่วยเหลือพิเศษ (Ie5c29)
  • เพิ่ม LazyListState.animateScrollToItem

    เมธอดนี้จะเลื่อนรายการในลิสต์อย่างราบรื่นไปยังรายการที่เฉพาะเจาะจง (I4bfd7)

  • เปลี่ยนชื่อ ScrollableState.smoothScrollBy() เป็น animateScrollBy() เปลี่ยนชื่อ LazyListState.snapToItemIndex() เป็น scrollToItem() เปลี่ยนชื่อ ScrollState.smoothScrollTo() เป็น animateScrollTo() (I35ded)

  • Modifier.zoomable ถูกแทนที่ด้วย Modifier.transformable แล้ว และมีการเพิ่ม smoothPanBy, smoothRotationBy เป็นฟังก์ชันการทำงาน (Ifc32b, b/175294473)

  • ตอนนี้คุณต้องระบุ defaultFactory สำหรับ compositionLocalOf และ staticCompositionLocalOf แทนที่จะระบุหรือไม่ก็ได้

    การเปลี่ยนแปลงนี้จะนำข้อผิดพลาดเกี่ยวกับประเภทที่อาจเกิดขึ้นสำหรับประเภทที่ไม่ใช่ Nullable ที่ไม่ได้ระบุ Factory เริ่มต้นออก ก่อนหน้านี้ จะให้การอ้างอิงเป็น Null สำหรับประเภทที่กำหนดให้ต้องมีค่า

    สำหรับประเภทที่กำหนดให้เป็น Null ได้ ให้พิจารณาใส่ { null } เป็นค่าเริ่มต้น factory

    เราไม่แนะนำให้ใช้ locales กับประเภทที่กำหนดให้ต้องมีค่า เว้นแต่จะระบุค่าเริ่มต้นที่เหมาะสมได้ หากไม่มีค่าเริ่มต้นที่เหมาะสม Lambda defaultFactory ควรส่งข้อยกเว้น อย่างไรก็ตาม การส่งข้อยกเว้นหมายความว่าผู้บริโภคของภาษาจะมี การอ้างอิงโดยนัยถึงการระบุภาษาดังกล่าว ซึ่งระบบประเภทไม่ได้บังคับ (Ifbd2a)

  • เปลี่ยน Indication#createIndication() เป็น Indication#rememberUpdatedIndication(InteractionState) และนำพารามิเตอร์ InteractionState ออกจาก IndicationInstance#drawIndication() IndicationInstance ควรมีหน้าที่วาดเอฟเฟ็กต์ภาพเท่านั้น และไม่ควรเปิดภาพเคลื่อนไหว / เขียนสถานะเพื่อตอบสนองต่อการเปลี่ยนแปลง InteractionState ภาพเคลื่อนไหวและการเขียนสถานะเหล่านี้ควรเกิดขึ้นภายใน rememberUpdatedIndication() แทน นอกจากนี้ เรายังเปลี่ยนพารามิเตอร์ indication ใน Modifier.indication ให้เป็นพารามิเตอร์ที่ต้องระบุด้วย (Ic1764, b/152525426)

  • ตอนนี้การดำเนินการกับข้อความจะตรวจสอบโฟกัสโดยอัตโนมัติ (I13777, b/179648629)

  • นำออก runBlockingWithManualClock (I15cdc, b/179664814)

  • ตอนนี้ตำแหน่งการเลื่อนใน Modifier.verticalScroll()/horizontalScroll() จะแสดงด้วย Ints (I81298)

  • เปลี่ยนแพ็กเกจของเมธอด smoothScrollBy และ scrollBy เป็น androidx.compose.foundation.gestures.* (I3f7c1, b/175294473)

  • เราได้เปลี่ยนชื่อ FlingConfig เป็น FlingBehavior แล้ว ซึ่งตอนนี้อนุญาตให้ปรับแต่งภาพเคลื่อนไหวระงับแทนการลดทอนที่กำหนดไว้ล่วงหน้า (I02b86, b/175294473)

  • มีการเปลี่ยนชื่อตัวแก้ไขขนาด เปลี่ยนชื่อ Modifier.width/height/size เป็น requiredWidth/requiredHeight/requiredSize เราเปลี่ยนชื่อ Modifier.preferredWidth/preferredHeight/preferredSize เป็น width/height/size (I5b414)

  • เปลี่ยนชื่อ defaultMinSizeConstraints เป็น defaultMinSize (I4eaae)

  • นำ Modifier.tapGestureFilter ออกแล้ว โปรดใช้ Modifier.pointerInput { detectTapGestures(...) } แทน (I266ed, b/175294473)

  • นำการใช้งานบางส่วนออกจากระบบอินพุตของเคอร์เซอร์ วิธีที่แนะนำในการประสานการใช้งานบางส่วนคือ Modifier.nestedScroll (Ie9c9b)

  • ย้ายการปฐมนิเทศไปไว้ในแพ็กเกจพื้นฐานแล้ว VelocityTracker ย้ายจาก ui.gesture ไปยัง ui.input.pointer (Iff4a8, b/175294473)

  • เราได้นำ AnimationClockObservable และคลาสย่อยออกแล้ว นำ AnimatedFloat ออกแล้ว (Icde52, b/177457083)

  • ตอนนี้ drawerState.open() และ drawerState.close() เป็นฟังก์ชันที่ระงับแล้ว ใช้ rememberCoroutineScope() เพื่อรับขอบเขตของการจัดองค์ประกอบเพื่อเรียกใช้ (I16f60, b/175294473)

  • เปลี่ยนชื่อ Providers เป็น CompositionLocalProvider แล้ว

    • ตัวสร้างองค์ประกอบไม่รับพารามิเตอร์คีย์อีกต่อไปและเลิกใช้งานแล้ว
    • currentCompositeKeyHash ได้รับการเปลี่ยนให้เป็นพร็อพเพอร์ตี้ระดับบนสุดที่ประกอบกันได้แทนที่จะเป็นฟังก์ชันระดับบนสุดที่ประกอบกันได้
    • ย้าย CompositionData และ CompositionGroup ไปยังเนมสเปซ androidx.compose.runtime.tooling แล้ว
    • เราได้เปลี่ยน ComposableLambda ให้เป็นอินเทอร์เฟซแทนที่จะเป็นคลาสที่เฉพาะเจาะจง และไม่มีพารามิเตอร์ประเภทอีกต่อไป
    • เราได้เปลี่ยน ComposableLambdaN ให้เป็นอินเทอร์เฟซแทนที่จะเป็นคลาสที่เฉพาะเจาะจง และไม่มีพารามิเตอร์ประเภทอีกต่อไป
    • ฟังก์ชัน snapshotFlow ย้ายไปที่เนมสเปซ androidx.compose.runtime แล้ว
    • วิธีการผสานของ SnapshotMutationPolicy ไม่ใช่เวอร์ชันทดลองอีกต่อไป
    • ระบบได้นำฟังก์ชัน @TestOnly clearRoots ระดับบนสุดออกแล้ว ไม่จำเป็นต้องทำอีกต่อไป
    • ระบบได้นำฟังก์ชัน keySourceInfoOf และ resetSourceInfo ออกแล้ว จึงไม่จำเป็นต้องใช้แล้ว
    • มีการนำ Composer.collectKeySourceInformation ออกแล้ว ไม่จำเป็นต้องทำอีกต่อไป
    • นำเมธอด isJoinedKey, joinedKeyLeft และ joinedKeyRight ออกแล้ว จึงไม่จำเป็นต้องใช้แล้ว
    • เราได้ย้ายและจัดระเบียบ API ระดับบนสุดต่างๆ ไปยังไฟล์อื่น เนื่องจากความหมายของคลาสไฟล์ของ Kotlin การดำเนินการนี้จะทำให้ความเข้ากันได้แบบไบนารีใช้งานไม่ได้ แต่ความเข้ากันได้ของแหล่งที่มาจะยังคงใช้งานได้ ดังนั้นผู้ใช้ส่วนใหญ่จึงไม่น่าจะพบปัญหา
    • (I99b7d, b/177245490)
  • เราได้ปรับปรุง Modifier.scrollable ใหม่ ตอนนี้ใช้ Scrollable interface แทนคลาส 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)

การแก้ไขข้อบกพร่อง

  • เพิ่มองค์ประกอบ LocalSoftwareKeyboardController ใหม่ API เพื่อแทนที่อินเทอร์เฟซ SoftwareKeyboardController ก่อนหน้าใน TextField (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 ต้องใช้คีย์ remember เพื่อระบุ เมื่อควรเริ่มคอรเราทีนการตรวจหาอินพุตของเคอร์เซอร์ใหม่สำหรับ การอ้างอิงใหม่ (I849cd)
  • การอัปเดตการทดสอบ: hasText() จะตรวจสอบทั้งข้อความอินพุตและข้อความป้ายกำกับ/คำแนะนำ/ตัวยึดตำแหน่งในช่องข้อความ (Iab803)
  • มีการเพิ่ม PaddingValues.Absolute และสามารถใช้ใน API ที่ยอมรับ PaddingValues ได้ (Ia5f30)
  • เลิกใช้งาน onImeActionPerformed แล้ว ให้ใช้ KeyboardActions แทน (If0bbd, b/179071523)
  • เราได้เปลี่ยนชื่อ ImagePainter เป็น BitmapPainter เพื่อให้สอดคล้องกับ VectorPainter มากขึ้น และเพื่อให้การตั้งชื่อเป็นไปตาม รูปแบบการตั้งชื่อของ ImageBitmap และ ImageVector (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)
  • เราได้นำเมธอด Destructuring และ copy() ออกจาก คลาสหลายคลาสซึ่งไม่ค่อยมีการใช้งาน (I26702, b/178659281)
  • เพิ่มการรองรับคีย์ที่กำหนดเองสำหรับ LazyColumn/LazyRow แล้ว ซึ่งจะช่วยให้เราจัดการการเรียงลำดับรายการใหม่ได้อย่างชาญฉลาดยิ่งขึ้น ดังนั้น สถานะที่คุณจัดเก็บไว้ในบล็อก remember {} จะย้ายไปพร้อมกับรายการเมื่อคุณเรียงลำดับองค์ประกอบใหม่หรือนำรายการออกจากตรงกลาง

    LazyColumn {
        items(users, key = { user -> user.id }) { ... }
    }
    
  • เปลี่ยน Indication#createInstance เป็น @Composable และเปลี่ยน LocalIndication ให้มี Indication ไม่ใช่ () -> Indication (I5eeea, b/157150564)

  • Constraints.enforce ถูกแทนที่ด้วย Constraints.constrain (I8b8ea)

  • เลิกใช้งาน loadFontResource แล้ว โปรดใช้ fontResource แทน เลิกใช้งาน imageResource, loadImageResource, vectorResource และ loadVectorResource แล้ว ใช้ painterResource แทน (I6b809)

  • ตอนนี้ความหมายของ ScrollAxisRange จะใช้ Lambda ที่แสดงผล Float แทนค่า Float โดยตรงเพื่อเหตุผลด้านประสิทธิภาพ (If4a35, b/178657186)

  • เพิ่มซีแมนทิก EditableText เพื่อทำเครื่องหมายข้อความอินพุตที่แก้ไขได้ของช่องข้อความเพื่อการช่วยเหลือพิเศษ และเพิ่มวิธีการทดสอบที่เกี่ยวข้องเพื่อตรวจสอบซีแมนทิก (I8e07a)

  • ตอนนี้ Modifier.clickable ไม่รองรับการคลิก 2 ครั้งและการคลิกแบบยาวแล้ว ใช้ Modifier.combinedClickable เพื่อให้ได้ฟังก์ชันนี้ (Iafad1)

  • เปลี่ยนชื่อ toIntPx() เป็น roundToPx() (I9b7e4, b/173502290)

  • เปลี่ยนชื่อ IntBounds เป็น IntRect และปรับปรุง API (I1f6ff)

  • เลิกใช้งาน Modifier.dragGestureFilter แล้ว โปรดใช้ Modifier.pointerInput { detectDragGestures (...)} แทน หรือจะใช้ Modifier.draggable สำหรับการลากแกนเดียวก็ได้ (I0ba93, b/175294473)

  • เปลี่ยนชื่อ Ambients ให้ตรงกับการเปลี่ยนชื่อ Ambient -> CompositionLocal เดิมชื่อของ Ambients คือ AmbientFoo แต่ตอนนี้ชื่อของ CompositionLocals คือ LocalFoo (I2d55d)

  • ย้ายการเลือกไปยังมูลนิธิแล้ว (I7892b)

  • เช่นเดียวกับที่เราเคยนำ state { 0 } composable ออกไปก่อนหน้านี้และตอนนี้เราแนะนำให้ใช้ remember { mutableStateOf(0) } เราจะนำ savedInstanceState { 0 } composable ออก คุณควรใช้ rememberSaveable { mutableStateOf(0) } แทน และระบบจะบันทึกและกู้คืนโดยอัตโนมัติหากจัดเก็บประเภทที่ใช้ภายใน MutableState ไว้ใน Bundle ได้ หากก่อนหน้านี้คุณส่งออบเจ็กต์ Saver ที่กำหนดเอง ตอนนี้คุณต้องใช้การโอเวอร์โหลดใหม่ของ rememberSaveable ซึ่งมีพารามิเตอร์ stateSaver การใช้งานจะมีลักษณะดังนี้ val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) } (Ib4c26, b/177338004)

  • เพิ่มความหมายของรหัสผ่านเพื่อการช่วยเหลือพิเศษ (I231ce)

  • เพิ่ม ProgressBarRangeInfo.Indeterminate เพื่อทำเครื่องหมายแถบความคืบหน้าที่ไม่แน่นอนเพื่อการช่วยเหลือพิเศษ (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)

  • ตอนนี้คุณปิด Recomposers ได้แล้ว Recomposer ที่ปิดอยู่จะ ทำการ Recomposition ต่อไปจนกว่าโคโรทีนของ Composable ลูกจะเสร็จสมบูรณ์ เปลี่ยนชื่อ Recomposer.shutDown เป็น cancel เพื่อให้แตกต่างจาก close (Ib6d76)

  • API ที่เกี่ยวข้องกับ LazyVerticalGrid จะมีเครื่องหมายว่าเป็นการทดลอง (Ia53e3, b/178519862)

  • เราได้เปลี่ยนชื่อ rememberSavedInstanceState() เป็น rememberSaveable() และย้ายไปยังแพ็กเกจ androidx.compose.runtime.saveable (I1366e, b/177338004)

  • เราได้เปลี่ยนชื่อ RestorableStateHolder เป็น SaveableStateHolder และย้ายไปยังแพ็กเกจ androidx.compose.runtime.saveable เราได้เปลี่ยนชื่อเมธอดภายใน RestorableStateProvider เป็น SaveableStateProvider ระบบนำประเภททั่วไปออกเพื่อให้คุณส่ง Any เป็นคีย์ได้ ไม่จำเป็นต้องใช้คำอธิบายประกอบเวอร์ชันทดลองอีกต่อไป (I0902e, b/174598702)

  • ย้าย Saver, 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 อยู่ใน compose: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 แล้ว โปรดใช้ Animatable แทน (I71345, b/177457083)

    • นำ CoreText และ CoreTextField ออกจาก API สาธารณะ
    • นำการโอเวอร์โหลด SelectionContainer ที่เลิกใช้งานแล้วออก (I99c19)
  • นำฟังก์ชันการเลื่อนที่ไม่ระงับที่เลิกใช้งานแล้วออก การเปลี่ยนแปลงจากรุ่นที่แล้วจะดำเนินต่อไป โดยตอนนี้ระบบได้นำฟังก์ชันการเลื่อนที่ไม่ระงับออกทั้งหมดแล้ว โปรดแปลงเป็นฟังก์ชันระงับ ที่มีชื่อเดียวกัน โดยจะรับขอบเขตของโครูทีนได้ผ่าน rememberCoroutineScope() (I3d39c, b/178169563)

  • เลิกใช้งาน androidx.compose.foundation.layout.ConstraintLayout แล้วเพื่อใช้ androidx.constraintlayout.compose.ConstraintLayout แทน คุณจะต้องเพิ่มทรัพยากร Dependency ใน androidx.constraintlayout:constraintlayout-compose:1.0.0-alpha01 (I87adc)

  • เลิกใช้งาน tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter และ pressIndicaitonGestureFilter แล้ว โปรดใช้ Modifier.clickable หรือ Modifier.pointerInput กับฟังก์ชัน detectTapGestures แทน (I6baf9, b/175294473)

  • นำ Recomposer.current() ออกแล้ว [Abstract]ComposeView now default to lazily created, window-scoped Recomposers driven by the ViewTreeLifecycleOwner for the window. ระบบจะหยุดการสร้างใหม่และเครื่องหมายภาพเคลื่อนไหวตาม withFrameNanos ชั่วคราวขณะที่หยุดวงจรการทำงานของโฮสต์ (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

  • เลิกใช้งาน scrollBy ที่ไม่ระงับ และนำ scrollTo ที่ไม่ระงับออก

    ตอนนี้เราขอแนะนำให้ใช้ฟังก์ชันระงับเพื่อควบคุมการเลื่อนและรอให้การเลื่อนเสร็จสิ้น เราจะเลิกใช้งานและ/หรือนำฟังก์ชันเวอร์ชันที่ไม่ใช่แบบระงับออก ซึ่งเป็นส่วนหนึ่งของการเปลี่ยนผ่านนี้ (Ie9ced)

  • เลิกใช้งาน smoothScrollBy ที่ไม่ใช่แบบระงับ ตอนนี้เราขอแนะนำให้ใช้ฟังก์ชันระงับเพื่อควบคุมการเลื่อนและรอ ให้การเลื่อนเสร็จสิ้น เราจะเลิกใช้งานฟังก์ชันเวอร์ชันที่ไม่ระงับ ของฟังก์ชันเหล่านี้ซึ่งเป็นส่วนหนึ่งของการเปลี่ยนผ่านนี้ (I12880)

  • เพิ่มพารามิเตอร์คำอธิบายเนื้อหาลงในรูปภาพและไอคอนแล้ว ใช้เพื่ออธิบายบริการการช่วยเหลือพิเศษ (I2ac4c)

  • BasicTextField ได้รับพารามิเตอร์ใหม่ที่ชื่อ "decorationBox" ซึ่งช่วยให้เพิ่มการตกแต่งต่างๆ เช่น ไอคอน ตัวยึดตำแหน่ง ป้ายกำกับ และอื่นๆ ที่คล้ายกับช่องข้อความ รวมถึงเพิ่มพื้นที่เป้าหมายการแตะของช่องข้อความได้ (I16996)

  • นำพารามิเตอร์ canDrag ออกจาก Modifier.draggable (Ic4bec, b/175294473)

  • นำ AnimatedFloat.fling ที่ยอมรับ FlingConfig ออกแล้ว โปรดใช้ suspend Animatable.animateDecay แทน (I4659b, b/177457083)

  • นำ data class ออกจากชั้นเรียนต่อไปนี้

    • InlineTextContent
    • LocaleList
    • (I605c7)
  • ตอนนี้คุณสร้างองค์ประกอบที่คลิกได้ สลับได้ และเลือกได้ภายนอกองค์ประกอบได้แล้ว (I0a130, b/172938345, b/175294473)

  • เลิกใช้งาน ScrollableColumn/Row แล้ว การใช้ ScrollableColumn มีประสิทธิภาพน้อยกว่าเมื่อเทียบกับ LazyColumn เมื่อมีเนื้อหาที่เลื่อนได้จำนวนมาก เนื่องจาก LazyColumn จะคอมโพส/วัด/วาดเฉพาะองค์ประกอบที่มองเห็นได้ เพื่อป้องกันไม่ให้ผู้ใช้ใช้วิธีที่ไม่มีประสิทธิภาพ เราจึงตัดสินใจเลิกใช้งาน ScrollableColumn และ ScrollableRow แล้วแนะนำให้ใช้ LazyColumn และ LazyRow แทน ผู้ใช้ยังคงเลือกได้ว่าจะไม่ใช้ลักษณะการทำงานแบบเลซี่และใช้ตัวแก้ไขโดยตรงได้ดังนี้ Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b, b/170468083)

  • items(count: Int)เมธอด Factory ใหม่สำหรับขอบเขตของ LazyColumn/LazyRow/LazyVerticalGrid ตอนนี้ items(items: List) และ itemsIndexed(items: List) เป็นฟังก์ชันส่วนขยายแล้ว คุณจึงต้องนําเข้าด้วยตนเองเมื่อใช้งาน การโอเวอร์โหลดส่วนขยายใหม่สำหรับอาร์เรย์: items(items: Array) และ itemsIndexed(Array) (I803fc, b/175562574)

  • นำ AbsoluteArrangement ที่เลิกใช้งานแล้วออก (Iffa96, b/177641870)

  • เราได้เพิ่มพารามิเตอร์ propagateMinConstraints ลงใน Box เพื่อระบุว่าควรส่งข้อจำกัดขั้นต่ำที่เข้ามาไปยังเนื้อหาของ Box หรือไม่ ค่าเริ่มต้นคือ False (I0125b, b/152613457)

การแก้ไขข้อบกพร่อง

  • onCommit, onDispose และ onActive ถูกเลิกใช้งานแล้วเพื่อรองรับ SideEffect และ DisposableEffect API (If760e)
  • เราได้ปรับปรุง WithConstraints เป็น BoxWithConstraints และย้ายไปที่ foundation.layout (I9420b, b/173387208)
  • การเปลี่ยนแปลงฟังก์ชันโรงงานสำหรับ Font/FontFamily/Typeface

    • เพิ่มฟังก์ชัน Factory ที่ขึ้นต้นด้วยตัวพิมพ์ใหญ่
    • เลิกใช้งานฟังก์ชันโรงงานก่อนหน้าที่มีตัวอักษรตัวแรกเป็นตัวพิมพ์เล็ก
    • ฟังก์ชัน Factory ใหม่จะแสดงผล FontFamily แทน คลาสย่อย
    • ซ่อนตัวสร้างของคลาสย่อยเพื่อให้สร้างได้ผ่านฟังก์ชัน Factory เท่านั้น
    • เปลี่ยนชื่อ Font.asFontFamily เป็น Font.toFontFamily
    • (I42aa7)
  • เปิดตัว ComposeContentTestRule ซึ่งขยาย ComposeTestRule และกำหนด setContent ซึ่งถูกนำออกจาก ComposeTestRule เพิ่มเมธอดจากโรงงาน createEmptyComposeRule() ซึ่งจะแสดงผล ComposeTestRule และไม่เปิดใช้กิจกรรมให้คุณ ใช้เมื่อต้องการเปิดใช้กิจกรรมระหว่างการทดสอบ เช่น ใช้ ActivityScenario.launch (I9d782, b/174472899)

  • ตอนนี้ animateAsState คือ animateFooAsState โดยที่ Foo คือ ประเภทของตัวแปรที่กำลังเคลื่อนไหว เช่น Float, Dp, Offset ฯลฯ (Ie7e25)

  • ตอนนี้ความหนาแน่นเป็นขอบเขตตัวรับสำหรับอินเทอร์เฟซการจัดเรียงแล้ว (I18aad)

  • TextFieldValue ยอมรับ AnnotatedString อย่างไรก็ตาม การเปลี่ยนแปลงนี้เป็น การเปลี่ยนแปลง API เท่านั้น และระบบยังไม่ได้ ใช้การแก้ไขข้อความหลายสไตล์

    • นำ initial ออกจากพารามิเตอร์ของตัวสร้าง EditingBuffer (I326d5)
  • ตอนนี้เราเลิกใช้งาน invalidate และ compositionReference() แล้ว และแนะนำให้ใช้ currentRecomposeScope และ rememberCompositionReference แทนตามลำดับ (I583a8)

  • มีการเปลี่ยนแปลง AnnotatedString ให้ขยายจาก kotlin.CharSequence ดังนั้น ตอนนี้ length และ subSequence จึงเป็นฟังก์ชันอินสแตนซ์ และระบบได้นำฟังก์ชันส่วนขยายออกแล้ว (Iaf429)

  • ระบบจะแทนที่ระยะเวลาและเวลาทำงานด้วยมิลลิวินาทีแบบยาว และขั้นตอนนี้จะนำการอ้างอิงอินพุตของเคอร์เซอร์ในคลาสเหล่านั้นออก (Ia33b2, b/175142755, b/177420019)

  • โปรดทราบว่า RememberObserver จะแทนที่ CompositionLifecycleObserver และตอนนี้ CompositionLifecycleObserver เลิกใช้งานแล้ว

    RememberObserver เป็นการแทนที่ CompositionLifecycleObserver โดยมีการแก้ไขความหมายและ เปลี่ยนชื่อเมธอด การเปลี่ยนไปใช้ API ใหม่สามารถทำได้โดยอัตโนมัติ สำหรับออบเจ็กต์ที่ระบบจดจำเพียงครั้งเดียว ซึ่งเป็นแนวทางที่แนะนำและยังคงเป็นแนวทางที่แนะนำ ต่อไป อย่างไรก็ตาม หากมีการจดจำการอ้างอิงมากกว่า 1 ครั้งในองค์ประกอบ onRemembered จะเรียกใช้ สำหรับการอ้างอิงแต่ละรายการโดยที่ onEnter จะเรียกใช้เพียงครั้งเดียว onEnter ถูกเรียกใช้หลายครั้งหากใช้ออบเจ็กต์ในองค์ประกอบย่อย เช่น WithConstraints และ Scaffold ทำให้การเรียกใช้ onEnter ครั้งเดียวไม่น่าเชื่อถือและถูกนำออกสำหรับ RememberObserver

    RememberObserver เพิ่ม onAbandoned ซึ่งจะเรียกใช้หากมีการส่งคืนอินสแตนซ์ RememberObserver จากการเรียกกลับที่ส่งไปยัง remember แต่ไม่ได้จดจำไว้ในสถานะการเรียบเรียง และด้วยเหตุนี้ จึงจะไม่มีการเรียกใช้ onRemembered กรณีนี้อาจเกิดขึ้นหากข้อยกเว้นสิ้นสุดการคอมโพสก่อนที่จะเสร็จสมบูรณ์ หรือระบบทิ้งการคอมโพสเนื่องจากสถานะที่ใช้สร้างการคอมโพสไม่เป็นปัจจุบันอีกต่อไป หรือไม่จำเป็นอีกต่อไป หากอินสแตนซ์ของ RememberObserver ที่ตามคำแนะนำการอ้างอิงเดียวด้านบนติดตามแหล่งข้อมูลภายนอก ทั้ง onForgotten และ onAbandoned จะระบุว่า ไม่จำเป็นต้องใช้แหล่งข้อมูลอีกต่อไป หากออบเจ็กต์ติดตามงานที่เริ่มหรือทรัพยากรที่จัดสรรใน onRemembered คุณสามารถละเว้น onAbandoned ได้เนื่องจากระบบจะไม่เรียกใช้หากเรียกใช้ onRemembered (I02c36)

  • เปลี่ยนชื่อ TransformedText.transformedText เป็น TransformedText.text

    • TransformedText ไม่ใช่คลาสข้อมูลอีกต่อไป (Ie672a)
  • ชั้นเรียนต่อไปนี้ไม่ใช่ชั้นเรียนข้อมูลอีกต่อไป

    • AnnotatedString
    • ParagraphStyle
    • SpanStyle
    • TextStyle
    • FontWeight
    • TextDecoration
    • TextGeometricTransform
    • TextIndex
    • TextLayoutResult
    • TextLayoutInput (Iaff99)
  • นำเมธอด monotonicFrameAnimationClockOf ที่เป็นเวอร์ชันทดลองออกแล้ว (Ib753f, b/170708374)

  • เลิกใช้งานเมธอดพิกัดส่วนกลางและสร้างเมธอดพิกัดใหม่ตามหน้าต่าง (Iee284)

  • โปรดใช้ ImeAction.None แทน ImeAction.NoAction

    • โปรดใช้ ImeAction.Default แทน ImeAction.Unspecified (Ie1bcc)
  • ตอนนี้ FocusRequester.createRefs มีเครื่องหมายระบุว่าอยู่ในขั้นทดลองเนื่องจากอาจมีการเปลี่ยนแปลง (I2d898, b/177000821)

  • เปลี่ยนชื่อ SemanticsPropertyReceiver.hidden เป็น invisibleToUser และทำเครื่องหมาย @ExperimentalComposeUiApi เปลี่ยนชื่อ AccessibilityRangeInfo เป็น ProgressBarRangeInfo เปลี่ยนชื่อ stateDescriptionRange เป็น progressBarRangeInfo เปลี่ยนชื่อ AccessibilityScrollState เป็น ScrollAxisRange เปลี่ยนชื่อ horizontalAccessibilityScrollState เป็น horizontalScrollAxisRange เปลี่ยนชื่อ verticalAccessibilityScrollState เป็น verticalScrollAxisRange (Id3148)

  • เปลี่ยน VisualTransformation ให้เป็นอินเทอร์เฟซที่ใช้งานได้ (I3bba4)

  • ใช้ประโยชน์จาก TestCoroutineDispatcher ในการทดสอบ (I532b6)

  • นำ PointerInputData ออกและแก้ไข PointerInputChange เพื่อให้มีฟิลด์ทั้งหมดของ PointerInputData ทำให้ PointerInputEvent และ 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)
  • การเปลี่ยนแปลง API ของ EditOperations
    • เปลี่ยนชื่อ EditOperation เป็น EditCommand
    • เพิ่มคำต่อท้าย Command สำหรับการติดตั้งใช้งานจริงของ EditOperation
    • EditCommand ไม่ใช่คลาสข้อมูลอีกต่อไป
    • เปลี่ยนชื่อฟังก์ชัน EditOperation.process เป็น applyTo
    • เปลี่ยนชื่อ InputEventListener เป็น InputEventCallback
    • (I0a366)
  • ความเร็วที่แก้ไขแล้วให้มีส่วนประกอบและ การดำเนินการทางคณิตศาสตร์ (Ib0447)
  • เปลี่ยนชื่อ @ExperimentalTesting เป็น @ExperimentalTestApi เพื่อให้ สอดคล้องกับคำอธิบายประกอบ API ทดลองที่คล้ายกัน (Ia4502, b/171464963)
  • เพิ่มเมธอด stickyHeader เวอร์ชันทดลองสำหรับ LazyColumn/LazyRow (I0a81d)
  • เปลี่ยนชื่อ Color.useOrElse() เป็น Color.takeOrElse() (Ifdcf5)
  • เลิกใช้งาน TestUiDispatcher แล้ว ให้ใช้ Dispatchers.Main แทน (Ic171f, b/175385255)
  • เพิ่มสวิตช์ไปยัง foundation Strings.kt (I4a5b7, b/172366489)
  • ย้าย nativeClass ไปยัง โมดูล ui และทำให้เป็นโมดูลภายใน อัปเดตการใช้งาน nativeClass ใน การติดตั้งใช้งาน equals เพื่อใช้ 'is MyClass' แทน (I4f734)
  • เลิกใช้งาน FlowRow และ FlowColumn แล้ว โปรดใช้เลย์เอาต์ที่กำหนดเองแทน (I09027)
  • เลิกใช้งาน Modifier.focus() และ Modifier.focusRequester() แล้ว ใช้ Modifier.focusModifier() และ Modifier.focusReference() แทน (I75a48, b/175160751, b/175160532, b/175077829)
  • เปิดตัว SelectionRegistrar.notifySelectableChange เพื่อแจ้งการอัปเดตที่เลือกได้ไปยัง SelectionManager (I6ff30, b/173215242)
  • เปลี่ยน fun Dp.isFinite() เป็น val Dp.isFinite (I50e00)
  • เปลี่ยนชื่อ Constraints#satisfiedBy เป็น isSatisfiedBy (I9cf5c)
  • เพิ่ม isSpecified, isUnspecified และ useOrElse สำหรับ คลาสอินไลน์ที่มีค่าคงที่ Unspecified (I93f7b, b/174310811)

การแก้ไขข้อบกพร่อง

  • API ใหม่ที่ใช้โครูทีน Animatable ซึ่งรับประกันการแยกกันโดยเด็ดขาด ระหว่างภาพเคลื่อนไหว DecayAnimationSpec ใหม่เพื่อรองรับภาพเคลื่อนไหวแบบลดทอนหลายมิติ (I820f2, b/168014930)
  • เพิ่มการรองรับช่องข้อความที่ปิดใช้และแบบอ่านอย่างเดียว (I35279, b/171040474, b/166478534)
  • ตอนนี้ animate() ถูกแทนที่ด้วย animateAsState() ซึ่งจะแสดงผล State<T> แทน T ซึ่งจะช่วยให้ประสิทธิภาพดีขึ้น เนื่องจากสามารถจำกัดขอบเขตการลบล้างให้แคบลง ในตำแหน่งที่อ่านค่าสถานะ (Ib179e)
  • เพิ่ม API บทบาทของ Semantics และเพิ่มบทบาทเป็นพารามิเตอร์ไปยัง SemanticsModifier ที่คลิกได้ เลือกได้ และสลับได้ เปลี่ยน Modifier.progressSemantics เพื่อให้แถบเลื่อนใช้ได้ด้วย (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 ประเภท

    นอกจากนี้ยังย้าย smoothScrollBy ไปยังฟังก์ชันส่วนขยายใน Scrollable เพื่อใช้ประโยชน์จากฟังก์ชันนี้ด้วย (I2153b)

  • เพิ่ม LazyVerticalGrid แล้ว (I17267, b/162213211)

  • เลิกใช้งาน LazyColumnFor, LazyRowFor, LazyColumnForIndexed และ LazyRowForIndexed ใช้ LazyColumn และ LazyRow แทน (I5b48c)

  • สำหรับ API การป้อนข้อมูลด้วยเคอร์เซอร์ที่ระงับแล้ว เราได้เปลี่ยนชื่อ HandlePointerInputScope เป็น AwaitPointerEventScope และ handlePointerInput() เป็น awaitPointerEventScope() (Idf0a1, b/175142755)

  • เพิ่ม LazyListState.layoutInfo ซึ่งแสดงรายการขนาดและออฟเซ็ตของรายการที่มองเห็นในปัจจุบัน (If8678, b/170472532)

  • นำคำอธิบายประกอบ ExperimentalPointerInput ออกแล้ว (Ia7a24)

  • เพิ่มการรองรับ InteractionState สำหรับ TextField แล้ว (I61d91)

  • เพิ่มพารามิเตอร์ reverseLayout สำหรับ LazyColumn/Row เมื่อ true จะมีการจัดองค์ประกอบรายการจากล่างขึ้นบน และ LazyListState.firstVisibleItemIndex == 0 จะหมายความว่ารายการแรกจะอยู่ที่ด้านล่าง (I552ae, b/166589935)

  • เพิ่มพารามิเตอร์ verticalArrangement สำหรับ LazyColumn แล้ว เพิ่มพารามิเตอร์ horizontalArrangement สำหรับ LazyRow แล้ว การจัดเรียงช่วยให้เราเพิ่มช่องว่างระหว่างรายการและระบุการจัดเรียงรายการได้เมื่อมีรายการไม่เพียงพอที่จะเติมขนาดขั้นต่ำทั้งหมด (Icf79a, b/170394300)

  • ตอนนี้ detectMultitouchGestures ใช้การเรียกกลับ 1 รายการที่มีพารามิเตอร์ centroid, pan, zoom และ rotate ร่วมกัน (Ie6e1c)

  • ย้าย ContentDrawScope ไปยังโมดูล ui-graphics เพื่อให้อยู่กับ DrawScope (Iee043, b/173832789)

การแก้ไขข้อบกพร่อง

  • ตอนนี้ Lambda ในตัวแก้ไขออฟเซ็ตจะแสดงผล IntOffset แทน Float (Ic9ee5, b/174137212, b/174146755)
  • นำ SlotTable, SlotReader และ SlotWriter ออกจาก API สาธารณะ ก่อนหน้านี้มีการทำเครื่องหมายว่า InternalComposeAPI ตอนนี้ฟีเจอร์ดังกล่าวอยู่ภายใน โมดูล Compose

    เพิ่ม CompositionData และ CompositionGroup เพื่อใช้แทน API เครื่องมือ UI ในการดึงข้อมูลองค์ประกอบ API เหล่านี้เป็นแบบสาธารณะ แต่ไม่ได้มีไว้สำหรับใช้ภายนอก API เครื่องมือ UI เนื่องจาก API เหล่านี้ให้ข้อมูลดิบที่ API เครื่องมือ UI ตีความ (I31a9c)

  • รีแฟกเตอร์ ShaderBrush เพื่อ สร้างอินสแตนซ์ของ Shader อย่างช้าๆ เมื่อ มีข้อมูลการกำหนดขนาดของ สภาพแวดล้อมการวาดภาพ ซึ่งมีประโยชน์ในการกำหนดการไล่ระดับสีที่ ครอบคลุมขอบเขตการวาดทั้งหมดของ Composable ในเวลาที่ทำการ Composable โดยไม่ต้อง ใช้การติดตั้งใช้งาน DrawModifier ที่กำหนดเอง

    เลิกใช้งาน API ตัวสร้างฟังก์ชันการไล่ระดับสี เพื่อสนับสนุนเมธอด Factory ในออบเจ็กต์การไล่ระดับสี (I511fc, b/173066799)

  • เลิกใช้งาน Modifier.focusObserver แล้ว ใช้ Modifier.onFocusChanged หรือ Modifier.onFocusEvent แทน (I30f17, b/168511863, b/168511484)

  • ตอนนี้ Autofill API เป็น API เวอร์ชันทดลองและต้องเลือกใช้ (I0a1ec)

  • เพิ่มการประกาศการแยกโครงสร้างเพื่อสร้างอินสแตนซ์ FocusRequester (I35d84, b/174817008)

  • เปลี่ยนชื่อ accessibilityLabel เป็น contentDescription เปลี่ยนชื่อ accessibilityValue เป็น stateDescription (I250f2)

  • เปิดตัวฟังก์ชันใหม่หลายรายการใน SelectionRegistrar และเปลี่ยนชื่อ onPositionChange เป็น notifyPositionChange (Ifbaf7)

  • AndroidOwner สร้างภายใน (Ibcad0, b/170296980)

  • ฟังก์ชัน infiniteRepeatable ใหม่สำหรับสร้าง InfiniteRepeatableSpec (I668e5)

  • Applier อินเทอร์เฟซมีการเปลี่ยนแปลงเพื่อลดความซับซ้อน ในการสร้างแผนผังจากล่างขึ้นบนแทนที่จะเป็นจากบนลงล่าง

    เปลี่ยนชื่อเมธอด insert() เป็น insertTopDown() แล้ว

    เพิ่มวิธีการใหม่ insertBottomUp() แล้ว

    โดยแอปพลิเคชันจะแทรกโหนดลงในทรีที่กำลังแก้ไข โดยใช้ insertTopDown() หรือ insertBottomUp() ขึ้นอยู่กับ ว่าตัวใดมีประสิทธิภาพดีกว่า

    ต้นไม้บางต้น เช่น LayoutNode และ View มีประสิทธิภาพในการสร้างจากล่างขึ้นบนมากกว่าจากบนลงล่าง ก่อนการเปลี่ยนแปลงนี้ ต้องมีสแต็กของแทรกเพื่อใช้การสร้างจากล่างขึ้นบน ซึ่ง ต้องคัดลอกไปยังทุกแอปพลิเคชันที่ต้องมีการสร้างจากล่างขึ้นบน เพื่อประสิทธิภาพ การเปลี่ยนแปลงนี้จะApplier ลบล้าง insertBottomUp() เพื่อสร้างแผนภูมิตั้งแต่ล่างขึ้นบน และinsertTopDown() เพื่อสร้างแผนภูมิตั้งแต่บนลงล่าง (Icbdc2)

  • เพิ่ม API painterResource เพื่อจัดการการโหลดออบเจ็กต์ Painter แบบทึบแสง จากรูปแบบเนื้อหาที่แปลงเป็นรูปภาพ (เช่น PNG) หรือ VectorDrawable ผู้บริโภคไม่จำเป็นต้องระบุประเภทของชิ้นงานล่วงหน้าอีกต่อไป และสามารถเรียกใช้เมธอดนี้เพื่อรับออบเจ็กต์ Painter เพื่อใช้ใน Composable ของรูปภาพหรือตัวแก้ไข Painter (I2c703, b/173818471)

  • เพิ่มฟังก์ชัน Factory buildAnnotatedString เพื่อสร้าง AnnotatedString เลิกใช้งานฟังก์ชัน builder ของ 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 ที่ใช้ร่วมกันได้ เพื่อตรวจสอบความสอดคล้องกับหลักเกณฑ์ของ Compose นอกจากนี้ ยังย้ายข้อมูล API บางรายการโดยใช้ children เป็นชื่อสำหรับ Lambda ต่อท้ายเป็น content ตามการตรวจสอบ Lint และคำแนะนำ (Iec48e)
  • ย้าย API ของ foundation:foundation-text ไปยัง 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)

  • เพิ่มพารามิเตอร์ singleLine ลงใน BasicTextField, TextField และ OutlinedTextField ตั้งค่าพารามิเตอร์นี้เป็น true เพื่อให้ช่องข้อความเป็นบรรทัดเดียวที่เลื่อนได้ในแนวนอน (I57004, b/168187755)

  • เพิ่มเครื่องตรวจจับท่าทางสัมผัสสำหรับการแตะ แตะสองครั้ง กดค้าง และการกดโดยใช้การป้อนข้อมูลตัวชี้ที่ระงับใหม่ นอกจากนี้ เรายังได้เพิ่มยูทิลิตีบางอย่างเพื่อช่วยให้นักพัฒนาแอปเขียนเครื่องตรวจจับท่าทางสัมผัสของตนเองได้ง่ายขึ้น (I00807)

  • เพิ่ม Modifier.focusable ที่จำเป็นใน Foundation ใช้แอตทริบิวต์นี้เพื่อเพิ่มลักษณะการทำงานที่โฟกัสได้ให้กับคอมโพเนนต์ โดยมี Semantic และการช่วยเหลือพิเศษที่ถูกต้อง (I41eb9, b/152525426, b/162865824)

  • เราได้นำ API ที่เลิกใช้งานไปก่อนหน้านี้ออกแล้ว โดยได้นำ Border ออกและใช้ BorderStroke แทน เราได้นำ Modifier.drawBorder ออกแล้ว โปรดใช้ Modifier.border แทน นำ Modifier.gravity ออกแล้ว โปรดใช้ Modifier.align แทน ระบบนำ Stack ออกแล้ว โปรดใช้ Box แทน (I32c2b, b/172470874)

  • AbsoluteArrangement เปลี่ยนชื่อเป็น Arrangement.Absolute (If26f2)

การแก้ไขข้อบกพร่อง

  • ย้าย DrawModifier APIs จากแพ็กเกจ androidx.compose.ui ไปยังแพ็กเกจ androidx.compose.ui.draw สร้างไฟล์ DrawModifierDeprecated.kt เพื่อ รวมประเภทแทน/วิธีการช่วยเพื่อช่วยในการ ย้ายข้อมูลจาก API ที่เลิกใช้งานแล้วไปยัง API ปัจจุบัน (Id6044, b/173834241)
  • เปลี่ยนชื่อ Modifier.drawLayer เป็น Modifier.graphicsLayer นอกจากนี้ยังอัปเดตคลาสที่เกี่ยวข้องเป็น GraphicsLayer ตาม ความคิดเห็นจากสภา API (I0bd29, b/173834241)
  • นำ <T> ออกจากการประกาศ SubcomposeLayout ตอนนี้คุณใช้ได้โดยไม่ต้องระบุประเภท (Ib60c8)
  • ทำให้ฟิลด์เวลาทำงานและตำแหน่งของ PointerInputData ไม่เป็นค่าว่าง (Id468a)
  • ตอนนี้ MaterialTheme จะกำหนดสีที่ถูกต้องสำหรับแฮนเดิลการเลือกและพื้นหลังการเลือกแล้ว แอปที่ไม่ใช่ Material สามารถใช้ AmbientTextSelectionColors เพื่อปรับแต่งสีที่ใช้สำหรับการเลือกได้ด้วยตนเอง (I1e6f4, b/139320372, b/139320907)
  • เปลี่ยนชื่อพารามิเตอร์การจัดแนวของ Box เป็น contentAlignment (I2c957)
  • เปลี่ยนชื่อตัวแก้ไข offsetPx เป็น offset ตอนนี้ฟังก์ชันเหล่านี้รับพารามิเตอร์ Lambda แทน State แล้ว (Ic3021, b/173594846)
  • เพิ่ม WindowManager.isWindowFocused เพื่อตรวจสอบว่าหน้าต่างโฮสต์อยู่ในโฟกัสหรือไม่ และ WindowFocusObserver ที่ให้การเรียกกลับ onWindowFocusChanged (I53b2a, b/170932874)
  • เพิ่มพารามิเตอร์ resetInput ไปยัง TextInputService#onStateUpdated (I3e8f5, b/172239032, b/171860947)
  • อัปเดต TextFieldValue API
    • ทำให้ TextFieldValue.composition เป็นแบบอ่านอย่างเดียว
    • นำข้อยกเว้นที่เกิดขึ้นสำหรับช่วงการเลือกที่ไม่ถูกต้องออกแล้ว (I4a675, b/172239032)
  • เลิกใช้งาน Ambients ที่เลิกใช้งานแล้วซึ่งมี Ambient เป็นคำต่อท้าย และแทนที่ด้วยพร็อพเพอร์ตี้ใหม่ที่ขึ้นต้นด้วย Ambient ตามหลักเกณฑ์อื่นๆ ของ Ambients และ Compose API (I33440)
  • เพิ่ม Wrapper ของ Android Typeface แล้ว คุณโหลด Android Typeface ผ่านฟังก์ชัน typeface ได้ เช่น typeface(Typeface.DEFAULT) เปลี่ยนชื่อ typefaceFromFontFamily() เป็น typeface() (I52ab7) ด้วย
  • เพิ่มการตรวจสอบ Lint เพื่อตรวจสอบว่าโรงงานตัวแก้ไขใช้ androidx.compose.ui.composed {} ภายในแทนที่จะทำเครื่องหมายเป็น @Composable (I3c4bc)
  • เพิ่มการตรวจสอบ Lint เพื่อตรวจสอบว่าฟังก์ชัน Factory ของตัวแก้ไขได้รับการกำหนดเป็นส่วนขยายในตัวแก้ไข เพื่อให้สามารถเชื่อมโยงเข้าด้วยกันได้อย่างราบรื่น (I07981)
  • มีการเปลี่ยนชื่ออาร์กิวเมนต์เชิงความหมาย mergeAllDescendants เป็น mergeDescendants (Ib6250)
  • การควบคุมเวลาในการทดสอบ (TestAnimationClock และการใช้งาน) อยู่ในระยะทดลองแล้ว (I6ef86, b/171378521)
  • นำโมดูล ui-test เก่าและ Stub ออก (I3a7cb)
  • เปลี่ยนชื่อ TextUnit.Inherit เป็น TextUnit.Unspecified เพื่อให้สอดคล้องกับหน่วยอื่นๆ (Ifce19)
  • เราได้อัปเดตอินเทอร์เฟซการจัดแนวและทำให้ใช้งานได้ (I46a07, b/172311734)
  • foundation:foundation-text ได้ผสานรวมเข้ากับ foundation:foundation แล้ว (Idac0f)
  • เลิกใช้งาน place(Offset) และ placeRelative(Offset) ใช้การโอเวอร์โหลดที่มีออฟเซ็ต 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 หากต้องการใช้ Text API พื้นฐานที่ไม่แสดงความคิดเห็นซึ่งไม่ได้ใช้ค่าจากธีม โปรดดู androidx.compose.foundation.BasicText (If64cb)
  • เพิ่ม maxLines ลงใน TextField (Ib2a5b)
  • อัปเดต TextField ให้ยอมรับ KeyboardOptions (Ida7f3)
  • เพิ่ม KeyboardOptions สำหรับใช้ใน TextField (I9ca32)
  • เพิ่ม BasicText เป็น API ที่ไม่มีข้อจำกัดด้านการออกแบบสำหรับข้อความ ซึ่งเทียบเท่ากับ BasicTextField (I28268)
  • นำ ExperimentalLazyDsl annotation ออกแล้ว ตอนนี้คุณใช้ LazyColumn/LazyRow ได้โดยไม่ต้องเพิ่ม @OptIn (Idab7a, b/166584730)
  • เลิกใช้งาน BaseTextField แล้ว โปรดใช้ BasicTextField แทน (I896eb)
  • เพิ่ม BasicTextField เพื่อใช้แทนทั้ง CoreTextField และ BaseTextField (Id4cea)
  • นำ LazyColumnItems/LazyRowItems ที่เลิกใช้งานแล้วออก (I1d8a8)
  • ระบบได้นำ Composable ที่เลิกใช้งานแล้วสำหรับการกำหนดขนาดตามการวัดค่าโดยธรรมชาติออกแล้ว (I18537, b/171811496)
  • เปลี่ยนชื่อ relativePaddingFrom เป็น paddingFrom เพิ่มตัวแก้ไข paddingFromBaseline เพื่อความสะดวกในการระบุระยะห่างจากขอบเขตเลย์เอาต์ไปยังบรรทัดฐานของข้อความ (I0440a, b/170633813)
  • พารามิเตอร์ matchHeightConstraintsFirst ได้รับการเพิ่มลงในตัวแก้ไข aspectRatio ซึ่งสามารถใช้เพื่อระบุตัวแก้ไขให้ปรับขนาดตามข้อจำกัดด้านความสูงก่อนที่จะลองใช้ข้อจำกัดด้านความกว้าง (Ie7c43, b/155290593)
  • นำ DpConstraints ที่เลิกใช้งานแล้วออกแล้ว (I87884, b/171702471)

การแก้ไขข้อบกพร่อง

  • เปิดตัวคลาส ScaleFactor inline เพื่อแสดงถึง ปัจจัยการปรับขนาดสำหรับแกนแนวนอนและแนวตั้ง โดยไม่ขึ้นต่อกันเพื่อ รองรับกรณีการใช้งานการปรับขนาดที่ไม่สม่ำเสมอ
    • เพิ่มเมธอด computeScaleFactor ลงใน ContentScale
    • เพิ่ม ContentScale.FillBounds เพื่อทำการ การปรับขนาดที่ไม่สม่ำเสมอเพื่อยืดขอบเขต src ให้ครอบคลุมปลายทางทั้งหมด
    • เพิ่มวิธีการดำเนินการเพื่อคำนวณ พารามิเตอร์ ScaleFactor ด้วยพารามิเตอร์ Size
    • (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.Unspecified เป็นสีการปรับสีที่เป็นไปได้ ซึ่งจะวาด ชิ้นงานหรือ Painter ที่ระบุโดยไม่มี ColorFilter ก่อนหน้านี้ การพยายามไม่สนใจการย้อมสีด้วย Color.Unspecified จะย้อมสีด้วยสีโปร่งใส และไม่มีการแสดงผลใดๆ เลย (I049e2, b/171624632)
  • ย้าย MeasureResult ออกจาก 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 โดยไม่มีการเรียกกลับ (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)
  • เพิ่ม alignByBaseline ลงใน RowScope และเปลี่ยนชื่อ alignWithSiblings เป็น alignBy (I06503, b/170628732)
  • Box ถูกทำให้เป็นฟังก์ชันอินไลน์ (Ibce0c, b/155056091)
  • เพิ่ม maxLines ลงใน CoreTextField (Ibee58, b/143687793)
  • เพิ่มการตัดข้อความใน CoreTextField (I21a4b)

การแก้ไขข้อบกพร่อง

  • เลิกใช้งาน VectorPainter เพื่อใช้ rememberVectorPainter แทน เพื่อให้ระบุได้ดียิ่งขึ้นว่า API ที่ใช้ได้ภายในใช้ "remember" เพื่อคงข้อมูลไว้ในคอมโพสิท (Ifda43)
  • เปิดใช้การเปลี่ยนฉากใน ComposeTestRule และนำตัวเลือกในการ เปิดใช้เคอร์เซอร์กะพริบออกจาก ComposeTestRule (If0de3)
  • เพิ่มตัวเลือกแป้นพิมพ์แบบบรรทัดเดียวลงใน CoreTextField (I72e6d)
  • เปลี่ยนชื่อ Radius API เป็น CornerRadius เพื่อให้แสดง วิธีใช้ใน Compose ได้ดียิ่งขึ้น อัปเดตเอกสารประกอบเพื่อระบุ ว่ารัศมีมุมที่เป็นลบจะถูกจำกัด เป็น 0 (I130c7, b/168762961)
  • เพิ่มความสามารถในการระบุข้อมูลเครื่องมือตรวจสอบในตัวแก้ไขที่ประกอบขึ้น (Idee08, b/163494569)
  • เพิ่มตัวเลือก IME สำหรับการใช้อักษรตัวพิมพ์ใหญ่ในแป้นพิมพ์ (I8ac38)
  • แก้ไขตำแหน่งแฮนเดิล RTL (I6e1e0)
  • การเปลี่ยนแปลงที่ทำให้เกิดข้อขัดข้อง: นำค่าที่ส่งคืนออกจาก PointerInputFilter.onPointerEvent(...) เนื่องจากค่าเดียวที่ควรเปลี่ยนได้ในเหตุการณ์ของเคอร์เซอร์คือข้อมูลการใช้งาน ตอนนี้คุณสามารถเปลี่ยนข้อมูลการใช้งานของ PointerEvents ที่ส่งผ่านได้แทนที่จะส่งคืนข้อมูลจาก PointerInputFilter.onPointerEvent(...) (I6acd0)
  • เพิ่มตัวเลือก "เลือกทั้งหมด" ลงในเมนูการเลือก (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)
  • เลิกใช้งาน API contentColor() และ currentTextStyle() แล้วแทนที่ด้วย AmbientContentColor และ AmbientTextStyle ตามลำดับ คุณเข้าถึงค่าปัจจุบันได้โดยใช้ .current ในพร็อพเพอร์ตี้โดยรอบ เช่นเดียวกับพร็อพเพอร์ตี้โดยรอบอื่นๆ การเปลี่ยนแปลงนี้มีขึ้นเพื่อให้สอดคล้องกันและหลีกเลี่ยงการมีหลายวิธีในการทําสิ่งเดียวกัน นอกจากนี้ ยังเปลี่ยนชื่อพร็อพเพอร์ตี้โดยรอบบางรายการเพื่อให้สื่อถึงวัตถุประสงค์ได้ดียิ่งขึ้น ดังนี้

    • ContentColorAmbient -> AmbientContentColor
    • TextStyleAmbient -> AmbientTextStyle
    • IndicationAmbient -> AmbientIndication
    • EmphasisAmbient -> AmbientEmphasisLevels
    • RippleThemeAmbient -> AmbientRippleTheme (I37b6d)

การแก้ไขข้อบกพร่อง

  • ในการปรับค่า Sentinel สำหรับคลาสแบบอินไลน์ให้เป็นมาตรฐาน ให้เปลี่ยนชื่อ Color.Unset เป็น Color.Unspecified เพื่อให้สอดคล้องกับคลาสแบบอินไลน์อื่นๆ (I97611, b/169797763)
  • เพิ่มการดำเนินการสำหรับการช่วยเหลือพิเศษในการคัดลอก/วาง/ตัด (I6db4f)
  • เปิดตัว TextOverflow.None เมื่อการล้นเป็น None ข้อความจะไม่จัดการการล้นอีกต่อไป และจะรายงานขนาดจริงไปยัง LayoutNode (I175c9, b/158830170)
  • อัปเดตพารามิเตอร์ Size.Unspecified ให้เป็น Float.NaN แทน Float.POSITIVE_INFINITY อัปเดตการใช้งาน Painter เพื่อ ตรวจสอบกับ Size.Unspecified ด้วย รวมถึงขนาดที่ไม่ใช่จำนวนจำกัด (I95a7e)
  • เพิ่มโมดูลการแบ่งหน้า Compose และการผสานรวมการแบ่งหน้า (Ib85da)
  • แก้ไข LazyListScope เพื่อรับค่าที่กำหนดให้เป็น Null ได้ (I1765b)
  • เปลี่ยนชื่อ OnPositionedModifier เป็น OnGloballyPositionedModifier และเปลี่ยนชื่อ onPositioned() เป็น onGloballyPositioned() (I587e8, b/169083903)
  • เพิ่มตัวอย่างสำหรับ LazyColumn/Row (Idc16d)
  • แก้ไขเมธอด items และ itemsIndexed เพื่ออนุญาต emptyList (I06647)
  • เพิ่ม DSL สำหรับระบุข้อมูลผู้ตรวจสอบ (Ic9a22)
  • ย้าย LongPress ไปยัง Text (Iff2bc)
  • ปิดใช้การเลือกในข้อความและเดโม (Ie7e97)
  • รองรับการแปลง AnnotatedString เป็น SpannableString เพื่อการช่วยเหลือพิเศษ (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

  • เปลี่ยนชื่อ Stack เป็น Box แล้ว ระบบจะเลิกใช้งาน foundation.Box ที่มีอยู่ก่อนหน้านี้เพื่อรองรับ Box ใหม่ใน compose.foundation.layout ลักษณะการทำงานของ Box ใหม่คือการวางองค์ประกอบย่อยซ้อนกันเมื่อมีองค์ประกอบย่อยหลายรายการ ซึ่งแตกต่างจาก Box ก่อนหน้าที่มีลักษณะการทำงานคล้ายกับคอลัมน์ (I94893, b/167680279)
  • เลิกใช้งานพารามิเตอร์การตกแต่งกล่องแล้ว หากต้องการมีการตกแต่ง/ระยะห่างภายในในช่อง ให้ใช้ตัวแก้ไขแทน (Modifier.background, Modifier.border, Modifier.padding) (Ibae92, b/167680279)
  • เพิ่มคลาส LazyListState ใหม่ ซึ่งช่วยให้สังเกตและควบคุมตำแหน่งการเลื่อนของคอมโพเนนต์ LazyRow และ LazyColumn ได้ คุณสร้างอินสแตนซ์ได้โดยใช้ rememberLazyListState() และส่งไปยังพารามิเตอร์สถานะของคอมโพเนนต์ ปัจจุบันคุณจะเห็นรายการแรกและออฟเซ็ตในเวอร์ชันเริ่มต้นนี้ (Ic7cb7, b/159307669)
  • ตอนนี้ระบบจะบันทึกตำแหน่งรายการแบบเลื่อนและออฟเซ็ตการเลื่อนและ กู้คืนเมื่อสร้างกิจกรรมใหม่ (Ie045f, b/166589058)
  • เพิ่มการดำเนินการตามความหมายของการคลิกแบบยาว (I6281b, b/156468846)
  • เพิ่มยูทิลิตี MutatorMutex เพื่อเก็บ Mutator เดียวของ สถานะที่แชร์ไว้ตลอดเวลา และยกเลิก Mutator ที่ขัดแย้งกันตามลำดับความสำคัญ (I3f975)
  • ใส่คำอธิบายประกอบ rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled และ textInputServiceFactory ด้วย @VisibleForTesting เพื่อให้เป็น API ภายในและซ่อน KDoc (I554eb, b/168308412)
  • นำพารามิเตอร์ inlineContent ออกจากข้อความที่มีอินพุตสตริง โดยจะไม่ได้ใช้เนื่องจาก inlineContent ต้องทำงานร่วมกับ AnnotatedString (Ief403)
  • เราได้นำ API การจัดเรียงที่กำหนดเองที่เลิกใช้งานแล้วออก (Ic576d, b/168297922, b/168297923)
  • มีการเพิ่มพารามิเตอร์ unbounded ลงในตัวแก้ไข wrapContentSize ซึ่งช่วยให้วัดองค์ประกอบเลย์เอาต์ที่มีข้อจำกัดสูงสุดแบบไม่จำกัดได้ (I77951, b/158559319)
  • เราป้องกันการนำเข้าแบบคงที่ของเนื้อหาขอบเขตเลย์เอาต์ (เช่น alignWithSiblings ใน RowScope) คุณควรใช้ขอบเขตที่ชัดเจนแทน ดังนี้ with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) } (I216be, b/166760797)

การแก้ไขข้อบกพร่อง

  • อัปเดต Graphics API หลายรายการ
    • อัปเดต API การแปลงขนาดและการหมุน เพื่อใช้พารามิเตอร์ออฟเซ็ตเดียว เพื่อแสดงพิกัดจุดหมุน แทนพารามิเตอร์ลอยตัวแยกกัน สำหรับพิกัด x/y ใน DrawScope และ DrawTransform
    • นำเมธอด Rect.expandToInclude และ Rect.join ออกแล้ว
    • อัปเดตเอกสารประกอบเกี่ยวกับรัศมีให้ระบุว่าวงรี นอกเหนือจากวงกลม
    • เพิ่มเอกสารเพื่อระบุว่าไม่ควรเรียกใช้ตัวสร้างสาธารณะสำหรับคลาส Radius แบบอินไลน์โดยตรง แต่ควรสร้างออบเจ็กต์ Radius ผ่านตัวสร้างฟังก์ชันของออบเจ็กต์แทน
    • นำ API RoundRect ออกเพื่อค้นหา topRight, bottomRight, bottomCenter ฯลฯ
    • เลิกใช้ Rect.shift เพื่อใช้ Rect.translate แทน
    • นำ API RoundRect.grow และ Rect.shrink ออกแล้ว
    • เปลี่ยนชื่อ RoundRect.outerRect เป็น Rect.boundingRect
    • นำเมธอด RoundRect.middleRect/tallMiddleRect/wideMiddleRect และ Rect.isStadium ออก
    • เปลี่ยนชื่อ RoundRect.longestSide เป็น RoundRect.maxDimension
    • เปลี่ยนชื่อ RoundRect.shortestSide เป็น RoundRect.minDimension
    • เปลี่ยน RoundRect.center ให้เป็นพร็อพเพอร์ตี้แทนที่จะเป็นฟังก์ชัน
    • อัปเดตตัวสร้าง RoundRect เพื่อใช้พร็อพเพอร์ตี้ Radius แทนพารามิเตอร์แต่ละรายการสำหรับค่ารัศมี x/y
    • นำ API ขนาดที่ถือว่าเป็นสี่เหลี่ยมผืนผ้าที่มี ต้นทางที่ 0,0 ออกแล้ว
    • เพิ่ม API การทำลายลงใน Radius
    • ย้ายฟังก์ชันส่วนขยาย RoundRect ต่างๆ ไปเป็น พร็อพเพอร์ตี้แทน
    • (I8f5c7, b/168762961)
  • เพิ่มประสิทธิภาพการเลื่อน LazyColumnFor/LazyRowFor โดยไม่ทำการจัดองค์ประกอบใหม่ที่ไม่จำเป็นในระหว่างการเลื่อนทุกครั้ง (I64f65, b/168293643, b/167972292, b/165028371)
  • แก้ไขข้อขัดข้องใน LazyColumnFor/LazyRowFor หลังจากเลื่อนแล้วเปลี่ยนรายการ และใช้การเลื่อนขึ้นอัตโนมัติเมื่อนำรายการที่มองเห็นก่อนหน้านี้ออก เพื่อไม่ให้แสดงช่องว่างเปล่าที่ส่วนท้ายอีกต่อไป (I220ab, b/161480164, b/167855468)
  • ไม่อนุญาตให้ซ้อนคอนเทนเนอร์ที่เลื่อนได้ในทิศทางเดียวกัน เช่น ScrollableContainer และ LazyColumnFor อีกต่อไป ฟีเจอร์นี้ไม่เคยได้รับการรองรับและทำให้การปัดและการเลื่อนทั้งหมดของรายการใน LazyColumnFor หยุดทำงาน (I6e101)
  • อัปเดต Graphics API หลายรายการ
    • อัปเดต DrawScope API ด้วยเมธอดการเปลี่ยนรูปแบบที่กำหนดขอบเขตเพื่อระบุว่าระบบจะใช้การเปลี่ยนรูปแบบภายในโค้ดเรียกกลับเท่านั้น และจะนำออกหลังจากเรียกใช้โค้ดเรียกกลับ
    • อัปเดตเอกสารประกอบ clipPath เพื่ออ้างอิงถึง Path แทนสี่เหลี่ยมผืนผ้าโค้งมน
    • แก้ไขการเว้นวรรคในเอกสารประกอบสำหรับพารามิเตอร์ right ใน clipPath
    • เปลี่ยนชื่อ DrawScope.drawCanvas เป็น drawIntoCanvas และ นำพารามิเตอร์ขนาดออก
    • เปลี่ยนชื่อพารามิเตอร์ dx/dy ในเมธอด inset เป็น horizontal และ vertical
    • เพิ่มการโอเวอร์โหลด Inset ที่ให้ค่า Inset เดียวกันกับขอบทั้ง 4 ด้าน
    • นำเอกสารเกี่ยวกับวิธีการแทรกที่ระบุว่า จะใช้การแทรกกับทั้ง 4 ด้านออก
    • เอกสารประกอบที่อัปเดตสำหรับคลาส Rect
    • อัปเดตความคิดเห็นเกี่ยวกับพารามิเตอร์ Rect ให้ตรงกับรูปแบบ kdoc
    • นำ Rect.join และ Rect.expandToInclude ออกแล้ว
    • สร้างการโอเวอร์โหลดสำหรับ Rect.translate(offset) และ เลิกใช้งาน Rect.shift
    • (If086a, b/167737376)
  • เพิ่ม 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)
  • การใช้งานแรงโน้มถ่วงได้รับการเปลี่ยนชื่ออย่างสม่ำเสมอเป็น "จัดแนว" หรือ "การจัดแนว" ใน Layout API (I2421a, b/164077038)
  • เพิ่มพารามิเตอร์การจัดแนวลงใน Stack ซึ่งช่วยให้ระบุการจัดแนวเริ่มต้นสำหรับองค์ประกอบย่อยทั้งหมดของ Stack ได้ (Ie80ca, b/164085265)

การแก้ไขข้อบกพร่อง

  • เราเลิกใช้งาน DpConstraints และ API ที่ใช้ DpConstraints แล้ว (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 เมื่อเรียกใช้การทดสอบที่ต้องใช้ ManualFrameClock TestUiDispatcher.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")
        }
    }
    

    (I0a85b, b/161247083)

เวอร์ชัน 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 สำหรับแถวและคอลัมน์ เพื่อให้วางเลย์เอาต์ขององค์ประกอบย่อยได้โดยมีระยะห่างคงที่ นอกจากนี้ ยังมีการเพิ่มการจัดเรียงที่สอดคล้องกันเพื่อให้วางเลย์เอาต์ขององค์ประกอบย่อยไว้ข้างกันและจัดแนวในแถว/คอลัมน์ตามการจัดแนวได้ เราได้เลิกใช้งานเมธอด Arrangement.Vertical#arrange และ Arrangement.Horizontal#arrange ก่อนหน้านี้แล้ว และจะไม่รองรับการเขียนการจัดเรียงที่กำหนดเองในอนาคต (I6733d, b/161985975)
  • ออฟเซ็ตกลายเป็นคลาสอินไลน์ (Iaec70)
  • นำการเรียกกลับ onFocusChanged ออกจาก 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)
  • เพิ่มความสามารถในการปรับขนาดเลย์เอาต์ให้เป็นเศษส่วนของพื้นที่ว่างโดยใช้ตัวแก้ไข fillMaxWidth, fillMaxHeight และ fillMaxSize (I945bb, b/161562591)

การแก้ไขข้อบกพร่อง

  • เพิ่มพารามิเตอร์ตัวแก้ไขลงใน SelectionContainer (I4aada, b/161487952)
  • เพิ่ม Lambda mergePolicy ไปยัง SemanticsPropertyKey ซึ่งใช้เพื่อกำหนดนโยบายที่กำหนดเองสำหรับตรรกะของ mergeAllDescendants การผสานได้ นโยบายเริ่มต้นคือการใช้ค่าระดับบนหากมีอยู่แล้ว ไม่เช่นนั้นจะใช้ค่าระดับล่าง (Iaf6c4, b/161979921)
  • เราเปลี่ยนชื่อ PlacementScope.placeAbsolute() เป็น PlacementScope.place() และเปลี่ยนชื่อ PlacementScope.place() ก่อนหน้าเป็น PlacementScope.placeRelative() ด้วยเหตุนี้ วิธี PlacementScope.place() จะไม่สะท้อนตำแหน่งในบริบทจากขวาไปซ้ายโดยอัตโนมัติอีกต่อไป หากต้องการใช้ฟีเจอร์นี้ ให้ใช้ PlacementScope.placeRelative() แทน (I873ac, b/162916675)
  • นำคอมโพเนนต์ FilledTextField ที่เลิกใช้งานแล้วออก โปรดใช้ TextField แทนเพื่อรับการใช้งาน Material Design ของช่องข้อความที่กรอก (I5e889)
  • เพิ่มพารามิเตอร์ backgroundColor ลงใน LinearProgressIndicator และนำการเว้นวรรคภายในออกจาก CircularProgressIndicator เพิ่ม ProgressIndicatorConstants.DefaultProgressAnimationSpec ใหม่ ซึ่งใช้เป็น AnimationSpec เริ่มต้นได้เมื่อเคลื่อนไหวความคืบหน้าระหว่างค่า (If38b5, b/161809914, b/161804677)
  • ตอนนี้เราเลิกใช้งาน state { ... } ที่ใช้ร่วมกันได้แล้วเพื่อเปลี่ยนไปใช้ การเรียก remember { mutableStateOf(...) } อย่างชัดเจนเพื่อความชัดเจน ซึ่งจะช่วยลดพื้นผิว API โดยรวมและจำนวนแนวคิดสำหรับการจัดการสถานะ รวมถึงตรงกับรูปแบบ by mutableStateOf() สำหรับการมอบสิทธิ์พร็อพเพอร์ตี้ของคลาส (Ia5727)
  • เปลี่ยนชื่อ RRect เป็น RoundRect เพื่อให้สอดคล้องกับรูปแบบการตั้งชื่อของ Compose มากขึ้น สร้างตัวสร้างฟังก์ชันที่คล้ายกัน กับ RRect และเลิกใช้งานตัวสร้างฟังก์ชัน RRect (I5d325)
  • นำ Removed onChildPositioned และ OnChildPositionedModifier ออกแล้ว นักพัฒนาแอปควรใช้ onPositioned และ OnPositionedModifier ในเลย์เอาต์ย่อยแทน (I4522e, b/162109766)
  • ตอนนี้ IntSize เป็นคลาสแบบอินไลน์ (I2bf42) แล้ว
  • กดพื้นที่ว่างค้างไว้เพื่อแก้ไข (Ib1e5b)
  • ซ่อน FloatingToolbar หลังจากแตะข้อความ (If4525)
  • ซ่อน FloatingToolbar เมื่ออัปเดตการเลือก (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 package were flatten to 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)
  • นำ DSL ของ ConstraintLayout แบบเก่าออกแล้ว เปลี่ยนชื่อ ConstraintSet2 เป็น ConstraintSet แล้ว (If58d1, b/162450908)
  • เพิ่ม Modifier.absoluteOffset() และ Modifier.absoluteOffsetPx() ซึ่งแตกต่างจากตัวแก้ไขออฟเซ็ตตรงที่ตัวแก้ไขออฟเซ็ตแบบสัมบูรณ์จะไม่ทำมิเรอร์อัตโนมัติในบริบทจากขวาไปซ้าย (I3aa21)
  • ตอนนี้ Row และ Column เป็นฟังก์ชันแบบอินไลน์แล้ว ซึ่งช่วยลดค่าใช้จ่ายในการใช้งานได้อย่างมาก (I75c10)

การแก้ไขข้อบกพร่อง

  • แก้ไข API ที่กว้าง (I077bc)
    1. นำอินเทอร์เฟซ OffsetBase ที่ไม่ได้ใช้ออก
    2. จัดคลาส Offset และ IntOffset ให้มี พื้นผิว API ที่สอดคล้องกัน
    3. เปลี่ยนชื่อ IntOffset.Origin เป็น IntOffset.Zero เพื่อให้สอดคล้องกับ Offset API
    4. ย้ายเมธอด nativeCanvas ออกจากอินเทอร์เฟซ Canvas เพื่อรองรับผู้ใช้ในการสร้างอินสแตนซ์ Canvas ของตนเอง
    5. สร้างคลาส EmptyCanvas สตับเพื่อรีแฟคเตอร์ DrawScope ให้เป็นพารามิเตอร์ที่ไม่ใช่ Null แทน lateinit และตรวจสอบว่าฟิลด์ไม่ใช่ Null
    6. เปลี่ยนชื่อ Enum ของ ClipOp เป็น Pascal Case
    7. เปลี่ยนชื่อ Enum FilterQuality ให้เป็น Pascal Case
    8. เปลี่ยนชื่อ enum StrokeJoin เป็น Pascal Case
    9. เปลี่ยนชื่อ PointMode enums เป็น Pascal Case
    10. เปลี่ยนชื่อการแจงนับ PaintingStyle เป็น Pascal Case
    11. เปลี่ยนชื่อการแจงนับ PathFillType เป็น Pascal Case
    12. เปลี่ยนชื่อ Enum StrokeCap ให้เป็น Pascal Case
    13. อัปเดตการใช้งาน DrawCache เพื่อไม่ให้ ใช้พารามิเตอร์ lateinit อีกต่อไป
    14. อัปเดต DrawScope เพื่อไม่ให้ใช้การมอบสิทธิ์แบบเลื่อนเวลาอีกต่อไป สำหรับพารามิเตอร์ภายใน fillPaint และ strokePaint
    15. อัปเดต Image ที่ใช้ร่วมกันได้เพื่อหลีกเลี่ยงการใช้ Box เพื่อลดค่าใช้จ่าย
    16. อัปเดตคลาส Outline ให้มีคำอธิบายประกอบ @Immutable
    17. อัปเดต PathNode ให้มีคำอธิบายประกอบ @Immutable สำหรับ คำสั่งเส้นทางแต่ละรายการ
    18. อัปเดตองค์ประกอบย่อยของเวกเตอร์เพื่อนำการตรวจสอบแบบมีเงื่อนไขที่ซ้ำซ้อนออก สำหรับการตรวจสอบความเท่ากัน เนื่องจาก Compose จัดการการตรวจสอบเหล่านี้อยู่แล้ว
    19. เลิกใช้งานเมธอดตัวสร้างคู่ของ Rect เพื่อ ใช้ตัวสร้างฟังก์ชันแทน
    20. อัปเดตคลาส Brush และตัวสร้างฟังก์ชันด้วย @Immutable และ @Stable API
    21. อัปเดตการแจงนับ VertexMode ให้เป็น PascalCase
    22. อัปเดตเมธอด selectPaint ของ DrawScope เพื่อเขียนทับพารามิเตอร์การขีดเขียนแบบมีเงื่อนไข ในสีหากมีการเปลี่ยนแปลง
    23. อัปเดตขนาดเพื่อเพิ่ม API การแยกโครงสร้าง เปลี่ยนชื่อ UnspecifiedSize เป็น Unspecified และนำเมธอดที่ไม่ได้ใช้ออก
  • เพิ่ม MonotonicFrameAnimationClock ที่ช่วยให้คุณใช้ MonotonicFrameClock เป็น AnimationClockObservable เพื่อเชื่อมช่องว่าง ระหว่างนาฬิกาและ API ใหม่ที่อิงตามโครูทีนกับนาฬิกาเก่าที่ยังคงใช้ นาฬิกาที่อิงตามการเรียกกลับ

    ตอนนี้ 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 เป็น createAndroidComposeRule (I70aaf)

  • เพิ่มการดำเนินการสำหรับการช่วยเหลือพิเศษเพื่อรับ TextLayoutResult (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 คุณจะต้องอัปเดตการอ้างอิง ตามข้อมูลโค้ดใหม่ที่แสดงด้านบนในส่วนการประกาศการอ้างอิง

การเปลี่ยนแปลง API

  • เช่นเดียวกับพารามิเตอร์ใหม่ใน ScrollableColumn/ScrollableRow LazyColumnItems/LazyRowItems ตอนนี้ก็มีพารามิเตอร์ contentPadding ซึ่งช่วยให้เพิ่มระยะขอบสำหรับเนื้อหาได้หลังจากที่ตัดแล้ว ซึ่งทำไม่ได้ผ่านพารามิเตอร์ตัวแก้ไขเพียงอย่างเดียว นอกจากนี้ ยังช่วยให้เพิ่มระยะห่างก่อนรายการแรก/หลังรายการสุดท้ายได้ด้วย (Ibc24e)
  • เปลี่ยนชื่อการเรียกกลับ onFocusChange ในช่องข้อความเป็น onFocusChanged (Ida4a1)
  • เลิกใช้งาน VerticalScroller และ HoriziontalScroller แล้ว ใช้ ScrollableColumn และ ScrollableRow เพื่อสร้างประสบการณ์การใช้งานในตัวที่มีลักษณะการทำงานและพารามิเตอร์ของ Column/Row หรือ Modifier.verticalScroll และ Modifier.horizontalScroll ในองค์ประกอบของคุณเอง ในทำนองเดียวกัน เราได้เลิกใช้งาน ScrollerPosition เพื่อให้ใช้ ScrollState แทน (I400ce, b/157225838, b/149460415, b/154105299)
  • เราได้ปรับปรุง API ของ Modifier.draggable และ Modifier.scrollable นำ DragDirection ออกเพื่อใช้ Orientation แทน เราได้ปรับปรุงข้อกำหนดของรัฐสำหรับรายการที่เลื่อนได้ให้ง่ายขึ้น เราได้เปลี่ยนชื่อ ScrollableState เป็น ScrollableController (Iab63c, b/149460415)
  • พร็อพเพอร์ตี้ที่มีความหมายแบบค่าเดียวจะใช้รูปแบบการเรียกในตอนนี้ เช่น ตอนนี้เขียน 'semantics { hidden = true }' เป็น semantics { hidden() } (Ic1afd, b/145951226, b/145955412)
  • ตอนนี้ขนาดมุมที่ใช้โดย RoundedCornerShape และ CutCornerShape สามารถมีขนาดใหญ่กว่า 50% ได้แล้ว (Id2340, b/160400213)
  • เปลี่ยนพารามิเตอร์ ContentScale เริ่มต้นสำหรับ Image composable จาก Inside เป็น Fit การดำเนินการนี้มีขึ้นเพื่อ ให้ลักษณะการทำงานขยายขนาด Painter พื้นฐานได้หากขนาดเลย์เอาต์ใหญ่กว่า ขนาดดั้งเดิมของ Painter ขณะที่ ยังคงสัดส่วนภาพไว้ ลักษณะการทำงานนี้ตรงกับความคาดหวังในการระบุขนาดคงที่ให้กับรูปภาพได้ดีกว่า โดยไม่ส่งผลต่อลักษณะการทำงานเริ่มต้น หากใช้เฉพาะขนาดโดยธรรมชาติเพื่อ คำนวณขนาดของคอมโพสได้ (I40ae3, b/159838006)
  • ใช้ AnimationSpec แทน AnimationBuilder ใน API ระดับบนสุด เพื่ออธิบายแนวคิดของข้อกำหนดภาพเคลื่อนไหวแบบคงที่ - ปรับปรุง DSL การเปลี่ยนโดยนำข้อกำหนด Lambda ออกสำหรับ การสร้าง AnimationSpec เช่น Tween, Spring แต่จะใช้พารามิเตอร์ของตัวสร้างโดยตรงแทน - ปรับปรุงความสะดวกในการใช้งานโดยรวมของ AnimationSpec ด้วยการเปิดตัว ตัวสร้างแทนการใช้ตัวสร้าง - เปลี่ยนระยะเวลาและการหน่วงเวลาสำหรับ KeyFrames และ Tween เป็น Int ซึ่งจะ ช่วยลดการแคสต์ประเภทที่ไม่จำเป็นและการโอเวอร์โหลดเมธอด (เพื่อ รองรับทั้ง Long และ Int) (Ica0b4)
  • นำ Clickable ออกแล้ว ใช้ Modifier.clickable (I84bdf)
  • เพิ่ม LazyRowItems - แอนะล็อกการเลื่อนในแนวนอนของ LazyColumnItems (Ibbcf7)
  • เปิดตัว API ภาพเคลื่อนไหวแบบไม่มีสถานะระดับต่ำ API เหล่านี้ (I63bf7)
  • เลิกใช้งาน androidx.ui.foundation.TextFieldValue และ androidx.ui.input.EditorValue แล้ว นอกจากนี้ ยังมีการเลิกใช้งาน Composable TextField, FilledTextField และ CoreTextField ที่ใช้ประเภทดังกล่าวด้วย โปรดใช้ androidx.ui.input.TextFieldValue แทน (I4066d, b/155211005)
  • แทนที่การใช้งาน IntPx ด้วย Int แทนที่ IntPxPosition ด้วย IntOffset แทนที่ IntPxSize ด้วย IntSize (Ib7b44)
  • androidx.ui.foundation.shape.RectangleShape removed; use androidx.ui.graphics.RectangleShape (I94939, b/154507984)
  • เพื่อรวมจำนวนคลาสที่ใช้เพื่อแสดงข้อมูลการปรับขนาด ให้ใช้คลาส Size แทน PxSize ซึ่งจะให้ประโยชน์ ของคลาสอินไลน์เพื่อใช้ประโยชน์จาก Long ในการแพ็กค่า Float 2 ค่าเพื่อแสดง ความกว้างและความสูงที่แสดงเป็น Float (Ic0191)
  • เพื่อรวมจำนวนคลาสที่ใช้เพื่อแสดงข้อมูลการวางตำแหน่ง ให้ใช้คลาส Offset แทน PxPosition ซึ่งจะให้ประโยชน์ ของคลาสอินไลน์เพื่อใช้ประโยชน์จาก Long ในการแพ็กค่า Float 2 ค่าเพื่อแสดงออฟเซ็ต x และ y ที่แสดงเป็น Float (I3ad98)
  • เพิ่ม Modifier.zoomable สำหรับฟังก์ชันการบีบนิ้วเพื่อซูม (Id5d63)
  • เลิกใช้งานคอมโพเนนต์ที่สลับได้แล้ว ใช้ Modifier.toggleable แทน (I35220, b/157642842)
  • เลิกใช้งาน MutuallyExclusiveSetItem แล้ว โปรดใช้ Modifier.selectable แทน (I02b47, b/157642842)
  • ตอนนี้เราเลิกใช้งาน TestTag แล้ว ใช้ Modifier.testTag แทน (If5110, b/157173105)
  • เพิ่มพารามิเตอร์ fontWeight ลงในข้อความ ซึ่งก่อนหน้านี้ไม่ได้เพิ่มโดยไม่ได้ตั้งใจ (I56937)
  • แทนที่การใช้คลาส Px ในคลาส Compose ต่างๆ ซึ่งเป็นส่วนหนึ่งของความพยายามในการปรับโครงสร้างขนาดใหญ่เพื่อใช้เฉพาะ Dp และประเภทดั้งเดิมสำหรับพารามิเตอร์พิกเซล (I19d02)
  • ตอนนี้ VerticalScroller มี Column ให้ใช้งานได้ทันที ตอนนี้ HorizontalScroller มี Row พร้อมใช้งานแล้ว (Ieca5d, b/157020670)
  • แทนที่การใช้คลาส Px ในคลาส Compose ต่างๆ ซึ่งเป็นส่วนหนึ่งของความพยายามในการปรับโครงสร้างขนาดใหญ่เพื่อให้ใช้เฉพาะ Dp และประเภทดั้งเดิมสำหรับพารามิเตอร์พิกเซล (Iede0b)
  • เพิ่ม Modifier.indication ลงในแพ็กเกจพื้นฐานแล้ว ใช้เพื่อแสดงการกด/ลาก/การบ่งชี้อื่นๆ ในองค์ประกอบที่โต้ตอบได้ที่กำหนดเอง (I8425f, b/155287131)
  • ตอนนี้ VerticalScroller และ HorizontalScroller รองรับการเลื่อนแบบย้อนกลับแล้วเมื่อตั้งค่า isReversed ใน ScrollerPosition (I953bd)
  • รองรับการเพิ่ม Composable ลงในเลย์เอาต์ข้อความ (I1373c)
  • การใช้งาน CanvasScope ที่รวมกัน ตอนนี้จึงมีเพียง DrawScope และ ContentDrawScope เปลี่ยนชื่อ CanvasScope เป็น DrawScope อัปเดต DrawScope เพื่อใช้ Density interface และจัดเตรียม LayoutDirection อัปเดตคลาสย่อย DrawScope ที่ลบแล้วใน ContentDrawScope Painter และ PainterModifier เพื่อไม่ให้รักษาพร็อพเพอร์ตี้ RTL ไว้ด้วยตนเองอีกต่อไป เนื่องจาก DrawScope มีพร็อพเพอร์ตี้นี้อยู่แล้ว โดยไม่ต้องระบุด้วยตนเอง (I1798e)
  • นำ DrawBackground API ที่เลิกใช้งานแล้วออกเพื่อใช้ drawBackground extension API ใน Modifier แทน ปรับโครงสร้าง การใช้งานสี แปรง และการวาดภาพพื้นหลัง เพื่อลดเส้นทางโค้ด รวมถึงนำข้อกำหนดในการสร้าง Modifier เป็นส่วนหนึ่งของการจัดองค์ประกอบออก (I0343a)
  • อัปเดต API Compose ระดับสูงขึ้น ที่แสดง Canvas เพื่อ แสดง CanvasScope แทน ซึ่งจะช่วยลดความจำเป็นที่ผู้บริโภคต้องดูแลออบเจ็กต์ Paint ของตนเอง สำหรับผู้บริโภคที่ยังต้องการเข้าถึง Canvas สามารถใช้วิธีส่วนขยาย drawCanvas ซึ่งมีฟังก์ชันเรียกกลับเพื่อออกคำสั่งวาดด้วย Canvas พื้นฐาน (I80afd)
  • HorizontalScroller และ VerticalScroller ไม่คืนค่าตำแหน่งการเลื่อนโดยใช้สถานะอินสแตนซ์ที่บันทึกไว้ (Ia0fae, b/155075048)
  • นำ FocusManagerAmbient ออกแล้ว ใช้ FocusModifier.requestFocus เพื่อรับโฟกัส (Ic4826)
  • เราได้นำเลย์เอาต์ตารางออกชั่วคราว จนกว่าจะพร้อมให้บริการอีกครั้งด้วย API ที่อัปเดตแล้ว (Id88a7)
  • สร้าง CanvasScope API ที่ห่อหุ้มออบเจ็กต์ Canvas เพื่อแสดงพื้นผิว API การวาดภาพแบบประกาศที่ไม่มีสถานะ การเปลี่ยนรูปแบบจะอยู่ในขอบเขตของตัวรับสัญญาณเอง และข้อมูลการปรับขนาดจะอยู่ในขอบเขตของขอบเขตการแทรกที่สอดคล้องกันด้วย โดยไม่จำเป็นต้องให้ผู้ใช้ดูแลออบเจ็กต์สถานะ Paint ของตนเองเพื่อกำหนดค่าการดำเนินการวาด

    เพิ่ม CanvasScopeSample รวมถึง อัปเดตแอปเดโมให้มีเดโมกราฟิกแบบประกาศ (Ifd86d)

  • นำ ColoredRect ออกแล้ว ใช้ User Box ที่มีตัวแก้ไข drawBackground แทน (I983c7, b/152753731)

  • เพิ่มการปรับแต่งสีเคอร์เซอร์ลงใน TextField (I6e33f)

  • ตอนนี้คุณสามารถซ่อน/แสดงแป้นพิมพ์ซอฟต์แวร์ได้โดยใช้ SoftwareKeyboardController ซึ่งส่งผ่านโดยการเรียกกลับ onTextInputStarted (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)

  • แทนที่พารามิเตอร์ focusIdentifier ของ CoreTextField/TextField ด้วย FocusNode เพื่อผสานรวมกับระบบย่อยโฟกัส (I7ea48)

  • การอัปเดต TextField - ในมิติแนวนอนจะใช้พื้นที่ว่างทั้งหมดที่ได้รับ (Ib08df, b/154638552)

  • เพิ่ม InteractionState และ Interaction เพื่อให้สร้างคอมโพเนนต์ที่ตอบสนองต่อการเปลี่ยนแปลงสถานะ UI เช่น การกดและการลาก ได้ง่ายขึ้น (Icfe25, b/152525426)

  • ย้าย RectangleShape จาก androidx.ui.foundation.shape.* ไปยัง androidx.ui.graphics.* (Ia74d5, b/154507984)

  • แทนที่การใช้ Color ที่อนุญาตให้เป็น Null ทั้งหมดใน API ด้วย ที่ไม่ใช่ Null และใช้ Color.Unset แทน Null (Iabaa7)

  • การอัปเดต API ของ TextField - ผสานรวมการเรียกกลับ onFocus และ onBlur เป็นการเรียกกลับ onFocusChange(Boolean) รายการเดียวที่มีพารามิเตอร์ (I66cd3)

  • เปลี่ยนชื่อ ScaleFit เป็น ContentScale ย้าย ContentScale จาก ui-graphics ไปยัง ui-core module เพื่อให้อยู่ในโมดูลเดียวกับ Alignment API เปลี่ยนชื่อ FillMaxDimension เป็น Crop เปลี่ยนชื่อ FillMinDimension เป็น Fit เปลี่ยนชื่อ Fit to Inside เพื่อให้ตรงกันมากขึ้น เทียบเท่า ImageView.ScaleType เพิ่มเอกสารที่ระบุว่าการรวมกัน ของ Crop และ Alignment.Center จะให้ผลลัพธ์เหมือนกับ ImageView.ScaleType.CENTER_CROP และ Fit ที่ใช้กับ Alignment.Center จะให้ผลลัพธ์เหมือนกับ ImageView.ScaleType.FIT_CENTER Inside ที่ใช้กับ 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)

  • ย้าย Draggable ไปยังตัวแก้ไขแล้ว (Id9b16, b/151959544)

  • ย้าย Text ไปยังแพ็กเกจ androidx.ui.foundation จาก androidx.ui.core (I87ce5)

  • เพิ่มพารามิเตอร์ enabled ลงในช่องทำเครื่องหมาย สวิตช์ และสลับได้ (I41c16)

  • ตอนนี้ Ripple เป็นตัวปรับแต่งแล้ว แม้ว่า Clickable จะยังไม่ได้แปลง แต่การใช้งานที่แนะนำคือ Clickable(onClick = { ... }, modifier = ripple()) (Ie5200, b/151331852, b/150060763)

  • เพิ่ม VectorPainter API เพื่อแทนที่ API องค์ประกอบย่อยที่มีอยู่สำหรับ กราฟิกแบบเวกเตอร์ ผลลัพธ์ขององค์ประกอบย่อย คือออบเจ็กต์ VectorPainter แทนที่จะเป็น DrawModifier เลิกใช้งาน Composable DrawVector ก่อนหน้าเพื่อใช้ VectorPainter

    เปลี่ยนชื่อ Image(Painter) API เป็น PaintBox(Painter) สร้าง Vector ที่ประกอบได้ซึ่งทํางานเหมือน Image ที่ประกอบได้ ยกเว้นใช้ VectorAsset แทน ImageAsset (I9af9a, b/149030271)

  • สร้าง Composable ของรูปภาพเพื่อจัดการ การปรับขนาด/เลย์เอาต์ นอกเหนือจากการวาด ImageAsset ที่ระบุลงบนหน้าจอ Composable นี้ยังรองรับการวาดอินสแตนซ์ Painter ใดๆ โดยคำนึงถึงขนาดโดยธรรมชาติ รวมถึงรองรับขนาดคงที่ หรือขนาดขั้นต่ำที่กำหนด (Ibcc8f)

  • ตอนนี้ปุ่ม, FloatingActionButton และ Clickable มี enabled param แยกกันแล้ว มีการเปลี่ยนชื่อหรือจัดเรียงพารามิเตอร์บางรายการในปุ่มใหม่ (I54b5a)

  • เปลี่ยนชื่อ Image เป็น ImageAsset เพื่อให้เห็นความแตกต่างระหว่างข้อมูล Image กับ Image ที่สามารถใช้ร่วมกันได้ซึ่งกำลังจะเปิดตัว ซึ่งใช้ในการเข้าร่วมเลย์เอาต์และวาด เนื้อหาได้ดียิ่งขึ้น

    สร้างเมธอดส่วนขยายใน android.graphics.Bitmap Bitmap.asImageAsset() เพื่อสร้างอินสแตนซ์ของ ImageAsset ที่มีประโยชน์สำหรับการรวมการพัฒนาแอปพลิเคชัน Android แบบเดิมเข้ากับเฟรมเวิร์ก Compose (Id5bbd)

  • นำ Composable DrawImage ออกแล้ว ใช้ ImagePainter เพื่อวาดรูปภาพในเลย์เอาต์ที่มีอยู่ หรือใช้ SimpleImage เพื่อแสดงรูปภาพที่ใช้พื้นที่ (I595e1, b/149827027)

  • คอมโพเนนต์ Stack รองรับทิศทางจากขวาไปซ้าย (Ic9e00)

  • เพิ่ม Icon, IconButton และ IconToggleButton โดยนำ AppBarIcon ออก คุณสามารถแทนที่การใช้งาน AppBarIcon ที่มีอยู่ด้วย IconButton ได้โดยตรง และตอนนี้ปุ่มดังกล่าวจะมีเป้าหมายการสัมผัสที่ถูกต้องแล้ว ดูตัวอย่างเพื่อดูข้อมูลการใช้งาน และดูไอคอนสำหรับไอคอน Material ที่ระบุ ซึ่งคุณใช้กับคอมโพเนนต์เหล่านี้ได้โดยตรง (I96849)

  • นำ DrawShape ที่ใช้ร่วมกันออกแล้ว ใช้ตัวแก้ไข DrawBackground แทน (I7ceb2)

  • เพิ่ม AdapterList ซึ่งเป็นคอมโพเนนต์รายการแบบเลื่อนที่ จัดองค์ประกอบและวางรายการที่มองเห็นได้เท่านั้น ปัญหาที่ทราบในปัจจุบัน คือมีเฉพาะแนวตั้งและไม่สามารถจัดการการเปลี่ยนแปลง ในกรณีทั้งหมดของบัญชีย่อยได้ (Ib351b)

  • เพิ่มคอมโพเนนต์ที่เลื่อนได้ ซึ่งช่วยให้สร้างตัวเลื่อน/รายการที่กำหนดเองได้ (I5fd37)

  • เปลี่ยนชื่อพื้นหลังเป็น DrawBackground และตั้งค่าให้จดจำได้โดยค่าเริ่มต้น (Ia0bd3)

  • เพิ่มระยะห่าง เส้นขอบ รูปร่าง และพารามิเตอร์พื้นหลังลงใน Box (I05027, b/148147281)

  • เพิ่มคอมโพเนนต์ Canvas แล้ว Composable นี้ใช้พื้นที่บางส่วน (ผู้ใช้ระบุ) และช่วยให้คุณวาดโดยใช้ CanvasScope (I0d622) ได้

  • เปลี่ยนชื่อตัวปรับแต่ง Border เป็น DrawBorder (I8ffcc)

  • เพิ่มคอมโพเนนต์ Box สำหรับรวมเลย์เอาต์และฟังก์ชันการวาดภาพทั่วไป (I6e2a7)

  • ตอนนี้ Scroller จะแสดงลักษณะการทำงานของการปัดแบบเนทีฟของ Android (I922af, b/147493715)

  • แทนที่ DrawBorder ด้วย Border Modifier (Id335a)

  • เราเปลี่ยนชื่อ Modifier.tag เป็น Modifier.layoutId เพื่อไม่ให้เกิดความสับสนกับ Modifier.testTag (I995f0)

  • พารามิเตอร์เปอร์เซ็นต์เมื่อสร้างแนวทาง ConstraintLayout ได้รับการเปลี่ยนชื่อเป็นเศษส่วนแล้ว (Ida2db)

  • เพิ่มการรองรับระยะขอบของ Barrier ใน ConstraintLayout (I47ffe)

  • แก้ไขการรองรับ RTL ใน ConstraintLayout แล้ว เพิ่ม API ที่ไม่รองรับ RTL (I3b1c7)

  • เพิ่ม DSL ใหม่สำหรับ ConstraintLayout แล้ว โปรดดูรายละเอียดเพิ่มเติมในตัวอย่าง (Icaa9a)

  • เพิ่มคำอธิบายประกอบ @ExperimentalLayout ตอนนี้เราได้ติดแท็ก ConstraintLayout, FlowRow และ FlowColumn เพื่อระบุว่า API ของคอมโพสิตเหล่านี้จะมีการเปลี่ยนแปลง (I412a8)

  • เพิ่ม Modifier.padding(InnerPadding) แล้ว (I94985, b/157133803)

  • นำ RowAlign และ ColumnAlign ที่เลิกใช้งานแล้วใน Row และ Column ออก (If60d4, b/155858731)

  • นำ LayoutTag() ที่เลิกใช้งานแล้วออก โปรดใช้ Modifier.tag() แทน นำ Modifier.matchParent() ที่เลิกใช้งานแล้วออก โปรดใช้ Modifier.matchParentSize() แทน (If8044)

  • เพิ่มตัวแก้ไขเลย์เอาต์ offsetPx ซึ่งใช้เพื่อกำหนดออฟเซ็ต (แบบไดนามิก) ในหน่วย px ได้ (I5af57)

  • เลิกใช้งาน AlignmentLineOffset composable แล้ว โปรดใช้ตัวแก้ไข relativePaddingFrom() แทน นำ Composable CenterAlignmentLine ออกแล้ว (I60107)

  • เพิ่มตัวแก้ไขเลย์เอาต์ defaultMinSizeConstraints ซึ่งจะตั้งค่าข้อจำกัดด้านขนาดให้กับเลย์เอาต์ที่ห่อไว้เฉพาะเมื่อไม่ได้ระบุข้อจำกัดที่เกี่ยวข้องที่เข้ามา (0 สำหรับข้อจำกัดขั้นต่ำและอนันต์สำหรับข้อจำกัดสูงสุด) (I311ea, b/150460257)

  • ระบบนำคอนเทนเนอร์ออกแล้ว ใช้ Box แทน (Ibbc2b, b/151407926)

  • นำตัวแก้ไข LayoutWidth/Height/Size ที่เลิกใช้งานแล้วออก (Ib0bc1)

  • เพิ่มค่าพารามิเตอร์เริ่มต้นสำหรับตัวแก้ไขออฟเซ็ต (I37f06)

  • เพิ่มตัวแก้ไขการเว้นวรรคแบบสมมาตร (I39840)

  • นำตัวแก้ไข LayoutAspectRatio ที่เลิกใช้งานแล้วออก (I65a74)

  • นำตัวแก้ไข LayoutAlign ที่เลิกใช้งานแล้วออก (I10877)

  • แก้ไขข้อบกพร่องในตัวแก้ไขความกว้างและความสูงที่ทำให้เลย์เอาต์ที่ตัดคำได้รับการวัดโดยไม่มีข้อจำกัดแกนตรงข้าม (I210b8, b/154797971)

  • เพิ่มพารามิเตอร์ verticalGravity และ horizontalGravity ลงใน Row และ Column ตามลำดับ (I7dc5a)

  • อัปเดต wrapContentWidth และ wrapContentHeight เพื่อให้คาดหวังการจัดแนวแนวตั้งหรือแนวนอนแทนที่จะเป็นการจัดแนวใดก็ได้ เราได้อัปเดตตัวแก้ไขแรงโน้มถ่วงให้ยอมรับการจัดแนวแนวตั้งหรือแนวนอน อัปเดตแถว คอลัมน์ และกองซ้อนให้รองรับการจัดแนวต่อเนื่องที่กำหนดเองแล้ว (Ib0728)

  • ทำให้ Alignment สร้างอินสแตนซ์ได้ด้วยค่าที่กำหนดเอง เพิ่มการจัดแนว 1 มิติ (Ia0c05)

  • เปลี่ยนชื่อ EdgeInsets เป็น InnerPadding เปลี่ยนชื่อพารามิเตอร์ innerPadding ของปุ่ม Material เป็น padding (I66165)

  • ตอนนี้ alignToSiblings ยอมรับ Measured แทน Placeable แล้ว (I5788d)

  • เพิ่มตัวแก้ไขสำหรับการปรับขนาดให้กับการวัดขนาดจริงและเลิกใช้งานคอมโพเนนต์ที่ใช้เพื่อวัตถุประสงค์นี้ (I8295d)

  • เพิ่มการรองรับการปรับแต่งมิติข้อมูลขององค์ประกอบย่อยของ ConstraintLayout (Idb1a5)

  • นำ Composable ของ Wrap และ Center ที่เลิกใช้งานแล้วออก (I29e23)

  • เพิ่ม LayoutModifier2 ซึ่งเป็น API ใหม่สำหรับการกำหนดตัวแก้ไขเลย์เอาต์ และเลิกใช้งาน LayoutModifier (If32ac)

  • ตอนนี้คุณเข้าถึงสมาชิก RowScope และ ColumnScope ได้จากภายนอกแถวและคอลัมน์แล้ว (I3a641)

  • เลิกใช้งานคอนเทนเนอร์แล้ว โปรดใช้ Box แทน (I675ce, b/151407926)

  • เพิ่มตัวแก้ไข LayoutOffset สำหรับการชดเชยตำแหน่งเลย์เอาต์ (I0b8a3)

  • การรองรับ RTL ในเลย์เอาต์ Compose ในช่วงแรก (Ia5519)

  • อัปเดต LayoutAlign เพื่อไม่ให้เติมพื้นที่ว่างอีกต่อไป (I2b14f)

  • นำ Composable AspectRatio ออกเพื่อใช้ตัวปรับแต่งแทน ลบ FlexColumn, FlexRow ที่เลิกใช้งานแล้ว และตัวแก้ไขระยะห่าง (Iec8a7)

  • นำตัวแก้ไข LayoutInflexible สำหรับแถวและคอลัมน์ออก (I0d820)

  • ใช้แฮนเดิลการเลือกแบบลากเพื่อเปลี่ยนการเลือกสำหรับ TextField (I27032)

  • ใช้ LongPressAndDrag สำหรับการเลือก TextField (I17919)

การแก้ไขข้อบกพร่อง

  • FocusModifier เลิกใช้งานแล้วเพื่อใช้ Modifier.focus, Modifier.focusRequester, Modifier.focusObserver แทน เราเลิกใช้งาน FocusState และ FocusDetailedState แล้วเพื่อรองรับ FocusState2 (I46919, b/160822875, b/160922136)
  • เปลี่ยนชื่อเป็น runOnIdle (I83607)runOnIdleCompose
  • เราได้เปลี่ยนชื่อ API สำหรับการทดสอบหลายรายการเพื่อให้ใช้งานง่ายขึ้น เราได้เปลี่ยนชื่อ API ทั้งหมดที่ขึ้นต้นด้วย findXYZ เป็น onNodeXYZ API ทั้งหมดที่ขึ้นต้นด้วย doXYZ จะเปลี่ยนชื่อเป็น performXYZ (I7f164)
  • นำ Modifier.ripple ที่เลิกใช้งานไปก่อนหน้านี้ออก ตอนนี้ Clickable ใช้ Ripple เป็นข้อบ่งชี้เริ่มต้น (หากคุณตั้งค่า MaterialTheme {} ในแอปพลิเคชัน) ดังนั้นในกรณีส่วนใหญ่ คุณสามารถใช้ Clickable และรับข้อบ่งชี้ Ripple ได้ฟรี หากต้องการปรับแต่งพารามิเตอร์สี / ขนาด / ขอบเขตสำหรับ Ripple คุณสามารถสร้าง RippleIndication ด้วยตนเองและส่งไปยัง Clickable เป็นพารามิเตอร์การระบุ (I663b2, b/155375067)
  • นำ API การทดสอบขนาดที่ล้าสมัยออกแล้ว (Iba0a0)
  • ทำให้ LayoutNode เป็น API เวอร์ชันทดลอง (I4f2e9)
  • เราได้ใช้การล็อกการวางแนวการเลื่อนเวอร์ชัน 1 ใน Compose (I1ce7a, b/150289741)
  • ตอนนี้ป๊อปอัป กล่องโต้ตอบ และเมนูจะรับค่า MaterialTheme ตามบริบทแล้ว (Ia3665, b/156527485)
  • นำพารามิเตอร์ทิศทางเลย์เอาต์ออกจากบล็อกการวัดของฟังก์ชัน Layout() อย่างไรก็ตาม คุณสามารถดูทิศทางเลย์เอาต์ได้ภายในโค้ดเรียกกลับผ่านออบเจ็กต์ขอบเขตการวัด (Ic7d9d)
  • เพิ่ม AbsoluteArrangement - อนุญาตให้จัดเรียงองค์ประกอบย่อยภายในแถวโดยไม่ต้องมีการมิเรอร์อัตโนมัติใน RTL (I3a1df)
  • เราเลิกใช้งานคำอธิบายประกอบ @Untracked แล้ว แทนที่ด้วย @ComposableContract(tracked=false) (Id211e)
  • ก่อนการเปลี่ยนแปลงนี้ ปลั๊กอินคอมไพเลอร์ Compose จะดักจับการเรียกไปยังตัวสร้างภายในฟังก์ชัน @Composable อย่างไม่เหมาะสมหากมี (I5205a, b/158123804)
  • เพิ่ม viewModel() composable ซึ่งช่วยให้สร้างหรือรับ ViewModel ที่สร้างไว้แล้วได้ในลักษณะเดียวกับที่ทำงานใน Activity หรือ Fragment (I5fdd1)
  • ปรับโครงสร้างคลาส Radius ให้เป็น คลาสอินไลน์ นำวิธีการสร้างคอมแพเนียนออก เพื่อใช้ตัวสร้างฟังก์ชัน ที่มีพารามิเตอร์เริ่มต้นเพื่อให้รัศมี ตามแกน y ตรงกับพารามิเตอร์รัศมีแกน x ที่จำเป็น

    อัปเดต DrawScope.drawRoundRect เพื่อใช้ พารามิเตอร์รัศมีเดียวแทนค่าลอยตัว 2 ค่าแยกกัน สำหรับรัศมีตามแกน x และ y (I46d1b)

  • แทนที่การใช้งานคลาส Px ในคลาส Compose ต่างๆ ซึ่งเป็นส่วนหนึ่งของความพยายามในการปรับโครงสร้างครั้งใหญ่เพื่อใช้เฉพาะ Dp และประเภทดั้งเดิมสำหรับพารามิเตอร์พิกเซล ลบคลาส Px ทั้งหมด (I3ff33)

  • แทนที่การใช้คลาส Px ในคลาส Compose ต่างๆ ซึ่งเป็นส่วนหนึ่งของความพยายามในการปรับโครงสร้างขนาดใหญ่เพื่อใช้เฉพาะ Dp และประเภทดั้งเดิมสำหรับพารามิเตอร์พิกเซล (I086f4)

  • แทนที่การใช้งานคลาส Px ในคลาส Compose ต่างๆ ซึ่งเป็นส่วนหนึ่งของความพยายามในการปรับโครงสร้างขนาดใหญ่เพื่อใช้เฉพาะ Dp และประเภทดั้งเดิมสำหรับพารามิเตอร์พิกเซล (Id3434)

  • แทนที่การใช้งานคลาส Px ในคลาส Compose ต่างๆ ซึ่งเป็นส่วนหนึ่งของความพยายามในการปรับโครงสร้างขนาดใหญ่เพื่อใช้เฉพาะ Dp และประเภทดั้งเดิมสำหรับพารามิเตอร์พิกเซล (I97a5a)

  • เคอร์เซอร์ของ TextField มีภาพเคลื่อนไหวแบบกะพริบ (Id10a7)

  • ท่าทางสัมผัสบางส่วนไม่จำเป็นต้องส่งต่อ GestureToken (Id7ae5) อีกต่อไป

  • แทนที่การใช้คลาส Px ในคลาส Compose ต่างๆ ซึ่งเป็นส่วนหนึ่งของความพยายามในการปรับโครงสร้างขนาดใหญ่ เพื่อให้ใช้เฉพาะ Dp และประเภทดั้งเดิมสำหรับพารามิเตอร์พิกเซล (I57bff)

  • เราเลิกเลิกการเลิกใช้งาน Modifier.semantics เพื่ออนุญาตให้ใช้กับคอมโพเนนต์ระดับสูง (I4cfdc)

  • เปลี่ยนชื่อ AnnotatedString.Builder.addAnnotationString เป็น addStringAnnotation (I5059e)

  • อัปเดต Alignment API และเพิ่มการรองรับการจัดแนวแบบสัมบูรณ์ (ซึ่งจะไม่พลิกอัตโนมัติในบริบท RTL) (I38cd3)

  • เลย์เอาต์และองค์ประกอบย่อย LayoutModifier สามารถวัดได้ด้วยทิศทางเลย์เอาต์ที่แตกต่างกัน (Ibd731)

  • เพิ่มพารามิเตอร์ rect ที่ไม่บังคับเพิ่มเติมลงใน ImagePainter เพื่อรองรับ การวาดภาพส่วนย่อยของ ImageAsset พื้นฐาน (I0ea9e)

  • แก้ไขการขัดข้องใน AdapterList เมื่อนำรายการออก (Ic64b0, b/153195921)

  • เราได้เปลี่ยนวิธีวัดเลย์เอาต์แรกที่คุณใส่ไว้ในบล็อก activity.setContent { } ก่อนหน้านี้ระบบจะบังคับให้วิดเจ็ตเติมเต็มหน้าจอกิจกรรมทั้งหมด แต่ตอนนี้วิดเจ็ตจะทำงานราวกับว่าคุณวางเลย์เอาต์ไว้ใน Stack โดยวิดเจ็ตจะมีขนาดเล็กกว่าหน้าจอและจะวางอยู่ที่มุมซ้ายบนของหน้าจอ หากต้องการให้มีลักษณะการทำงานแบบเดิม คุณสามารถใช้ Modifier.fillMaxSize() กับเลย์เอาต์ได้ (Ie88a7, b/153453714)

  • เปลี่ยนชื่อโมดูล ui-text-compose เป็น ui-text ui-text ตอนนี้มี Composable ของ CoreText และ CoreTextField (Ib7d47)

  • เปลี่ยนชื่อโมดูล ui-text เป็น ui-text-core (I57dec)

  • ย้าย Composable ui-framework/CoreText, CoreTextField ไปไว้ภายใต้ ui-text-compose คุณอาจต้องใส่ ui-text-compose ในโปรเจ็กต์ (I32042)

  • ตอนนี้ runOnIdleCompose และ runOnUiThread เป็นฟังก์ชันส่วนกลาง แทนที่จะเป็นเมธอดใน ComposeTestRule (Icbe8f)

  • ย้ายตัวดำเนินการมอบสิทธิ์พร็อพเพอร์ตี้ [Mutable]State ไปยังส่วนขยาย เพื่อรองรับการเพิ่มประสิทธิภาพการมอบสิทธิ์พร็อพเพอร์ตี้ Kotlin 1.4 ผู้โทรต้องเพิ่ม imports เพื่อใช้ by state { ... } หรือ by mutableStateOf(...) ต่อไป (I5312c)

  • ตอนนี้ DrawLayerModifier และ drawLayer() จะตั้งค่าเริ่มต้น clipToBounds และ clipToOutline เป็น false (I0eb8b, b/152810850)

  • เปลี่ยนชื่อ LayoutResult เป็น MeasureResult (Id8c68)

  • เลิกใช้งาน Composable ของ Center แล้ว ควรแทนที่ด้วยตัวแก้ไข LayoutSize.Fill + LayoutAlign.Center หรือด้วย Composable Box หรือ Stack อย่างใดอย่างหนึ่งที่มีการใช้ตัวแก้ไขที่เหมาะสม (Idf5e0)

  • เปลี่ยนชื่อ LayoutFlexible เป็น LayoutWeight เปลี่ยนชื่อพารามิเตอร์ "แน่น" เป็น "เติม" (If4738)

  • เราได้เปลี่ยน DrawVector จากฟังก์ชันที่ใช้ร่วมกันได้ทั่วไป เป็นการแสดงผล Modifier drawVector() ที่ จะวาดเวกเตอร์เป็นพื้นหลังของเลย์เอาต์ (I7b8e0)

  • แทนที่ฟังก์ชันที่ใช้ร่วมกันได้ Clip ด้วยตัวแก้ไข drawClip() DrawClipToBounds เป็นตัวแก้ไขที่สะดวก ในการใช้เมื่อคุณต้องการตัดเฉพาะขอบเขตเลเยอร์ ด้วยรูปร่างสี่เหลี่ยมผืนผ้า (If28eb)

  • แทนที่ฟังก์ชันที่ใช้คอมโพสได้ DrawShadow ด้วยตัวแก้ไข drawShadow() ตอนนี้ระบบจะวาดเงาเป็นส่วนหนึ่งของ LayerModifier แล้ว (I0317a)

  • ย้าย androidx.compose.ViewComposer ไปยัง androidx.ui.node.UiComposer นำ androidx.compose.Emittable ออกแล้ว เนื่องจากซ้ำกับ ComponentNode. androidx.compose.ViewAdapters จึงถูกนำออก ซึ่งไม่ใช่กรณีการใช้งานที่รองรับอีกต่อไป เลิกใช้งาน 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)

  • เลิกใช้งานคอมโพสฟังก์ชัน Wrap แล้ว โดยสามารถแทนที่ได้ด้วยตัวแก้ไข LayoutAlign หรือด้วย Composable ของ Stack (Ib237f)

  • ทำให้ระบบส่งต่อทิศทางเลย์เอาต์จากโหนดเลย์เอาต์หลักไปยังโหนดลูก เพิ่มตัวปรับแต่งทิศทางเลย์เอาต์แล้ว (I3d955)

  • เปลี่ยนชื่อ Painter.toModifier เป็น Painter.asModifier เนื่องจาก Modifier ที่สร้างขึ้นใหม่มีการอ้างอิงถึง Painter เดิมที่แชร์ในอินสแตนซ์ Modifier หลายรายการได้ (I7195b)

  • รองรับทิศทางจากขวาไปซ้ายในตัวแก้ไข LayoutPadding (I9e8da)

  • เราได้รวม Density และ DensityScope ไว้ในอินเทอร์เฟซเดียว ตอนนี้คุณใช้ DensityAmbient.current แทน ambientDensity() ได้แล้ว แทนที่จะใช้ withDensity(density) ให้ใช้ with(density) (I11cb1)

  • นำคลาส ValueHolder ออกแล้ว ปรับโครงสร้างคลาส AnimatedValue, AnimatedFloat เพื่อ ทำให้ฟิลด์ค่าภาพเคลื่อนไหวเป็นนามธรรมเพื่อให้คลาสย่อยสามารถดูการอัปเดตค่าได้

    • เพิ่มคลาสโมเดลสำหรับ AnimatedValue, AnimatedFloat ฯลฯ
    • เพิ่มชุด API @Composable แบบ Lightweight ใหม่สำหรับการเปลี่ยนค่าแบบเคลื่อนไหว
    • (I79530)
  • การเปลี่ยนแปลงที่ไม่รองรับการทำงานย้อนหลังใน Ambient API ดูรายละเอียดได้ในบันทึกและเอกสารประกอบของ Ambient<T> (I4c7ee, b/143769776)

  • ตอนนี้ตำแหน่งบรรทัดการจัดแนว Int ที่แสดงผลจาก Placeable#get(AlignmentLine) จะไม่ใช่ค่าว่างแล้ว หากไม่มีเส้นแนวที่ค้นหา ระบบจะแสดงผล AlignmentLine.Unspecified (I896c5, b/158134875)

  • แก้ไขข้อบกพร่องของ ConstraintLayout ที่ทำให้เกิดข้อขัดข้องในการจัดองค์ประกอบใหม่ (Ibee5a, b/158164341)

  • มีการเปลี่ยนแปลง API ของ Lambda ที่ต่อท้าย WithConstraints ตอนนี้แทนที่จะมี 2 พารามิเตอร์ ก็จะมีขอบเขตของตัวรับซึ่งนอกเหนือจากข้อจำกัดและ layoutDirection แล้ว ยังมีพร็อพเพอร์ตี้ minWidth, maxWidth, minHeight และ maxHeight ใน Dp (I91b9a, b/149979702)

  • เปลี่ยนชื่อ LayoutModifier2 เป็น LayoutModifier (Id29f3)

  • ฟังก์ชันการวัดค่าโดยธรรมชาติใน Layout และ LayoutModifier2 มีตัวรับ IntrinsicMeasureScope แล้ว ซึ่งมี API การค้นหาค่าโดยธรรมชาติพร้อมทิศทางการจัดวางที่ส่งต่อโดยนัย (Id9945)

  • เลิกใช้งาน LayoutDirectionAmbient แล้ว หากต้องการอ่านทิศทางเลย์เอาต์ที่กำหนดโดยภาษา ให้ใช้ localeLayoutDirection ใน ConfigurationAmbient (I851b1)

  • เพิ่ม positionInParent และ boundsInParent สำหรับ LayoutCoordinates (Icacdd, b/152735784)

  • เลิกใช้งาน Composable ของ ParentData แล้ว คุณควรสร้างตัวแก้ไขที่ใช้การติดตั้งอินเทอร์เฟซ ParentDataModifier หรือใช้ตัวแก้ไข LayoutTag หากเพียงต้องการติดแท็กลูกเลย์เอาต์เพื่อจดจำภายในบล็อกการวัด (I51368, b/150953183)

  • เพิ่ม OnPositionedModifier และ OnChildPositionedModifier เพื่อแทนที่ฟังก์ชันที่ใช้ได้ของ OnPositioned และ OnChildPositioned (I2ec8f)

  • ไม่อนุญาตให้ใช้ระยะเว้นเชิงลบใน LayoutPadding ควรใช้ LayoutOffset แทนสำหรับการชดเชยตำแหน่งเชิงลบ (Ifb5b1)

  • WithConstraints got LayoutDirection parameter (I6d6f7)

  • อัปเดตฟีเจอร์แฟล็ก ComposeFlags.COMPOSER_PARAM เป็น true ซึ่งจะเปลี่ยนกลยุทธ์การสร้างโค้ดสำหรับปลั๊กอินการเขียน ในระดับสูง การดำเนินการนี้จะทำให้ฟังก์ชัน @Composable สร้างขึ้นพร้อมกับพารามิเตอร์สังเคราะห์เพิ่มเติม ซึ่งจะส่งผ่านไปยังการเรียก @Composable ที่ตามมาเพื่อให้รันไทม์จัดการการดำเนินการได้อย่างเหมาะสม การเปลี่ยนแปลงนี้เป็นการเปลี่ยนแปลงที่สำคัญในระดับไบนารี แต่ควรคงความเข้ากันได้ในระดับแหล่งที่มาในการใช้งาน Compose ที่ได้รับอนุญาตทั้งหมด (I7971c)

  • เปลี่ยน LayoutCoordinates เพื่อให้ providedAlignmentLines เป็น Set แทนที่จะเป็น Map และให้ LayoutCoordinates ใช้โอเปอเรเตอร์ get() แทนเพื่อดึงค่า ซึ่งจะช่วยให้ผู้แก้ไขแก้ไขค่าอย่างน้อย 1 ค่าของชุดได้ง่ายขึ้นโดยไม่ต้องสร้างคอลเล็กชันใหม่สำหรับผู้แก้ไขแต่ละราย (I0245a)

  • LayoutCoordinates ไม่มีพร็อพเพอร์ตี้ตำแหน่งอีกต่อไป พร็อพเพอร์ตี้ position จะไม่มีผลเมื่อพิจารณา LayoutModifiers, rotation หรือการปรับขนาด นักพัฒนาแอปควรใช้ parentCoordinates และ childToLocal() เพื่อคำนวณการเปลี่ยนจาก LayoutCoordinate หนึ่ง ไปยังอีกอันหนึ่งแทน

    LayoutCoordinates ใช้ IntPxSize สำหรับพร็อพเพอร์ตี้ขนาดแทน PxSize เลย์เอาต์ใช้ขนาดพิกเซลจำนวนเต็มสำหรับเลย์เอาต์ ดังนั้นขนาดเลย์เอาต์ทั้งหมด ควรใช้จำนวนเต็มและไม่ใช่ค่าทศนิยม (I9367b)

  • การปรับปรุงพื้นผิว API ของข้อจำกัด (I0fd15)

  • เพิ่ม TextDirection.Content (I48f36)

  • ปรับเมนูแถบเครื่องมือเพื่อให้แสดงการคัดลอก ตัด วาง ได้อย่างถูกต้อง (Id3955)

  • เพิ่ม FloatingToolbar สำหรับการเลือก TextField (Ie8b07)

  • เปลี่ยนชื่อ TextDirectionAlgorithm เป็น TextDirection (I75ce8)

  • เปลี่ยนชื่อ TextDirection เป็น ResolvedTextDirection (I3ff38)

  • เพิ่ม HapticFeedback ลงในการเลือก TextField (I58050)

  • เพิ่มวิธีการคัดลอก ตัด และวางลงในการเลือก TextField (Idb70b)

  • ลบ TestTag และ Semantics แล้ว ให้ใช้ 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 ใหม่พร้อมใช้งานแล้ว ตอนนี้ Activity ที่คุณใช้กับ UI ของ Compose ควรขยาย androidx.activity.ComponentActivity (หรือ AppCompatActivity) ระบบได้เลิกใช้งาน setContent ใน android.app.Activity แล้ว (Idb25a, b/153141084)

  • แทนที่ชื่อแพ็กเกจ ui-android-text (androidx.text) ด้วย androidx.ui.text.platform เพื่อให้สอดคล้องกับนโยบาย androidx (I42711)