UI ของ Compose

องค์ประกอบพื้นฐานของ UI การเขียนที่จำเป็นต่อการโต้ตอบกับอุปกรณ์ ซึ่งรวมถึงเลย์เอาต์ ภาพวาด และอินพุต
อัปเดตล่าสุด รุ่นที่เสถียร รุ่นที่อาจได้รับการเผยแพร่ รุ่นเบต้า เวอร์ชันอัลฟ่า
11 ธันวาคม 2024 1.7.6 - - 1.8.0-alpha07

โครงสร้าง

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

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

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

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

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

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

Groovy

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

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

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

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

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

ความคิดเห็น

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

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

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

เวอร์ชัน 1.8

เวอร์ชัน 1.8.0-alpha07

11 ธันวาคม 2024

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

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

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

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

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

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

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

เวอร์ชัน 1.8.0-alpha06

13 พฤศจิกายน 2024

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

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

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

เวอร์ชัน 1.8.0-alpha05

30 ตุลาคม 2024

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

ฟีเจอร์ใหม่

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

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

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

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

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

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

เวอร์ชัน 1.8.0-alpha04

16 ตุลาคม 2024

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

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

  • เพิ่มการเรียกกลับ DelegatableNode#onDensityChange และ DelegatableNode#onLayoutDirectionChange เพื่ออนุญาตให้อัปเดตสถานะโหนดเมื่อมีการเปลี่ยนแปลงเหล่านี้ (I04f3e, b/340662451)
  • เพิ่ม WindowInfo#containerSize เพื่อระบุขนาดคอนเทนเนอร์เนื้อหาของหน้าต่างปัจจุบัน ซึ่งเรียกดูได้โดยใช้ LocalWindowInfo (Idc38c, b/369334429, b/360343819)
  • เปิดตัวการแก้ไขสำหรับรายการที่เลื่อนได้แบบซ้อนกันซึ่งถูกนำออกจากต้นไม้โหนดระหว่างการฟลิงก์ที่ดำเนินอยู่ ตอนนี้โหนดเหล่านี้จะยกเลิกการแตะแล้วส่งเหตุการณ์ onPostFling พร้อมความเร็วที่เหลืออย่างถูกต้อง นอกจากนี้ เรายังเปิดตัว Flag 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)
  • เปิดตัวบทบาทเชิงอรรถศาสตร์ใหม่ที่เรียกว่าภาพสไลด์เพื่อจําลองลักษณะการทํางานของรายการในโปรแกรมเลื่อนหน้าสำหรับบริการการช่วยเหลือพิเศษ (Id354b, b/354109776, b/239672673)
  • เปลี่ยนชื่อ invisibleToUser() เป็น hideFromAccessibility แต่ฟังก์ชันการทำงานจะยังคงเหมือนเดิม ดูรายละเอียดเพิ่มเติมในเอกสารประกอบ (Ib43a3)

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

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

เวอร์ชัน 1.8.0-alpha02

18 กันยายน 2024

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

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

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

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

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

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

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

เวอร์ชัน 1.8.0-alpha01

4 กันยายน 2024

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

เวอร์ชัน 1.7

เวอร์ชัน 1.7.6

11 ธันวาคม 2024

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

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

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

เวอร์ชัน 1.7.5

30 ตุลาคม 2024

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

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

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

เวอร์ชัน 1.7.4

16 ตุลาคม 2024

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

เวอร์ชัน 1.7.3

2 ตุลาคม 2024

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

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

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

เวอร์ชัน 1.7.2

18 กันยายน 2024

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

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

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

เวอร์ชัน 1.7.1

10 กันยายน 2024

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

เวอร์ชัน 1.7.0

4 กันยายน 2024

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

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

การเปลี่ยนแปลงที่สําคัญในเวอร์ชัน 1.7.0 มีอยู่ในบล็อกโพสต์นี้

เวอร์ชัน 1.7.0-rc01

21 สิงหาคม 2024

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

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

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

เวอร์ชัน 1.7.0-beta07

7 สิงหาคม 2024

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

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

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

เวอร์ชัน 1.7.0-beta06

24 กรกฎาคม 2024

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

เวอร์ชัน 1.7.0-beta05

10 กรกฎาคม 2024

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

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

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

เวอร์ชัน 1.7.0-beta04

26 มิถุนายน 2024

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

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

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

เวอร์ชัน 1.7.0-beta03

12 มิถุนายน 2024

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

เวอร์ชัน 1.7.0-beta02

29 พฤษภาคม 2024

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

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

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

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

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

เวอร์ชัน 1.7.0-beta01

14 พฤษภาคม 2024

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

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

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

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

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

เวอร์ชัน 1.7.0-alpha08

1 พฤษภาคม 2024

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

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

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

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

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

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

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

เวอร์ชัน 1.7.0-alpha07

17 เมษายน 2024

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

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

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

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

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

เวอร์ชัน 1.7.0-alpha06

3 เมษายน 2024

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

ฟีเจอร์ใหม่

  • เพิ่มเมธอด parseAsHtml สำหรับสตริงที่มีสไตล์ ซึ่งช่วยให้แปลงสตริงที่มีการทำเครื่องหมายด้วยแท็ก HTML เป็น AnnotatedString ได้ โปรดทราบว่าระบบรองรับแท็กบางรายการเท่านั้น เช่น คุณยังแสดงลิสต์หัวข้อไม่ได้ (I84d3d, I30626, b/139326648)
  • รองรับภาพหน้าจอแบบยาวในคอนเทนเนอร์การเลื่อนของเครื่องมือเขียนโดยใช้ Android API อย่างเป็นทางการ (ScrollCaptureCallback) ฟีเจอร์นี้อยู่ในขั้นทดลองและอาจจัดการกับบางกรณีอย่างไม่ถูกต้องในขณะนี้ ด้วยเหตุนี้ ระบบจึงปิดใช้ฟีเจอร์นี้โดยค่าเริ่มต้น หากต้องการเลือกใช้ ให้ตั้งค่า 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 เพื่อรองรับการแสดงผลเนื้อหาของบิตแมปเป็น GraphicsLayer การดำเนินการนี้คือการแสดงผลที่เร่งด้วยฮาร์ดแวร์ใน API ระดับ 22 ขึ้นไป (รวม) ซึ่งรองรับอุปกรณ์ Android กว่า 99% ใน Android API ระดับ 21 ระบบจะใช้การแสดงผลซอฟต์แวร์แทน (I9e114)
  • เมธอดตัวช่วยในการแปลง Android RectF เป็น ComposeRect (I39925, b/325660505)
  • ตอนนี้พารามิเตอร์ KeyboardOptions ทั้งหมดมีค่าที่ไม่ระบุโดยค่าเริ่มต้น เพิ่มวิธีการ KeyboardOptions.merge แล้ว
  • เปลี่ยนชื่อ KeyboardOptions.autoCorrect เป็น autoCorrectEnabled และกำหนดให้มีค่า Null ได้ ซึ่ง Null หมายถึงไม่มีการระบุค่า (Ia8ba0, b/295951492)
  • ตอนนี้ตัวแปร BasicTextField(state) และ BasicSecureTextField ใช้ KeyboardActionHandler แทน KeyboardActions เพื่อประมวลผลการดำเนินการที่แป้นพิมพ์ซอฟต์แวร์ดำเนินการ (I58dda)

เวอร์ชัน 1.7.0-alpha05

20 มีนาคม 2024

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

ฟีเจอร์ใหม่

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

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

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

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

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

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

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

เวอร์ชัน 1.7.0-alpha04

6 มีนาคม 2024

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

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

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

เวอร์ชัน 1.7.0-alpha03

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

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

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

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

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

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

เวอร์ชัน 1.7.0-alpha02

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

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

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

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

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

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

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

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

เวอร์ชัน 1.7.0-alpha01

24 มกราคม 2024

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

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

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

เวอร์ชัน 1.6

เวอร์ชัน 1.6.8

12 มิถุนายน 2024

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

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

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

เวอร์ชัน 1.6.7

1 พฤษภาคม 2024

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

เวอร์ชัน 1.6.6

17 เมษายน 2024

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

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

  • แก้ไขข้อขัดข้องของ BasicTextField ที่พบไม่บ่อย

เวอร์ชัน 1.6.5

3 เมษายน 2024

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

เวอร์ชัน 1.6.4

20 มีนาคม 2024

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

เวอร์ชัน 1.6.3

6 มีนาคม 2024

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

เวอร์ชัน 1.6.2

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

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

เวอร์ชัน 1.6.1

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

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

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

เวอร์ชัน 1.6.0

24 มกราคม 2024

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

เวอร์ชัน 1.6.0-rc01

10 มกราคม 2024

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

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

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

เวอร์ชัน 1.6.0-beta03

13 ธันวาคม 2023

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

ฟีเจอร์ใหม่

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

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

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

เวอร์ชัน 1.6.0-beta02

29 พฤศจิกายน 2023

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

เวอร์ชัน 1.6.0-beta01

15 พฤศจิกายน 2023

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

เวอร์ชัน 1.6.0-alpha08

18 ตุลาคม 2023

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

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

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

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

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

เวอร์ชัน 1.6.0-alpha07

4 ตุลาคม 2023

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

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

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

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

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

เวอร์ชัน 1.6.0-alpha06

20 กันยายน 2023

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

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

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

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

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

เวอร์ชัน 1.6.0-alpha05

6 กันยายน 2023

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

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

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

เวอร์ชัน 1.6.0-alpha04

23 สิงหาคม 2023

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

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

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

เวอร์ชัน 1.6.0-alpha03

9 สิงหาคม 2023

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

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

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

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

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

เวอร์ชัน 1.6.0-alpha02

26 กรกฎาคม 2023

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

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

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

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

  • ตอนนี้การเรียกใช้ครั้งแรกของ update callback ของ AndroidView จะเลื่อนออกไปจนกว่าจะมีการแนบมุมมองแทนที่จะทำงานเมื่อใช้คอมโพสิชันที่นําเสนอ AndroidView การแก้ไขนี้ช่วยแก้ไขข้อบกพร่องที่การเรียกกลับ update จะไม่เสียผลหากสถานะที่อ่านมีการเปลี่ยนแปลงโดยเอฟเฟกต์ทันที (Ie9438, b/291094055)

เวอร์ชัน 1.6.0-alpha01

21 มิถุนายน 2023

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

ฟีเจอร์ใหม่

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

รุ่น 1.5

เวอร์ชัน 1.5.4

18 ตุลาคม 2023

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

เวอร์ชัน 1.5.3

4 ตุลาคม 2023

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

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

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

รุ่น 1.5.2

27 กันยายน 2023

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

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

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

รุ่น 1.5.1

6 กันยายน 2023

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

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

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

เวอร์ชัน 1.5.0

9 สิงหาคม 2023

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

เวอร์ชัน 1.5.0-rc01

26 กรกฎาคม 2023

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

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

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

เวอร์ชัน 1.5.0-beta03

28 มิถุนายน 2023

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

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

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

เวอร์ชัน 1.5.0-beta02

7 มิถุนายน 2023

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

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

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

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

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

เวอร์ชัน 1.5.0-beta01

24 พฤษภาคม 2023

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

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

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

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

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

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

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

เวอร์ชัน 1.5.0-alpha04

10 พฤษภาคม 2023

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

ฟีเจอร์ใหม่

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

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

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

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

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

เวอร์ชัน 1.5.0-alpha03

19 เมษายน 2023

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

ฟีเจอร์ใหม่

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

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

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

เวอร์ชัน 1.5.0-alpha02

5 เมษายน 2023

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

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

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

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

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

เวอร์ชัน 1.5.0-alpha01

22 มีนาคม 2023

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

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

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

เวอร์ชัน 1.4

เวอร์ชัน 1.4.3

3 พฤษภาคม 2023

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

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

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

เวอร์ชัน 1.4.2

19 เมษายน 2023

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

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

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

เวอร์ชัน 1.4.1

5 เมษายน 2023

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

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

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

เวอร์ชัน 1.4.0

22 มีนาคม 2023

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

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

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

เวอร์ชัน 1.4.0-rc01

8 มีนาคม 2023

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

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

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

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

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

เวอร์ชัน 1.4.0-beta02

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

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

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

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

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

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

เวอร์ชัน 1.4.0-beta01

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

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

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

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

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

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

เวอร์ชัน 1.4.0-alpha05

25 มกราคม 2023

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

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

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

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

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

เวอร์ชัน 1.4.0-alpha04

11 มกราคม 2023

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

ฟีเจอร์ใหม่

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

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

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

เวอร์ชัน 1.4.0-alpha03

7 ธันวาคม 2022

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

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

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

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

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

การอัปเดตทรัพยากร Dependency

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

เวอร์ชัน 1.4.0-alpha02

9 พฤศจิกายน 2022

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

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

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

เวอร์ชัน 1.4.0-alpha01

24 ตุลาคม 2022

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

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

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

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

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

เวอร์ชัน 1.3

เวอร์ชัน 1.3.3

11 มกราคม 2023

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

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

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

เวอร์ชัน 1.3.2

7 ธันวาคม 2022

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

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

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

เวอร์ชัน 1.3.1

9 พฤศจิกายน 2022

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

เวอร์ชัน 1.3.0

24 ตุลาคม 2022

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

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

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

เวอร์ชัน 1.3.0-rc01

5 ตุลาคม 2022

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

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

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

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

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

เวอร์ชัน 1.3.0-beta03

21 กันยายน 2022

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

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

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

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

  • ตอนนี้ BackHandler API ของ AndroidX Activity ทํางานภายในคอมโพสิชัน Dialog แล้ว (I35342)

เวอร์ชัน 1.3.0-beta02

7 กันยายน 2022

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

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

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

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

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

เวอร์ชัน 1.3.0-beta01

24 สิงหาคม 2022

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

การจัดระเบียบโหนดตัวแก้ไข

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

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

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

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

ความเสี่ยง

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

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

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

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

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

การเปลี่ยนแปลงที่ทําให้ลักษณะการทํางานเปลี่ยนแปลง

ระยะห่างสูงสุดที่รองรับในกล่องโต้ตอบและป๊อปอัปลดลงเหลือ 8dp

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

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

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

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

เวอร์ชัน 1.3.0-alpha03

10 สิงหาคม 2022

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

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

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

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

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

เวอร์ชัน 1.3.0-alpha02

27 กรกฎาคม 2022

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

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

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

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

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

เวอร์ชัน 1.3.0-alpha01

29 มิถุนายน 2022

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

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

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

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

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

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

  • เพิ่ม API ใหม่ WindowInfo.keyboardModifiers เพื่อสังเกตสถานะภายในฟังก์ชันคอมโพสิเบิลหรือผ่าน snapshotFlow (Icdb8a)

เวอร์ชัน 1.2

เวอร์ชัน 1.2.1

10 สิงหาคม 2022

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

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

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

เวอร์ชัน 1.2.0

27 กรกฎาคม 2022

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

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

  • การปรับปรุงการโฟกัสไปยังส่วนต่างๆ

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

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

เวอร์ชัน 1.2.0-rc03

29 มิถุนายน 2022

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

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

เวอร์ชัน 1.2.0-rc02

22 มิถุนายน 2022

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

เวอร์ชัน 1.2.0-rc01

15 มิถุนายน 2022

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

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

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

เวอร์ชัน 1.2.0-beta03

1 มิถุนายน 2022

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

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

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

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

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

เวอร์ชัน 1.2.0-beta02

18 พฤษภาคม 2022

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

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

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

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

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

เวอร์ชัน 1.2.0-beta01

11 พฤษภาคม 2022

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

ฟีเจอร์ใหม่

  • นี่เป็นรุ่นเบต้าแรกของ 1.2

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

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

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

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

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

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

    โดยทำดังนี้

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

เวอร์ชัน 1.2.0-alpha08

20 เมษายน 2022

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

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

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

เวอร์ชัน 1.2.0-alpha07

