UI ของ Compose

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

โครงสร้าง

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

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

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

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

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

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

Groovy

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

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

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

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

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

ความคิดเห็น

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

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

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

เวอร์ชัน 1.9

เวอร์ชัน 1.9.0-beta02

2 กรกฎาคม 2025

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

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

  • เปลี่ยนออบเจ็กต์คู่ให้เป็นแบบทดลองเพื่อให้ตรงกับคลาส (I8452a)
  • นำ Flag การทดสอบ isTrackFocusEnabled (I003fd) ออกแล้ว

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

  • เมื่อไม่มีWindowInsetsการละเมิดเนื้อหาของComposeView ระบบจะไม่ระบุค่าWindowInsetsRulers (I71221)

เวอร์ชัน 1.9.0-beta01

18 มิถุนายน 2025

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

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

  • เปลี่ยน ShadowContext ให้เป็นอินเทอร์เฟซที่ปิดผนึก (I3ce40)
  • เพิ่มวิธีสร้างเหตุการณ์สัมผัสทางอ้อมข้ามโมดูล (สําหรับการทดสอบ) (I22e4c)
  • ทำให้IndirectTouchEvent.nativeEventเป็นเวอร์ชันทดลอง (I6fda5)
  • แก้ไข API Surface ตามความคิดเห็นจากสภา API (Ibf378)
  • นำค่าคงที่ FrameRateCategory.NoPreference ออก เปลี่ยนชื่อ Modifier.requestedFrameRate เป็น Modifier.preferredFrameRate (I2f976)
  • WindowInsetsRulers: เปลี่ยน rulersIgnoringVisibility เป็นสูงสุด เปลี่ยน getDisplayCutoutBounds() ให้เป็นฟังก์ชันส่วนขยายของ PlacementScope WindowInsetsAnimationProperties เปลี่ยนเป็น WindowInsetsAnimation และ getAnimationProperties() เปลี่ยนเป็น getAnimation() แล้ว (I3816f)
  • เปลี่ยนคลาส ShadowParams เป็น Shadow (I11cca)
  • เปลี่ยนแพ็กเกจสำหรับ API อัตราเฟรมจาก androidx.compose.ui.ui เป็น androidx.compose.ui (I8994e)
  • เปลี่ยน InsetsRulers ให้เป็นโค้ดทั่วไปที่มีชื่อ WindowInsetsRulers ปรับ API ให้เรียบง่ายขึ้นเพื่อให้การแทรกทั้งหมดเป็น WindowInsetsRulers แยกพร็อพเพอร์ตี้ภาพเคลื่อนไหวที่ไม่ใช่ไม้บรรทัดไปยังคลาส AnimationProperties WindowInsetsRulers.innermostOf() ใช้เพื่อผสาน WindowInsetsRulers หลายรายการได้ (I2f0c6, b/415012444)
  • เพิ่ม API เครื่องมือสำหรับการแยกวิเคราะห์ข้อมูลแหล่งที่มาซึ่งคอมไพเลอร์ Compose เพิ่ม (Iceaf9, b/408492167)

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

  • เราได้นำแฟล็กสำหรับ isGetFocusedRectReturnEmptyEnabled ออกแล้วเนื่องจากฟีเจอร์นี้ได้รับการยืนยันอย่างสมบูรณ์แล้ว (Ife722)
  • แก้ไขข้อบกพร่องใน performScrollToNode ซึ่งในบางกรณีไม่ถึงโหนดเป้าหมาย การแก้ไขนี้จะช่วยให้การเชื่อมต่อไปถึงโหนดเป้าหมายได้เสมอในกรณีดังกล่าว ผลข้างเคียงของการเปลี่ยนแปลงนี้คือตำแหน่งการเลื่อนที่แน่นอนเมื่อสิ้นสุดการดำเนินการอาจแตกต่างออกไป ซึ่งส่งผลต่อการทดสอบภาพหน้าจอและการทดสอบที่ใช้สมมติฐานเกี่ยวกับตำแหน่งการเลื่อนที่แน่นอน (I2c8a1)

เวอร์ชัน 1.9.0-alpha04

4 มิถุนายน 2025

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

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

  • เพิ่ม API ตัวแก้ไขสำหรับเงาที่ปรับแต่งได้ (I2058d, b/160665122)
  • เพิ่มพร็อพเพอร์ตี้ SemanticsModifierNode.isImportantForBounds ที่กำหนดว่าควรพิจารณาโหนดเมื่อคำนวณขอบเขตหรือไม่ โดยค่าเริ่มต้น พร็อพเพอร์ตี้จะเป็นจริง และสามารถตั้งค่าเป็นเท็จเพื่อระบุว่าไม่ควรนำโหนดมาพิจารณาสำหรับขอบเขต (I7ebec)
  • เพิ่มSemanticsPropertyKeyฟังก์ชัน Factory สำหรับประกาศพร็อพเพอร์ตี้ความหมายเฉพาะของ Android ที่พร้อมใช้งานเป็นส่วนเสริมการช่วยเหลือพิเศษซึ่งแสดงผ่าน AccessibilityNodeInfo.getExtras (I2ed51)
  • นำการใช้งาน ComposeUiFlags.isRemoveFocusedViewFixEnabled ออกและเลิกใช้ฟีเจอร์นี้ (I50328)
  • เปิดตัวเฟรมเวิร์กเงาแบบใหม่ที่ปรับแต่งได้ ซึ่งรวมถึง DropShadowPainter และ InnerShadowPainter รวมถึงDropShadow/InnerShadowด้วย โครงสร้างพื้นฐานแบบเงาจะได้รับการแชร์เพื่อให้สามารถแชร์เงาที่สร้างขึ้นเดียวกันในตำแหน่งที่เรียกใช้หลายแห่งได้โดยไม่ต้องสร้างเงาใหม่ n ครั้ง (I24f7a, b/160665122)
  • แนะนำ CompositeShader และ CompositeShaderBrush ซึ่งสร้างผลลัพธ์ที่คอมโพสิตระหว่าง 2 เชเดอร์ นอกจากนี้ ให้เพิ่ม ShaderBrush#transform เพื่อตั้งค่าเมทริกซ์การเปลี่ยนรูปแบบสำหรับ Shader (I2621a, b/160665122)

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

  • แก้ไขข้อบกพร่องใน NestedScrollInteropConnection ซึ่งทำให้วิธีการปัดอยู่ในลำดับที่ไม่ถูกต้องเมื่อเทียบกับมุมมอง (I56ad4)
  • ก่อนหน้านี้ กล่องโต้ตอบที่วาดแบบเต็มหน้าจอจะไม่ได้วาดภายในภูมิภาครอยบากของจอแสดงผล เราแก้ไขข้อบกพร่องนี้เพื่อให้กล่องโต้ตอบที่มี decorFitsSystemWindows = false และ usePlatformDefaultWidth = false สามารถใช้บริเวณหน้าจอรอยบากได้ (I9e975)
  • แก้ไขข้อบกพร่องที่TalkBackไม่วาดตัวบ่งชี้โฟกัสสีเขียวหลังจากเปิดไว้ขณะที่แอป Compose ทำงานในเบื้องหลัง (Ifd12a)

เวอร์ชัน 1.9.0-alpha03

20 พฤษภาคม 2025

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

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

  • Flag ComposeUiFlags.isGetFocusedRectReturnEmptyEnabled ทำให้เมื่อไม่มีอะไรที่โฟกัสได้ใน ComposeView ระบบจะตั้งค่า Rect เป็นค่าว่าง ซึ่งจะป้องกันไม่ให้การค้นหาโฟกัสเลือกมุมมองที่จะโฟกัส ซึ่งมีความสำคัญอย่างยิ่งในกรณีที่ IME มีตัวเลือกถัดไปและอาจพยายามโฟกัสที่ ComposeView และ requestFocus() ไม่สำเร็จ (Ibd0e2, b/369256395)
  • ขอแนะนำฟีเจอร์แจ้งว่าไม่เหมาะสม isNestedScrollDispatcherNodeFixEnabled (I0d24a)
  • เปลี่ยนชื่อ DialogProperties' dialogContentTitle เป็น windowTitle (Ibd27b)
  • Modifier.onFirstVisible และModifier.onVisibilityChanged ซึ่งเป็นตัวแก้ไขระดับสูงที่สร้างขึ้นบน Modifier.onLayoutRectChanged ตัวแก้ไขเหล่านี้สร้างขึ้นมาเพื่อจัดการข้อกำหนดของแอปพลิเคชันทั่วไปจำนวนมากโดยเฉพาะ เช่น การบันทึกการแสดงผล การเล่นวิดีโออัตโนมัติ เป็นต้น ตัวแก้ไขเหล่านี้สร้างขึ้นโดยคำนึงถึงประสิทธิภาพเพื่อให้สามารถใช้ในสถานการณ์ที่สำคัญซึ่งอิงตามรายการได้โดยไม่ต้องเสี่ยงต่อการลดประสิทธิภาพการเลื่อน นอกจาก API ตัวแก้ไขเหล่านี้แล้ว เรายังได้เพิ่ม API อื่นๆ เพื่อ RelativeLayoutBounds เพื่อรองรับ Use Case เหล่านี้ รวมถึงช่วยให้นักพัฒนาแอปสร้างตัวแก้ไขที่กำหนดเองที่คล้ายกันซึ่งเหมาะกับ Use Case ของตนเองได้อย่างง่ายดาย (I759b8)
  • เปลี่ยน setDiagnosticStackTraceEnabled เป็น "ทดลอง" เพื่อรองรับการพัฒนาฟีเจอร์นี้ในอนาคต (I11db3)
  • เปิดตัว Modifier.scrollable2D, Scrollable2DState และ API ที่แสดงร่วมสำหรับการสร้างสถานะ นอกจากนี้ ยังได้เปิดตัวฟังก์ชันส่วนขยายการเลื่อนทั่วไปด้วย (Ic61c8, b/214410040)
  • ค่าสี 64 บิตของ Compose เปรียบเทียบกับ Android โดยตรงไม่ได้ColorLongs เนื่องจากรหัสพื้นที่สีบางรายการไม่เป็นไปตามลำดับ เราได้เพิ่ม API ใหม่ 2 รายการ ได้แก่ toColorLong() และ fromColorLong() เพื่อใช้แปลงเป็นและจากพื้นที่สีของ Android (I36899)
  • เปิดตัว ViewConfiguration.minimumFlingVelocity เพื่อให้ควบคุมความเร็วในการปัดขอบเขตล่างได้ (I11aab)

เวอร์ชัน 1.9.0-alpha02

7 พฤษภาคม 2025

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

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

  • เพิ่ม dialogContentTitle ใน DialogProperties ซึ่งจะตั้งค่าชื่อหน้าต่างเนื้อหา bf9d670

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

  • เราได้ปิดใช้ไม้บรรทัดขอบหน้าต่างชั่วคราวขณะแก้ไขการทดสอบภายใน 8d1402
  • แก้ไขวิธีเพิ่มการเปลี่ยนแปลงอินพุตของเคอร์เซอร์ใน VelocityTracker ใน DragGestureNode ซึ่งควบคุมได้ด้วยฟีเจอร์ใหม่ isAdjustPointerInputChangeOffsetForVelocityTrackerEnabled254ddb

เวอร์ชัน 1.9.0-alpha01

23 เมษายน 2025

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

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

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

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

  • นำ Flag ออกเพื่อเปิดใช้คำสั่ง Trace สำหรับเครื่องมือติดตามเส้นทาง Hit (แก้ไขข้อบกพร่อง) (I1b2a1)
  • เปลี่ยน InnerRectRulers และ OuterRectRules ให้เป็นเมธอดแทน นำพารามิเตอร์ชื่อออกจาก RectRulers Public API DerivedRulers เป็นตัวเลือกของเครื่องมือสร้างสำหรับไม้บรรทัดแนวตั้งและแนวนอนแล้ว MergedHorizontalRulers และ MergedVerticalRulers ถูกแทนที่ด้วยเมธอด minOf และ maxOf เพื่อสร้างอินสแตนซ์ (Iee89f, b/408192133)
  • เลิกใช้งาน androidx.compose.ui.LocalSavedStateRegistryOwner เพื่อให้ใช้ androidx.savedstate.compose.LocalSavedStateRegistryOwner แทน (I5439f, b/377946781)
  • เพิ่ม Modifier.keepScreenOn เพื่อตั้งค่าให้จอแสดงผลไม่เข้าสู่โหมดพักขณะนำเสนอ (Ib5af4, b/408284174)
  • เพิ่มพร็อพเพอร์ตี้ความหมายใหม่ Shape ซึ่งอาจตั้งค่าได้เมื่อรูปร่างขององค์ประกอบ UI แตกต่างจากสี่เหลี่ยมผืนผ้าล้อมรอบ เช่น สี่เหลี่ยมผืนผ้าที่มีมุมโค้ง (I1376f)
  • แก้ไขปัญหาเกี่ยวกับการส่งต่อเหตุการณ์ของเคอร์เซอร์ใน AndroidViews และเพิ่ม Flag isPointerInteropFilterDispatchingFixEnabled เพื่อป้องกันการเปลี่ยนแปลง (I0e272, b/372055500, b/408002332)
  • FocusRestorer จะไม่ปักหมุดรายการที่โฟกัสก่อนหน้านี้อีกต่อไป ผู้ใช้ควรใช้คีย์เพื่อให้แน่ใจว่ารายการที่โฟกัสก่อนหน้านี้มีแฮชองค์ประกอบเดียวกัน เพื่อให้ระบบคืนค่าโฟกัสได้สำเร็จ (I4203b, b/330696779)
  • อนุญาตให้ฟีเจอร์เขียนทริกเกอร์ ViewTreeObserver.OnScrollChanged ลักษณะการทำงานนี้จะเปิดตัวภายใต้ฟีเจอร์ทดลอง isOnScrollChangedCallbackEnabled นอกจากนี้ เรายังได้เปิดตัวฟังก์ชันส่วนขยายของ DelegatableNode dispatchOnScrollChanged ด้วย (I34b9d, b/238109286)
  • currentCompositeKeyHash เลิกใช้งานแล้ว โปรดใช้ currentCompositeKeyHashCode แทน API การแทนที่จะเข้ารหัสแฮชเดียวกันด้วยบิตที่มากขึ้น ซึ่งจะช่วยลดโอกาสที่กลุ่มแบบสุ่ม 2 กลุ่มที่ไม่เกี่ยวข้องในลำดับชั้นการจัดองค์ประกอบจะมีคีย์แฮชเดียวกันได้อย่างมาก (I4cb6a, b/177562901)
  • โปรเจ็กต์ที่เผยแพร่ด้วย Kotlin 2.0 ต้องใช้ KGP 2.0.0 ขึ้นไปจึงจะใช้งานได้ (Idb6b5)
  • เพิ่มการรองรับการตรวจสอบ Lint สำหรับ FocusRequester เพื่อให้แน่ใจว่าระบบจะจดจำไว้ในการเขียน (I6bf91)
  • เพิ่มความสามารถในการตั้งค่าอัตราเฟรมที่ต้องการหรือหมวดหมู่อัตราเฟรมใน Composable ที่ควรแสดงที่ (Ie5201)
  • แสดง MotionEvent เนทีฟใน Android (I17286)
  • เพิ่ม getChecked() + setChecked(int) เลิกใช้งาน isChecked + setChecked(boolean) (Iaac9d)
  • ตอนนี้ตัวแก้ไข graphicsLayer ยอมรับ blendMode และ colorFilter (Iab0e6) แล้ว
  • เพิ่มLocalResourcesองค์ประกอบที่อยู่ใกล้กับทรัพยากรของคำค้นหา การเรียกใช้ LocalResources.current จะจัดองค์ประกอบใหม่เมื่อการกำหนดค่าเปลี่ยนแปลง ดังนั้นการเรียกใช้ API เช่น stringResource() จะแสดงค่าที่อัปเดตแล้ว (I50c13, b/274786917)
  • เปิดเผย API เวอร์ชันทดลองสำหรับ Composable เพื่อจัดการเหตุการณ์การแตะโดยอ้อม (Icff57)
  • รุ่นนี้ปรับปรุงการรายงานข้อยกเว้นที่ไม่ได้จัดการซึ่งเกิดขึ้นในระหว่างเลย์เอาต์และขั้นตอนการวาดเนื้อหาที่ใช้ร่วมกันได้ ก่อนหน้านี้ ข้อยกเว้นที่ไม่ได้แคชไว้ที่นี่จะทำให้โปรแกรมเรียกใช้การทดสอบขัดข้องและสิ้นสุดชุดทดสอบก่อนเวลาอันควร ตอนนี้คุณสามารถรายงานข้อยกเว้นเหล่านี้ได้อย่างราบรื่นมากขึ้นโดยไม่ต้องสิ้นสุดชุดการทดสอบ (I9928b, b/314128080)
  • เลิกใช้งาน GlobalAssertions API เวอร์ชันทดลอง โดยมีจุดประสงค์เพื่อใช้ในการตรวจสอบการช่วยเหลือพิเศษ โปรดดู enableAccessibilityChecks() แทน (I50aa5)
  • SemanticsNodeInteraction.performTextInputSelection ไม่ใช่ฟีเจอร์ทดลองอีกต่อไป และตอนนี้รองรับพารามิเตอร์ relativeToOriginal เพิ่มเติม ซึ่งช่วยให้คุณใช้การเลือกกับข้อความเดิมที่ไม่ได้แปลงหรือข้อความที่แปลงแล้วก็ได้ (I3a905, b/261561038, b/277018945)
  • เปิดตัว API สำหรับสร้างรายการหัวข้อย่อยที่กำหนดเองผ่าน AnnotatedString (I1d066, b/383269496, b/139326648)
  • เลิกใช้งาน runWithTimingDisabled เพื่อใช้ runWithMeasurementDisabled แทน ซึ่งอธิบายลักษณะการทำงานได้ชัดเจนกว่า นั่นคือระบบจะหยุดเมตริกทั้งหมดชั่วคราว นอกจากนี้ ให้แสดงคลาสซูเปอร์คลาส MicrobenchmarkScope เนื่องจากไม่สามารถประกาศฟังก์ชัน runWithMeasurementDisabled ซ้ำเพื่อเปิดการเข้าถึงได้เนื่องจากเป็นฟังก์ชันอินไลน์ (I9e23b, b/389149423, b/149979716)
  • อัปเดต API อุปกรณ์ ui-tooling ให้รวมอุปกรณ์รุ่นใหม่ๆ (Ia2ac1)
  • เพิ่มแนวตั้งของแท็บเล็ตในคอลเล็กชันขนาดหน้าจอแสดงตัวอย่างเพื่อช่วยให้นักพัฒนาแอปพิจารณาหน้าต่างที่ใหญ่ขึ้น (Ia1976)
  • เปิดตัว Trace Value API สำหรับการทำเครื่องหมาย/บันทึกการติดตามพร้อมค่า ณ จุดเวลาที่กำหนด ค่าการติดตามจะแสดงใน Prefetto เป็นเลนใหม่ที่ดูได้ผ่านไทม์ไลน์ของการติดตาม ใน Android จะมีการติดตั้งใช้งานโดยใช้ Trace.setCounter (Idcf48)

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

  • แก้ไขการเรียกใช้ Observer ของฟังก์ชัน remember ใน Composition ที่หยุดชั่วคราวได้เพื่อหลีกเลี่ยงการเรียกใช้ฟังก์ชัน remember/forget ในการเรียกใช้เดียวกัน (I570b2, b/404645679, b/407931790)
  • ตอนนี้ตั้งค่า android:dialogTheme เพื่อควบคุมพร็อพเพอร์ตี้ของกล่องโต้ตอบได้แล้วเมื่อ decorFitsSystemWindows เป็นเท็จ (I7922f, b/246909281)
  • แก้ไขข้อบกพร่องที่ทำให้เหตุการณ์การเคลื่อนไหวที่ตรวจพบนอกกล่องโต้ตอบสามารถปิดกล่องโต้ตอบได้ (Ia78fd)
  • ตอนนี้การตรวจสอบ Lint ของ Compose ต้องใช้ AGP เวอร์ชัน 8.8.2 ขึ้นไปจากบรรทัดคำสั่ง และต้องใช้ Android Studio Ladybug ขึ้นไปสำหรับการรองรับ IDE หากใช้ AGP เวอร์ชันเก่า คุณสามารถตั้งค่า android.experimental.lint.version=8.8.2 ใน gradle.properties เพื่ออัปเกรดเวอร์ชัน Lint ได้โดยไม่ส่งผลกระทบต่อ AGP (I6f2a8)
  • เพิ่มพร็อพเพอร์ตี้ความหมายใหม่ InputText ที่บันทึกค่าของ textfield ก่อนที่จะใช้การเปลี่ยนรูปแบบเอาต์พุต (Iae46a, b/395911609, b/176949051)
  • ย้าย enableAccessibilityChecks() API ที่เปิดการตรวจสอบการช่วยเหลือพิเศษสำหรับ Android ไปยังแพ็กเกจแยกต่างหากซึ่งคือ compose:ui:ui-test-accessibility หากคุณไม่ได้ใช้ TestRule และ compose:ui:ui-test-junit4-accessibility เมื่อเรียกใช้ TestRule (I3c318, b/391560768)
  • เพิ่มการรองรับการเขียน Stack Trace ใน LaunchedEffect และ rememberCoroutineScope (I705c0, b/354163858)

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

  • การเปลี่ยนฟังก์ชัน runComposeUiTest ทดลองเพื่อยอมรับการบล็อกการระงับ นอกจากนี้ ยังเพิ่มฟังก์ชัน runComposeUiTest ที่เลิกใช้งานแล้วเพื่อความเข้ากันได้แบบไบนารี (I3b88c, b/361577328)

เวอร์ชัน 1.8

เวอร์ชัน 1.8.3

18 มิถุนายน 2025

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

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

  • เราได้นำแฟล็กสำหรับ isGetFocusedRectReturnEmptyEnabled ออกแล้วเนื่องจากฟีเจอร์นี้ได้รับการยืนยันอย่างสมบูรณ์แล้ว (Ife722)
  • Flag ComposeUiFlags.isGetFocusedRectReturnEmptyEnabled ทำให้เมื่อไม่มีอะไรที่โฟกัสได้ใน ComposeView ระบบจะตั้งค่า Rect เป็นค่าว่าง ซึ่งจะป้องกันไม่ให้การค้นหาโฟกัสเลือกมุมมองที่จะโฟกัส ซึ่งมีความสำคัญอย่างยิ่งในกรณีที่ IME มีตัวเลือกถัดไปและอาจพยายามโฟกัสที่ ComposeViewและ requestFocus() ไม่สำเร็จ (Ibd0e2, b/369256395)

เวอร์ชัน 1.8.2

20 พฤษภาคม 2025

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

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

  • แก้ไข NPE เมื่อมีการนำกล่องโต้ตอบออกในระหว่างสตรีมเหตุการณ์ที่ใช้งานอยู่ในกล่องโต้ตอบ (6a7e7f)
  • แก้ไขปัญหา onLayoutRectChange ไม่อัปเดตตามไทม์ไลน์ที่ถูกจำกัดเมื่อมีการอัปเดตแบบวาดอย่างเดียว (03b82d)

เวอร์ชัน 1.8.1

7 พฤษภาคม 2025

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

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

  • แก้ไขปัญหาบางอย่างเกี่ยวกับ onLayoutRectChanged และ LazyLayout d791b11
  • ข้ามคำขอวัดซ้ำสำหรับรายการที่สร้างไว้ล่วงหน้า ข้อบกพร่องนี้ส่งผลต่อประสิทธิภาพการเลื่อนเลย์เอาต์แบบ Lazy เนื่องจากในบางกรณีการดึงข้อมูลล่วงหน้าทำงานได้อย่างไม่มีประสิทธิภาพ และการวัดผลเกิดขึ้นภายในเฟรม 742087a

เวอร์ชัน 1.8.0

23 เมษายน 2025

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

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

  • Compose 1.8 มีการรองรับการป้อนข้อความอัตโนมัติเชิงความหมายที่เพิ่มเข้ามาใหม่ ตรวจสอบว่า UI และ Foundation ที่คุณใช้เป็นเวอร์ชัน 1.8 ขึ้นไป เนื่องจากการป้อนข้อความอัตโนมัติสำหรับคอมโพเนนต์ข้อความต้องใช้ทั้ง 2 โมดูลในเวอร์ชันล่าสุด ดูรายละเอียดการใช้งาน API และตัวอย่างได้ในเอกสารประกอบเกี่ยวกับการป้อนข้อความอัตโนมัติที่นี่
  • Compose 1.8 รองรับการตอบสนองแบบสัมผัสเพิ่มเติม ได้แก่ Confirm, ContextClick, GestureEnd, GestureThresholdActivate, Reject, SegmentFrequentTick, SegmentTick, ToggleOn, ToggleOff, VirtualKey คุณเข้าถึงได้ผ่าน LocalHapticFeedback และใน Android ฟีเจอร์นี้จะพร้อมใช้งานโดยค่าเริ่มต้นเมื่อ Vibrator API ระบุว่ารองรับการตอบสนองแบบสัมผัส
  • ตอนนี้ Focus API หลายรายการเสถียรแล้ว ซึ่งรวมถึง Modifier.focusRestorer() และ onEnter รวมถึง onExit FocusProperties (I6e667) ตอนนี้คุณระบุ FocusDirection เมื่อโทรหา requestFocus ได้แล้ว เราได้เพิ่ม requestFocus(FocusDirection) API ลงในทั้ง focusRequester และ FocusTargetModifierNode เพื่อให้โฟกัสไปในทิศทางที่เฉพาะเจาะจงได้ (I5d9ec][https://android-review.googlesource.com/#/q/I5d9eca3a2cd283c1b84ad6b77d929ef9a49ce4cc], b/245755256)

เวอร์ชัน 1.8.0-rc03

9 เมษายน 2025

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

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

เวอร์ชัน 1.8.0-rc02

26 มีนาคม 2025

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

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

  • แก้ไขปัญหาที่มุมมองที่โฟกัสซึ่งฝังอยู่ในลำดับชั้นของ Compose จะทำให้เกิดการจัดองค์ประกอบซ้ำเมื่อนำมุมมองที่โฟกัสออกจาก LazyList (765562)

เวอร์ชัน 1.8.0-rc01

12 มีนาคม 2025

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

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

  • แก้ไขข้อขัดข้องเมื่อนำ AndroidView ที่โฟกัสอยู่ออกขณะที่แป้นพิมพ์ซอฟต์แวร์ทำงานอยู่ (Ic725a)
  • แก้ไขปัญหาบางอย่างในการติดตั้งใช้งานการจัดการสถานะโฟกัสใหม่ (b/395895685)
  • แก้ไขปัญหาที่บล็อกการป้อนข้อความอัตโนมัติเมื่อใช้ LaunchedEffect เพื่อขอโฟกัสในช่องข้อความ (b/392539099)

เวอร์ชัน 1.8.0-beta03

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

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

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

  • ย้าย enableAccessibilityChecks() API ที่เปิดการตรวจสอบการช่วยเหลือพิเศษสำหรับ Android ไปยังแพ็กเกจแยกต่างหาก ซึ่งคือ compose:ui:ui-test-accessibility หากคุณไม่ได้ใช้ TestRule และ compose:ui:ui-test-junit4-accessibility เมื่อเรียกใช้ใน TestRule (I547ef, b/391560768)
  • เพิ่มพร็อพเพอร์ตี้ความหมายใหม่ InputText ที่บันทึกค่าของช่องข้อความก่อนที่จะใช้การแปลงเอาต์พุต (Iae46a)

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

  • แก้ไขปัญหาที่ทำให้บริการป้อนข้อความอัตโนมัติบันทึกข้อความเอาต์พุตที่แปลงแล้วแทนที่จะเป็นข้อความอินพุต (Iae46a, b/395911609, b/176949051)

เวอร์ชัน 1.8.0-beta02

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

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

ฟีเจอร์ใหม่

  • เพิ่มการตรวจสอบ Lint เพื่อเตือนการเรียกใช้ Configuration#screenWidth/heightDp - LocalWindowInfo.current.containerSize สามารถใช้แทนเพื่อดึงขนาดหน้าต่างปัจจุบันได้

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

29 มกราคม 2025

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

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

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

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

  • แก้ไขปัญหาโฟกัสที่ requestFocus() ที่มีพารามิเตอร์ previouslyFocusedRect ที่ไม่สมเหตุสมผล (เกี่ยวข้องกับทิศทางโฟกัส) จะข้าม ComposeView (Ifdc2f, b/388590015)
  • แก้ไข NPE ที่เกิดขึ้นเป็นครั้งคราวเมื่อใช้ GraphicsLayer.record { this@ContentDrawScope.drawContent() } หากคุณบันทึก drawContent() ด้วยวิธีนี้ โปรดใช้ฟังก์ชันส่วนขยาย GraphicsLayer#record ภายใน DrawScope และไม่ใช่ฟังก์ชันสมาชิกใน GraphicsLayer (I75fc0, b/389046242)
  • แก้ไขเลย์เอาต์ข้อความที่มีจุดไข่ปลาซึ่งบางครั้งแปลไม่ถูกต้องระหว่างภาพเคลื่อนไหว ดูข้อมูลเพิ่มเติมได้ที่ b/389707025 (Ie55b1, b/389707025)

เวอร์ชัน 1.8.0-alpha08

15 มกราคม 2025

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

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

  • การทำให้ AutofillManager เป็นคลาสแบบนามธรรม (I0a3b0)
  • แก้ไขปัญหาที่เกี่ยวข้องกับโฟกัสหลายอย่าง รวมถึงปัญหาแอปขัดข้องเมื่อ IME พยายามโฟกัสที่ ComposeView โดยไม่มีรายการที่โฟกัสได้ การเปลี่ยนโฟกัสภายใน AndroidViews ขององค์ประกอบย่อย และคำขอโฟกัสที่ทำให้ AndroidView ค้างอยู่ (Ia03c3, b/369256395, b/378570682, b/376142752)
  • เปลี่ยน FocusEnterExitScope.cancelFocus() เป็น cancelFocusChange() (I89959)
  • ตอนนี้คุณสามารถคำนวณการบดบังที่ประกอบได้ด้วย RectInfo.calculateOcclusions()
  • เพิ่มฟังก์ชันส่วนขยายใน DelegatableNode เพื่อลงทะเบียน Listener สำหรับการเปลี่ยนแปลงเลย์เอาต์ส่วนกลาง (I68b59)

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

  • กิจกรรมที่ใช้เป็นโฮสต์สำหรับ Composable ที่อยู่ภายใต้การทดสอบเมื่อใช้ ComposeContentTestRule.setContent จะใช้ธีม Theme.Material.Light.NoActionBar เพื่อหลีกเลี่ยงไม่ให้ ActionBar ทับซ้อนกับเนื้อหาการทดสอบเมื่อกำหนดเป้าหมายเป็น SDK 35 หากต้องการเลือกไม่ใช้ลักษณะการทำงานนี้ คุณสามารถนำการอ้างอิง ui-test-manifest ออกและเพิ่มรายการกิจกรรมใน AndroidManifest.xml ของแอปทดสอบสำหรับ ComponentActivity ด้วยธีมที่คุณเลือก (I7ae1b, b/383368165)
  • ตอนนี้ฟอนต์ทรัพยากรที่มีการตั้งค่ารูปแบบเดียวกันจะหลีกเลี่ยงการแคชมากเกินไป ซึ่งทำให้มีการใช้การตั้งค่ารูปแบบที่ไม่ถูกต้อง (If3dff, b/372044241)
  • AnnotatedString.fromHtml รองรับแท็ก <ul>/<li> แล้ว (I7c2fe, b/299662276, b/139326648)

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

  • เพิ่มอินเทอร์เฟซคลิปบอร์ดใหม่และองค์ประกอบภายในสำหรับอินเทอร์เฟซดังกล่าว (I80809)

เวอร์ชัน 1.8.0-alpha07

11 ธันวาคม 2024

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

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

  • เปิดเผยเจ้าของจาก LayoutNode สำหรับเครื่องมือ (I26f7f)
  • มีLocalAutofillHighlightColorองค์ประกอบการใช้งานในพื้นที่เป็นประเภทสี (I0e05b)
  • คงค่า UrlAnnotation ที่เลิกใช้งานแล้วและทำเครื่องหมายเมธอดของคลาสนี้ว่าอยู่ในขั้นทดลอง (Ic0021)

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

  • แก้ไขข้อขัดข้อง IndexOutOfBoundsException เมื่อใช้ LinkAnnotation ภายใน BasicText หรือ Text composable (be7605, b/374115892)
  • แก้ไขปัญหาที่ช่องข้อความที่กรอกซึ่งมีรูปร่างที่กำหนดเองไม่ตัดเส้นตัวบ่งชี้ (I4f87f, b/380704151)
  • แก้ไขพื้นหลังที่หายไปเมื่อใช้ภาพหน้าจอแบบยาว (I4d57a)
  • ตอนนี้ไลบรารีนี้ใช้คำอธิบายประกอบเกี่ยวกับค่า Null ของ JSpecify ซึ่งเป็นแบบใช้ประเภท นักพัฒนาซอฟต์แวร์ Kotlin ควรใช้อาร์กิวเมนต์คอมไพเลอร์ต่อไปนี้เพื่อบังคับใช้การใช้งานที่ถูกต้อง -Xjspecify-annotations=strict (นี่คือค่าเริ่มต้นที่เริ่มต้นด้วยคอมไพเลอร์ Kotlin เวอร์ชัน 2.1.0) (Idfef8, b/326456246)
  • อัปเดตการรองรับ Compose สำหรับสีแบบ Wide Gamut และ HDR เมื่อเรียกใช้ใน Android Q ขึ้นไป (Icd8be, b/379135036)
  • ตอนนี้หากโหลดแบบอักษรของทรัพยากรไม่สำเร็จ ระบบจะเปลี่ยนกลับไปใช้แบบอักษรเริ่มต้นโดยไม่มีการแจ้งเตือนแทนที่จะแสดงข้อยกเว้นในเมตริกเหมือนที่เคย (Ib6a49)
  • แก้ไขปัญหาโฟกัสหายเมื่อถอดและติด AndroidView (I53446)
  • ยอมรับ requestFocus() จากการดำเนินการเลย์เอาต์ที่อยู่นอกขอบเขต (Ia8461)

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

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

เวอร์ชัน 1.8.0-alpha06

13 พฤศจิกายน 2024

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

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

  • เพิ่มตัวปรับแต่ง stylusHoverIcon (Iff20a, b/331289114)
  • เปลี่ยนตัวจัดการการป้อนข้อความอัตโนมัติให้เป็นอินเทอร์เฟซ (I84914, b/376080755)
  • เพิ่ม requestFocus(FocusDirection) ให้กับทั้ง focusRequester และ FocusTargetModifierNode เพื่อให้โฟกัสในทิศทางที่เฉพาะเจาะจงได้ (I5d9ec, b/245755256)
  • FocusProperties.enter และ FocusProperties.exit ถูกแทนที่ด้วย onEnter และ onExit โดยใช้ขอบเขตผู้รับแทนพารามิเตอร์ FocusDirection (I6e667)
  • เพิ่มการรองรับการป้อนข้อความอัตโนมัติในแถบเครื่องมือข้อความ (Ie6a4c)
  • การเปลี่ยนแปลง API ใน Modifier.focusRestorer() (I99c03) มีดังนี้
    • เปลี่ยนชื่อพารามิเตอร์เป็น "fallback"
    • ตอนนี้พารามิเตอร์เป็น FocusRequester ไม่ใช่ Lambda
    • ตอนนี้พารามิเตอร์เป็นแบบไม่เป็นค่าว่างโดยมีค่าเริ่มต้นเป็น "ค่าเริ่มต้น"
  • การนำคำอธิบายประกอบ @Experimental ออกจากอินเทอร์เฟซเครื่องมือจัดการการป้อนข้อความอัตโนมัติ ฟีเจอร์นี้ยังอยู่ระหว่างการพัฒนาเพื่อกำหนดเป้าหมายการเปิดตัวนี้ แต่เราไม่ต้องการเปิดตัว @Expemiental API (Id8398)
  • LocalHapticFeedback จะมีการติดตั้งใช้งาน HapticFeedback เริ่มต้นเมื่อ Vibrator API ระบุว่ารองรับการสัมผัส เราได้เพิ่มรายการต่อไปนี้ลงใน HapticFeedbackType - Confirm, ContextClick, GestureEnd, GestureThresholdActivate, Reject, SegmentFrequentTick, SegmentTick, ToggleOn, ToggleOff, VirtualKey ตอนนี้คอมโพเนนต์ที่คลิกค้างได้ของ Wear Compose เช่น Button, IconButton, TextButton และ Card จะแสดงการสั่นLONG_PRESSเมื่อมีการระบุตัวแฮนเดิลการคลิกค้าง (I5083d)
  • นำ OverscrollConfiguration และ LocalOverscrollConfiguration ออก และเพิ่ม rememberPlatformOverscrollFactory เพื่อสร้างอินสแตนซ์ของ / ปรับแต่งพารามิเตอร์ของการใช้งานการเลื่อนเลยขอบเริ่มต้น หากต้องการปิดใช้การเลื่อนเกิน ให้ใช้ LocalOverscrollFactory provides null แทน LocalOverscrollConfiguration provides null หากต้องการเปลี่ยนสีเรืองแสง / ระยะขอบ ให้ใช้ LocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding) แทน LocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding) (Ie71f9, b/255554340, b/234451516)
  • นำ GlobalAssertions API เวอร์ชันทดลองออกแล้ว โดยมีวัตถุประสงค์เพื่อใช้ในการเรียกใช้การตรวจสอบการช่วยเหลือพิเศษ โปรดดู enableAccessibilityChecks() เพื่อวัตถุประสงค์ดังกล่าวแทน (I59322)

เวอร์ชัน 1.8.0-alpha05

30 ตุลาคม 2024

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

ฟีเจอร์ใหม่

ฟีเจอร์ป้อนข้อความอัตโนมัติจะแสดงอยู่หลังฟีเจอร์แฟล็กในรุ่นนี้ เรากำลังดำเนินการปรับปรุงประสิทธิภาพและมองหาความคิดเห็นในช่วงแรกเกี่ยวกับ API คาดว่า API จะได้รับการพัฒนาให้ดียิ่งขึ้นก่อนที่จะมีเสถียรภาพตามความคิดเห็น

  • หากต้องการเปิดใช้การป้อนข้อความอัตโนมัติ ให้ตั้งค่า ComposeUiFlags.isSemanticAutofillEnabled เป็น "true" ใน onCreate และใช้ Compose Snapshot ล่าสุด
  • การป้อนข้อความอัตโนมัติเวอร์ชันนี้รองรับการบันทึกข้อมูลเข้าสู่ระบบด้วยตนเอง ผ่านฟีเจอร์แนะนำรหัสผ่านที่รัดกุม และผ่านการนำทาง นอกจากนี้ยังรองรับการป้อนข้อมูลเมื่อช่องที่ป้อนอัตโนมัติได้ได้รับโฟกัส หรือเมื่อระบบทริกเกอร์การป้อนอัตโนมัติผ่านแถบเครื่องมือข้อความในคอมโพเนนต์ข้อความ คอมโพเนนต์จะไฮไลต์เพื่อระบุเมื่อการป้อนข้อความอัตโนมัติเสร็จสมบูรณ์

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

  • แก้ไขอินเทอร์เฟซการป้อนข้อความอัตโนมัติให้เป็นไปตามโครงสร้าง expect/actual (I22dce)
  • เปิดตัว CompositionLocal ที่ใช้เพื่อแก้ไขเฉดสีของไฮไลต์การป้อนข้อความอัตโนมัติที่สำเร็จ (I32092)
  • เพิ่ม Modifier.onRectChanged API ซึ่งเป็น API ที่อนุญาตให้ผู้ใช้สมัครรับข้อมูลตำแหน่งและขนาดที่สัมพันธ์กับรูท/หน้าต่าง/หน้าจอของ LayoutNode API นี้แก้ปัญหาในกรณีการใช้งานหลายอย่างที่ตัวแก้ไข onGloballyPositioned ที่มีอยู่ทำได้ แต่ API นี้มีค่าใช้จ่ายที่ต่ำกว่ามาก และมีสิ่งอำนวยความสะดวกในการดีบาวซ์และการควบคุมอัตราการเรียกกลับตามที่กรณีการใช้งานต้องการ (Id28c7, b/372765423, b/372757007, b/372994338)
  • ขยายเครื่องมือจัดการป้อนข้อความอัตโนมัติให้รวม API ของ commit() และ cancel() ที่ช่วยให้ผู้ใช้บันทึกข้อมูลเข้าสู่ระบบที่ป้อนใหม่ได้ (I2da00)
  • ขอแนะนำAutofillManagerอินเทอร์เฟซใหม่ที่ใช้ปรับแต่งเส้นทางการป้อนข้อความอัตโนมัติของผู้ใช้ได้ และisSemanticAutofillEnabledฟีเจอร์ที่ใช้เปิดใช้ฟีเจอร์ป้อนข้อความอัตโนมัติเวอร์ชันใหม่นี้ (I9d484)
  • เพิ่ม Modifier.onRectChanged API ซึ่งเป็น API ที่อนุญาตให้ผู้ใช้สมัครรับข้อมูลตำแหน่งและขนาดที่สัมพันธ์กับรูท/หน้าต่าง/หน้าจอของ LayoutNode API นี้แก้ปัญหาในกรณีการใช้งานหลายอย่างที่ตัวแก้ไข onGloballyPositioned ที่มีอยู่ทำได้ แต่ API นี้มีค่าใช้จ่ายที่ต่ำกว่ามาก และมีสิ่งอำนวยความสะดวกในการดีบาวซ์และการควบคุมอัตราการเรียกกลับตามที่กรณีการใช้งานต้องการ (I3c8fa)
  • เพิ่มพร็อพเพอร์ตี้เชิงความหมายและประเภทข้อมูลเพื่อรองรับการป้อนข้อความอัตโนมัติเพิ่มเติม (I52c7d)
  • ตอนนี้เมธอดทั้งหมดในเครื่องมือสร้าง AnnotatedString ไม่ใช่เวอร์ชันทดลองแล้ว (Ia89c8, b/261561823)

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

  • ตอนนี้ View ที่ฝังใน Compose สามารถรับเหตุการณ์การหมุนได้หากมีการโฟกัส (I4d53a, b/320510084)
  • แก้ไขปัญหาที่ทรัพยากรประเภทต่างๆ จะไม่อัปเดตเมื่อมีการเปลี่ยนแปลงการกำหนดค่า (Ia9b99, b/352336694)
  • แก้ไขปัญหาที่ทำให้ TextField ทำงานไม่ถูกต้องเมื่อใช้แป้นพิมพ์ภาษาญี่ปุ่น POBox ในอุปกรณ์ Sony รุ่นเก่าบางรุ่น (Ia9b99, b/373743376)
  • แก้ไขปัญหาเกี่ยวกับกล่องโต้ตอบที่แสดงที่ด้านล่างของหน้าจอแทนที่จะอยู่ตรงกลาง (Ia2ec, b/373093006)
  • การกำหนดเป้าหมาย API 35 ขึ้นไปจะไม่บังคับให้กล่องโต้ตอบมี decorFitsSystemWindows ตั้งค่าเป็นเท็จอีกต่อไป (Ibc94, b/364492593)
  • แก้ไขข้อขัดข้องเมื่อย้ายเลเยอร์ระหว่างหน้าต่าง (เช่น กล่องโต้ตอบและเนื้อหาหลัก) (I675ba, b/330955281)

เวอร์ชัน 1.8.0-alpha04

16 ตุลาคม 2024

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

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

  • เพิ่มการเรียกกลับ DelegatableNode#onDensityChange และ DelegatableNode#onLayoutDirectionChange เพื่ออนุญาตให้อัปเดตสถานะโหนดเมื่อมีการเปลี่ยนแปลง (I04f3e, b/340662451)
  • เพิ่ม WindowInfo#containerSize เพื่อระบุขนาดคอนเทนเนอร์เนื้อหาของหน้าต่างปัจจุบัน คุณสามารถเรียกข้อมูลนี้ได้โดยใช้ LocalWindowInfo (Idc38c, b/369334429, b/360343819)
  • เปิดตัวการแก้ไขสำหรับรายการที่เลื่อนได้แบบซ้อนกันซึ่งถูกนำออกจากแผนผังโหนดระหว่างการปัดที่กำลังดำเนินอยู่ ตอนนี้โหนดเหล่านี้จะยกเลิกการปัดและส่งเหตุการณ์ onPostFling อย่างถูกต้องด้วยความเร็วที่เหลือ นอกจากนี้ เรายังจะเปิดตัวฟีเจอร์ NewNestedScrollFlingDispatchingEnabled เพื่อควบคุมลักษณะการทำงานในกรณีที่เกิดการถดถอย เราจะนำฟีเจอร์นี้ออกก่อนเปิดตัวเวอร์ชันเบต้า (I05c37, b/371168883)
  • เปิดตัว PointerInputModifierNode#touchBoundsExpansion ซึ่งใช้เพื่อขยายขอบเขตการแตะของตัวแก้ไขอินพุตตัวชี้เดียวได้ (Iccf02, b/335339283)
  • เพิ่ม WindowInfo#containerSize เพื่อระบุขนาดคอนเทนเนอร์เนื้อหาของหน้าต่างปัจจุบัน คุณสามารถเรียกข้อมูลนี้ได้โดยใช้ LocalWindowInfo (I27767, b/369334429, b/360343819)
  • นำ readOnly ออกจาก TextFields เพื่อปักหมุดเป็นเวอร์ชันพื้นฐานที่เสถียร (I3aaba)
  • Paragraph และ ParagraphIntrinsics จะรับรายการคำอธิบายประกอบทั้งหมดที่ใช้กับ AnnotatedString โดยก่อนหน้านี้จะรับเฉพาะรายการ SpanStyles (I12f80)

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

  • อัปเดตวิธีจัดการย่อหน้าใน AnnotatedString ก่อนหน้านี้คุณสร้างได้เฉพาะย่อหน้าที่ไม่ทับซ้อนกัน ตอนนี้ AnnotatedString อนุญาตให้ย่อหน้าที่ทับซ้อนกันอย่างสมบูรณ์ซึ่งจะผสานรวมกัน และย่อหน้าที่ซ้อนกันในกรณีที่ย่อหน้าด้านนอกจะแยกตามขอบเขตของย่อหน้าด้านใน และรูปแบบของย่อหน้าด้านในจะผสานรวมกับรูปแบบของย่อหน้าด้านนอก (Ic9554)
  • แก้ไขข้อขัดข้องใน AnnotatedString ที่มี LinkAnnotation ที่มีความยาวเป็น 0 (89aac6)

เวอร์ชัน 1.8.0-alpha03

2 ตุลาคม 2024

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

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

  • อัปเดต Kotlin เป็นเวอร์ชัน 1.9 (I1a14c)
  • เปิดตัวบทบาทเชิงความหมายใหม่ที่เรียกว่า Carousel เพื่อจำลองลักษณะการทำงานของรายการใน Pager สำหรับบริการ a11y (Id354b, b/354109776, b/239672673)
  • เปลี่ยนชื่อ invisibleToUser() เป็น hideFromAccessibility โดยฟังก์ชันการทำงานจะยังคงเหมือนเดิม ดูรายละเอียดเพิ่มเติมในเอกสารประกอบ (Ib43a3)

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

  • การอัปเดตเอกสารสำหรับตัวแก้ไข SensitiveContent (Ib0442)
  • แก้ไขปัญหาที่ระบบจะไม่สนใจคลิป Outline ทั่วไปบางรายการเมื่อใช้ร่วมกับเงาความสูงใน Android บางเวอร์ชัน
  • แก้ไขปัญหาที่ระบบจะใช้คลิปที่ว่างเปล่าเมื่อมีการระบุคลิป Outline ทั่วไปใน Android บางเวอร์ชัน
  • แก้ไขข้อยกเว้นที่เกิดขึ้นเมื่อ IME ทำงานใน View ภายนอกและใช้การดำเนินการถัดไปเพื่อเข้าสู่โฟกัสใน ComposeView clearFocus() มีลักษณะการทำงานสอดคล้องกับลักษณะการทำงานของ View ใน API < 28 ซึ่ง clearFocus() อาจทำให้ระบบโฟกัส View เริ่มต้น
  • แก้ไขปัญหาที่การวางเกิดขึ้นในโหนดที่แยกออกมาใน LazyList โดยแยกการจัดการองค์ประกอบย่อยสำหรับการส่งผ่านเลย์เอาต์ที่แตกต่างกัน
  • แก้ไขปัญหาที่แป้นพิมพ์ซอฟต์แวร์กะพริบเมื่อโฟกัสเปลี่ยนจาก TextField เป็น EditText หรือเอดิเตอร์อื่นๆ ที่อิงตามมุมมอง
  • ตอนนี้โหนด Nested Scroll จะส่งเหตุการณ์ onPostFling อย่างถูกต้องหลังจากที่แยกออกแล้ว
  • การปรับปรุงประสิทธิภาพทั่วไป

เวอร์ชัน 1.8.0-alpha02

18 กันยายน 2024

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

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

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

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

  • แก้ไข Dalog dismissOnClickoutside (39a3d, b/364508685)
  • อย่าตัดเงาของเนื้อหาในกล่องโต้ตอบ (e8e2f, b/363027803)
  • แก้ไขลักษณะการทำงานที่ไม่ถูกต้องเมื่อการค้นหาโฟกัสย้ายระหว่าง "เขียน" กับ "ดู" (58377, b/350534714)

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

  • ตอนนี้ AlignmentLines Map รับคอนกรีตประเภท VerticalAlignmentLine หรือ HorizontalAlignmentLine แล้ว (I02912)
  • ByteArray.decodeToImageBitmap(): ImageBitmap วิธีใหม่ที่ใช้กันทั่วไป (I83c21)

เวอร์ชัน 1.8.0-alpha01

4 กันยายน 2024

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

เวอร์ชัน 1.7

เวอร์ชัน 1.7.8

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

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

เวอร์ชัน 1.7.7

29 มกราคม 2025

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

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

  • แก้ไข IndexOutOfBoundsException เมื่อส่ง AnnotatedString ที่มี LinkAnnotation ไปยัง Text Composable (Ic96d2)
  • แก้ไขปัญหาการหมดเวลาในการทดสอบในบางกรณีที่เกิดขึ้นไม่บ่อยนักเมื่อใช้ LinkAnnotation ใน AnnotatedString (I04a03)

เวอร์ชัน 1.7.6

11 ธันวาคม 2024

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

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

  • ก่อนหน้านี้เราเคยแสดงข้อผิดพลาดทุกครั้งที่พบเหตุการณ์สำคัญเมื่อระบบโฟกัสมีการลบล้างที่รอดำเนินการ ตอนนี้เราจะบันทึกข้อผิดพลาดแทน (I7ea0, b/346370327)
  • นำคำอธิบายประกอบเวอร์ชันทดลองออกจาก SemanticsPropertyReceiver.invisibleToUser() แล้ว โดยจะเลิกใช้งานในเวอร์ชัน 1.8 และแทนที่ด้วย SemanticsPropertyReceiver.hideFromAccessibility() (I448f0, b/376479686)
  • แก้ไขปัญหาที่ทำให้ TextField ทำงานไม่ถูกต้องเมื่อใช้แป้นพิมพ์ภาษาญี่ปุ่น POBox ในอุปกรณ์ Sony รุ่นเก่าบางรุ่น (I94e0e, b/373743376)
  • แก้ไขปัญหาด้านการช่วยเหลือพิเศษที่ TalkBack ไม่ประกาศ BasicText’s inlineContent (I67bcb, b/376479686)

เวอร์ชัน 1.7.5

30 ตุลาคม 2024

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

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

  • แก้ไขปัญหาที่การยกระดับและการตัดด้วยเส้นขอบที่กำหนดเองไม่แสดงผลอย่างถูกต้อง
  • แก้ไขข้อความขัดข้องที่เกิดขึ้นกับ LinkAnnotation ที่มีความกว้างเป็น 0 (Ic1e2e)
  • แก้ไขการประกาศใน Talkback ของปุ่มเมื่อสร้างเป็นข้อความที่คลิกได้ (I1f588)

เวอร์ชัน 1.7.4

16 ตุลาคม 2024

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

เวอร์ชัน 1.7.3

2 ตุลาคม 2024

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

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

  • แก้ไขปัญหาที่การระบุคลิป Outline ทั่วไปจะทําให้ขอบเขตคลิปว่างใน Android บางเวอร์ชัน
  • แก้ไขข้อยกเว้นที่เกิดขึ้นเมื่อ IME ทำงานใน View ภายนอกและใช้การดำเนินการถัดไปเพื่อเข้าสู่โฟกัสใน ComposeView clearFocus() มีลักษณะการทำงานสอดคล้องกับลักษณะการทำงานของ View ใน API < 28 ซึ่ง clearFocus() อาจทำให้ระบบโฟกัส View เริ่มต้น
  • แก้ไขปัญหาที่ใช้ placeOrder ไม่ถูกต้องสำหรับการลบล้างการคาดการณ์ จึงแก้ไขกรณีขอบที่ข้ามการวางโฆษณาแบบคาดการณ์

เวอร์ชัน 1.7.2

18 กันยายน 2024

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

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

  • ปรับปรุงประสิทธิภาพของข้อมูลโหนดการช่วยเหลือพิเศษและเหตุการณ์เชิงความหมายโดยการนำการติดตามแบบละเอียดออก (I89156, b/362530618)
  • ComposeView จะไม่ขัดข้องอีกต่อไปเมื่อมีการส่งขนาดการวัดที่ใหญ่มากเป็นพิเศษ (da5db, b/347036173)
  • แก้ไขปัญหาโปรแกรมอ่านหน้าจอสำหรับการช่วยเหลือพิเศษที่LiveRegion ไม่ประกาศบนปุ่ม (f66fa7, b/348590026)

เวอร์ชัน 1.7.1

10 กันยายน 2024

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

เวอร์ชัน 1.7.0

4 กันยายน 2024

androidx.compose.ui:ui-*:1.7.0 ได้รับการเผยแพร่แล้ว

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

การเปลี่ยนแปลงที่สำคัญในเวอร์ชัน 1.7.0 จะกล่าวถึงในบล็อกโพสต์นี้

เวอร์ชัน 1.7.0-rc01

21 สิงหาคม 2024

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

การเปลี่ยนแปลงที่สำคัญ

  • ตอนนี้โมดูล ui:ui จะบังคับให้ต้องใช้ foundation:foundation เวอร์ชันขั้นต่ำเป็น 1.7.0-rc01 ขึ้นไป การบังคับใช้ดังกล่าวมีขึ้นเพื่อแก้ไขความไม่เข้ากันของลักษณะการทำงานระหว่าง UI กับ Foundation ในส่วนของการเปลี่ยนแปลง NestedScrollSource ที่เกิดขึ้นในช่วงต้นของ 1.7.0-alpha01

เวอร์ชัน 1.7.0-beta07

7 สิงหาคม 2024

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

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

  • ตอนนี้อินพุตข้อความที่เกี่ยวข้องกับSemanticsNodeInteractionฟังก์ชันperformTextReplacement, performTextInput และ performTextClearance จะแสดงข้อผิดพลาดในการยืนยันเมื่อมีการเรียกใช้ใน TextFields แบบอ่านอย่างเดียว (I4ae8f)

เวอร์ชัน 1.7.0-beta06

24 กรกฎาคม 2024

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

เวอร์ชัน 1.7.0-beta05

10 กรกฎาคม 2024

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

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

  • แก้ไขข้อบกพร่องที่การเปลี่ยนแป้นพิมพ์ซอฟต์แวร์จะทำให้ TextField ไม่รับอินพุตจากแป้นพิมพ์ใหม่จนกว่าโฟกัสจะหายไปและกลับมาอีกครั้ง
  • แก้ไขปัญหาที่การพยายามคงเนื้อหาเลเยอร์จะทำให้เกิดผลข้างเคียงที่ไม่พึงประสงค์เมื่อแสดงผลด้วยเนื้อหา SurfaceView

เวอร์ชัน 1.7.0-beta04

26 มิถุนายน 2024

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

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

  • หลีกเลี่ยงการขัดข้องเมื่อวัดบรรทัดข้อความขนาดใหญ่มาก (เช่น 10,000 อักขระ) (8157ab)
  • ปิดใช้การรองรับการแสดงผลซอฟต์แวร์สำหรับ GraphicsLayer API (35ddd8)
  • แก้ไขการขัดข้องในตรรกะการคงอยู่ของเลเยอร์ (70b13e)
  • เราได้เปลี่ยนกลับการเพิ่มประสิทธิภาพการใช้ออบเจ็กต์เลเยอร์ซ้ำ เนื่องจากทำให้เกิดปัญหาในการแสดงผล (70b13e)

เวอร์ชัน 1.7.0-beta03

12 มิถุนายน 2024

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

เวอร์ชัน 1.7.0-beta02

29 พฤษภาคม 2024

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

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

  • เปลี่ยนชื่อ SemanticsProperties.Editable เป็น IsEditable และเปลี่ยน SemanticsPropertyReceiver.editable เป็นค่า isEditable ตอนนี้พร็อพเพอร์ตี้เป็นบูลีนและระบุโดยช่องข้อความเสมอ (I8acd8)
  • เปลี่ยนชื่อพารามิเตอร์การเปรียบเทียบการช่วยเหลือพิเศษ (I3d440)
  • API ที่อัปเดตสำหรับการจัดรูปแบบลิงก์: TextLinkStyles ตอนนี้เป็นส่วนหนึ่งของตัวสร้าง LinkAnnotation และเมธอด AnnotatedString.fromHtml (I90b2b) นอกจากนี้ ยังได้นำ TextDefaults ออกจากสื่อการเรียนการสอน (I5477b) ด้วย

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

  • เปลี่ยนชื่อ LayoutCoordinates.introducesFrameOfReference เป็น LayoutCoordinates.introducesMotionFrameOfReference เพื่อให้สะท้อนวัตถุประสงค์ได้ดียิ่งขึ้น เปลี่ยนชื่อฟังก์ชันที่เกี่ยวข้องเพื่อคำนวณพิกัดตามธงนั้น (I3a330)

เวอร์ชัน 1.7.0-beta01

14 พฤษภาคม 2024

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

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

  • เปลี่ยนชื่อ performCustomAccessibilityActionLabelled เป็น performCustomAccessibilityActionWithLabel และ performCustomAccessibilityActionWhere เป็น performCustomAccessibilityActionWithLabelMatching (I5387f)
  • AnnotatedString.hasEqualsAnnotations เปลี่ยนชื่อเป็น hasEqualAnnotations แล้ว (I685c0)
  • อัปเดต API สำหรับรับลิงก์ที่มีธีม Material ในข้อความ โดยเฉพาะอย่างยิ่ง เราได้นำวิธีการต่างๆ ออกจาก TextDefaults สำหรับการสร้าง LinkAnnotations ที่มีธีมและแยกวิเคราะห์ HTML ด้วยลิงก์ที่มีธีม แต่ได้เพิ่มTextLinkStylesคลาสที่อนุญาตให้จัดรูปแบบลิงก์เป็นพารามิเตอร์ไปยัง Composable ของข้อความแทน (I31b93)

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

  • แก้ไข Use Case เพิ่มเติมเมื่อเพิ่มตัวแก้ไขอินพุตของเคอร์เซอร์แบบไดนามิกระหว่างเหตุการณ์ 63e1504

เวอร์ชัน 1.7.0-alpha08

1 พฤษภาคม 2024

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

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

  • เพิ่มการรองรับการใช้งานรูปร่างที่เปลี่ยนแปลงได้ Shape#createOutline จะสังเกตได้ในเลเยอร์กราฟิกแล้ว ดังนั้นการอ่านค่าสถานะภายในจะทำให้เกิดการลบล้างเมื่อสถานะเปลี่ยนแปลง ซึ่งจะช่วยให้ภาพเคลื่อนไหวของรูปร่างมีประสิทธิภาพมากขึ้น (Id1629, b/326070216)
  • เปลี่ยนชื่อ isPositionedByParentWithDirectManipulation เป็น introducesFrameOfReference แล้ว โปรดทราบว่าตอนนี้พร็อพเพอร์ตี้ดังกล่าวมีผลตรงกันข้าม ซึ่งหมายความว่าโดยค่าเริ่มต้น LayoutCoordinates ส่วนใหญ่จะใช้เฟรมอ้างอิง และพร็อพเพอร์ตี้จะเป็นเท็จเมื่อวางไว้ภายใต้การจัดการโดยตรงเท่านั้น หากต้องการค้นหาตำแหน่งที่มีเฉพาะตำแหน่งที่แนะนำกรอบอ้างอิง ให้ใช้ positionInLocalFrameOfReference(...) หรือ positionInLocalLookaheadFrameOfReference จาก LookaheadScope (Ifc5f7)
  • LookaheadScope API มีความเสถียรแล้ว (I21507)
  • เปลี่ยน Lambda การดำเนินการสำหรับ getScrollViewportLength ตามความคิดเห็นของสภา API (Ibc74a)
  • อัปเดต GraphicsLayer Outline API เพื่อใช้พารามิเตอร์แบบลอยแทนพารามิเตอร์แบบจำนวนเต็ม นำค่า UnsetOffset/UnsetSize IntSize Sentinel ออกเพื่อใช้ค่าคงที่ Unspecified ที่มีอยู่แล้วในคลาสอินไลน์ Offset และ Size ที่อิงตาม Float (I2fb03, b/333863462)
  • เมื่อแทรกอินพุตของเมาส์ระหว่างการทดสอบ MouseInjectionScope.click(), MouseInjectionScope.doubleClick(), MouseInjectionScope.tripleClick(), MouseInjectionScope.longClick() จะยอมรับพารามิเตอร์ button: MouseButton เพื่อให้ใช้ได้ในวงกว้างมากขึ้น ค่าเริ่มต้นคือ MouseButton.Primary สำหรับทุกวิธี (I31a23, b/190493367, b/261439695)
  • เปลี่ยนชื่อ onClicked เป็น onClick ใน LinkInteractionListener แล้ว (Iaa35c)
  • เปลี่ยนชื่อ TextInclusionStrategy.isInside เป็น isIncluded ทำให้Paragraph/MultiParagraph#getRangeForRect()ประเภทการคืนค่าไม่เป็นค่าว่าง (I51f26)

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

  • แก้ไขการจับภาพหน้าจอแบบยาวสำหรับคอนเทนเนอร์ที่เลื่อนได้ด้วย reverseScrolling=true (I7c59c)

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

  • เพิ่มการรองรับการดึงข้อมูลล่วงหน้าของรายการใน LazyLists ที่ซ้อนกัน (เช่น LazyColumn ที่แสดงผล LazyRows ที่ซ้อนกัน) การเปลี่ยนแปลงนี้คาดว่าจะช่วยลดเฟรมหลุดระหว่างการเลื่อนสำหรับ LazyLists เหล่านี้ การติดตั้งใช้งานเริ่มต้นคือการดึงข้อมูลล่วงหน้าสำหรับรายการที่ซ้อนกัน 2 รายการแรก แต่คุณควบคุมลักษณะการทำงานนี้ได้ด้วย API LazyLayoutPrefetchStrategy(nestedPrefetchItemCount) และ LazyListPrefetchStrategy#onNestedPrefetch ใหม่ (I51952)

เวอร์ชัน 1.7.0-alpha07

17 เมษายน 2024

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

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

  • ClickableText มีการทำเครื่องหมายว่าเลิกใช้งานแล้ว หากต้องการเพิ่มลิงก์ไปยังข้อความ ให้สร้าง AnnotatedString ที่มี LinkAnnotation ที่สอดคล้องกับลิงก์ แล้วส่ง AnnotatedString นี้ไปยัง Text composable (I34d4b, b/323346994)
  • ขอแนะนำ ViewConfiguration.HandwritingGestureLineMargin สำหรับท่าทางสัมผัสลายมือ รองรับท่าทางสัมผัส JoinOrSplit สำหรับ BasicTextField (Ie6e13, b/325660505)
  • FocusProperties.enter และ FocusProperties.exit ไม่ใช่ฟีเจอร์ทดลองอีกต่อไป FocusDirection.Enter และ FocusDirection.Exit ไม่ใช่ฟีเจอร์ทดลองอีกต่อไป FocusRequester.Cancel ไม่ใช่ฟีเจอร์ทดลองอีกต่อไป (I461a1, b/261564106)
  • เมื่อค้นหาพิกัดเลย์เอาต์ ตอนนี้คุณสามารถใช้อาร์กิวเมนต์ excludeDirectManipulationOffset เพื่อยกเว้นออฟเซ็ตที่ตั้งค่าโดยเลย์เอาต์หลักซึ่งวางองค์ประกอบย่อยโดยใช้ Placeable.PlacementScope.withDirectManipulationPlacement ในทำนองเดียวกัน ตอนนี้เลย์เอาต์ที่เปลี่ยนตำแหน่งขององค์ประกอบย่อยบ่อยๆ อาจวางองค์ประกอบย่อยโดยใช้ withDirectManipulationPlacement (เช่น Scroll ซึ่งมีการใช้งานโดยค่าเริ่มต้น) ซึ่งจะช่วยให้ภาพเคลื่อนไหวที่อิงตาม approachLayout ใช้งานง่ายขึ้น เนื่องจากตอนนี้มีโอกาสที่จะแยกความแตกต่างระหว่างสิ่งที่ต้องชดเชยเพื่อสร้างภาพเคลื่อนไหวกับสิ่งที่ต้องใช้โดยตรงเมื่อตัดสินใจที่จะสร้างภาพเคลื่อนไหวในแนวทางของตน (I60ec7)
  • เราได้นำฟีเจอร์แฟล็กสำหรับภาพหน้าจอยาวออกแล้ว (I28648, b/329128246)
  • LazyColumn จะแสดงผลส่วนหัวที่ไม่เคลื่อนที่อย่างถูกต้องในภาพหน้าจอแบบยาว (I8d239, b/329296635)
  • NestedScroll แหล่งที่มา Drag และ Fling จะถูกแทนที่ด้วย UserInput และ SideEffect เพื่อรองรับคำจำกัดความที่ขยายออกไปของแหล่งที่มาเหล่านี้ ซึ่งตอนนี้รวมถึงภาพเคลื่อนไหว (Side Effect) และล้อเมาส์และคีย์บอร์ด (UserInput) (I40579)
  • ApproachLayoutModifierNode และ Modifier.approachLayout ตอนนี้เสถียรแล้ว โดยมี isMeasurementApproachInProgress() และ isPlacementApproachInProgress() ใหม่มาแทนที่ isMeasurementApproachComplete() และ isPlacementApproachComplete() เก่าตามลำดับ
  • นำตัวแก้ไข intermediateLayout ที่เลิกใช้งานแล้วออก (I3e91c)
  • เปลี่ยนชื่อ GraphicsLayer#buildLayer เป็น record เพื่อให้สอดคล้องกับเมธอด begin/endRecording ของ API ที่มี Displaylist เป็นข้อมูลสำรอง เช่น RenderNode และ Picture
  • อัปเดต rememberGraphicsLayer เพื่อใช้ประโยชน์จาก rememberObserver (I312c1, b/288494724, b/330758155)
  • UrlAnnotation เลิกใช้งานแล้ว โปรดใช้ LinkAnnotation.Url แทน หากใช้การจัดธีม Material ให้ใช้วัตถุ TextDefaults เพื่อสร้างคำอธิบายประกอบที่มีการจัดธีม Material (I8d180, b/323346545)
  • ลิงก์ข้อความมีตัวเลือกการจัดรูปแบบสถานะที่กดนอกเหนือจากการจัดรูปแบบปกติ เมาส์เหนือ และโฟกัส (I5f864, b/139312671)
  • เปลี่ยนชื่อ String.parseAsHtml เป็น AnnotatedString.Companion.fromHtml แล้ว (I43dcd)
  • เพิ่มอาร์กิวเมนต์การจัดรูปแบบ (linkStyle, focusedLinkStyle, hoveredLinkStyle) และเครื่องมือตรวจหาการโต้ตอบลิงก์ไปยังเมธอด parseAsHtml เมื่อแยกวิเคราะห์สตริงที่ติดแท็ก HTML ด้วยแท็ก <a> เมธอดจะสร้าง LinkAnnotation.Url สำหรับแท็กดังกล่าวแต่ละแท็ก และส่งออบเจ็กต์การจัดรูปแบบและเครื่องมือฟังการโต้ตอบลิงก์ไปยังคำอธิบายประกอบแต่ละรายการ (I7c977)
  • ตอนนี้ LinkAnnotation จะรับอาร์กิวเมนต์การจัดรูปแบบตามสถานะและ LinkInteractionListener เพิ่มคำอธิบายประกอบนี้ลงใน AnnotatedString เพื่อรับไฮเปอร์ลิงก์ การส่ง focusedState และ/หรือ hoveredState จะช่วยให้คุณกำหนดconfigurationภาพสำหรับลิงก์เมื่อมีการโฟกัสและ/หรือวางเมาส์เหนือลิงก์ได้ (I81ce4, b/139312671)
  • ImeOptions.hintLocales จะไม่ใช่ค่า Null อีกต่อไป หากต้องการส่งรายการภาษาที่ว่างเปล่า โปรดใช้ LocaleList.Empty (Ic5bc4)

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

  • จัดการข้อมูลเหตุการณ์อินพุตย้อนหลังที่ไม่ถูกต้อง/เสียหายอย่างเหมาะสม (ไม่สนใจข้อมูลออฟเซ็ตที่ไม่ถูกต้อง)
  • แก้ไขเหตุการณ์ของเคอร์เซอร์ที่ไม่คาดคิดเมื่อมีการเพิ่มตัวแก้ไขอินพุตของเคอร์เซอร์แบบไดนามิกก่อนตัวแก้ไขอินพุตของเคอร์เซอร์อื่นในระหว่างสตรีมเหตุการณ์อินพุตของเคอร์เซอร์ที่ใช้งานอยู่ (เช่น ระหว่างการวางเมาส์และการวางเมาส์ออก [เมาส์/สไตลัส])

เวอร์ชัน 1.7.0-alpha06

3 เมษายน 2024

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

ฟีเจอร์ใหม่

  • เพิ่มparseAsHtmlเมธอดสำหรับสตริงที่มีสไตล์ ซึ่งช่วยให้แปลงสตริงที่ทำเครื่องหมายด้วยแท็ก HTML เป็น AnnotatedString ได้ โปรดทราบว่าระบบไม่รองรับแท็กบางแท็ก เช่น คุณยังแสดงรายการหัวข้อย่อยไม่ได้ (I84d3d, I30626, b/139326648)
  • ใช้การรองรับแบบทดลองสำหรับภาพหน้าจอแบบยาวในคอนเทนเนอร์เลื่อนของ Compose โดยใช้ Android API อย่างเป็นทางการ (ScrollCaptureCallback) ฟีเจอร์นี้อยู่ในขั้นทดลองและอาจยังจัดการบางกรณีได้ไม่ถูกต้อง ด้วยเหตุนี้ ฟีเจอร์นี้จึงปิดใช้อยู่โดยค่าเริ่มต้นในขณะนี้ หากต้องการเลือกใช้ ให้ตั้งค่า Flag ComposeFeatureFlag_LongScreenshotsEnabled เป็น "จริง" (I2b055, b/329296471)

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

  • เปลี่ยน fun ClipEntry.getMetadata() เป็น val ClipEntry.clipMetadata แล้ว (I50155)
  • นำฟังก์ชัน ClipboardManager.getClipMetadata และ ClipboardManager.hasClip ออกแล้ว โปรดใช้ clipEntry.getMetadata() เพื่ออ่านข้อมูลเมตาของรายการคลิปปัจจุบัน นอกจากนี้ ให้ตรวจสอบผลลัพธ์ของ ClipboardManager.getClip ว่าเป็นค่าว่างหรือไม่ เพื่อดูว่าคลิปบอร์ดมีคลิปปัจจุบันหรือไม่ (I50498)
  • ตอนนี้คุณส่งออบเจ็กต์ GraphicsLayer ไปยังฟังก์ชัน placeable.placeWithLayer() ได้แล้ว (I1b22f)
  • ตอนนี้ ClipboardManager.setClip ยอมรับค่า Null เพื่อล้างคลิปบอร์ดได้แล้ว (I7d2e9)
  • เพิ่มรหัสทรัพยากรเพื่อช่วยซ่อนมุมมองที่ใช้เป็นรายละเอียดการติดตั้งใช้งานภายในเครื่องมือสร้าง (I99531)
  • เพิ่มเมธอด GraphicsLayer#toImageBitmap suspend เพื่อรองรับการแสดงผลเนื้อหาของบิตแมปเป็น GraphicsLayer นี่คือการดำเนินการแสดงผลที่เร่งด้วยฮาร์ดแวร์ใน API ระดับ 22 ขึ้นไป (รวม) ซึ่งรองรับอุปกรณ์ Android ทั้งหมดกว่า 99% ใน Android API ระดับ 21 ระบบจะกลับไปใช้การแสดงผลซอฟต์แวร์ (I9e114)
  • เมธอดช่วยในการแปลง RectF ของ Android เป็น ComposeRect (I39925, b/325660505)
  • ตอนนี้KeyboardOptionsพารามิเตอร์ทั้งหมดมีค่า "ไม่ได้ระบุ" เป็นค่าเริ่มต้น เพิ่มวิธีการKeyboardOptions.mergeแล้ว
  • เปลี่ยนชื่อ KeyboardOptions.autoCorrect เป็น autoCorrectEnabled และทำให้เป็นค่าว่างได้ โดยค่าว่างจะบ่งบอกว่าไม่ได้ระบุค่า (Ia8ba0, b/295951492)
  • BasicTextField(state) และ BasicSecureTextField จะใช้ KeyboardActionHandler แทน KeyboardActions ในการประมวลผลการกระทำที่ดำเนินการโดยแป้นพิมพ์ซอฟต์แวร์ (I58dda)

เวอร์ชัน 1.7.0-alpha05

20 มีนาคม 2024

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

ฟีเจอร์ใหม่

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

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

  • GraphicsLayer.draw(Canvas) ไม่ใช่ API สาธารณะอีกต่อไป โปรดใช้ฟังก์ชันส่วนขยาย DrawScope.drawLayer(GraphicsLayer) แทนเพื่อวาดเลเยอร์ (I7a7c0)
  • แยก restrictedConstraints() เป็น 2 วิธี ได้แก่ fitPrioritizingWidth() และ fitPrioritizingHeight() (I6d7fd)
  • เปิดตัวHardwareCanvas สตับสำหรับการใช้งาน Android L (I1c3b5, b/288494724)
  • อัปเดตเฟรมเวิร์ก Compose เพื่อแสดง GraphicsContext CompositionLocal พร้อมกับการอัปเดต Owner DelegateableNode และการติดตั้งใช้งาน drawWithCache Modifier เพื่อแสดงสิทธิ์เข้าถึง GraphicsContext สำหรับการเข้าถึงที่กำหนดขอบเขตซึ่งจะล้างข้อมูลอินสแตนซ์ GraphicsLayer โดยอัตโนมัติเมื่อมีการยกเลิก Modifier (I64a2f, b/288494724)
  • เปิดตัว InterceptPlatformTextInput เพื่อช่วยเขียนการทดสอบที่เกี่ยวข้องกับ IME ระดับต่ำและ Use Case อื่นๆ ของ IME ระดับต่ำ PlatformTextInputTestOverride เลิกใช้งานแล้ว (I862ed, b/322680547)
  • เพิ่มฟังก์ชันส่วนขยาย GraphicsLayer.setOutline(Outline) แล้ว (Ib81f4)
  • เปิดตัวตัวสร้างฟังก์ชัน GraphicsContext เพื่อสร้าง Factory สำหรับสร้างอินสแตนซ์ GraphicsLayer (Ib98d6, b/288494724)
  • เปิดเผย GraphicsLayer API เพื่อให้ความยืดหยุ่นที่นักพัฒนาซอฟต์แวร์กำหนดในการบันทึกคำสั่งการวาดที่ใช้ในการวาดที่อื่นได้ และยังใช้เอฟเฟกต์ภาพที่แตกต่างกันกับผลลัพธ์สุดท้ายได้ด้วย (I80245, b/288494724)
  • ขอแนะนำ Paragraph#getRangeForRect ซึ่งจะแสดงผลช่วงของข้อความที่ครอบคลุมพื้นที่สี่เหลี่ยมที่กำหนด (Iee516, b/325660505)
  • นำการลบล้างการทดสอบของ BasicText ที่มีอาร์กิวเมนต์ onLinkClicked ออกแล้ว และเราจะเปิดตัว API ทดแทนสำหรับการรองรับไฮเปอร์ลิงก์ในอนาคต (I107d5)

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

  • เพิ่มคำจำกัดความ API GraphicsLayer expect/actual เพื่อรองรับการบันทึกและเล่นซ้ำคำสั่งการวาดภาพพร้อมเอฟเฟกต์ภาพและการเปลี่ยนรูปแบบการคอมโพสิตที่ไม่บังคับ เปิดตัวอินเทอร์เฟซ GraphicsContext เพื่อรองรับทรัพยากร Dependency ของกราฟิก รวมถึงการสร้างและการจัดการอินสแตนซ์ GraphicsLayer (I4a8d6, b/288494724)
  • แก้ไขปัญหาการทำงานร่วมกันกับการค้นหาโฟกัส 1 มิติ ซึ่งโฟกัสจะติดอยู่ภายใน ComposeView ที่ฝังอยู่ระหว่างมุมมองอื่นๆ (I08fd4)

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

  • LocalLifecycleOwner ย้ายจาก Compose UI ไปยัง lifecycle-runtime-compose เพื่อให้ใช้ API ตัวช่วยที่อิงตาม Compose นอก Compose UI ได้ ขอขอบคุณ Jake Wharton สำหรับการมีส่วนร่วม (I6c41b, b/328263448)
  • แสดงพร็อพเพอร์ตี้การลอยตัวของอคติอย่างสม่ำเสมอในประเภทการจัดแนวตามอคติทั้งหมด (I69f0f, b/328088992)

เวอร์ชัน 1.7.0-alpha04

6 มีนาคม 2024

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

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

  • รองรับฟีเจอร์การเขียนด้วยลายมือโดยใช้สไตลัสสำหรับ BasicTextField2 ในอุปกรณ์ที่ใช้ Android U ขึ้นไป (I002e4)
  • ใน CL นี้ เราจะเพิ่มGetScrollViewportLengthการดำเนินการเชิงความหมายเพื่อให้เราส่งข้อมูลเกี่ยวกับคอมโพเนนต์ที่กำลังเลื่อนใน Compose ไปยังระบบ A11y ได้ CL นี้ยังใช้การใช้งานพร็อพเพอร์ตี้นี้ในรายการที่เลื่อนได้ของ Foundation ด้วย (Ic5fa2)
  • FocusRequester.createRefs ตอนนี้เสถียรแล้ว (I4d92c, b/261436820)
  • เปิดตัว DelegatableNode.requireView() เพื่อให้โหนดตัวแก้ไขรับ View Android ปัจจุบันได้โดยไม่ต้องอ่าน CompositionLocal (I40768)
  • API ใหม่ Path.reverse() เพื่อย้อนกลับทิศทางของเส้นทาง (I36348)
  • เพิ่ม hintLocales ใน KeyboardOptions เพื่อให้ TextFields สามารถแนะนำ IME ด้วยภาษาเฉพาะเพื่อตั้งค่าภาษาที่ต้องการล่วงหน้า
  • เปิดเผยพร็อพเพอร์ตี้ platformLocale จาก Locale ที่แสดงผลออบเจ็กต์แพลตฟอร์มพื้นฐาน เช่น java.util.Locale (I921c6)

เวอร์ชัน 1.7.0-alpha03

21 กุมภาพันธ์ 2024

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

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

  • ขอแนะนำ ContextualFlowRow และ FlowRow/Column ที่ได้รับการปรับปรุงด้วย MaxLines และ Overflow เรายินดีที่จะประกาศการปรับปรุง FlowRow และ FlowColumn เวอร์ชันทดลอง ซึ่งตอนนี้รองรับ maxLines และ overflow แล้ว พร้อมกับการเปิดตัว ContextualFlowRow และ ContextualFlowColumn การอัปเดตนี้ออกแบบมาเพื่อมอบคอมโพเนนต์ที่ให้ประสิทธิภาพสูงสุด โดย ContextualFlow* เหมาะสำหรับรายการจำนวนมากที่ใช้การกำหนดค่า maxLines ขนาดเล็กและปุ่มดูเพิ่มเติมแบบไดนามิก +N ส่วน FlowRow และ FlowColumn เหมาะสำหรับรายการจำนวนน้อย ซึ่งมีจำนวนน้อยกว่า 100 รายการ สำคัญ: หากต้องการคงลักษณะการทำงานที่มีอยู่ไว้ใน FlowRow หรือ FlowColumn ที่รายการทั้งหมดประกอบขึ้นโดยไม่คำนึงว่ารายการนั้นจะพอดีกับแกนไขว้สูงสุดหรือไม่ ให้ตั้งค่า overflow เป็น FlowRowOverflow.Visible หรือ FlowColumnOverflow.Visible ในระหว่างการเริ่มต้น ดูตัวอย่างการใช้งานฟีเจอร์ใหม่เหล่านี้ได้ที่ ContextualFlowRowSample และ FlowRowSample (Ib9135, b/293577082)
  • เพิ่มพร็อพเพอร์ตี้ maxTextLength semantics ที่ควรตั้งค่าในช่องข้อความซึ่งกรองจำนวนอักขระสูงสุดที่อนุญาต (I24d9f, b/170648072)
  • เราเลิกใช้งาน Wrapper Modifier.inspectable แล้ว API นี้จะสร้างการลบล้างตัวแก้ไขมากกว่าที่จำเป็น ดังนั้นเราจึงไม่แนะนำให้ใช้ API นี้ เราขอแนะนำให้นักพัฒนาแอปใช้เมธอด inspectableProperties() ใน ModifierNodeElement หากต้องการแสดงพร็อพเพอร์ตี้ตัวแก้ไขต่อเครื่องมือ (Ib3236)
  • เครื่องมือสร้างใหม่สำหรับ PopupProperties ซึ่งช่วยให้ควบคุมฟีเจอร์ WindowManager.LayoutParams ได้อย่างเต็มที่ (Ibb33e, b/312485503)
  • เปิดตัว DelegatableNode.requireLayoutCoordinates() เพื่อเป็นวิธีรับModifier.Nodeปัจจุบันของ LayoutCoordinates โดยไม่ต้องลบล้าง onPlaced และจัดเก็บพิกัดในพร็อพเพอร์ตี้ด้วยตนเอง (Ia8657)
  • เปิดตัว DelegatableNode.currentLayoutCoordinates เพื่อเป็นวิธีรับModifier.Nodeปัจจุบันของ LayoutCoordinates โดยไม่ต้องลบล้าง onPlaced และจัดเก็บพิกัดในพร็อพเพอร์ตี้ด้วยตนเอง (Iaebaa)
  • BasicTextField2 และ API ที่เกี่ยวข้องในแพ็กเกจ androidx.compose.foundation.text2 จะย้ายไปที่ androidx.compose.foundation.text (I9f635)
  • เพิ่ม ApproachLayoutModifierNode API ใหม่เพื่อรองรับการสร้างตรรกะแนวทางที่กำหนดเองในโหนดตัวแก้ไขที่ชัดเจน นอกจากนี้ ยังได้เพิ่ม DeferredTargetAnimation API แบบทดลองใช้ใหม่สำหรับภาพเคลื่อนไหวที่ไม่ทราบเป้าหมายเมื่อสร้างอินสแตนซ์ (I60745)
  • Path API ใหม่สำหรับค้นหาทิศทางของเส้นทางและดึงเส้นชั้นความสูงจาก Path (I63d04)
  • เพิ่ม PathHitTest และ Path.contains(Offset) เพื่อตรวจสอบว่า Path มีจุดที่เฉพาะเจาะจงหรือไม่ (I3b218)
  • ตอนนี้ TextLayoutResult แสดงเมธอด getLineBaseline(lineIndex) แล้ว ซึ่งช่วยให้อ่านบรรทัดฐานของข้อความบรรทัดใดก็ได้ นอกเหนือจากพร็อพเพอร์ตี้ความสะดวกที่มีอยู่ firstBaseline และ lastBaseline (Ide4e8, b/237428541)
  • เพิ่มวิธีเปรียบเทียบเฉพาะคำอธิบายประกอบของ AnnotatedStrings รายการ (I32659)

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

  • แก้ไขปัญหาความเข้ากันได้แบบย้อนหลังกับ SemanticsPropertyReceiver.performImeAction และ SemanticsActions.PerformImeAction (Id0528, b/322269946)

เวอร์ชัน 1.7.0-alpha02

7 กุมภาพันธ์ 2024

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

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

  • แก้ไขปัญหาความเข้ากันได้ของไบนารีกับ SemanticsPropertyReceiver.performImeAction แล้ว (I65865, b/322269946)
  • PopupProperties constructor ที่ใช้พารามิเตอร์ usePlatformDefaultWidth ไม่ใช่ฟีเจอร์ทดลองอีกต่อไป (I8f8d2)
  • เพิ่มการโอเวอร์โหลดของ ComposeTestRule.waitUntil ที่ใช้คำอธิบายสตริงของเงื่อนไขที่จะรวมไว้ในข้อความหมดเวลา (I9413e)
  • API ความหมายใหม่ unset() เพื่อนำพร็อพเพอร์ตี้ความหมายที่เพิ่มในเชนตัวแก้ไขเดียวกันออก พร็อพเพอร์ตี้ความหมายใหม่ isOpaque (I8c583, b/317966058, b/246056649)
  • นำ originalEventPosition ออกจากเมธอดคัดลอกใน API สาธารณะของ PointerInputChange (I7bead)

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

  • แก้ไขข้อบกพร่องด้านการช่วยเหลือพิเศษที่อนุญาตให้คลิกรายการที่ไม่ใช่แท็บและไม่ใช่ปุ่มตัวเลือกได้เมื่อเลือก (I2181c)
  • VelocityTracker จะมีการแก้ไขเพื่อเพิ่มคะแนนโดยค่าเริ่มต้น คุณยังคงปิดการแก้ไขได้โดยตั้งค่า VelocityTrackerAddPointsFix เป็น false หากพบปัญหา (Ib3877, b/269487059)
  • แก้ไขความไม่เข้ากันแบบย้อนหลังของไบนารีใน TextStyle และ ParagraphStyle (I179f0, b/320819734)

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

  • เพิ่มDialogPropertiesตัวสร้างใหม่ที่ไม่มีพารามิเตอร์เฉพาะแพลตฟอร์ม (I45829)
  • เพิ่มPopupPropertiesตัวสร้างใหม่ที่ไม่มีพารามิเตอร์เฉพาะแพลตฟอร์ม (I9a038)

เวอร์ชัน 1.7.0-alpha01

24 มกราคม 2024

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

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

  • ขยาย ClipboardManager โดยเพิ่ม ClipEntry และ ClipMetadata เพื่อรองรับเนื้อหาที่กำหนดเอง เช่น รูปภาพ
  • เพิ่ม DeviceConfigurationOverride API ไปยัง ui-test เพื่ออนุญาตให้ลบล้างลักษณะการทำงานของเนื้อหาที่อยู่ระหว่างการทดสอบในเครื่อง เช่น เพื่อระบุขนาด ภาษา ทิศทางเลย์เอาต์ ขนาดแบบอักษร หรือธีมที่พร้อมใช้งาน

เวอร์ชัน 1.6

เวอร์ชัน 1.6.8

12 มิถุนายน 2024

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

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

  • แก้ไขความไม่สอดคล้องกันในการปรับขนาดแบบอักษรเมื่อการปรับขนาดแบบอักษรน้อยกว่าตารางที่กำหนดไว้ต่ำสุด ในกรณีนี้ เราจะประมาณค่าระหว่างสเกลเชิงเส้น 1 เท่ากับตารางที่กำหนดต่ำสุด เพื่อให้ขนาดแบบอักษรเพิ่มขึ้นอย่างต่อเนื่องเมื่อสเกลเพิ่มขึ้น (Icbae3)

เวอร์ชัน 1.6.7

1 พฤษภาคม 2024

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

เวอร์ชัน 1.6.6

17 เมษายน 2024

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

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

  • แก้ไขBasicTextFieldข้อขัดข้องที่เกิดขึ้นไม่บ่อยนัก

เวอร์ชัน 1.6.5

3 เมษายน 2024

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

เวอร์ชัน 1.6.4

20 มีนาคม 2024

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

เวอร์ชัน 1.6.3

6 มีนาคม 2024

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

เวอร์ชัน 1.6.2

21 กุมภาพันธ์ 2024

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

เวอร์ชัน 1.6.1

7 กุมภาพันธ์ 2024 androidx.compose.ui:ui-*:1.6.1 เปิดตัวแล้ว เวอร์ชัน 1.6.1 มีคอมมิตเหล่านี้

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

  • แก้ไขปัญหาความเข้ากันได้แบบย้อนหลังกับ SemanticsPropertyReceiver.performImeAction และ SemanticsActions.PerformImeAction (Ie0bb2, b/322269946)
  • ตอนนี้เลย์เอาต์จะแสดงข้อผิดพลาดขณะวัดเมื่อเลย์เอาต์ใดเลย์เอาต์หนึ่งแสดงขนาดที่ใหญ่ผิดปกติ ข้อผิดพลาดประเภทนี้มักเกิดขึ้นเมื่อการวัดใช้ข้อจํากัดสูงสุดโดยตรงโดยไม่ได้ตรวจสอบ Constraints.Infinity การตรวจสอบนี้จะช่วยให้นักพัฒนาซอฟต์แวร์พบปัญหาเกี่ยวกับเลย์เอาต์ที่มีขนาดไม่ถูกต้องแทนที่จะเป็นเลย์เอาต์ที่มีปัญหา (I339a9)

เวอร์ชัน 1.6.0

24 มกราคม 2024

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

เวอร์ชัน 1.6.0-rc01

10 มกราคม 2024

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

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

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

เวอร์ชัน 1.6.0-beta03

13 ธันวาคม 2023

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

ฟีเจอร์ใหม่

  • ตอนนี้คุณสามารถLayoutCoordinatesได้โดยไม่ต้องถอดโหนดออก ป้องกันไม่ให้เกิดเหตุการณ์ดังกล่าวในเครื่องมือตรวจสอบเลย์เอาต์ของ Compose (If693)

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

  • ตอนนี้ PlatformImeOptions เป็นคลาสที่เฉพาะเจาะจงแทนที่จะเป็นอินเทอร์เฟซ (If40a4)
  • แก้ไขการจัดองค์ประกอบใหม่ของสตรีมดาวน์สตรีมเพิ่มเติมที่เกิดจาก LocalSoftwareKeyboardController และ LocalTextInputService ที่ได้รับค่าใหม่ทุกครั้งที่มีการจัดองค์ประกอบใหม่ของรูท (I42190, b/310510985)

เวอร์ชัน 1.6.0-beta02

29 พฤศจิกายน 2023

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

เวอร์ชัน 1.6.0-beta01

15 พฤศจิกายน 2023

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

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

  • ตอนนี้ตัวแก้ไข DragAndDropTarget จะรับ DragAndDropTarget ที่รับอย่างชัดเจนและมี Lambda เพื่อเลือกใช้เซสชันการลากและวาง ตอนนี้มีฟังก์ชัน Factory 2 รายการสำหรับ DragAndDropModifierNode 1 เครื่องสำหรับรับการโอนและอีก 1 เครื่องสำหรับโอนข้อมูล (I69481)
  • อัปเดต maximumFlingVelocity ให้แสดงเป็น Float อัปเดตเอกสารเพื่อให้มีความชัดเจนมากขึ้นเกี่ยวกับmaximumFlingVelocityความสามัคคี (I8adc7)
  • onDragAndDropStart ในโรงงาน DragAndDropModifierNode ได้เปลี่ยนชื่อเป็น acceptDragAndDropTransfer แล้วเพิ่ม acceptsDragAndDropTransfer ลงในตัวแก้ไข dragAndDropTarget เพื่อยอมรับจากเซสชันการลากและวาง Lambda นี้จะแสดงผล DragAndDropTarget ที่ใช้งานได้หากสนใจเซสชันการลากและวาง เราได้แทนที่ Lambda อื่นๆ สำหรับการประมวลผลเหตุการณ์การลากด้วย Lambda นี้ และเพิ่มDragAndDropTargetฟังก์ชัน Factory เพื่อรับจากเซสชันการลากและวาง (Iebf3a)
  • นำ DragAndDropInfo ออกจากประเภท DragAndDropModifierNode.drag ตอนนี้ใช้พารามิเตอร์สำหรับ transferData, ขนาดการตกแต่ง และ Lambda การตกแต่งแบบลาก DrawScope

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

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

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

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

  • ปรับปรุงชื่อ API ของโหนดที่เดินได้เพื่อให้เข้าใจได้ง่ายขึ้น (Ia4474)

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

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

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

  • นำ FocusDirection.In และ FocusDirection.Out ออกแล้ว ให้ใช้ FocusDirection.Enter และ FocusDirection.Exit แทน (I2f660)

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

  • เลิกใช้งานตัวสร้าง FontStyle(int) แล้ว โปรดใช้ FontStyle.Normal หรือ FontStyle.Italic แทน (I66610)

  • เปลี่ยนชื่ออินเทอร์เฟซ FontScalable เป็น FontScaling (Ie804a)

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

  • SoftwareKeyboardController.show() จะไม่แสดงแป้นพิมพ์ซอฟต์แวร์อีกต่อไปหากไม่มีโปรแกรมแก้ไขข้อความที่โฟกัสอยู่ (I2165a, b/301477279)
  • ตอนนี้ระบบจะละเว้นเหตุการณ์กดขึ้นของคีย์ฮาร์ดแวร์สำหรับคีย์ที่ยังไม่ได้รับเหตุการณ์กดลงในมุมมองการเขียนเดียวกัน (Ib37b4, b/305518328)
  • เพิ่มการรองรับโปรแกรมแสดงผลสำหรับ Sweep Gradient ใน ArcLine (I4d5bb)
  • ใช้ equals และ hashcode สำหรับ PageSize.Fixed (Ie3ede, b/300134276)
  • แก้ไขปัญหาความเข้ากันได้ของไบนารีกับการเปลี่ยนแปลง Window Inset (Iee695)
  • นำเลเยอร์หลักของ Material ออกสำหรับชิป/ปุ่ม Material3 เนื่องจาก Microbenchmark แสดงให้เห็นว่าไม่มีเลเยอร์ดังกล่าวแล้วประสิทธิภาพจะดีกว่า (I55555)
  • TestDispatchers ที่ส่งเป็น effectContext ไปยังการทดสอบ Compose จะใช้เพื่อสร้างการทดสอบและกรอบนาฬิกา (Ia7178)

เวอร์ชัน 1.6.0-alpha08

18 ตุลาคม 2023

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

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

  • Modifier.dragAndDrawSource ได้เปลี่ยนชื่อ Lambda onDrawDragShadow เป็น drawDragDecoration และ DragAndDropInfo ได้เปลี่ยนชื่อพารามิเตอร์ขนาดเป็น dragDecorationSize (Id0e30, b/303904810)
  • แนะนำ SemanticsNodeInteraction.isDisplayed() และ SemanticsNodeInteraction.isNotDisplayed() เพื่อตรวจสอบว่าโหนดที่ตรงกันมองเห็นได้หรือไม่โดยไม่ต้องยืนยันในโหนดนั้นด้วย (I2c196, b/302100809)
  • เปิดตัวค่า Unspecified พิเศษสำหรับฟิลด์ TextAlign, TextDirection, Hyphens และ LineBreak ของ ParagraphTextStyle เพื่อแทนที่ null เนื่องจากคลาสเหล่านี้เป็นคลาสอินไลน์ การแทนที่ค่าที่อนุญาตให้เป็น Null ด้วย Unspecified จะช่วยหลีกเลี่ยงการ Boxing ประเภทดั้งเดิมได้ เราได้อัปเดตตัวสร้าง ตัวรับ และเมธอดอื่นๆ ใน TextStyle และรูปแบบย่อหน้าเพื่อให้ยอมรับพารามิเตอร์ที่กล่าวถึงเป็นประเภทที่ไม่ใช่ Null (I4197e, b/299490814)
  • เพิ่มGoogleFontโอเวอร์โหลดสำหรับการอ่าน GoogleFont จาก XML (If8f59)
  • เปลี่ยนLoremIpsum PreviewParameterProvider ให้เป็นชั้นเรียนแบบเปิด (I41bf5, b/266918816, b/300116360)

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

  • ตอนนี้ FontFamilyResolver ใช้ Dispatchers.Main สำหรับโครูทีนการจัดการแคชแล้ว (Ie8dd9)
  • AndroidViewBinding จะนำอินสแตนซ์ Fragment ที่ขยายโดยการรวม FragmentContainerView ไว้ในเลย์เอาต์เป็นส่วนหนึ่งของ onRelease ออกพร้อมกันโดยใช้ commitNow (แทน commit ที่ใช้ก่อนหน้านี้) ซึ่งจะช่วยแก้ไขปัญหาเกี่ยวกับเมธอดของ Live Edit ด้วยการแทนที่องค์ประกอบเมื่อมีการเปลี่ยนแปลง (I58fbf)

เวอร์ชัน 1.6.0-alpha07

4 ตุลาคม 2023

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

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

  • เปิดตัว PlatformTextInputMethodTestOverride สำหรับการเขียนการทดสอบสำหรับโปรแกรมแก้ไขข้อความที่กำหนดเอง (Id159b)
  • เพิ่มตัวแก้ไข dragAndDropSource สำหรับเริ่มเซสชันการลากและวาง และตัวแก้ไข dragAndDropTarget สำหรับรับจากเซสชันการลากและวาง (Ib7828, b/286038936)
  • เพิ่มคอลเล็กชัน ColorList และ ColorSet ที่หลีกเลี่ยงการจัดสรร (I744bd)
  • เพิ่มDisableNonLinearFontScalingInCompose Flag ชั่วคราวเพื่อปิดใช้การปรับขนาดแบบอักษรที่ไม่ใช่แบบเชิงเส้น ตั้งค่า DisableNonLinearFontScalingInCompose = true ในการทดสอบหากคุณต้องการเวลาในการล้างข้อมูล เราจะนำฟีเจอร์นี้ออกใน Compose 1.6.0-beta01 (Ic9486)

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

  • การแยกวิเคราะห์ภาพเวกเตอร์ XML ที่วาดได้ที่ได้รับการเพิ่มประสิทธิภาพ (Ibb015)

เวอร์ชัน 1.6.0-alpha06

20 กันยายน 2023

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

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

  • การเพิ่มประสิทธิภาพเพิ่มเติมสำหรับไอคอน Material (I3e08d)
  • เพิ่มความสามารถในการย้ายขึ้น/ลงในโครงสร้างตัวแก้ไขเพื่อค้นหาโหนดที่คล้ายกัน (I2d234)
  • เพิ่มการเรียกกลับ onRestoreFailed() ไปยังตัวปรับแต่ง focusRestorer() (Ie1d43)
  • เพิ่มคำอธิบายประกอบ androidx ลงใน Graphics API ต่างๆ เพื่อระบุ ColorInt, FloatRange, IntRange, Size และอื่นๆ (Id65c8, b/290950582)
  • เพิ่ม showSystemUi=true ลงในคำจำกัดความของ PreviewScreenSizes (Ib61d3)

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

  • ตอนนี้ Compose ใช้การปรับขนาดแบบอักษรที่ไม่ใช่แบบเชิงเส้นเพื่อให้อ่านและเข้าถึงได้ง่ายขึ้น เมื่อการปรับขนาดแบบอักษร > 100% ในการตั้งค่าระบบ ข้อความขนาดเล็กจะเพิ่มขนาดตามปกติ แต่ข้อความที่มีขนาดใหญ่อยู่แล้วจะเพิ่มขนาดเพียงเล็กน้อย นอกจากนี้ ความสูงของบรรทัดที่กำหนดใน SP จะปรับโดยอัตโนมัติเพื่อให้สอดคล้องกับความสูงที่ตั้งใจไว้ที่ระดับ 100% ดูข้อมูลเพิ่มเติมได้ที่แนวทางปฏิบัติแนะนำในการปรับขนาดแบบอักษร (I11518)

เวอร์ชัน 1.6.0-alpha05

6 กันยายน 2023

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

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

  • เปิดใช้การจับภาพเนื้อหาใน AndroidComposeViewAccessibilityDelegateCompat (Ib2969)
  • ความเร็วในการดีดในคอมโพเนนต์ View เช่น ScrollView และ RecyclerView จะจำกัดไว้ที่ ViewConfiguration.ScaledMaximumFlingVelocity ตอนนี้ Compose มี maximumFlingVelocity เวอร์ชันของตัวเองซึ่งใช้กับ Draggable ได้แล้ว (Ibf974)
  • เพิ่มโครงสร้างเริ่มต้นเพื่อรองรับ API การลากและวางของแพลตฟอร์ม (If84ce)
  • เพิ่ม deviceId ลงใน RotaryScrollEvent (Iba3bf)
  • อัปเดต ui-tooling Devices API เพื่อรวมอุปกรณ์รุ่นใหม่กว่า (Ib25b4)

เวอร์ชัน 1.6.0-alpha04

23 สิงหาคม 2023

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

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

  • เพิ่มวิธีปิดใช้งาน ReusableComposition ซึ่งจะนำการสังเกตการณ์ออกแต่ยังคงโหนดไว้ คุณเปิดใช้งานการเรียบเรียงที่ปิดใช้งานแล้วได้อีกครั้งโดยโทรหา setContent (Ib7f31)
  • เพิ่มอินเทอร์เฟซ ReusableComposition สำหรับจัดการวงจรและการนำองค์ประกอบย่อยกลับมาใช้ซ้ำ (I812d1, b/252846775)
  • Modifier.focusGroup ได้รับการเลื่อนขั้นเป็น API ที่เสถียรแล้ว (I7ffa3)
  • เพิ่มคำอธิบายประกอบ androidx ลงใน Graphics API ต่างๆ เพื่อระบุ ColorInt, FloatRange, IntRange, Size และอื่นๆ (I70487, b/290950582)
  • อัปเดต ColorFilter API ให้มีประเภทคลาสย่อยที่เฉพาะเจาะจงเพื่อปรับปรุงความสามารถในการตรวจสอบพารามิเตอร์ (I5fe29)
  • เปิดตัวไลบรารี wear-tooling-preview เพื่อแสดงรายการอุปกรณ์ Wear ที่ใช้ได้ซึ่งใช้แสดงตัวอย่าง UI ได้ (Ib036e)
  • สร้างFontScalableอินเทอร์เฟซเพื่อจัดการส่วนการปรับขนาดแบบอักษรของอินเทอร์เฟซความหนาแน่น (I2cf3f)

เวอร์ชัน 1.6.0-alpha03

9 สิงหาคม 2023

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

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

  • การเปลี่ยนฉากเข้า/ออกประเภทใหม่ที่ปรับขนาดเนื้อหาตามขนาดของคอนเทนเนอร์ที่เคลื่อนไหวระหว่างภาพเคลื่อนไหวเข้าและออก LookaheadScope ตอนนี้ฟีเจอร์สนุกๆ และอินเทอร์เฟซที่ประกอบได้ก็เสถียรแล้ว (Ifb2ce)
  • เพิ่มการรองรับการกำหนดค่า privateImeOptions (Idb772)

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

  • ตอนนี้ PopupPositionProvider.calculatePosition จะอัปเดตตำแหน่งของป๊อปอัปโดยอัตโนมัติเมื่อมีการเปลี่ยนแปลงสถานะที่อ่านในการคำนวณ (I676a1, b/292257547)
  • แก้ไขช่องข้อความที่แสดงแป้นพิมพ์และแก้ไขได้เมื่อ readOnly เป็นจริง นอกจากนี้ ยังแก้ไขปัญหาที่แป้นพิมพ์ไม่แสดงเมื่อเปลี่ยน readOnly จากจริงเป็นเท็จขณะโฟกัส (I34a19, b/246909589)
  • การขยายการใช้การยืนยันส่วนกลางในการทดสอบ UI (I1f90d)

เวอร์ชัน 1.6.0-alpha02

26 กรกฎาคม 2023

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

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

  • เพิ่มอินเทอร์เฟซตัวระบุตำแหน่งบริการที่ผู้ใช้ Composition สามารถนำไปใช้ได้ ซึ่งจะช่วยให้การใช้งาน Composition ที่มอบหมายให้การค้นหาบริการตัวแทน Composition อื่นไปยัง Composition เดิม ไม่ควรเรียกใช้โดยตรงและใช้เพื่อเปิดใช้การสร้าง API ทดสอบในรันไทม์ที่พบได้จากคอมโพสเซอร์เวอร์ชันที่ห่อหุ้มไว้ เช่น โมดูล UI (I296b9)
  • ออกแบบ PlatformTextInput* API ใหม่ทั้งหมด (I6c93a, b/274661182, b/267235947, b/277380808)
  • SoftwareKeyboardController และ LocalSoftwareKeyboardController ไม่ใช่ฟีเจอร์ทดลองอีกต่อไป ตอนนี้ LocalSoftwareKeyboardController เป็น CompositionLocal อย่างเป็นทางการแล้ว (I4c364)
  • LookaheadLayout และ LookaheadLayoutScope เลิกใช้งานแล้วใน 2-3 รุ่นที่ผ่านมา และตอนนี้ได้ถูกนำออกแล้ว API ที่ใช้แทนคือ LookaheadScope ซึ่งใช้ได้กับเลย์เอาต์ทุกแบบ (I12ac3)
  • เพิ่ม SemanticsNodeInteraction.requestFocus เพื่อให้เป็นวิธีที่สะดวกและค้นพบได้ง่ายขึ้นในการขอโฟกัสในการทดสอบ (Ie8722)
  • เพิ่ม API รุ่นทดลองสำหรับการลงทะเบียนการยืนยันส่วนกลาง เพื่อให้เฟรมเวิร์กการทดสอบใช้ในอนาคต (I12d77)

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

  • ตอนนี้การเรียกใช้ครั้งแรกของAndroidViewupdate Callback จะเลื่อนออกไปจนกว่าจะมีการแนบ View แทนที่จะเรียกใช้เมื่อมีการใช้ Composition ที่แนะนำ AndroidView ซึ่งจะแก้ไขข้อบกพร่องที่การเรียกกลับ update จะไม่ถือว่าไม่ถูกต้องหากเอฟเฟกต์เปลี่ยนสถานะที่อ่านทันที (Ie9438, b/291094055)

เวอร์ชัน 1.6.0-alpha01

21 มิถุนายน 2023

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

ฟีเจอร์ใหม่

  • รองรับการมองไปข้างหน้าใน LazyList ซึ่งจะช่วยให้ LazyList ในการส่งผ่านการมองล่วงหน้าข้ามภาพเคลื่อนไหวใดๆ (เช่น ภาพเคลื่อนไหวการวางไอเทม AnimatedVisibility ฯลฯ) และคำนวณขนาดและตำแหน่งการมองล่วงหน้าสำหรับองค์ประกอบย่อยทั้งหมดได้ หลังจากส่งผ่านล่วงหน้าแล้ว ลูกของ LazyList จะเคลื่อนไหวได้อย่างอิสระตามความเป็นจริงที่เห็นในการส่งผ่านล่วงหน้า

การเปลี่ยนแปลงลักษณะการทำงาน: ตอนนี้ includeFontPadding เป็น false โดยค่าเริ่มต้นใน Compose

ตอนนี้ includeFontPadding เป็นเท็จโดยค่าเริ่มต้น (21d806) ใน Compose

includeFontPadding เป็นแอตทริบิวต์เดิมที่ควบคุมว่าจะรวมระยะห่างเพิ่มเติมที่ด้านบนของบรรทัดแรกและบรรทัดสุดท้ายของข้อความหรือไม่ เพื่อรองรับอักขระที่อาจขยายเหนือหรือใต้เส้นฐานของข้อความ

การอัปเดต Compose เวอร์ชันนี้จะแก้ไขวิธีแสดงข้อความทั้งหมดใน UI โดยการนำระยะขอบเพิ่มเติมที่ด้านบนของบรรทัดแรกและบรรทัดสุดท้ายของข้อความทุกรายการที่คุณแสดงออก

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

คุณเลือกใช้ includeFontPadding ได้โดยใช้ PlatformTextStyle สำหรับข้อความแต่ละรายการ

Text(
 text = myText,
 style = TextStyle(
   lineHeight = 2.5.em,
   platformStyle = PlatformTextStyle(
     includeFontPadding = true/false
   )
   /* … */
  )
)

คุณเลือกใช้ includeFontPadding สำหรับข้อความทั้งหมดได้โดยกำหนดค่ารูปแบบ Material โปรดทราบว่าชื่อพารามิเตอร์จะแตกต่างกันระหว่าง M2 กับ M3

val Typography = Typography(
   body1 = TextStyle(
       fontFamily =    /* … */,
       fontSize =    /**/,
       platformStyle = PlatformTextStyle(
           includeFontPadding = false
       )
   /**/
   )
)

MaterialTheme(
   typography = Typography,
   /* … */
)

ดูข้อมูลเพิ่มเติมเกี่ยวกับ Compose includeFontPadding ได้ในเอกสารประกอบสำหรับนักพัฒนาซอฟต์แวร์และบล็อกโพสต์นี้

หากพบปัญหา/ข้อบกพร่องที่เกี่ยวข้องกับการเปลี่ยนแปลงนี้ ให้รายงานข้อบกพร่องโดยใช้เครื่องมือติดตามปัญหา

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

  • การสนับสนุน InputConnection#requestCursorUpdates (I0c69b)
  • เพิ่ม FocusRequester.saveFocusedChild และ FocusRequester.restoreFocusedChild (Ic557e, b/272302679, b/275157318)
  • เพิ่มประเภท ResourceResolutionException เพื่อห่อ Throwable ที่เกิดขึ้นเมื่อพยายามโหลดชิ้นงานบิตแมปพร้อมคำอธิบายเส้นทางชิ้นงานที่โหลดไม่สำเร็จ (I19f44, b/230166331, b/278424788)
  • การเพิ่มประสิทธิภาพการช่วยเหลือพิเศษเพื่อการจัดสรรประสิทธิภาพและหน่วยความจำ (Iede48)
  • เพิ่มพร็อพเพอร์ตี้และการดำเนินการทางความหมายเพื่อรองรับการแปลข้อความ (I4a6bc)
  • พร็อพเพอร์ตี้ใหม่ใน IntrinsincMeasureScope และการติดตั้งใช้งาน (เช่น MeasureScope) เพื่อระบุว่าการวัดปัจจุบันเป็นการส่งบอลล่วงหน้าหรือไม่ (I7a812)
  • อัปเดต DrawScope API เพื่อเพิ่มความสามารถในการกำหนดเป้าหมายใหม่ในการแสดงผลไปยัง Canvas อื่นที่มีความหนาแน่น/ทิศทางเลย์เอาต์ และขนาดอื่น
  • อัปเดต DrawContext เพื่อรองรับการกำหนดค่าความหนาแน่นและทิศทางเลย์เอาต์ รวมถึงทำให้กำหนดค่า Canvas ได้ (Ie1f9b, b/225408150)
  • เพิ่ม Paragraph#fillBoundingBoxes เพื่อคำนวณกรอบล้อมรอบอักขระ (If30ee)
  • เพิ่มชุด MultiPreviews ทั่วไป (Ia5a27)

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

  • เพิ่มFocusTargetModifierNodeอินเทอร์เฟซที่ใช้สร้างFocusTargetที่กำหนดเองได้ (I9790e)
  • เปลี่ยนชื่อพารามิเตอร์ fallback* ในเครื่องมือสร้าง TextMeasurer เป็น default* (I940a5)
  • เปลี่ยนชื่อ SemanticsPropertyReceiver.performImeAction เป็น onImeAction และ SemanticsActions.PerformImeAction เป็น OnImeAction (I8e841)
  • เพิ่ม Wheel เพื่อแยกความแตกต่างระหว่างการเลื่อนเมาส์กับการลากในการเลื่อนที่ซ้อนกัน (โดยเฉพาะใน NestedScrollConnection) (Ie57e4)
  • เพิ่ม asComposePaint API เพื่อแทนที่ toComposePaint เนื่องจากออบเจ็กต์ที่ส่งคืนจะรวม android.graphics.Paint เดิม (I22b4c)
  • เลิกใช้งาน SemanticsProperties.imeAction และแทนที่ด้วยพารามิเตอร์ใหม่เป็น SemanticsActions.performImeAction (I4a587)
  • เพิ่มการรองรับการเลือกด้วยเมาส์ การเลือกแบบสัมผัสจะขยายตามคำและลดตามอักขระ (Ic0c6c, b/180639271)
  • ตอนนี้เมธอด Paragraph ที่เคยส่ง AssertionError สำหรับออฟเซ็ตที่อยู่นอกขอบเขตจะส่ง IllegalArgumentException เหมือนกับ MultiParagraph (I549d3, b/243338896)

รุ่น 1.5

เวอร์ชัน 1.5.4

18 ตุลาคม 2023

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

เวอร์ชัน 1.5.3

4 ตุลาคม 2023

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

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

  • (b/301209788) TextField บางครั้งจะใช้คำสั่งก่อนหน้าอย่างไม่ถูกต้องเมื่อโฟกัสและป้อนข้อมูลภาษาเกาหลี ทำให้ตัวอักษรหายไป

รุ่น 1.5.2

27 กันยายน 2023

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

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

  • เพิ่มวิธีแก้ปัญหาสำหรับข้อขัดข้องเมื่อเข้าถึง API การเลื่อนการช่วยเหลือพิเศษจากเธรดเบื้องหลัง
  • แก้ไขการเพิ่มโหนดที่ไม่ได้แนบกับแผนผังความหมาย

รุ่น 1.5.1

6 กันยายน 2023

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

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

  • แก้ไขช่องข้อความที่แสดงแป้นพิมพ์และแก้ไขได้เมื่อ readOnly เป็นจริง นอกจากนี้ ยังแก้ไขปัญหาที่แป้นพิมพ์ไม่แสดงเมื่อเปลี่ยน readOnly จากจริงเป็นเท็จขณะโฟกัส (I34a19, b/246909589)

เวอร์ชัน 1.5.0

9 สิงหาคม 2023

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

เวอร์ชัน 1.5.0-rc01

26 กรกฎาคม 2023

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

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

  • แก้ไขการขัดข้องที่เกิดขึ้นเมื่อใช้ SubcomposeLayout ภายใน movableContentOf()

เวอร์ชัน 1.5.0-beta03

28 มิถุนายน 2023

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

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

  • เพิ่มอินเทอร์เฟซ FocusTargetModifierNode ที่ใช้สร้าง FocusTarget ที่กำหนดเองได้ (Ifb1d6)
  • แก้ไขปัญหาเกี่ยวกับ Dialog และ Popup composables ที่อาจส่งผลให้หน้าต่างย่อยไม่ปรับขนาดตามที่คาดไว้เมื่อ usePlatformDefaultWidth=true (I112ee)

เวอร์ชัน 1.5.0-beta02

7 มิถุนายน 2023

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

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

  • เพิ่ม asComposePaint API เพื่อเปิดใช้การใช้งานอินสแตนซ์ android.graphics.Paint ที่จะใช้ใน Compose

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

  • เพิ่ม asComposePaint API เพื่อแทนที่ toComposePaint เนื่องจากออบเจ็กต์ที่ส่งคืนจะรวม android.graphics.Paint เดิม (I22b4c)

เวอร์ชัน 1.5.0-beta01

24 พฤษภาคม 2023

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

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

  • นำการจัดสรรในการจัดองค์ประกอบใหม่ ภาพเคลื่อนไหวสี และ AndroidComposeView (Ib2bfa) ออกแล้ว
  • เพิ่มฟังก์ชันผู้ช่วยสนุกๆ CacheDrawModifierNode() เพื่ออนุญาตการมอบสิทธิ์ (Icf8f9)
  • ขอแนะนำพร็อพเพอร์ตี้ isLookingAhead ซึ่งเข้าถึงได้จาก MeasureScope เพื่อสังเกตผลลัพธ์การคาดการณ์และมีอิทธิพลต่อการส่งผ่านหลักหากต้องการ (Ibf4c3)
  • พร็อพเพอร์ตี้ความหมายใหม่ traversalIndex ซึ่งเป็นค่าลอยที่ใช้เพื่อจัดลําดับโหนดใหม่ในการข้ามผ่าน TalkBack (ค่าที่ต่ำกว่าจะอยู่ก่อน) (I9a81b, b/186443263)
  • เปลี่ยนชื่อพร็อพเพอร์ตี้ Semantics isContainer เป็น isTraversalGroup (I121f6)
  • ColorProducer ตอนนี้มี operator fun invoke แทน produce (I4a9a2)
  • เพิ่ม Path transform API เพื่อใช้การแปลงการแปล/การปรับขนาด/การหมุนกับออบเจ็กต์เส้นทาง (I23434, b/233772232)
  • เมธอดของ ColorProducer เรียกว่า produce (I78bde)
  • เปลี่ยนชื่อ toFrameworkColorSpace เป็น toAndroidColorSpace (I4f547)
  • เปลี่ยนชื่อ ColorLambda เป็น ColorProducer (I73b1a)
  • เปิดตัว API เพื่อแปลงระหว่างประเภทพื้นที่สีของ Android และ Compose (Ie7db4, b/279979665)
  • เพิ่มพารามิเตอร์สีลงใน BasicText เพื่อให้สามารถเคลื่อนไหวหรือตั้งค่าสีข้อความได้อย่างมีประสิทธิภาพ (Iffd88, b/246961787)
  • เปลี่ยนชื่อ TextRange.constrain เป็น TextRange.coerceIn แล้ว (I31be2)
  • เพิ่ม TextStyle.merge(...) ที่เพิ่มประสิทธิภาพพร้อมรายการพารามิเตอร์ทั้งหมด (Iad234, b/246961787)
  • ทำให้ Text API หลายรายการมีเสถียรภาพ ซึ่งรวมถึง Brush, DrawStyle, TextMotion, DrawScope.drawText, Paragraph.paint(Brush), MultiParagraph.paint(Brush) (I2f740, b/261581564, b/261581931, b/261561245)
  • PlatformTextStyle.includeFontPadding เลิกเลิกใช้งานแล้ว เดิมทีเราตั้งใจจะนำช่องนี้ออก แต่ความคิดเห็นแสดงให้เห็นว่านักพัฒนาแอปต้องการตัวเลือกการกำหนดค่านี้ จึงนำการเลิกใช้งานออกจากฟิลด์ (I98e96, b/277703184)
  • เพิ่มเมธอด TextRange.constrain สาธารณะ (I97912)
  • ตอนนี้คุณเปิดUrlAnnotationในAnnotatedStringได้แล้วผ่านบริการช่วยเหลือพิเศษ เช่น TalkBack (If4d82, b/253292081)
  • เพิ่มInsertTextAtCursorการดำเนินการเชิงความหมายสำหรับช่องข้อความ (I11ed5)
  • LineHeightStyle.Alignment(topRatio) constructor ได้รับการเลื่อนขั้นเป็น API ที่เสถียร (I79c32, b/261565383)
  • TextMeasurer และ API ที่เกี่ยวข้องไม่ใช่เวอร์ชันทดลองอีกต่อไป (I74647, b/261581753)
  • เพิ่มการดำเนินการตามความหมายของ PerformImeAction เพื่อเรียกใช้การดำเนินการของ IME ในโหนดโปรแกรมแก้ไขข้อความ (Ic606f, b/269633506)
  • PlatformTextInput API ไม่ใช่เวอร์ชันทดลองสำหรับ Android อีกต่อไป (I668eb)
  • เปลี่ยนชื่อพารามิเตอร์ค่าสำหรับ Enum.valueOf (Ia9b89)
  • ข้อยกเว้นที่เกิดขึ้นเพิ่มเติมจาก enum valueOf (I818fe)
  • เปิดตัว PlatformTextInputAdapter API ระดับต่ำใหม่สำหรับการสร้างการใช้งานอินพุตข้อความที่กำหนดเองซึ่งสื่อสารกับ API ของแพลตฟอร์มโดยตรง (I58df4)
  • เพิ่มพารามิเตอร์ BlendMode ลงในเมธอด DrawScope.drawText, Paragraph.paint และ MultiParagraph.paint เพื่อรองรับอัลกอริทึมการผสมผสานที่แตกต่างกันเมื่อวาดข้อความบน Canvas (I57508)
  • เปลี่ยนชื่อ Font.MaximumAsyncTimeout เป็น Font.MaximumAsyncTimeoutMillis เปลี่ยนชื่อเท่านั้น (I07af5)
  • ค่า DPI ที่อัปเดตของ@Previewอุปกรณ์อ้างอิง (Id6151, b/254528382)
  • เพิ่มพารามิเตอร์ brush, alpha ลงใน BasicText เพื่อให้สามารถเคลื่อนไหวหรือตั้งค่าแปรงข้อความได้อย่างมีประสิทธิภาพ
  • กำหนดประเภท Lambda แบบไม่มีกล่องสำหรับ Float, Double, Long, Int, Short ใน :ui:ui-unit (I6f18d, b/246961787)

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

  • นำการจัดสรรหลายรายการในการติดตามความเร็วของเคอร์เซอร์ออก (I26bae)
  • ลดการจัดสรรในการจัดการอินพุตเลย์เอาต์และเคอร์เซอร์ (I5333a)
  • เพิ่มประสิทธิภาพการใช้งานหน่วยความจำของ Vector และการแสดงเฟรมแรก (I2f3c6)
  • นำการจัดสรรออกเมื่อวาดเส้นและจุดด้วย Canvas (I9f535)
  • เพิ่มเอกสารสำหรับ AndroidFont.fontVariationSettings (I7d9e2)

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

  • ปรับปรุงประสิทธิภาพและลดการจัดสรรใน Vector API (I906cb)

เวอร์ชัน 1.5.0-alpha04

10 พฤษภาคม 2023

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

ฟีเจอร์ใหม่

  • Modifier.Node การปรับปรุงการมอบสิทธิ์ เพิ่มความสามารถในการมอบสิทธิ์ที่ได้รับการปรับปรุงให้กับอินสแตนซ์อื่นๆ ของ Modifier.Node จาก DelegatingNode ซึ่งทำได้ด้วย API delegate และ undelegate ก่อนการเปลี่ยนแปลงนี้ API ทุกรายการจากโหนดที่มอบสิทธิ์จะต้องได้รับการมอบสิทธิ์อย่างชัดแจ้งไปยังโหนดที่ได้รับมอบสิทธิ์ หลังจากการเปลี่ยนแปลงนี้ ระบบจะมอบสิทธิ์อินเทอร์เฟซของโหนดโดยนัย เว้นแต่ DelegatingNode จะลบล้างอย่างชัดเจน (67352bc)

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

  • เปิดตัว NestedScrollModifierNode ซึ่งเป็น NestedScroll Modifier.Node ที่มอบสิทธิ์ให้ได้ (I69513)
  • เพิ่มพารามิเตอร์ onReset และ onRelease ลงใน AndroidViewBinding ที่ใช้ร่วมกันได้ ซึ่งเป็นการจำลอง AndroidView ที่ใช้ร่วมกันได้และเปิดใช้การรองรับการใช้ View ซ้ำด้วย ViewBinding (I00b1e, b/276802519)
  • อัปเดต Compose Path API เพื่อรองรับการดำเนินการย้อนกลับเพื่อรองรับกรณีการใช้งานการจัดการเส้นทางบ่อยๆ ด้วยการนำกลับมาใช้ใหม่ที่เร็วขึ้น (I7b797)
  • เพิ่ม TextStyle.merge(...) ที่เพิ่มประสิทธิภาพพร้อมรายการพารามิเตอร์ทั้งหมด (Iad234, b/246961787)
  • ทำให้ Text API หลายรายการมีเสถียรภาพ ซึ่งรวมถึง Brush, DrawStyle, TextMotion, DrawScope.drawText, Paragraph.paint(Brush), MultiParagraph.paint(Brush) (I2f740, b/261581564, b/261581931, b/261561245)
  • PlatformTextStyle.includeFontPadding เลิกเลิกใช้งานแล้ว เดิมทีเราตั้งใจจะนำช่องนี้ออก แต่ความคิดเห็นแสดงให้เห็นว่านักพัฒนาแอปต้องการตัวเลือกการกำหนดค่านี้ จึงนำการเลิกใช้งานออกจากฟิลด์ (I98e96, b/277703184)

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

  • แก้ไขการถดถอยที่แป้นพิมพ์ไม่แสดงสำหรับช่องข้อความภายในกล่องโต้ตอบที่ไม่ได้สร้างโดย Dialog composable (I82551, b/262140644)

เวอร์ชัน 1.5.0-alpha03

19 เมษายน 2023

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

ฟีเจอร์ใหม่

  • ลักษณะการทำงานเริ่มต้นใหม่สำหรับ SubcomposeLayout ใน LookaheadScope: SubcomposeLayouts ที่ไม่มีช่องแบบมีเงื่อนไข (เช่น TabRow, Scaffold, BoxWithConstraints ฯลฯ) จะทำงานร่วมกับภาพเคลื่อนไหวแบบคาดการณ์ได้อย่างราบรื่น

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

  • intermediateMeasurePolicy ใหม่เริ่มต้นที่ใช้ซ้ำนโยบายการวัดผลจาก Lookahead Pass จะช่วยให้ประเภทSubcomposeLayoutย่อยที่ไม่มีช่องแบบมีเงื่อนไข เช่น Scaffold, TabRow และ BoxWithConstraints ทำงานร่วมกับ Lookahead ได้โดยค่าเริ่มต้น (Id84c8)
  • ตอนนี้ Recomposer ที่สร้างขึ้นสำหรับหน้าต่าง Android จะบล็อกการเรียกไปยัง withFrameNanos เท่านั้น ไม่ใช่การคอมโพสทั้งหมด เมื่อได้รับการแจ้งเตือน ON_STOP ซึ่งหมายความว่าหน้าต่างที่เชื่อมโยงกับกิจกรรมที่หยุดจะยังคงจัดองค์ประกอบใหม่สำหรับการเปลี่ยนแปลงข้อมูลต่อไป แต่ภาพเคลื่อนไหวหรือผู้เรียกอื่นๆ ของ withFrameNanos จะถูกบล็อก (Id9e7f, b/240975572)
  • เปลี่ยน motionEventSpy เป็นเวอร์ชันเสถียร (Ic5ec4, b/261560988)
  • เพิ่มเมธอด TextRange.constrain สาธารณะ (I97912)
  • PlatformTextStyle.includeFontPadding ไม่ถือว่าเลิกใช้งานแล้วเพื่อกระตุ้นให้นักพัฒนาแอปใช้ API ความเข้ากันได้นี้เพื่อเปลี่ยนและทดสอบการตั้งค่า includeFontPadding เป็นเท็จ (I98e96, b/277703184)

เวอร์ชัน 1.5.0-alpha02

5 เมษายน 2023

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

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

  • SubcomposeLayout API ใหม่ที่ใช้นโยบายการวัดผลระดับกลางเพิ่มเติมสำหรับการจัดการตรรกะการวัดผล/เลย์เอาต์ระหว่างภาพเคลื่อนไหวที่อิงตามการมองไปข้างหน้า (I017d3)
  • ตอนนี้ PointerInput จะทำงานแบบ Lazy และใช้ Modifier.Node เพื่อให้ประสิทธิภาพดียิ่งขึ้น (อ่านเกี่ยวกับการเปลี่ยนแปลงลักษณะการทำงานเล็กน้อย) (15dab9)
  • เปลี่ยน API ที่ทดลองเป็น API ที่เสถียรด้วยเหตุการณ์สำคัญ (I9c7d8, b/261566839, b/261567368)
  • เปลี่ยน API ทดลองเป็น API ที่เสถียรใน PointerInputChange (I1b543, b/261560988, b/261565762, b/261565749)
  • เพิ่มวิธีสร้างอินสแตนซ์ของ SuspendingPointerInputModifierNode สำหรับการติดตั้งใช้งาน Modifier.Node ที่ซับซ้อนมากขึ้น (Ic4933)
  • ตอนนี้คุณเปิดUrlAnnotationในAnnotatedStringได้แล้วผ่านบริการช่วยเหลือพิเศษ เช่น TalkBack (If4d82, b/253292081)
  • เพิ่ม API เพื่อสกัดกั้นคีย์ฮาร์ดแวร์ก่อนที่จะส่งไปยังแป้นพิมพ์ซอฟต์แวร์ (I4f4c6, b/186800395)
  • เพิ่มInsertTextAtCursorการดำเนินการเชิงความหมายสำหรับช่องข้อความ (I11ed5)
  • ตอนนี้การดำเนินการทดสอบที่เกี่ยวข้องกับข้อความ (เช่น performTextInput) จะขอโฟกัสโดยตรงโดยใช้การดำเนินการทางความหมายแทนการคลิกที่ช่อง (I6ed05)

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

  • ตอนนี้การดำเนินการทดสอบข้อความต้องเปิดใช้ช่องข้อความ (Iab328)

เวอร์ชัน 1.5.0-alpha01

22 มีนาคม 2023

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

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

  • ตอนนี้ Modifier.intermediateLayout ไม่จำเป็นต้องมี LookaheadScope ที่ชัดเจนแล้ว บล็อกการวัดใน intermediateLayout มี IntermediateMeasureScope เป็นตัวรับ ซึ่งมี CoroutineScope, LookaheadScope และ MeasureScope ที่สะดวก (Ibe2e5)
  • LookaheadLayout ถูกแทนที่ด้วย LookaheadScope ซึ่งไม่ใช่ Layout อีกต่อไป ซึ่งจะช่วยให้ MeasurePolicy ของผู้ปกครองควบคุมเนื้อหาของบุตรหลานใน LookaheadScope ได้โดยตรง (Ibe2e5)
  • เพิ่ม Modifier.Node#coroutineScope เพื่ออนุญาตให้ Modifier.Nodes เปิดใช้โครูทีน (I76ef9)
  • อนุญาตให้ Modifier.Nodes อ่าน CompositionLocals โดยการใช้ CompositionLocalConsumerModifierNode interface (Ib44df)
  • การแพร่กระจายของคลาส @Deprecated ไปยังพร็อพเพอร์ตี้ (I882d1)

เวอร์ชัน 1.4

เวอร์ชัน 1.4.3

3 พฤษภาคม 2023

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

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

  • แก้ไขปัญหาที่ AndroidView อาจจัดวางไม่ถูกต้องเมื่อใช้กับตัวแก้ไขบางตัว (I4dc77, b/274797771)
  • แก้ไขข้อบกพร่องในการค้นหาโฟกัส 2 มิติที่ส่งผลต่อDropDown เมนู (b/276811828)
  • แก้ไขข้อบกพร่องในพร็อพเพอร์ตี้การเข้า/ออกโฟกัสที่กำหนดเองซึ่งเรียกใช้บล็อกการเข้า/ออกเฉพาะครั้งแรกที่เรียกใช้ Lambda (b/277234245)
  • แก้ไขการถดถอยในระบบโฟกัสที่ทำให้เกิดข้อขัดข้องขณะอ่าน focusProperties (b/271324781, b/274897776)

เวอร์ชัน 1.4.2

19 เมษายน 2023

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

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

  • แก้ไขปัญหาที่ AndroidView ไม่นำตัวแก้ไขกลับมาใช้ซ้ำอย่างถูกต้อง ซึ่งอาจส่งผลให้เกิดลักษณะการทำงานที่ไม่คาดคิดและเกิดข้อขัดข้อง (Ib67ee, b/275919849)
  • แก้ไขการถดถอยที่แป้นพิมพ์ไม่แสดงสำหรับช่องข้อความภายในกล่องโต้ตอบที่ไม่ได้สร้างโดย Dialog Composable (I82551, b/262140644)

เวอร์ชัน 1.4.1

5 เมษายน 2023

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

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

  • แก้ไขปัญหาที่ ParentDataModifier ไม่ส่งผลต่อ AndroidView (b/274797771)

เวอร์ชัน 1.4.0

22 มีนาคม 2023

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

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

  • เพิ่ม PinnableContainer API ใหม่ที่อนุญาตให้ปักหมุดรายการใน Lazy List เพื่อไม่ให้ระบบทิ้งรายการเมื่อเลื่อนออกนอกขอบเขต ตัวอย่างเช่น Modifier.focusable() ใช้กลไกนี้เพื่อปักหมุดรายการที่โฟกัสอยู่ (Ib8881, b/259274257, b/195049010)
  • เราเขียนระบบโฟกัสใหม่โดยใช้ Modifier.NodeAPI ใหม่ที่อยู่ในระยะทดลอง (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589)
  • เพิ่มพร็อพเพอร์ตี้ความหมาย IsContainer ใน Surfaces ระบบจะใช้พร็อพเพอร์ตี้นี้ในการเปลี่ยนแปลงในภายหลังซึ่งจะกำหนดลำดับการข้ามตามความหมายเชิงความหมายขององค์ประกอบต่างๆ เช่น พื้นผิว (I63379)
  • เพิ่มบทบาทการช่วยเหลือพิเศษใหม่ DropdownList ซึ่งใช้เพื่อจำลองลักษณะการทำงานของ TalkBack เมื่อโฟกัส android.widget.Spinner ได้ (I177e5, b/236159001)
  • ตอนนี้คุณใช้ PlatformTextStyle(emojiSupportMatch) เพื่อเลือกปิดใช้การประมวลผลการรองรับอีโมจิสำหรับย่อหน้าเดียวได้แล้ว (Ia7100, b/139326806)
  • ตอนนี้การทดสอบ UI ของ Android Compose จะเรียกใช้การส่งเลย์เอาต์สำหรับแต่ละเฟรมเมื่อดำเนินการเฟรมเพื่อให้เข้าสู่สถานะว่าง (เช่น ผ่าน waitForIdle) ซึ่งอาจส่งผลต่อการทดสอบที่ยืนยันในแต่ละเฟรมของภาพเคลื่อนไหวเลย์เอาต์ (I8ea08, b/222093277)
  • เพิ่มการทดลอง TextMotion ไปยัง TextStyle เพื่อกำหนดข้อความให้เป็น Static(default) หรือภาพเคลื่อนไหว ใช้ TextMotion.Animated หากจะปรับขนาด แปล หรือหมุนข้อความผ่านภาพเคลื่อนไหว (I24dd7)

เวอร์ชัน 1.4.0-rc01

8 มีนาคม 2023

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

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

  • เพิ่มการโอเวอร์โหลดของAndroidViewฟังก์ชันที่ใช้ร่วมกันได้ ซึ่งยอมรับพารามิเตอร์ onReset ซึ่งช่วยให้สามารถนำอินสแตนซ์ View กลับมาใช้ใหม่ได้เมื่อทิ้งโหนดในองค์ประกอบและนำกลับมาใช้ใหม่ในลักษณะที่เข้ากันได้ ซึ่งมีประโยชน์อย่างยิ่งสำหรับLazyRowsและLazyColumnsของยอดดู (I3f10d, b/230099236)
  • เปิดตัว PlatformTextInputAdapter API ระดับต่ำใหม่สำหรับการสร้างการใช้งานอินพุตข้อความที่กำหนดเองซึ่งสื่อสารกับ API ของแพลตฟอร์มโดยตรง (I58df4)

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

  • ตอนนี้การดำเนินการตามความหมายของ BasicTextFieldSetText จะอัปเดตบัฟเฟอร์ข้อความโดยใช้เส้นทางโค้ดเดียวกับการอัปเดต IME และฟังก์ชันการทดสอบ (เช่น performTextReplacement)
  • ฟังก์ชันการทดสอบข้อความ performTextClearance, performTextReplacement และ performTextSelection จะใช้ SemanticsActions แล้ว (I0807d, b/269633168, b/269624358)

เวอร์ชัน 1.4.0-beta02

22 กุมภาพันธ์ 2023

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

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

  • นำ modifierElementOf() API ออกแล้ว โปรดขยายเวลาจาก ModifierNodeElement โดยตรงแทน (I2256b)
  • เพิ่มการเรียกกลับ Modifier.Node.onReset() ใหม่เพื่อให้คุณรีเซ็ตสถานะในเครื่องบางอย่างเพื่อจัดการกรณีที่ Layout จะนำกลับมาใช้ใหม่ได้อย่างเหมาะสม (เช่น เป็นรายการของ LazyColumn) แก้ไข FocusTargetModifierNode เพื่อรีเซ็ตสถานะที่โฟกัสอย่างถูกต้อง (I65495, b/265201972)
  • เพิ่มพารามิเตอร์ BlendMode ลงในเมธอด DrawScope.drawText, Paragraph.paint และ MultiParagraph.paint เพื่อรองรับอัลกอริทึมการผสมผสานที่แตกต่างกันเมื่อวาดข้อความบน Canvas (I57508)

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

  • ปรับปรุงอัลกอริทึมลำดับการโฟกัสการช่วยเหลือพิเศษ เช่น แถบด้านบน/ด้านล่างมักจะอ่านเป็นอันดับแรก/สุดท้ายตามลำดับ (74e9c5)

เวอร์ชัน 1.4.0-beta01

8 กุมภาพันธ์ 2023

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

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

  • เปลี่ยนชื่อ PinnableContainer.PinnedHandle.unpin() เป็น release() แล้ว (I4667a)
  • เพิ่ม waitUntilNodeCount, waitUntilAtLeastOneExists, waitUntilExactlyOneExists และ waitUntilDoesNotExist เป็น API การทดสอบใน ComposeTestRule เพื่อขยาย API waitUntil ให้ยอมรับตัวจับคู่และจำนวนโหนดใดก็ได้ ดูเอกสารเพิ่มเติมได้ที่ ComposeTestRule (Ifa1b9, b/226934294)
  • เปลี่ยนชื่อ Font.MaximumAsyncTimeout เป็น Font.MaximumAsyncTimeoutMillis (I07af5)
  • นำ GoogleFont.Provider.AllFontsListUri ออกและลิงก์ไปยัง GoogleFont.Provider.AllFontsListUri ใน ktdoc แทน (I16f29)

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

  • เพิ่มเอกสารสำหรับ AndroidFont.fontVariationSettings (I7d9e2)

เวอร์ชัน 1.4.0-alpha05

25 มกราคม 2023

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

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

  • เปิดตัวการโอเวอร์โหลดแบบทดลองใหม่สำหรับฟังก์ชัน runComposeUiTest และฟังก์ชัน create*ComposeRule ที่ยอมรับพารามิเตอร์ CoroutineContext ระบบจะใช้บริบทในการเรียบเรียงการทดสอบ รวมถึงการเรียกใช้ LaunchedEffect และ rememberCoroutineScope() ในการเรียบเรียง (I10614, b/265177763)
  • เพิ่ม API ใหม่เพื่อติดตามความเร็ว 1 มิติ (If5a82)
  • ตอนนี้ FocusRequester มีเครื่องหมายระบุว่า @Stable (I580ee)
  • นำคำอธิบายประกอบเวอร์ชันทดลองออกจากตัวสร้าง DialogProperties ที่ใช้พารามิเตอร์ usePlatformDefaultWidth (Ic4048)
  • เพิ่มฟังก์ชันในการคำนวณตำแหน่งและเส้นสัมผัสที่ระยะทางบนเส้นทางด้วย PathMeasure.getPosition() และ PathMeasure.getTangent() (I3b47c)
  • นำตัวตั้งค่าสาธารณะที่เปิดเผยโดยไม่ตั้งใจออกเมื่อวันที่ PlatformParagraphStyle (I07f47)
  • ประเภท/ค่า Null ของฟังก์ชันที่ซ่อนในบรรทัด/เลิกใช้งานแล้ว (I24f91)
  • เพิ่ม AnnotatedString.hasStringAnnotations เพื่อค้นหาคำอธิบายประกอบที่มีการจัดสรรเป็น 0 (I94dfe, b/246960758)
  • เพิ่มการโอเวอร์โหลดใหม่สำหรับฟังก์ชัน TextMeasurer.measure ซึ่งรับ String เป็นข้อความ (I47b2d, b/242705342)
  • API LineBreak และ Hyphens ใน TextStyle ได้รับการอัปเกรดเป็นเวอร์ชันเสถียรแล้ว (Ic1e1d)

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

  • เราจะไม่เลิกใช้งานเมธอด notifyFocusedRect ใน TextInputSession และ TextInputService อีก (I23a04, b/262648050)

เวอร์ชัน 1.4.0-alpha04

11 มกราคม 2023

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

ฟีเจอร์ใหม่

  • เพิ่ม PinnableContainer API ใหม่ที่อนุญาตให้ปักหมุดรายการใน Lazy List เพื่อไม่ให้ระบบทิ้งรายการเมื่อเลื่อนออกนอกขอบเขต ตัวอย่างเช่น Modifier.focusable() ใช้กลไกนี้เพื่อปักหมุดรายการที่โฟกัสอยู่ (Ib8881, b/259274257, b/195049010)
  • เราเขียนระบบโฟกัสใหม่โดยใช้ Modifier.NodeAPI ใหม่ที่อยู่ในระยะทดลอง (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589)
  • เพิ่มพร็อพเพอร์ตี้ความหมาย IsContainer ใน Surfaces ระบบจะใช้พร็อพเพอร์ตี้นี้ในการเปลี่ยนแปลงในภายหลังซึ่งจะกำหนดลำดับการข้ามตามความหมายเชิงความหมายขององค์ประกอบต่างๆ เช่น พื้นผิว (I63379)
  • เพิ่มบทบาทการช่วยเหลือพิเศษใหม่ DropdownList ซึ่งใช้เพื่อจำลองลักษณะการทำงานของ TalkBack's เมื่อโฟกัส android.widget.Spinner ได้ (I177e5, b/236159001)
  • ตอนนี้คุณใช้ PlatformTextStyle(emojiSupportMatch) เพื่อเลือกปิดใช้การประมวลผลการรองรับอีโมจิสำหรับย่อหน้าเดียวได้แล้ว (Ia7100, b/139326806)
  • ตอนนี้การทดสอบ UI ของ Android Compose จะเรียกใช้การส่งเลย์เอาต์สำหรับแต่ละเฟรมเมื่อดำเนินการเฟรมเพื่อให้เข้าสู่สถานะว่าง (เช่น ผ่าน waitForIdle) ซึ่งอาจส่งผลต่อการทดสอบที่ยืนยันในแต่ละเฟรมของภาพเคลื่อนไหวเลย์เอาต์ (I8ea08, b/222093277)
  • เพิ่มการทดลอง TextMotion ไปยัง TextStyle เพื่อกำหนดข้อความให้เป็น Static(default) หรือภาพเคลื่อนไหว ใช้ TextMotion.Animated หากจะปรับขนาด แปล หรือหมุนข้อความผ่านภาพเคลื่อนไหว (I24dd7)

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

  • แทนที่อาร์กิวเมนต์ maxSize: IntSize ใน drawText ด้วย size: Size เพื่อให้สอดคล้องกับฟังก์ชัน DrawScope อื่นๆ size จะตั้งค่าเป็น Size.Unspecified โดยค่าเริ่มต้น ซึ่งไม่ควรเปลี่ยนลักษณะการทำงานเริ่มต้นก่อนหน้านี้ (Icd27d)
  • นำตัวสร้างแบบอักษรทดลองที่เลิกใช้งานแล้วออก (I8a724, b/261435386)
  • ตอนนี้คลาสข้อมูลเครื่องมือ UI Group มีฟิลด์ isInline ที่ระบุว่ากลุ่มนี้ใช้สำหรับการเรียกฟังก์ชันที่สามารถคอมโพสได้แบบอินไลน์หรือไม่ หาก isInline เป็น true แสดงว่าการเรียกใช้ฟังก์ชันที่คอมโพสได้แบบอินไลน์ อย่างไรก็ตาม ค่าอาจเป็นเท็จสำหรับการเรียกฟังก์ชันที่สามารถคอมโพสแบบอินไลน์ซึ่งมาจากโมดูลที่คอมไพล์ด้วยปลั๊กอินคอมไพเลอร์ Compose เวอร์ชันที่ไม่ได้สร้างข้อมูลฟังก์ชันอินไลน์ (Idb846)
  • เปลี่ยน API ที่เคยอยู่ในระยะทดลองหลายรายการให้เป็น API ที่เสถียร
  • ตอนนี้ Rotary Scroll Event API เสถียรแล้ว (I42ad3, b/261561229)
  • FontVariation ตอนนี้ API เสถียรแล้ว (I8779f, b/241016309)
  • ตอนนี้ตัวสร้าง Font() ทั้งหมดเป็น API ที่เสถียรแล้ว (I5948b, b/261435386)
  • DeviceFontFamilyName พร้อมใช้งานแล้ว (I8b640, b/261435386)
  • ตอนนี้ตัวสร้าง AndroidFont ที่มี variationSettings เป็น API ที่เสถียรแล้ว และสามารถใช้เพื่อสร้างตัวอธิบายแบบอักษรประเภทใหม่ได้ (I5adcc, b/261565807)
  • createFontFamilyResolver API เสถียรแล้ว ซึ่งใช้เพื่อตรวจหาข้อยกเว้นที่ไม่ได้จัดการในระหว่างการโหลดแบบอักษรแบบไม่พร้อมกันได้ (Ibb481, b/261435386)
  • Font.loadingStrategy API เสถียรแล้ว (I5937c, b/261435386)
  • GoogleFont API เสถียรแล้ว (Ic90b0, b/261435386)
  • TextUnit(float, TextUnitType) เป็น API ที่เสถียรแล้ว (I90c84, b/261561612)
  • pluralStringResource เป็น API ที่เสถียรแล้ว (I09849, b/261439703)

เวอร์ชัน 1.4.0-alpha03

7 ธันวาคม 2022

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

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

  • การนำ ExperimentalComposeUiApi ออกจาก PointerIcon (I23af8)
  • แนะนำการดำเนินการด้านการช่วยเหลือพิเศษของหน้าเว็บ: PageUp, PageDown, PageLeft, PageRight โปรดทราบว่าฟีเจอร์เหล่านี้จะใช้ได้ตั้งแต่ API 29 เป็นต้นไป (Ida4ab)
  • อัปเดตมุมมองพารามิเตอร์ rememberNestedScrollConnection จากมุมมองรูทเป็นมุมมองโฮสต์ (Ia5200)
  • เพิ่ม Modifier API เพื่อค้นหาข้อมูลการเลื่อนขององค์ประกอบระดับบน (I2ba9d, b/203141462)
  • ใช้ใน Clickable เพื่อหน่วงเวลาการโต้ตอบการกดอย่างถูกต้อง เมื่อท่าทางสัมผัสอาจกลายเป็นเหตุการณ์การเลื่อน
  • แก้ไขปัญหาที่ Clickables ไม่หน่วงเวลาการกระเพื่อมอย่างถูกต้องเมื่อใช้ภายใน Scrollable ViewGroup
  • อัปเดตลิ้นชักและชีตเพื่อหน่วงเวลาการกดอย่างถูกต้องในกรณีที่ท่าทางสัมผัสอาจกลายเป็นเหตุการณ์การเลื่อน
  • เปลี่ยนชื่อ CompositingStrategy.Always เป็น Offscreen เพื่อระบุว่า graphicsLayer จะแสดงผลเป็นบัฟเฟอร์กลาง (I47dc1) เสมอ
  • ตอนนี้เลย์เอาต์ที่มีช่องเนื้อหาหลายช่องทำงานได้อย่างเสถียรแล้ว (I10566, b/248294649)
  • เพิ่ม API ใหม่ในเวอร์ชันทดลอง PerfettoTrace.record {} และ PerfettoTraceRule เพื่อบันทึกการติดตาม Perfetto (หรือที่เรียกว่าการติดตามระบบ) เป็นส่วนหนึ่งของการทดสอบ เพื่อตรวจสอบลักษณะการทำงานและประสิทธิภาพของการทดสอบ (I3ba16)
  • ในการทดสอบ UI โดยใช้กฎ Compose ระบบจะไม่ส่งต่อการดำเนินการต่อที่กลับมาทำงานอีกครั้งในระหว่างการเรียกกลับ withFrameNanos จนกว่าการเรียกกลับของเฟรมทั้งหมดจะทำงานเสร็จ ซึ่งจะตรงกับลักษณะการทำงานของ Compose เมื่อเรียกใช้ตามปกติ อย่างไรก็ตาม การทดสอบที่อิงตามลักษณะการทำงานแบบเดิมอาจล้มเหลว การเปลี่ยนแปลงนี้ควรมีผลกับโค้ดที่เรียกใช้ withFrameNanos หรือ withFrameMillis โดยตรงเท่านั้น และมีตรรกะภายนอก Callback ที่ส่งไปยังฟังก์ชันเหล่านั้น ซึ่งอาจต้องย้ายไปไว้ภายใน Callback ดูตัวอย่างการเปลี่ยนแปลงการทดสอบภาพเคลื่อนไหวใน CL นี้
  • เพิ่มพารามิเตอร์ onPerformTraversals: (Long) -> Unit ที่ไม่บังคับลงในตัวสร้าง TestMonotonicFrameClock และฟังก์ชัน Factory เพื่อเรียกใช้โค้ดหลังจาก Callback ของ withFrameNanos แต่ก่อนที่จะกลับมาใช้ Coroutine ของผู้โทร (Idb413, b/254115946, b/222093277, b/255802670)
  • เพิ่ม EmojiCompat ลงใน Compose (Ibf6f9, b/139326806)
  • เพิ่มพารามิเตอร์วอลเปเปอร์ใหม่ลงใน @Preview เพื่อรองรับสีแบบเปลี่ยนอัตโนมัติ (I9f512)

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

  • ตอนนี้ระบบจะส่งการแจ้งเตือนการใช้สแนปชอตหลังจากที่ Recomposer ใช้การเปลี่ยนแปลงเสร็จแล้ว (Iad6c0, b/222093277)
  • เปิดตัวการเปลี่ยนแปลงใน captureToImage เพื่ออนุญาตให้จับภาพหน้าจอแบบหลายหน้าต่าง ซึ่งจะมีประโยชน์สำหรับการทดสอบภาพหน้าจอที่ใช้ป๊อปอัปของ Compose (I169c5)

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

  • ตอนนี้ UI ของ Compose และ Material ของ Compose ขึ้นอยู่กับ Lifecycle 2.5.1 แล้ว (I05ab0, b/258038814)

เวอร์ชัน 1.4.0-alpha02

9 พฤศจิกายน 2022

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

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

  • อัปเดต GraphicsLayerScope เพื่อแสดงขนาดปัจจุบันของ graphicsLayer ซึ่งจะเป็นประโยชน์สำหรับการคำนวณการแปลง graphicsLayer เป็นฟังก์ชันของขนาดที่ประกอบได้ (If8c43,b/181387080)
  • เปิดตัว CompositingStrategy เพื่อกำหนดเวลาที่จะใช้เลเยอร์การจัดองค์ประกอบนอกหน้าจอสำหรับการแสดงผลเนื้อหา graphicsLayer อัตโนมัติจะรักษาลักษณะการทำงานเริ่มต้นซึ่งใช้เลเยอร์ภายในหากใช้ค่าอัลฟ่าหรือ RenderEffect/Overscroll Always จะสร้างบัฟเฟอร์นอกหน้าจอเสมอ ในขณะที่ ModulateAlpha จะหลีกเลี่ยงการใช้บัฟเฟอร์นอกหน้าจอและจะปรับคำสั่งการวาดที่บันทึกไว้แต่ละรายการภายใน graphicsLayer แทน การใช้งาน ModulateAlpha จะยังคงใช้ประโยชน์จากบัฟเฟอร์นอกหน้าจอสำหรับการใช้งาน RenderEffect/Overscroll (I25e82, b/256382834)
  • เพิ่ม invalidateSubtree() ลงใน Modifier.Node เพื่ออนุญาตให้ลบล้างลำดับชั้นทั้งหมดสำหรับการจัดวางและการวาด (I4bd90)
  • เลื่อนเวอร์ชัน rememberNestedScrollInteropConnection เป็นเวอร์ชันเสถียร เปิดตัวความสามารถในการส่งมุมมองรากไปยัง rememberNestedScrollInteropConnection ซึ่งจะช่วยให้มุมมองที่กำหนดเองตอบสนองต่อข้อจำกัดในการเลื่อนได้ดียิ่งขึ้น โดยเฉพาะในมุมมองที่ไม่เป็นมาตรฐาน (เช่น ModalBottomSheetDialog) (I9e107)
  • เพิ่มอินเทอร์เฟซ ObserverNode ที่การติดตั้งใช้งาน Modifier.Node สามารถใช้เพื่อรับการแจ้งเตือนเมื่อค่าที่อ่านก่อนหน้านี้มีการเปลี่ยนแปลง (I5728b, b/247716483)
  • เพิ่มตัวสร้างใหม่ลงใน Paint ซึ่งยอมรับ android.graphics.Paint ดั้งเดิม นอกจากนี้ ยังเพิ่มฟังก์ชันส่วนขยาย toComposePaint() ที่แปลงออบเจ็กต์ Paint เนทีฟที่มีอยู่เป็น Compose Paint (Ica91b)
  • เพิ่ม FontFamily.Resolver.resolveAsTypeface ใหม่เพื่อใช้ใน Android (I8950b)
  • เพิ่ม ToolingState เพื่ออนุญาตให้เครื่องมือเปลี่ยนสถานะภายในของ Composable (Ie6614)
  • ปรับโครงสร้างเครื่องมือเพื่อรองรับภาพเคลื่อนไหวใหม่ที่เพิ่มเข้ามาได้ดียิ่งขึ้น (I8677b)
  • เพิ่มพารามิเตอร์ minLines ลงในข้อความ Material และ Material3 TextField และ OutlinedTextField ซึ่งช่วยให้ตั้งค่าความสูงขั้นต่ำของคอมโพเนนต์ในแง่ของจำนวนบรรทัดได้ (I4af1d)

เวอร์ชัน 1.4.0-alpha01

24 ตุลาคม 2022

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

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

  • เพิ่มวิธีการใหม่ awaitEachGesture() สำหรับเครื่องตรวจจับท่าทางสัมผัส ซึ่งทำงานคล้ายกับ forEachGesture() แต่การวนซ้ำเหนือท่าทางจะทำงานภายใน AwaitPointerEventScope ทั้งหมด ดังนั้นเหตุการณ์จึงไม่สูญหายระหว่างการวนซ้ำ
  • เราเลิกใช้งาน forEachGesture() แล้วและหันมาใช้ awaitEachGesture() แทนเนื่องจากช่วยป้องกันไม่ให้เหตุการณ์สูญหายระหว่างท่าทางสัมผัส (Iffc3f, b/251260206)
  • เลิกใช้งานการรีไซเคิลออบเจ็กต์การช่วยเหลือพิเศษใน androidx เราพบว่าการเปลี่ยนแปลงประสิทธิภาพนั้นเล็กน้อยมากแม้ในเวอร์ชันที่เก่าที่สุดที่รองรับ (I0a961)
  • เพิ่ม DrawStyle เป็นแอตทริบิวต์เวอร์ชันทดลองใน TextStyle และ SpanStyle เพื่อเปิดใช้การวาดข้อความที่มีเส้นขอบ (If24b8, b/155421273)
  • ตอนนี้ AnnotatedString.Builder ได้ติดตั้งใช้งาน kotlin.text.Appendable แล้ว (I1a061, b/231030444)
  • AnnotatedString.Builder มีเมธอด append(AnnotatedString, start: Int, end: Int) สำหรับผนวกสตริงย่อยของ AnnotatedString และรูปแบบที่ตัดกันแล้ว
  • เพิ่มพารามิเตอร์ DrawStyle ลงในฟังก์ชันการระบายสี Paragraph และ MultiParagraph ซึ่งช่วยให้วาดข้อความที่มีเส้นขอบได้ (Ic8102, b/155421273)

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

  • ขอขอบคุณสำหรับvighneshการเพิ่มอุปกรณ์ทีวีลงในการแสดงตัวอย่าง (Ie15cd)

เวอร์ชัน 1.3

เวอร์ชัน 1.3.3

11 มกราคม 2023

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

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

  • แก้ไขข้อขัดข้องที่เกิดขึ้นใน Android 9 บางครั้งเมื่อกิจกรรมบันทึกสถานะของมุมมองการเขียน (I0b755, b/260322832)

เวอร์ชัน 1.3.2

7 ธันวาคม 2022

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

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

  • อัปเดตให้ใช้ Profobuf 3.21.8 ซึ่งหลีกเลี่ยงการแจ้งเตือนความปลอดภัยใน protobuf-javalite:3.19.4 (CVE-2022-3171) (b/255545055)

เวอร์ชัน 1.3.1

9 พฤศจิกายน 2022

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

เวอร์ชัน 1.3.0

24 ตุลาคม 2022

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

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

  • ชุด API ทดลองใหม่ LookaheadLayout (เปิดใช้ลักษณะการทำงานของภาพเคลื่อนไหวที่ก่อนหน้านี้เป็นไปไม่ได้)
  • ชุด API ทดลองใหม่ Modifier.Node (ทางเลือกที่มีประสิทธิภาพสูงกว่า Modifier.composed)
  • ปรับปรุงการรองรับการแทรกหน้าต่าง
  • รองรับการโฟกัสสำหรับ D-Pad และแป้นพิมพ์ฮาร์ดแวร์ใน LazyList
  • ลดระดับความสูงสูงสุดที่รองรับในกล่องโต้ตอบและป๊อปอัปเป็น 8dp (การเปลี่ยนแปลงที่ทำให้เกิดการหยุดทำงานสำหรับระบบการออกแบบที่กำหนดเองบางระบบ - เหตุผลในหมายเหตุประจำรุ่นเบต้า 01)
  • การปรับปรุง API เล็กน้อยที่ไม่ทำให้เกิดการหยุดทำงานหลายรายการ
  • แก้ไขข้อบกพร่องและปรับปรุงประสิทธิภาพหลายรายการ

เวอร์ชัน 1.3.0-rc01

5 ตุลาคม 2022

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

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

  • เพิ่ม API ขีดกลางทดลองใหม่เพื่อรองรับการใส่ขีดกลางอัตโนมัติในข้อความ (Iaa869)

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

  • DeviceFontFamilyName จะไม่กำหนดค่า wght และการตั้งค่ารูปแบบ ital โดยค่าเริ่มต้น แต่จะใช้การตั้งค่าแพลตฟอร์มสำหรับ Typeface ที่โหลดแทน (Ia7a6d, b/246989332)
  • แก้ไขLazyColumnหน่วยความจำรั่ว - onModifierLocalsUpdated ไม่ได้รับการเรียกใช้ด้วยค่าเริ่มต้นเมื่อมีการนำตัวแก้ไขกลับมาใช้ใหม่ (b/230168389)

เวอร์ชัน 1.3.0-beta03

21 กันยายน 2022

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

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

  • เพิ่มตัวเลือกเพื่อปรับแต่งการขึ้นบรรทัดใหม่ในข้อความ (I86907)
  • เปลี่ยนอาร์กิวเมนต์ size:IntSize เป็น constraints: Constraints ในเมธอด TextMeasurer.measure เพื่อรองรับข้อจำกัดความกว้างขั้นต่ำ (I37530, b/242707525)

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

  • ตอนนี้ BackHandler API ของ AndroidX Activity ทำงานภายใน Composable Dialog ได้แล้ว (I35342)

เวอร์ชัน 1.3.0-beta02

7 กันยายน 2022

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

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

  • เพิ่มการโอเวอร์โหลดเวอร์ชันทดลองสำหรับเลย์เอาต์ซึ่งยอมรับรายการแลมบ์ดาเนื้อหาที่ประกอบได้หลายรายการ ซึ่งช่วยให้จัดการกับเมตริกที่วัดได้ซึ่งใส่ไว้ในแลมบ์ดาเนื้อหาต่างๆ ได้แตกต่างกัน (Ic1b4e)

การเปลี่ยนแปลง API การโฟกัสเวอร์ชันทดลอง:

  • เราเลิกใช้งาน FocusDirection.In และ FocusDirection.Out แล้ว และแทนที่ด้วย FocusDirection.Enter และ FocusDirection.Exit (Ia4262, b/183746982)
  • เพิ่มพร็อพเพอร์ตี้โฟกัสใหม่ 2 รายการ ได้แก่ enter และ exit เพื่อระบุลักษณะการทำงานที่กำหนดเองสำหรับ FocusManager.moveFocus(Enter) และ FocusManager.moveFocus(Exit) (I5f3f9, b/183746982)
  • ตอนนี้คุณใช้ FocusRequester.Cancel เพื่อยกเลิกการย้ายโฟกัสได้แล้ว FocusRequester.Cancel สามารถใช้ในพร็อพเพอร์ตี้โฟกัสต่อไปนี้ได้ ได้แก่ up, down, left, right, next, previous, start, end, enter และ exit (Ib300f)

เวอร์ชัน 1.3.0-beta01

24 สิงหาคม 2022

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

การปรับโครงสร้างโหนดตัวแก้ไข

เราได้ปรับโครงสร้างเลเยอร์ที่จัดการอินสแตนซ์ Modifier/Modifier.Element และประสานงานลักษณะการทำงานของอินสแตนซ์เหล่านั้นใน LayoutNodes ใหม่ การเปลี่ยนแปลงนี้เป็นการปรับโครงสร้างใหม่ซึ่งไม่มีผลต่อ API สาธารณะของตัวแก้ไขจำนวนมากใน Compose และถือเป็นการเปลี่ยนแปลงเฉพาะการใช้งานเท่านั้น อย่างไรก็ตาม การเปลี่ยนแปลงนี้มีความสำคัญด้วยเหตุผลหลายประการ (Ie4313)

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

Modifier.Node API ที่ทดลองใช้ซึ่งเพิ่มเข้ามาจะมีการดึงข้อมูลที่ช่วยให้สามารถรักษาสถานะในอินสแตนซ์ที่จะคงอยู่ตามวงจรของโหนดเลย์เอาต์ และจะได้รับการจัดสรรต่อโหนดเลย์เอาต์และต่อการใช้งาน Modifier.Element ที่เกี่ยวข้องซึ่งสร้างขึ้น

โดยรวมแล้ว การแยกส่วนนี้เป็นกลไกทางเลือกในการสร้างตัวแก้ไขแบบมีสถานะโดยไม่ต้องอาศัยกลไกของ Modifier.composed API

ความเสี่ยง

การเปลี่ยนแปลงนี้เข้ากันได้กับรุ่นก่อนหน้าอย่างเคร่งครัด และมีจุดประสงค์เพื่อให้เข้ากันได้แบบย้อนหลังในแง่ของลักษณะการทำงานที่สังเกตได้มากที่สุดเท่าที่จะเป็นไปได้และสมเหตุสมผล อย่างไรก็ตาม มีระบบย่อยบางส่วนของ Compose ที่การปรับโครงสร้างโค้ดนี้ไม่ได้แตะต้อง และมีแนวโน้มที่ลักษณะการทำงานจะเปลี่ยนแปลงไปในลักษณะที่การทดสอบของเราไม่ได้ครอบคลุม และยังไม่พบและแก้ไข

โปรดอัปเกรดเป็นรุ่นนี้ด้วยความระมัดระวัง หากเชื่อว่าการเปลี่ยนแปลงนี้ทำให้เกิดปัญหา โปรดแจ้งให้เราทราบ

API เวอร์ชันทดลอง

เราได้เพิ่ม API เวอร์ชันทดลองต่างๆ ซึ่งทั้งหมดเกี่ยวข้องกับแนวคิดใหม่ของ "โหนดตัวแก้ไข" ระบบจะสร้าง Modifier.Node จาก

  • fun modifierElementOf(…): Modifier
  • abstract class ModifierNodeElement
  • abstract class Modifier.Node
  • abstract class DelegatingNode
  • interface LayoutModifierNode
  • interface DrawModifierNode
  • interface SemanticsNode
  • interface PointerInputNode
  • interface ModifierLocalNode
  • interface ParentDataModifierNode
  • interface LayoutAwareModifierNode
  • interface GlobalPositionAwareModifierNode
  • interface IntermediateLayoutModifierNode

การเปลี่ยนแปลงที่ทำให้เกิดการหยุดทำงานของลักษณะการทำงาน

ลดระดับความสูงสูงสุดที่รองรับในกล่องโต้ตอบและป๊อปอัปเป็น 8dp

ระดับความสูงสูงสุดที่รองรับสำหรับกล่องโต้ตอบและป๊อปอัปของ Compose ลดลงจาก 30dp เป็น 8dp การเปลี่ยนแปลงนี้ส่งผลต่อทั้งกล่องโต้ตอบและป๊อปอัปที่กำหนดเองของ Material และ UI การเปลี่ยนแปลงนี้มีขึ้นเพื่อลดข้อบกพร่องด้านการช่วยเหลือพิเศษใน Android เวอร์ชันต่ำกว่า S และเพื่อให้มั่นใจว่าบริการช่วยเหลือพิเศษภายในหน้าต่างเหล่านั้นจะโต้ตอบกับเนื้อหาภายในกล่องโต้ตอบหรือป๊อปอัปได้

การเปลี่ยนแปลงนี้จะส่งผลต่อคุณก็ต่อเมื่อคุณสร้างการติดตั้งใช้งานกล่องโต้ตอบหรือป๊อปอัปที่กำหนดเองโดยตั้งค่าระดับการยกระดับสูงกว่า 8dp ลองลดระดับความสูงของกล่องโต้ตอบหรือป๊อปอัป หากต้องการเลือกไม่ใช้ลักษณะการทำงานใหม่นี้ ให้พิจารณา Fork กล่องโต้ตอบหรือป๊อปอัปของคุณเองโดยตั้งค่าการยกระดับที่ต้องการ เราไม่แนะนำให้ทำเช่นนี้ เนื่องจากอาจส่งผลเสียต่อการช่วยเหลือพิเศษ และนักพัฒนาแอปต้องตรวจสอบว่าส่วนล่างของกล่องโต้ตอบหรือป๊อปอัปสามารถโต้ตอบได้และบริการการช่วยเหลือพิเศษอ่านได้

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

  • แก้ไขปัญหาที่ painterResource จะไม่อัปเดตเมื่อมีการเปลี่ยนแปลงการกำหนดค่า (I58e73, b/228862715)
  • rememberTextMeasurer ไม่รับพารามิเตอร์ FontFamily.Resolver, Density หรือ LayoutDirection อีกต่อไป โปรดใช้ตัวสร้าง TextMeasurer เพื่อระบุค่าที่กำหนดเองสำหรับพารามิเตอร์เหล่านี้ (Ia1da3)
  • เพิ่มพร็อพเพอร์ตี้ DialogProperties.decorFitsSystemWindows เพื่อให้กล่องโต้ตอบรองรับ WindowInsets (I57742, b/229378542)
  • ย้ายตัวสร้างแบบอักษรกลับไปที่ไฟล์ Kotlin เดิมเพื่อรักษาความเข้ากันได้ของไบนารี ไม่มีการเปลี่ยนแปลงจากเวอร์ชันเสถียรล่าสุด (Ieb2f3)
  • นำตัวดำเนินการที่ไม่จำเป็นออกจากคำจำกัดความของเครื่องหมายเท่ากับหลายรายการ ซึ่งไม่มีผลใดๆ (I6c309)
  • FontVariation.Setting เป็นอินเทอร์เฟซที่ปิดผนึกไว้เพื่ออนุญาต API การยึดในอนาคต (I11021, b/143703328)
  • เพิ่ม CompositionGroup.findParameters ไปยัง SlotTree.kt ซึ่งช่วยให้เครื่องมือดึงพารามิเตอร์สำหรับ CompositionGroup ได้โดยไม่ต้องแยกวิเคราะห์ตารางช่องทั้งหมด (I124fe)

เวอร์ชัน 1.3.0-alpha03

10 สิงหาคม 2022

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

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

  • LayoutCoordinates.findRootCoordinates() พร้อมใช้งานแล้ว (I7fa37, b/204723384)
  • เพิ่ม API เวอร์ชันทดลองเพื่อรับ LayoutCoordinates ใน PlacementScope ซึ่งจะช่วยให้นักพัฒนาแอปทราบว่าเลย์เอาต์ปัจจุบันอยู่ที่ใดเพื่อวางองค์ประกอบย่อยที่สัมพันธ์กับตำแหน่งของเลย์เอาต์ (I5482b, b/238632578)
  • เพิ่ม LayoutCoordinates.transformFrom เพื่อรับการเปลี่ยนรูปแบบเมทริกซ์จาก LayoutCoordinates หนึ่งไปยังอีก LayoutCoordinates หนึ่ง (Ic5ab1, b/238632578)
  • เลิกใช้งาน SemanticsModifier.id และย้ายรหัสความหมายไปที่ LayoutInfo.semanticsId แทน (Iac808, b/203559524)
  • ตอนนี้แบบอักษรทรัพยากรรองรับการตั้งค่าตัวแปรแบบอักษร (API 26 ขึ้นไป) แล้ว (I900dd, b/143703328)
  • การรองรับแบบอักษรที่ปรับแต่งได้ใน DeviceFontFamilyNameFont (Ic1279, b/143703328)
  • ตอนนี้ตัวสร้างแบบอักษรยอมรับรายการ FontVariation.Setting สำหรับการกำหนดค่าแบบอักษรตัวแปรในอุปกรณ์ O+ แล้ว (I11a9d, b/143703328)
  • เพิ่ม FontVariation API สำหรับการกำหนดและการใช้ฟอนต์แบบแปรผัน (I3c40c, b/143703328)
  • ตอนนี้ LineHeightStyle.Alignment constructor เป็นแบบสาธารณะแล้ว (ทดลอง) (I4bbbe, b/235876330)
  • ตอนนี้ย่อหน้าเป็น expect|actual และกำหนดไว้สำหรับ Android และเดสก์ท็อปแล้ว (Id387e, b/239962983)
  • Interface Paragraph เปลี่ยนเป็น Interface Paragarph ที่ปิดผนึกแล้ว ไม่มี Use Case สำหรับการสร้างคลาสย่อยของย่อหน้า และเราขอแนะนำให้ติดต่อเราหากการเปลี่ยนแปลงนี้ส่งผลกระทบต่อคุณ (If5247, b/239962983)
  • นำคำอธิบายประกอบเวอร์ชันทดลองออกจาก PlatformTextStyle และ LineHeightStyle แล้ว (I64bef)
  • เลิกใช้งาน TextInputService.show|hideSoftwareKeyboard โปรดใช้ SoftwareKeyboardController ในโค้ดแอปและ TextInputSession ในโค้ดการจัดการ IME แทน (I14e4c, b/183448615)
  • เพิ่ม API ใหม่สำหรับประเภทภาพเคลื่อนไหวที่มีอยู่ (I26179)

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

  • เพิ่ม @RequiresPermission ลงใน API ที่ต้องให้สิทธิ์ POST_NOTIFICATIONS ใน SDK 33 ขึ้นไป (Ie542e, b/238790278)

เวอร์ชัน 1.3.0-alpha02

27 กรกฎาคม 2022

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

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

  • เพิ่มพร็อพเพอร์ตี้ใหม่ PointerInputChange#pressure เพื่อดึงข้อมูลแรงดัน (I45a5e, b/205164819)
  • เพิ่ม rememberTextMeasurer เพื่อสร้างและจดจำอินสแตนซ์ TextMeasurer ในการเขียนได้ง่ายๆ (I8d66e)
  • ตอนนี้ Rect, RoundRect และ MutableRect รองรับไวยากรณ์ in ของ Kotlin สำหรับการเรียกฟังก์ชัน contains แล้ว (Ie42b0, b/238642990)
  • นำฟังก์ชันที่ไม่จำเป็นออกจาก KeyInjectionScope เนื่องจากสามารถใช้ส่วนที่ง่ายกว่าของ API ได้อย่างง่ายดาย ฟังก์ชันที่ถูกนำออก ได้แก่ pressKeys, keysDown และ keysUp (I81d77)
  • ปรับโครงสร้างชื่อค่าคงที่และพารามิเตอร์ใน KeyInjectionScope เพื่อรวมคำต่อท้าย "Millis" ในกรณีที่หน่วยของค่าคงที่และพารามิเตอร์ดังกล่าวเป็นมิลลิวินาที (Iabef5)
  • เพิ่มtoStringForLog()วิธีไปยัง EditCommand เพื่อช่วยแก้ปัญหาเกี่ยวกับการแก้ไขข้อความ (I53354, b/228862731)
  • เพิ่มฟังก์ชันส่วนขยาย drawText ใน DrawScope เพื่อให้มีวิธีวาดข้อความหลายรูปแบบใน Composable และตัวแก้ไขที่ทำงานใน DrawScope เช่น Canvas และ drawBehind (I16a62, b/190787898)
  • เปิดตัว API ทดลองใหม่ที่ชื่อ TextMeasurer ซึ่งช่วยให้คำนวณเลย์เอาต์ข้อความที่กำหนดเองได้ ซึ่งจะสร้างผลลัพธ์ที่เหมือนกับ BasicText โดยไม่ขึ้นอยู่กับรันไทม์ของ Compose (I17101)
  • เพิ่ม mapTree ไปยัง SlotTree.kt ซึ่งจะช่วยให้เครื่องมือตรวจสอบ SlotTree ได้โดยไม่ต้องทำสำเนาในหน่วยความจำก่อนเหมือนกับ asTree สำหรับเครื่องมือตรวจสอบเลย์เอาต์ การดำเนินการนี้จะช่วยปรับปรุงประสิทธิภาพได้ประมาณ 10 เท่า (I5e113)
  • เปลี่ยนการแสดงตัวอย่าง Compose ให้จัดเก็บไว้ในไฟล์เอาต์พุตไบนารี เพื่อให้นักพัฒนาแอปเขียนและนำMultiPreviewคำอธิบายประกอบจากไลบรารีกลับมาใช้ใหม่ได้ (I85699, b/233511976)

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

  • เมื่อเพิ่มเหตุการณ์ InputEventChange ลงในเครื่องมือติดตาม Velocity เราจะพิจารณาเดลต้าแทนตำแหน่ง ซึ่งจะช่วยให้มั่นใจได้ว่าระบบจะคำนวณความเร็วอย่างถูกต้องในทุกกรณี แม้ว่าองค์ประกอบเป้าหมายจะเคลื่อนที่ (Icea9d, b/216582726, b/223440806, b/227709803)
  • แก้ไข NPE ที่เกิดจาก AnnotatedString.toUpperCase เมื่อมีคำอธิบายประกอบ (I0aca2, b/210899140)

เวอร์ชัน 1.3.0-alpha01

29 มิถุนายน 2022

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

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

  • LookaheadLayout ใหม่ที่รองรับการส่งผ่านการมองไปข้างหน้าก่อนการวัด/เลย์เอาต์จริง ซึ่งจะช่วยให้คำนวณเลย์เอาต์ล่วงหน้าได้เมื่อมีการเปลี่ยนแปลง ขณะเดียวกันก็อนุญาตให้การวัด/เลย์เอาต์หลังการมองไปข้างหน้าใช้ขนาด/ตำแหน่งที่คำนวณไว้ล่วงหน้าเพื่อเคลื่อนไหวขนาดและตำแหน่งไปยังเป้าหมาย SubcomposeLayouts ยังไม่รองรับ แต่จะรองรับในรุ่นที่จะเปิดตัวเร็วๆ นี้ (I477f5)
  • เพิ่มพารามิเตอร์อัลฟ่าที่ไม่บังคับลงในลักษณะพู่กันของ TextStyle และ SpanStyle เพื่อแก้ไขความทึบแสงของ Text ทั้งหมด (Ic2fac, b/234117635)
  • เปิดตัวUrlAnnotationประเภทคำอธิบายประกอบและเมธอดที่เกี่ยวข้องเพื่อรองรับTalkBackการรองรับลิงก์ในAnnotatedString (I1c754, b/231495122)
  • ย้ายฟังก์ชันการทำงานของยูทิลิตีไปยังรันไทม์ (I4f729)

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

  • TextLayoutResult.getLineForOffset ไม่แสดงข้อผิดพลาด (Idc5d6, b/235876324)

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

  • เพิ่ม API ใหม่ WindowInfo.keyboardModifiers เพื่อสังเกตสถานะภายในฟังก์ชันที่ประกอบได้หรือผ่าน snapshotFlow (Icdb8a)

เวอร์ชัน 1.2

เวอร์ชัน 1.2.1

10 สิงหาคม 2022

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

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

  • แก้ไข NullPointerException ในเครื่องมือตรวจสอบ (b/237987764)
  • แก้ไขข้อยกเว้นการแคสต์ชั้นเรียนระหว่างการจดจำในเครื่องมือตรวจสอบ (b/235526153)

เวอร์ชัน 1.2.0

27 กรกฎาคม 2022

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

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

  • การปรับปรุงการย้ายโฟกัส

    • ตอนนี้การเลื่อนรายการแบบ Lazy ที่ขับเคลื่อนด้วยโฟกัสใช้งานได้แล้วโดยใช้ BeyondBoundsLayout Core API ใหม่
    • API การปรับแต่งลักษณะการทำงานใหม่ใน FocusOrder และ FocusProperties
    • ปรับปรุงลักษณะการทำงานเมื่อใช้แป้นพิมพ์จริงหรือรีโมตทีวี
  • API ใหม่สำหรับ

    • ส่วนที่เว้นไว้ในหน้าต่าง
    • Primitive หลักสำหรับภาพเคลื่อนไหวที่ขับเคลื่อนด้วยท่าทางสัมผัส ภาพเคลื่อนไหวแบบวนซ้ำ และภาพเคลื่อนไหวของเลย์เอาต์
    • GraphicsLayer รวมถึงความสามารถของ RenderEffect
  • แก้ไขข้อบกพร่องและปรับปรุงประสิทธิภาพหลายรายการ

เวอร์ชัน 1.2.0-rc03

29 มิถุนายน 2022

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

  • ไม่มีการเปลี่ยนแปลงตั้งแต่เวอร์ชัน 1.2.0-rc02

เวอร์ชัน 1.2.0-rc02

22 มิถุนายน 2022

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

เวอร์ชัน 1.2.0-rc01

15 มิถุนายน 2022

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

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

  • ตอนนี้อินเทอร์เฟซในไลบรารี Compose สร้างขึ้นโดยใช้เมธอดอินเทอร์เฟซเริ่มต้นของ jdk8 (I5bcf1)
  • เพิ่มฟังก์ชันลำดับที่สูงกว่าลงใน KeyInjectionScope สำหรับการแทรกการกดแป้นขณะที่กดแป้นอื่นค้างไว้หรือเปิด/ปิด ฟังก์ชันเหล่านี้ ได้แก่ withKeysDown, withKeysToggled เป็นต้น นอกจากนี้ ยังเพิ่มพร็อพเพอร์ตี้สำหรับตรวจสอบว่ากดปุ่ม Meta ที่เฉพาะเจาะจงหรือไม่ เช่น isCtrlDown เพื่อตรวจสอบว่ากดปุ่มควบคุมปุ่มใดปุ่มหนึ่งหรือไม่ โปรดดูเอกสารประกอบเกี่ยวกับแต่ละฟังก์ชันใน KeyInjectionScope (I9f6cd, b/229831515)
  • เราได้เปิดตัว OverscrollEffect เวอร์ชันทดลองเพื่อให้เอฟเฟกต์การเลื่อนเกินแบบกำหนดเองทำงานได้ควบคู่ไปกับModifier.scrollableที่ยอมรับเอฟเฟกต์ดังกล่าว
  • LocalOverScrollConfiguration เวอร์ชันทดลองได้ย้ายจาก foundation.gesture ไปยังแพ็กเกจพื้นฐานและเปลี่ยนชื่อเป็น LocalOverscrollConfiguration (If19fb, b/204650733)
  • เปลี่ยนชื่อ runComposeUiTestWithoutActivity {} เป็น runEmptyComposeUiTest {} เพื่อให้สอดคล้องกับ createEmptyComposeRule() (I6fed7)

เวอร์ชัน 1.2.0-beta03

1 มิถุนายน 2022

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

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

  • เพิ่ม pressKeyTimes รวมถึง isCapsLockOn และเพื่อนๆ ลงใน KeyInjectionScope แล้ว นอกจากนี้ ตอนนี้ API ยังรองรับรูปแบบการแทรกที่รวมเมาส์และแป้นพิมพ์ เช่น การคลิกปุ่มเมาส์ขณะกดปุ่ม Meta ค้างไว้ (I4c8da, b/229831515)
  • เพิ่มการรองรับการแทรกเหตุการณ์สำคัญในเวอร์ชันทดลอง ใช้ performKeyInput เพื่อส่งเหตุการณ์สำคัญ หรือส่งผ่านพร็อพเพอร์ตี้ key ของ MultiModalInjectionScope ระหว่างท่าทางสัมผัสการป้อนข้อมูลหลายรูปแบบด้วย performMultiModalInput ดูเอกสารประกอบของ API ได้ที่ KeyInjectionScope (Ic5000, b/229831515)
  • เพิ่ม GoogleFont.Provider.AllFontsListUri ใหม่สำหรับการดึงแหล่งที่มาของอินเทอร์เน็ตที่เชื่อถือได้ของ Google Fonts ที่ Android รองรับ
  • ปรับปรุงข้อความแสดงข้อผิดพลาดที่ส่งต่ออีกครั้งเมื่อ GoogleFonts โหลดใน Compose ไม่สำเร็จ (I0416c)

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

  • เมื่อเพิ่มเหตุการณ์ InputEventChange ลงในเครื่องมือติดตามความเร็ว เราจะพิจารณาเดลต้าแทนตำแหน่ง ซึ่งจะช่วยให้มั่นใจได้ว่าระบบจะคำนวณความเร็วอย่างถูกต้องในทุกกรณี แม้ว่าองค์ประกอบเป้าหมายจะเคลื่อนที่ (I51ec3, b/216582726, b/223440806, b/227709803)
  • ตอนนี้ระบบจะใช้การตั้งค่า Show Layout Bounds กับ Composable ทันทีหลังจากสลับจากแผงการตั้งค่าด่วน โดยไม่ต้องออกจากกิจกรรมแล้วกลับเข้าไปใหม่ (I843d5, b/225937688)
  • การค้นหาสตริงการช่วยเหลือพิเศษจะไม่ทริกเกอร์การโหลดแบบอักษร ก่อนหน้านี้ ระบบจะพยายามโหลดแบบอักษรสำหรับ StyleSpans ซึ่ง จะทำให้เกิดข้อขัดข้องหากมีการเขียนทับ FontFamily.Resolver (I4609d)
  • การกดแป้นลบไปข้างหน้าเมื่อเคอร์เซอร์อยู่ที่ท้ายช่องข้อความจะไม่ทำให้เกิดข้อขัดข้องอีกต่อไป
  • ตอนนี้ DeleteSurroundingTextCommand และ DeleteSurroundingTextInCodePointsCommand กำหนดให้อาร์กิวเมนต์ของตัวสร้างต้องไม่เป็นค่าลบ (Ica8e6, b/199919707)

เวอร์ชัน 1.2.0-beta02

18 พฤษภาคม 2022

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

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

  • การนำฟังก์ชันการทำงานในตัวอย่างประเภทอื่นๆ กลับมาใช้ใหม่ (I19f39)

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

  • ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer เปลี่ยนชื่อเป็น DisposeOnDetachedFromWindowOrReleasedFromPool เพื่อให้สะท้อนถึงการจำหน่ายเมื่อเกิดขึ้นได้ดีขึ้น แทนที่จะเป็นเพียงเมื่อไม่เกิดขึ้น (If15ca)

เวอร์ชัน 1.2.0-beta01

11 พฤษภาคม 2022

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

ฟีเจอร์ใหม่

  • นี่คือรุ่นเบต้า 1.2 รุ่นแรก

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

  • เพิ่ม BeyondBoundsInterval เวอร์ชันทดลองที่การติดตั้งใช้งาน LazyList ที่กำหนดเองใช้ได้เมื่อจัดวางรายการเกินขอบเขตที่มองเห็นได้ (Ifabfb, b/184670295)
  • ตอนนี้เวอร์ชันที่ใช้คีย์ของ Modifier.composed เป็น API ที่เสถียรแล้ว (Ie65e4, b/229988420)
  • ปรับrememberNestedScrollConnection API ให้ใช้คอมโพสิชันโลคัลเพื่อรับข้อมูลมุมมองปัจจุบัน (I67ca7)
  • ตอนนี้คุณใช้@ComposableTargetคำอธิบายประกอบและคำอธิบายประกอบที่ทำเครื่องหมายด้วย @ComposableTargetMarker ได้แล้วในขอบเขตไฟล์โดยใช้คำนำหน้า @file การใช้คำอธิบายประกอบเป้าหมายที่ขอบเขตไฟล์จะทำให้คอมไพเลอร์ถือว่าฟังก์ชันที่ประกอบได้ทั้งหมดในไฟล์มีไว้เพื่อกำหนดเป้าหมายแอปพลิเคชันที่เชื่อมโยง เช่น การใช้ @file:UiComposable จะประกาศว่าฟังก์ชัน @Composable ทั้งหมดกำหนดเป้าหมายไปยังตัวใช้ Compose UI ฟังก์ชันที่ต้องกำหนดเป้าหมายไปยังแอปพลิเคชันอื่นต้องระบุคำอธิบายประกอบเครื่องหมายเป้าหมายอย่างชัดเจนสำหรับแอปพลิเคชันที่ต้องการ (I40804)
  • เปิดตัว API การทดสอบใหม่ในเวอร์ชันทดลองที่ไม่ขึ้นกับแพลตฟอร์ม interface ComposeUiTest และ fun runComposeUiTest(block: ComposeUiTest.() -> Unit) ซึ่งใช้เพื่อเรียกใช้การทดสอบ UI ของ Compose ได้ โดยไม่ต้องมี TestRule หากต้องการเรียกใช้การทดสอบโดยไม่มี ComposeTestRule ให้ส่งการทดสอบเป็น Lambda ไปยัง runComposeUiTest และใช้วิธีการและสมาชิกในขอบเขตตัวรับ ComposeUiTest ซึ่งเป็นรายการเดียวกันกับใน ComposeContentTestRule

    ระบบจะเพิ่ม interface AndroidComposeUiTest และ fun runAndroidComposeUiTest(block: AndroidComposeUiTest.() -> Unit) เฉพาะของ Android เพื่อให้สิทธิ์เข้าถึง Activity พื้นฐาน ซึ่งคล้ายกับ AndroidComposeTestRule หากต้องการควบคุมได้มากยิ่งขึ้น คุณสามารถสร้างอินสแตนซ์ของ class AndroidComposeUiTestEnvironment เองได้

    การติดตั้งใช้งานบนเดสก์ท็อปคือ class DesktopComposeUiTest แต่ขณะนี้ยังไม่มีฟังก์ชันการเรียกใช้เฉพาะเดสก์ท็อป

    การย้ายข้อมูลการทดสอบจาก ComposeTestRule ไปยัง ComposeUiTest สามารถทำได้ ดังนี้ (ตัวอย่าง Android) จาก:

    @RunWith(AndroidJUnit4::class)
    class MyTest {
        @get:Rule val rule = createComposeRule()
        @Test
        fun test() {
            rule.setContent {
                Text("Hello Compose!")
            }
            rule.onNodeWithText("Hello Compose!").assertExists()
        }
    }
    

    โดยทำดังนี้

    @RunWith(AndroidJUnit4::class)
    class MyTest {
        @Test
        @OptIn(ExperimentalTestApi::class)
        fun test() = runComposeUiTest {
            setContent {
                Text("Hello Compose!")
            }
            onNodeWithText("Hello Compose!").assertExists()
        }
    }
    
  • ในตอนนี้ ComposeContentTestRule และ ComposeTestRule ยังไม่ได้ขยายจาก ComposeUiTest ซึ่งหมายความว่ายังเรียกใช้ฟังก์ชันส่วนขยายใน ComposeUiTest บนอินเทอร์เฟซ TestRule ไม่ได้ เมื่อ ComposeUiTest เปลี่ยนเป็น API ที่เสถียรแล้ว ComposeContentTestRule และ ComposeTestRule จะเปลี่ยนให้ขยายจาก ComposeUiTest (Ib4e90)

  • เปลี่ยนชื่อ LineHeightBehavior เป็น LineHeightStyle

  • เปลี่ยนชื่อ LineVerticalAlignment เป็น LineHeightStyle.Alignment

  • เปลี่ยนชื่อ LineHeightTrim เป็น LineHeightStyle.Trim

  • นำค่าเริ่มต้นของตัวสร้างออกจาก LineHeightStyle (I582bf, b/181155707)

  • เพิ่ม Brush ใน TextStyle และ SpanStyle เพื่อให้วาดข้อความด้วยการระบายสีแบบไล่ระดับได้ (I53869, b/187839528)

  • แอตทริบิวต์ trimFirstLineTop, trimLastLineBottom ของ LineHeightBehavior เปลี่ยนเป็น Enum เดียว: LineHeightTrim LineHeightTrim มีค่า 4 สถานะที่กำหนดโดยบูลีน 2 รายการ FirstLineTop, LastLineBottom, ทั้งคู่ และไม่มี (Ifc6a5, b/181155707)

  • เพิ่ม LineHeightBehavior ไปยัง TextStyle และ ParagraphStyle แล้ว LineHeightBehavior ควบคุมว่าจะใช้ความสูงของบรรทัดกับด้านบนของบรรทัดแรกและด้านล่างของบรรทัดสุดท้ายหรือไม่ นอกจากนี้ยังกำหนดการจัดแนวของบรรทัดในพื้นที่ที่ TextStyle(lineHeight) จัดไว้ให้ด้วย

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

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

  • ฟังก์ชัน PlatformParagraphStyle.lerp และ PlatformSpanStyle.lerp เปลี่ยนเป็นฟังก์ชันระดับบนสุด (I9a268)

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

  • ตอนนี้เอกสารประกอบของ PointerInputChange::copy ระบุอย่างถูกต้องว่าเป็นการคัดลอกแบบตื้น (I182f5)
  • รองรับจุดไข่ปลาเมื่อความสูงถูกจำกัดและไม่พอดีกับข้อความทุกบรรทัด (Ie528c, b/168720622)
  • เปิดอยู่โดยค่าเริ่มต้น includeFontPadding คุณปิดincludeFontPaddingได้โดยใช้แอตทริบิวต์TextStyle.platformTextStyle ในอนาคตอันใกล้นี้ เราจะเปลี่ยนลักษณะการทำงานเริ่มต้น แต่ในระหว่างนี้ การดำเนินการนี้จะช่วยให้เราผสานรวมการปรับปรุงความสูงของบรรทัด (aosp/2058653) ได้ดียิ่งขึ้น และแก้ปัญหาการตัดTextFieldได้ (I01423, b/171394808)

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

  • ตอนนี้ MouseInjectionScope.scroll(delta = someDelta) จะกลับด้านใน Android หากเราเลื่อนในแนวตั้ง (หาก someDelta เป็นบวก ระบบจะเลื่อนลง) (Ifb697, b/224992993)

เวอร์ชัน 1.2.0-alpha08

20 เมษายน 2022

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

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

  • เราทำเครื่องหมายฟังก์ชัน pluralStringResource ว่าเป็นฟังก์ชันทดลองเพื่ออนุญาตให้มีการพัฒนาเพื่อรองรับการแปลภาษาได้ดียิ่งขึ้นในอนาคต (If24e4)
  • ตอนนี้ Paragraph และ MultiParagraph ยอมรับพารามิเตอร์ข้อจำกัดแล้ว การส่ง Constraints.maxHeight จะไม่มีผลในขณะนี้ แต่จะช่วยให้ทำการคำนวณบางอย่างได้ในอนาคต เช่น การละข้อความตามความสูง (I6afee, b/168720622)
  • SubcomposeSlotReusePolicy.getSlotsToRetain() ตอนนี้ยอมรับคลาสที่กำหนดเองซึ่งคล้ายกับ MutableSet ซึ่งไม่อนุญาตให้เพิ่มรายการใหม่ในคลาส (Icd314)
  • ตอนนี้ PointerIcon เป็นอินเทอร์เฟซ @Stable แล้ว (I9dafe)
  • การดูบางส่วน (ลงหรือตำแหน่ง) เลิกใช้งานแล้วใน PointerInputChange คุณใช้ consume() เพื่อใช้การเปลี่ยนแปลงทั้งหมดได้ คุณใช้ isConsumed เพื่อพิจารณาว่ามีบุคคลอื่นใช้การเปลี่ยนแปลงไปก่อนหน้านี้หรือไม่
  • PointerInputChange::copy() จะทำสำเนาแบบตื้นเสมอ ซึ่งหมายความว่าระบบจะใช้สำเนาของ PointerInputChange เมื่อมีการใช้สำเนาใดสำเนาหนึ่ง หากต้องการสร้าง PointerInputChange ที่ไม่มีขอบเขต ให้ใช้ตัวสร้างแทน (Ie6be4, b/225669674)
  • เปิดใช้การทำงานร่วมกันของการเลื่อนที่ซ้อนกันระหว่าง Compose กับ View ในทิศทาง Compose > View ซึ่งหมายความว่าองค์ประกอบหลักของ Compose จะรับเดลต้าการเลื่อนที่ซ้อนกันจาก NestedScrollView ได้ (If7949, b/174348612)
  • SemanticsProperty testTagsAsResourceId ใหม่ ซึ่งใช้เพื่อทำให้ Compose สอดคล้องกับการทดสอบ UIAutomator ที่ออกแบบมาสำหรับระบบ View ได้ (I39c20)
  • แสดงความหนาทั้งหมดที่มีสำหรับแบบอักษรของระบบใน Android เมื่อใช้ FontFamily.SansSerif ซึ่งจะใช้ชื่อแบบอักษรสำรอง เช่น sans-serif-medium ภายใน API 21-28 นี่เป็นการเปลี่ยนแปลงลักษณะการทำงาน เนื่องจากก่อนหน้านี้ API 21-28 รองรับเฉพาะน้ำหนัก 400 และ 700 (I380fe, b/156048036, b/226441992)
  • ผู้สอนย่อหน้าและหลายย่อหน้าได้เรียงลำดับอาร์กิวเมนต์ตำแหน่งใหม่ให้อยู่ก่อนอาร์กิวเมนต์ที่ไม่บังคับ (Idafaa)
  • ตอนนี้ AndroidFont ใช้ typefaceLoader เป็นพารามิเตอร์ของตัวสร้าง (I2c971)

เวอร์ชัน 1.2.0-alpha07

6 เมษายน 2022

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

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

  • เพิ่มฟังก์ชันใหม่ Snapshot.withoutReadObservation { ... } แล้ว ซึ่งช่วยให้ผู้ใช้เรียกใช้ Lambda ที่ส่งผ่านได้โดยไม่ต้องสมัครรับข้อมูลการเปลี่ยนแปลงค่าสถานะที่อ่านในระหว่างบล็อกนี้ คุณอาจพบว่าฟีเจอร์นี้มีประโยชน์ในกรณีการใช้งานที่คุณต้องการใช้ประโยชน์จากการเขียน/อ่านที่ปลอดภัยแบบเธรดตามสแนปชอต แต่ต้องการอ่านค่าได้โดยไม่ต้องทำให้เกิดการจัดองค์ประกอบหรือการวัดซ้ำที่ไม่จำเป็น (I9f365, b/214054486)
  • consumeWindowInsetsพร็อพเพอร์ตี้ส่วนขยายของ ComposeView ช่วยให้นักพัฒนาแอปปิดใช้การใช้ WindowInsets ของ Android ได้ ซึ่งจะช่วยให้ ComposeViews แยกกันในลำดับชั้นใช้ WindowInsets ได้โดยไม่รบกวนกัน (I0ef08, b/220943142)
  • เพิ่ม KeyboardType.Decimal เป็นทางเลือกแทน Keyboard.Number เพื่อรวมตัวคั่นทศนิยมใน IME โดยเฉพาะ (Iec4c8, b/209835363)
  • PointerEventType.Scroll และ PointerEvent.scrollDelta เป็น API ที่เสถียรแล้ว (I574c5, b/225669674)
  • เปิดใช้การทำงานร่วมกันของการเลื่อนที่ซ้อนกันระหว่าง View กับ Compose สำหรับคลาส View ที่ทำงานร่วมกัน ซึ่งหมายความว่าตอนนี้ Compose สามารถส่งส่วนต่างของการเลื่อนไปยัง View ระดับบน (ที่ทำงานร่วมกัน) ได้แล้ว (I5d1ac, b/174348612)
  • อัปเดต FontFamily.Resolver เพื่อผสานรวมการตั้งค่าการช่วยเหลือพิเศษสำหรับข้อความตัวหนาทั้งระบบ (I6c1e7)
  • Font(AssetManager, String, ...) เลิกใช้งานแล้วและแทนที่ด้วย Font(String, AssetManager, ...) นี่คือ API เวอร์ชันทดลอง (I1c7a4)
  • เพิ่มตัวอธิบายแบบอักษรใหม่ Font(DeviceFontFamilyName) เพื่อค้นหาแบบอักษรที่ติดตั้งในระบบในระหว่างเชนการสำรองแบบอักษร (ไม่บังคับ) (I30468, b/219754572)
  • เพิ่มการกำหนดค่าความเข้ากันได้ชั่วคราวสำหรับ includeFontPadding ใน TextStyle/ParagraphStyle includeFontPadding เปลี่ยนได้ผ่าน TextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false)) นี่เป็นตัวเลือกการกำหนดค่าชั่วคราวเพื่อเปิดใช้การย้ายข้อมูลและจะถูกนำออก (If47be, b/171394808)
  • เพิ่มส่วนขยาย GoogleFont.Provider.isAvailableOnDevice เพื่อรับความช่วยเหลือในการแก้ไขข้อบกพร่อง (I64e31)
  • เพิ่มตัวสร้าง GoogleFont.Provider เพื่อใช้กับ @ArrayRes (Ic5ee1, b/225984280)
  • Compose GoogleFont เปลี่ยนชื่อเป็น Font(GoogleFont) แล้ว แต่ API ยังคงมีความเสถียร (I125f2)

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

  • เพิ่มการตรวจสอบ Lint ใน Material/Scaffold เพื่อให้แน่ใจว่ามีการใช้ระยะห่างภายใน (Ifb111)

เวอร์ชัน 1.2.0-alpha06

23 มีนาคม 2022

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

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

  • เพิ่มการดำเนินการทางความหมาย RequestFocus เพื่อขอให้โฟกัสที่เป้าหมายที่โฟกัสได้ (I17b71)
  • อัปเดตการแยกวิเคราะห์ Vector Drawable เพื่อรองรับการมิเรอร์อัตโนมัติเพื่อพลิกเนื้อหาของ VectorPainter หากเลย์เอาต์ปัจจุบัน เป็นแบบ RTL (I79cd9, b/185760237)
  • อัปเดตสีเงา/สีโดยรอบให้เป็นพารามิเตอร์ต่อท้ายของ Modifier.graphicsLayer เพื่อให้ API เข้ากันได้ (I3f864, b/160665122)

  • เพิ่มการใช้งานเริ่มต้นให้กับสีเงา/สีโดยรอบใน GraphicsLayerScope เพื่อให้มั่นใจว่าการเปลี่ยนแปลง API จะไม่ทำให้เกิดข้อผิดพลาด

  • เพิ่มเวลาของกิจกรรมลงในกิจกรรม RSB (Ief8ae)

  • ตอนนี้เราได้ผสานรวม FocusOrder เข้ากับ FocusProperties แล้ว และ focusProperties() ก็มีความสามารถทั้งหมดของ focusOrder() แล้ว FocusOrder และ focusOrder() เลิกใช้งานแล้ว focusOrder() ที่ยอมรับ focusRequester ควรแทนที่ด้วยตัวแก้ไข focusRequester() ร่วมกับ focusProperties() ซึ่งจะช่วยให้ตัวแก้ไขแยกความกังวลได้ชัดเจนยิ่งขึ้น (I601b7)

  • การอัปเกรดทั้ง RecyclerView และ Compose จะส่งผลให้ประสิทธิภาพการเลื่อนของ RecyclerView ที่มีมุมมอง Compose เป็นองค์ประกอบย่อยดีขึ้นมาก

  • เพิ่ม ViewCompositionStrategy.Default เป็นวิธีการดึงกลยุทธ์เริ่มต้นในตัว

  • เพิ่ม ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer ซึ่งเป็นกลยุทธ์เริ่มต้นใหม่และจัดการคอนเทนเนอร์การจัดกลุ่มอย่างเหมาะสม เช่น RecyclerView (If7282)

  • เพิ่มการรองรับการใส่คำอธิบายประกอบในคลาสคำอธิบายประกอบด้วย @Preview เป็นขั้นตอนแรกในการเพิ่มฟีเจอร์ Multipreview โดยสามารถใช้คำอธิบายประกอบดังกล่าวเพื่อใส่คำอธิบายประกอบในเมธอดที่ประกอบได้หรือคลาสคำอธิบายประกอบอื่นๆ ซึ่งจะถือว่ามีการใส่คำอธิบายประกอบโดยอ้อมด้วย @Preview ที่ระบุ (I12eff)

  • เพิ่มอุปกรณ์อ้างอิงลงในรายการอุปกรณ์สำหรับ @Preview (I071c9)

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

  • อัปเดต API กราฟิกเวกเตอร์ให้ใช้คำอธิบายประกอบที่ประกอบได้ที่เหมาะสม @VectorComposable แทน @UiComposable (I942bc)
  • นำ crossinline ออกจาก AnnotatedString.Builder.withStyle (If84d5)

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

  • compose-ui: เพิ่มพร็อพเพอร์ตี้ ambientShadowColor และ spotShadowColor ลงใน GraphicsLayerScope (I1ba1a, b/160665122)
  • ตอนนี้ฟังก์ชัน pluralStringResource รองรับแหล่งข้อมูลแบบพหูพจน์แล้ว (Ib2f23, b/191375123)

เวอร์ชัน 1.2.0-alpha05

9 มีนาคม 2022

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

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

  • ตอนนี้ TextToolbar รับอาร์กิวเมนต์ lambda แทน ActionCallback แล้ว (Ib2eb9, b/197950089)
  • อัปเดตค่า Null ใน Core และ Appcompat ให้ตรงกับ Tiramisu DP2 (I0cbb7)
  • ตอนนี้อินเทอร์เฟซที่วัดผลได้จะแสดงพร็อพเพอร์ตี้ parentData (I3313f)
  • Modifier.onPlaced และอินเทอร์เฟซ OnPlacedModifier มีความเสถียรแล้วในตอนนี้ (Ib5482)
  • ไชโย! ฟีเจอร์สร้างภาพเคลื่อนไหวรองรับการตั้งค่า "มาตราส่วนระยะเวลาของ Animator" จากตัวเลือกสำหรับนักพัฒนาแอปแล้ว (I5a4fc, b/161675988)
  • เพิ่มตัวแก้ไข BeyondBoundsLayout local (If8b51, b/184670295)
  • ข้อความ: ตอนนี้ระบบจะปิด includeFontPadding โดยค่าเริ่มต้น เราได้includeFontPadding=falseแก้ไขปัญหาการตัดข้อความอันเป็นผลมาจากincludeFontPadding=falseแล้ว และไม่ควรมีการตัดข้อความสำหรับสคริปต์ที่มีความยาว (I31c84, b/171394808)

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

  • ComposeContentTestRule.setContent จะแสดง IllegalStateException หากคุณพยายามตั้งค่าเนื้อหาเมื่อมีเนื้อหาอยู่แล้ว (I888a5, b/199631334)
  • แก้ไขข้อขัดข้องที่เกิดจากเนื้อหาในคลิปบอร์ดขณะอ่านจาก คลิปบอร์ดใน Android (I06020, b/197769306)
  • ปรับปรุงตัวอย่างการเลื่อน RSB (I6a596)

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

  • อัปเดตให้ใช้ Kotlinx coroutines 1.6.0 (I3366d)

เวอร์ชัน 1.2.0-alpha04

23 กุมภาพันธ์ 2022

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

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

  • เพิ่ม ComposableTarget, ComposableTargetMarker และ ComposableOpenTarget ที่อนุญาตให้รายงานเวลาคอมไพล์เมื่อมีการเรียกใช้ ฟังก์ชันที่ประกอบกันได้ซึ่งกำหนดเป้าหมายไปยังแอปพลิเคชันที่ไม่ได้ ออกแบบมาให้ใช้

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

    สำหรับฟังก์ชันที่กำหนดเองที่เรียกใช้ฟังก์ชันที่ใช้ร่วมกันได้ ComposeNode หรือ ReusableComposeNode จะต้องเพิ่ม ComposableTarget คำอธิบายประกอบสำหรับฟังก์ชันและประเภทพารามิเตอร์แลมบ์ดาที่ใช้ร่วมกันได้ อย่างไรก็ตาม เราขอแนะนำ ให้สร้างคำอธิบายประกอบที่มีคำอธิบายประกอบเป็น ComposableTargetMarker แล้วใช้คำอธิบายประกอบที่ทำเครื่องหมาย แทน ComposableTarget โดยตรง คำอธิบายประกอบที่ประกอบได้ ซึ่งทำเครื่องหมายด้วย ComposableTargetMarker จะเทียบเท่ากับ ComposbleTarget ที่มีชื่อแบบเต็มของแอตทริบิวต์ คลาสเป็นพารามิเตอร์แอปพลิเคชัน ดูตัวอย่างการใช้ ComposableTargetMarker ได้ที่ anroidx.compose.ui.UiComposable (I38f11)

  • Font(resId, ...) ตอนนี้ใช้ loadingStrategy ใน API ที่เสถียรแล้ว (Ief3d2)

  • FontLoadingStrategy เป็น API ที่เสถียรแล้ว (I1ee35, b/174162090)

  • รองรับการโหลดแบบอักษรแบบไม่พร้อมกันในข้อความ (I77057, b/214587005)

  • เพิ่ม Bridge API เพื่อแปลง Font.ResourceLoader ที่กำหนดเองเป็น FontFamily.Resolver (Ia0060)

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

  • ระบบจะส่ง FontFamily.Resolver ที่ระบุไปยังองค์ประกอบย่อย เช่น ป๊อปอัป
  • ระบบจะส่ง Font.ResourceLoader ที่ระบุไปยังองค์ประกอบย่อย เช่น ป๊อปอัป (I48fa5)

เวอร์ชัน 1.2.0-alpha03

9 กุมภาพันธ์ 2022

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

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

  • notifyFocusedRect เมธอดใน TextInputSession และ TextInputService เลิกใช้งานแล้วและจะไม่เรียกใช้ โปรดใช้ BringIntoViewRequester แทน (Ia4302, b/192043120, b/216842427, b/178211874)
  • เปิดตัวเมธอด destroyDisplayListData ในคลาส Stub RenderNode (I1e659, b/216660268)
  • เพิ่ม API ใหม่ที่ช่วยให้วัดขนาดล่วงหน้าขององค์ประกอบย่อยของ SubcomposeLayout ที่คุณคอมโพสล่วงหน้าได้ (I857ea)
  • เพิ่ม movableContentOf ซึ่งแปลง Composable Lambda เป็น Lambda ที่ย้ายสถานะและโหนดที่เกี่ยวข้อง ไปยังตำแหน่งใหม่ที่เรียกใช้ เมื่อการโทรครั้งก่อนออกจาก การคอมโพส สถานะจะได้รับการรักษาไว้ชั่วคราว และหากมีการโทรใหม่ ไปยัง Lambda เข้าสู่การคอมโพส ระบบจะย้ายสถานะและโหนดที่เชื่อมโยง ไปยังตำแหน่งของการโทรใหม่ หากไม่มีการเพิ่มการโทรใหม่ ระบบจะนำสถานะออกอย่างถาวรและจะแจ้งให้ผู้สังเกตการณ์ที่จดจำทราบ

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

  • FontFamilyResolver พร้อมให้บริการผ่าน LocalFontFamilyResolver.current แล้ว

  • เพิ่ม createFontFamilyResolver(context) และ createFontFamilyResolver(context, coroutineScope) เพื่อสร้างตัวแก้ไข FontFamily ใหม่นอกเหนือจากการใช้งาน Compose

  • ตอนนี้ Paragraph และ MultiParagraph ใช้ FontFamily.Resolver

  • TextLayoutResult.layoutInput.fontFamilyResolver มี รีโซลเวอร์ที่ใช้สำหรับเลย์เอาต์นี้ ซึ่งเลิกใช้งานแล้ว TextLayoutResult.layoutInput.resourceLoader เนื่องจากไม่ได้ใช้แล้ว (Id5a45, b/174162090)

  • รองรับการโหลดแบบอิงค์และแบบไม่บังคับของแบบอักษรที่มีลักษณะการทำงานสำรอง เส้นทางนี้ใช้โดย Text และ TextField และแสดงผ่าน FontFamilyResolver

  • การรองรับการโหลดแบบอักษรล่วงหน้าผ่าน FontFamilyResolver.preload

  • FontFamilyResolver.setAsyncLoadContext อนุญาตให้ตั้งค่า บริบทของโครูทีนส่วนกลางที่ใช้ในการโหลดแบบอักษรแบบไม่พร้อมกัน (I87fe8, b/174162090)

  • เพิ่ม AndroidFont ซึ่งเป็น API ระดับต่ำตัวใหม่สำหรับระบุตัวอธิบายทรัพยากรแบบอักษรประเภทใหม่ใน Android เช่น การโหลดแบบอักษรจาก แบ็กเอนด์เฉพาะแอป การค้นหาแบบอักษรที่ติดตั้งไว้ล่วงหน้า ในอุปกรณ์ หรือการโหลดแบบอักษรจากทรัพยากรที่ไม่ได้มาจาก โรงงานแบบอักษรปัจจุบัน

  • ขยาย Font.ResourceLoaded API เพื่อรองรับการโหลดแบบไม่พร้อมกันและแบบไม่บังคับ ของแบบอักษร เราไม่แนะนำให้นักพัฒนาแอปพลิเคชันใช้ API นี้โดยตรง หากต้องการเพิ่มแบบอักษรประเภทใหม่ โปรดดู AndroidFont

  • ฟังก์ชันส่วนขยาย Font.AndroidResourceLoader อนุญาต การสร้าง Font.ResourceLoader เมื่ออยู่นอกองค์ประกอบ

  • เพิ่มพารามิเตอร์ loadingStrategy ลงในแบบอักษรที่อิงตามทรัพยากรเพื่อให้โหลดแบบอะซิงโครนัสได้เมื่อการอ้างอิงแบบอักษรของทรัพยากรเป็น XML ของแบบอักษรที่ดาวน์โหลดได้ (Ie5aea, b/174162090)

  • เราเลิกใช้งานเครื่องมือสร้าง Typeface(FontFamily) แล้ว ซึ่งก่อนหน้านี้ใช้เพื่อโหลดแบบอักษรไว้ล่วงหน้า ซึ่งอาจใช้เวลาไม่เกิน 10 วินาทีสำหรับ แบบอักษรที่ดาวน์โหลดได้ หากใช้แบบอักษรที่ดาวน์โหลดได้ การเรียกนี้อาจถูกบล็อกเป็นเวลา 10 วินาที ให้ใช้ FontFamilyResolver.preload แทน

  • fontResource(FontFamily): Typeface เลิกใช้งานแล้ว ซึ่งก่อนหน้านี้ใช้เพื่อโหลดแบบอักษรไว้ล่วงหน้า ซึ่งอาจใช้เวลาไม่เกิน 10 วินาทีสำหรับ แบบอักษรที่ดาวน์โหลดได้ ให้ใช้ FontFamilyResolver.preload (If8e7c, b/174162090) แทน

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

  • แสดงฟังก์ชัน HSV และ HSL ใน Color เป็น API ที่ไม่ใช่เวอร์ชันทดลอง ตอนนี้พื้นที่สี Oklab เป็น API สาธารณะแล้ว (I08fb6, b/180731008)

  • เลิกใช้งาน AndroidComposeTestRule.AndroidComposeStatement ซึ่งไม่ได้มีไว้ใน API สาธารณะและไม่ได้ทำอะไรให้คุณ อยู่แล้ว (Ibc46b)

  • เปลี่ยนชื่อคลาส kt ที่สร้างขึ้นภายใน (Ia0b9e, b/174162090)

  • นำออก FontLoadingStrategy.values (I42a9d, b/174162090)

  • Global font loader เปลี่ยนชื่อเป็น FontFamilyResolver (I4f773, b/174162090)

  • ใช้ระบบการโหลดแบบอักษรใหม่สำหรับเดสก์ท็อป (I9ce5c, b/174162090)

  • FontFamily.Resolver.resolve returns State<Any> (I4406c, b/174162090)

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

  • ตอนนี้ระบบจะเก็บ TextField ไว้เหนือแป้นพิมพ์เมื่อมีการ โฟกัสและแสดงแป้นพิมพ์เมื่อโหมดป้อนข้อมูลแบบนุ่มเป็น ADJUST_PAN (I8eaeb, b/190539358, b/192043120)
  • เดสก์ท็อปใช้การเขียนเฉพาะที่สำหรับ FontFamily.Resolver
  • เราเลิกใช้งานเดสก์ท็อป FontLoader แล้ว
  • createFontFamilyResolver ใหม่ในเดสก์ท็อป (I6bbbb, b/174162090)
  • ประเภทการป้อนข้อมูลด้วยแป้นพิมพ์เสมือนจะไม่กะพริบอีกต่อไปเมื่อเปลี่ยน โฟกัสระหว่างช่องข้อความ (I1bf50, b/187746439)

เวอร์ชัน 1.2.0-alpha02

26 มกราคม 2022

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

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

  • เพิ่ม Modifier.onRotaryScrollEvent() และ Modifier.onPreRotaryScrollEvent() สำหรับอุปกรณ์สวมใส่ที่มีปุ่มด้านข้างแบบหมุน (I18bf5, b/210748686)
  • เพิ่มส่วนขยายView.createLifecycleAwareRecomposer เวอร์ชันทดลอง (I0cde6)

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

  • PointerEvent.scrollDelta.y ตอนนี้จะกลับด้านใน Android (ตอนนี้จะแสดงผลเป็น 1 แทน -1 หากเราเอียงล้อเมาส์ไปทางขวา) (Ia9811)

เวอร์ชัน 1.2.0-alpha01

12 มกราคม 2022

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

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

  • เลิกใช้งาน FontFamily.canLoadSynchronously แล้ว พร็อพเพอร์ตี้นี้ไม่มีความหมายเชิงความหมาย (Ica5ef)
  • เพิ่มฟิลด์ข้อมูลระบุตัวตนลงใน CompositionData เพื่อสร้าง รหัสที่ไม่เปลี่ยนแปลงในเครื่องมือตรวจสอบเลย์เอาต์ (Ic116e)
  • เพิ่มรหัสอุปกรณ์ Wear OS ลงในรายการอุปกรณ์ตัวอย่าง (I93232)

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

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

เวอร์ชัน 1.1

เวอร์ชัน 1.1.1

23 กุมภาพันธ์ 2022

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

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

  • แก้ไข NullPointerException ที่ androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList (aosp/1947059, b/206677462)
  • แก้ไขข้อขัดข้องที่เกิดจากเนื้อหาในคลิปบอร์ดขณะอ่านจาก คลิปบอร์ดใน Android (I06020, b/197769306)
  • แก้ไข RTL ใน LazyVerticalGrid (aosp/1931080, b/207510535)

เวอร์ชัน 1.1.0

9 กุมภาพันธ์ 2022

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

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

  • รองรับเอฟเฟกต์การเลื่อนเกินของ Android 12 อย่างเสถียร
  • การปรับปรุงการกำหนดขนาดเป้าหมายการสัมผัส
    • โปรดทราบว่าใน Compose 1.0 คอมโพเนนต์ Material จะขยายพื้นที่เลย์เอาต์เพื่อให้เป็นไปตามหลักเกณฑ์การช่วยเหลือพิเศษของ Material สำหรับขนาดเป้าหมายการสัมผัส ตัวอย่างเช่น เป้าหมายการสัมผัสของปุ่มจะขยายเป็นขนาดขั้นต่ำ 48x48dp แม้ว่าคุณจะตั้งค่าขนาดของปุ่มให้เล็กกว่านี้ก็ตาม ซึ่งจะทําให้ Compose Material มีลักษณะการทํางานเหมือนกับ Material Design Components และมีลักษณะการทํางานที่สอดคล้องกันหากคุณใช้ทั้ง View และ Compose การเปลี่ยนแปลงนี้ยังช่วยให้มั่นใจได้ว่าเมื่อคุณสร้าง UI โดยใช้คอมโพเนนต์ Material ของ Compose ระบบจะปฏิบัติตามข้อกำหนดขั้นต่ำสำหรับการช่วยเหลือพิเศษของเป้าหมายการสัมผัส
  • การรองรับแถบข้างสำหรับไปยังส่วนต่างๆ ที่เสถียร
  • เปลี่ยน API ที่เคยอยู่ในระยะทดลองจำนวนหนึ่งให้เป็น API ที่เสถียร
  • การรองรับ Kotlin เวอร์ชันใหม่กว่า

เวอร์ชัน 1.1.0-rc03

26 มกราคม 2022

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

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

  • อัปเดตเพื่อรองรับ Compose Material 1.1.0-rc03

เวอร์ชัน 1.1.0-rc01

15 ธันวาคม 2021

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

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

  • แก้ไขข้อบกพร่องที่ทำให้การเลื่อนเพื่อการช่วยเหลือพิเศษหายไป (I7cbfb)
  • ตอนนี้ SemanticsNodeInteraction.captureToImage() จะใช้งานได้ด้วยหาก HardwareRenderer.isDrawingEnabled() เป็น false โดยการเปิดใช้ในระยะเวลาการโทร (Idf3d0)

เวอร์ชัน 1.1.0-beta04

1 ธันวาคม 2021

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

ฟีเจอร์ใหม่

  • อัปเดตให้เข้ากันได้กับ Kotlin 1.6.0

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

  • ล้างค่า Null ใน androidx.core.view (I7078a, b/204917439)
  • เพิ่ม API ทดลองที่อนุญาตให้ผู้ใช้ใช้ PointerInputchange ทั้งหมด หรือตรวจสอบว่ามีการใช้หรือไม่ (I2e59d)
  • เพิ่มการรองรับเหตุการณ์ล้อเลื่อนของเมาส์ในเลเยอร์ UI (Ia14eb, b/198214718)
  • เพิ่มModifier.composedการโอเวอร์โหลดเชิงทดลองที่ยอมรับ คีย์เพื่อเปรียบเทียบความเท่ากันและมีสิทธิ์ข้ามการเพิ่มประสิทธิภาพ (Ice799, b/205851704)
  • ComposeNotIdleException ขยายจาก Exception แทนที่จะมาจาก Throwable โดยตรง โปรดทราบว่าการดำเนินการนี้หมายความว่าข้อความที่ครอบคลุม ซึ่งเคยครอบคลุมException อาจครอบคลุม ComposeNotIdleExceptionในตอนนี้ ซึ่งก่อนหน้านี้ข้อความดังกล่าวจะไม่ครอบคลุม (I9c217)

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

  • แก้ไขแฮนเดิลข้อความไม่เคลื่อนที่เมื่อระดับการมองเห็น IME เปลี่ยนแปลง (I25f2e)

เวอร์ชัน 1.1.0-beta03

17 พฤศจิกายน 2021

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

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

  • เพิ่มตัวแก้ไข Modifier.onPlaced ใหม่เพื่อให้สังเกตการเปลี่ยนแปลงตำแหน่งได้ ดังนั้นจึงสามารถทำการเปลี่ยนแปลงเพิ่มเติมในออฟเซ็ตของตัวปรับแต่งย่อยได้ตาม การเปลี่ยนแปลงตำแหน่งที่สังเกตได้ (I558fd)
  • นำ InjectionScope.flush() และ InjectionScope.dispose() ออกแล้ว การล้างเหตุการณ์ทั้งหมดและการทิ้ง ขอบเขตจะเกิดขึ้นเมื่อสิ้นสุดเมธอด perform*Input() ที่เรียกใช้เหมือน ก่อนหน้านี้ (I2bed8)
  • นำ MultiModalInjectionScope.Touch และ MultiModalInjectionScope.Mouse ออกแล้ว หากต้องการแทรกเหตุการณ์การสัมผัสและเมาส์ สำหรับท่าทางสัมผัสแบบหลายรูปแบบ ตอนนี้คุณสามารถใช้ MultiModalInjectionScope.touch() และ MultiModalInjectionScope.mouse() ซึ่งทั้ง 2 อย่างนี้ยอมรับ Lambda ที่มีขอบเขตตัวรับของรูปแบบนั้น (Idde18)

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

  • ตอนนี้ระบบจะคำนวณค่าเริ่มต้นสำหรับ durationMillis ใน TouchInjectionScope.swipeWithVelocity เพื่อให้ปัดได้ (I19deb)

เวอร์ชัน 1.1.0-beta02

3 พฤศจิกายน 2021

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

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

  • เพิ่ม BringIntoView API เวอร์ชันทดลองที่ให้คุณส่งคำขอไปยังผู้ปกครองเพื่อให้เลื่อนเพื่อนำรายการมาแสดง (Ib918d, b/195353459)
  • API ภาพเคลื่อนไหวใหม่สำหรับการสนับสนุนเครื่องมือ กล่าวคือ ช่วยให้เครื่องมือตรวจสอบภาพเคลื่อนไหวและการกำหนดค่าใน Transitions ได้ (I4116e)

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

  • เพิ่ม Modifier.pointerHoverIcon (I95f01)

เวอร์ชัน 1.1.0-beta01

27 ตุลาคม 2021

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

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

  • เพิ่ม BringIntoView API เวอร์ชันทดลองที่ช่วยให้คุณส่งคำขอไปยังผู้ปกครองเพื่อให้เลื่อนเพื่อนำไอเทมมาแสดง (Ib918d, b/195353459)
  • API ภาพเคลื่อนไหวใหม่สำหรับการสนับสนุนเครื่องมือ กล่าวคือ ช่วยให้เครื่องมือตรวจสอบภาพเคลื่อนไหวและการกำหนดค่าใน Transitions ได้ (I4116e)

เวอร์ชัน 1.1.0-alpha06

13 ตุลาคม 2021

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

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

  • นำ ExperimentalComposeUiApi ออกจาก ViewRootForInspector และ LayoutInfo.ownerViewId (I5c2e3)
  • เพิ่มการโอเวอร์โหลดที่ไม่มีการระบุองค์ประกอบย่อยสำหรับเลย์เอาต์เพื่อปรับปรุงประสิทธิภาพ (Ib0d9a)
  • นำ InternalCompilerApi ออกจากเมธอด Composer ที่ต้องเรียกใช้ข้ามโมดูล (I1aa0b)
  • ตอนนี้ SemanticsNodeInteraction.performSemanticsAction จะแสดงผล SemanticsNodeInteraction ที่มีการเรียกใช้ฟังก์ชัน (I9e5db)
  • เพิ่ม CompositionLocal ของ LocalInputModeManager เพื่อตรวจหา TouchMode/NonTouchMode (I6a83c, b/175899786)
  • เพิ่ม viewConfiguration: ViewConfiguration ใน LayoutInfo เพื่อให้ผู้บริโภคได้รับค่าที่ถูกต้องสำหรับสิ่งต่างๆ เช่น การหมดเวลา การกดแบบยาว (I76ca6)
    • เพิ่ม viewConfiguration: ViewConfiguration ใน InjectionScope เพื่อให้การทดสอบปรับการแทรกอินพุตตาม สิ่งต่างๆ เช่น การหมดเวลาการกดค้างหรือการเลื่อนด้วยการสัมผัส
    • เปลี่ยนระยะเวลาเริ่มต้นของการกดค้างและการแตะสองครั้งสําหรับทั้ง การป้อนข้อมูลด้วยการสัมผัสและเมาส์ให้เป็นไปตามค่าใน InjectionScope.viewConfiguration
  • การใช้งาน ExposedDropdownMenu โดยอิงตาม ExposedDropdownMenuBox ที่มี TextField และ DropdownMenu อยู่ภายใน (If60b2)
  • เพิ่ม dismissOnOutsideClick ลงใน PopupProperties เพื่อแทนที่ dismissOnClickOutside ซึ่งเลิกใช้งานแล้ว พร็อพเพอร์ตี้ใหม่จะได้รับตําแหน่งการคลิกและขอบเขตของจุดยึด ซึ่งช่วยให้ควบคุมได้ละเอียดยิ่งขึ้นว่าจะเรียกใช้ onDismissRequest หรือไม่ เช่น การตั้งค่านี้อาจมีประโยชน์ในการป้องกันไม่ให้เลิกใช้สมอเมื่อมีการแตะที่สมอ
    • มีการเพิ่ม updateAndroidWindowManagerFlags ลงใน PopupProperties ซึ่งช่วยให้ควบคุมแฟล็กที่ป๊อปอัปส่งไปยัง WindowManager ของ Android ได้ในระดับต่ำ พารามิเตอร์ของ Lambda จะเป็นค่าสถานะที่คำนวณจากค่า PopupProperties ซึ่งส่งผลให้เกิดค่าสถานะ WindowManager เช่น focusable ผลลัพธ์ของ Lambda จะเป็น Flag สุดท้ายที่จะส่งไปยัง WindowManager ของ Android โดยค่าเริ่มต้น updateAndroidWindowManagerFlags จะไม่เปลี่ยนแปลงค่าสถานะที่คำนวณจากพารามิเตอร์ คุณควรใช้ API นี้ด้วยความระมัดระวัง เฉพาะในกรณีที่ป๊อปอัปมีข้อกำหนดด้านลักษณะการทำงานที่เฉพาะเจาะจงมาก (I6e9f9)
  • Recomposer.state ถูกเลิกใช้งานและแทนที่ด้วย Recomposer.currentState เพื่อเปลี่ยนประเภทเป็น StateFlow (Ic2ab3, b/197773820)
  • เพิ่ม flush() และ dispose() ไปยัง InjectionScope แล้ว ใช้เมื่อต้องการล้างเหตุการณ์ทั้งหมดที่อยู่ในคิวทันทีและเมื่อต้องการทิ้งขอบเขตตามลำดับ (Ifb73a)
  • เพิ่ม performScrollToNode(matcher: SemanticsMatcher) ที่ เลื่อนคอนเทนเนอร์ที่เลื่อนได้ไปยังเนื้อหาที่ตรงกันโดย ตัวจับคู่ที่ระบุ (Ic1cb8)
  • InjectionScope ได้ติดตั้งใช้งาน Density แล้ว ซึ่งช่วยให้คุณ แปลงระหว่าง px กับ dp ใน performTouchInput และอื่นๆ ได้อย่างง่ายดาย (I8fe1f)

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

  • ตอนนี้ AndroidView จะส่งต่อ LocalLifecycleOwner และ LocalSavedStateRegistryOwner ไปยังมุมมองผ่าน ViewTreeLifecycleOwner และ ViewTreeSavedStateRegistryOwner (I38f96, b/179708470)
  • แก้ไขปัญหาที่ WearOS SwipeToDismissBox ไม่จัดการการปัดในบางครั้ง (I9387e)
  • เวลาเริ่มต้นระหว่างเหตุการณ์การป้อนข้อมูลที่แทรกมีการเปลี่ยนแปลงจาก 10 มิลลิวินาทีเป็น 16 มิลลิวินาที ซึ่งอาจเปลี่ยนผลลัพธ์ของการทดสอบ ที่ดำเนินการท่าทางสัมผัสอินพุต เช่น การปัดที่เฉพาะเจาะจง (I829fd)

เวอร์ชัน 1.1.0-alpha05

29 กันยายน 2021

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

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

  • เพิ่มการรองรับการสื่อสารระหว่างตัวแก้ไข (Id5467, b/198826874)
  • เพิ่มตัวชี้ประวัติการทดลองลงใน PointerEventChange (Ic1fd8, b/197553056, b/199921305)
  • เพิ่ม density: Density และ layoutDirection: LayoutDirection ไปยัง LayoutInfo แล้ว ซึ่งจะช่วยให้ผู้ใช้ LayoutInfo ตีความมิติข้อมูลและตำแหน่งที่แสดงใน LayoutInfo ได้อย่างถูกต้อง (I002f1)
  • เพิ่มการรองรับการแทรกเหตุการณ์ของเมาส์ในเวอร์ชันทดลอง ใช้ performMouseInput เพื่อเริ่มส่งเหตุการณ์ของเมาส์ หรือส่งเหตุการณ์ของเมาส์ ผ่านพร็อพเพอร์ตี้ Mouse ของ MultiModalInjectionScope ระหว่าง ท่าทางสัมผัสการป้อนข้อมูลหลายรูปแบบด้วย performMultiModalInput ดูเอกสารประกอบเกี่ยวกับ API ที่พร้อมใช้งานได้ที่ MouseInjectionScope (Iaa4a8, b/190493367)

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

  • แก้ไขการรองรับการช่วยเหลือพิเศษสำหรับรายการที่เลื่อนได้ (ทั้งแบบเลซีและ แบบไม่เลซี) เกี่ยวกับการเลื่อน (I6cdb0)
  • ปรับปรุงแล้ว TouchInjectionScope.swipeWithVelocity ตอนนี้ฟีเจอร์นี้ ยอมรับตัวแปรอินพุตที่หลากหลายมากขึ้น และจะแนะนำการเปลี่ยนแปลงอินพุตหากสร้างการปัดไม่ได้ (I40fbe, b/182477143)

เวอร์ชัน 1.1.0-alpha04

15 กันยายน 2021

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

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

  • ตอนนี้ PointerEvent มี PointerEventType เพื่อรองรับเหตุการณ์การวางเมาส์แล้ว (I091fa)
  • อนุญาตให้เด็กยอมรับอินพุตพอยน์เตอร์นอกขอบเขตอินพุตพอยน์เตอร์ของ ผู้ปกครอง ผู้ปกครองอาจสกัดกั้นการเรียกเหล่านั้นด้วยพร็อพเพอร์ตี้ PointerInputScope.alwaysInterceptChildEvents (I9eae3, b/192479655)
  • เลิกใช้งาน performGesture และ GestureScope ซึ่งถูกแทนที่ด้วย performTouchInput และ TouchInjectionScope (Ia5f3f, b/190493367)
  • เพิ่ม touchBoundsInRoot ถึง SemanticsNode ซึ่ง รวมถึงขนาดเป้าหมายการสัมผัสขั้นต่ำ เพื่อให้นักพัฒนาแอป มั่นใจได้ว่าเป้าหมายการสัมผัสเป็นไปตามข้อกำหนดขั้นต่ำด้านการช่วยเหลือพิเศษ (I2e14b, b/197751214)
  • แก้ไขการใช้งานที่ตรวจสอบได้ (I927bc, b/191017532)
  • เปลี่ยนชื่อพารามิเตอร์ของ inspectable ให้ตรงกับ composed (I3a482, b/191017532)
  • เปิดตัว performTouchInput และ TouchInjectionScope เพื่อแทนที่ performTouchInput และ TouchInjectionScope ซึ่งเป็นการปูทางสำหรับรูปแบบอื่นๆ (เช่น เมาส์)

    TouchInjectionScope มีวิธีการเหมือนกับ GestureScope ยกเว้น movePointerTo และ movePointerBy ซึ่งเปลี่ยนชื่อเป็น updatePointerTo และ updatePointerBy ส่วนวิธีอื่นๆ จะเหมือนเดิม

    ลักษณะการทำงานของ TouchInjectionScope จะเหมือนกับ GestureScopeเกือบทุกประการ โดยมีรายละเอียดเล็กๆ 2 อย่างดังนี้

    1. เมื่อส่งเหตุการณ์ "ลง" ขณะที่ย้ายเคอร์เซอร์โดยไม่ส่งเหตุการณ์ "ย้าย" (กล่าวคือ มีการใช้ updatePointerTo() แต่ไม่ได้ใช้ move() แล้วเรียกใช้ down()) การติดตั้งใช้งานก่อนหน้านี้จะเลื่อนเวลาเหตุการณ์และส่งเหตุการณ์ "ย้าย" ก่อนที่จะส่งเหตุการณ์ "ลง" การติดตั้งใช้งานใหม่จะยังคงส่งเหตุการณ์ ย้าย แต่จะไม่เลื่อนเวลาเหตุการณ์ในสถานการณ์ เฉพาะนี้
    2. เมื่อส่งเหตุการณ์ "ขึ้น" ขณะที่ย้ายเคอร์เซอร์โดยไม่ส่งเหตุการณ์ "ย้าย" (คล้ายกับด้านบน) การติดตั้งใช้งานก่อนหน้าจะเลื่อนเวลาของเหตุการณ์และส่งเหตุการณ์ "ย้าย" ก่อนที่จะส่งเหตุการณ์ "ขึ้น" การติดตั้งใช้งานใหม่จะไม่ทำทั้ง 2 อย่างนี้ โดยตำแหน่งใหม่ของ เคอร์เซอร์จะแสดงผ่านเหตุการณ์ขึ้นเท่านั้น

    สุดท้าย TouchInjectionScope จะแนะนําวิธีใหม่ currentPosition(pointerId: Int) ในการรับตำแหน่งปัจจุบันของ เคอร์เซอร์ที่ระบุ (If1191, b/190493367)

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

  • อนุญาตให้คลิปขยายขอบเขตเป้าหมายการสัมผัสเกินกว่า ภูมิภาคคลิปเพื่อวัตถุประสงค์ของเป้าหมายการสัมผัสขั้นต่ำ (I43e10, b/171509422)
  • เพิ่มการรองรับการเลื่อนเกินขอบเขตแบบยืดในอุปกรณ์ Android 12 แล้ว (Iccf3c, b/171682480)

เวอร์ชัน 1.1.0-alpha03

1 กันยายน 2021

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

ฟีเจอร์ใหม่

  • อัปเดต Compose 1.1.0-alpha03 ให้ขึ้นอยู่กับ Kotlin 1.5.30 (I74545)

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

  • เพิ่ม Modifier.inspectable สำหรับการรวมตัวแก้ไขอื่นๆ (I1909b, b/191017532)
  • เพิ่ม BlurredEdgeTreatment API เพื่อลดความซับซ้อนของ Use Case การเบลอให้เป็นชุดค่าผสมของ แฟล็กคลิปและ TileMode ที่ใช้กันโดยทั่วไป Use Case ส่วนใหญ่เกี่ยวข้องกับ การอนุญาตให้แสดงเนื้อหาที่เบลอ นอกขอบเขตของเนื้อหาต้นฉบับ และการเบลอภูมิภาคนอกขอบเขตเหล่านี้ ด้วยสีดำโปร่งใส หรือการตัดเนื้อหา ตามขอบเขตของเนื้อหาโดยการสุ่มขอบที่ใกล้ที่สุด สำหรับเคอร์เนลเบลอที่ขยายออกไปนอกขอบเขตของเนื้อหา (I6b4b7, b/166927547)
  • เพิ่มการรองรับ RenderEffect ใน Compose Desktop เปิดตัว OffsetEffect รวมถึง ตัวแก้ไขเบลอเป็นวิธีง่ายๆ ในการ เพิ่มเอฟเฟกต์ภาพเบลอลงในส่วน ของลำดับชั้นการคอมโพสิต (I0f6aa, b/166927547)
  • เปิดตัว RenderEffect API ที่กำหนดค่าได้โดยไม่บังคับใน Modifier.graphicsLayer เพื่อเปลี่ยน เนื้อหาของเลเยอร์เอง ซึ่งใช้เพื่อเบลอเนื้อหาของ Composable และ Composable ย่อยภายในลำดับชั้นการจัดองค์ประกอบได้ (I47c4d, b/166927547)
  • ตอนนี้ AwaitPointerEventScope มี withTimeout() และ withTimeoutOrNull() แล้ว (I507f0, b/179239764, b/182397793)
  • เพิ่มขนาดเป้าหมายการสัมผัสขั้นต่ำลงใน ViewConfiguration เพื่อใช้ในความหมายและอินพุตของเคอร์เซอร์เพื่อให้มั่นใจว่ามีการช่วยเหลือพิเศษ (Ie861c)
  • เพิ่มการรองรับ TileMode.Decal ซึ่งมีประโยชน์ในการกำหนดขอบ ลักษณะการทำงานสำหรับ RenderEffect ที่อิงตามการเบลอ (I7e8ed, b/166927547)
  • performScrollToIndex, performScrollToKey, hasScrollToIndexAction และ hasScrollToKeyAction เป็น API ที่เสถียรแล้ว (I142ae, b/178483889)
  • เพิ่มวิธีการทดสอบเพื่อรับขอบเขตที่ตัด (I6b28e)

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

  • นำเมธอด isBounded ออก จาก BlurredEdgeTreatment เพื่อ ตรวจสอบอย่างชัดเจนว่าพารามิเตอร์ รูปร่างเป็น Null หรือไม่ (I85d68)

เวอร์ชัน 1.1.0-alpha02

18 สิงหาคม 2021

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

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

  • ตอนนี้ PointerEvent รองรับการอ่านสถานะปุ่มเมาส์และสถานะตัวแก้ไขแป้นพิมพ์แล้ว (I6310c, b/180075467)
  • ตอนนี้ท่าทางสัมผัสที่แทรกจะใช้เวลาของ MainTestClock เป็น แหล่งข้อมูลที่ถูกต้องสำหรับเวลา ระบบจะเริ่มต้นเวลาปัจจุบันสำหรับเหตุการณ์ที่แทรกใน performGesture เป็นเวลาปัจจุบันของ MainTestClock (Ifb364, b/192064452)
  • เพิ่มตัวสร้าง DpRect(DpOffset, DpSize) (I2cf16, b/194219828)
  • เพิ่มคลาส DpSize (I7abb1, b/194219828)

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

  • อัปเดตการแยกวิเคราะห์ XML กราฟิกแบบเวกเตอร์ เพื่อรองรับ ColorStateLists เป็น พร็อพเพอร์ตี้ย้อมสีรูทใน VectorDrawable (I86915, b/195668138)

เวอร์ชัน 1.1.0-alpha01

4 สิงหาคม 2021

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

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

  • RelocationRequester.bringIntoView ตอนนี้ยอมรับสี่เหลี่ยมผืนผ้าเป็นพารามิเตอร์แล้ว ซึ่งช่วยให้เรานำส่วนของ Composable มาแสดงได้ (Ice2c5, b/194330245)
  • AnimatedImageVector และ API ที่เกี่ยวข้องอยู่ในโมดูลใหม่ androidx.compose.animation:animation-graphics แล้ว (I60873)
  • เพิ่มตัวแก้ไขเวอร์ชันทดลองเพื่อจัดการคำขอเปลี่ยนสถานที่ (I65a97, b/178211874)
  • เปิดตัว BrushPainter API เพื่อรองรับการวาด Brush ที่กำหนดเองภายใน Painter ซึ่งคล้ายกับ ColorPainter

    อัปเดต Brush API ให้มีพารามิเตอร์ขนาดโดยธรรมชาติ ที่ค้นหาภายใน BrushPainter (Ia2752, b/189466433)

  • อัปเดตเมธอด DrawScope#drawImage ที่ ใช้สี่เหลี่ยมผืนผ้าต้นทางและปลายทาง เพื่อใช้พารามิเตอร์ FilterQuality ที่ไม่บังคับ ซึ่งมีประโยชน์สำหรับพิกเซล อาร์ตที่ต้องการให้เป็นพิกเซล เมื่อขยายขนาดสำหรับอาร์ตตามพิกเซล อัปเดต BitmapPainter + Image composable ให้ใช้พารามิเตอร์ FilterQuality ที่ไม่บังคับด้วย (Ie4fb0, b/180311607)

  • เพิ่มเมธอด GestureScope.advanceEventTime เพื่อให้ควบคุมช่วงเวลาของเหตุการณ์ในท่าทางสัมผัสได้มากขึ้น (Ibf3e2)

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

  • โปรดตรวจสอบว่าการติดตั้งใช้งาน Modifier.paint เรียกใช้ drawsContent เพื่อให้รองรับการเชื่อมต่อตัวแก้ไขการวาดได้ดียิ่งขึ้น ก่อนหน้านี้ Modifier.paint คาดว่าจะเป็นโหนดใบใน ห่วงโซ่ของตัวแก้ไข แต่การทำเช่นนั้นจะป้องกันไม่ให้ กำหนดค่าในคอนเทนเนอร์ที่ประกอบได้ (เช่น กล่อง) หรือเพิ่มการตกแต่งเพิ่มเติมด้านบน เช่น Modifier.paint().border() การเรียกใช้ Modifier.paint drawContent หลังจากวาดเนื้อหาของ painter ที่ระบุจะช่วยให้เรามีความสอดคล้องด้านพฤติกรรมที่ดีขึ้นในพฤติกรรม ที่มีรูปแบบตัวแก้ไข (Ibb2a7, b/178201337, b/186213275)
  • ตอนนี้กล่องโต้ตอบจะทําตามลักษณะการปรับขนาดของแพลตฟอร์มแล้ว ตั้งค่า usePlatformDefaultWidth เป็น false เพื่อลบล้างลักษณะการทำงานนี้ (Iffaed, b/192682388)
  • ย้าย InfiniteAnimationPolicy ไปยัง :compose:ui (I5eb09, b/160602714)
  • ตอนนี้การเลื่อนผ่านการดำเนินการทางความหมายสำหรับรายการที่โหลดแบบ Lazy และคอมโพเนนต์การเลื่อนปกติจะมีการเคลื่อนไหวแล้ว (Id9066, b/190742024)

รุ่น 1.0

เวอร์ชัน 1.0.5

3 พฤศจิกายน 2021

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

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

  • แก้ไขข้อขัดข้องในการติดตามอินสแตนซ์ derivedStateOf (aosp/1792247)

เวอร์ชัน 1.0.4

13 ตุลาคม 2021

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

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

  • อัปเดตให้ขึ้นอยู่กับ Kotlin 1.5.31

เวอร์ชัน 1.0.3

29 กันยายน 2021

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

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

  • อัปเดตให้ขึ้นอยู่กับ Kotlin 1.5.30

เวอร์ชัน 1.0.2

1 กันยายน 2021

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

อัปเดตเพื่อรองรับการเปิดตัว Compose 1.0.2 Compose 1.0.2 ยังคงใช้ได้กับ Kotlin 1.5.21

เวอร์ชัน 1.0.1

4 สิงหาคม 2021

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

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

  • อัปเดตให้ขึ้นอยู่กับ Kotlin 1.5.21

เวอร์ชัน 1.0.0

28 กรกฎาคม 2021

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

ฟีเจอร์หลักของเวอร์ชัน 1.0.0

นี่คือ Compose เวอร์ชันเสถียรเวอร์ชันแรก โปรดดูรายละเอียดเพิ่มเติมในบล็อกการเปิดตัว Compose อย่างเป็นทางการ

ปัญหาที่ทราบ

  • หากคุณใช้ Android Studio Bumblebee Canary 4 หรือ AGP 7.1.0-alpha04/7.1.0-alpha05 คุณอาจพบข้อขัดข้องต่อไปนี้

      java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
    

    หากต้องการแก้ไข ให้เพิ่ม minSdkVersion เป็น 24 ขึ้นไปชั่วคราวในไฟล์ build.gradle ปัญหานี้จะได้รับการแก้ไขใน Android Studio Bumblebee และ AGP 7.1 เวอร์ชันถัดไป (b/194289155)

เวอร์ชัน 1.0.0-rc02

14 กรกฎาคม 2021

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

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

  • ตอนนี้กล่องโต้ตอบจะทําตามลักษณะการปรับขนาดของแพลตฟอร์มแล้ว ตั้งค่า usePlatformDefaultWidth เป็น false เพื่อลบล้างลักษณะการทำงานนี้ (Iffaed, b/192682388)

เวอร์ชัน 1.0.0-rc01

1 กรกฎาคม 2021

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

ฟีเจอร์ใหม่

  • แยกโมดูล ui-tooling ออกเป็น ui-tooling และ ui-tooling-preview (Iefa28, b/190649014)

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

  • นำฟีเจอร์ทดลอง FocusManager#moveFocusIn และ FocusManager#moveFocusOut ที่เลิกใช้งานแล้วออก (I227d7, b/170154986, b/186567354, b/168510304)
  • ตอนนี้ Canvas รองรับพารามิเตอร์ contentDescription เพื่อ การช่วยเหลือพิเศษแล้ว (Ib547c)
  • เราได้เปลี่ยนชื่อ useDefaultMaxWidth ใน PopupProperties เป็น usePlatformDefaultWidth แล้ว (I05710)
  • ตอนนี้กล่องโต้ตอบใช้ความกว้างของทั้งหน้าจอได้แล้ว (I83929, b/190810877)
  • เพิ่มการรองรับการแสดงสี HSV และ HSL ในเวอร์ชันทดลอง (Id7cf8, b/180731008)

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

  • ตอนนี้ Compose @Preview มี LocalActivityResultRegistryOwnerที่ช่วยให้คุณ แสดงตัวอย่าง Composable ที่ใช้ API เช่น rememberLauncherForActivityResult() ซึ่งขึ้นอยู่กับ การมีอยู่ของเจ้าของนั้น (Ib13d1, b/185693006)
  • ตอนนี้ Compose @Preview มี LocalOnBackPressedDispatcherOwner ที่ช่วยให้คุณ แสดงตัวอย่าง Composables ที่ใช้ API เช่น BackHandler ซึ่งขึ้นอยู่กับเจ้าของที่มีอยู่ได้ (Ia1c05, b/185693006)

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

  • ย้าย InfiniteAnimationPolicy ไปยัง androidx.compose.ui:ui (I5eb09, b/160602714) แล้ว
  • เราได้นำ AnimatedImageVector ออกชั่วคราวเพื่อเปลี่ยนโครงสร้างโมดูล (I41906, b/160602714)

เวอร์ชัน 1.0.0-beta09

16 มิถุนายน 2021

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

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

  • เปลี่ยน enum Role และ LiveRegionMode เป็นคลาสอินไลน์ ที่มีตัวสร้างส่วนตัว (Id1890)
  • ระบบจะแปลง KeyboardCapitalization เป็นคลาสอินไลน์ (Id5a1c)
  • เปลี่ยน HapticFeedbackType เป็นคลาสแบบอินไลน์ (I255ec)
  • Modifier.pointerInteropFilter เป็น @ExperimentalComposeUiApi (Iede6c)
  • ตอนนี้ TextAlign, FontSynthesis และ TextDirection เป็นคลาสแบบอินไลน์แล้ว (I212fe)
  • เปลี่ยน TextOverflow เป็นคลาสอินไลน์ (I433af)
  • ตอนนี้ FontStyle เป็นคลาสแบบอินไลน์แล้ว (I9e48b)

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

  • ตอนนี้ค่าคงที่หลักคือ @ExperimentalComposeUiApi โค้ดที่ใช้สามารถประกาศค่าคงที่ส่วนตัวก่อนการทำให้เสถียรได้ (Ia5d48)
  • ตอนนี้คุณเรียกใช้การทดสอบ Compose ใน Robolectric ได้แล้ว ข้อจำกัดต่อไปนี้ ที่เราพบจนถึงตอนนี้มีดังนี้
    • ไม่มีบิตแมปดั้งเดิม ImageBitmap() จึงทำให้เกิด NullPointerException
    • ไม่มีการวาด ดังนั้น captureToImage() จะรอการส่งผ่านการวาดครั้งถัดไปอย่างไม่มีกำหนด (กล่าวคือเกิดการหยุดชะงัก)
    • ไม่มีการโหลดแบบอักษร ดังนั้นระบบจะวัดข้อความอย่างไม่ถูกต้อง อักขระทั้งหมด มีความสูงคงที่ประมาณ 20 พิกเซลและความกว้าง 1 พิกเซล
    • ComposeTestRule.waitUntil {} จะไม่เรียกใช้ชุดข้อความหลักขณะรอ ซึ่งทำให้มีประสิทธิภาพเหมือนกับ ComposeTestRule.mainClock.advanceTimeUntil {} คาดว่าจะพบข้อจำกัดเพิ่มเติมในอนาคต (I284fa)

เพิ่มกฎโปรไฟล์

รุ่นนี้เพิ่มกฎของโปรไฟล์ลงในโมดูลการเขียนต่อไปนี้ (I14ed6)

  • androidx.compose.animation
  • androidx.compose.animation-core
  • androidx.compose.foundation
  • androidx.compose.foundation-layout
  • androidx.compose.material
  • androidx.compose.material-ripple
  • androidx.compose.runtime
  • androidx.compose.ui
  • androidx.compose.ui.geometry
  • androidx.compose.ui.graphics
  • androidx.compose.ui.text
  • androidx.compose.ui.text
  • androidx.compose.ui.unit
  • androidx.compose.ui.util

กฎโปรไฟล์คืออะไร

  • กฎของโปรไฟล์สำหรับไลบรารีจะระบุไว้ในไฟล์ข้อความ baseline-prof.txt ซึ่งอยู่ใน src/main หรือไดเรกทอรีที่เทียบเท่า ไฟล์จะระบุกฎต่อบรรทัด โดยในกรณีนี้กฎคือรูปแบบสำหรับการจับคู่กับเมธอดหรือคลาสในไลบรารี ไวยากรณ์ของกฎเหล่านี้เป็นซูเปอร์เซ็ตของรูปแบบโปรไฟล์ ART ที่มนุษย์อ่านได้ ซึ่งใช้เมื่อใช้ adb shell profman --dump-classes-and-methods ... กฎเหล่านี้มี 2 รูปแบบเพื่อกำหนดเป้าหมายไปยังเมธอดหรือคลาส

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

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

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

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

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

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

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

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

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

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

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

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

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

เวอร์ชัน 1.0.0-beta08

2 มิถุนายน 2021

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

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

  • ระบบจะแทนที่ NestedScrollSource enum ด้วยคลาสแบบอินไลน์ (Ie321b, b/187055290)
  • เปลี่ยนชื่อ FocusManager.clearFocus(forcedClear = true) เป็น FocusManager.clearFocus(force = true) (Ia0c41)
  • ปรับโครงสร้างการใช้งาน enum เป็นคลาสแบบอินไลน์เพื่อหลีกเลี่ยง ปัญหาเกี่ยวกับคำสั่ง when ที่ครอบคลุมเมื่อ มีการเพิ่มค่า enum ใหม่ (I2b5eb)
  • นำ @ExperimentalComposeUiApi ออกจาก PopupProperties (I01fa6)
  • เปลี่ยน PointerType จาก Enum เป็นคลาสแบบอินไลน์ (If5058)
  • พร็อพเพอร์ตี้ ContentDescription และ Text semantics จะไม่ใช่ค่าเดียวอีกต่อไป แต่จะเป็นรายการ ซึ่งจะช่วยให้ผสานรวมได้โดยไม่ต้องต่อกัน นอกจากนี้ ยังมี API การทดสอบที่ดีขึ้นเพื่อใช้ประโยชน์จากการเปลี่ยนแปลงเหล่านี้ (Ica6bf, b/184825850)
  • Modifier.focusModifier() เลิกใช้งานแล้วและแทนที่ด้วย Modifier.focusTarget() (I6c860)
  • Modifier.onSizeChanged() และ Modifier.onGloballyPositioned() ไม่ใช่ฟังก์ชันแบบอินไลน์อีกต่อไป (I727f6, b/186109675)
  • ระบบจะแทนที่ KeyboardType enum ด้วยคลาสแบบอินไลน์ (I73045, b/187055290)
  • แทนที่ Enum FocusState ด้วยอินเทอร์เฟซ FocusState (Iccc1a, b/187055290)
  • ระบบจะแทนที่ enum ImeAction ด้วยคลาสอินไลน์ (I18be5, b/187055290)
  • PlaceholderVerticalAlign จะได้รับการแปลงเป็นคลาสแบบอินไลน์ (If6290)
  • ตอนนี้ TextUnitType เป็นคลาสแบบอินไลน์แล้ว (I4cba9)
  • AnnotatedString.withAnnotation ตอนนี้ฟังก์ชันต่างๆ อยู่ใน ExperimentalTextApi แทนที่จะเป็น ExperimentalComposeApi (I0cd0a)
    • ตอนนี้ตัวสร้าง TextUnit ที่มี TextUnitType จะเป็น ExperimentalTextApi แทนที่จะเป็น ExperimentalComposeApi

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

  • แก้ไขข้อบกพร่องที่เกิดขึ้นในเบต้า 07 ซึ่งรายการ LazyColumn/Row แสดงบางส่วนหลังจากเลื่อน (I8c9ac, b/188566058)
  • ตอนนี้ detectDragGesures, detectVerticalGestures และ detectHorizontalGestures จะใช้การเปลี่ยนแปลงตำแหน่งโดยอัตโนมัติ คุณจึงไม่จำเป็นต้องเรียกใช้ change.consumePositionChange ในการเรียกกลับ onDrag (I42fc4, b/185096350, b/187320697)
  • แก้ไข LayoutModifiers ที่แสดงเส้นแนว แก้ไขข้อบกพร่องที่ทำให้ระบบไม่วัดผู้ปกครองซ้ำเมื่อมีการเปลี่ยนแปลงเส้นแนวของบุตรหลาน (I4401f, b/174315652)
  • Modifier.onGloballyPositioned() มีการเปลี่ยนแปลงเพื่อรายงานพิกัดของตัวแก้ไขนี้ในเชนตัวแก้ไข ไม่ใช่พิกัดเลย์เอาต์หลังจากใช้ตัวแก้ไขทั้งหมด ซึ่งหมายความว่าตอนนี้ลำดับของตัวแก้ไขจะส่งผลต่อพิกัดที่จะรายงาน (Ieb67d, b/177926591)

เวอร์ชัน 1.0.0-beta07

18 พฤษภาคม 2021

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

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

  • เพิ่มอินเทอร์เฟซ ViewRootForInspector สำหรับใช้ในเครื่องมือตรวจสอบ (Ib70df)
  • SubcomposeLayoutState รองรับการตั้งค่าจำนวนช่องที่ใช้ซ้ำได้แล้ว เลย์เอาต์จะเก็บช่องโฆษณาไว้ตามจำนวนนี้แทนที่จะทิ้ง เพื่อให้ใช้ช่องโฆษณานั้นซ้ำได้ในครั้งต่อไปที่เราต้องการช่องโฆษณาใหม่ (Ieb981)
  • ระบบจะแทนที่ enum KeyEventType ด้วยคลาสแบบอินไลน์ (Id670a, b/187055290)
  • ระบบจะแทนที่ FocusDirection enum ด้วยคลาสแบบอินไลน์ (Ib6d03, b/187055290, b/184086802)
  • เพิ่มความสามารถในการยกสถานะ SubcomposeLayout ซึ่งช่วยให้คุณสามารถคอมโพสเนื้อหาล่วงหน้าลงใน slotId ที่จำเป็น ซึ่งจะทำให้การวัดผลครั้งถัดไปเร็วขึ้น เนื่องจากเมื่อเราพยายามคอมโพสย่อยด้วย slotId ที่ระบุในครั้งถัดไป ก็จะไม่จำเป็นต้องคอมโพสอีก (I42580, b/184940225)
  • เพิ่มแฮนเดิลการเลือกคลิป (Iff80d, b/183408447)
  • นำ API ที่ไม่ได้ใช้ซึ่งเกี่ยวข้องกับการรองรับ LayoutInspector ออก (I2ac78)

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

  • ตอนนี้ LazyColumn/Row จะเก็บรายการที่มองเห็นก่อนหน้านี้สูงสุด 2 รายการให้ใช้งานได้ (ไม่ทิ้ง) แม้ว่าจะเลื่อนออกไปแล้วก็ตาม ซึ่งช่วยให้คอมโพเนนต์นำองค์ประกอบย่อยที่ใช้งานอยู่กลับมาใช้ซ้ำได้เมื่อเราต้องสร้างรายการใหม่ ซึ่งจะช่วยปรับปรุงประสิทธิภาพการเลื่อน (Ie5555)
  • ระบบจะใช้TextGeomerticTransformและTextDecorationในAnnotatedString ตามที่ระบุ (I61900, b/184760917)

เวอร์ชัน 1.0.0-beta06

5 พฤษภาคม 2021

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

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

  • แก้ไขความขัดแย้งด้วยท่าทางการนำทาง (I1145e)
  • @ComposeCompilerApi ไม่@RequiresOptIn อีกต่อไป (Iab690)
  • เพิ่ม API การช่วยเหลือพิเศษ CollectionInfo และ CollectionItemInfo ที่อนุญาตให้ทำเครื่องหมายคอลเล็กชันและรายการของคอลเล็กชันสำหรับบริการการช่วยเหลือพิเศษ (Id54ef, b/180479017)
  • เพิ่ม SemanticsActions.ScrollToIndex เพื่อเลื่อนรายการที่มี รายการที่จัดทำดัชนีไปยังรายการที่มีดัชนีที่เฉพาะเจาะจง และ SemanticsProperties.IndexForKey เพื่อรับดัชนีของรายการในรายการ ที่มีรายการที่ใช้คีย์ ทั้ง 2 การดำเนินการนี้จะดำเนินการโดย LazyList
    • เพิ่ม SemanticsNodeInteraction.performScrollToIndex ที่เลื่อนรายการไปยังดัชนีที่ระบุ และ SemanticsNodeInteraction.performScrollToKey ที่เลื่อนรายการไปยังรายการที่มีคีย์ที่ระบุ (I4fe63, b/178483889, b/161584524)
  • เพิ่ม ownerViewId ไปยัง GraphicLayerInfo (I19f62)
  • เพิ่มการโอเวอร์โหลด Font() เพื่อโหลดแบบอักษร จากเนื้อหา ไฟล์ และ FileDescriptor (I5d382)
  • เพิ่ม API การช่วยเหลือพิเศษ error ที่อนุญาตให้ทำเครื่องหมายโหนดที่มีข้อมูลที่ไม่ถูกต้อง (I12997, b/180584804, b/182142737)
  • เพิ่มการโอเวอร์โหลด Font() เพื่อโหลดแบบอักษร จากเนื้อหา, File และ FileDescriptor (I43007)
  • รองรับการบันทึก AnnotatedString ไปยัง TextFieldValue.Saver เพิ่มฟังก์ชันยูทิลิตี addTtsAnnotation และ withAnnotation ลงใน AnnotatedString.Builder (I8cbdc, b/178446304)
  • เพิ่มฟังก์ชันตัวสร้าง TextUnit TextUnit(value: Float, type: TextUnitType) (I7ecce, b/178446304)

เวอร์ชัน 1.0.0-beta05

21 เมษายน 2021

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

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

  • เพิ่ม FocusManager.moveFocus(In) และ FocusManager.moveFocus(Out) เวอร์ชันทดลอง (Ic5534, b/183746743)
  • เพิ่ม performTextInputSelection API (I2dcbb, b/178510628) เวอร์ชันทดลอง
  • อินเทอร์เฟซ InputEventCallback เลิกใช้งานแล้ว ไม่สามารถใช้อินเทอร์เฟซใน API สาธารณะใดๆ และไม่มีการใช้งานในโค้ด (I34a02, b/184003208)
  • ฟังก์ชัน TextLayoutResult/createTextLayoutResult ที่เลิกใช้งานแล้ว เป็นฟังก์ชันสาธารณะที่ไม่ได้ใช้ซึ่งเพิ่มเข้ามา เพื่อการทดสอบ ฟังก์ชันนี้ไม่ได้ทำอะไรที่ใช้ได้กับ Compose text APIs ตอนนี้เราเลิกใช้งานฟังก์ชันนี้แล้วและจะ นำออกในภายหลัง (I80413)

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

  • แก้ไขการดำเนินการเลื่อนการช่วยเหลือพิเศษ ACTION_SCROLL_FORWARD, ACTION_SCROLL_BACKWARD, accessibilityActionScrollLeft, accessibilityActionScrollUp, accessibilityActionScrollRight และ accessibilityActionScrollDown แทนที่จะเลื่อนไปจนสุดของ เลื่อนได้ ตอนนี้จะเลื่อนทีละหน้าจอในทิศทางที่กำหนด (Ieccb0)
  • ตอนนี้ไฟล์ AndroidManifest จาก ui-test-manifest และ ui-tooling-data เข้ากันได้กับ Android 12 แล้ว (I6f9de, b/184718994)

เวอร์ชัน 1.0.0-beta04

7 เมษายน 2021

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

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

  • เปลี่ยนชื่อ hideSoftwareKeyboard และ showSoftwareKeyboard ใน SoftwareKeyboardController เป็น hide() และ show() ตามลำดับ
    • ระบุอินเทอร์เฟซ CompositionLocal แบบเต็มสำหรับ LocalSoftwareKeyboardController เพื่อให้ตั้งค่าได้ (มีประโยชน์อย่างยิ่งในการทดสอบ) (I579a6)
  • เพิ่ม API การช่วยเหลือพิเศษ LiveRegion หากมีการทำเครื่องหมายโหนดเป็นภูมิภาคที่มีการเผยแพร่ บริการการช่วยเหลือพิเศษ จะแจ้งให้ผู้ใช้ทราบเกี่ยวกับการเปลี่ยนแปลงโดยอัตโนมัติ (Idcf6f, b/172590946)
  • เปิดตัว TextOverflow.Visible (Ic8f89)

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

  • แก้ไขปัญหาเมื่อวางตำแหน่งไอเทมของ LazyColumn/LazyRow ที่อยู่บริเวณขอบไม่ถูกต้องหลังจากปัดอย่างรวดเร็ว (Ie4d13, b/183877420)
  • ตอนนี้ AndroidViewBinding จะนำ Fragment ที่ขยายผ่าน FragmentContainerView ออกอย่างถูกต้องเมื่อ นำ AndroidViewBinding ออกจากลำดับชั้นของ Compose (Ib0248, b/179915946)
  • AndroidViewBinding จะซ้อนFragmentContainerViewที่ขยายผ่าน FragmentContainerView ได้อย่างถูกต้องเมื่อComposeView อยู่ภายใน Fragment ซึ่งจะช่วยแก้ไขปัญหาเกี่ยวกับการบันทึกและกู้คืนสถานะของ Fragment เหล่านั้น (I70eb0, b/179915946)
  • ตอนนี้ Compose ViewBinding ขึ้นอยู่กับ Fragment 1.3.2 และตอนนี้จะแสดง Fragment ที่ขยายผ่าน FragmentContainerView อย่างสม่ำเสมอหลังจากการเปลี่ยนแปลงการกำหนดค่า (I0743d, b/179915946)

เวอร์ชัน 1.0.0-beta03

24 มีนาคม 2021

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

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

  • เลื่อนการตรวจสอบการอ้างอิง ViewTree ของ ComposeView (I8dbbf, b/182466548)
  • เพิ่มพารามิเตอร์ startX/endX และ startY/endY ที่ไม่บังคับ ลงในฟังก์ชัน swipeUp/swipeDown/swipeLeft/swipeRight ใน GestureScope (I49e2d, b/182063305)

เวอร์ชัน 1.0.0-beta02

10 มีนาคม 2021

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

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

  • เพิ่ม LocalSoftwareKeyboardControllerAPI การเขียนในเครื่อง ใหม่เพื่อแทนที่อินเทอร์เฟซ SoftwareKeyboardController ก่อนหน้าใน TextField (I5951e, b/168778053)
  • เพิ่ม LocalSoftwareKeyboardControllerAPI การเขียนในเครื่อง ใหม่เพื่อแทนที่อินเทอร์เฟซ SoftwareKeyboardController ก่อนหน้าใน TextField (I84472, b/168778053)
  • เราได้นำ SemanticsMatcher ต่อไปนี้ออกแล้ว
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance) (If16bd)
  • ทำเครื่องหมาย SemanticsMatchers ต่อไปนี้เป็น @ExperimentalTestApi:
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance) (Ia600c)
  • เพิ่มSemanticsMatcherต่อไปนี้
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance) (I2f502)

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

  • บังคับใช้ข้อจำกัดในการใช้งาน API เวอร์ชันทดลองแบบสาธารณะ (I6aa29, b/174531520)
  • androidx.compose.ui:ui ไม่ได้ขึ้นอยู่กับ AppCompat หรือ Fragment อีกต่อไป หากคุณใช้ ComposeView ในแอปพลิเคชัน และใช้ Fragment และ/หรือ AppCompat โปรดตรวจสอบว่าคุณใช้ AppCompat 1.3 ขึ้นไป / Fragment 1.3 ขึ้นไป เนื่องจากต้องใช้เวอร์ชันเหล่านี้เพื่อตั้งค่าวงจรและเจ้าของสถานะที่บันทึกไว้อย่างถูกต้อง ซึ่งจำเป็นสำหรับ ComposeView (I1d6fa, b/161814404)
  • แก้ไข rememberSaveable { mutableStateOf(0) } ที่ใช้งานไม่ได้เมื่อใช้ภายในปลายทางของ Navigation Compose (I1312b, b/180042685, b/180701630)
  • เพิ่ม LocalSoftwareKeyboardControllerAPI การเขียนในเครื่อง ใหม่เพื่อแทนที่อินเทอร์เฟซ SoftwareKeyboardController ก่อนหน้าใน TextField (I658b6, b/168778053)
  • แก้ไข NoSuchElementException ที่พบได้ยากใน ComposeRootRegistry tearDownRegistry() (Iddce1)

เวอร์ชัน 1.0.0-beta01

24 กุมภาพันธ์ 2021

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

นี่คือรุ่นแรกของ Compose 1.0.0 เบต้า

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

  • เพิ่ม Callback onStart ไปยัง detectDragGestures แล้ว (I67269, b/179995594)
  • ตัวแก้ไขสำหรับการปรับขนาดให้ตรงกับขนาดที่แท้จริงไม่ได้อยู่ในขั้นทดลองอีกต่อไป (I15744)
  • เราเปลี่ยนชื่อ MeasureBlocks เป็น MeasurePolicy ซึ่งกลายเป็นอินเทอร์เฟซที่สนุกสนาน เราได้อัปเดต / ลดความซับซ้อนของ Layout API เพื่อให้ใช้ MeasurePolicy ได้ (Icab48, b/167662468, b/156751158)
  • InteractionState ถูกแทนที่ด้วย [Mutable]InteractionSource แล้ว
    • อินเทอร์เฟซมีหน้าที่ในการปล่อย / รวบรวมเหตุการณ์การโต้ตอบ
    • ใช้ interactionSource = remember { MutableInteractionSource() } แทนการส่ง interactionState = remember { InteractionState() } ไปยังคอมโพเนนต์ เช่น Button และ Modifier.clickable()
    • แทนที่จะเป็น: Interaction.Pressed in interactionState คุณควรใช้ฟังก์ชันส่วนขยายใน InteractionSource แทน เช่น InteractionSource.collectIsPressedAsState()
    • สำหรับกรณีการใช้งานที่ซับซ้อน คุณสามารถใช้ InteractionSource.interactions เพื่อสังเกตสตรีมของการโต้ตอบได้ ดูข้อมูลเพิ่มเติมได้ในเอกสารประกอบและตัวอย่าง InteractionSource
    • (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
  • เพิ่มอินเทอร์เฟซ AccessibilityMananger และ LocalAccessibilityMananger ใน CompositionLocals (I53520)
  • นำเมธอด LayoutCoordinates ที่เลิกใช้งานแล้วออก ให้ใช้ฟังก์ชันแทนพร็อพเพอร์ตี้สำหรับ positionInParent และ boundsInParent (I580ed, b/169874631, b/175142755)
  • แทนที่นามแฝงประเภทด้วยประเภทพื้นฐาน
    • ColorStop เปลี่ยนชื่อเป็น Pair<Float, Color> แล้ว
    • SpanStyleRange เปลี่ยนชื่อเป็น `AnnotatedString.Range แล้ว
    • ParagraphStyleRange เปลี่ยนชื่อเป็น AnnotatedString.Range<ParagraphStyle> แล้ว
    • StringAnnotation เปลี่ยนชื่อเป็น AnnotatedString.Range<String> แล้ว
    • (I8dd1a)
  • สร้าง TextInputSession ใหม่สำหรับเซสชันอินพุตจากคอมโพเนนต์ข้อความระดับต่ำ เช่น CoreTextField (I8817f, b/177662148)
  • ตอนนี้ Placeable จะแสดง measuredSize ซึ่งแสดงถึงขนาดที่เลย์เอาต์ย่อยวัดจริง ขนาดนี้อาจไม่เป็นไปตามข้อจำกัดในการวัด (Ib2729, b/172560206, b/172338608)
  • เพิ่มตัวแก้ไข selectionGroup ที่อนุญาตให้ทำเครื่องหมายคอลเล็กชันของแท็บหรือ RadioButton เพื่อวัตถุประสงค์ในการช่วยเหลือพิเศษ (Ie5c29)
  • ตอนนี้คุณต้องระบุ defaultFactory สำหรับ compositionLocalOf และ staticCompositionLocalOf แทนที่จะระบุหรือไม่ก็ได้

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

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

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

  • นำเมธอดที่เลิกใช้งานแล้วออกจากโมดูล UI ออกแล้ว (I646f6)

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

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

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

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

  • ตอนนี้ imageResource และ vectorResource เป็นฟังก์ชันส่วนขยาย ใน ImageBitmap และ ImageVector ตามลำดับ ระบบได้ลบฟังก์ชัน load{Image,Vector,Font}Resource ไปแล้ว (I89130)

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

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

    • ตัวสร้างองค์ประกอบไม่รับพารามิเตอร์คีย์อีกต่อไปและเลิกใช้งานแล้ว
    • currentCompositeKeyHash ได้รับการเปลี่ยนให้เป็นพร็อพเพอร์ตี้ระดับบนสุดที่ประกอบกันได้แทนที่จะเป็นฟังก์ชันระดับบนสุดที่ประกอบกันได้
    • ย้าย CompositionData และ CompositionGroup ไปยังเนมสเปซ androidx.compose.runtime.tooling แล้ว
    • เราได้เปลี่ยน ComposableLambda ให้เป็นอินเทอร์เฟซแทนที่จะเป็นคลาสที่เฉพาะเจาะจง และไม่มีพารามิเตอร์ประเภทอีกต่อไป
    • เราได้เปลี่ยน ComposableLambdaN ให้เป็นอินเทอร์เฟซแทนที่จะเป็นคลาสที่เฉพาะเจาะจง และไม่มีพารามิเตอร์ประเภทอีกต่อไป
    • ฟังก์ชัน snapshotFlow ย้ายไปที่เนมสเปซ androidx.compose.runtime แล้ว
    • วิธีการผสานของ SnapshotMutationPolicy ไม่ใช่เวอร์ชันทดลองอีกต่อไป
    • ระบบได้นำฟังก์ชัน clearRoots ระดับบนสุด @TestOnly ออกแล้ว ไม่จำเป็นต้องทำอีกต่อไป
    • ระบบได้นำฟังก์ชัน keySourceInfoOf และ resetSourceInfo ออกแล้ว จึงไม่จำเป็นต้องใช้แล้ว
    • มีการนำ Composer.collectKeySourceInformation ออกแล้ว ไม่จำเป็นต้องทำอีกต่อไป
    • นำเมธอด isJoinedKey, joinedKeyLeft และ joinedKeyRight ออกแล้ว จึงไม่จำเป็นต้องใช้แล้ว
    • เราได้ย้ายและจัดระเบียบ API ระดับบนสุดต่างๆ ไปยังไฟล์อื่น เนื่องจากความหมายของคลาสไฟล์ของ Kotlin การดำเนินการนี้จะทำให้ความเข้ากันได้แบบไบนารีใช้งานไม่ได้ แต่ความเข้ากันได้ของแหล่งที่มาจะยังคงใช้งานได้ ดังนั้นผู้ใช้ส่วนใหญ่จึงไม่น่าจะพบปัญหา
    • (I99b7d, b/177245490)
  • เรานำ ComponentActivity.setContent() ออกจาก Compose:UI แล้ว ใช้รหัสจาก androidx.activity:activity-compose:1.3.0-alpha01 ระบบนำ viewModel() และ LocalViewModelStoreOwner ออกจาก Compose:UI แล้ว ใช้รหัสจาก androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 (I6f36b)

  • เราได้ปรับปรุง Modifier.scrollable ใหม่ ตอนนี้ใช้ Scrollable interface แทนคลาส ScrollableController (I4f5a5, b/174485541, b/175294473)

  • นำการรองรับ CustomEvens จาก PointerInputModifier ออกแล้ว (I02707, b/175294473)

  • SnapshotStateObserver ไม่ใช่เวอร์ชันทดลองอีกต่อไป (Id2e6a)

  • ลบ API ที่เลิกใช้งานไปก่อนหน้านี้บางรายการ (Ice5da, b/178633932)

  • เราได้นำ longPressGestureFilter และ doubleClickGestureFilter ออกแล้ว ให้ใช้ Modifier.pointerInput กับฟังก์ชันช่วย เช่น detectTapGestures (I2fedf, b/175294473)

  • นำ String.format API ออก ปรับโครงสร้างการใช้งานในเมธอด toString ต่างๆ เพื่อไม่ให้ใช้ String.format ภายใน (Id1290)

  • นำการยืนยัน dp ออก (I798d2)

  • นำ androidx.compose.runtime:runtime-dispatch ออก (I55feb)

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

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

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

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

  • เพิ่มฟังก์ชันตัวช่วยที่เป็นประโยชน์ในการ ตั้งค่าการดำเนินการเดียวกันสําหรับการเรียกกลับ ImeAction ทั้งหมด (I63447, b/179226323)

  • นำการเรียกกลับ SoftwareKeyboardController ออกจากฟิลด์ข้อความทั้งหมด เพื่อแทนที่ด้วย API ใหม่ในเร็วๆ นี้ (Iae869, b/168778053)

  • ระบบจะไม่ใช้ FontSpan และ FontWeigthStyleSpan อีกต่อไปและจะนำออก (Ie5b56, b/177423444)

  • ทำการเปลี่ยนแปลง Material API ดังนี้

    • เพิ่มพารามิเตอร์ contentPadding ลงใน Top/BottomAppBar เพื่อให้ปรับแต่งระยะเว้นเริ่มต้นได้
    • จัดเรียงพารามิเตอร์ใหม่ใน BackdropScaffold เพื่อให้เป็นไปตามหลักเกณฑ์ของ API สำหรับพารามิเตอร์ที่จำเป็นซึ่งอยู่ก่อนพารามิเตอร์ที่ไม่บังคับ
    • ย้ายพารามิเตอร์ icon ใน BottomNavigationItem ไปไว้หลัง selected และ onClick
    • เปลี่ยนชื่อพารามิเตอร์ alwaysShowLabels ใน BottomNavigationItem เป็น alwaysShowLabel
    • เปลี่ยนชื่อพารามิเตอร์ bodyContent ในคอมโพเนนต์บางรายการเป็น content
    • พารามิเตอร์ที่จัดเรียงใหม่ใน ButtonDefaults.buttonColors() โปรดทราบว่าเนื่องจากประเภทของพารามิเตอร์ไม่ได้เปลี่ยนแปลง การดำเนินการนี้จึงไม่ทำให้เกิดข้อผิดพลาดในโค้ด โปรดตรวจสอบว่าคุณใช้พารามิเตอร์ที่มีชื่อหรืออัปเดตลำดับด้วยตนเอง มิฉะนั้นโค้ดจะทำงานไม่เหมือนเดิม
    • เพิ่มพารามิเตอร์ secondaryVariant ไปยัง darkColors() แล้ว โดยปกติแล้วสีนี้จะเหมือนกับ secondary ในธีมมืด แต่เราได้เพิ่มสีนี้เพื่อให้มีความสอดคล้องกันและปรับแต่งเพิ่มเติมได้
    • นำ ElevationDefaults และ animateElevation() ออกจาก API สาธารณะเนื่องจากไม่ได้ใช้กันทั่วไป / ไม่มีประโยชน์
    • เปลี่ยนชื่อ onValueChangeEnd ใน Slider เป็น onValueChangeFinished และทำให้เป็นค่าว่างได้
    • เปลี่ยนชื่อพารามิเตอร์ text ใน Snackbar เป็น content เพื่อให้สอดคล้องกัน
    • เพิ่มพารามิเตอร์ contentPadding ลงใน DropdownMenuItem เพื่ออนุญาตให้ปรับแต่งระยะเว้นเริ่มต้น และทำให้ content เป็นส่วนขยายใน RowScope
    • เปลี่ยนชื่อ ModalDrawerLayout เป็น ModalDrawer แล้ว
    • เปลี่ยนชื่อ BottomDrawerLayout เป็น BottomDrawer แล้ว
    • (I1cc66)

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

  • เพิ่ม API เพื่อใช้ทรัพยากร AnimatedVectorDrawable ใน Compose ใช้ animatedVectorResource เพื่อโหลด <animated-vector> XML เป็น AnimatedImageVector และเคลื่อนไหว ด้วย painterFor (I8ea91)
  • เพิ่มองค์ประกอบ LocalSoftwareKeyboardController ใหม่ API เพื่อแทนที่อินเทอร์เฟซ SoftwareKeyboardController ก่อนหน้าใน TextField (I658b6, b/168778053)

เวอร์ชัน 1.0.0-alpha12

10 กุมภาพันธ์ 2021

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

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

  • นำการรองรับ ViewGroups ออกจาก UiApplier แล้ว นำ Composable ของ emitView ที่เลิกใช้งานแล้วออก (Ifb214)
  • ตอนนี้ Modifier.pointerInput ต้องใช้คีย์ remember เพื่อระบุ เมื่อควรเริ่มคอรเราทีนการตรวจหาอินพุตของเคอร์เซอร์ใหม่สำหรับ การอ้างอิงใหม่ (I849cd)
  • เปลี่ยนชื่อ CompositionReference เป็น CompositionContext (I53fcb)
  • เปลี่ยนชื่อ Bounds เป็น DpRect (I4b32a) แล้ว
  • การอัปเดตการทดสอบ: hasText() จะตรวจสอบทั้งข้อความอินพุตและข้อความป้ายกำกับ/คำแนะนำ/ตัวยึดตำแหน่งในช่องข้อความ (Iab803)
  • ย้าย Composable viewModel() และ LocalViewModelStoreOwner ไปยัง androidx.lifecycle.viewmodel.compose แล้ว ตอนนี้คุณจะต้องเพิ่มการอ้างอิง androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 แยกต่างหากเพื่อใช้งาน (I7a374)
  • อนุญาตให้ดำเนินการที่อาจเป็น Null ใน AccessibilityAction เปลี่ยนป้ายกำกับการดำเนินการ ใน AccessibilityAction และ CustomAccessibilityAction จาก CharSequence เป็น String (I0dc82)
  • เราได้เปลี่ยนชื่อ ImagePainter เป็น BitmapPainter เพื่อให้สอดคล้องกับ VectorPainter มากขึ้น และเพื่อให้การตั้งชื่อเป็นไปตาม รูปแบบการตั้งชื่อของ ImageBitmap และ ImageVector (Iba381, b/174565889)
  • API การทดสอบสตริงย่อยที่ดีขึ้นโดยมีสตริงย่อยเป็นอาร์กิวเมนต์ (Icbe78)
  • เพิ่ม Modifier.focusOrder() ที่ ยอมรับ FocusRequester โดยไม่ต้องระบุ ลำดับโฟกัสที่กำหนดเองเป็น Lambda ซึ่งจะมีประโยชน์ เมื่อเราต้องการระบุเฉพาะการอ้างอิง แต่ไม่ต้องการลำดับโฟกัสที่กำหนดเองสำหรับ Composable (I4f52a, b/179180978)
  • ComponentActivity.setContent ได้ย้ายไปอยู่ที่ androidx.activity.compose.setContent ในโมดูล androidx.activity:activity-compose แล้ว (Icf416)
  • เราได้นำเมธอด Destructuring และ copy() ออกจาก คลาสหลายคลาสซึ่งไม่ค่อยมีการใช้งาน (I26702, b/178659281)
  • ย้ายป๊อปอัปให้เป็นแพลตฟอร์มที่เฉพาะเจาะจง เราได้เปลี่ยนชื่อ AndroidPopupProperties เป็น PopupProperties และย้าย isFocusable ไปยังพารามิเตอร์ focusable ใน PopupProperties (Ieeea5)
  • ย้ายกล่องโต้ตอบให้เป็นแพลตฟอร์มที่เฉพาะเจาะจง เปลี่ยนชื่อ AndroidDialogProperties เป็น DialogProperties (I4ef69, b/179138130)
  • ทำให้ LayoutNode เป็นแบบภายใน (I8a7b1, b/175103944)
  • Constraints.enforce ถูกแทนที่ด้วย Constraints.constrain (I8b8ea)
  • เลิกใช้งาน loadFontResource แล้ว โปรดใช้ fontResource แทน เลิกใช้งาน imageResource, loadImageResource, vectorResource และ loadVectorResource แล้ว ใช้ painterResource แทน (I6b809)
  • ตอนนี้ความหมายของ ScrollAxisRange จะใช้ Lambda ที่แสดงผล Float แทนค่า Float โดยตรงเพื่อเหตุผลด้านประสิทธิภาพ (If4a35, b/178657186)
  • เพิ่มซีแมนทิก EditableText เพื่อทำเครื่องหมายข้อความอินพุตที่แก้ไขได้ของช่องข้อความเพื่อการช่วยเหลือพิเศษ และเพิ่มวิธีการทดสอบที่เกี่ยวข้องเพื่อตรวจสอบซีแมนทิก (I8e07a)
  • ทำให้ OwnerLayer/OwnerScope/OwnerSnapshotObserver เป็นแบบภายใน (I4ffaf, b/175103944)
  • เปลี่ยนชื่อ toIntPx() เป็น roundToPx() (I9b7e4, b/173502290)
  • เปลี่ยนชื่อ IntBounds เป็น IntRect และปรับปรุง API (I1f6ff)
  • เราได้อัปเดต Snapshot API ให้สอดคล้องกับ หลักเกณฑ์ของ API มากขึ้น รวมถึงซ่อนคลาสการติดตั้งใช้งานภายใน จาก API สาธารณะ (Id9e32)
  • เพิ่มการดำเนินการทางความหมายเพื่อขยายและยุบ เพิ่ม expand และ halfExpand ใน ModalBottomSheetState (Ib5064)
  • เลิกใช้งาน Modifier.dragGestureFilter แล้ว โปรดใช้ Modifier.pointerInput { detectDragGestures (...)} แทน หรือจะใช้ Modifier.draggable สำหรับการลากแกนเดียวก็ได้ (I0ba93, b/175294473)
  • เปลี่ยนชื่อ Ambients ให้ตรงกับการเปลี่ยนชื่อ Ambient -> CompositionLocal เดิมชื่อของ Ambients คือ AmbientFoo แต่ตอนนี้ชื่อของ CompositionLocals คือ LocalFoo (I2d55d)
  • ตอนนี้เราได้นำ BaseTextField ที่เลิกใช้งานแล้วออกแล้ว โปรดใช้ BasicTextField แทน (I71368)
  • ย้ายการเลือกไปยังมูลนิธิแล้ว (I7892b)
  • เช่นเดียวกับที่เราเคยนำ state { 0 } composable ออกไปก่อนหน้านี้และตอนนี้เราแนะนำให้ใช้ remember { mutableStateOf(0) } เราจะนำ savedInstanceState { 0 } composable ออก คุณควรใช้ rememberSaveable { mutableStateOf(0) } แทน และระบบจะบันทึกและกู้คืนโดยอัตโนมัติหากจัดเก็บประเภทที่ใช้ภายใน MutableState ไว้ใน Bundle ได้ หากก่อนหน้านี้คุณส่งออบเจ็กต์โปรแกรมประหยัดที่กำหนดเอง ตอนนี้คุณต้องใช้การโอเวอร์โหลดใหม่ของ rememberSaveable ซึ่งมีพารามิเตอร์ stateSaver การใช้งานจะมีลักษณะดังนี้ val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) } (Ib4c26, b/177338004)
  • เพิ่มความหมายของรหัสผ่านเพื่อการช่วยเหลือพิเศษ (I231ce)
  • เพิ่ม ProgressBarRangeInfo.Indeterminate เพื่อทำเครื่องหมายแถบความคืบหน้าที่ไม่แน่นอนเพื่อการช่วยเหลือพิเศษ (I6fe05)
  • เราได้เลิกใช้งานยูทิลิตี emptyContent() และ (@Composable () -> Unit).orEmpty() แล้ว เนื่องจากยูทิลิตีดังกล่าวไม่มีผลต่อประสิทธิภาพหรือคุณค่าในเชิงบวกอีกต่อไป (I0484d)
  • snapshotFlow และ withMutableSnapshot ไม่ใช่ฟีเจอร์ ทดลองอีกต่อไป (I6a45f)
  • ตอนนี้คุณปิด Recomposers ได้แล้ว Recomposer ที่ปิดอยู่จะ ทำการ Recomposition ต่อไปจนกว่าโคโรทีนของ Composable ลูกจะเสร็จสมบูรณ์ เปลี่ยนชื่อ Recomposer.shutDown เป็น cancel เพื่อให้แตกต่างจาก close (Ib6d76)
  • เราได้เปลี่ยนชื่อ UiSavedStateRegistry เป็น SaveableStateRegistry, AmbientUiSavedStateRegistry เป็น AmbientSaveableStateRegistry และย้ายทั้ง 2 รายการไปยังแพ็กเกจ androidx.compose.runtime.saveable (I30224)
  • เปลี่ยนชื่ออาร์ติแฟกต์ androidx:compose:runtime:runtime-saved-instance-state เป็น androidx:compose:runtime:runtime-saveable (I6dcac)
  • ระบบจะลบ API ที่เลิกใช้งานมานานหลายรายการในแพ็กเกจ ui (I2f2dc)
  • ตอนนี้เราเลิกใช้งานอาร์ติแฟกต์ compose:runtime-dispatch แล้ว ตอนนี้ MonotonicFrameClock อยู่ใน compose:runtime และ AndroidUiDispatcher อยู่ใน compose:ui (Ib5c36)
  • คลาส Outline.* ไม่ใช่คลาสข้อมูลอีกต่อไป (I4879e, b/178001427)
  • นำ view.captureToImage() ออกโดยไม่มีการแทนที่ (I7fcd2)
  • เปิดตัว ColorMatrix API ที่ใช้ เพื่อแก้ไขค่า RGB ของเนื้อหาต้นฉบับ ปรับโครงสร้าง ColorFilter API ให้เป็น อินเทอร์เฟซและตรงกับการใช้งาน ของ PathEffect (Ica1e8)
  • เพิ่มพารามิเตอร์ layoutDirection ลงใน createOutline ของ Shape ซึ่งช่วยให้สร้างรูปร่างที่รับรู้ทิศทางของเลย์เอาต์ได้ (I57c20, b/152756983)
  • เลิกใช้งาน onImeActionPerformed แล้ว ให้ใช้ KeyboardActions แทน (If0bbd, b/179071523)
  • เปิดตัวองค์ประกอบบริบทโครูทีน InfiniteAnimationPolicy ที่จะใช้ในภาพเคลื่อนไหวแบบไม่มีที่สิ้นสุด โดยค่าเริ่มต้น ระบบจะไม่ติดตั้งนโยบายใดๆ ยกเว้นเมื่อเรียกใช้การทดสอบด้วย ComposeTestRule (I50ec4, b/151940543)
  • นำ canDrag ออกจาก Modifier.scrollable แล้ว (Id66e7, b/175294473)
  • เปลี่ยนชื่อ LayoutCoordinates.parentCoordinates เป็น LayoutCoordinates.parentLayoutCoordinates เพื่อให้มีพร็อพเพอร์ตี้ parentCoordinates ใหม่ พร็อพเพอร์ตี้ parentCoordinates ตอนนี้มี LayoutCoordintes ของตัวแก้ไขระดับบนแล้ว ซึ่งจะช่วยให้มี Use Case ที่สมบูรณ์ยิ่งขึ้นสำหรับ onSizeChanged() และ onGloballyPositioned() (Idfbfd, b/177926591)
  • เลิกใช้งาน tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter และ pressIndicaitonGestureFilter แล้ว โปรดใช้ Modifier.clickable หรือ Modifier.pointerInput กับฟังก์ชัน detectTapGestures แทน (I6baf9, b/175294473)
  • นำ unregisterProvider ของ SaveableStateRegistry ออกแล้ว แต่ตอนนี้ registerProvider() จะแสดงออบเจ็กต์ SaveableStateRegistry.Entry ซึ่งคุณใช้เพื่อยกเลิกการลงทะเบียนได้ (Ic4274, b/178583739)
  • เราได้เปลี่ยนชื่อ rememberSavedInstanceState() เป็น rememberSaveable() และย้ายไปยังแพ็กเกจ androidx.compose.runtime.saveable (I1366e, b/177338004)
  • นำ CoreText และ CoreTextField ออกจาก API สาธารณะ
    • นำการโอเวอร์โหลด SelectionContainer ที่เลิกใช้งานแล้วออก
    • (I99c19)
  • การทดสอบที่ใช้ Compose ในลำดับชั้นที่ เพิ่ม/นำออกจาก WindowManager โดยตรงจะมีความเสถียรมากขึ้น (Ie81ed, b/175765614)
  • นำ Recomposer.current() ออกแล้ว [Abstract]ตอนนี้ ComposeView จะ ใช้ Recomposer ที่สร้างขึ้นแบบเลื่อนเวลาและมีขอบเขตระดับหน้าต่างโดยค่าเริ่มต้น ซึ่งขับเคลื่อนโดย ViewTreeLifecycleOwner สำหรับหน้าต่าง ระบบจะหยุดการสร้างใหม่และเครื่องหมายภาพเคลื่อนไหวตาม withFrameNanos ชั่วคราวขณะที่หยุดวงจรการทำงานของโฮสต์ (I38e11)
  • Recomposer.runningRecomposers ตอนนี้มี StateFlow ทั่วโลกของ RecomposerInfo แบบอ่านอย่างเดียวสำหรับการสังเกตสถานะการจัดองค์ประกอบที่กำลังดำเนินการใน กระบวนการ ควรใช้ API นี้แทน Recomposer.current() ซึ่งตอนนี้เลิกใช้งานแล้ว (If8ebe)
  • ย้าย Saver, listSaver(), mapSaver(), autoSaver จาก androidx.compose.runtime.savedinstancestate ไปยัง androidx.compose.runtime.saveable (I77fe6)
  • EditCommands ยอมรับ AnnotatedString อย่างไรก็ตาม การเปลี่ยนแปลงนี้เป็น การเปลี่ยนแปลง API เท่านั้น และระบบยังไม่ได้ ใช้การแก้ไขข้อความหลายสไตล์ (I4c3ea)
  • ระบบได้นำเวลาทำงานและระยะเวลาออกแล้ว (Ib9bf4, b/177420019)
  • ย้าย CompositionData.asTree() และ API ที่เกี่ยวข้อง ไปยังโมดูล ui-tooling-data แยกต่างหากและทำเครื่องหมายเป็นเวอร์ชันทดลอง (Ic95b8)
  • เราเปลี่ยนชื่อพารามิเตอร์ใน RounderCornerShape, CutCornerShape และ CornerBasedShape จากซ้าย/ขวาเป็นเริ่ม/สิ้นสุดเพื่อรองรับการมิเรอร์อัตโนมัติของรูปร่างในทิศทาง RTL เราได้เปิดตัว AbsoluteRounderCornerShape และ AbsoluteCutCornerShape สำหรับกรณีที่ไม่ต้องการการมิเรอร์อัตโนมัติ (I61040, b/152756983)
  • เราได้รีแฟคเตอร์ API ที่ปลั๊กอินคอมไพเลอร์ Compose กำหนดเป้าหมาย เพื่อใช้อินเทอร์เฟซแทน คลาสที่เฉพาะเจาะจง นอกจากนี้ อินเทอร์เฟซยังไม่ใช้พารามิเตอร์ประเภทอีกต่อไป

    การเปลี่ยนแปลงนี้เป็นการเปลี่ยนแปลงภายในซึ่งไม่ควรส่งผลต่อความเข้ากันได้ของซอร์สโค้ด แต่เป็นการเปลี่ยนแปลงแบบไบนารีที่ทำให้เกิดการหยุดทำงาน (I3b922, b/169406779)

  • นำฟังก์ชัน StringBuilder.deleteAt ที่ตั้งค่าเป็นสาธารณะโดยไม่ตั้งใจออก (Id6ed9)

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

  • ตอนนี้ ComposeView ที่วางไว้ในลำดับชั้นของ View ซึ่งเป็นองค์ประกอบย่อยของ องค์ประกอบอื่นจะโฮสต์องค์ประกอบย่อยของบรรพบุรุษ (I92883)
  • อัปเดต API imageFromResource ของ Compose เพื่อใช้แคช Drawable ของทรัพยากรซ้ำ เมื่อโหลดออบเจ็กต์ ImageBitmap (If3627, b/178751994)

เวอร์ชัน 1.0.0-alpha11

28 มกราคม 2021

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

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

  • เราได้ปรับปรุง WithConstraints เป็น BoxWithConstraints และย้ายไปที่ foundation.layout (I9420b, b/173387208)
  • เลิกใช้งาน Key.DPadUp แล้ว ให้ใช้ Key.DirectionUp แทน (Iab335, b/177954892)
  • อินเทอร์เฟซเจ้าของจะอยู่ภายในนับจากนี้ (If8e35)
  • เพิ่ม API FocusManager.moveFocus() เพื่อย้ายโฟกัสโดยอัตโนมัติ (I045cb, b/177681839)
  • เปลี่ยน PopupPositionProvider ให้ใช้พิกัดที่สัมพันธ์กับหน้าต่าง ไม่ใช่พิกัดส่วนกลาง เปลี่ยนชื่อ parentGlobalBounds เป็น anchorBounds และเปลี่ยน windowGlobalBounds เป็น windowSize: IntSize (I2994a)
  • ระบบจะแทนที่ระยะเวลาและเวลาทำงานด้วยมิลลิวินาทีแบบยาว และขั้นตอนนี้จะนำการอ้างอิงอินพุตของเคอร์เซอร์ในคลาสเหล่านั้นออก (Ia33b2, b/175142755, b/177420019)
  • AmbientSavedStateRegistryOwner ได้รับการเพิ่มในลักษณะเดียวกับ AmbientLifecycleOwner และ AmbientViewModelStoreOwner ที่มีอยู่แล้ว (I9a3e8, b/176756365)
  • อัปเดตกราฟิกเวกเตอร์ API เพื่อรองรับการแยกวิเคราะห์การปรับสี ที่ใช้กับรูทของกราฟิกเวกเตอร์ (Id9d53, b/177210509)
  • เพิ่ม toolType ลงใน PointerInputChange เพื่อแยกความแตกต่างของอุปกรณ์ (Iac787, b/175142755)
  • เปลี่ยนชื่อ AmbientWindowManager เป็น AmbientWindowInfo (I2686a, b/177084714, b/177084983)
  • เลิกใช้งานเมธอดพิกัดส่วนกลางและสร้างเมธอดพิกัดใหม่ตามหน้าต่าง (Iee284)
  • เพิ่ม Modifier.toolingGraphicsLayer ซึ่งจะเพิ่มตัวปรับแต่งเลเยอร์กราฟิกเมื่อเปิดการตรวจสอบ (I315df)
  • ตอนนี้ FocusRequester.createRefs มีเครื่องหมายระบุว่าอยู่ในขั้นทดลองเนื่องจากอาจมีการเปลี่ยนแปลง (I2d898, b/177000821)
  • เปลี่ยนชื่อ SemanticsPropertyReceiver.hidden เป็น invisibleToUser และทำเครื่องหมาย @ExperimentalComposeUiApi เปลี่ยนชื่อ AccessibilityRangeInfo เป็น ProgressBarRangeInfo เปลี่ยนชื่อ stateDescriptionRange เป็น progressBarRangeInfo เปลี่ยนชื่อ AccessibilityScrollState เป็น ScrollAxisRange เปลี่ยนชื่อ horizontalAccessibilityScrollState เป็น horizontalScrollAxisRange เปลี่ยนชื่อ verticalAccessibilityScrollState เป็น verticalScrollAxisRange (Id3148)
  • นำ PointerInputData ออกและแก้ไข PointerInputChange เพื่อให้มีฟิลด์ทั้งหมดของ PointerInputData ทำให้ PointerInputEvent และ PointerInputEventData เป็นแบบภายในเนื่องจากไม่ได้ใช้ใน API สาธารณะใดๆ (Ifff97, b/175142755)
  • อัปเดตการใช้งาน GraphicsLayerScope density เพื่อรองรับการแปลง dp เป็น พิกเซลดิบ (Ied528, b/176819695)
  • อัปเดต API ของเมทริกซ์ให้เป็นไปตามลำดับแถว หลักและระบุค่าคงที่ของดัชนี เพื่อช่วยในการแปลงระหว่างการแสดงเมทริกซ์ที่แตกต่างกัน ให้ตรงกับตรรกะการแปลงเฟรมเวิร์ก ระหว่าง SkMatrix กับ Matrix4 ภายใน (I432e6)
  • นำเมธอด monotonicFrameAnimationClockOf ที่เป็นเวอร์ชันทดลองออกแล้ว (Ib753f, b/170708374)
  • ย้าย String.fintPrecedingBreak และ String.fingFollowingBreak ไปยัง InternalTextApi (I657c4)
  • นำ androidx.compose.ui.util.isSurrogatePair ออกจาก API สาธารณะแล้ว (Ia9494)
  • เปลี่ยนชื่อ TransformedText.transformedText เป็น TransformedText.text
    • TransformedText ไม่ใช่คลาสข้อมูลอีกต่อไป (Ie672a)
  • นำ data class ออกจากชั้นเรียนต่อไปนี้แล้ว
    • InlineTextContent
    • LocaleList (I605c7)
  • คลาสต่อไปนี้ไม่ใช่คลาสข้อมูลอีกต่อไป
    • AnnotatedString
    • ParagraphStyle
    • SpanStyle
    • TextStyle
    • FontWeight
    • TextDecoration
    • TextGeometricTransform
    • TextIndex
    • TextLayoutResult
    • TextLayoutInput (Iaff99)
  • เปลี่ยน VisualTransformation ให้เป็นอินเทอร์เฟซที่ใช้งานได้ (I3bba4)
  • เพิ่มประเภทพารามิเตอร์ข้อมูลอ้างอิงฟังก์ชัน (I5e1bd)
  • เพิ่มขอบเขตที่แปลงแล้วลงใน InspectorNode (Ice42f)

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

  • onCommit, onDispose และ onActive ถูกเลิกใช้งานแล้วเพื่อรองรับ SideEffect และ DisposableEffect API (If760e)
  • การเปลี่ยนแปลงฟังก์ชันโรงงานสำหรับ Font/FontFamily/Typeface

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

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

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

  • นำ displaySize ออกเนื่องจากควรหลีกเลี่ยง โดยปกติแล้ว ควรใช้ขนาดของ onRoot() หรือขนาดหน้าต่างเป็นอย่างน้อย (I62db4)

  • OnSizeChanged รายงานขนาดของเนื้อหาเลย์เอาต์ ตอนนี้จะรายงานขนาดที่ตำแหน่งภายใน เชนตัวแก้ไข (I36b78, b/177562900)

  • เราเลิกใช้งาน API emit() และการโอเวอร์โหลดทั้งหมดแล้ว และเปลี่ยนชื่อเป็น ComposeNode API เหมือนกันทุกประการ เพียงแต่ใช้ชื่อต่างกันเพื่อให้เป็นไปตามรูปแบบการตั้งชื่อของ Compose (I4137b)

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

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

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

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

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

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

  • เลิกใช้งานการดำเนินการทางคณิตศาสตร์ระหว่าง TextUnit ตั้งแต่ 2 รายการขึ้นไป เลิกใช้งานฟังก์ชัน TextUnit.Sp และ TextUnit.Em เพื่อให้ใช้ฟังก์ชันส่วนขยาย เช่น Int.sp และ Int.em แทน (I48369)

  • ตอนนี้ทรัพยากรในไลบรารีที่ไม่มีการประกาศทรัพยากรสาธารณะอย่างชัดเจน (เช่น ผ่าน public.xml) จะเป็นแบบส่วนตัวโดยค่าเริ่มต้น (Ia1dcc, b/170882230)

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

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

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

    • โปรดใช้ ImeAction.Default แทน ImeAction.Unspecified (Ie1bcc)
  • ใช้ประโยชน์จาก TestCoroutineDispatcher ในการทดสอบ (I532b6)

  • เปลี่ยนชื่อ TextInputService.onStateUpdated เป็น updateState (Id4853)

  • เลิกใช้งานการเปลี่ยนตาม TransitionDefinition แล้ว (I0ac57)

  • นำ TextUnitType.Inherit ออกแล้ว โปรดใช้ TextUnitType.Unspecified แทน (I9ff64)

เวอร์ชัน 1.0.0-alpha10

13 มกราคม 2021

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

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

  • การปรับโครงสร้าง API ของคอมไพเลอร์ภายใน ช่วยให้สามารถจัดกลุ่มการเปลี่ยนแปลงไปยังโหนดที่สร้างขึ้น อันเป็นผลมาจากการจัดองค์ประกอบเป็นเฟส "ใช้การเปลี่ยนแปลง" ของการจัดองค์ประกอบ หลังจากที่ฟังก์ชัน @Composable ทั้งหมด เสร็จสมบูรณ์แล้ว

    นี่เป็นการเปลี่ยนแปลงที่ทำให้เกิดข้อขัดข้องด้านลักษณะการทำงาน ซึ่งอาจส่งผลต่อโค้ดแอปพลิเคชันเนื่องจากโหนดจะไม่พร้อมใช้งานจาก API ภายในและ API ทดลองจนกว่าจะมีการใช้การเปลี่ยนแปลง โดยปกติแล้ว คุณสามารถหลีกเลี่ยงปัญหานี้ได้โดย ล้อมรอบโค้ดที่มีการอ้างอิงดังกล่าวใน SideEffect Composable เพื่อเลื่อนการเรียกใช้โค้ด จนกว่าจะสร้างและเริ่มต้นโหนดแล้ว (I018da)

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

  • เพิ่ม Modifier.focusOrder() ที่ใช้ระบุลำดับการย้ายโฟกัสที่กำหนดเองได้ (I90cf5, b/175899543, b/170155556, b/170155429)
  • นำการใช้ focusObserver ที่เลิกใช้งานแล้วออก ให้ใช้ onFocusChanged หรือ onFocusEvent แทน (I3ecb9, b/175156387)
  • การเปลี่ยนแปลง API ของ EditOperations
    • เปลี่ยนชื่อ EditOperation เป็น EditCommand
    • เพิ่มคำต่อท้าย Command สำหรับการติดตั้งใช้งานจริงของ EditOperation
    • EditCommand ไม่ใช่คลาสข้อมูลอีกต่อไป
    • เปลี่ยนชื่อฟังก์ชัน EditOperation.process เป็น applyTo
    • เปลี่ยนชื่อ InputEventListener เป็น InputEventCallback
    • (I0a366)
  • นำ PxSquared, PxCubed, PxInverse ที่ไม่ได้ใช้ออก เปลี่ยน Size.center() ให้เป็นพร็อพเพอร์ตี้ (I973f7)
  • ตอนนี้โมดูล ui-test จะกำหนดค่าการสร้าง Recomposer สำหรับ UI ที่อยู่ระหว่างการทดสอบได้แล้ว (Ibebd8)
  • ความเร็วที่แก้ไขแล้วให้มีส่วนประกอบและ การดำเนินการทางคณิตศาสตร์ (Ib0447)
  • เปลี่ยนชื่อ @ExperimentalTesting เป็น @ExperimentalTestApi เพื่อให้ สอดคล้องกับคำอธิบายประกอบ API ทดลองที่คล้ายกัน (Ia4502, b/171464963)
  • เปลี่ยนชื่อ Color.useOrElse() เป็น Color.takeOrElse() (Ifdcf5)
  • นำคลาส DpInverse, DpSquared และ DpCubed ที่ไม่ได้ใช้ออก (I4d62b)
  • เปลี่ยนชื่อ Constraints#satisfiedBy เป็น isSatisfiedBy (I9cf5c)
  • เพิ่มการเรียกกลับเพื่อแจ้งให้เจ้าของทราบเมื่อขอบเขตของ LayoutNode เปลี่ยนแปลง (I72fd1)
  • เพิ่ม isSpecified, isUnspecified และ useOrElse สำหรับ คลาสอินไลน์ที่มีค่าคงที่ Unspecified (I93f7b, b/174310811)
  • ขยาย [Abstract]ComposeView API เพื่ออนุญาตให้รีไซเคิล มุมมองที่อิงตาม Compose โดยทิ้งการจัดองค์ประกอบเพื่อสร้างใหม่ ในภายหลัง เพิ่ม API สำหรับการติดตั้งและค้นหา Recomposer ที่มีขอบเขตหน้าต่าง และ CompositionReference สำหรับการสร้างองค์ประกอบย่อย

    เพิ่ม ViewCompositionStrategy เพื่อกำหนดค่ากลยุทธ์การทิ้งองค์ประกอบของ [Abstract]ComposeViews ลักษณะการทำงานเริ่มต้นคือทิ้งเมื่อหน้าต่างถูกยกเลิกการเชื่อมต่อ (I860ab)

  • นำ Any.identityHashCode() API สาธารณะออกแล้ว (I025d7)

  • นำ toStringAsFixed API ออกเพื่อใช้ String.format แทนโดยตรง (Iaba6b)

  • เพิ่มสวิตช์ไปยัง foundation Strings.kt (I4a5b7, b/172366489)

  • ย้าย nativeClass ไปยัง โมดูล ui และทำให้เป็นโมดูลภายใน อัปเดตการใช้งาน nativeClass ใน การติดตั้งใช้งาน equals เพื่อใช้ 'is MyClass' แทน (I4f734)

  • เลิกใช้งาน Modifier.focus() และ Modifier.focusRequester() แล้ว ใช้ Modifier.focusModifier() และ Modifier.focusReference() แทน (I75a48, b/175160751, b/175160532, b/175077829)

  • เปิดตัว SelectionRegistrar.notifySelectableChange เพื่อแจ้งการอัปเดตที่เลือกได้ไปยัง SelectionManager (I6ff30, b/173215242)

  • เพิ่มพร็อพเพอร์ตี้ Outline.bounds เพื่อรับ Bounding Rect สำหรับการใช้งาน Outline ต่างๆ (I16e74, b/175093504)

  • เลิกใช้งาน TestUiDispatcher แล้ว ให้ใช้ Dispatchers.Main แทน (Ic171f, b/175385255)

  • ImeOptions และ KeyboardOptions ไม่ใช่คลาสข้อมูลอีกต่อไป (I3c898, b/168684531)

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

    • เปลี่ยนชื่อ OffsetMap เป็น OffsetMapping
    • เปลี่ยนชื่อ OffsetMapping.identityOffsetMap เป็น OffsetMapping.Identity
    • PasswordTransformation ไม่ใช่คลาสข้อมูลอีกต่อไป
    • ย้าย OffsetMapping ไปยังไฟล์ของตัวเอง
    • (I0bdf3)
  • เปลี่ยนชื่อตำแหน่งเป็น DpOffset และนำ getDistance() ออก (Ib2dfd)

  • เปลี่ยนฟังก์ชัน Dp.isFinite() เป็นค่า Dp.isFinite (I50e00)

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

  • ตอนนี้ Recomposer จะแสดง Flow ของสถานะปัจจุบัน ซึ่งช่วยให้สามารถตรวจสอบกิจกรรมของ Recomposer และกิจกรรมของเอฟเฟกต์ที่เชื่อมโยง (Ifb2b9)
  • ตอนนี้คุณเข้าถึง keyEvent ดั้งเดิมได้แล้วผ่าน keyEvent.nativeKeyEvent (I87c57, b/173086397)
  • ตอนนี้ animate() ถูกแทนที่ด้วย animateAsState() ซึ่งจะแสดงผล State<T> แทน T ซึ่งจะช่วยให้ประสิทธิภาพดีขึ้น เนื่องจากสามารถจำกัดขอบเขตการลบล้างให้แคบลง ในตำแหน่งที่อ่านค่าสถานะ (Ib179e)
  • เพิ่ม API บทบาทของ Semantics และเพิ่มบทบาทเป็นพารามิเตอร์ไปยัง SemanticsModifier ที่คลิกได้ เลือกได้ และสลับได้ เปลี่ยน Modifier.progressSemantics เพื่อให้แถบเลื่อนใช้ได้ด้วย (I216cd)
  • API ใหม่ที่ใช้โครูทีน Animatable ซึ่งรับประกันการแยกกันโดยเด็ดขาด ระหว่างภาพเคลื่อนไหว
    • DecayAnimationSpec ใหม่เพื่อรองรับภาพเคลื่อนไหวแบบลดทอนหลายมิติ
    • (I820f2, b/168014930)

เวอร์ชัน 1.0.0-alpha09

16 ธันวาคม 2020

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

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

  • ตอนนี้เราได้นำ KeyEvent.Alt ที่เลิกใช้งานแล้วออก ใช้ KeyEvent.isAltPressed แทน (Idd695)
  • เลิกใช้งาน Modifier.keyInputFilter และ Modifier.previewKeyInputFilter แล้ว โปรดใช้ Modifier.onKeyEvent และ Modifier.onPreviewKeyEvent แทน (Idbf1b, b/175156384)
  • เลิกใช้งาน Modifier.focusObserver แล้ว ใช้ Modifier.onFocusChanged หรือ Modifier.onFocusEvent แทน (I30f17, b/168511863, b/168511484)
  • สำหรับ API การป้อนข้อมูลด้วยเคอร์เซอร์ที่ระงับแล้ว เราได้เปลี่ยนชื่อ HandlePointerInputScope เป็น AwaitPointerEventScope และ handlePointerInput() เป็น awaitPointerEventScope() (Idf0a1, b/175142755)
  • ตอนนี้ Autofill API เป็น API เวอร์ชันทดลองและต้องเลือกใช้ (I0a1ec)
  • การเพิ่มการประกาศการแยกโครงสร้างเพื่อสร้างอินสแตนซ์ FocuSRequester (I35d84, b/174817008)
  • เปลี่ยนชื่อ accessibilityLabel เป็น contentDescription เปลี่ยนชื่อ accessibilityValue เป็น stateDescription (I250f2)
  • นำเหตุการณ์ที่กำหนดเองออกจาก API การระงับการป้อนข้อมูลด้วยเคอร์เซอร์ (Ia54d5, b/175142755)
  • เปิดตัวฟังก์ชันใหม่หลายรายการใน SelectionRegistrar และเปลี่ยนชื่อ onPositionChange เป็น notifyPositionChange (Ifbaf7)
  • สมาชิกเพิ่มเติมของ LayoutNode ที่เราทำเครื่องหมายเป็นภายใน (I443c6)
  • เราได้เปิดตัว LayoutInfo เพื่อให้เครื่องมือและการทดสอบใช้งาน (I9b190)
  • AndroidOwner สร้างภายใน (Ibcad0, b/170296980)
  • นำคำอธิบายประกอบ ExperimentalPointerInput ออกแล้ว (Ia7a24)
  • เพิ่มระบบการเลื่อนที่ซ้อนกัน ดูรายละเอียดเพิ่มเติมได้ที่ Modifier.nestedScroll (I36e15, b/162408885)
  • มีการเปลี่ยนให้ subcomposeInto(LayoutNode) เป็นแบบภายใน (Id724a)
  • Applier อินเทอร์เฟซมีการเปลี่ยนแปลงเพื่อลดความซับซ้อน ในการสร้างแผนผังจากล่างขึ้นบนแทนที่จะเป็นจากบนลงล่าง

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

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

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

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

  • เพิ่มพร็อพเพอร์ตี้ dismissOnBackPress และ dismissOnClickOutside ลงใน AndroidDialogProperties ซึ่งช่วยให้กำหนดค่าได้ว่าจะเรียกใช้ Lambda ของ onDismissRequest ของกล่องโต้ตอบเมื่อใด (If5e17)

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

  • เพิ่ม Modifier.clearAndSetSemantics เพื่อล้างซีแมนติกขององค์ประกอบย่อย และตั้งค่าใหม่ (I277ca)

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

  • เปิดตัวกราฟิก API ของ PathEffect เพื่อจัดเตรียมรูปแบบต่างๆ ให้กับรูปร่างที่ขีดเส้น เลิกใช้งาน NativePathEffect เพื่อ การใช้งาน PathEffect แบบ expect/actual (I5e976, b/171072166)

  • เพิ่มอินเทอร์เฟซ IdlingResource ลงใน Compose เพื่อให้เป็นตัวแปรที่รองรับ Compose ของทรัพยากรที่ไม่ได้ใช้งานของ Espresso โดยสามารถลงทะเบียน และยกเลิกการลงทะเบียนผ่าน ComposeTestRule (I433f3)

  • นำการ (ยกเลิก) ลงทะเบียน ComposeIdlingResource ทั่วโลกและ การ (ยกเลิก) ลงทะเบียนนาฬิกาทั่วโลกใน ComposeIdlingResource ออก (I32660)

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

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

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

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

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

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

  • เลิกใช้งาน BuildCompat.isAtLeastR (Idb37e)

  • เพิ่มฟังก์ชัน Factory buildAnnotatedString เพื่อสร้าง AnnotatedString เลิกใช้งานฟังก์ชัน builder ของ annotatedString แล้ว (Idfe0b)

  • นำเมธอดส่วนขยาย ใน Float และ Double ออกเพื่อแปลงค่า เป็นเรเดียน ย้ายไปเป็นฟังก์ชันส่วนตัว ภายใน PathParser ของการติดตั้งใช้งาน ซึ่งเป็นที่เดียวที่มีการใช้งาน (I25f52)

เวอร์ชัน 1.0.0-alpha08

2 ธันวาคม 2020

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

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

  • เพิ่มการดำเนินการทางความหมาย Dismiss (I2b706)
  • ย้าย DrawModifier APIs จากแพ็กเกจ androidx.compose.ui ไปยังแพ็กเกจ androidx.compose.ui.draw สร้างไฟล์ DrawModifierDeprecated.kt เพื่อ รวมประเภทแทน/วิธีการช่วยเพื่อช่วยในการ ย้ายข้อมูลจาก API ที่เลิกใช้งานแล้วไปยัง API ปัจจุบัน (Id6044, b/173834241)
  • เปลี่ยนชื่อ Modifier.drawLayer เป็น Modifier.graphicsLayer และอัปเดตคลาสที่เกี่ยวข้องเป็น GraphicsLayer ตาม ความคิดเห็นเกี่ยวกับ API (I0bd29, b/173834241)
  • เราได้เพิ่มเมธอดใหม่ที่ชื่อ placeable.placeWithLayer() และ placeable.placeRelativeWithLayer() ซึ่งช่วยให้เลย์เอาต์ที่กำหนดเองและตัวแก้ไขเลย์เอาต์วางองค์ประกอบย่อยได้โดยการเพิ่มเลเยอร์กราฟิกสำหรับการวาด ด้วยเหตุนี้ เราจึงสามารถเพิ่มประสิทธิภาพการวาดใหม่ได้ก่อน ดังนั้นเมื่อเราต้องการย้ายองค์ประกอบย่อย เราจึงไม่ต้องวาดเนื้อหาขององค์ประกอบนั้นใหม่ และประการที่สอง เราสามารถใช้การเปลี่ยนรูปการวาดสำหรับองค์ประกอบย่อยได้ (Ibd8f6, b/170296989, b/171493718, b/173030831)
  • นำ <T> ออกจากการประกาศ SubcomposeLayout ตอนนี้คุณใช้ได้โดยไม่ต้องระบุประเภท (Ib60c8)
  • เพิ่ม Modifier.scale/rotate APIs เพื่ออำนวยความสะดวกสำหรับ drawLayer
    • เปลี่ยนชื่อ Modifier.drawOpacity เป็น Modifier.alpha แล้ว
    • เปลี่ยนชื่อ Modifier.drawShadow เป็น Modifier.shadow (I264ca, b/173208140)
  • ทำให้ฟิลด์เวลาทำงานและตำแหน่งของ PointerInputData ไม่เป็นค่าว่าง (Id468a)
  • ตอนนี้ MaterialTheme จะกำหนดสีที่ถูกต้องสำหรับแฮนเดิลการเลือกและพื้นหลังการเลือกแล้ว แอปที่ไม่ใช่ Material สามารถใช้ AmbientTextSelectionColors เพื่อปรับแต่งสีที่ใช้สำหรับการเลือกได้ด้วยตนเอง (I1e6f4, b/139320372, b/139320907)
  • เพิ่ม WindowManager.isWindowFocused เพื่อตรวจสอบว่าหน้าต่างโฮสต์อยู่ในโฟกัสหรือไม่ และ WindowFocusObserver ที่ให้การเรียกกลับ onWindowFocusChanged (I53b2a, b/170932874)
  • อัปเดต TransformOrigin API ให้มีไวยากรณ์การแยกโครงสร้างเพื่อแสดงผล pivotFractionX และ pivotFractionY เป็น component1 และ component2 (If43c4, b/173586560)
  • เพิ่มการตรวจสอบ Lint สำหรับการตั้งชื่อและการวางตำแหน่งพารามิเตอร์ Lambda ที่ใช้ร่วมกันได้ เพื่อตรวจสอบความสอดคล้องกับหลักเกณฑ์ของ Compose นอกจากนี้ ยังย้ายข้อมูล API บางรายการโดยใช้ children เป็นชื่อสำหรับ Lambda ต่อท้ายเป็น content ตามการตรวจสอบ Lint และคำแนะนำ (Iec48e)
  • เพิ่ม API เพื่อตรวจสอบว่ามีการกดแป้นกดร่วม Alt, Ctrl, Meta หรือ Shift หรือไม่เมื่อมีการส่ง Keyevent (I50ed9)
  • เพิ่มModifier.drawLayer()โอเวอร์โหลดใหม่แล้ว โดยจะใช้บล็อก Lambda ใน GraphicsLayerScope ใหม่ ซึ่งคุณจะกําหนดพารามิเตอร์เลเยอร์ในลักษณะที่ช่วยให้ข้ามการจัดองค์ประกอบใหม่และการจัดเลย์เอาต์ใหม่ได้เมื่อมีการเปลี่ยนแปลงสถานะ ตอนนี้ DrawLayerModifier อยู่ภายในเพื่อเตรียมพร้อมที่จะย้ายตรรกะไปยังเมธอด placeable.placeWithLayer() ของ LayoutModifier (I15e9f, b/173030831)
  • เลิกใช้งาน Ambients ที่เลิกใช้งานแล้วซึ่งมี Ambient เป็นคำต่อท้าย และแทนที่ด้วยพร็อพเพอร์ตี้ใหม่ที่ขึ้นต้นด้วย Ambient ตามหลักเกณฑ์อื่นๆ ของ Ambients และ Compose API (I33440)
  • ย้าย androidx.compose.ui.text.Typeface ไปยัง androidx.compose.ui.text.font.Typeface (Ic2b81)
  • มีการเปลี่ยนชื่ออาร์กิวเมนต์เชิงความหมาย mergeAllDescendants เป็น mergeDescendants (Ib6250)
  • เครื่องตรวจจับท่าทางลากแบบใหม่ที่ระงับ API ของอินพุตพอยน์เตอร์ รวมถึงการล็อกการวางแนว (Icef25)
  • เปลี่ยนชื่อ VectorAsset เป็น ImageVector ย้ายและเปลี่ยนชื่อ VectorAsset เป็น Builder เพื่อ ให้เป็นคลาสในของ ImageVector ตาม หลักเกณฑ์ของ API เพิ่ม typealias ของ VectorAssetBuilder เพื่อ ลิงก์ไปยัง ImageVector.Builder เพื่อความเข้ากันได้ (Icfdc8)
  • เปลี่ยนชื่อ ImageAsset และ เมธอดที่เกี่ยวข้องเป็น ImageBitmap (Ia2d99)
  • เพิ่มพารามิเตอร์ zIndex สำหรับ place() ของ PlacementScope เพื่อให้ Modifier.zIndex() ทำงานเป็น LayoutModifier ได้แล้ว และเลย์เอาต์ที่กำหนดเองจะตั้งค่า zIndex สำหรับองค์ประกอบย่อยได้โดยตรงในบล็อกการจัดวาง (I711f7, b/171493718)
  • ย้ายพร็อพเพอร์ตี้ความหมายของรากฐานไปยัง UI (I6f05c)
  • เลิกใช้งาน place(Offset) และ placeRelative(Offset) ใช้การโอเวอร์โหลดที่มีออฟเซ็ต int แทน (I4c5e7)
  • นำ API ที่เลิกใช้งานไปก่อนหน้านี้ออก: นำ Modifier.onPositioned ออกแล้ว ให้ใช้ Modifier.onGloballyPositioned แทน นำ Modifier.onDraw ออกแล้ว ให้ใช้ Modifier.onDrawBehind แทน นำ Modifier.plus ออกแล้ว ให้ใช้ Modifier.then แทน นำ Color.Unset ออกแล้ว ให้ใช้ Color.Unspecified แทน ระบบได้นำคลาส PxBounds ออกแล้ว โปรดใช้ Rect แทน (Ie9d02, b/172562222)
  • เราได้อัปเดตอินเทอร์เฟซการจัดแนวและทำให้ใช้งานได้ (I46a07, b/172311734)
  • เพิ่มเครื่องตรวจจับท่าทางสัมผัสสำหรับการแตะ แตะสองครั้ง กดค้าง และการกดโดยใช้การป้อนข้อมูลตัวชี้ที่ระงับใหม่ นอกจากนี้ เรายังได้เพิ่มยูทิลิตีบางอย่างเพื่อช่วยให้นักพัฒนาแอปเขียนเครื่องตรวจจับท่าทางสัมผัสของตนเองได้ง่ายขึ้น (I00807)
  • เปลี่ยนชื่อ id เป็น layoutId สำหรับ LayoutIdParentData แล้ว เปลี่ยนชื่อ Measurable.id เป็น Measurable.layoutId แล้ว (Iadbcb, b/172449643)
  • ตัวตรวจจับท่าทางสัมผัสแบบหลายจุดใหม่ ซึ่งรวมถึง ฟังก์ชันช่วยในการตรวจจับการหมุน การซูม และการเลื่อน (Ic459d)
  • เปิดตัว SweepGradientShader และ SweepGradientBrush API (Ia22c1)
  • การควบคุมเวลาในการทดสอบ (TestAnimationClock และการใช้งาน) อยู่ในระยะทดลองแล้ว (I6ef86, b/171378521)
  • เพิ่ม API การเลื่อนตามโครูทีน

    เพิ่ม LazyListState.snapToItem และ LazyListState.smoothScrollBy รวมถึง API ระดับล่าง สำหรับการควบคุมการเลื่อน API เหล่านี้มีอินเทอร์เฟซระงับเพื่อควบคุมการเลื่อน ซึ่งจะรอจนกว่าการเลื่อนจะเสร็จสิ้นก่อนที่จะส่งคืน (Ie5642)

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

  • ระบุการใช้งานเริ่มต้นของเมธอดและพร็อพเพอร์ตี้ใน AnimationClockTestRule ที่สามารถมอบสิทธิ์ให้กับ clock (I7ea3d, b/173399709)

  • ตอนนี้ AndroidComposeTestRule ยอมรับตัวเรียกใช้กิจกรรมที่กำหนดเองได้แล้ว (Ib8288, b/153623653, b/154135019)

  • เลิกใช้งาน TextLayoutResult.getLineVisibleEnd แล้ว TextLayoutResult.getLineEnd มีพารามิเตอร์ใหม่ชื่อ visibleEnd เพื่อใช้แทน (I73282)

  • อัปเดต TextFieldValue API

    • ทำให้ TextFieldValue.composition เป็นแบบอ่านอย่างเดียว
    • นำข้อยกเว้นที่เกิดขึ้นสำหรับช่วงการเลือกที่ไม่ถูกต้องออกแล้ว (I4a675, b/172239032)
  • รองรับ TtsAnnotation สำหรับเครื่องมืออ่านออกเสียงข้อความ (I54cc6)

  • API ใหม่สำหรับการเรียกใช้ภาพเคลื่อนไหวในโครูทีน (Ied662)

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

  • เปลี่ยนชื่อพารามิเตอร์การจัดแนวของ Box เป็น contentAlignment (I2c957)
  • เปลี่ยนชื่อตัวแก้ไข offsetPx เป็น offset ตอนนี้ฟังก์ชันเหล่านี้รับพารามิเตอร์ Lambda แทน State แล้ว (Ic3021, b/173594846)
  • เพิ่มพารามิเตอร์ resetInput ไปยัง TextInputService#onStateUpdated (I3e8f5, b/172239032, b/171860947)
  • เพิ่มการตรวจสอบ Lint สำหรับพารามิเตอร์ Modifier ในฟังก์ชันที่ใช้ร่วมกันได้ การตรวจสอบ Lint นี้จะตรวจสอบการตั้งชื่อ ประเภทการคืนค่า ค่าเริ่มต้น และลำดับของพารามิเตอร์เพื่อให้สอดคล้องกับหลักเกณฑ์ของ Compose (If493b)
  • เพิ่มตัวเลือกชั่วคราวเพื่อให้ MonotonicFrameClock ขับเคลื่อน TestAnimationClock ได้ (I1403b, b/173402197)
  • เพิ่ม Wrapper ของ Android Typeface แล้ว คุณโหลด Android Typeface ผ่านฟังก์ชัน typeface ได้ เช่น typeface(Typeface.DEFAULT) เปลี่ยนชื่อ typefaceFromFontFamily() เป็น typeface() (I52ab7) ด้วย
  • เพิ่มการตรวจสอบ Lint เพื่อตรวจสอบว่าฟังก์ชัน Factory ของตัวแก้ไขได้รับการกำหนดเป็นส่วนขยายในตัวแก้ไข เพื่อให้สามารถเชื่อมโยงเข้าด้วยกันได้อย่างราบรื่น (I07981)
  • นำโมดูล ui-test เก่าและ Stub ออก (I3a7cb)
  • Recomposer ไม่รับ EmbeddingContext อีกต่อไป ระบบจะรับการขึ้นต่อกันในการจัดกำหนดการที่จำเป็นจาก effectCoroutineContext เลิกใช้งาน FrameManager แล้ว การผสานรวมแพลตฟอร์มควรเริ่มต้น การจัดการสแนปชอตส่วนกลางของตนเอง (I02369)
  • ส่งข้อมูลรูปแบบไปยังโหนดการช่วยเหลือพิเศษ (If5e8d)
  • เราเปลี่ยนชื่อ TextUnit.Inherit เป็น TextUnit.Unspecified เพื่อให้สอดคล้องกับหน่วยอื่นๆ (Ifce19)

Compose UI เวอร์ชัน 1.0.0-alpha07

11 พฤศจิกายน 2020

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

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

  • เปิดตัวคลาส ScaleFactor inline เพื่อแสดงถึง ปัจจัยการปรับขนาดสำหรับแกนแนวนอนและแนวตั้ง โดยไม่ขึ้นต่อกันเพื่อ รองรับกรณีการใช้งานการปรับขนาดที่ไม่สม่ำเสมอ
    • เพิ่มเมธอด computeScaleFactor ลงใน ContentScale
    • เพิ่ม ContentScale.FillBounds เพื่อทำการ การปรับขนาดที่ไม่สม่ำเสมอเพื่อยืดขอบเขต src ให้ครอบคลุมปลายทางทั้งหมด
    • เพิ่มวิธีการดำเนินการเพื่อคำนวณ พารามิเตอร์ ScaleFactor ด้วยพารามิเตอร์ Size
    • (Ic96a6, b/172291582)
  • เพิ่มโรงงาน BiasAlignment และ BiasAbsoluteAlignment สำหรับสร้างการจัดแนว (Iac836, b/169406772)
  • อนุญาตให้นักพัฒนาแอปบังคับล้างโฟกัส (I90372)
  • แก้ไขข้อบกพร่องที่ทำให้ไม่ได้วาดการยกระดับสำหรับ View ภายใน Compose (If7782)
  • สร้าง API onDrawBehind ภายใน ContentDrawScope เพื่อให้เป็นไปตามรูปแบบการตั้งชื่อเดียวกับ Modifier.drawBehind (I4fc3a, b/171955269)
  • เพิ่มการรองรับระยะกล้อง เพื่อเสริมการแปลง 3 มิติ rotationX/rotationY ใน API ของเลเยอร์ (I40213, b/171492100)
  • เพิ่ม SelectionContainer โดยไม่มีการเรียกกลับ (Ibfadb)
  • นำ ExperimentalSubcomposeLayoutApi ออกแล้ว ตอนนี้คุณใช้ SubcomposeLayout ได้โดยไม่ต้องเพิ่ม @OptIn (I708ad)
  • ย้าย FirstBaseline และ LastBaseline ไปยังแพ็กเกจ androidx.compose.ui.layout (Ied2e7)
  • นำความทึบออกจากตัวแก้ไข drawShadow() เนื่องจากทำให้เกิดความสับสน (I82c62, b/171624638)
  • ย้าย MeasureResult ออกจาก MeasureScope (Ibf96d, b/171184002)
  • เราได้ย้ายสัญลักษณ์ที่เกี่ยวข้องกับเลย์เอาต์หลายรายการจาก androidx.compose.ui ไปยัง androidx.compose.layout.ui (I0fa98, b/170475424)
  • นำ FocusState2 ที่เลิกใช้งานแล้วออก (I686cb, b/168686446)
  • ตอนนี้ ZIndexModifier เป็นแบบภายในแล้ว (I1808b, b/171493718)
  • อัปเดตประเภทการคืนค่าของเมธอด lerp ในพารามิเตอร์ Size เพื่อคืนค่า Size ที่ไม่ใช่ค่าว่างเพื่อหลีกเลี่ยงการ Boxing ที่ไม่จำเป็น (Ib0044)
  • เพิ่ม TestMonotonicFrameClock สำหรับทดสอบโค้ดที่ใช้ MonotonicFrameClock ของ Compose เพื่อรอเหตุการณ์เฟรมการแต่งโดยใช้ runBlockingTest ของ kotlinx-coroutines-test (I4402f)
  • นำ GestureScope.localToGlobal ออก (I15299, b/171462785)
  • เพิ่มเครื่องมือค้นหา onAllNodesWithSubstring (I81dd7, b/171462889)
  • เลิกใช้งานโมดูล androidx.ui.test แล้ว โปรดย้ายข้อมูลไปยัง androidx.compose.ui.test และ androidx.compose.ui.test.junit4 (I452e8)

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

  • ย้าย captureToBitmap ไปยัง captureToImage (I86385)
  • เลิกใช้งาน foundation.Text แล้วและแทนที่ด้วย material.Text หากต้องการใช้ Text API พื้นฐานที่ไม่แสดงความคิดเห็นซึ่งไม่ได้ใช้ค่าจากธีม โปรดดู androidx.compose.foundation.BasicText (If64cb)
  • อัปเดต TextField ให้ยอมรับ KeyboardOptions (Ida7f3)
  • เปลี่ยนชื่อ KeyboardOptions เป็น ImeOptions (I82f36)
  • ย้าย KeyboardType และ ImeAction ไปยัง KeyboardOptions (I910ce)
  • เราได้เพิ่ม provideDefault เป็นทางเลือกในการระบุแอมเบียนท์ และสามารถใช้เพื่อระบุค่าแอมเบียนท์ที่จะตั้งค่าก็ต่อเมื่อไม่มีค่าแอมเบียนท์ที่ระบุไว้แล้วเท่านั้น (Id6635, b/171024925)
  • เลิกใช้งาน BaseTextField แล้ว โปรดใช้ BasicTextField แทน (I896eb)
  • เปิดตัวโมดูล ui-test-junit4 (Ib91f8)
  • เปลี่ยนชื่อ relativePaddingFrom เป็น paddingFrom แล้ว มีการเพิ่มตัวแก้ไข paddingFromBaseline เพื่อความสะดวกในการระบุระยะห่างจากขอบเขตเลย์เอาต์ไปยังบรรทัดฐานของข้อความ (I0440a, b/170633813)
  • LaunchedTask ได้เปลี่ยนชื่อเป็น LaunchedEffect เพื่อให้สอดคล้องกับ SideEffect และ DisposableEffect API ไม่อนุญาตให้ใช้ LaunchedEffect ที่ไม่มีพารามิเตอร์ Subject เพื่อส่งเสริมแนวทางปฏิบัติแนะนำ (Ifd3d4)
  • เปิดตัวทรัพยากรที่สามารถคอมโพสได้ซึ่งจะคอมโพสใหม่เมื่อการกำหนดค่าอัปเดต (I6387c, b/167352819)
  • ตอนนี้ Recomposer ต้องใช้ CoroutineContext ในการสร้าง (Ic4610)
  • รวมค่า zIndex เมื่อใช้ Modifier.zIndex() หลายรายการ ก่อนหน้านี้รายการแรกเป็นผู้ชนะ (Ic514c, b/170623936)
  • การเปลี่ยนแปลงการใช้งาน SlotTable ภายในซึ่ง ไม่ควรส่งผลต่อ API สาธารณะ (If9828)
  • เพิ่มตัวเลือก IME สำหรับการแก้ไขอัตโนมัติของแป้นพิมพ์ (I57b8d)
  • ย้าย androidx.ui.test ไปยัง androidx.compose.ui.test (I9ffdb)
  • นำ KeyboardOptions.toImeOptions ออกจาก API สาธารณะ (Ic2e45)

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

  • ปิดใช้การเผยแพร่ Artifact ภายใน androidx.compose.ui:ui-text-android (Ib93fa)

เวอร์ชัน 1.0.0-alpha06

28 ตุลาคม 2020

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

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

  • ตอนนี้ Recomposer เป็น CompositionReference และเป็น องค์ประกอบหลักที่ถูกต้องแล้ว ตอนนี้คุณต้องใช้ Explicit Recomposer ในที่ต่างๆ น้อยลงแล้ว (I4036f)
  • เลิกใช้งาน VectorPainter เพื่อใช้ rememberVectorPainter แทน เพื่อให้ระบุได้ดียิ่งขึ้นว่า API ที่ใช้ได้ภายในใช้ "remember" เพื่อคงข้อมูลไว้ในคอมโพสิท (Ifda43)
  • อัปเดต Modifier.drawWithCache API เพื่อแสดง ContentDrawScope เป็นขอบเขตตัวรับ แทน DrawScope เพื่อให้การ ติดตั้งใช้งานสามารถจัดลำดับคำสั่ง การวาดใหม่ได้ ซึ่งมีประโยชน์สำหรับกรณีการใช้งานการผสม/ การปรับสีที่ต้องแสดงผลพิกเซลเนื้อหาก่อน เพื่อให้ระบบใช้อัลกอริทึมโหมดการผสมที่เกี่ยวข้องได้อย่างถูกต้อง (Ie7ec8)
  • ย้าย SimpleContainer ไปยัง PopupTestUtils.kt (I78c57)
  • ConsumedData ไม่ใช่คลาสข้อมูลอีกต่อไป ดูรายละเอียดได้ที่ https://android-review.googlesource.com/c/platform/frameworks/support/+/1455219 (I1737f)
  • แก้ไขตำแหน่งแฮนเดิล RTL (I6e1e0)
  • ปรับโครงสร้าง DrawScope และ ContentDrawScope ให้เป็นอินเทอร์เฟซ แทนที่จะเป็นคลาสแบบนามธรรม
    • สร้างการใช้งาน CanvasDrawScope ของ DrawScope
    • การติดตั้งใช้งาน DrawScope ที่ปรับโครงสร้างใหม่เพื่อใช้ CanvasScope แทน
    • สร้าง DrawContext เพื่อรวมการอ้างอิง สำหรับ DrawScope
    • นำวิธีการที่เลิกใช้งานแล้วใน DrawScope (I56f5e) ออก
  • การเปลี่ยนแปลงที่ทำให้เกิดข้อผิดพลาด: นำค่าที่ส่งคืนออกจาก PointerInputFilter.onPointerEvent(...) เนื่องจากค่าเดียวที่ควรเปลี่ยนได้ในเหตุการณ์ของเคอร์เซอร์คือข้อมูลการใช้งาน ตอนนี้คุณสามารถเปลี่ยนข้อมูลการใช้งานของ PointerEvents ที่ส่งผ่านได้เลยแทนที่จะส่งคืนข้อมูลจาก PointerInputFilter.onPointerEvent(...) (I6acd0)
  • เราได้เปลี่ยน MeasureScope และ IntrinsicMeasureScope ให้เป็นอินเทอร์เฟซ (I1a087, b/170461665)
  • ซ่อนฟังก์ชันผสานสำหรับ AlignmentLine แล้ว (I9da1a, b/170612900, b/170611568)
  • เพิ่มความสามารถในการระบุข้อมูลเครื่องมือตรวจสอบในตัวแก้ไขที่ประกอบขึ้น (Idee08, b/163494569)
  • เพิ่มตัวเลือก "เลือกทั้งหมด" ลงในเมนูการเลือก (Ief02b)
  • อัปเดต DrawTransform.rotate เพื่อใช้ พารามิเตอร์ Pivot เริ่มต้นของกึ่งกลางให้ตรงกับ เอกสารประกอบ
    • อัปเดต DrawScope.rotateRad เพื่อใช้ Offset สำหรับ จุดหมุนให้ตรงกับวิธีการเปลี่ยนรูปแบบอื่นๆ
    • เลิกใช้งานการโอเวอร์โหลด DrawScope.rotateRad ที่ใช้ โฟลตสำหรับพิกัด x และ y ของจุดหมุน
    • (Iffcbb, b/170434992)

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

  • เปิดใช้การตรวจสอบ Lint ของ API สำหรับ MissingGetterMatchingBuilder สำหรับ androidx (I4bbea, b/138602561)
  • เพิ่มการทดสอบ (I6b8ae)
  • เปิดใช้การเปลี่ยนฉากใน ComposeTestRule และนำตัวเลือกในการ เปิดใช้เคอร์เซอร์กะพริบออกจาก ComposeTestRule (If0de3)
  • เพิ่มตัวเลือก IME สำหรับการใช้อักษรตัวพิมพ์ใหญ่ในแป้นพิมพ์ (I8ac38)
  • เพิ่มตัวเลือกแป้นพิมพ์แบบบรรทัดเดียวลงใน CoreTextField (I72e6d)
  • ย้าย SimpleContainer ไปยัง PopupTestUtils.kt (I65c3e)
  • เปลี่ยนชื่อ Radius API เป็น CornerRadius เพื่อให้แสดง วิธีใช้ใน Compose ได้ดียิ่งขึ้น อัปเดตเอกสารประกอบเพื่อระบุ ว่ารัศมีมุมที่เป็นลบจะถูกจำกัด เป็น 0 (I130c7, b/168762961)
  • ปรับปรุงการทำงานร่วมกันของ Android โดยส่ง MotionEvent ไปยัง Android View ย่อยที่แสดงผลเป็นเท็จสำหรับ onTouchEvent สำหรับการดำเนินการทั้งหมด ยกเว้น ACTION_DOWN (I94c5a, b/170320973)
  • Box ถูกทำให้เป็นฟังก์ชันอินไลน์ (Ibce0c, b/155056091)

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

  • รองรับภาษาต่างๆ สำหรับ AnnotatedString.capitalize และ AnnotatedString.decapitalize (I4aa7f)

เวอร์ชัน 1.0.0-alpha05

14 ตุลาคม 2020

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

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

  • เพิ่ม DSL สำหรับระบุข้อมูลผู้ตรวจสอบ (Ic9a22)
  • ย้าย LongPress ไปยัง Text (Iff2bc)
  • ตัวแก้ไขทดลอง Modifier.pointerInput ระงับตัวแก้ไขอินพุต (Ia77d2)
  • เพิ่มการดำเนินการสำหรับการช่วยเหลือพิเศษในการคัดลอก/วาง/ตัด (I6db4f)
  • นำตัวสร้างสาธารณะสำหรับ AndroidOwner ออกแล้ว (Iacaef)
  • ตอนนี้ป๊อปอัปและกล่องโต้ตอบจะรับค่า FLAG_SECURE จากหน้าต่างหลัก นอกจากนี้ ยังเพิ่มตัวเลือกในการกำหนดค่านี้อย่างชัดเจน (I64966, b/143778148, b/143778149)
  • ตอนนี้ข้อมูลการบริโภคสามารถเปลี่ยนแปลงได้แล้ว นอกจากนี้ การเรียกฟังก์ชันส่วนขยายที่ใช้การบริโภค จะไม่แสดงผล PointerInputChange ใหม่ แต่จะเปลี่ยน PointerInputChange ที่ระบุแทน

    นี่คือขั้นตอนแรกในกระบวนการ 2 ขั้นตอนเพื่อ ทำให้ข้อมูล PointerEvent เปลี่ยนแปลงได้เพื่อไม่ให้โค้ดของผู้ใช้ แก้ไขข้อมูลเคอร์เซอร์อื่นๆ ได้ ขั้นตอนที่ 2 คือการนำ List<PointerInputChange>ประเภทการคืนสินค้าออกจาก PointerInputFilter.onPointerEvent(...) (Id067e)

  • ปิดใช้การเลือกในข้อความและเดโม (Ie7e97)

  • ทำให้ onGloballyPositioned เป็นฟังก์ชันแบบอินไลน์ (I15830)

  • เปลี่ยนชื่อ OnPositionedModifier เป็น OnGloballyPositionedModifier และเปลี่ยนชื่อ onPositioned() เป็น onGloballyPositioned() (I587e8, b/169083903)

  • เพิ่มพร็อพเพอร์ตี้ hasPendingMeasureOrLayout ลงใน Owner เพื่อระบุว่า Owner มีงานเลย์เอาต์ที่รอดำเนินการหรือไม่ (I3d9f8, b/169038599)

  • เพิ่ม API เพื่อล้างโฟกัสโดยอัตโนมัติ (Ie1dc2, b/161487952)

  • นำ PointerInputFilter.onPointerInput(...) ออกแล้ว PointerInputFilter.onPointerEvent(...) ควรใช้แทน (I6f04a)

  • การเปลี่ยนแปลงขนาด

    • นำ Size.getFlipped ออกแล้ว
    • Removed Size.rem
    • นำ Size.truncDiv ออก (Ief44d, b/169790720)
  • ในการปรับค่า Sentinel สำหรับคลาสแบบอินไลน์ให้เป็นมาตรฐาน ให้เปลี่ยนชื่อ Color.Unset เป็น Color.Unspecified เพื่อให้สอดคล้องกับคลาสแบบอินไลน์อื่นๆ (I97611, b/169797763)

  • เปิดตัว TextOverflow.None เมื่อการล้นเป็น None ข้อความจะไม่จัดการการล้นอีกต่อไป และจะรายงานขนาดจริงไปยัง LayoutNode (I175c9, b/158830170)

  • เปลี่ยนชื่อพารามิเตอร์ขอบเขตภายใน AnnotatedString.Builder.addStringAnnotation เป็นแท็กเพื่อให้ API สอดคล้องกัน (I7c8cb)

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

  • ประสิทธิภาพการเลื่อนของ LazyColumn/Row ได้รับการปรับปรุงโดยการทำงานในองค์ประกอบย่อยน้อยลงในทุกการเลื่อน เราได้เพิ่มเมธอด hasInvalidations() ใหม่สำหรับคลาส Composition และเปลี่ยนชื่อเมธอด hasPendingChanges() จาก Recomposer เป็น hasInvalidations() (Ib2f32, b/168293643, b/167972292, b/165028371)
  • อัปเดตพารามิเตอร์ Size.Unspecified ให้เป็น Float.NaN แทน Float.POSITIVE_INFINITY อัปเดตการใช้งาน Painter เพื่อ ตรวจสอบกับ Size.Unspecified ด้วย รวมถึงขนาดที่ไม่ใช่จำนวนจำกัด (I95a7e)
  • ลำดับการเรียกใช้ place() ในเลย์เอาต์ที่กำหนดเองจะกำหนดลำดับการวาดสำหรับวิดเจ็ตย่อย (Ibc9f6)
  • รองรับการแปลง AnnotatedString เป็น SpannableString เพื่อการช่วยเหลือพิเศษ (Ief907)
  • เพิ่ม Stub สำหรับคลาส Android ที่อยู่ในแพลตฟอร์มรุ่นเก่าเพื่อหลีกเลี่ยงการใช้การสะท้อนเมื่อเป็นไปได้ (Ia1790)
  • แก้ไขข้อบกพร่อง: หากแป้นพิมพ์ซอฟต์แวร์แสดงขึ้นทำให้แอปแปลภาษา พิกัดอินพุตของเคอร์เซอร์จะกลายเป็นไม่ถูกต้อง (Ic4cec, b/163077821)

เวอร์ชัน 1.0.0-alpha04

1 ตุลาคม 2020

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

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

  • เพิ่ม OwnerScope เพื่ออนุญาตให้รวบรวม ขอบเขตการสังเกตเลย์เอาต์และการวาดเมื่อ ไม่ถูกต้องอีกต่อไป (Ic4cf8)
  • เพิ่ม OnRemeasuredModifier และ onSizeChanged() เพื่อ รับการเรียกกลับเมื่อมีการวัดเลย์เอาต์เนื้อหาอีกครั้งและ ขนาดมีการเปลี่ยนแปลงตามลำดับ (I657cf, b/154108792)
  • เพิ่มการดำเนินการตามความหมายของการคลิกแบบยาว (I6281b, b/156468846)
  • ทำให้ FocusManager เป็นแบบส่วนตัว (I7872f)
  • อัปเดตการใช้งานเพื่อสร้าง การใช้งาน DrawCacheModifier โดยเฉพาะ แทนที่จะเพิ่มพร็อพเพอร์ตี้ที่ไม่บังคับใน DrawModifier

    อัปเดตเอกสารประกอบสำหรับเมธอดต่างๆ (Ibd166)

  • ทำให้ TextRange เป็นแบบอินไลน์เพื่อหลีกเลี่ยงการสร้างออบเจ็กต์ (Id034b)

  • PlacementScope#parentWidth และ PlacementScope#parentLayoutDirection จะอ่านจากบล็อกตำแหน่งของเลย์เอาต์ที่กำหนดเองไม่ได้อีกต่อไป (Icc1ae, b/168295623)

  • เพิ่ม AccessibilityScrollState ลงในพร็อพเพอร์ตี้ความหมาย (Ifeda9)

  • เปิดตัว Modifier.drawWithCache เพื่อรองรับการสร้างออบเจ็กต์การวาด ที่สร้างการอ้างอิงใหม่แบบมีเงื่อนไข ซึ่งขึ้นอยู่กับข้อมูลขนาด/สถานะ (I376dc)

  • นำ ParagraphConstraints ออกแล้ว ตอนนี้ระบบจะส่งความกว้างไปยังย่อหน้าโดยตรง (Ica712)

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

  • อัปเดต Graphics API หลายรายการ
    • อัปเดต API การแปลงขนาดและการหมุน เพื่อใช้พารามิเตอร์ออฟเซ็ตเดียว เพื่อแสดงพิกัดจุดหมุน แทนพารามิเตอร์ลอยตัวแยกกัน สำหรับพิกัด x/y ใน DrawScope และ DrawTransform
    • นำเมธอด Rect.expandToInclude และ Rect.join ออกแล้ว
    • อัปเดตเอกสารประกอบเกี่ยวกับรัศมีให้ระบุว่าวงรี นอกเหนือจากวงกลม
    • เพิ่มเอกสารเพื่อระบุว่าไม่ควรเรียกใช้ตัวสร้างสาธารณะสำหรับคลาส Radius แบบอินไลน์โดยตรง แต่ควรสร้างออบเจ็กต์ Radius ผ่านตัวสร้างฟังก์ชันของออบเจ็กต์แทน
    • นำ API RoundRect ออกเพื่อค้นหา topRight, bottomRight, bottomCenter ฯลฯ
    • เลิกใช้ Rect.shift เพื่อใช้ Rect.translate แทน
    • นำ API RoundRect.grow และ Rect.shrink ออกแล้ว
    • เปลี่ยนชื่อ RoundRect.outerRect เป็น Rect.boundingRect
    • นำเมธอด RoundRect.middleRect/tallMiddleRect/wideMiddleRect และ Rect.isStadium ออก
    • เปลี่ยนชื่อ RoundRect.longestSide เป็น RoundRect.maxDimension
    • เปลี่ยนชื่อ RoundRect.shortestSide เป็น RoundRect.minDimension
    • เปลี่ยน RoundRect.center ให้เป็นพร็อพเพอร์ตี้แทนที่จะเป็นฟังก์ชัน
    • อัปเดตตัวสร้าง RoundRect เพื่อใช้พร็อพเพอร์ตี้ Radius แทนพารามิเตอร์แต่ละรายการสำหรับค่ารัศมี x/y
    • นำ API ขนาดที่ถือว่าเป็นสี่เหลี่ยมผืนผ้าที่มี ต้นทางที่ 0,0 ออกแล้ว
    • เพิ่ม API การทำลายลงใน Radius
    • ย้ายฟังก์ชันส่วนขยาย RoundRect ต่างๆ ไปเป็น พร็อพเพอร์ตี้แทน
    • (I8f5c7, b/168762961)
  • เลิกใช้งาน foundation.Box แล้ว โปรดใช้ foundation.layout.Box แทน (Ie5950, b/167680279)
  • เปลี่ยนชื่อ Stack เป็น Box แล้ว ระบบจะเลิกใช้งาน Box ที่มีอยู่ก่อนหน้านี้เพื่อรองรับ Box ใหม่ใน compose.foundation.layout ลักษณะการทำงานของ Box ใหม่คือการวางองค์ประกอบย่อยซ้อนกันเมื่อมีองค์ประกอบย่อยหลายรายการ ซึ่งแตกต่างจาก Box ก่อนหน้าที่มีลักษณะการทำงานคล้ายกับคอลัมน์ (I94893, b/167680279)
  • เลิกใช้งานพารามิเตอร์การตกแต่งกล่องแล้ว หากต้องการมีการตกแต่ง/ระยะห่างภายในในช่อง ให้ใช้ตัวแก้ไขแทน (Modifier.background, Modifier.border, Modifier.padding) (Ibae92, b/167680279)
  • อัปเดต Graphics API หลายรายการ
    • อัปเดต DrawScope API ด้วยเมธอดการเปลี่ยนรูปแบบที่กำหนดขอบเขตเพื่อระบุว่าระบบจะใช้การเปลี่ยนรูปแบบภายในโค้ดเรียกกลับเท่านั้น และจะนำออกหลังจากเรียกใช้โค้ดเรียกกลับ
    • อัปเดตเอกสารประกอบ clipPath เพื่ออ้างอิงถึง Path แทนสี่เหลี่ยมผืนผ้าโค้งมน
    • แก้ไขการเว้นวรรคในเอกสารประกอบสำหรับพารามิเตอร์ right ใน clipPath
    • เปลี่ยนชื่อ DrawScope.drawCanvas เป็น drawIntoCanvas และ นำพารามิเตอร์ขนาดออก
    • เปลี่ยนชื่อพารามิเตอร์ dx/dy ในเมธอด inset เป็น horizontal และ vertical
    • เพิ่มการโอเวอร์โหลด Inset ที่ให้ค่า Inset เดียวกันกับขอบทั้ง 4 ด้าน
    • นำเอกสารเกี่ยวกับวิธีการแทรกที่ระบุว่า จะใช้การแทรกกับทั้ง 4 ด้านออก
    • เอกสารประกอบที่อัปเดตสำหรับคลาส Rect
    • อัปเดตความคิดเห็นเกี่ยวกับพารามิเตอร์ Rect ให้ตรงกับรูปแบบ kdoc
    • นำ Rect.join และ Rect.expandToInclude ออกแล้ว
    • สร้างการโอเวอร์โหลดสำหรับ Rect.translate(offset) และ เลิกใช้งาน Rect.shift
    • (If086a, b/167737376)
  • ใส่คำอธิบายประกอบ rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled และ textInputServiceFactory ด้วย @VisibleForTesting เพื่อให้เป็น API ภายในและซ่อน KDoc (I554eb, b/168308412)
  • นำ SelectionContainer ออกจากด้านบนเพื่อปิดใช้การเลือกเริ่มต้นและหลีกเลี่ยงลักษณะการทำงานที่ไม่คาดคิด คุณสามารถใช้ SelectionContainer เพื่อห่อหุ้มเนื้อหาที่ต้องเลือกได้แทน (I8dfe0, b/158459594)

เวอร์ชัน 1.0.0-alpha03

16 กันยายน 2020

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

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

  • นำการดำเนินการเชิงความหมายของการเลื่อนไปข้างหน้า/ข้างหลังออก เพิ่มขั้นตอน ใน AccessibilityRangeInfo (Ia47b0)
  • นำ onInvalidate() ออกจาก Owner -- OwnedLayer จัดการการทำให้เป็นโมฆะ (Ica72b, b/162061312)
  • นำวิธีการของโอเปอเรเตอร์ใน Size API ที่ใช้พารามิเตอร์ออฟเซ็ตออก ผลลัพธ์ของการดำเนินการเหล่านี้ไม่ชัดเจน และประเภทของผลลัพธ์ไม่คาดคิด สำหรับรายการเหล่านี้ เช่น ควรให้ขนาด - ออฟเซ็ตส่งคืน ออฟเซ็ตหรือผลลัพธ์ขนาดที่มีความแตกต่าง

    นอกจากนี้ยังนำเมธอดที่เลิกใช้งานแล้วในคลาส Size ออกด้วย (Iec902, b/166514214)

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

  • แก้ไขปัญหาที่บางครั้งมีการวาดรายการของ LazyColumn อย่างไม่ถูกต้อง ซึ่งทำให้เกิดข้อขัดข้องในบางกรณีด้วย (Ibcf17, b/163066980, b/165921895)
  • เราเลิกใช้งาน DpConstraints และ API ที่ใช้ DpConstraints แล้ว (I90cdb, b/167389835)
  • ย้าย createAndroidComposeRule และ AndroidInputDispatcher จาก androidx.ui.test.android ไปยัง androidx.ui.test (Idef08, b/164060572)
  • การใช้งานแรงโน้มถ่วงได้รับการเปลี่ยนชื่ออย่างสม่ำเสมอเป็น "จัดแนว" หรือ "การจัดแนว" ใน Layout API (I2421a, b/164077038)
  • เพิ่ม onNode และเมธอดส่วนกลางอื่นๆ ใน ComposeTestRule เนื่องจาก เมธอดส่วนกลางปัจจุบันจะเลิกใช้งาน (Ieae36)

เวอร์ชัน 1.0.0-alpha02

2 กันยายน 2020

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

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

  • remove callback to notify Owner when layoutnode bounds change. (If654e, b/166106882)
  • เพิ่มการรองรับพารามิเตอร์ filltype ในเส้นทางกราฟิกแบบเวกเตอร์ เพื่อรองรับการตัดรูปร่างตาม กฎการเติมเส้นทาง evenOdd หรือ NonZero (I43dd2)
  • ตอนนี้เวลาทำงานและความเร็วเป็นคลาสอินไลน์แล้ว (I48f4a)
  • ตอนนี้ระยะเวลาเป็นคลาสแบบอินไลน์ (I565eb)
  • เพิ่มการเรียกกลับเพื่อแจ้งให้เจ้าของทราบเมื่อขอบเขตของ LayoutNode เปลี่ยนแปลง (Ic40b3)
  • แก้ไขปัญหาที่ตัวสร้างฟังก์ชัน Rect ที่มีออฟเซ็ตและรัศมีจะสร้าง Rect ใน ลำดับซ้าย ขวา บน ล่าง แทนที่จะเป็น ซ้าย บน ขวา ล่าง

    นำวิธีการที่เลิกใช้งานแล้วใน Rect ออกเพื่อใช้ตัวสร้างฟังก์ชันแทน

    เพิ่มการทดสอบเพื่อยืนยันวิธีการใน Rect.kt (I08460, b/165822356)

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

  • เพิ่ม MutableRect ซึ่งเป็นสี่เหลี่ยมผืนผ้าที่แก้ไขได้ (I71bd2, b/160140398)
  • Matrix4 ถูกแทนที่ด้วย Matrix ส่วนอื่นๆ ทั้งหมด ของแพ็กเกจ vectormath ถูกนำออกแล้ว (Ibd665, b/160140398)
  • รูปแบบการเรียกฟังก์ชันที่ใช้ร่วมกันได้มีการเปลี่ยนแปลง นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบแบบไบนารี ต้อง คอมไพล์ไลบรารีทั้งหมดอีกครั้งเพื่อให้ทำงานร่วมกับปลั๊กอินคอมไพเลอร์ Compose เวอร์ชันนี้ได้

    การเปลี่ยนแปลงนี้ไม่ได้สร้างการเปลี่ยนแปลงที่ทําให้เกิดข้อขัดข้องในระดับแหล่งที่มา เนื่องจากมีเพียง API ของคอมไพเลอร์เท่านั้นที่เปลี่ยนแปลงและต้องเลือกใช้โดยชัดแจ้ง (I7afd2, b/158123185)

  • แก้ไขข้อขัดข้องที่อาจเกิดขึ้นเมื่อ การส่งไปยัง PointerInputFilter อาจทำให้ ระบบนำ PointerInputFilter ออกพร้อมกัน (I58f25)

เวอร์ชัน 1.0.0-alpha01

26 สิงหาคม 2020

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

เวอร์ชัน 0.1.0-dev

เวอร์ชัน 0.1.0-dev17

19 สิงหาคม 2020

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

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

  • emitView ถูกเลิกใช้งานแล้ว หากเป็นไปได้ ให้ใช้ AndroidView แทนเพื่อส่ง View ภายใน Compose โปรดทราบว่าในอนาคตเราจะไม่รองรับการเขียน View และ ViewGroup โดยตรง เว้นแต่จะเป็นองค์ประกอบสุดท้ายในโครงสร้างการเขียน ซึ่งในกรณีนี้จะทำได้โดยใช้ AndroidView (I29b1e, b/163871221)
  • FocusState2 ถูกเลิกใช้งานและแทนที่ด้วย FocusState (Ia8b79, b/160822876, b/160923332)
  • นำการโอเวอร์โหลด AndroidView ที่เลิกใช้งานแล้วออก (I946b9, b/163802393)
  • ตอนนี้ Custom emits สามารถประกาศได้ว่าข้ามตัวตั้งค่าอย่างน้อย 1 รายการ และประกอบใหม่โดยไม่ขึ้นอยู่กับ emit ได้ (Ibbd13)
  • เปลี่ยนคลาส Vector เพื่อไม่ให้เป็นคลาสข้อมูลอีกต่อไป เนื่องจากใช้ออบเจ็กต์อินสแตนซ์เดียวกัน สำหรับการเรียบเรียง

    เพิ่มแฟล็ก mutableStateOf สำหรับ VectorPainter เพื่อวาดซ้ำแบบมีเงื่อนไขหากเนื้อหาของ เวกเตอร์มีการเปลี่ยนแปลง

    รีแฟกเตอร์อินสแตนซ์ VectorComponent ให้เป็น ส่วนหนึ่งของ VectorPainter เนื่องจากมีการนำมาใช้ซ้ำ ในการเรียบเรียงเพลง

    อัปเดต GroupComponent และ PathComponent เพื่อให้ฟิลด์ชื่อแก้ไขได้ (Ieae45, b/151378808)

  • นำ onChildPositioned และ OnChildPositionedModifier ออกแล้ว นักพัฒนาแอปควรใช้ onPositioned และ OnPositionedModifier ในเลย์เอาต์ย่อยแทน (I4522e, b/162109766)

  • ออฟเซ็ตกลายเป็นคลาสอินไลน์ (Iaec70)

  • เพิ่มพารามิเตอร์ตัวแก้ไขลงใน SelectionContainer (I4aada, b/161487952)

  • นำ FocusModifier ที่เลิกใช้งานแล้วออก (I0b4ba, b/160922116, b/160821157, b/162441435, b/160822875, b/160921940)

  • เพิ่ม Lambda mergePolicy ไปยัง SemanticsPropertyKey แล้ว ซึ่งใช้เพื่อกำหนดนโยบายที่กำหนดเองสำหรับตรรกะของ mergeAllDescendants การผสานได้ นโยบายเริ่มต้นคือการใช้ค่าระดับบนหากมีอยู่แล้ว ไม่เช่นนั้นจะใช้ค่าระดับล่าง (Iaf6c4, b/161979921)

  • ตอนนี้ข้อจำกัดเป็นคลาสแบบอินไลน์แล้ว (I88736)

  • เพิ่ม FocusManager ที่ย้ายตรรกะโฟกัสทั่วไปออกจาก AndroidComposeView (I528ef, b/161487952, b/162206799)

  • อัปเดตชื่อ PointerEventPass สำหรับรุ่นอัลฟ่า (Ifda6f)

  • ตอนนี้ IntOffset เป็นคลาสอินไลน์ (Iac0bf) แล้ว

  • ตอนนี้ IntSize เป็นคลาสแบบอินไลน์ (I2bf42) แล้ว

  • เราเปลี่ยนชื่อ PlacementScope.placeAbsolute() เป็น PlacementScope.place() และเปลี่ยนชื่อ PlacementScope.place() ก่อนหน้าเป็น PlacementScope.placeRelative() ด้วยเหตุนี้ วิธี PlacementScope.place() จะไม่สะท้อนตำแหน่งในบริบทจากขวาไปซ้ายโดยอัตโนมัติอีกต่อไป หากต้องการใช้ฟีเจอร์นี้ ให้ใช้ PlacementScope.placeRelative() แทน (I873ac, b/162916675)

  • ตอนนี้ AlertDialog ใช้ FlowRow สำหรับปุ่มแล้ว (I00ec1, b/161809319, b/143682374)

  • ทำให้ยูทิลิตีการทดสอบบางอย่างเป็นแบบไม่สาธารณะเนื่องจากไม่ได้อยู่ในตำแหน่งที่ควรอยู่ จะเผยแพร่ต่อสาธารณะในอนาคต (I32ab1)

  • จัดระเบียบโค้ดอินพุตของเคอร์เซอร์ใหม่ (Ie3f45)

  • เลิกใช้ PxBounds ใน Rect อัปเดตการใช้งานทั้งหมด ของ PxBounds ด้วย rect และเพิ่ม คำอธิบายประกอบที่เลิกใช้งาน/แทนที่อย่างเหมาะสม เพื่อช่วยในการ ย้ายข้อมูล (I37038, b/162627058)

  • นำ KeyEvent2 ที่เลิกใช้งานแล้วออก โปรดใช้ KeyEvent แทน (Ied2d0, b/162097587)

  • KeyEvent มีพร็อพเพอร์ตี้ Unicode ที่ใช้เพื่อรับอักขระ Unicode ที่สร้างขึ้นจากชุดค่าผสมของสถานะคีย์และสถานะเมตาคีย์ที่ระบุได้ (If3afc)

  • ทำให้เหตุการณ์ที่กำหนดเอง DelayUp และคลาสที่เกี่ยวข้องเป็น API ที่ต้องเลือกใช้เนื่องจาก มีแนวโน้มที่จะมีการเปลี่ยนแปลง (I56d6f)

  • นำ PointerEventPasses 2 รายการที่ไม่จำเป็นอีกต่อไปออก (I3dd9d)

  • เพิ่มพารามิเตอร์สี เงา และ TextDecoration ไปยัง Paragraph.paint ฟังก์ชันนี้มีประโยชน์ในการหลีกเลี่ยงการสร้าง Paragraph ใหม่โดยไม่จำเป็น (I81689)

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

  • นำการเรียกกลับ onFocusChanged ออกจาก TextField ใช้ Modifier.focusObserver แทน (I51089, b/161297615)
  • เลิกใช้งาน Modifier.drawBorder แล้ว โปรดใช้ Modifier.border แทน แทนที่คลาสข้อมูลเส้นขอบด้วย BorderStroke (I4257d, b/158160576)
  • นำการเรียก FrameManager ที่เลิกใช้งานแล้วออก

    มีการเปลี่ยนแปลง API การเขียนภายในเพื่อลดปริมาณ ค่าใช้จ่ายในการติดตามออบเจ็กต์สถานะ เช่น mutableStateof() (I80ba6)

  • เราได้นำ VerticalScroller และ HorizontalScroller ออกแล้ว โปรดใช้ ScrollableColumn/Row แทน นำ Modifier.drawBackground ออกแล้ว ใช้ Modifier.background (I73b0d, b/163019183)

  • แก้ไขข้อขัดข้องเมื่อมีการใช้สิ่งที่บันทึกสถานะภายในลูป for ตอนนี้ระบบอนุญาตให้มีคีย์เดียวกันใน savedInstanceState() แล้ว เราจึงปรับ API ของ UiSavedStateRegistry ให้เป็นไปตามข้อกำหนดใหม่นี้ (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561)

  • ตอนนี้เราเลิกใช้งาน state { ... } ที่ใช้ร่วมกันได้แล้วเพื่อเปลี่ยนไปใช้ การเรียก remember { mutableStateOf(...) } อย่างชัดเจนเพื่อความชัดเจน ซึ่งจะช่วยลดพื้นผิว API โดยรวมและจำนวนแนวคิดสำหรับการจัดการสถานะ รวมถึงตรงกับรูปแบบ by mutableStateOf() สำหรับการมอบสิทธิ์พร็อพเพอร์ตี้ของคลาส (Ia5727)

  • เปลี่ยนชื่อ RRect เป็น RoundRect เพื่อให้สอดคล้องกับรูปแบบการตั้งชื่อของ Compose มากขึ้น สร้างตัวสร้างฟังก์ชันที่คล้ายกัน กับ RRect และเลิกใช้งานตัวสร้างฟังก์ชัน RRect (I5d325)

เวอร์ชัน 0.1.0-dev16

5 สิงหาคม 2020

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

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

  • เลิกใช้งาน OnChildPositioned แล้ว ให้ใช้ OnPositioned ในองค์ประกอบย่อยแทน (I87f95, b/162109766)
  • เลิกใช้งาน setViewContent แล้ว ควรใช้ setContent แทน (I7e497, b/160335130)
  • เพิ่ม AndroidViewBinding API สำหรับการขยายและจัดองค์ประกอบทรัพยากรเลย์เอาต์ตาม ViewBinding (I081c6)
  • KeyEvent2 จะแทนที่ด้วย KeyEvent (I2d770, b/162097585)
  • เพิ่มการรองรับคีย์ฮาร์ดแวร์ Alt (I9036b)
  • เลิกใช้งาน FocusManager แล้ว โปรดใช้ Modifier.focus(), Modifier.focusObserver() และ Modifier.focusRequester() แทน (I74ae4, b/162211322)
  • loadVectorResource รองรับแอตทริบิวต์ trimPath (I808fe)
  • ย้ายกล่องโต้ตอบไปยัง UI (I47fa6)
  • นำ PointerEventPasses 2 รายการที่ไม่จำเป็นอีกต่อไปออก (I33ca7)
  • ใช้ PointerInteropModifier ซึ่งช่วยให้รับ MotionEvent และโต้ตอบกับ Compose ได้ ราวกับว่าคุณใช้ Android View (Ieb08c)
  • นำตัวแก้ไขแท็กที่เลิกใช้งานแล้วออก โปรดใช้ layoutId แทน (Idaa05, b/162023919)
  • มีการอัปเดต API สำหรับการรองรับจากขวาไปซ้ายแล้ว เพิ่ม LayoutDirectionAmbient ซึ่งใช้เพื่ออ่านและเปลี่ยนทิศทางการจัดวางได้ นำ Modifier.rtl และ Modifier.ltr ออกแล้ว (I080b3)
  • รองรับการตัดเส้นทางในกราฟิกเวกเตอร์ (Ie16c9, b/158188351)
  • เพิ่ม Modifier.layout() ที่ช่วยให้สร้างตัวแก้ไขเลย์เอาต์ที่กำหนดเองได้อย่างสะดวก (I73b69, b/161355194)
  • เพิ่ม API ของ AndroidView ใหม่และเลิกใช้งาน API ที่มีอยู่ (I5bcfd)
  • เลิกใช้งาน Modifier.plus แล้ว ให้ใช้ Modifier.then แทน คำว่า "จากนั้น" มีสัญญาณที่ชัดเจนกว่าในการเรียงลำดับ และยังห้ามพิมพ์ Modifier.padding().background() + anotherModifier ซึ่งจะทำให้การอ่านยากขึ้น (Iedd58, b/161529964)
  • เพิ่ม [Abstract]ComposeView คลาสย่อยของ View สำหรับโฮสต์เนื้อหา Compose ในลำดับชั้นของ View (I46357)
  • ตอนนี้ Row และ Column เป็นฟังก์ชันแบบอินไลน์แล้ว ซึ่งช่วยลดค่าใช้จ่ายในการใช้งานได้อย่างมาก (I75c10)
  • เพิ่ม SubcomposeLayout แล้ว ซึ่งเป็นองค์ประกอบระดับต่ำที่ช่วยให้เราจัดวางองค์ประกอบย่อยในระหว่างการวัดได้ หากต้องการใช้ค่าบางอย่างที่ใช้ได้ในภายหลังระหว่างการวัดสำหรับการจัดวางองค์ประกอบย่อย เช่น WithConstraints ไม่ได้ใช้ SubcomposeLayout (I25cc8)
  • เพิ่ม SemanticsNode.positionInRoot เพื่อรับตำแหน่งของ SemanticsNode ที่สัมพันธ์กับรูทของลำดับชั้น Compose (Icdf26, b/161336532)
  • MotionEvent จะส่งผ่านจาก Android ไปยัง Compose และกลับไปยัง Android (I14be8, b/158034713)
  • นำ DropdownPopup ออกแล้ว (I00430)
  • ตำแหน่งป๊อปอัปคงที่บนจอแสดงผลที่มีรอยบาก (Idd7dd)
  • เพิ่มการดำเนินการสำหรับการช่วยเหลือพิเศษเพื่อรับ TextLayoutResult (I9d6e6)
  • เพิ่ม RemeasurementModifier ซึ่งช่วยให้วัดเลย์เอาต์อีกครั้งแบบซิงโครนัสได้ โดยทั่วไปคุณไม่จำเป็นต้องใช้เนื่องจากระบบจะทำการวัดซ้ำ/จัดเลย์เอาต์ใหม่โดยอัตโนมัติ แต่เราใช้ภายใน LazyColumnItems ระหว่างการเลื่อน (I5f331, b/160791058)
  • นำ getLineEllipsisOffset/getLineEllipsisCount ออก ใช้ getLineVisibleEnd/getLineEnd/isLineEllipsized แทน (I85aa2)
  • เพิ่มเครื่องหมาย/คำอธิบายประกอบเพื่อเป็นแนวทางปฏิบัติแนะนำ (I66b20)
  • เปิดเผย API บรรทัดเพิ่มเติมใน TextLayoutResult (I79bd2)
  • ตอนนี้คุณเข้าถึงตัวแปลงเวกเตอร์แบบบิวท์อินเพื่อแปลงหน่วยแบบบิวท์อินได้แล้วผ่าน Foo.VectorConverter เช่น Dp.VectorConverter, Color.VectorConverter, Float.VectorConverter เป็นต้น (I3e273)

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

  • แก้ไข API ที่กว้าง (I077bc)
    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 และนำเมธอดที่ไม่ได้ใช้ออก
  • อัปเดตการใช้งาน BlendMode API ของ Compose เพื่อแมประหว่าง BlendMode ของเฟรมเวิร์ก Android กับโหมด PorterDuff อย่างถูกต้องตามระดับ API เปิดตัว BlendMode#isSupported API เพื่อทำหน้าที่ เป็นคำค้นหาความสามารถเพื่อพิจารณาว่าอุปกรณ์รองรับ BlendMode หรือไม่ก่อนที่จะใช้งาน (I0ef42)
  • เพิ่ม LazyItemScope สำหรับพารามิเตอร์ itemContent ของรายการ Lazy โดยจะให้ตัวแก้ไขเพื่อเติมขนาดสูงสุดขององค์ประกอบระดับบน ซึ่งจะแก้ Use Case เมื่อรายการควรเติมวิวพอร์ตและ Modifier.fillMaxSize() ปกติใช้ไม่ได้เนื่องจากระบบวัดรายการด้วยข้อจำกัดแบบอนันต์ (Ibd3b2, b/162248854)
  • นำ SemanticsNodeInteraction.performPartialGesture ออกแล้ว โปรดใช้ SemanticsNodeInteraction.performGesture แทน (Id9b62)
  • เปลี่ยนชื่อ LazyColumnItems เป็น LazyColumnFor แล้ว เปลี่ยนชื่อ LazyRowItems เป็น LazyRowFor (I84f84) แล้ว
  • foundation.shape.corner แพ็กเกจถูกลดระดับเป็น foundation.share (I46491, b/161887429)
  • เปลี่ยนชื่อ AndroidComposeTestRule เป็น createAndroidComposeRule แล้ว (I70aaf)
  • เพิ่ม API ลงใน TextLayoutResult (Id7e04)
  • เราได้เปลี่ยนชื่อ Material FilledTextField เป็น TextField และเปลี่ยนชื่อพื้นฐาน TextField เป็น BaseTextField เพื่อให้ค้นพบและใช้งาน API ที่ต้องการได้ง่ายที่สุด (Ia6242, b/155482676)
  • เปลี่ยนชื่อ Modifier.drawBackground เป็น Modifier.background (I13677)

เวอร์ชัน 0.1.0-dev15

22 กรกฎาคม 2020

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

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

  • หากต้องการใช้ Compose เวอร์ชัน 0.1.0-dev15 คุณจะต้องอัปเดตการอ้างอิง ตามข้อมูลโค้ดใหม่ที่แสดงด้านบนในส่วนการประกาศการอ้างอิง

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

  • FocusModifier เลิกใช้งานแล้วเพื่อใช้ Modifier.focus, Modifier.focusRequester, Modifier.focusObserver แทน เราเลิกใช้งาน FocusState และ FocusDetailedState แล้วเพื่อรองรับ FocusState2 (I46919, b/160822875, b/160922136)
  • เพิ่มตัวแก้ไขเพื่อสังเกตการเปลี่ยนแปลงสถานะโฟกัส (I05866, b/160924455, b/160923326)
  • เพิ่มตัวแก้ไขเพื่อขอการเปลี่ยนแปลงโฟกัส (I8dd73, b/161182057, b/160924778)
  • ปรับเมนูแถบเครื่องมือเพื่อให้แสดงการคัดลอก ตัด วาง ได้อย่างถูกต้อง (Id3955)
  • พร็อพเพอร์ตี้ที่มีความหมายแบบค่าเดียวจะใช้รูปแบบการเรียกในตอนนี้ เช่น ตอนนี้เขียน 'semantics { hidden = true }' เป็น semantics { hidden() } (Ic1afd, b/145951226, b/145955412)
  • เพิ่ม Modifier.focus ซึ่งจะแทนที่ FocusModifier (Ib852a, b/160924778)
  • เพิ่ม FloatingToolbar สำหรับการเลือก TextField (Ie8b07)
  • เพิ่มคำอธิบายประกอบ API เวอร์ชันทดลองสำหรับ API ที่เกี่ยวข้องกับการป้อนคีย์ (I53c0a)
  • เพิ่มคำอธิบายประกอบ API เวอร์ชันทดลองสำหรับ API ทั้งหมดที่เกี่ยวข้องกับโฟกัส (I53b24, b/160903352)
  • เพิ่ม FocusState2 ซึ่งจะแทนที่ FocusDetailedState (I0a3ba, b/160822595)
  • เพิ่ม ExperimentalFocus ซึ่งเป็นคำอธิบายประกอบ @OptIn สำหรับ Focus API (I1544b, b/160820961)
  • เพิ่มคลาสหน่วย IntBounds ซึ่งแสดงขอบเขตพิกเซลจำนวนเต็มจากการจัดวาง เราได้อัปเดต API ของ PopupPositionProvider เพื่อให้ใช้ได้แล้ว (I0d8d0, b/159596546)
  • ตอนนี้ Applier ต้องมีเมธอด clear() สำหรับการทิ้ง องค์ประกอบ (Ibe697)
  • เลิกใช้งาน KeyEvent แล้วและแทนที่ด้วย KeyEvent2 (I68730)
  • เพิ่มแฟล็กที่ไม่บังคับใหม่ useUnmergedTree ลงในเครื่องมือค้นหาการทดสอบ (I2ce48)
  • ทำให้ LayoutNode เป็น API เวอร์ชันทดลอง (I4f2e9)
  • เพิ่มวิธีการคัดลอกไปยังคลาสประเภทต่างๆ ในบรรทัด ได้แก่

    • ออฟเซ็ต
    • ขนาด
    • รัศมี
    • การเคลื่อนไหว
    • TransformOrigin

    • เลิกใช้งานเมธอด Size.copy companion object เพื่อใช้เมธอดสำเนาอินสแตนซ์แทน (Ife290, b/159905651)

  • ตอนนี้ป๊อปอัป กล่องโต้ตอบ และเมนูจะรับค่า MaterialTheme ตามบริบทแล้ว (Ia3665, b/156527485)

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

  • นำพารามิเตอร์ทิศทางเลย์เอาต์ออกจากบล็อกการวัดของฟังก์ชัน Layout() อย่างไรก็ตาม คุณสามารถดูทิศทางเลย์เอาต์ได้ภายในโค้ดเรียกกลับผ่านออบเจ็กต์ขอบเขตการวัด (Ic7d9d)

  • ปรับโครงสร้าง SelectionHandles เพื่อนำกลับมาใช้ใหม่ (I420e0)

  • นำ Clickable ออกแล้ว ใช้ Modifier.clickable (I84bdf)

  • ลบ TestTag และ Semantics แล้ว ให้ใช้ Modifier.testTag และ Modifier.semantics แทน (I15ff0, b/158841414)

  • ก่อนการเปลี่ยนแปลงนี้ ปลั๊กอินคอมไพเลอร์ Compose จะดักจับการเรียกไปยังตัวสร้างภายในฟังก์ชัน @Composable อย่างไม่เหมาะสมหากมี (I5205a, b/158123804)

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

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

  • เพิ่มพารามิเตอร์ตัวแก้ไขลงใน Composable ของ AndroidView (I48a88, b/158746303)

  • เลิกใช้งาน Semantics() แล้ว โปรดใช้ Modifier.semantics() แทน (I72407, b/158841414)

  • เพิ่ม Composable viewModel() ซึ่งช่วยให้สร้างหรือรับ ViewModel ที่สร้างไว้แล้วได้ในลักษณะเดียวกับที่ทำงานใน Activity หรือ Fragment (I5fdd1)

  • แทนที่การใช้งาน IntPx ด้วย Int แทนที่ IntPxPosition ด้วย IntOffset แทนที่ IntPxSize ด้วย IntSize (Ib7b44)

  • เพื่อรวมจำนวนคลาสที่ใช้เพื่อแสดงข้อมูลการปรับขนาด ให้ใช้คลาส Size แทน PxSize ซึ่งจะให้ประโยชน์ ของคลาสอินไลน์เพื่อใช้ประโยชน์จาก Long ในการแพ็กค่า Float 2 ค่าเพื่อแสดง ความกว้างและความสูงที่แสดงเป็น Float (Ic0191)

  • เพื่อรวมจำนวนคลาสที่ใช้เพื่อแสดงข้อมูลการวางตำแหน่ง ให้ใช้คลาส Offset แทน PxPosition ซึ่งจะให้ประโยชน์ ของคลาสอินไลน์เพื่อใช้ประโยชน์จาก Long ในการแพ็กค่า Float 2 ค่าเพื่อแสดงออฟเซ็ต x และ y ที่แสดงเป็น Float (I3ad98)

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

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

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

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

  • ตอนนี้เราเลิกใช้งาน TestTag แล้ว ใช้ Modifier.testTag แทน (If5110, b/157173105)

  • เราได้นำการติดตั้งใช้งานเริ่มต้นแบบไม่มีการดำเนินการของ ParentDataModifier#modifyParentData ออกแล้ว ซึ่งเทียบเท่ากับการไม่ติดตั้งใช้งานอินเทอร์เฟซตั้งแต่แรก (I0deaa)

  • เลิกใช้งาน ScaleFit ก่อนหน้านี้แล้ว จึงนำออก โปรดใช้ ContentScale แทน (Ifbc5b)

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

  • เพิ่มคอมโพเนนต์ DropdownMenu ใน ui-material ซึ่งเป็นการติดตั้งใช้งานเมนู Material Design (I9bb3d)

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

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

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

  • การใช้งาน CanvasScope ที่รวมกัน ตอนนี้จึงมีเพียง DrawScope และ ContentDrawScope เปลี่ยนชื่อ CanvasScope เป็น DrawScope อัปเดต DrawScope เพื่อใช้ Density interface และจัดเตรียม LayoutDirection อัปเดตคลาสย่อย DrawScope ที่ลบแล้วใน ContentDrawScope Painter และ PainterModifier เพื่อไม่ให้รักษาพร็อพเพอร์ตี้ RTL ไว้ด้วยตนเองอีกต่อไป เนื่องจาก DrawScope มีพร็อพเพอร์ตี้นี้อยู่แล้ว โดยไม่ต้องระบุด้วยตนเอง (I1798e)

  • ตอนนี้ DoubleTapGestureFilter จะแยกความแตกต่างของ SingleTapGestureFilter ในโครงสร้าง (If92b1)

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

  • มีการเปลี่ยนแปลง API ตัวแก้ไข DrawLayer โดยเปลี่ยนชื่อ outlineShape เป็น shape และมีค่าเริ่มต้นเป็น RectangleShape และตอนนี้ไม่สามารถเป็น Null ได้ เปลี่ยนชื่อ clipToOutline เป็น clip และนำ clipToBounds ออกเนื่องจากเหมือนกับ clip == true ที่มี RectangleShape (I7ef11, b/155075735)

  • อัปเดต API Compose ระดับสูงขึ้น ที่แสดง Canvas เพื่อ แสดง CanvasScope แทน ซึ่งจะช่วยลดความจำเป็นที่ผู้บริโภคต้องดูแลออบเจ็กต์ Paint ของตนเอง สำหรับผู้บริโภคที่ยังต้องการเข้าถึง Canvas สามารถใช้วิธีส่วนขยาย drawCanvas ซึ่งมีฟังก์ชันเรียกกลับเพื่อออกคำสั่งวาดด้วย Canvas พื้นฐาน (I80afd)

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

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

  • นำอินเทอร์เฟซ LayoutModifier ที่เลิกใช้งานแล้วออก (I2a9d6)

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

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

  • เพิ่ม Modifier.zIndex() ใหม่เพื่อควบคุมลำดับการวาดขององค์ประกอบย่อยภายในเลย์เอาต์ระดับบนสุดเดียวกัน เปลี่ยนชื่อพร็อพเพอร์ตี้ elevation ใน DrawLayerModifier เป็น shadowElevation และจะไม่ควบคุมลำดับการวาดอีกต่อไป มีการเปลี่ยนแปลงลำดับพารามิเตอร์สำหรับ DrawShadow โดยตอนนี้ค่าระดับความสูงจะเป็นพารามิเตอร์แรก และรูปร่างจะเป็นพารามิเตอร์ที่ 2 โดยมี RectangleShape เป็นค่าเริ่มต้น (I20150, b/152417501)

  • นำ onSizeChange และ onPositionChange ออกใน Owner (I5c718)

  • เพิ่ม Constraints2 ซึ่งเป็นสำเนาของ Constraints ที่รองรับเฉพาะค่าข้อจำกัด Int แทน IntPx IntPx จะถูกนำออก และจะถือว่าข้อจำกัดจำนวนเต็มทั้งหมด เป็นพิกเซลเหมือน Android

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

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

  • (I45f09, b/152842521)

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

  • เปิดตัว API สำหรับขยาย Android View จาก XML ดูรายละเอียดเพิ่มเติมได้ที่การสาธิต ViewInCompose (I42916)

  • ปรับปรุง DrawModifier API:

    • สร้างขอบเขตตัวรับสำหรับ draw() ContentDrawScope
    • นำพารามิเตอร์ทั้งหมดใน draw() ออก
    • DrawScope มีอินเทอร์เฟซเหมือนกับ CanvasScope รุ่นก่อน
    • ContentDrawScope มีเมธอด drawContent() (Ibaced, b/152919067)
  • เพิ่ม positionInParent และ boundsInParent สำหรับ LayoutCoordinates (Icacdd, b/152735784)

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

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

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

  • แทนที่ตัวแก้ไขและตัวดำเนินการด้วยฟังก์ชันส่วนขยายของโรงงาน (I225e4)

  • เพิ่มพร็อพเพอร์ตี้ translationX/Y เพื่อรองรับ การชดเชยรายการที่แสดงของคำสั่งการวาดสำหรับ เลเยอร์ที่กำหนด ซึ่งมีประโยชน์ในการย้ายเนื้อหา เพื่อตอบสนองต่อภาพเคลื่อนไหวหรือเหตุการณ์การแตะ (I8641c)

  • เพิ่มพารามิเตอร์ pivotX, pivotY ลงใน Layer API เพื่อรองรับการหมุนและการปรับขนาด รอบจุดหนึ่งๆ ในเลเยอร์ (Icf7c3)

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

  • เพิ่ม LayerModifier ซึ่งเป็นตัวแก้ไขที่อนุญาต ให้เพิ่ม RenderNode สำหรับเลย์เอาต์ ซึ่งช่วยให้ตั้งค่า การครอบตัด ความทึบ การหมุน การปรับขนาด และเงาได้ ซึ่งจะแทนที่ RepaintBoundary (I7100d, b/150774014)

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

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

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

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

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

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

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

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

  • สร้าง CanvasScope API ที่ห่อหุ้มออบเจ็กต์ Canvas เพื่อแสดงพื้นผิว API การวาดภาพแบบประกาศที่ไม่มีสถานะ การเปลี่ยนรูปแบบจะอยู่ในขอบเขตของตัวรับสัญญาณเอง และข้อมูลการปรับขนาดจะอยู่ในขอบเขตของขอบเขตการแทรกที่สอดคล้องกันด้วย โดยไม่จำเป็นต้องให้ผู้ใช้ดูแลออบเจ็กต์สถานะ Paint ของตนเองเพื่อกำหนดค่าการดำเนินการวาด

    • เพิ่ม CanvasScopeSample รวมถึง อัปเดตแอปเดโมให้มีเดโมกราฟิกแบบประกาศ (Ifd86d)
  • นำ MaskFilter API ที่ไม่ได้ใช้ออก เนื่องจากมีการใช้งานที่จำกัดและไม่ได้ปรับให้เหมาะสม สำหรับการเร่งด้วยฮาร์ดแวร์ในกรณีการใช้งานส่วนใหญ่ (I54f76)

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

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

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

  • เพิ่มสีที่ไม่ได้ตั้งค่าเพื่อแสดงค่าที่ไม่ได้ตั้งค่าโดยไม่ ต้องใส่สีในกรอบ (If901a)

  • เพิ่มเมธอดส่วนขยาย Canvas.rotate และ Canvas.scale เพื่อใช้พิกัดจุดหมุนที่ไม่บังคับสำหรับการเปลี่ยนรูป ค่าเริ่มต้นเหล่านี้จะอยู่ที่มุมซ้ายบนของ การแปล Canvas ปัจจุบัน

    นอกจากนี้ ยังย้าย Canvas.rotateRad ไปเป็น เมธอดส่วนขยายเพื่อความสอดคล้องกัน (Ibaca6)

  • สร้าง PixelMap API เพื่อรองรับ การค้นหาข้อมูลพิกเซลจาก ImageAsset (I69ad6)

  • เปลี่ยนชื่อเป็น toFrameworkRect/toFrameworkRectF เป็น toAndroidRect/toAndroidRectF เพื่อให้ตรงกับรูปแบบการตั้งชื่อ สำหรับการแปลงออบเจ็กต์ระหว่าง Compose กับ Android Framework API ที่สร้างขึ้น นอกจากนี้ เรายังอัปเดตเอกสารเกี่ยวกับ API เหล่านี้ด้วย (I86337)

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

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

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

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

  • เพิ่มตัวดำเนินการ TextDecoration.plus (I0ad1a)

  • นำ Force ออกจากค่า enum ของ TextDirectionAlgorithm (Icc944)

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

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

  • เพิ่ม AnnotatedString.getStringAnnotations ที่แสดงผลคำอธิบายประกอบทั้งหมดภายในช่วง (I1fa00)

  • เปลี่ยนชื่อแพ็กเกจสำหรับ Locale และ LocaleList จาก androidx.ui.text เป็น androidx.ui.intl (I8132c)

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

  • การเปลี่ยนแปลง API: เปลี่ยนชื่อ AnnotatedString(builder: Builder) เป็น annotatedString(builder: Builder) (Ia6377)

  • การเปลี่ยนแปลง API: เปลี่ยนชื่อ AnnotatedString.Item เป็น AnnotatedString.Range (I2d44d)

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

  • ตอนนี้คุณสามารถซ่อน/แสดงแป้นพิมพ์ซอฟต์แวร์ได้โดยใช้ SoftwareKeyboardController ซึ่งส่งผ่านโดยการเรียกกลับ onTextInputStarted (I8dc44, b/151860051)

  • เพิ่มโอเปอเรเตอร์บวกสำหรับ (Text/Paragraph/Span)Style ซึ่ง มอบหมายให้ฟังก์ชัน merge() (Ia1add)

  • FontWeight.lerp ไม่ได้สแนปอีกต่อไป แต่ยังคงเป็นคลาสข้อมูล (I521c2)

  • ตอนนี้ตัวสร้าง FontWeight เป็นแบบสาธารณะแล้ว และไม่ใช่คลาสข้อมูลอีกต่อไป (Id6b1f)

  • เพิ่ม getLineStart, getLineEnd, getEllipsisOffset และ getEllipsisCount ลงใน TextLayoutResult (Ibc801)

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

  • นำคลาส Size ที่ไม่ได้ใช้ออก เนื่องจากมีคลาส Size ที่ซ้ำกัน ในโมดูล ui-geometry ที่ กำลังใช้งานอยู่ (I1b602)

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

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

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

  • เปลี่ยนชื่อการเรียกกลับ onFocusChange ในช่องข้อความเป็น onFocusChanged (Ida4a1)
  • เลิกใช้งาน VerticalScroller และ HoriziontalScroller แล้ว ใช้ ScrollableColumn และ ScrollableRow เพื่อสร้างประสบการณ์การใช้งานในตัวที่มีลักษณะการทำงานและพารามิเตอร์ของ Column/Row หรือ Modifier.verticalScroll และ Modifier.horizontalScroll ในองค์ประกอบของคุณเอง ในทำนองเดียวกัน เราได้เลิกใช้งาน ScrollerPosition เพื่อให้ใช้ ScrollState แทน (I400ce, b/157225838, b/149460415, b/154105299)
  • เปลี่ยนชื่อเป็น runOnIdle (I83607)runOnIdleCompose
  • เราได้เปลี่ยนชื่อ API สำหรับการทดสอบหลายรายการเพื่อให้ใช้งานง่ายขึ้น เราได้เปลี่ยนชื่อ API ทั้งหมดที่ขึ้นต้นด้วย findXYZ เป็น onNodeXYZ API ทั้งหมดที่ขึ้นต้นด้วย doXYZ จะเปลี่ยนชื่อเป็น performXYZ (I7f164)
  • ตอนนี้คุณสามารถเขียน UI ของ Compose ภายใน ViewGroup ได้โดยไม่ต้องเขียนใหม่ ดูตัวอย่างได้ที่ ViewInteropDemo (I9ab0b, b/160455080)
  • เพิ่ม sortWith และ removeRange ลงใน MutableVector (Icccf7)
  • ใช้แฮนเดิลการเลือกแบบลากเพื่อเปลี่ยนการเลือกสำหรับ TextField (I27032)
  • นำคลาสอินไลน์ Shader ที่ ห่อหุ้มคลาสที่คาดไว้ของ NativeShader ออก เปลี่ยนชื่อ NativeShader เป็น Shader คลาสอินไลน์ Shader ที่ห่อไว้ไม่ได้เพิ่มสิ่งที่มีประโยชน์ใดๆ ให้กับพื้นผิว API และเป็นคลาสอินไลน์ ดังนั้นให้ใช้คลาส NativeShader โดยตรง (I25e4d)
  • ปรับโครงสร้าง PainterModifier เพื่อไม่ให้มีการปรับขนาดตาม ข้อจำกัดและพารามิเตอร์ ContentScale ที่ระบุอีกต่อไป การใช้งาน Painter จะต้องปรับขนาดเนื้อหาการวาด ด้วยตนเองตามขนาดที่กำหนดของ DrawScope ที่วาดลงไป

    แก้ไขปัญหาที่แคชของ VectorPainter บิตแมปมีขนาดเป็นขนาดเริ่มต้น แทนที่จะเป็นขนาดที่ระบุเพื่อวาด

    อัปเดต ImagePainter เพื่อปรับขนาดเนื้อหา แทนที่จะใช้ PainterModifier เพื่อดำเนินการดังกล่าวในนามของตน (I6ba90)

  • เพิ่มฟังก์ชัน withFrameNanos ระดับบนสุดสำหรับการกำหนดเวลาภาพเคลื่อนไหว (Ie34c5)

  • เราเลิกใช้งานคำอธิบายประกอบ @Untracked แล้ว แทนที่ด้วย @ComposableContract(tracked=false) (Id211e)

  • เลิกใช้งาน androidx.ui.foundation.TextFieldValue และ androidx.ui.input.EditorValue แล้ว นอกจากนี้ ยังมีการเลิกใช้งาน Composable TextField, FilledTextField และ CoreTextField ที่ใช้ประเภทดังกล่าวด้วย โปรดใช้ androidx.ui.input.TextFieldValue แทน (I4066d, b/155211005)

  • แก้ไขปัญหาที่อินพุตของเคอร์เซอร์ dispatch จะทำให้เกิดข้อขัดข้องหาก PointerInputFilters ถูกนำออกผ่าน subcomposition ระหว่างการส่ง ซึ่งตอนนี้ปัญหาได้รับการแก้ไขแล้ว (I1f48b, b/157998762)

  • แก้ไขปัญหาที่การเรียกใช้การป้อนข้อมูลเคอร์เซอร์จะทำให้เกิดข้อขัดข้องหากมีการนำ PointerInputFilters ออกผ่าน องค์ประกอบย่อยระหว่างการเรียกใช้ ซึ่งตอนนี้ปัญหาได้รับการแก้ไขแล้ว (Iab398, b/157998762)

  • ปรับโครงสร้างคลาส Radius ให้เป็น คลาสอินไลน์ นำวิธีการสร้างคอมแพเนียนออก เพื่อใช้ตัวสร้างฟังก์ชัน ที่มีพารามิเตอร์เริ่มต้นเพื่อให้รัศมี ตามแกน y ตรงกับพารามิเตอร์รัศมีแกน x ที่จำเป็น

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

  • Composable ของ Recompose ไม่ใช่การแยกส่วนที่มีประโยชน์อีกต่อไป การประกอบใหม่ส่วนใหญ่ควรเกิดขึ้นจากการกำหนด MutableState หากต้องการดำเนินการอื่นๆ นอกเหนือจากนี้ เราขอแนะนำให้คุณใช้ฟังก์ชัน invalidate เพื่อทริกเกอร์การจัดองค์ประกอบขอบเขตปัจจุบันใหม่ (Ifc992)

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

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

    ซึ่งหมายความว่าตรรกะส่วนใหญ่ที่สื่อสารกับรันไทม์ของ Compose จะเกิดขึ้นที่จุดเริ่มต้นของเนื้อหาฟังก์ชัน แทนที่จะเป็นที่ Callsite

    การเปลี่ยนแปลงนี้ควรเป็นแหล่งที่มาที่เข้ากันได้สำหรับการใช้งาน Compose ทั้งหมด ผู้ใช้ Compose ส่วนใหญ่ไม่จำเป็นต้องอัปเดตโค้ดใดๆ อันเป็นผลมาจากการเปลี่ยนแปลงนี้

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

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

    การเปลี่ยนแปลงพฤติกรรมโดยเจตนาที่ทราบซึ่งเป็นผลมาจากการเปลี่ยนแปลงนี้มีดังนี้

    1. การโทรบางสายจะข้ามในกรณีที่ก่อนหน้านี้จะไม่ข้าม
    2. ตอนนี้ระบบจะติดตามและจัดการนิพจน์ที่ประกอบได้ในนิพจน์อาร์กิวเมนต์เริ่มต้นอย่างถูกต้องแล้ว

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

    การเปลี่ยนแปลงที่ทำให้เกิดข้อขัดข้องส่วนใหญ่เป็น API ที่คอมไพเลอร์กำหนดเป้าหมายโดยตรง และการใช้งาน Compose โดยทั่วไปจะไม่ได้รับผลกระทบ 1. นำ Composer::startExpr ออกแล้ว 2. นำ Composer::endExpr ออกแล้ว 3. เลิกใช้งาน Composer::call แล้ว 4. เราได้นำโอเวอร์โหลดที่ไม่ใช่ varargs ของ key ออกแล้ว ตั้งแต่นี้ไปให้ใช้vararg 5. เราเลิกใช้งานคำอธิบายประกอบที่สำคัญแล้ว ใช้ key แทน 6. มีการเปลี่ยนแปลง ScopeUpdateScope::updateScope ให้คาดหวัง Function3 แทน Function1 7 มีการอัปเดต restartableFunction และ restartableFunctionN ให้รวมพารามิเตอร์เพิ่มเติมในเวลาคอมไพล์ (I60756, b/143464846)

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

  • นำ RepaintBoundary ออกเพื่อใช้ DrawLayerModifier (I00aa4)

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

  • แทนที่ ButtonStyle ด้วยฟังก์ชันที่แตกต่างกันและนำการโอเวอร์โหลดข้อความ (สตริง) ออก ดูตัวอย่างที่อัปเดตแล้วสำหรับข้อมูลการใช้งาน (If63ab, b/146478620, b/146482131)

  • การเปลี่ยนแปลงที่ไม่รองรับการทำงานย้อนหลังใน Ambient API ดูรายละเอียดได้ในบันทึกและเอกสารประกอบของ Ambient<T> (I4c7ee, b/143769776)

  • เปลี่ยนลักษณะการทำงานของ TextDirection เริ่มต้นให้กำหนดโดย LayoutDirection กล่าวคือ หาก LayoutDirection เป็น RTL TextDirection เริ่มต้นจะเป็น RTL ก่อนหน้านี้คือ TextDirection.ContentOrLtr/Rtl (I4e803)

  • การแก้ไขข้อบกพร่อง: เมื่อมีการซ้อนน้ำหนักแบบอักษรและรูปแบบแบบอักษรใน AnnotatedString ระบบจะไม่แสดงข้อความอย่างถูกต้อง (I77a9d)

  • เพิ่มพารามิเตอร์ที่ใช้กันทั่วไปลงใน Text() หากปัจจุบันคุณสร้างรูปแบบข้อความในเครื่องเพื่อส่งพารามิเตอร์เหล่านี้จำนวนเล็กน้อย เช่น Text(style = TextStyle(textAlign = TextAlign.Center)) ตอนนี้คุณก็ระบุพารามิเตอร์ได้โดยตรง: Text(textAlign = TextAlign.Center) (I82768)

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