6 เมษายน 2022

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

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

  • เพิ่มฟังก์ชันใหม่ Snapshot.withoutReadObservation { ... } แล้ว ซึ่งช่วยให้ผู้ใช้เรียกใช้ Lambda ที่ส่งมาได้โดยไม่ต้องติดตามการเปลี่ยนแปลงของค่าสถานะที่อ่านระหว่างบล็อกนี้ คุณอาจพบว่าการดำเนินการนี้มีประโยชน์ใน Use Case เมื่อต้องการใช้ประโยชน์จากการเขียน/อ่านที่ปลอดภัยสำหรับเธรดซึ่งอิงตามสแนปชอต แต่ต้องการอ่านค่าได้โดยไม่ก่อให้เกิดการคอมโพสิชันใหม่หรือการวัดผลอีกครั้งที่ไม่จำเป็น (I9f365, b/214054486)
  • พร็อพเพอร์ตี้ส่วนขยาย consumeWindowInsets ของ ComposeView ช่วยให้นักพัฒนาแอปปิดใช้การบริโภค Android WindowInsets ได้ วิธีนี้ช่วยให้ ComposeViews แยกกันในลําดับชั้นใช้ WindowInsets แต่ละรายการได้โดยไม่รบกวนกัน (I0ef08, b/220943142)
  • เพิ่ม KeyboardType.Decimal เพื่อเป็นทางเลือกแทน Keyboard.Number สำหรับการใช้ตัวคั่นทศนิยมใน IME โดยเฉพาะ (Iec4c8, b/209835363)
  • PointerEventType.Scroll และ PointerEvent.scrollDelta เป็น API เวอร์ชันเสถียรแล้ว (I574c5, b/225669674)
  • เปิดใช้การทำงานร่วมกันของ Nested Scroll ระหว่าง View กับ Compose สำหรับคลาส View ที่ทำงานร่วมกัน ซึ่งหมายความว่าตอนนี้คอมโพสิชันจะส่งค่า Delta ของการเลื่อนไปยังองค์ประกอบหลักของมุมมอง (ที่ทำงานร่วมกัน) ได้ (I5d1ac, b/174348612)
  • อัปเดต FontFamily.Resolver เพื่อผสานรวมการตั้งค่าการช่วยเหลือพิเศษสำหรับข้อความแบบหนาทั่วทั้งระบบ (I6c1e7)
  • Font(AssetManager, String, ...) เลิกใช้งานแล้ว แทนที่ด้วย Font(String, AssetManager, ...) นี่คือ API เวอร์ชันทดลอง (I1c7a4)
  • เพิ่มตัวบ่งชี้แบบอักษรใหม่ Font(DeviceFontFamilyName) เพื่อค้นหาแบบอักษรที่ระบบติดตั้งไว้ในระหว่างเชนแบบอักษรสำรอง (ไม่บังคับ) (I30468, b/219754572)
  • เพิ่มการกำหนดค่าความเข้ากันได้ชั่วคราวสำหรับ includeFontPadding ใน TextStyle/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)
  • อัปเดตการแยกวิเคราะห์รูปภาพที่วาดได้แบบเวกเตอร์เพื่อรองรับการมิเรอร์อัตโนมัติเพื่อพลิกเนื้อหาของ VectorPainter หากการวางแนวปัจจุบันเป็น RTL (I79cd9, b/185760237)
  • อัปเดตสีเงา/สีโดยรอบให้เป็นพารามิเตอร์ต่อท้ายของ Modifier.graphicsLayer เพื่อให้ใช้งานร่วมกับ API ได้ (I3f864, b/160665122)

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

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

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

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

  • เพิ่ม ViewCompositionStrategy.Default เป็นวิธีเรียกกลยุทธ์เริ่มต้นที่มีอยู่แล้ว

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

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

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

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

  • อัปเดต Vector Graphics API เพื่อใช้คำอธิบายประกอบคอมโพสิเบิลที่เหมาะสม @VectorComposable แทน @UiComposable (I942bc)
  • นำโฆษณาคั่นระหว่างหน้าออกจาก AnnotatedString.Builder.withStyle (If84d5)

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

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

เวอร์ชัน 1.2.0-alpha05

9 มีนาคม 2022

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

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

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

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

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

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

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

เวอร์ชัน 1.2.0-alpha04

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

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

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

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

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

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

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

  • FontLoadingStrategy เป็น API เวอร์ชันเสถียรแล้ว (I1ee35, b/174162090)

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

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

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

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

เวอร์ชัน 1.2.0-alpha03

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • นำ FontLoadingStrategy.values ออกแล้ว (I42a9d, b/174162090)

  • ตัวโหลดแบบอักษรส่วนกลางเปลี่ยนชื่อเป็น FontFamilyResolver แล้ว (I4f773, b/174162090)

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

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

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

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

เวอร์ชัน 1.2.0-alpha02

26 มกราคม 2022

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

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

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

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

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

เวอร์ชัน 1.2.0-alpha01

12 มกราคม 2022

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

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

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

การอัปเดตทรัพยากร Dependency

  • ตอนนี้ขึ้นอยู่กับ Kotlin 1.6.10

เวอร์ชัน 1.1

เวอร์ชัน 1.1.1

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

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

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

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

เวอร์ชัน 1.1.0

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

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

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

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

เวอร์ชัน 1.1.0-rc03

26 มกราคม 2022

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

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

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

เวอร์ชัน 1.1.0-rc01

15 ธันวาคม 2021

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

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

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

เวอร์ชัน 1.1.0-beta04

1 ธันวาคม 2021

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

ฟีเจอร์ใหม่

  • อัปเดตให้ใช้งานร่วมกับ Kotlin 1.6.0 ได้

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

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

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

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

เวอร์ชัน 1.1.0-beta03

17 พฤศจิกายน 2021

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

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

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

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

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

เวอร์ชัน 1.1.0-beta02

3 พฤศจิกายน 2021

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

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

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

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

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

เวอร์ชัน 1.1.0-beta01

27 ตุลาคม 2021

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

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

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

เวอร์ชัน 1.1.0-alpha06

13 ตุลาคม 2021

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

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

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

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

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

เวอร์ชัน 1.1.0-alpha05

29 กันยายน 2021

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

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

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

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

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

เวอร์ชัน 1.1.0-alpha04

15 กันยายน 2021

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

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

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

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

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

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

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

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

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

เวอร์ชัน 1.1.0-alpha03

1 กันยายน 2021

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

ฟีเจอร์ใหม่

  • อัปเดต Compose 1.1.0-alpha03 ให้ใช้ Kotlin 1.5.30 (I74545)

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

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

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

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

เวอร์ชัน 1.1.0-alpha02

18 สิงหาคม 2021

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

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

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

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

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

เวอร์ชัน 1.1.0-alpha01

4 สิงหาคม 2021

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

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

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

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

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

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

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

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

รุ่น 1.0

เวอร์ชัน 1.0.5

3 พฤศจิกายน 2021

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

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

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

เวอร์ชัน 1.0.4

13 ตุลาคม 2021

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

การอัปเดตทรัพยากร Dependency

  • อัปเดตให้ใช้ Kotlin 1.5.31

เวอร์ชัน 1.0.3

29 กันยายน 2021

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

การอัปเดตทรัพยากร Dependency

  • อัปเดตให้ใช้ Kotlin 1.5.30

เวอร์ชัน 1.0.2

1 กันยายน 2021

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

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

เวอร์ชัน 1.0.1

4 สิงหาคม 2021

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

การอัปเดตทรัพยากร Dependency

  • อัปเดตให้ใช้ Kotlin 1.5.21

เวอร์ชัน 1.0.0

28 กรกฎาคม 2021

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

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

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

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

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

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

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

เวอร์ชัน 1.0.0-rc02

14 กรกฎาคม 2021

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

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

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

เวอร์ชัน 1.0.0-rc01

1 กรกฎาคม 2021

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

ฟีเจอร์ใหม่

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

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

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

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

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

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

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

เวอร์ชัน 1.0.0-beta09

16 มิถุนายน 2021

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

กฎมีไว้เพื่ออะไร

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

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

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

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

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

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

เวอร์ชัน 1.0.0-beta08

2 มิถุนายน 2021

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

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

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

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

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

เวอร์ชัน 1.0.0-beta07

18 พฤษภาคม 2021

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

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

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

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

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

เวอร์ชัน 1.0.0-beta06

5 พฤษภาคม 2021

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

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

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

เวอร์ชัน 1.0.0-beta05

21 เมษายน 2021

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

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

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

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

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

เวอร์ชัน 1.0.0-beta04

7 เมษายน 2021

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

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

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

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

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

เวอร์ชัน 1.0.0-beta03

24 มีนาคม 2021

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

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

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

เวอร์ชัน 1.0.0-beta02

10 มีนาคม 2021

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

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

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

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

  • บังคับใช้ข้อจํากัดในการใช้งาน API เวอร์ชันทดลองแบบสาธารณะ (I6aa29, b/174531520)
  • androidx.compose.ui:ui ไม่ได้ขึ้นอยู่กับ AppCompat หรือ Fragment อีกต่อไป หากคุณใช้ ComposeView ในแอปพลิเคชันและกำลังใช้ Fragment และ/หรือ AppCompat โปรดตรวจสอบว่าคุณใช้ AppCompat 1.3 ขึ้นไป / Fragment 1.3 ขึ้นไป เนื่องจากเวอร์ชันเหล่านี้จำเป็นต้องใช้เพื่อตั้งค่าวงจรชีวิตของ ComposeView และเจ้าของสถานะที่บันทึกไว้อย่างถูกต้อง (I1d6fa, b/161814404)
  • แก้ไข rememberSaveable { mutableStateOf(0) } ที่ไม่ทำงานเมื่อใช้ในปลายทางของ navigation-compose (I1312b, b/180042685, b/180701630)
  • เพิ่ม LocalSoftwareKeyboardController composition local API ใหม่เพื่อแทนที่อินเทอร์เฟซ SoftwareKeyboardController ก่อนหน้าใน Text Field (I658b6, b/168778053)
  • แก้ไข NoSuchElementException ที่พบได้น้อยใน ComposeRootRegistry's 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

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

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

    สําหรับประเภทที่อนุญาตค่า Null ให้ลองระบุ { null } เป็นฟีเจอร์เริ่มต้น

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

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

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

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

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

  • การวางแนวย้ายไปอยู่ในแพ็กเกจ Foundation แล้ว ย้าย VelocityTracker จาก ui.gesture ไปยัง ui.input.pointer แล้ว (Iff4a8, b/175294473)

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

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

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

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

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

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

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

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

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

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

  • นำการยืนยัน dp ออกแล้ว (I798d2)

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

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

  • นำ runBlockingWithManualClock ออกแล้ว (I15cdc, b/179664814)

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

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

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

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

  • FontSpan และ FontWeigthStyleSpan ไม่ได้ใช้งานอีกต่อไปและถูกนำออกแล้ว (Ie5b56, b/177423444)

  • เปลี่ยนแปลง Material API ดังต่อไปนี้

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

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

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

เวอร์ชัน 1.0.0-alpha12

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

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

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

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

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

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

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

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

เวอร์ชัน 1.0.0-alpha11

28 มกราคม 2021

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

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

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

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

  • เราเลิกใช้งาน onCommit, onDispose และ onActive แล้วเพื่อหันมาใช้ SideEffect และ DisposableEffect API (If760e)
  • การเปลี่ยนแปลงฟังก์ชันเริ่มต้นสำหรับแบบอักษร/ชุดแบบอักษร/แบบตัวพิมพ์

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

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

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

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

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

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

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

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

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

  • RememberObserver จะมาแทนที่ CompositionLifecycleObserver และตอนนี้ CompositionLifecycleObserver เลิกใช้งานแล้ว

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

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

  • การดำเนินการทางคณิตศาสตร์ที่เลิกใช้งานระหว่าง TextUnit อย่างน้อย 2 รายการ ฟังก์ชัน TextUnit.Sp และ TextUnit.Em ที่เลิกใช้งานแล้ว โปรดใช้ฟังก์ชันส่วนขยาย เช่น Int.sp และ Int.em (I48369)

  • ตอนนี้ทรัพยากรในห้องสมุดที่ไม่มีทรัพยากรสาธารณะที่ประกาศไว้อย่างชัดเจน (เช่น ผ่าน public.xml) จะเป็นแบบส่วนตัวโดยค่าเริ่มต้น (Ia1dcc, b/170882230)

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

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

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

    • โปรดใช้ ImeAction.Default แทน ImeAction.Unspecified (Ie1bcc)
  • ใช้ประโยชน์จาก TestCoroutineDispatcher ในการทดสอบ (I532b6)

  • เปลี่ยนชื่อ TextInputService.onStateUpdated เป็น updateState (Id4853)

  • เลิกใช้งาน Transition ตาม TransitionDefinition แล้ว (I0ac57)

  • นํา TextUnitType.Inherit ออกแล้ว โปรดใช้ TextUnitType.Unspecified แทน (I9ff64)

เวอร์ชัน 1.0.0-alpha10

13 มกราคม 2021

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

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

  • การจัดโครงสร้างใหม่ของคอมไพเลอร์ภายใน API ช่วยให้สามารถรวมการเปลี่ยนแปลงของโหนดที่สร้างขึ้นจากคอมโพสิชันไว้ในระยะ "ใช้การเปลี่ยนแปลง" ของคอมโพสิชันได้ หลังจากที่ฟังก์ชัน @Composable ทั้งหมดทำงานเสร็จแล้ว

    การเปลี่ยนแปลงนี้เป็นการทําให้ลักษณะการทํางานเปลี่ยนแปลงไปซึ่งอาจส่งผลต่อโค้ดแอปพลิเคชัน เนื่องจากโหนดจะใช้ไม่ได้จาก API ภายในและ API ทดลองอีกต่อไปจนกว่าจะมีการใช้การเปลี่ยนแปลง โดยปกติแล้ว ปัญหานี้สามารถแก้ไขได้โดยการล้อมรอบโค้ดที่มี Dependency ดังกล่าวใน SideEffect composable เพื่อเลื่อนเวลาการเรียกใช้โค้ดจนกว่าจะสร้างและเริ่มต้นโหนดแล้ว (I018da)

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

  • เพิ่ม Modifier.focusOrder() ที่ใช้ระบุลําดับการโฟกัสที่กำหนดเองได้ (I90cf5, b/175899543, b/170155556, b/170155429)
  • นำ focusObserver ที่เลิกใช้งานแล้วออก และใช้ onFocusChanged หรือ onFocusEvent แทน (I3ecb9, b/175156387)
  • การเปลี่ยนแปลง EditOperations API
    • เปลี่ยนชื่อ EditOperation เป็น EditCommand
    • เพิ่มส่วนต่อท้ายคําสั่งสําหรับการใช้งาน EditOperation ที่เฉพาะเจาะจง
    • EditCommand ไม่ใช่คลาสข้อมูลอีกต่อไป
    • เปลี่ยนชื่อฟังก์ชัน EditOperation.process เป็น applyTo
    • เปลี่ยนชื่อ InputEventListener เป็น InputEventCallback
    • (I0a366)
  • นำ PxSquared, PxCubed, PxInverse ที่ไม่ได้ใช้ออก เปลี่ยน Size.center() เป็นพร็อพเพอร์ตี้ (I973f7)
  • ตอนนี้โมดูล ui-test จะกำหนดค่าการสร้าง Recomposer สำหรับ UI ภายใต้การทดสอบได้แล้ว (Ibebd8)
  • แก้ไข Velocity ให้มีองค์ประกอบและการดำเนินการทางคณิตศาสตร์ (Ib0447)
  • เปลี่ยนชื่อ @ExperimentalTesting เป็น @ExperimentalTestApi เพื่อให้สอดคล้องกับคำอธิบายประกอบ API เวอร์ชันทดลองที่คล้ายกัน (Ia4502, b/171464963)
  • เปลี่ยนชื่อ Color.useOrElse() เป็น Color.takeOrElse() (Ifdcf5)
  • นําคลาส DpInverse, DpSquared และ DpCubed ที่ไม่ได้ใช้ออก (I4d62b)
  • เปลี่ยนชื่อ Constraints#satisfiedBy เป็น isSatisfiedBy (I9cf5c)
  • เพิ่มการเรียกกลับเพื่อแจ้งให้เจ้าของทราบเมื่อขอบเขตของ layoutnode เปลี่ยนแปลง (I72fd1)
  • เพิ่ม isSpecified, isUnspecified และ useOrElse สำหรับคลาสอินไลน์ที่มีค่าคงที่ที่ไม่ระบุ (I93f7b, b/174310811)
  • ขยาย [Abstract]ComposeView API เพื่ออนุญาตให้รีไซเคิลมุมมองที่อิงตาม Compose โดยทิ้งการคอมโพสิชันเพื่อสร้างใหม่อีกครั้งในภายหลัง เพิ่ม API สําหรับการติดตั้งและค้นหา Recomposer ระดับหน้าต่าง และ CompositionReferences เพื่อสร้างองค์ประกอบย่อย

    เพิ่ม ViewCompositionStrategy สำหรับการกําหนดค่ากลยุทธ์การทิ้งองค์ประกอบของ [Abstract]ComposeViews โดยลักษณะการทํางานเริ่มต้นคือการทิ้งเมื่อหน้าต่างแยกออก (I860ab)

  • นํา API สาธารณะ Any.identityHashCode() ออกแล้ว (I025d7)

  • นํา API toStringAsFixed ออกเพื่อใช้ String.format โดยตรงแทน (Iaba6b)

  • เพิ่มปุ่มเปิด/ปิดลงใน Strings.kt ของฟีเจอร์พื้นฐาน (I4a5b7, b/172366489)

  • ย้าย nativeClass ไปยังข้อบังคับของ ui และทําให้เป็นภายใน อัปเดตการใช้งาน nativeClass ในการใช้งาน equals ให้ใช้ "is MyClass" แทน (I4f734)

  • เลิกใช้งาน Modifier.focus() และ Modifier.focusRequester() แล้ว ให้ใช้ Modifier.focusModifier() และ Modifier.focusReference() แทน (I75a48, b/175160751, b/175160532, b/175077829)

  • เปิดตัว SelectionRegistrar.notifySelectableChange เพื่อแจ้งการอัปเดต Selectable ไปยัง SelectionManager (I6ff30, b/173215242)

  • เปิดตัวพร็อพเพอร์ตี้ Outline.bounds เพื่อรับสี่เหลี่ยมผืนผ้าที่กําหนดขอบเขตสําหรับการใช้งานขอบต่างๆ (I16e74, b/175093504)

  • TestUiDispatcher ที่เลิกใช้งานแล้ว ใช้ Dispatchers.Main แทน (Ic171f, b/175385255)

  • ImeOptions และ KeyboardOptions ไม่ใช่คลาสข้อมูลอีกต่อไป (I3c898, b/168684531)

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

    • เปลี่ยนชื่อ OffsetMap เป็น OffsetMapping
    • เปลี่ยนชื่อ OffsetMapping.identityOffsetMap เป็น OffsetMapping.Identity
    • PasswordTransformation ไม่ใช่คลาสข้อมูลอีกต่อไป
    • ย้าย OffsetMapping ไปยังไฟล์ของตัวเอง
    • (I0bdf3)
  • เปลี่ยนชื่อ Position เป็น DpOffset และนํา getDistance() ออก (Ib2dfd)

  • เปลี่ยน fun Dp.isFinite() เป็น val Dp.isFinite (I50e00)

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

  • ตอนนี้ Recomposer แสดงสถานะปัจจุบันของโฟลว์ ซึ่งช่วยให้คุณตรวจสอบกิจกรรมของ Recomposer และกิจกรรมของเอฟเฟกต์ที่เกี่ยวข้องได้ (Ifb2b9)
  • ตอนนี้คุณเข้าถึงเหตุการณ์แป้นพิมพ์แบบดั้งเดิมผ่าน keyEvent.nativeKeyEvent ได้แล้ว (I87c57, b/173086397)
  • animate() เปลี่ยนเป็น animateAsState() แล้ว ซึ่งแสดงผลเป็น State<T> แทน T วิธีนี้ช่วยให้ประสิทธิภาพดีขึ้น เนื่องจากสามารถจํากัดขอบเขตการลบล้างให้แคบลงได้ตรงที่อ่านค่าสถานะ (Ib179e)
  • เพิ่ม Semantics Role API และเพิ่ม Role เป็นพารามิเตอร์ให้กับ SemanticsModifier ที่คลิกได้ เลือกได้ และเปิด/ปิดได้ เปลี่ยน Modifier.progressSemantics เพื่อให้ Slider ใช้งานได้ด้วย (I216cd)
  • API ใหม่ที่ใช้ coroutine Animatable ที่รับประกันความเฉพาะเจาะจงของภาพเคลื่อนไหว
    • DecayAnimationSpec ใหม่เพื่อรองรับภาพเคลื่อนไหวการลดลงหลายมิติ
    • (I820f2, b/168014930)

เวอร์ชัน 1.0.0-alpha09

16 ธันวาคม 2020

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

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

  • ระบบได้นำ KeyEvent.Alt ที่เลิกใช้งานออกแล้ว ให้ใช้ KeyEvent.isAltPressed แทน (Idd695)
  • เลิกใช้งาน Modifier.keyInputFilter และ Modifier.previewKeyInputFilter แล้ว โปรดใช้ Modifier.onKeyEvent และ Modifier.onPreviewKeyEvent แทน (Idbf1b, b/175156384)
  • เลิกใช้งาน Modifier.focusObserver แล้ว ใช้ Modifier.onFocusChanged หรือ Modifier.onFocusEvent แทน (I30f17, b/168511863, b/168511484)
  • สําหรับการระงับ API การป้อนข้อมูลด้วยเคอร์เซอร์ เปลี่ยนชื่อจาก HandlePointerInputScope เป็น AwaitPointerEventScope และ handlePointerInput() เป็น awaitPointerEventScope() (Idf0a1, b/175142755)
  • ตอนนี้ Autofill API เป็น API เวอร์ชันทดลองและต้องเลือกใช้ (I0a1ec)
  • การเพิ่มประกาศการจัดโครงสร้างใหม่เพื่อสร้างอินสแตนซ์ FocuSRequester (I35d84, b/174817008)
  • accessibilityLabel เปลี่ยนชื่อเป็น contentDescription accessibilityValue เปลี่ยนชื่อเป็น stateDescription (I250f2)
  • นําเหตุการณ์ที่กําหนดเองออกจากการระงับ Pointer Input API แล้ว (Ia54d5, b/175142755)
  • เปิดตัวฟังก์ชันใหม่หลายรายการใน SelectionRegistrar และเปลี่ยนชื่อ onPositionChange เป็น notifyPositionChange (Ifbaf7)
  • สมาชิกเพิ่มเติมของ LayoutNode ที่เราทําเครื่องหมายเป็นภายใน (I443c6)
  • เราได้เปิดตัว LayoutInfo เพื่อใช้กับเครื่องมือและการทดสอบ (I9b190)
  • AndroidOwner เปลี่ยนเป็นภายใน (Ibcad0, b/170296980)
  • นำคำอธิบายประกอบ ExperimentalPointerInput ออกแล้ว (Ia7a24)
  • เพิ่มระบบการเลื่อนแบบซ้อนกัน ดูรายละเอียดเพิ่มเติมได้ที่ Modifier.nestedScroll (I36e15, b/162408885)
  • subcomposeInto(LayoutNode) เปลี่ยนเป็นแบบภายใน (Id724a)
  • อินเทอร์เฟซ Applier มีการเปลี่ยนแปลงเพื่อลดความซับซ้อนของการสร้างแผนผังจากล่างขึ้นบนแทนจากบนลงล่าง

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

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

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

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

  • เพิ่มพร็อพเพอร์ตี้ dismissOnBackPress และ dismissOnClickOutside ลงใน AndroidDialogProperties ซึ่งช่วยให้คุณกําหนดค่าได้ว่าจะให้เรียกใช้ Lambda ของ onDismissRequest ของกล่องโต้ตอบเมื่อใด (If5e17)

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

  • เพิ่ม Modifier.clearAndSetSemantics เพื่อล้างเซมาติกส์ของรายการที่สืบทอดและตั้งค่าใหม่ (I277ca)

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

  • เปิดตัว PathEffect Graphics API เพื่อใช้สร้างรูปแบบต่างๆ ให้กับรูปร่างที่มีเส้นขอบ เลิกใช้งาน NativePathEffect แล้วเพื่อใช้ PathEffect แทน (I5e976, b/171072166)

  • เพิ่มอินเทอร์เฟซ IdlingResource ลงใน Compose เป็นตัวแปรของทรัพยากรการหยุดทำงานชั่วคราวของ Espresso ที่ Compose รองรับ โดยสามารถลงทะเบียนและยกเลิกการลงทะเบียนผ่าน ComposeTestRule (I433f3)

  • นำการลงทะเบียน (ยกเลิกการ) ลงทะเบียน ComposeIdlingResource ทั่วโลกออก และนำการลงทะเบียน (ยกเลิกการ) ลงทะเบียนนาฬิกาใน ComposeIdlingResource ทั่วโลกออก (I32660)

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

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

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

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

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

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

  • BuildCompat.isAtLeastR ที่เลิกใช้งานแล้ว (Idb37e)

  • เพิ่มฟังก์ชันสร้างของ buildAnnotatedString เพื่อที่จะสร้าง AnnotatedString ฟังก์ชัน annotatedString builder ที่เลิกใช้งานแล้ว (Idfe0b)

  • นําเมธอดการขยายในประเภทข้อมูล Float และ Double ออกเพื่อแปลงค่าเป็นเรเดียน ย้ายไปเป็นฟังก์ชันส่วนตัวภายในการใช้งาน PathParser ซึ่งเป็นที่เดียวที่ใช้ (I25f52)

เวอร์ชัน 1.0.0-alpha08

2 ธันวาคม 2020

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

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

  • เพิ่มการดำเนินการตามความหมาย "ปิด" (I2b706)
  • ย้าย API ของ DrawModifier จากแพ็กเกจ androidx.compose.ui ไปยังแพ็กเกจ androidx.compose.ui.draw สร้างไฟล์ DrawModifierDeprecated.kt เพื่อรวมการแทนที่ประเภท/เมธอดตัวช่วยเพื่อช่วยในการย้ายข้อมูลจาก API ที่เลิกใช้งานไปยัง API ปัจจุบัน (Id6044, b/173834241)
  • เปลี่ยนชื่อ Modifier.drawLayer เป็น Modifier.graphicsLayer และอัปเดตคลาสที่เกี่ยวข้องเป็น GraphicsLayer ตามความคิดเห็นเกี่ยวกับ API ด้วย (I0bd29, b/173834241)
  • เพิ่มเมธอดใหม่ placeable.placeWithLayer() และ placeable.placeRelativeWithLayer() ซึ่งช่วยให้เลย์เอาต์ที่กำหนดเองและตัวแก้ไขเลย์เอาต์วางองค์ประกอบย่อยได้ด้วยการนําเข้าเลเยอร์กราฟิกสําหรับการวาด เมื่อทำเช่นนี้ เราจะเพิ่มประสิทธิภาพการวาดภาพใหม่ได้ก่อน เมื่อต้องย้ายรายการย่อยจึงไม่ต้องวาดเนื้อหาของรายการย่อยนั้นใหม่ และประการที่ 2 เราจะใช้การเปลี่ยนรูปแบบการวาดสำหรับรายการย่อยได้ (Ibd8f6, b/170296989, b/171493718, b/173030831)
  • นํา <T> ออกจากการประกาศ SubcomposeLayout แล้ว ตอนนี้คุณใช้คำสั่งนี้โดยไม่ต้องระบุประเภทได้แล้ว (Ib60c8)
  • เพิ่ม Modifier.scale/rotate API เพื่อความสะดวกใน drawLayer
    • เปลี่ยนชื่อ Modifier.drawOpacity เป็น Modifier.alpha แล้ว
    • เปลี่ยนชื่อ Modifier.drawShadow เป็น Modifier.shadow แล้ว (I264ca, b/173208140)
  • ทำให้ฟิลด์การอัปเดตและตำแหน่งของ PointerInputData เป็นฟิลด์ที่ต้องมีค่า (Id468a)
  • ตอนนี้ MaterialTheme จะกำหนดสีที่ถูกต้องสำหรับแถบการเลือกและพื้นหลังการเลือกแล้ว แอปที่ไม่ใช่ Material สามารถใช้ AmbientTextSelectionColors ด้วยตนเองเพื่อปรับแต่งสีที่ใช้สำหรับการเลือก (I1e6f4, b/139320372, b/139320907)
  • เพิ่ม WindowManager.isWindowFocused เพื่อตรวจสอบว่าหน้าต่างโฮสต์อยู่ในโฟกัสหรือไม่ และ WindowFocusObserver ที่ให้การเรียกกลับ onWindowFocusChanged (I53b2a, b/170932874)
  • อัปเดต TransformOrigin API ให้ใช้ไวยากรณ์การจัดโครงสร้างใหม่เพื่อแสดงผล pivotFractionX และ pivotFractionY เป็น component1 และ component2 (If43c4, b/173586560)
  • เพิ่มการตรวจสอบ Lint สําหรับการตั้งชื่อและตําแหน่งพารามิเตอร์ Lambda ที่คอมโพสิเบิล เพื่อตรวจสอบความสอดคล้องตามหลักเกณฑ์ของ Compose รวมถึงย้ายข้อมูล API บางรายการที่ใช้ children เป็นชื่อของ lambda ต่อท้ายเป็น content ตามการตรวจสอบและคำแนะนำของ Lint (Iec48e)
  • เพิ่ม API เพื่อตรวจสอบว่ามีการกดแป้น Alt, Ctrl, Meta หรือ Shift หรือไม่เมื่อมีการส่งเหตุการณ์การกดแป้น (I50ed9)
  • เพิ่มการโอเวอร์โหลด Modifier.drawLayer() ใหม่ โดยจะใช้บล็อก Lambda ใน GraphicsLayerScope ใหม่ที่คุณกําหนดพารามิเตอร์เลเยอร์ในลักษณะที่ข้ามการจัดองค์ประกอบใหม่และการจัดวางใหม่เมื่อเกิดการเปลี่ยนแปลงสถานะ ตอนนี้ DrawLayerModifier เป็นโมดูลภายในเพื่อเตรียมย้ายข้อมูลตรรกะไปยังเมธอด placeable.placeWithLayer() ของ LayoutModifier (I15e9f, b/173030831)
  • เลิกใช้งานแอมเบียนท์ที่มีชื่อต่อท้ายด้วย Ambient และแทนที่ด้วยพร็อพเพอร์ตี้ใหม่ที่ขึ้นต้นด้วยแอมเบียนท์ตามหลักเกณฑ์อื่นๆ ของแอมเบียนท์และ Compose API (I33440)
  • ย้าย androidx.compose.ui.text.Typeface ไปยัง androidx.compose.ui.text.font.Typeface (Ic2b81)
  • เปลี่ยนชื่ออาร์กิวเมนต์เชิงความหมาย mergeAllDescendants เป็น mergeDescendants (Ib6250)
  • ตัวตรวจจับท่าทางลากแบบใหม่ที่จะระงับ Pointer Input API รวมถึงการล็อกการวางแนว (Icef25)
  • เปลี่ยนชื่อ VectorAsset เป็น ImageVectorย้ายและเปลี่ยนชื่อ VectorAsset เป็น Builder เพื่อให้เป็นคลาสภายในของ ImageVector ตามหลักเกณฑ์ของ API เพิ่ม Type Alias ของ VectorAssetBuilder เพื่อลิงก์กับ ImageVector.Builder เพื่อความเข้ากันได้ (Icfdc8)
  • เปลี่ยนชื่อ ImageAsset และเมธอดที่เกี่ยวข้องเป็น ImageBitmap (Ia2d99)
  • เพิ่มพารามิเตอร์ zIndex สำหรับ place() ของ PlacementScope เพื่อให้ Modifier.zIndex() ทํางานเป็น LayoutModifier และเลย์เอาต์ที่กําหนดเองสามารถกําหนด zIndex สําหรับองค์ประกอบย่อยได้โดยตรงในบล็อกตําแหน่ง (I711f7, b/171493718)
  • ย้ายพร็อพเพอร์ตี้ความหมายพื้นฐานไปยัง ui (I6f05c)
  • เลิกใช้งาน place(Offset) และ placeRelative(Offset) ใช้การโอเวอร์โหลดที่มีออฟเซต int แทน (I4c5e7)
  • นำ API ที่เลิกใช้งานก่อนหน้านี้ออกแล้ว: นำ Modifier.onPositioned ออกแล้ว ให้ใช้ Modifier.onGloballyPositioned Modifier.onDraw ถูกนําออกแล้ว ให้ใช้ Modifier.onDrawBehind Modifier.plus ถูกนําออกแล้ว ให้ใช้ Modifier.then ระบบนํา Color.Unset ออกแล้ว ให้ใช้ Color.Unspecified ระบบนำคลาส PxBounds ออกแล้ว ให้ใช้ Rect แทน (Ie9d02, b/172562222)
  • อัปเดตอินเทอร์เฟซการจัดตำแหน่งและทำให้ใช้งานได้ (I46a07, b/172311734)
  • เพิ่มตัวตรวจจับท่าทางสัมผัสสำหรับการแตะ การแตะ 2 ครั้ง การกดค้าง และตัวบ่งชี้การกดโดยใช้อินพุตเคอร์เซอร์ที่หยุดชั่วคราวแบบใหม่ นอกจากนี้ เรายังได้เพิ่มยูทิลิตีบางอย่างเพื่อให้นักพัฒนาแอปเขียนโปรแกรมตรวจจับท่าทางของตนเองได้ง่ายขึ้น (I00807)
  • เปลี่ยนชื่อ id เป็น layoutId สำหรับ LayoutIdParentData แล้ว เปลี่ยนชื่อ Measurable.id เป็น Measurable.layoutId แล้ว (Iadbcb, b/172449643)
  • ตัวตรวจจับท่าทางสัมผัสแบบมัลติทัชแบบใหม่ รวมถึงตัวช่วยในการตรวจจับการหมุน การซูม และการเลื่อน (Ic459d)
  • เปิดตัว SweepGradientShader และ SweepGradientBrush API (Ia22c1)
  • ตอนนี้การควบคุมเวลาในการทดสอบ (TestAnimationClock และการใช้งาน) อยู่ในช่วงทดลอง (I6ef86, b/171378521)
  • เพิ่ม API เลื่อนที่ใช้ Coroutine

    เพิ่ม LazyListState.snapToItem และ LazyListState.smoothScrollBy รวมถึง API ระดับล่างสําหรับการควบคุมการเลื่อน API เหล่านี้มีอินเทอร์เฟซการระงับเพื่อควบคุมการเลื่อน ซึ่งจะรอจนกว่าการเลื่อนจะเสร็จสิ้นก่อนที่จะแสดงผล (Ie5642)

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

  • ระบุการใช้งานเริ่มต้นของเมทอดและพร็อพเพอร์ตี้ใน AnimationClockTestRule ที่สามารถมอบสิทธิ์ให้ clock ได้ (I7ea3d, b/173399709)

  • ตอนนี้ AndroidComposeTestRule ยอมรับตัวเปิดใช้งานกิจกรรมที่กําหนดเองได้แล้ว (Ib8288, b/153623653, b/154135019)

  • เลิกใช้งาน TextLayoutResult.getLineVisibleEnd แล้ว แทนที่ TextLayoutResult.getLineEnd ตอนนี้มีพารามิเตอร์ใหม่คือ visibleEnd (I73282)

  • TextFieldValue API ที่อัปเดต

    • ทําให้ TextFieldValue.composition เป็นอ่านอย่างเดียว
    • นำข้อยกเว้นที่แสดงขึ้นเนื่องจากช่วงการเลือกไม่ถูกต้องออก (I4a675, b/172239032)
  • รองรับ TtsAnnotation สําหรับเครื่องมืออ่านออกเสียงข้อความ (I54cc6)

  • API ใหม่สําหรับการแสดงภาพเคลื่อนไหวในโคโรทีน (Ied662)

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

  • เปลี่ยนชื่อพารามิเตอร์การจัดตำแหน่งของกล่องเป็น contentAlignment (I2c957)
  • เปลี่ยนชื่อตัวแก้ไข offsetPx เป็น offset ตอนนี้พารามิเตอร์เหล่านี้ใช้พารามิเตอร์ Lambda แทนสถานะ (Ic3021, b/173594846)
  • เพิ่มพารามิเตอร์ "resetInput" ไปยัง TextInputService#onStateUpdated (I3e8f5, b/172239032, b/171860947)
  • เพิ่มการตรวจสอบ Lint สําหรับพารามิเตอร์ตัวแก้ไขในฟังก์ชัน Composable การตรวจสอบ Lint นี้จะตรวจสอบการตั้งชื่อ ประเภทผลลัพธ์ ค่าเริ่มต้น และลําดับของพารามิเตอร์เพื่อให้สอดคล้องกับหลักเกณฑ์ของ Compose (If493b)
  • เพิ่มตัวเลือกชั่วคราวเพื่อให้ TestAnimationClock ทำงานตาม MonotonicFrameClock (I1403b, b/173402197)
  • เพิ่ม Wrapper ของแบบอักษร Android คุณสามารถโหลดแบบอักษร Android ผ่านฟังก์ชัน typeface เช่น typeface(Typeface.DEFAULT) และเปลี่ยนชื่อ typefaceFromFontFamily() เป็น typeface() ด้วย (I52ab7)
  • เพิ่มการตรวจสอบ Lint เพื่อตรวจสอบว่าฟังก์ชันของ Factory ของ Modifier ได้รับการกำหนดเป็นส่วนขยายใน Modifier เพื่อให้สามารถเชื่อมต่อกันได้อย่างราบรื่น (I07981)
  • นําโมดูล ui-test เก่าและสตับออก (I3a7cb)
  • Recomposer ไม่รับ EmbeddingContext อีกต่อไป ระบบจะรับข้อมูลที่จำเป็นสำหรับการกำหนดเวลาจาก effectCoroutineContext FrameManager เลิกใช้งานแล้ว การผสานรวมแพลตฟอร์มควรเริ่มต้นการจัดการสแนปชอตทั่วโลกของตนเอง (I02369)
  • ส่งข้อมูลสไตล์ไปยังโหนดการช่วยเหลือพิเศษ (If5e8d)
  • TextUnit.Inherit เปลี่ยนชื่อเป็น TextUnit.Unspecified เพื่อให้สอดคล้องกับหน่วยอื่นๆ (Ifce19)

Compose UI เวอร์ชัน 1.0.0-alpha07

11 พฤศจิกายน 2020

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

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

  • เปิดตัวคลาส ScaleFactor แบบอินไลน์เพื่อแสดงปัจจัยการปรับขนาดสำหรับแกนแนวนอนและแนวตั้งโดยแยกกัน เพื่อรองรับกรณีการใช้งานการปรับขนาดที่ไม่สม่ำเสมอ
    • เพิ่มเมธอด computeScaleFactor ลงใน ContentScale
    • เพิ่ม ContentScale.FillBounds เพื่อทำการScaling แบบไม่สม่ำเสมอเพื่อยืดขอบเขตของ src ให้เต็มพื้นที่ปลายทาง
    • เพิ่มเมธอดโอเปอเรเตอร์เพื่อคํานวณพารามิเตอร์ ScaleFactor ด้วยพารามิเตอร์ขนาด
    • (Ic96a6, b/172291582)
  • เพิ่ม BiasAlignment และ BiasAbsoluteAlignment สำหรับการสร้าง Alignment (Iac836, b/169406772)
  • อนุญาตให้นักพัฒนาแอปล้างโฟกัส (I90372)
  • แก้ไขข้อบกพร่องที่ทำให้ระบบไม่วาดการยกระดับสำหรับมุมมองภายในเครื่องมือเขียน (If7782)
  • สร้าง onDrawBehind API ภายใน ContentDrawScope เพื่อจับคู่รูปแบบการตั้งชื่อกับ Modifier.drawBehind (I4fc3a, b/171955269)
  • เพิ่มการรองรับระยะห่างของกล้องเพื่อเสริมการเปลี่ยนรูปแบบ 3 มิติ นั่นคือ การทำให้ภาพหมุนในแนว X/Y ใน API เลเยอร์ (I40213, b/171492100)
  • เพิ่ม SelectionContainer ที่ไม่มี Callback (Ibfadb)
  • นําคําอธิบายประกอบ ExperimentalSubcomposeLayoutApi ออกแล้ว ตอนนี้ใช้ SubcomposeLayout ได้โดยไม่ต้องเพิ่ม @OptIn แล้ว (I708ad)
  • ย้าย FirstBaseline และ LastBaseline ไปยังแพ็กเกจ androidx.compose.ui.layout แล้ว (Ied2e7)
  • นำค่าความทึบออกจากตัวแก้ไข drawShadow() เนื่องจากทำให้สับสน (I82c62, b/171624638)
  • MeasureResult ย้ายออกจาก MeasureScope แล้ว (Ibf96d, b/171184002)
  • ย้ายสัญลักษณ์ที่เกี่ยวข้องกับเลย์เอาต์หลายรายการจาก androidx.compose.ui ไปยัง androidx.compose.layout.ui แล้ว (I0fa98, b/170475424)
  • นํา FocusState2 ที่เลิกใช้งานแล้วออก (I686cb, b/168686446)
  • ตอนนี้ ZIndexModifier เป็นฟีเจอร์ภายในแล้ว (I1808b, b/171493718)
  • อัปเดตประเภทผลลัพธ์ของเมธอด lerp ในพารามิเตอร์ Size ให้แสดงผลลัพธ์เป็น Size ที่ไม่ใช่ค่า Null เพื่อหลีกเลี่ยงการแปลงค่าที่ไม่จำเป็น (Ib0044)
  • เพิ่ม TestMonotonicFrameClock สำหรับการทดสอบโค้ดที่อาศัย MonotonicFrameClock ของ Compose เพื่อรอเหตุการณ์เฟรมการคอมโพสิชันโดยใช้ runBlockingTest ของ kotlinx-coroutines-test (I4402f)
  • นํา GestureScope.localToGlobal ออก (I15299, b/171462785)
  • เพิ่มเครื่องมือค้นหา onAllNodesWithSubstring (I81dd7, b/171462889)
  • เลิกใช้งานโมดูล androidx.ui.test แล้ว โปรดย้ายข้อมูลไปยัง androidx.compose.ui.test และ androidx.compose.ui.test.junit4 (I452e8)

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

  • captureToBitmap ย้ายไปที่ captureToImage (I86385)
  • เราเลิกใช้งาน foundation.Text แล้วและแทนที่ด้วย material.Text สำหรับ API ข้อความพื้นฐานที่ไม่แสดงความคิดเห็นซึ่งไม่ใช้ค่าจากธีม โปรดดู androidx.compose.foundation.BasicText (If64cb)
  • อัปเดต TextFields ให้ยอมรับ KeyboardOptions (Ida7f3)
  • เปลี่ยนชื่อ KeyboardOptions เป็น ImeOptions (I82f36)
  • ย้าย KeyboardType และ ImeAction ไปยัง KeyboardOptions (I910ce)
  • มีการเพิ่ม provideDefault ไว้เป็นทางเลือกในการระบุค่าแอมเบียนท์ และสามารถใช้เพื่อระบุค่าแอมเบียนท์ที่จะตั้งค่าก็ต่อเมื่อไม่มีค่าแอมเบียนท์ที่ระบุไว้แล้วเท่านั้น (Id6635, b/171024925)
  • เลิกใช้งาน BaseTextField แล้ว ให้ใช้ BasicTextField แทน (I896eb)
  • แนะนำข้อบังคับของ ui-test-junit4 (Ib91f8)
  • เปลี่ยนชื่อ relativePaddingFrom เป็น paddingFrom แล้ว เพิ่มตัวแก้ไข paddingFromBaseline เพื่อระบุระยะทางจากขอบเขตเลย์เอาต์ไปยังบรรทัดฐานของข้อความ (I0440a, b/170633813)
  • เปลี่ยนชื่อ LaunchedTask เป็น LaunchedEffect เพื่อให้สอดคล้องกับ API ของ SideEffect และ DisposableEffect ไม่อนุญาตให้ใช้ LaunchedEffect ที่ไม่มีพารามิเตอร์เรื่องเพื่อส่งเสริมแนวทางปฏิบัติแนะนำ (Ifd3d4)
  • เปิดตัวทรัพยากรแบบคอมโพสได้ซึ่งจะคอมโพสใหม่เมื่อการกําหนดค่าอัปเดต (I6387c, b/167352819)
  • ตอนนี้ Recomposer ต้องใช้ CoroutineContext ในการสร้าง (Ic4610)
  • หาผลรวมของค่า zIndex เมื่อใช้ Modifier.zIndex() หลายรายการ ก่อนหน้านี้รายการแรกชนะ (Ic514c, b/170623936)
  • การเปลี่ยนแปลงการใช้งาน SlotTable ภายในซึ่งไม่ควรส่งผลต่อ API สาธารณะ (If9828)
  • เพิ่มตัวเลือก IME การแก้ไขอัตโนมัติของแป้นพิมพ์ (I57b8d)
  • ย้าย androidx.ui.test ไปยัง androidx.compose.ui.test (I9ffdb)
  • นํา KeyboardOptions.toImeOptions ออกจาก API สาธารณะแล้ว (Ic2e45)

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

  • ปิดใช้การเผยแพร่อาร์ติแฟกต์ภายใน androidx.compose.ui:ui-text-android (Ib93fa)

เวอร์ชัน 1.0.0-alpha06

28 ตุลาคม 2020

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

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

  • ตอนนี้ Recomposer เป็น CompositionReference และเป็นองค์ประกอบหลักที่ถูกต้อง ตอนนี้คุณต้องใช้ Explicit Recomposer ในตำแหน่งที่น้อยลง (I4036f)
  • เลิกใช้งาน VectorPainter ไปใช้ rememberVectorPainter แทนเพื่อบ่งชี้ได้ดีขึ้นว่า API แบบคอมโพสิเบิลใช้ประโยชน์จาก "remember" ในการจัดเก็บข้อมูลในคอมโพสิชัน (Ifda43)
  • อัปเดต Modifier.drawWithCache API เพื่อแสดง ContentDrawScope เป็นขอบเขตผู้รับแทน DrawScope เพื่อให้การติดตั้งใช้งานสามารถจัดเรียงคำสั่งวาดใหม่ได้ ซึ่งมีประโยชน์สำหรับกรณีการใช้งานการผสม/การใส่สี ซึ่งต้องแสดงผลพิกเซลของเนื้อหาก่อนเพื่อให้อัลกอริทึมของโหมดการผสมที่เกี่ยวข้องทำงานได้อย่างถูกต้อง (Ie7ec8)
  • ย้าย SimpleContainer ไปยัง PopupTestUtils.kt (I78c57)
  • ConsumedData ไม่ใช่คลาสข้อมูลอีกต่อไป ดูรายละเอียดได้ที่ https://android-review.googlesource.com/c/platform/frameworks/support/+/1455219 (I1737f)
  • แก้ไขตำแหน่งแฮนเดิล Rtl (I6e1e0)
  • ปรับโครงสร้าง DrawScope และ ContentDrawScope เป็นอินเทอร์เฟซแทนที่จะเป็นคลาสนามธรรม
    • สร้างการใช้งาน CanvasDrawScope ของ DrawScope
    • ปรับโครงสร้างการใช้งาน DrawScope ให้ใช้ CanvasScope แทน
    • สร้าง DrawContext เพื่อรวมพึ่งพาสำหรับ DrawScope
    • นําวิธีการที่เลิกใช้งานแล้วใน DrawScope ออก (I56f5e)
  • การเปลี่ยนแปลงที่ทำให้เกิดข้อขัดข้อง: นำค่าที่แสดงผลจาก PointerInputFilter.onPointerEvent(...) ออก เนื่องจากค่าเดียวที่ควรเปลี่ยนแปลงได้ในเหตุการณ์เคอร์เซอร์คือข้อมูลการบริโภค ตอนนี้คุณเปลี่ยนข้อมูลการบริโภคของ PointerEvents ที่ส่งเข้ามาได้โดยไม่ต้องแสดงผลข้อมูลจาก PointerInputFilter.onPointerEvent(...) (I6acd0)
  • MeasureScope และ IntrinsicMeasureScope กลายเป็นอินเทอร์เฟซ (I1a087, b/170461665)
  • ฟังก์ชันผสานสําหรับ AlignmentLine ซ่อนอยู่ (I9da1a, b/170612900, b/170611568)
  • เพิ่มความสามารถในการระบุข้อมูลเครื่องมือตรวจสอบในตัวแก้ไขแบบคอมโพสิท (Idee08, b/163494569)
  • เพิ่มตัวเลือก "เลือกทั้งหมด" ลงในเมนูการเลือก (Ief02b)
  • อัปเดต DrawTransform.rotate ให้ใช้พารามิเตอร์ Pivot เริ่มต้นของ "ตรงกลาง" เพื่อให้ตรงกับเอกสารประกอบ
    • อัปเดต DrawScope.rotateRad ให้ใช้ออฟเซตสำหรับจุด Pivot เพื่อให้ตรงกับวิธีการเปลี่ยนรูปแบบอื่นๆ
    • เลิกใช้งานการโอเวอร์โหลด DrawScope.rotateRad ที่ใช้ค่า float สำหรับพิกัด x และ y ของจุดหมุน
    • (Iffcbb, b/170434992)

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

  • เปิดใช้การตรวจสอบ Lint ของ API สําหรับ MissingGetterMatchingBuilder สําหรับ androidx (I4bbea, b/138602561)
  • เพิ่มการทดสอบ (I6b8ae)
  • เปิดใช้ทรานซิชันใน ComposeTestRule นำตัวเลือกในการเปิดใช้เคอร์เซอร์ที่กะพริบออกจาก ComposeTestRule (If0de3)
  • เพิ่มตัวเลือก IME ของ KeyboardCapitalization (I8ac38)
  • เพิ่มตัวเลือกแป้นพิมพ์บรรทัดเดียวลงใน CoreTextField (I72e6d)
  • ย้าย SimpleContainer ไปยัง PopupTestUtils.kt (I65c3e)
  • เปลี่ยนชื่อ Radius API เป็น CornerRadius เพื่อสื่อให้เห็นการใช้งานใน Compose ได้ดียิ่งขึ้น อัปเดตเอกสารประกอบเพื่อระบุว่ารัศมีมุมติดลบจะได้รับการจำกัดไว้ที่ 0 (I130c7, b/168762961)
  • ปรับปรุงการทำงานร่วมกันของ Android โดยส่ง MotionEvents ไปยัง Android View ย่อยต่อไปซึ่งแสดงผลเป็นเท็จสำหรับ onTouchEvent สำหรับการดำเนินการทั้งหมดยกเว้น ACTION_DOWN (I94c5a, b/170320973)
  • เปลี่ยนช่องเป็นฟังก์ชันในบรรทัด (Ibce0c, b/155056091)

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

  • รองรับภาษาต่างๆ สำหรับ AnnotatedString.capitalize และ AnnotatedString.decapitalize (I4aa7f)

เวอร์ชัน 1.0.0-alpha05

14 ตุลาคม 2020

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

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

  • เพิ่ม DSL เพื่อระบุข้อมูลผู้ตรวจสอบ (Ic9a22)
  • ย้าย "การกดค้าง" ไปยัง "ข้อความ" (Iff2bc)
  • Modifier.pointerInput ที่อยู่ระหว่างการทดสอบซึ่งระงับตัวแก้ไขอินพุต (Ia77d2)
  • เพิ่มการดำเนินการสำหรับการช่วยเหลือพิเศษในการคัดลอก/วาง/ตัด (I6db4f)
  • นำตัวสร้างแบบสาธารณะสำหรับ AndroidOwner ออกแล้ว (Iacaef)
  • ตอนนี้ป๊อปอัปและกล่องโต้ตอบจะรับค่า FLAG_SECURE จากหน้าต่างหลัก นอกจากนี้ เรายังได้เพิ่มตัวเลือกในการกําหนดค่านี้อย่างชัดเจน (I64966, b/143778148, b/143778149)
  • ตอนนี้ข้อมูลการบริโภคจะเปลี่ยนแปลงได้แล้ว นอกจากนี้ การเรียกใช้ฟังก์ชันส่วนขยายที่ใช้งานจะไม่แสดงผล PointerInputChange ใหม่อีกต่อไป แต่จะใช้การปรับเปลี่ยน PointerInputChange ที่ระบุแทน

    นี่เป็นขั้นตอนแรกในกระบวนการ 2 ขั้นตอนที่จะทำให้ข้อมูล PointerEvent เปลี่ยนแปลงได้ เช่น ไม่ให้โค้ดของผู้ใช้แก้ไขข้อมูลเคอร์เซอร์อื่นๆ ได้ ขั้นตอนที่ 2 คือการนําประเภทการคืนค่า List<PointerInputChange> ออกจาก PointerInputFilter.onPointerEvent(...) (Id067e)

  • ปิดใช้การเลือกในข้อความและแสดงตัวอย่าง (Ie7e97)

  • ทําให้ onGloballyPositioned เป็นฟังก์ชันในบรรทัด (I15830)

  • เปลี่ยนชื่อ OnPositionedModifier เป็น OnGloballyPositionedModifier และเปลี่ยนชื่อ onPositioned() เป็น onGloballyPositioned() (I587e8, b/169083903)

  • เพิ่มพร็อพเพอร์ตี้ hasPendingMeasureOrLayout ลงใน Owner เพื่อระบุว่าเจ้าของมีงานเลย์เอาต์ที่รอดำเนินการหรือไม่ (I3d9f8, b/169038599)

  • เพิ่ม API เพื่อล้างโฟกัสแบบเป็นโปรแกรม (Ie1dc2, b/161487952)

  • นำ PointerInputFilter.onPointerInput(...) ออกแล้ว คุณควรใช้ PointerInputFilter.onPointerEvent(...) แทน (I6f04a)

  • การเปลี่ยนแปลงขนาด

    • นํา Size.getFlipped ออกแล้ว
    • นำ Size.rem ออกแล้ว
    • นํา Size.truncDiv (Ief44d, b/169790720) ออก
  • ในการทำให้ค่า Sentinel สำหรับคลาสในบรรทัดมีความเป็นมาตรฐาน ให้เปลี่ยนชื่อ Color.Unset เป็น Color.Unspecified เพื่อให้สอดคล้องกับคลาสอื่นๆ ในบรรทัด (I97611, b/169797763)

  • มีการเปิดตัว TextOverflow.None เมื่อ overflow เป็น "ไม่มี" ข้อความจะไม่จัดการการเลื่อนออกอีกต่อไป และจะรายงานขนาดจริงไปยัง LayoutNode (I175c9, b/158830170)

  • เปลี่ยนชื่อพารามิเตอร์ขอบเขตภายใน AnnotatedString.Builder.addStringAnnotation เป็นแท็กเพื่อความสอดคล้องของ API (I7c8cb)

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

  • ประสิทธิภาพการเลื่อนของ LazyColumn/Row ได้รับการปรับปรุงโดยทำงานน้อยลงในองค์ประกอบย่อยทุกครั้งที่เลื่อน เพิ่มเมธอด hasInvalidations() ใหม่สำหรับคลาส Composition เปลี่ยนชื่อเมธอด hasPendingChanges() จาก Recomposer เป็น hasInvalidations() (Ib2f32, b/168293643, b/167972292, b/165028371)
  • อัปเดตพารามิเตอร์ Size.Unspecified เป็น Float.NaN แทนที่จะเป็น Float.POSITIVE_INFINITY อัปเดตการใช้งาน Painter ให้ตรวจสอบกับ Size.Unspecified และขนาดที่ไม่แน่นอน (I95a7e)
  • ตอนนี้ลําดับการเรียกใช้ place() ในเลย์เอาต์ที่กําหนดเองจะกําหนดลําดับการวาดสําหรับองค์ประกอบย่อย (Ibc9f6)
  • รองรับการแปลง AnnotatedString เป็น SpannableString เพื่อการช่วยเหลือพิเศษ (Ief907)
  • เพิ่มสแต็บสําหรับคลาส Android ที่อยู่ในแพลตฟอร์มเก่าเพื่อหลีกเลี่ยงการใช้การสะท้อนกลับเมื่อเป็นไปได้ (Ia1790)
  • แก้ไขข้อบกพร่อง: หากแป้นพิมพ์ซอฟต์แวร์ที่แสดงทำให้แอปแปล พิกัดการป้อนของเคอร์เซอร์จะกลายเป็นไม่ถูกต้อง (Ic4cec, b/163077821)

เวอร์ชัน 1.0.0-alpha04

1 ตุลาคม 2020

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

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

  • เพิ่ม OwnerScope เพื่ออนุญาตให้รวบรวมขอบเขตการสังเกตเลย์เอาต์และการวาดเมื่อไม่มีผลแล้ว (Ic4cf8)
  • เพิ่ม OnRemeasuredModifier และ onSizeChanged() เพื่อรับการเรียกกลับเมื่อมีการวัดเลย์เอาต์เนื้อหาอีกครั้งและขนาดมีการเปลี่ยนแปลงตามลำดับ (I657cf, b/154108792)
  • เพิ่มการดำเนินการตามความหมายของการคลิกค้างไว้ (I6281b, b/156468846)
  • กำหนด FocusManager เป็นแบบส่วนตัว (I7872f)
  • อัปเดตการใช้งานเพื่อสร้างการใช้งาน DrawCacheModifier โดยเฉพาะแทนการเพิ่มพร็อพเพอร์ตี้ที่ไม่บังคับใน DrawModifier

    อัปเดตเอกสารประกอบสําหรับวิธีการต่างๆ (Ibd166)

  • ทําให้ TextRange อยู่ภายในบรรทัดเพื่อหลีกเลี่ยงการสร้างออบเจ็กต์ (Id034b)

  • ระบบจะอ่าน PlacementScope#parentWidth และ PlacementScope#parentLayoutDirection จากบล็อกตําแหน่งโฆษณาของเลย์เอาต์ที่กําหนดเองไม่ได้อีกต่อไป (Icc1ae, b/168295623)

  • เพิ่ม AccessibilityScrollState ลงในพร็อพเพอร์ตี้เชิงอรรถศาสตร์ (Ifeda9)

  • เปิดตัว Modifier.drawWithCache เพื่อรองรับการสร้างออบเจ็กต์การวาดที่จะสร้างทรัพยากรตามเงื่อนไขซึ่งขึ้นอยู่กับข้อมูลขนาด/สถานะ (I376dc)

  • ParagraphConstraints ถูกนําออกแล้ว ตอนนี้ระบบจะส่งค่าความกว้างไปยังย่อหน้าโดยตรง (Ica712)

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

  • อัปเดต Graphics API หลายรายการ
    • อัปเดต API การเปลี่ยนรูปแบบการแปลงขนาดและการหมุนเพื่อใช้พารามิเตอร์การเลื่อนตำแหน่งเดียวเพื่อแสดงพิกัดจุดหมุนแทนการใช้พารามิเตอร์ float แยกต่างหากสำหรับพิกัด x/y ใน DrawScope และ DrawTransform
    • นําเมธอด Rect.expandToInclude และ Rect.join ออกแล้ว
    • อัปเดตเอกสารประกอบของรัศมีเป็น "รูปไข่" นอกเหนือจาก "รูปไข่รี"
    • เพิ่มเอกสารประกอบเพื่อระบุว่าไม่ควรเรียกใช้คอนสตรัคเตอร์แบบสาธารณะสำหรับคลาส Radius แบบอินไลน์โดยตรง แต่ควรสร้างอินสแตนซ์ออบเจ็กต์ Radius ผ่านคอนสตรัคเตอร์ของฟังก์ชันแทน
    • นำ RoundRect API ออกเพื่อค้นหา topRight, bottomRight, bottomCenter ฯลฯ
    • เลิกใช้งาน Rect.shift และใช้ Rect.translate แทน
    • นำ API ของ RoundRect.grow และ Rect.shrink ออก
    • เปลี่ยนชื่อ RoundRect.outerRect เป็น Rect.boundingRect
    • นำเมธอด RoundRect.middleRect/tallMiddleRect/wideMiddleRect และ Rect.isStadium ออก
    • เปลี่ยนชื่อ RoundRect.longestSide เป็น RoundRect.maxDimension
    • เปลี่ยนชื่อ RoundRect.shortestSide เป็น RoundRect.minDimension
    • เปลี่ยน RoundRect.center เป็นพร็อพเพอร์ตี้แทนที่จะเป็นฟังก์ชัน
    • อัปเดตตัวสร้าง RoundRect เพื่อใช้พร็อพเพอร์ตี้ Radius แทนพารามิเตอร์แต่ละรายการสำหรับค่ารัศมี x/y
    • นำ API ขนาดออกซึ่งถือว่ารูปภาพเป็นรูปสี่เหลี่ยมผืนผ้าที่มีจุดเริ่มต้นที่ 0,0
    • เพิ่ม API สำหรับการทำลายข้อมูลไปยัง Radius
    • ย้ายข้อมูลฟังก์ชันส่วนขยาย RoundRect ต่างๆ ไปเป็นพร็อพเพอร์ตี้แทน
    • (I8f5c7, b/168762961)
  • เลิกใช้งาน foundation.Box แล้ว โปรดใช้ foundation.layout.Box แทน (Ie5950, b/167680279)
  • เปลี่ยนชื่อกองเป็นกล่องแล้ว เราจะเลิกใช้งาน Box ที่มีอยู่ก่อนหน้านี้และหันมาใช้ Box ใหม่ใน compose.foundation.layout ลักษณะการทํางานของกล่องใหม่คือการซ้อนองค์ประกอบย่อยไว้บนกันเมื่อมีองค์ประกอบย่อยหลายรายการ ซึ่งแตกต่างจากกล่องเวอร์ชันเก่าที่ทํางานคล้ายกับคอลัมน์ (I94893, b/167680279)
  • เลิกใช้งานพารามิเตอร์การตกแต่งกล่องแล้ว หากต้องการมีการตกแต่ง/ระยะห่างจากขอบในกล่อง ให้ใช้ตัวแก้ไขแทน (Modifier.background, Modifier.border, Modifier.padding) (Ibae92, b/167680279)
  • อัปเดต Graphics API หลายรายการ
    • อัปเดต DrawScope API ด้วยเมธอดการเปลี่ยนรูปแบบแบบจำกัดขอบเขตเพื่อระบุว่าจะใช้การเปลี่ยนรูปแบบภายในการเรียกกลับเท่านั้นและนำออกหลังจากเรียกการเรียกกลับแล้ว
    • อัปเดตเอกสารประกอบเกี่ยวกับ clipPath เพื่อใช้อ้างอิงเส้นทางแทนสี่เหลี่ยมผืนผ้ามน
    • แก้ไขระยะห่างในเอกสารประกอบสำหรับพารามิเตอร์ด้านขวาใน clipPath
    • เปลี่ยนชื่อ DrawScope.drawCanvas เป็น drawIntoCanvas และนําพารามิเตอร์ขนาดออก
    • เปลี่ยนชื่อพารามิเตอร์ dx/dy ในเมธอด inset เป็นแนวนอนและแนวตั้ง
    • เพิ่มการโอเวอร์โหลดของ inset ที่ให้ค่า inset เดียวกันกับขอบทั้ง 4
    • นำเอกสารประกอบเกี่ยวกับวิธีการใส่ข้อความที่ระบุว่าจะมีการใส่ข้อความทั้ง 4 ด้านออก
    • เอกสารประกอบที่อัปเดตสำหรับคลาส Rect
    • อัปเดตความคิดเห็นเกี่ยวกับพารามิเตอร์ Rect ให้ตรงกับ kdoc style
    • นํา Rect.join และ Rect.expandToInclude ออกแล้ว
    • สร้างการโอเวอร์โหลดสำหรับ Rect.translate(offset) และเลิกใช้งาน Rect.shift
    • (If086a, b/167737376)
  • กำกับเนื้อหา rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled และ textInputServiceFactory ด้วย @VisibleForTesting, ทำให้เป็น API ภายใน และซ่อน kdoc (I554eb, b/168308412)
  • นํา SelectionContainer ออกจากด้านบนเพื่อปิดใช้การเลือกเริ่มต้นและหลีกเลี่ยงลักษณะการทํางานที่คาดไม่ถึง คุณสามารถใช้ SelectionContainer โดยเฉพาะเพื่อตัดเนื้อหาที่ต้องเลือกได้ (I8dfe0, b/158459594)

เวอร์ชัน 1.0.0-alpha03

16 กันยายน 2020

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

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

  • นำการดำเนินการตามความหมายของการเลื่อนไปข้างหน้า/ข้างหลังออก เพิ่มขั้นตอนใน AccessibilityRangeInfo (Ia47b0)
  • นำ onInvalidate() ออกจาก Owner แล้ว OwnedLayer จัดการการลบล้าง (Ica72b, b/162061312)
  • นําเมธอดโอเปอเรเตอร์ใน Size API ที่ใช้พารามิเตอร์ Offset ออก ผลลัพธ์ของการดำเนินการเหล่านี้ไม่ชัดเจน และประเภทของผลลัพธ์ก็คาดไม่ถึง เช่น ควรให้ size - offset แสดงผลออฟเซ็ตหรือแสดงผลขนาดที่มีผลต่าง

    และนำเมธอดที่เลิกใช้งานในคลาส Size ออกด้วย (Iec902, b/166514214)

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

  • แก้ไขรายการของ LazyColumn ที่วาดอย่างไม่ถูกต้องในบางครั้ง ซึ่งก็ทำให้เกิดข้อขัดข้องในบางกรณีด้วย (Ibcf17, b/163066980, b/165921895)
  • เราเลิกใช้งาน DpConstraints และ API ที่ใช้ DpConstraints แล้ว (I90cdb, b/167389835)
  • ย้าย createAndroidComposeRule และ AndroidInputDispatcher จาก androidx.ui.test.android ไปยัง androidx.ui.test แล้ว (Idef08, b/164060572)
  • การใช้การถ่วงน้ำหนักได้รับการเปลี่ยนชื่อเป็น "จัดแนว" หรือ "การจัดแนว" ใน API เลย์เอาต์อย่างสอดคล้องกัน (I2421a, b/164077038)
  • เพิ่ม onNode และเมธอดส่วนกลางอื่นๆ ใน ComposeTestRule เนื่องจากเมธอดส่วนกลางปัจจุบันจะเลิกใช้งาน (Ieae36)

เวอร์ชัน 1.0.0-alpha02

2 กันยายน 2020

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

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

  • นำการเรียกกลับออกเพื่อแจ้งให้เจ้าของทราบเมื่อขอบเขตของ layoutnode เปลี่ยนแปลง (If654e, b/166106882)
  • เพิ่มการรองรับพารามิเตอร์ประเภทการเติมในเส้นทางกราฟิกเวกเตอร์เพื่อรองรับการตัดรูปร่างตามกฎการเติมเส้นทางแบบ evenOdd หรือ NonZero (I43dd2)
  • ตอนนี้ Uptime และ Velocity เป็นคลาสในบรรทัด (I48f4a)
  • ตอนนี้ Duration เป็นคลาสย่อยในบรรทัด (I565eb)
  • เพิ่มการเรียกกลับเพื่อแจ้งให้เจ้าของทราบเมื่อขอบเขตของ layoutnode เปลี่ยนแปลง (Ic40b3)
  • แก้ไขปัญหาที่ตัวสร้างฟังก์ชัน Rect ที่มีออฟเซตและรัศมีจะสร้าง Rect ในลำดับซ้าย ขวา บน ล่าง แทนที่จะเป็นซ้าย บน ขวา ล่าง

    นำเมธอดที่ใช้ร่วมกันซึ่งเลิกใช้งานแล้วใน Rect ออกเพื่อใช้ตัวสร้างฟังก์ชันแทน

    เพิ่มการทดสอบเพื่อยืนยันเมธอดใน Rect.kt (I08460, b/165822356)

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

  • เพิ่ม MutableRect ซึ่งเป็นสี่เหลี่ยมผืนผ้าที่แก้ไขได้ (I71bd2, b/160140398)
  • Matrix4 ถูกแทนที่ด้วย Matrix ส่วนอื่นๆ ทั้งหมดของแพ็กเกจ vectormath ถูกนำออกแล้ว (Ibd665, b/160140398)
  • รูปแบบการเรียกฟังก์ชันคอมโพสิเบิลมีการเปลี่ยนแปลง นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ ต้องคอมไพล์ไลบรารีทั้งหมดอีกครั้งเพื่อให้ใช้งานกับปลั๊กอินคอมไพเลอร์คอมโพซ เวอร์ชันนี้ได้

    การเปลี่ยนแปลงนี้จะไม่ทำให้เกิดการเปลี่ยนแปลงระดับแหล่งที่มาที่ทำให้เกิดข้อขัดข้อง เนื่องจาก API เพียงรายการเดียวที่มีการเปลี่ยนแปลงคือ API คอมไพเลอร์ที่เลือกใช้อย่างชัดเจน (I7afd2, b/158123185)

  • แก้ไขข้อขัดข้องที่อาจเกิดขึ้นเมื่อการส่งไปยัง PointerInputFilter อาจทําให้ระบบนํา PointerInputFilter ออกพร้อมกัน (I58f25)

เวอร์ชัน 1.0.0-alpha01

26 สิงหาคม 2020

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

เวอร์ชัน 0.1.0-dev

เวอร์ชัน 0.1.0-dev17

19 สิงหาคม 2020

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

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

  • emitView เลิกใช้งานแล้ว ใช้ AndroidView แทนหากเป็นไปได้สำหรับการส่งออกมุมมองภายใน Compose โปรดทราบว่าระบบจะไม่รองรับการคอมโพสิชัน View และ ViewGroup โดยตรงในอนาคต เว้นแต่ว่าองค์ประกอบเหล่านี้จะเป็นใบไม้ในต้นไม้คอมโพสิชัน ซึ่งในกรณีนี้สามารถดำเนินการได้โดยใช้ AndroidView (I29b1e, b/163871221)
  • FocusState2 เลิกใช้งานแล้วและแทนที่ด้วย FocusState (Ia8b79, b/160822876, b/160923332)
  • ระบบนำการโอเวอร์โหลด AndroidView ที่เลิกใช้งานออกแล้ว (I946b9, b/163802393)
  • ตอนนี้การระบุข้อมูลที่กำหนดเองสามารถประกาศว่าตัวตั้งค่าอย่างน้อย 1 รายการสามารถข้ามและคอมโพสิชันใหม่ได้โดยไม่เกี่ยวข้องกับการระบุข้อมูล (Ibbd13)
  • เปลี่ยนคลาสเวกเตอร์เพื่อไม่ให้เป็นคลาสข้อมูลอีกต่อไป เนื่องจากมีการใช้อินสแตนซ์ออบเจ็กต์เดียวกันสำหรับการคอมโพสิชัน

    เพิ่ม Flag mutableStateOf สำหรับ VectorPainter เพื่อวาดใหม่แบบมีเงื่อนไขหากเนื้อหาของเวกเตอร์มีการเปลี่ยนแปลง

    ปรับโครงสร้างอินสแตนซ์ VectorComponent ให้เป็นส่วนหนึ่งของ VectorPainter เนื่องจากมีการใช้ซ้ำในองค์ประกอบต่างๆ

    อัปเดต GroupComponent และ PathComponent ให้ช่องชื่อมีการเปลี่ยนแปลงได้ (Ieae45, b/151378808)

  • นำ onChildPositioned และ OnChildPositionedModifier ออกแล้ว นักพัฒนาแอปควรใช้ onPositioned และ OnPositionedModifier ในเลย์เอาต์ย่อยแทน (I4522e, b/162109766)

  • ออฟเซ็ตกลายเป็นคลาสในบรรทัด (Iaec70)

  • เพิ่มพารามิเตอร์ตัวแก้ไขลงใน SelectionContainer (I4aada, b/161487952)

  • นํา FocusModifier ที่เลิกใช้งานแล้วออก (I0b4ba, b/160922116, b/160821157, b/162441435, b/160822875, b/160921940)

  • เพิ่ม mergePolicy ไปยัง SemanticsPropertyKey แล้ว ซึ่งสามารถใช้เพื่อกำหนดนโยบายที่กำหนดเองสำหรับการผสานความหมายของ mergeAllDescendants นโยบายเริ่มต้นคือการใช้ค่าหลักหากมีอยู่แล้ว ไม่เช่นนั้นจะใช้ค่าย่อย (Iaf6c4, b/161979921)

  • ตอนนี้ข้อจำกัดเป็นคลาสย่อย (I88736)

  • เพิ่ม FocusManager ที่ย้ายตรรกะโฟกัสทั่วไปออกจาก AndroidComposeView (I528ef, b/161487952, b/162206799)

  • อัปเดตชื่อ PointerEventPass สำหรับรุ่นอัลฟ่า (Ifda6f)

  • ตอนนี้ IntOffset เป็นคลาสย่อยในบรรทัด (Iac0bf)

  • ตอนนี้ IntSize เป็นคลาสย่อยในบรรทัด (I2bf42)

  • เปลี่ยนชื่อ PlacementScope.placeAbsolute() เป็น PlacementScope.place() และเปลี่ยนชื่อ PlacementScope.place() ก่อนหน้าเป็น PlacementScope.placeRelative() ดังนั้น เมธอด PlacementScope.place() จะไม่มิเรอร์ตำแหน่งในบริบทจากขวาไปซ้ายโดยอัตโนมัติอีกต่อไป หากต้องการใช้รูปแบบนี้ ให้ใช้ PlacementScope.placeRelative() แทน (I873ac, b/162916675)

  • ตอนนี้ AlertDialog ใช้ FlowRow สําหรับปุ่มแล้ว (I00ec1, b/161809319, b/143682374)

  • เปลี่ยนยูทิลิตีการทดสอบบางรายการเป็นแบบไม่สาธารณะเนื่องจากไม่ได้อยู่ในตำแหน่งที่ควรจะอยู่ จะเผยแพร่ต่อสาธารณะในอนาคต (I32ab1)

  • การจัดระเบียบโค้ดอินพุตเคอร์เซอร์ใหม่ (Ie3f45)

  • เลิกใช้งาน PxBounds ไปใช้ Rect แทน อัปเดตการใช้งาน PxBounds ทั้งหมดด้วย rect และเพิ่มคำอธิบายประกอบที่เลิกใช้งาน/แทนที่อย่างเหมาะสมเพื่อช่วยในการย้ายข้อมูล (I37038, b/162627058)

  • นํา KeyEvent2 ที่เลิกใช้งานแล้วออก ใช้ KeyEvent แทน (Ied2d0, b/162097587)

  • KeyEvent มีพร็อพเพอร์ตี้ Unicode ที่ใช้รับอักขระ Unicode ที่สร้างขึ้นโดยชุดค่าผสมของสถานะคีย์และสถานะเมตาคีย์ที่ระบุ (If3afc)

  • เปลี่ยนเหตุการณ์ที่กําหนดเอง DelayUp และคลาสที่เกี่ยวข้องเป็น API แบบเลือกใช้เนื่องจากมีแนวโน้มสูงที่จะเปลี่ยนแปลง (I56d6f)

  • นำ PointerEventPass 2 รายการที่ไม่จําเป็นแล้วออก (I3dd9d)

  • เพิ่มพารามิเตอร์สี เงา และ TextDecoration ไปยัง Paragraph.paint ฟังก์ชันนี้มีประโยชน์ในการหลีกเลี่ยงการสร้างย่อหน้าใหม่โดยไม่จำเป็น (I81689)

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

  • นำการเรียกกลับ onFocusChanged ออกจาก TextField แล้ว ใช้ Modifier.focusObserver แทน (I51089, b/161297615)
  • เลิกใช้งาน Modifier.drawBorder แล้ว ใช้ Modifier.border แทน BorderStroke (I4257d, b/158160576) เข้ามาแทนที่คลาสข้อมูลเส้นขอบ
  • นำการเรียก FrameManager ที่เลิกใช้งานแล้วออก

    มีการเปลี่ยนแปลง API การคอมโพสิทภายในเพื่อลดปริมาณการเรียกใช้ทรัพยากรเพิ่มเติมในการติดตามออบเจ็กต์สถานะ เช่น mutableStateof() (I80ba6)

  • ระบบได้นำ VerticalScroller และ HorizontalScroller ออกแล้ว ให้ใช้ ScrollableColumn/Row แทน Modifier.drawBackground ถูกนําออกแล้ว ใช้ Modifier.background (I73b0d, b/163019183)

  • แก้ไขข้อขัดข้องเมื่อใช้สิ่งที่บันทึกสถานะภายในวง for ตอนนี้ระบบอนุญาตให้ใช้คีย์เดียวกันใน savedInstanceState() แล้ว ตอนนี้ API ของ UiSavedStateRegistry ปรับให้เป็นไปตามข้อกำหนดใหม่นี้ (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561)

  • ตอนนี้เราเลิกใช้งานคอมโพสิเบิล state { ... } แล้วเพื่อหันไปใช้การเรียกใช้ remember { mutableStateOf(...) } อย่างชัดแจ้งเพื่อความชัดเจน ซึ่งจะลดจำนวน API โดยรวมและจำนวนแนวคิดสำหรับการจัดการสถานะ และตรงกับรูปแบบ by mutableStateOf() สำหรับการมอบสิทธิ์พร็อพเพอร์ตี้ของคลาส (Ia5727)

  • เปลี่ยนชื่อ RRect เป็น RoundRect เพื่อปรับให้เข้ากับรูปแบบการตั้งชื่อคอมโพสิทได้ดีขึ้น สร้างตัวสร้างฟังก์ชันที่คล้ายกับ RRect และเลิกใช้งานตัวสร้างฟังก์ชัน RRect (I5d325)

เวอร์ชัน 0.1.0-dev16

5 สิงหาคม 2020

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

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

  • เลิกใช้งาน OnChildPositioned แล้ว ให้ใช้ OnPositioned ในรายการย่อยแทน (I87f95, b/162109766)
  • เลิกใช้งาน setViewContent แล้ว ควรใช้ setContent แทน (I7e497, b/160335130)
  • เพิ่ม AndroidViewBinding API สำหรับการขยายและคอมโพสิททรัพยากรเลย์เอาต์ตาม ViewBinding (I081c6)
  • KeyEvent2 แทนที่ด้วย KeyEvent (I2d770, b/162097585)
  • เพิ่มการรองรับคีย์ฮาร์ดแวร์ Alt (I9036b)
  • เลิกใช้งาน FocusManager แล้ว ให้ใช้ Modifier.focus(), Modifier.focusObserver() และ Modifier.focusRequester() แทน (I74ae4, b/162211322)
  • loadVectorResource รองรับแอตทริบิวต์ trimPath (I808fe)
  • ย้ายกล่องโต้ตอบไปยัง UI (I47fa6)
  • นำ PointerEventPass 2 รายการที่ไม่จําเป็นแล้วออก (I33ca7)
  • ใช้ PointerInteropModifier ซึ่งช่วยให้สามารถรับ MotionEvent และโต้ตอบกับ Compose ได้ ราวกับว่าคุณกำลังใช้งาน Android View (Ieb08c)
  • นําตัวแก้ไขแท็กที่เลิกใช้งานแล้วออก โปรดใช้ layoutId แทน (Idaa05, b/162023919)
  • อัปเดต API สำหรับการรองรับจากขวาไปซ้ายแล้ว เพิ่ม LayoutDirectionAmbient ซึ่งสามารถใช้อ่านและเปลี่ยนทิศทางของเลย์เอาต์ได้ นํา Modifier.rtl และ Modifier.ltr ออกแล้ว (I080b3)
  • รองรับการตัดเส้นทางในกราฟิกเวกเตอร์ (Ie16c9, b/158188351)
  • เพิ่ม Modifier.layout() ที่ช่วยให้คุณสร้างตัวแก้ไขเลย์เอาต์ที่กำหนดเองได้อย่างสะดวก (I73b69, b/161355194)
  • เพิ่ม AndroidView API ใหม่และเลิกใช้งาน API ที่มีอยู่ (I5bcfd)
  • เลิกใช้งาน Modifier.plus แล้ว ให้ใช้ Modifier.then แทน "Then" มีสัญญาณการจัดเรียงที่ชัดเจนกว่า ทั้งยังห้ามไม่ให้พิมพ์ Modifier.padding().background() + anotherModifier ซึ่งทำให้ลำดับคำขาดตอนกลางและอ่านยากขึ้น (Iedd58, b/161529964)
  • เพิ่มคลาสย่อยของ [Abstract]ComposeView สำหรับโฮสต์เนื้อหา Compose ในลําดับชั้นของ View (I46357)
  • ตอนนี้ Row และ Column เป็นฟังก์ชันอินไลน์ซึ่งช่วยลดค่าใช้จ่ายในการเรียกใช้อย่างมีนัยสำคัญ (I75c10)
  • เพิ่ม SubcomposeLayout แล้ว องค์ประกอบนี้เป็นองค์ประกอบพื้นฐานระดับล่างที่อนุญาตให้คอมโพสิชันย่อยในระหว่างการวัดได้หากเราต้องการใช้ค่าบางอย่างที่พร้อมใช้งานในภายหลังระหว่างการวัดสำหรับองค์ประกอบย่อย เช่น ไม่ได้ใช้ WithConstraints โดยใช้ SubcomposeLayout (I25cc8)
  • เพิ่ม SemanticsNode.positionInRoot เพื่อรับตําแหน่งของ SemanticsNode เทียบกับรูทของลําดับชั้นการเขียน (Icdf26, b/161336532)
  • MotionEvents ส่งผ่านจาก Android ไปยัง Compose และกลับไปยัง Android (I14be8, b/158034713)
  • นำ dropdownPopup ออกแล้ว (I00430)
  • ตำแหน่งป๊อปอัปแบบคงที่ในจอแสดงผลแบบเจาะรู (Idd7dd)
  • เพิ่มการดำเนินการสำหรับการช่วยเหลือพิเศษเพื่อรับ TextLayoutResult (I9d6e6)
  • เพิ่ม RemeasurementModifier ซึ่งช่วยให้วัดเลย์เอาต์อีกครั้งแบบซิงโครนัสได้ โดยทั่วไปแล้วคุณไม่จำเป็นต้องใช้ เนื่องจากระบบจะวัดผล/จัดเรียงใหม่โดยอัตโนมัติ แต่เราใช้มันภายใน LazyColumnItems ระหว่างการเลื่อน (I5f331, b/160791058)
  • นำ getLineEllipsisOffset/getLineEllipsisCount ออก ใช้ getLineVisibleEnd/getLineEnd/isLineEllipsized แทน (I85aa2)
  • เพิ่มเครื่องหมาย/คำอธิบายประกอบตามแนวทางปฏิบัติแนะนำ (I66b20)
  • แสดง API บรรทัดเพิ่มเติมใน TextLayoutResult (I79bd2)
  • ตอนนี้คุณสามารถเข้าถึงเครื่องมือแปลงเวกเตอร์ในตัวเพื่อแปลงหน่วยในตัวผ่าน Foo.VectorConverter ได้แล้ว เช่น Dp.VectorConverter, Color.VectorConverter, Float.VectorConverter เป็นต้น (I3e273)

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

  • แก้ไข API แบบกว้าง (I077bc)
    1. นำอินเทอร์เฟซ OffsetBase ที่ไม่ได้ใช้ออก
    2. จัดแนวคลาส Offset และ IntOffset เพื่อให้มีแพลตฟอร์ม API ที่สอดคล้องกัน
    3. เปลี่ยนชื่อ IntOffset.Origin เป็น IntOffset.Zero เพื่อใช้ร่วมกับ Offset API
    4. ย้ายเมธอด nativeCanvas ออกจากอินเทอร์เฟซ Canvas เพื่อรองรับผู้บริโภคในการสร้างอินสแตนซ์ Canvas ของตนเอง
    5. สร้างคลาส EmptyCanvas จำลองเพื่อรีแฟกทอริง DrawScope ให้มีพารามิเตอร์ที่ไม่ใช่ค่า Null แทนที่จะใช้ lateinit และตรวจสอบว่าฟิลด์ไม่ใช่ค่า Null
    6. เปลี่ยนชื่อลิสต์ค่าคงที่ ClipOp เป็น Pascal Case
    7. เปลี่ยนชื่อเอนทิตี FilterQuality เป็น Pascal Case
    8. เปลี่ยนชื่อลิสต์ค่าคงที่ StrokeJoin เป็น Pascal Case
    9. เปลี่ยนชื่อ PointMode enum เป็น Pascal Case
    10. เปลี่ยนชื่อเอนทิตี PaintingStyle เป็น Pascal Case
    11. เปลี่ยนชื่อลิสต์แบบจำกัดของ PathFillType เป็น Pascal Case
    12. เปลี่ยนชื่อลิสต์ค่าคงที่ StrokeCap เป็น Pascal Case
    13. อัปเดตการใช้งาน DrawCache เพื่อไม่ให้ใช้พารามิเตอร์ lateinit อีกต่อไป
    14. อัปเดต DrawScope เพื่อไม่ให้ใช้การมอบสิทธิ์แบบเลื่อนเวลาดำเนินการอีกต่อไปสำหรับพารามิเตอร์ภายในของ fillPaint และ strokePaint
    15. อัปเดตคอมโพสิชันรูปภาพเพื่อหลีกเลี่ยงการใช้ Box เพื่อลดค่าใช้จ่ายเพิ่มเติม
    16. อัปเดตคลาส Outline ให้มีคําอธิบายประกอบ @Immutable
    17. อัปเดต PathNode ให้มีคําอธิบายประกอบ @Immutable สําหรับคำสั่งเส้นทางแต่ละรายการ
    18. อัปเดตองค์ประกอบย่อยเวกเตอร์เพื่อนำการตรวจสอบแบบมีเงื่อนไขที่ซ้ำซ้อนออกเพื่อหาค่าเท่ากัน เนื่องจากคอมโพสิชันจัดการการตรวจสอบดังกล่าวอยู่แล้ว
    19. เลิกใช้งานเมธอดคอนสตรัคเตอร์ของ Rect ที่ใช้ร่วมกันเพื่อหันไปใช้คอนสตรัคเตอร์ของฟังก์ชัน
    20. อัปเดตคลาส Brush และตัวสร้างฟังก์ชันด้วย @Immutable และ @Stable API
    21. อัปเดต VertexMode enum เป็น PascalCase
    22. อัปเดตเมธอด selectPaint ของ DrawScope ให้เขียนทับพารามิเตอร์การวาดใน Paint แบบมีเงื่อนไขหากมีการเปลี่ยนแปลง
    23. อัปเดต Size เพื่อเพิ่ม API การจัดโครงสร้างใหม่ เปลี่ยนชื่อ UnspecifiedSize เป็น Unspecified และนำเมธอดที่ไม่ได้ใช้งานออก
  • อัปเดตการใช้ Compose BlendMode API เพื่อแมประหว่าง BlendMode ของเฟรมเวิร์ก Android กับโหมด PorterDuff อย่างเหมาะสมโดยขึ้นอยู่กับระดับ API เปิดตัว BlendMode#isSupported API เพื่อทำหน้าที่เป็นคำถามเกี่ยวกับความสามารถเพื่อระบุว่าอุปกรณ์รองรับ BlendMode หรือไม่ก่อนที่จะใช้งาน (I0ef42)
  • เพิ่ม LazyItemScope สำหรับพารามิเตอร์ itemContent ของรายการแบบ Lazy ฟีเจอร์นี้มีตัวแก้ไขเพื่อเติมขนาดสูงสุดของรายการหลัก ซึ่งจะแก้ปัญหา Use Case เมื่อรายการควรเติมเต็มวิวพอร์ต และ Modifier.fillMaxSize() ปกติไม่ทำงานเนื่องจากระบบวัดรายการด้วยข้อจำกัดแบบอินฟินิตี้ (Ibd3b2, b/162248854)
  • นำ SemanticsNodeInteraction.performPartialGesture ออกแล้ว ให้ใช้ SemanticsNodeInteraction.performGesture แทน (Id9b62)
  • เปลี่ยนชื่อ LazyColumnItems เป็น LazyColumnFor แล้ว เปลี่ยนชื่อLazyRowItemsเป็น LazyRowFor แล้ว (I84f84)
  • แพ็กเกจ foundation.shape.corner ได้รับการผสานเป็น foundation.share (I46491, b/161887429)
  • เปลี่ยนชื่อ AndroidComposeTestRule เป็น createAndroidComposeRule แล้ว (I70aaf)
  • เพิ่ม API เพิ่มเติมลงใน TextLayoutResult (Id7e04)
  • เปลี่ยนชื่อวัสดุ FilledTextField เป็น TextField และเปลี่ยนชื่อพื้นฐาน TextField เป็น BaseTextField เพื่อให้ค้นพบและใช้งาน API ที่ต้องการได้ง่ายที่สุด (Ia6242, b/155482676)
  • เปลี่ยนชื่อ Modifier.drawBackground เป็น Modifier.background (I13677)

เวอร์ชัน 0.1.0-dev15

22 กรกฎาคม 2020

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

การอัปเดตทรัพยากร Dependencies

  • หากต้องการใช้ Compose เวอร์ชัน 0.1.0-dev15 คุณจะต้องอัปเดต Dependency ตามข้อมูลโค้ดใหม่ที่แสดงด้านบนในส่วนการประกาศ Dependency

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

  • เลิกใช้งาน FocusModifier แล้วเพื่อใช้ Modifier.focus, Modifier.focusRequester, Modifier.focusObserver แทน เราเลิกใช้งาน FocusState และ FocusDetailedState แล้ว โปรดเปลี่ยนไปใช้ FocusState2 (I46919, b/160822875, b/160922136)
  • เพิ่มตัวแก้ไขเพื่อสังเกตการเปลี่ยนแปลงสถานะโฟกัส (I05866, b/160924455, b/160923326)
  • เพิ่มตัวแก้ไขเพื่อขอการเปลี่ยนแปลงโฟกัส (I8dd73, b/161182057, b/160924778)
  • ปรับเมนูแถบเครื่องมือให้แสดงการคัดลอก ตัด วาง อย่างถูกต้อง (Id3955)
  • ตอนนี้พร็อพเพอร์ตี้ความหมายแบบค่าเดี่ยวใช้รูปแบบการเรียกแล้ว เช่น ตอนนี้ "semantics { hidden = true }" จะเขียนเป็น semantics { hidden() } (Ic1afd, b/145951226, b/145955412)
  • เพิ่ม Modifier.focus ซึ่งมาแทนที่ FocusModifier (Ib852a, b/160924778)
  • เพิ่ม FloatingToolbar สำหรับการเลือก TextField (Ie8b07)
  • เพิ่มคำอธิบายประกอบ API เวอร์ชันทดลองสําหรับ API ที่เกี่ยวข้องกับการป้อนคีย์ (I53c0a)
  • เพิ่มคำอธิบายประกอบ API เวอร์ชันทดลองสำหรับ API ทั้งหมดที่เกี่ยวข้องกับ Focus (I53b24, b/160903352)
  • เพิ่ม FocusState2 ซึ่งจะมาแทนที่ FocusDetailedState (I0a3ba, b/160822595)
  • เพิ่ม ExperimentalFocus ซึ่งเป็นคำอธิบายประกอบ @OptIn สำหรับ Focus API (I1544b, b/160820961)
  • เพิ่มคลาสหน่วย IntBounds ซึ่งแสดงขอบเขตพิกเซลจำนวนเต็มจากเลย์เอาต์ เราได้อัปเดต API ของ PopupPositionProvider เพื่อใช้งานแล้ว (I0d8d0, b/159596546)
  • ตอนนี้ Applier ต้องใช้เมธอด clear() ในการทิ้งคอมโพสิชัน (Ibe697)
  • เลิกใช้งาน KeyEvent แล้วแทนที่ด้วย KeyEvent2 (I68730)
  • เพิ่ม Flag ใหม่ที่ไม่บังคับอย่าง useUnmergedTree เพื่อทดสอบเครื่องมือค้นหา (I2ce48)
  • เปลี่ยน LayoutNode เป็น API เวอร์ชันทดลอง (I4f2e9)
  • เพิ่มเมธอดการคัดลอกลงในประเภทคลาสในบรรทัดต่างๆ ซึ่งรวมถึง

    • ออฟเซ็ต
    • ขนาด
    • รัศมี
    • การเคลื่อนไหว
    • TransformOrigin

    • เลิกใช้งานเมธอดออบเจ็กต์คอมพาเนียนของ Size.copy แล้วIfe290, b/159905651)

  • ตอนนี้ป๊อปอัป กล่องโต้ตอบ และเมนูจะรับค่า MaterialTheme ตามบริบท (Ia3665, b/156527485)

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

  • นําพารามิเตอร์ทิศทางเลย์เอาต์ออกจากบล็อกการวัดของฟังก์ชัน Layout() แล้ว อย่างไรก็ตาม ทิศทางของเลย์เอาต์จะอยู่ในคอลแบ็กผ่านออบเจ็กต์ขอบเขตการวัด (Ic7d9d)

  • ปรับโครงสร้าง SelectionHandles เพื่อใช้ซ้ำ (I420e0)

  • นำ "คลิกได้" ออกแล้ว ใช้ Modifier.clickable (I84bdf)

  • ลบ TestTag และ Semantics แล้ว ใช้ Modifier.testTag และ Modifier.semantics แทน (I15ff0, b/158841414)

  • ก่อนการเปลี่ยนแปลงนี้ ปลั๊กอินคอมไพเลอร์คอมโพสิทจะขัดจังหวะการเรียกตัวสร้างคอนสตรัคเตอร์ภายในฟังก์ชัน @Composable อย่างไม่ง่ายดายหากมี (I5205a, b/158123804)

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

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

  • เพิ่มพารามิเตอร์ตัวแก้ไขลงในคอมโพสิชัน AndroidView (I48a88, b/158746303)

  • เลิกใช้งาน Semantics() แล้ว ใช้ Modifier.semantics() แทน (I72407, b/158841414)

  • เพิ่มคอมโพสิชัน viewModel() ซึ่งช่วยให้สร้างหรือรับ ViewModel ที่สร้างขึ้นแล้วได้คล้ายกับวิธีการทํางานใน Activity หรือ Fragment (I5fdd1)

  • แทนที่การใช้ IntPx ด้วย Int แทนที่ IntPxPosition ด้วย IntOffset แทนที่ IntPxSize ด้วย IntSize (Ib7b44)

  • เพื่อรวมจำนวนคลาสที่ใช้แสดงข้อมูลการปรับขนาด ให้ใช้คลาส Size แทน PxSize วิธีนี้ให้ประโยชน์ของคลาสอินไลน์เพื่อใช้ประโยชน์จาก long เพื่อแพ็กค่า Float 2 ค่าเพื่อแสดงความกว้างและความสูงที่แสดงเป็น Float (Ic0191)

  • เพื่อรวมจำนวนคลาสที่ใช้แสดงข้อมูลตำแหน่ง ให้ใช้คลาส Offset แทน PxPosition ซึ่งให้ประโยชน์ของคลาสอินไลน์เพื่อใช้ประโยชน์จาก long เพื่อแพ็กค่า Float 2 ค่าเพื่อแสดงค่าออฟเซ็ต x และ y ที่แสดงเป็น Float (I3ad98)

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

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

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

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

  • เลิกใช้งาน TestTag แล้ว ใช้ Modifier.testTag แทน (If5110, b/157173105)

  • นําการใช้งาน ParentDataModifier#modifyParentData เริ่มต้นที่ไม่มีการดําเนินการออกแล้ว ซึ่งเทียบเท่ากับการไม่ใช้งานอินเทอร์เฟซตั้งแต่แรก (I0deaa)

  • ลบ ScaleFit ที่เลิกใช้งานไปแล้วก่อนหน้านี้ออก ให้ใช้ ContentScale แทน (Ifbc5b)

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

  • เพิ่มคอมโพเนนต์ DropdownMenu ใน ui-material ซึ่งเป็นการใช้งานเมนู Material Design (I9bb3d)

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

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

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

  • รวมการใช้งาน CanvasScope เข้าด้วยกันเพื่อให้เหลือเพียง DrawScope และ ContentDrawScope เท่านั้น และเปลี่ยนชื่อ CanvasScope เป็น DrawScope อัปเดต DrawScope เพื่อใช้อินเทอร์เฟซ Density และระบุ LayoutDirection ลบคลาสย่อย DrawScope ใน ContentDrawScope อัปเดต Painter และ PainterModifier เพื่อไม่ให้ดูแลรักษาพร็อพเพอร์ตี้ RTL เองอีกต่อไปเนื่องจาก DrawScope มีพร็อพเพอร์ตี้นี้อยู่แล้วโดยไม่ต้องระบุด้วยตนเอง (I1798e)

  • ตอนนี้ DoubleTapGestureFilter จะแยกแยะ SingleTapGestureFilter ทั่วทั้งต้นไม้ (If92b1)

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

  • มีการเปลี่ยนแปลง API ของตัวแก้ไข DrawLayer โดยเปลี่ยนชื่อ outlineShape เป็น shape และมีค่าเริ่มต้นเป็น RectangleShape และตอนนี้ไม่ใช่ค่าที่ลบไม่ได้ เปลี่ยนชื่อ clipToOutline เป็น clip นำ clipToBounds ออกเนื่องจากเหมือนกับ clip == true ที่มี RectangleShape (I7ef11, b/155075735)

  • อัปเดตระดับที่สูงขึ้นเพื่อคอมโพส API ที่แสดง Canvas ให้แสดง CanvasScope แทน ซึ่งทำให้ผู้บริโภคไม่ต้องดูแลรักษาออบเจ็กต์ Paint ของตนเอง สําหรับผู้บริโภคที่ยังคงต้องการเข้าถึง Canvas อยู่ สามารถใช้เมธอดของส่วนขยาย drawCanvas ซึ่งจะให้การเรียกกลับเพื่อออกคําสั่งวาดด้วย Canvas ที่อยู่เบื้องหลัง (I80afd)

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

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

  • นำอินเทอร์เฟซ LayoutModifier ที่เลิกใช้งานแล้วออก (I2a9d6)

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

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

  • เพิ่ม Modifier.zIndex() ใหม่เพื่อควบคุมลําดับการวาดขององค์ประกอบย่อยภายในเลย์เอาต์หลักเดียวกัน เปลี่ยนชื่อพร็อพเพอร์ตี้ elevation ใน DrawLayerModifier เป็น shadowElevation และจะไม่ควบคุมลําดับการวาดอีกต่อไป ลำดับพารามิเตอร์ของ DrawShadow มีการเปลี่ยนแปลง โดยตอนนี้ความสูงจะอยู่ในลำดับแรกและรูปร่างจะอยู่ในลำดับที่ 2 โดยมีค่าเริ่มต้นเป็น RectangleShape (I20150, b/152417501)

  • นำ onSizeChange และ onPositionChange ในส่วนเจ้าของออก (I5c718)

  • เพิ่ม Constraints2 ซึ่งเป็นสำเนาของ Constraints ที่รองรับเฉพาะค่า Int constraints แทน IntPx ระบบจะนำ IntPx ออกและจะถือว่าข้อจำกัดจำนวนเต็มทั้งหมดเป็นพิกเซลเหมือนกับ Android

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

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

  • (I45f09, b/152842521)

    • เปลี่ยนชื่อ ScaleFit เป็น ContentScale
    • ย้าย ContentScale จากโมดูล ui-graphics ไปยัง ui-core เพื่อให้อยู่ในโมดูลเดียวกับ Alignment API
    • เปลี่ยนชื่อ FillMaxDimension เป็น Crop
    • เปลี่ยนชื่อ FillMinDimension เป็น Fit
    • เปลี่ยนชื่อเป็น "พอดีกับภายใน" เพื่อให้ตรงกันมากขึ้น
    • ค่าที่เทียบเท่าของ ImageView.ScaleType
    • เพิ่มเอกสารประกอบที่ระบุว่าการรวมการครอบตัดและ Alignment.Center ให้ผลลัพธ์เหมือนกับ ImageView.ScaleType.CENTER_CROP และการใช้ Fit กับ Alignment.Center ให้ผลลัพธ์เหมือนกับ ImageView.ScaleType.FIT_CENTER และการใช้ Inside กับ Alignment.Center ให้ผลลัพธ์เหมือนกับ ImageView.ScaleType.CENTER_INSIDE
  • การรองรับ Rtl สําหรับตัวแก้ไขการวาด (I0aaf9)

  • เปิดตัว API สําหรับการขยายวิว Android จาก XML ดูรายละเอียดเพิ่มเติมในการแสดงตัวอย่าง ViewInCompose (I42916)

  • ปรับปรุง DrawModifier API

    • สร้างขอบเขตผู้รับสำหรับ ContentDrawScope ของ draw()
    • นําพารามิเตอร์ทั้งหมดใน draw() ออก
    • DrawScope มีอินเทอร์เฟซเดียวกับ CanvasScope เดิม
    • ContentDrawScope มีเมธอด drawContent() (Ibaced, b/152919067)
  • เพิ่ม positionInParent และ boundsInParent สำหรับ LayoutCoordinates (Icacdd, b/152735784)

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

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

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

  • แทนที่โอเปอเรเตอร์ตัวเพิ่มตัวแก้ไขด้วยฟังก์ชันส่วนขยายเริ่มต้น (I225e4)

  • เพิ่มพร็อพเพอร์ตี้ translationX/Y เพื่อรองรับการเลื่อนรายการคำสั่งวาดที่แสดงสำหรับเลเยอร์หนึ่งๆ ซึ่งมีประโยชน์ในการย้ายเนื้อหาเพื่อตอบสนองต่อภาพเคลื่อนไหวหรือเหตุการณ์การแตะ (I8641c)

  • เพิ่มพารามิเตอร์ pivotX, pivotY ลงใน Layer API เพื่อรองรับการหมุนและการปรับขนาดรอบจุดหนึ่งๆ ในเลเยอร์ (Icf7c3)

  • เพิ่ม OnPositionedModifier และ OnChildPositionedModifier เพื่อแทนที่ฟังก์ชันคอมโพสิเบิล OnPositioned และ OnChildPositioned (I2ec8f)

  • เพิ่ม LayerModifier ซึ่งเป็นตัวแก้ไขที่อนุญาตให้เพิ่ม RenderNode สําหรับเลย์เอาต์ ซึ่งช่วยให้คุณตั้งค่าการตัด ระดับความทึบแสง การหมุน การปรับขนาด และแสงเงาได้ ซึ่งจะแทนที่ RepaintBoundary (I7100d, b/150774014)

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

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

  • การรองรับ Rtl ในเลย์เอาต์การเขียนอีเมลครั้งแรก (Ia5519)

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

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

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

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

  • การปรับปรุงอินเทอร์เฟซ API ของข้อจํากัด (I0fd15)

  • สร้าง CanvasScope API ที่รวมออบเจ็กต์ Canvas เพื่อแสดงแพลตฟอร์ม API การวาดแบบประกาศแบบไม่มีสถานะ การเปลี่ยนรูปแบบจะอยู่ในขอบเขตของตัวรับเอง และข้อมูลการปรับขนาดก็อยู่ในขอบเขตของขอบเขตส่วนที่แทรกที่เกี่ยวข้องด้วย โดยไม่จำเป็นต้องให้ผู้บริโภคดูแลรักษาออบเจ็กต์สถานะ Paint ของตนเองเพื่อกำหนดค่าการดำเนินการวาด

    • เพิ่ม CanvasScopeSample และอัปเดตแอปเดโมให้รวมการสาธิตกราฟิกแบบประกาศ (Ifd86d)
  • นํา MaskFilter API ที่ไม่ได้ใช้ออกเนื่องจากมีการใช้งานจํากัดและไม่ได้เพิ่มประสิทธิภาพเพื่อเร่งด้วยฮาร์ดแวร์ใน Use Case ส่วนใหญ่ (I54f76)

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

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

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

  • เพิ่มสี "ไม่ได้ตั้งค่า" เพื่อแสดงค่าที่ไม่ได้ตั้งค่าโดยไม่ต้องใช้การแยกค่าสี (If901a)

  • เพิ่มเมธอดส่วนขยาย Canvas.rotate และ Canvas.scale เพื่อใช้พิกัดจุดหมุนที่ไม่บังคับสำหรับการเปลี่ยนรูปแบบ ซึ่งค่าเริ่มต้นจะอยู่ที่มุมซ้ายบนของภาพพิมพ์แคนวาสปัจจุบัน

    และย้าย Canvas.rotateRad ไปอยู่ในรูปแบบเมธอดส่วนขยายเพื่อความสอดคล้อง (Ibaca6)

  • สร้าง PixelMap API เพื่อรองรับการค้นหาข้อมูลพิกเซลจาก ImageAsset (I69ad6)

  • เปลี่ยนชื่อจาก toFrameworkRect/toFrameworkRectF เป็น toAndroidRect/toAndroidRectF เพื่อให้ตรงกับรูปแบบการตั้งชื่อสำหรับการเปลี่ยนรูปแบบออบเจ็กต์ระหว่าง Compose กับ API เฟรมเวิร์ก Android ที่สร้างขึ้น นอกจากนี้ เรายังได้อัปเดตเอกสารประกอบเกี่ยวกับ API เหล่านี้ด้วย (I86337)

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

    เปลี่ยนชื่อ Image(Painter) API เป็น PaintBox(Painter) สร้างคอมโพสิชันเวกเตอร์ที่ทํางานเหมือนคอมโพสิชันรูปภาพ ยกเว้นการใช้ VectorAsset แทน ImageAsset (I9af9a, b/149030271)

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

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

  • เพิ่มโอเปอเรเตอร์ TextDecoration.plus (I0ad1a)

  • นำ Force ออกจากค่า enum ของ TextDirectionAlgorithm (Icc944)

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

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

  • เพิ่ม AnnotatedString.getStringAnnotations ที่แสดงคำอธิบายประกอบทั้งหมดภายในช่วง (I1fa00)

  • เปลี่ยนชื่อแพ็กเกจสำหรับ Locale และ LocaleList จาก androidx.ui.text เป็น androidx.ui.intl (I8132c)

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

  • การเปลี่ยนแปลง API: เปลี่ยนชื่อ AnnotatedString(builder: Builder) เป็น annotatedString(builder: Builder) (Ia6377)

  • การเปลี่ยนแปลง API: เปลี่ยนชื่อ AnnotatedString.Item เป็น AnnotatedString.Range (I2d44d)

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

  • ตอนนี้คุณสามารถซ่อน/แสดงแป้นพิมพ์ซอฟต์แวร์ได้โดยใช้ SoftwareKeyboardController ซึ่งส่งโดย callback ของ onTextInputStarted (I8dc44, b/151860051)

  • เพิ่มโอเปอเรเตอร์บวกสำหรับสไตล์ (ข้อความ/ย่อหน้า/ส่วน) ซึ่งส่งผ่านไปยังฟังก์ชัน merge() (Ia1add)

  • FontWeight.lerp จะไม่ยึดอีกต่อไป คลาสนี้ยังคงเป็นคลาสข้อมูล (I521c2)

  • ตอนนี้ตัวสร้าง FontWeight เป็นแบบสาธารณะแล้ว ไม่ใช่คลาสข้อมูลอีกต่อไป (Id6b1f)

  • เพิ่ม getLineStart, getLineEnd, getEllipsisOffset และ getEllipsisCount ลงใน TextLayoutResult (Ibc801)

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

  • นําคลาส Size ที่ไม่ได้ใช้ออกเนื่องจากมีคลาส Size ที่ซ้ำกันในโมดูล ui-geometry ที่ใช้อยู่ (I1b602)

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

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

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

  • เปลี่ยนชื่อการเรียกกลับ onFocusChange ในช่องข้อความเป็น onFocusChanged (Ida4a1)
  • เลิกใช้งาน VerticalScroller และ HoriziontalScroller แล้ว ใช้ ScrollableColumn และ ScrollableRow เพื่อประสบการณ์การใช้งานในตัวด้วยลักษณะการทำงานและพารามิเตอร์ของคอลัมน์/แถว หรือ Modifier.verticalScroll และ Modifier.horizontalScroll ในองค์ประกอบของคุณเอง ในทํานองเดียวกัน เราเลิกใช้งาน ScrollerPosition แล้วเพื่อหันมาใช้ ScrollState (I400ce, b/157225838, b/149460415, b/154105299)
  • เปลี่ยนชื่อ runOnIdleCompose เป็น runOnIdle (I83607)
  • มีการเปลี่ยนชื่อ API การทดสอบหลายรายการเพื่อให้เข้าใจง่ายขึ้น API ทั้งหมดของ findXYZ เปลี่ยนชื่อเป็น onNodeXYZ แล้ว API ทั้งหมดของ doXYZ ได้เปลี่ยนชื่อเป็น performXYZ แล้ว (I7f164)
  • ตอนนี้คุณสามารถคอมโพสิท UI ภายใน ViewGroups ได้โดยไม่ต้องคอมโพสิทใหม่ ดูตัวอย่างได้ที่ ViewInteropDemo (I9ab0b, b/160455080)
  • เพิ่ม sortWith และ removeRange ลงใน MutableVector (Icccf7)
  • ใช้แฮนเดิลการลากเพื่อเปลี่ยนการเลือกสำหรับ TextField (I27032)
  • นําคลาส Shader ในบรรทัดออกซึ่งรวมคลาส NativeShader ไว้แล้ว เปลี่ยนชื่อ NativeShader เป็น Shader คลาสอินไลน์ Shader ที่รวมไว้ไม่ได้เพิ่มสิ่งใดที่มีคุณค่าให้กับแพลตฟอร์ม API และเป็นคลาสอินไลน์ ดังนั้นให้ใช้คลาส NativeShader โดยตรง (I25e4d)
  • ปรับโครงสร้าง PainterModifier เพื่อไม่ให้มีการปรับขนาดตามข้อจำกัดและพารามิเตอร์ ContentScale ที่ระบุอีกต่อไป การใช้งาน Painter คือการทำให้เนื้อหาการวาดมีการปรับขนาดตามขนาดของ DrawScope ที่วาด

    แก้ปัญหาที่แคชของ VectorPainter ปรับขนาดบิตแมปเป็นขนาดเริ่มต้นแทนที่จะปรับขนาดให้วาดได้

    อัปเดต ImagePainter ให้ปรับขนาดเนื้อหาแทนที่จะใช้ PainterModifier ดำเนินการในนาม (I6ba90)

  • เพิ่มฟังก์ชัน withFrameNanos ระดับบนสุดสำหรับเวลาของภาพเคลื่อนไหว (Ie34c5)

  • เราเลิกใช้งานคำอธิบายประกอบ @Untracked แล้ว แทนที่ด้วย @ComposableContract(tracked=false) (Id211e)

  • เลิกใช้งาน androidx.ui.foundation.TextFieldValue และ androidx.ui.input.EditorValue แล้ว คอมโพสิเบิล TextField, FilledTextField และ CoreTextField ที่ใช้ประเภทดังกล่าวก็เลิกใช้งานด้วย โปรดใช้ androidx.ui.input.TextFieldValue แทน (I4066d, b/155211005)

  • แก้ไขปัญหาที่การส่งผ่านอินพุตเคอร์เซอร์จะทําให้ระบบขัดข้องหากนํา PointerInputFilters ออกผ่านคอมโพสิชันย่อยระหว่างการส่งผ่าน ซึ่งตอนนี้ปัญหาได้รับการแก้ไขแล้ว (I1f48b, b/157998762)

  • แก้ไขปัญหาที่การส่งผ่านอินพุตเคอร์เซอร์จะทําให้เกิดความขัดข้องหากนํา PointerInputFilters ออกผ่านคอมโพสิชันย่อยระหว่างการส่งผ่าน ซึ่งตอนนี้ปัญหาได้รับการแก้ไขแล้ว (Iab398, b/157998762)

  • ปรับโครงสร้างคลาส Radius เป็นคลาสแบบอินไลน์ นําเมธอดการสร้างคอมพาเนียนออกเพื่อใช้ตัวสร้างฟังก์ชันที่มีพารามิเตอร์เริ่มต้นเพื่อให้รัศมีตามแนวแกน y ตรงกับพารามิเตอร์รัศมีตามแนวแกน x ที่ต้องระบุ

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

  • คอมโพสิชัน "จัดองค์ประกอบใหม่" ไม่ได้เป็นนามธรรมที่มีประโยชน์อีกต่อไป การคอมโพสิชันใหม่ส่วนใหญ่ควรเกิดขึ้นจากการกำหนด MutableState สําหรับรายการอื่นๆ นอกเหนือจากนี้ เราขอแนะนําให้ใช้ฟังก์ชัน invalidate เพื่อทริกเกอร์การจัดองค์ประกอบใหม่ของขอบเขตปัจจุบัน (Ifc992)

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

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

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

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

    ในการรองรับการทำงานนี้ ลายเซ็น JVM ของฟังก์ชันคอมโพสิเบิลทั้งหมดจึงมีการเปลี่ยนแปลง ฟังก์ชันคอมโพสิเบิลที่ยอมรับพารามิเตอร์เดียวจะเปลี่ยนรูปแบบเป็นฟังก์ชันที่ยอมรับพารามิเตอร์ 3 รายการ โดยพารามิเตอร์เพิ่มเติมคือคอมโพเซอร์ ซึ่งเป็นจำนวนเต็ม "คีย์" ซึ่งเป็นจำนวนเต็มบิตมาสก์ที่ใช้เพื่อเผยแพร่ข้อมูลเมตาผ่านการเรียก

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

    การเปลี่ยนแปลงพฤติกรรมที่ทราบซึ่งเกิดจากการเปลี่ยนแปลงนี้

    1. การโทรบางสายจะข้ามไปโดยไม่แสดงในตำแหน่งที่ควรจะแสดงก่อนหน้านี้
    2. ตอนนี้ระบบจะติดตามและจัดการนิพจน์แบบคอมโพสิเบิลในนิพจน์อาร์กิวเมนต์เริ่มต้นอย่างถูกต้องแล้ว

    งานนี้มีการเพิ่มประสิทธิภาพบางอย่างดังนี้ 1. ระบบจะเผยแพร่ผลลัพธ์ของการเปรียบเทียบพารามิเตอร์ผ่านกราฟการเรียกไปยังฟังก์ชันอื่นๆ ที่คอมโพสิเบิล ซึ่งจะส่งผลให้มีจำนวนการเปรียบเทียบน้อยลงเมื่อรันไทม์ ลดขนาดตารางสล็อต และข้ามฟังก์ชันคอมโพสิเบิลได้มากขึ้นซึ่งก่อนหน้านี้ไม่ได้ข้าม 2. ระบบจะไม่เปรียบเทียบหรือจัดเก็บพารามิเตอร์ที่พิจารณาว่า "คงที่" ไว้ที่รันไทม์อีกต่อไป ซึ่งจะช่วยลดจํานวนการเปรียบเทียบและขนาดตารางสล็อต 3. ระบบจะใช้โครงสร้างการควบคุมการไหลของเนื้อหาของฟังก์ชันเพื่อลดจำนวนกลุ่มที่สร้างขึ้น ซึ่งจะช่วยลดขนาดตารางสล็อตและทำให้รันไทม์ทำงานน้อยลง 4. ระบบจะไม่รวมพารามิเตอร์การส่งและตัวรับที่ไม่ได้ใช้ในฟังก์ชันไว้ในการพิจารณาความสามารถในการข้ามของฟังก์ชัน หากไม่ได้ใช้พารามิเตอร์ดังกล่าวในเนื้อหาของฟังก์ชัน

    การเปลี่ยนแปลงที่ทำให้เกิดข้อขัดข้องส่วนใหญ่มีไว้สำหรับ API ที่คอมไพเลอร์กำหนดเป้าหมายโดยตรง และการใช้งาน compose ทั่วไปจะไม่ได้รับผลกระทบ ดังนี้ 1. นํา Composer::startExpr ออกแล้ว 2. นำ Composer::endExpr ออกแล้ว 3. Composer::call ถูกเลิกใช้งานแล้ว 4. นำการโอเวอร์โหลดที่ไม่ใช่ vararg ของ key ออกแล้ว ตั้งแต่นี้ไปให้ใช้เวอร์ชัน vararg 5. เลิกใช้งานคำอธิบายประกอบ Pivotal แล้ว ให้ใช้ key แทน 6. เปลี่ยน ScopeUpdateScope::updateScope ให้คาดหวัง Function3 แทน Function1 7. อัปเดต restartableFunction และ restartableFunctionN ให้รวมพารามิเตอร์เวลาคอมไพล์เพิ่มเติม (I60756, b/143464846)

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

  • นำ RepaintBoundary ออกเพื่อใช้ DrawLayerModifier (I00aa4)

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

  • แทนที่ ButtonStyle ด้วยฟังก์ชันที่แยกต่างหากและนำการโอเวอร์โหลดข้อความ (สตริง) ออก ดูข้อมูลการใช้งานจากตัวอย่างที่อัปเดตแล้ว (If63ab, b/146478620, b/146482131)

  • การเปลี่ยนแปลงที่สำคัญใน Ambients API ดูรายละเอียดได้ในบันทึกและเอกสารประกอบของ Ambient<T> (I4c7ee, b/143769776)

  • เปลี่ยนลักษณะการทํางานของ TextDirection เริ่มต้นให้กำหนดโดย LayoutDirection เช่น หาก LayoutDirection เป็น RTL ทางค่าเริ่มต้น TextDirection ก็จะเป็น RTL ก่อนหน้านี้คือ TextDirection.ContentOrLtr/Rtl (I4e803)

  • การแก้ไขข้อบกพร่อง: เมื่อฝังน้ำหนักแบบอักษรและรูปแบบแบบอักษรไว้ใน AnnotatedString ระบบจะไม่แสดงผลข้อความอย่างถูกต้อง (I77a9d)

  • เพิ่มพารามิเตอร์ที่ใช้กันโดยทั่วไปลงใน Text() หากตอนนี้คุณกําลังสร้างสไตล์ข้อความในเครื่องเพื่อส่งพารามิเตอร์เหล่านี้จํานวนไม่มาก เช่น Text(style = TextStyle(textAlign = TextAlign.Center)) ตอนนี้คุณก็ระบุพารามิเตอร์ได้โดยตรงเลย Text(textAlign = TextAlign.Center) (I82768)

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