UI การเขียน

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

โครงสร้าง

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

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

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

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

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

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

ดึงดูด

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

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

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

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

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

ความคิดเห็น

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

สร้างรายการใหม่

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

เวอร์ชัน 1.8

เวอร์ชัน 1.8.0-alpha01

4 กันยายน 2024

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

เวอร์ชัน 1.7

เวอร์ชัน 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 กับรากฐานที่เกี่ยวข้องกับการเปลี่ยนแปลง NestedScrollSource ที่เกิดขึ้นในช่วงต้นของเวอร์ชัน 1.7.0-alpha01

เวอร์ชัน 1.7.0-beta07

7 สิงหาคม 2024

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

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

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

เวอร์ชัน 1.7.0-beta06

24 กรกฎาคม 2024

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

เวอร์ชัน 1.7.0-beta05

10 กรกฎาคม 2024

ปล่อย androidx.compose.ui:ui-*:1.7.0-beta05 แล้ว เวอร์ชัน 1.7.0-beta05 มีสัญญาผูกมัดเหล่านี้

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

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

เวอร์ชัน 1.7.0-beta04

26 มิถุนายน 2024

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

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

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

เวอร์ชัน 1.7.0-beta03

12 มิถุนายน 2024

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

เวอร์ชัน 1.7.0-beta02

29 พฤษภาคม 2024

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

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

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

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

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

เวอร์ชัน 1.7.0-beta01

14 พฤษภาคม 2024

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

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

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

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

  • แก้ไขกรณีการใช้งานเพิ่มเติมเมื่อมีการเพิ่มตัวปรับแต่งอินพุตตัวชี้แบบไดนามิกในระหว่างเหตุการณ์ 63e1504

เวอร์ชัน 1.7.0-alpha08

1 พฤษภาคม 2024

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

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

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

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

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

การสนับสนุนภายนอก

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

เวอร์ชัน 1.7.0-alpha07

17 เมษายน 2024

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

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

  • ทำเครื่องหมาย ClickableText ว่าเลิกใช้งานแล้ว หากต้องการเพิ่มลิงก์ไปยังข้อความ ให้สร้าง AnnotatedString ที่มี LinkAnnotation ที่สอดคล้องกับลิงก์ของคุณ แล้วส่ง AnnotatedString นี้ไปยัง Text Composable (I34d4b, b/323346994)
  • แนะนำ ViewConfiguration.HandwritingGestureLineMargin สำหรับท่าทางสัมผัสการเขียนด้วยลายมือ รองรับท่าทางสัมผัส JoinOrSplit สำหรับ BasicTextField (Ie6e13, b/325660505)
  • FocusProperties.enter และ FocusProperties.exit ไม่ใช่เวอร์ชันทดลองอีกต่อไป FocusDirection.Enter และ FocusDirection.Exit ไม่ใช่เวอร์ชันทดลองอีกต่อไป FocusRequester.Cancel ไม่ใช่เวอร์ชันทดลองอีกต่อไป (I461a1, b/261564106)
  • เมื่อค้นหาพิกัดของเลย์เอาต์ ตอนนี้คุณสามารถใช้อาร์กิวเมนต์ excludeDirectManipulationOffset เพื่อยกเว้นออฟเซ็ตที่เลย์เอาต์ระดับบนสุดซึ่งวางองค์ประกอบระดับล่างโดยใช้ Placeable.PlacementScope.withDirectManipulationPlacement ได้แล้ว ในทำนองเดียวกัน เลย์เอาต์ที่เปลี่ยนตำแหน่งรายการย่อยบ่อยๆ อาจวางเลย์เอาต์โดยใช้ withDirectManipulationPlacement (เช่น เลื่อน ซึ่งมีการใช้งานโดยค่าเริ่มต้น) วิธีนี้จะช่วยให้ภาพเคลื่อนไหวที่อิงตาม approachLayout ใช้งานง่ายขึ้น ทำให้มีโอกาสแยกความแตกต่างของออฟเซ็ตที่จะสร้างภาพเคลื่อนไหว และสิ่งที่จะนำไปใช้โดยตรงเมื่อตัดสินใจเลือกภาพเคลื่อนไหว (I60ec7)
  • มีการนำแฟล็กฟีเจอร์สำหรับภาพหน้าจอแบบยาวออก (I28648, b/329128246)
  • ตอนนี้ LazyColumn จะแสดงส่วนหัวแบบติดหนึบอย่างถูกต้องในภาพหน้าจอขนาดยาว (I8d239, b/329296635)
  • UserInput และ SideEffect จะมาแทนที่แหล่งที่มาการลากและวาง NestedScroll เพื่อรองรับคำจำกัดความแบบขยายของแหล่งที่มาเหล่านี้ ซึ่งตอนนี้จะมีภาพเคลื่อนไหว (เอฟเฟกต์ด้านข้าง) และล้อเลื่อนของเมาส์ (UserInput) (I40579)
  • ขณะนี้ ApproachLayoutModifierNode และ Modifier.approachLayout มีความเสถียรแล้ว โดย isMeasurementApproachInProgress() ใหม่และ isPlacementApproachInProgress() จะแทนที่ isMeasurementApproachComplete() เก่าและ isPlacementApproachComplete() ตามลำดับ
  • นำตัวแก้ไข intermediateLayout ที่เลิกใช้งานแล้วออก (I3e91C)
  • เปลี่ยนชื่อ GraphicsLayer#buildLayer เพื่อบันทึกวิธีการเริ่มต้น/สิ้นสุดการบันทึกของ API ที่สำรองไว้ในรายการ Display เช่น 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) และ Listener การโต้ตอบลิงก์ให้กับเมธอด parseAsHtml เมื่อแยกวิเคราะห์สตริงที่ติดแท็ก HTML ด้วยแท็ก <a> เมธอดจะสร้าง LinkAnnotation.Url สำหรับแท็กดังกล่าวแต่ละแท็ก และส่งออบเจ็กต์การจัดรูปแบบและ Listener การโต้ตอบลิงก์ไปยังคำอธิบายประกอบแต่ละรายการ (I7c977)
  • ตอนนี้ LinkAnnotation จะใช้อาร์กิวเมนต์การจัดรูปแบบตามสถานะและ LinkInteractionListener เพิ่มคำอธิบายประกอบนี้ใน AnnotatedString เพื่อรับไฮเปอร์ลิงก์ เมื่อส่งผ่าน focusedState และ/หรือ hoveredState คุณจะสามารถกำหนด configuration ภาพสำหรับลิงก์เมื่อลิงก์ถูกโฟกัสและ/หรือวางเมาส์เหนือ (I81ce4, b/139312671)
  • ImeOptions.hintLocales เป็นค่าว่างไม่ได้แล้ว หากคุณต้องการส่งรายการภาษาที่ว่างเปล่า โปรดใช้ LocaleList.Empty (Ic5bc4)

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

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

เวอร์ชัน 1.7.0-alpha06

3 เมษายน 2024

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

ฟีเจอร์ใหม่

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

ฟีเจอร์ใหม่

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

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

  • GraphicsLayer.draw(Canvas) ไม่ใช่ API สาธารณะอีกต่อไป โปรดใช้ฟังก์ชันส่วนขยาย DrawScope.drawLayer(GraphicsLayer) แทนเพื่อวาดเลเยอร์ (I7a7c0)
  • แยก restrictedConstraints() เป็น 2 วิธี: fitPrioritizingWidth() และ fitPrioritizingHeight() (I6d7fd)
  • เปิดตัวสตับ HardwareCanvas สำหรับการใช้งาน Android L (I1c3b5, b/288494724)
  • อัปเดตเฟรมเวิร์กการเขียนเพื่อแสดงการเรียบเรียง GraphicsContext ในเครื่องควบคู่ไปกับการอัปเดตการใช้งานเจ้าของ, DelegateableNode และ drawWithCache เพื่อแสดงการเข้าถึง GraphicsContext สำหรับการเข้าถึงที่กำหนดขอบเขต ซึ่งจะล้างอินสแตนซ์ GraphicsLayer โดยอัตโนมัติเมื่อตัวปรับแต่งถูกแยกออก (I64a2f, b/288494724)
  • เปิดตัว InterceptPlatformTextInput เพื่อช่วยเขียนการทดสอบที่เกี่ยวข้องกับ IME ระดับต่ำและกรณีการใช้งาน 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)

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

  • เพิ่มคำจำกัดความของ API ที่คาดหวัง/ตามจริงของ GraphicsLayer เพื่อรองรับการจับภาพและเล่นคำสั่งวาดซ้ำ พร้อมการประกอบเอฟเฟกต์ภาพและการเปลี่ยนรูปแบบที่ไม่บังคับ แนะนำอินเทอร์เฟซ 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 นี้ยังนำการใช้งานพร็อพเพอร์ตี้ดังกล่าวในรายการแบบเลื่อนได้ของพื้นฐานไปใช้ด้วย (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 และการสนับสนุนเพิ่มเติม ควบคู่กับการเปิดตัว ContextualFlowRow และ ContextualFlowColumn การอัปเดตนี้ออกแบบมาเพื่อมอบองค์ประกอบที่มีประสิทธิภาพสูงสุด ซึ่ง ContextualFlow* เหมาะอย่างยิ่งกับสินค้าจำนวนมากที่ใช้การกำหนดค่า maxLines ขนาดเล็กและปุ่ม +N แบบไดนามิกเพื่อดูปุ่มได้มากขึ้น นอกจากนี้ FlowRow และ FlowColumn ยังเหมาะสำหรับรายการที่มีจำนวนไม่มากแต่น้อยกว่า 100 รายการ สำคัญ: หากต้องการคงลักษณะการทำงานที่มีอยู่ใน FlowRow หรือ FlowColumn ซึ่งมีการเขียนข้อความทั้งหมด ไม่ว่ารายการเหล่านั้นจะพอดีกับค่าสูงสุดของแกนไขว้ ให้ตั้งค่า overflow เป็น FlowRowOverflow.Visible หรือ FlowColumnOverflow.Visible ระหว่างการเริ่มต้น สำรวจ ContextualFlowRowSample และ FlowRowSample เพื่อดูตัวอย่างการใช้งานฟีเจอร์ใหม่เหล่านี้ (Ib9135, b/293577082)
  • เพิ่มพร็อพเพอร์ตี้ความหมาย maxTextLength ที่ควรตั้งค่าในช่องข้อความที่กรองอักขระสูงสุดที่อนุญาต (I24d9f, b/170648072)
  • เลิกใช้งาน Wrapper Modifier.inspectable แล้ว API นี้จะทําให้ตัวแก้ไขของคุณเป็นโมฆะมากเกินกว่าที่จำเป็น จึงไม่แนะนำให้ใช้ในขณะนี้ ขอแนะนำให้นักพัฒนาซอฟต์แวร์ใช้เมธอด inspectableProperties() ใน ModifierNodeElement หากต้องการแสดงพร็อพเพอร์ตี้ของตัวปรับแต่งในเครื่องมือ (Ib3236)
  • ตัวสร้างใหม่สำหรับ PopupProperties ซึ่งช่วยให้ควบคุมแฟล็ก 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 ใหม่เพื่อรองรับการสร้างตรรกะวิธีการที่กำหนดเองในโหนดตัวปรับแต่ง Explicit และเพิ่ม API แบบ DeferredTargetAnimation รุ่นทดลองใหม่สำหรับภาพเคลื่อนไหวที่ไม่ทราบเป้าหมายในการสร้างอินสแตนซ์ (I60745)
  • API ของ Path ใหม่เพื่อค้นหาทิศทางของเส้นทางและดึงเส้นขอบจาก 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)
  • 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 ออกได้โดยไม่ต้องตัดโหนดออก ป้องกันไม่ให้เกิดกรณีดังกล่าวในเครื่องมือตรวจสอบเลย์เอาต์การเขียน (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 สำหรับเลือกใช้เซสชันลากและวาง ตอนนี้ DragAndDropModifierNode มีฟังก์ชันจากโรงงาน 2 ฟังก์ชัน ช่องหนึ่งสำหรับรับการโอนข้อมูลและอีกช่องสำหรับโอนข้อมูล (I69481)
  • อัปเดต maximumFlingVelocity ให้แสดงเป็น "ลอย" แล้ว ปรับปรุงเอกสารประกอบเพื่อให้เข้าใจความเป็นเอกภาพของmaximumFlingVelocityชัดเจนยิ่งขึ้น (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 ที่ขึ้นอยู่กับรายการนี้) ที่เก็บรักษาไว้เพื่อนำมาใช้ซ้ำในอนาคตจะถือว่าปิดใช้งานแล้ว มีการใช้ API ทดสอบ assertIsDeactivated() ใหม่เพื่อทดสอบโหนดดังกล่าว ส่วนที่เหลือของ 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)
  • ใช้เท่ากับและแฮชโค้ดสำหรับ PageSize.Fixed (Ie3ede, b/300134276)
  • แก้ไขปัญหาความเข้ากันได้ของไบนารีที่มีการเปลี่ยนแปลง Window Inset (Iee695)
  • นำเลเยอร์หลักของวัสดุสำหรับชิป/ปุ่ม Material3 ออก เนื่องจากการเปรียบเทียบย่อยจะแสดงประสิทธิภาพที่ดีกว่าหากไม่มีข้อมูลเหล่านี้ (I55555)
  • ระบบจะใช้ TestDispatcher ที่ผ่านการทดสอบ effectContext ไปยัง Compose เพื่อสร้างนาฬิกาทดสอบและจัดเฟรมนาฬิกา (Ia7178)

เวอร์ชัน 1.6.0-alpha08

18 ตุลาคม 2023

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

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

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

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

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

เวอร์ชัน 1.6.0-alpha07

4 ตุลาคม 2023

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

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

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

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

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

เวอร์ชัน 1.6.0-alpha06

20 กันยายน 2023

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

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

  • การเพิ่มประสิทธิภาพเพิ่มเติมให้กับไอคอน Material (I3e08d)
  • เพิ่มความสามารถในการข้ามผ่านต้นไม้ของตัวแก้ไขขึ้น/ลงเพื่อค้นหาโหนดที่คล้ายกัน (I2d234)
  • เพิ่ม Callback onRestoreFailed() ในตัวแก้ไข 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)
  • ความเร็วการลอยในคอมโพเนนต์ View เช่น ScrollView และ RecyclerView จำกัดอยู่ที่ ViewConfiguration.ScaledMaximumFlingVelocity การเขียนมี maximumFlingVelocity เวอร์ชันของตนเองซึ่งตอนนี้มีผลกับ Draggable (Ibf974)
  • เพิ่มโครงข่ายเริ่มต้นเพื่อรองรับ API การลากและวางของแพลตฟอร์ม (If84ce)
  • เพิ่ม deviceId ลงใน RotaryScrollEvent (Iba3bf)
  • อัปเดต ui-tooling Device 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 ทั่วโลกในการทดสอบ UI (I1F90D)

เวอร์ชัน 1.6.0-alpha02

26 กรกฎาคม 2023

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

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

  • เพิ่มอินเทอร์เฟซตัวระบุตำแหน่งบริการซึ่งสามารถนำไปใช้โดยผู้ติดตั้งใช้งานการเรียบเรียง ซึ่งอนุญาตให้มีการใช้งานการเรียบเรียงที่มอบสิทธิ์ในการค้นหาบริการมอบสิทธิ์การเรียบเรียงเพลงอื่นไปยังการเรียบเรียงต้นฉบับ ไม่ควรเรียกว่า Directy และใช้เพื่อเปิดใช้การสร้าง API ทดลองในรันไทม์ ซึ่งพบได้จากโปรแกรมแต่งเพลงเวอร์ชันการรวม เช่น โมดูล UI มี (I296b9)
  • ออกแบบ API ของ PlatformTextInput* ใหม่ทั้งหมด (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 ของ AndroidView จะถูกเลื่อนเวลาออกไปจนกว่าจะมีการแนบมุมมอง แทนที่จะทำงานเมื่อมีการใช้องค์ประกอบที่แนะนำ AndroidView การดำเนินการนี้แก้ไขข้อบกพร่องที่ Callback update จะไม่เป็นโมฆะหากสถานะที่อ่านถูกเปลี่ยนแปลงทันทีด้วยผลที่เกิดขึ้น (Ie9438, b/291094055)

เวอร์ชัน 1.6.0-alpha01

21 มิถุนายน 2023

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

ฟีเจอร์ใหม่

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • สนับสนุน InputConnection#requestCursorUpdates (I0c69b)
  • เพิ่ม FocusRequester.saveFocusedChild และ FocusRequester.restoreFocusedChild (Ic557e, b/272302679, b/275157318) แล้ว
  • เพิ่มประเภท ResourceResolutionException เพื่อรวมเนื้อหาที่ส่งได้เมื่อพยายามโหลดเนื้อหาบิตแมปที่มีคําอธิบายเส้นทางของเนื้อหาที่โหลดไม่สําเร็จ (I19f44, b/230166331, b/278424788)
  • การช่วยเหลือพิเศษที่เพิ่มประสิทธิภาพเพื่อประสิทธิภาพและการจัดสรรหน่วยความจำ (Iede48)
  • เพิ่มพร็อพเพอร์ตี้และการดำเนินการด้านอรรถศาสตร์เพื่อรองรับการแปลข้อความ (I4a6bc)
  • พร็อพเพอร์ตี้ใหม่ใน IntrinsincMeasureScope และการใช้งาน (เช่น MeasureScope) เพื่อระบุว่าบัตรผ่าน Measurement Pass ในปัจจุบันเป็นบัตรผ่าน Lookahead หรือไม่ (I7a812)
  • อัปเดต DrawScope API เพื่อเพิ่มความสามารถในการกำหนดเป้าหมายการแสดงผลไปยังผืนผ้าใบอื่นๆ ที่มีความหนาแน่น/ทิศทางและรูปแบบทางเลือก
  • อัปเดต DrawContext เพื่อรองรับการกำหนดค่าความหนาแน่นและทิศทางของเลย์เอาต์ รวมถึงทำให้สามารถกำหนดค่า Canvas ได้ (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)
  • แก้ไขปัญหาคอมโพเนนต์ของ Composable ของกล่องโต้ตอบและป๊อปอัปที่อาจส่งผลให้หน้าต่างย่อยไม่ปรับขนาดตามที่คาดไว้เมื่อ 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 เพื่อใช้การแปลง Translation/Scale/การหมุนเวียนกับออบเจ็กต์เส้นทาง (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 ที่เกี่ยวข้องไม่ใช่เวอร์ชันทดลองอีกต่อไป (I74647, b/261581753)
  • เพิ่มการดำเนินการด้านความหมาย PerformImeAction เพื่อเรียกใช้การดำเนินการ IME บนโหนดเครื่องมือแก้ไขข้อความ (Ic606f, b/269633506)
  • PlatformTextInput API ไม่ได้เป็นการทดลองสำหรับ Android อีกต่อไป (I668eb)
  • เปลี่ยนชื่อพารามิเตอร์ค่าของ Enum.valueOf แล้ว (Ia9b89)
  • ข้อยกเว้นอื่นๆ จากค่า enum (I818fe)
  • เปิดตัว API ใหม่ระดับต่ำของ PlatformTextInputAdapter เพื่อสร้างการใช้งานการป้อนข้อความที่กำหนดเองซึ่งสื่อสารกับ API ของแพลตฟอร์มโดยตรง (I58df4)
  • เพิ่มพารามิเตอร์ BlendMode ในเมธอด DrawScope.drawText, Paragraph.paint และ MultiParagraph.paint เพื่อรองรับอัลกอริทึมการผสานต่างๆ เมื่อวาดข้อความบน Canvas (I57508)
  • เปลี่ยนชื่อ Font.MaximumAsyncTimeout เป็น Font.MaximumAsyncTimeoutMillis เปลี่ยนชื่อเท่านั้น (I07af5)
  • ค่า DPI ที่อัปเดตของอุปกรณ์อ้างอิง @Preview รายการ (Id6151, b/254528382)
  • เพิ่มพารามิเตอร์ brush, alpha ไปยัง BasicText เพื่อให้สร้างภาพเคลื่อนไหวหรือตั้งค่าแปรงข้อความได้อย่างมีประสิทธิภาพ
  • กำหนดประเภทแลมบ์ดาที่ไม่มีกล่องสำหรับ Float, Double, Long, Int, Shorts ใน :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 แล้ว ซึ่งทำได้ด้วย API ของ delegate และ undelegate ก่อนการเปลี่ยนแปลงนี้ API ทุกรายการจากโหนดที่มอบสิทธิ์จะต้องได้รับมอบสิทธิ์อย่างชัดเจนให้กับโหนดที่มอบสิทธิ์ หลังจากการเปลี่ยนแปลงนี้ อินเทอร์เฟซโหนดจะได้รับการมอบสิทธิ์โดยปริยาย เว้นแต่ DelegatingNode จะลบล้างการโต้ตอบเหล่านั้นอย่างชัดเจน (67352bc)

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

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

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

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

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

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

เวอร์ชัน 1.5.0-alpha01

22 มีนาคม 2023

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

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

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

เวอร์ชัน 1.4

เวอร์ชัน 1.4.3

3 พฤษภาคม 2023

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

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

  • แก้ไขปัญหาที่ AndroidView จัดวางไม่ถูกต้องเมื่อใช้กับตัวปรับแต่งบางรายการ (I4dc77, b/274797771)
  • แก้ไขข้อบกพร่องในการค้นหาแบบ 2D Focus ที่มีผลต่อเมนู 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)
  • แก้ไขการถดถอยที่แป้นพิมพ์ไม่แสดงสำหรับช่องข้อความภายในกล่องโต้ตอบที่ไม่ได้สร้างโดย Composable ของ 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

  • เพิ่ม API ใหม่ของ PinnableContainer ที่อนุญาตให้ปักหมุดรายการแบบ Lazy Loading ได้ เพื่อไม่ให้ระบบกำจัดทิ้งเมื่อเลื่อนออกนอกขอบเขต ตัวอย่างเช่น Modifier.focusable() ใช้กลไกนี้เพื่อปักหมุดรายการที่โฟกัสอยู่ในปัจจุบัน (Ib8881, b/259274257, b/195049010)
  • ระบบโฟกัสจะเขียนใหม่โดยใช้ API ของ Modifier.Node เวอร์ชันทดลองใหม่
  • เพิ่มในพร็อพเพอร์ตี้ความหมาย IsContainer ใน Surfaces แล้ว ระบบจะใช้พร็อพเพอร์ตี้นี้ในการเปลี่ยนแปลงในภายหลังซึ่งจะกำหนดลำดับการส่งผ่านตามความหมายเชิงอรรถศาสตร์ขององค์ประกอบต่างๆ เช่น พื้นผิว (I63379)
  • เพิ่มบทบาทการช่วยเหลือพิเศษใหม่ชื่อ DropdownList แล้ว ซึ่งจะจำลองลักษณะการทำงานของ TalkBack เมื่อโฟกัส android.widget.Spinner ได้ (I177e5, b/236159001)
  • ตอนนี้คุณใช้ PlatformTextStyle(emojiSupportMatch) เพื่อเลือกว่าจะปิดใช้การประมวลผลการรองรับอีโมจิสำหรับย่อหน้าเดียวได้แล้ว (Ia7100, b/139326806)
  • ตอนนี้การทดสอบ UI ของ Compose ใน Android จะเรียกใช้การส่งผ่านเลย์เอาต์สำหรับแต่ละเฟรมเมื่อเรียกใช้เฟรมเพื่อเข้าสู่โหมดไม่มีการใช้งาน (เช่น ผ่าน 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)
  • เปิดตัว API ใหม่ระดับต่ำของ PlatformTextInputAdapter เพื่อสร้างการใช้งานการป้อนข้อความที่กำหนดเองซึ่งสื่อสารกับ 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)
  • เพิ่ม Callback ของ 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)
  • ประเภท/ความสามารถในการเว้นว่างที่มากขึ้นของฟังก์ชันในบรรทัด/เลิกใช้งานซึ่งซ่อน (I24f91)
  • เพิ่ม AnnotatedString.hasStringAnnotations เพื่อค้นหาคำอธิบายประกอบที่มีการจัดสรรเป็นศูนย์ (I94dfe, b/246960758)
  • เพิ่มโอเวอร์โหลดใหม่สำหรับฟังก์ชัน TextMeasurer.measure ซึ่งจะนำ String เป็นข้อความ (I47b2d, b/242705342)
  • API ของ LineBreak และ Hyphens ใน TextStyle ได้รับการอัปเดตเป็นเวอร์ชันเสถียรแล้ว (Ic1e1d)

การสนับสนุนภายนอก

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

เวอร์ชัน 1.4.0-alpha04

11 มกราคม 2023

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

ฟีเจอร์ใหม่

  • เพิ่ม API ใหม่ของ PinnableContainer ที่อนุญาตให้ปักหมุดรายการแบบ Lazy Loading ได้ เพื่อไม่ให้ระบบกำจัดทิ้งเมื่อเลื่อนออกนอกขอบเขต ตัวอย่างเช่น Modifier.focusable() ใช้กลไกนี้เพื่อปักหมุดรายการที่โฟกัสอยู่ในปัจจุบัน (Ib8881, b/259274257, b/195049010)
  • ระบบโฟกัสจะเขียนใหม่โดยใช้ API ของ Modifier.Node เวอร์ชันทดลองใหม่
  • เพิ่มในพร็อพเพอร์ตี้ความหมาย IsContainer ใน Surfaces แล้ว ระบบจะใช้พร็อพเพอร์ตี้นี้ในการเปลี่ยนแปลงในภายหลังซึ่งจะกำหนดลำดับการส่งผ่านตามความหมายเชิงอรรถศาสตร์ขององค์ประกอบต่างๆ เช่น พื้นผิว (I63379)
  • เพิ่มบทบาทการช่วยเหลือพิเศษใหม่ชื่อ DropdownList แล้ว ซึ่งจะใช้จําลองลักษณะการทำงาน TalkBack's เมื่อโฟกัส android.widget.Spinner ได้ (I177e5, b/236159001)
  • ตอนนี้คุณใช้ PlatformTextStyle(emojiSupportMatch) เพื่อเลือกว่าจะปิดใช้การประมวลผลการรองรับอีโมจิสำหรับย่อหน้าเดียวได้แล้ว (Ia7100, b/139326806)
  • ตอนนี้การทดสอบ UI ของ Compose ใน Android จะเรียกใช้การส่งผ่านเลย์เอาต์สำหรับแต่ละเฟรมเมื่อเรียกใช้เฟรมเพื่อเข้าสู่โหมดไม่มีการใช้งาน (เช่น ผ่าน 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 ซึ่งระบุว่ากลุ่มมีไว้สำหรับการเรียกฟังก์ชัน Composable ในบรรทัด หาก isInline คือ true การเรียกก็จะเป็นฟังก์ชัน Composable ในบรรทัด แต่ค่าดังกล่าวอาจเป็นเท็จสำหรับการเรียกไปยังฟังก์ชันที่ประกอบกันได้แบบในหน้า ซึ่งมาจากโมดูลที่คอมไพล์ด้วยปลั๊กอินคอมไพเลอร์เวอร์ชันเขียนที่ไม่สร้างข้อมูลฟังก์ชันแบบอินไลน์ (Idb846)
  • เปลี่ยน API ทดลองก่อนหน้านี้จำนวนหนึ่งให้เป็นตัวเลือกเสถียร
  • ตอนนี้ Rotary Scroll Event API มีความเสถียรแล้ว (I42ad3, b/261561229)
  • FontVariation API มีความเสถียรแล้ว (I8779f, b/241016309)
  • ตอนนี้เครื่องมือสร้าง Font() ทั้งหมดเป็น API ที่เสถียรแล้ว (I5948b, b/261435386)
  • DeviceFontFamilyName มีความเสถียรแล้ว (I8b640, b/261435386)
  • เครื่องมือสร้าง AndroidFont ที่มี variationSettings เป็น API ที่เสถียรแล้วในตอนนี้ และใช้เพื่อสร้างข้อบ่งชี้แบบอักษรประเภทใหม่ๆ ได้ (I5adcc, b/261565807)
  • createFontFamilyResolver API มีความเสถียรแล้วตอนนี้ การตั้งค่านี้สามารถใช้ตรวจจับข้อยกเว้นที่ตรวจไม่พบระหว่างการโหลดแบบอักษรแบบไม่พร้อมกัน (Ibb481, b/261435386)
  • Font.loadingStrategy API มีความเสถียรแล้วตอนนี้ (I5937c, b/261435386)
  • GoogleFont API มีความเสถียรแล้วตอนนี้ (Ic90b0, b/261435386)
  • ตอนนี้ TextUnit(float, TextUnitType) เป็น API ที่มีความเสถียรแล้ว (I90c84, b/261561612)
  • ตอนนี้ pluralStringResource เป็น API ที่มีความเสถียรแล้ว (I09849, b/261439703)

เวอร์ชัน 1.4.0-alpha03

7 ธันวาคม 2022

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

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

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

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

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

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

  • ตอนนี้ UI ของ Compose และเนื้อหาเขียนขึ้นอยู่กับอายุการใช้งาน 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 ในวัสดุและ Material3 Text, TextField และ OutlinedTextField ซึ่งอนุญาตให้ตั้งค่าความสูงขั้นต่ำของคอมโพเนนต์เป็นจํานวนบรรทัด (I4af1d)

เวอร์ชัน 1.4.0-alpha01

24 ตุลาคม 2022

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

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

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

การสนับสนุนภายนอก

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

เวอร์ชัน 1.3

เวอร์ชัน 1.3.3

11 มกราคม 2023

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

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

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

เวอร์ชัน 1.3.2

7 ธันวาคม 2022

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

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

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

เวอร์ชัน 1.3.1

9 พฤศจิกายน 2022

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

เวอร์ชัน 1.3.0

24 ตุลาคม 2022

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

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

  • ชุด API ทดลองใหม่ LookaheadLayout (เปิดใช้การทำงานของภาพเคลื่อนไหวที่เป็นไปไม่ได้ก่อนหน้านี้)
  • ชุด API ทดลองใหม่ Modifier.Node (ทางเลือกที่มีประสิทธิภาพสูงกว่า Modifier.composed)
  • ปรับปรุงการสนับสนุนส่วนหน้าต่าง
  • การรองรับการโฟกัสสำหรับ D-Pads และแป้นพิมพ์ฮาร์ดแวร์ใน LazyLists
  • ระดับความสูงที่รองรับสูงสุดในกล่องโต้ตอบและป๊อปอัปลดลงเหลือ 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 ทำงานภายใน Dialog Composable แล้ว (I35342)

เวอร์ชัน 1.3.0-beta02

7 กันยายน 2022

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

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

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

การเปลี่ยนแปลงใน Focus API รุ่นทดลองมีดังนี้

  • FocusDirection.In และ FocusDirection.Out เลิกใช้งานแล้วและแทนที่ด้วย FocusDirection.Enter และ FocusDirection.Exit (Ia4262, b/183746982)
  • เพิ่มพร็อพเพอร์ตี้การโฟกัสใหม่และ 2 รายการเพื่อระบุลักษณะการทำงานที่กำหนดเองสำหรับ 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)

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

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

พูดกว้างๆ ก็คือกระบวนการ Abstraction นี้เป็นอีกกลไกหนึ่งในการสร้างตัวปรับแต่งการเก็บสถานะโดยไม่ต้องอาศัยกลไกของ 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 การเปลี่ยนแปลงนี้จะส่งผลต่อทั้งกล่องโต้ตอบและป๊อปอัปที่กำหนดเองของ UI และ Material การเปลี่ยนแปลงนี้ดำเนินการเพื่อลดข้อบกพร่องในการช่วยเหลือพิเศษใน 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 หนึ่งเป็นอีกอย่างหนึ่ง (Ic5ab1, b/238632578)
  • เลิกใช้งาน SemanticsModifier.id และย้ายรหัสความหมายไปยัง LayoutInfo.semanticsId แทน (Iac808, b/203559524)
  • ตอนนี้ Resource Fonts รองรับการตั้งค่ารูปแบบของแบบอักษร (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)
  • ต้องมีการกำหนดย่อหน้า|ตามจริงและกำหนดไว้สำหรับ Android และเดสก์ท็อป (Id387e, b/239962983)
  • ตอนนี้ Interface Paragarph เป็นอินเทอร์เฟซ Paragarph แบบปิดผนึกแล้ว ไม่มีกรณีการใช้งานสำหรับการจัดประเภทย่อยย่อหน้า และเราขอแนะนำให้ติดต่อหากการเปลี่ยนแปลงนี้ส่งผลกระทบต่อคุณ (If5247, b/239962983)
  • นำหมายเหตุทดลองออกจาก PlatformTextStyle และ LineHeightStyle แล้ว (I64bef)
  • เลิกใช้งาน TextInputService.show|hideSoftwareKeyboard โปรดใช้ SoftwareKeyboardController แทนในโค้ดของแอปและใช้ TextInputSession ในโค้ดการจัดการ IME (I14e4c, b/183448615)
  • เพิ่ม API ใหม่สำหรับประเภทภาพเคลื่อนไหวที่มีอยู่ (I26179)

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

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

เวอร์ชัน 1.3.0-alpha02

27 กรกฎาคม 2022

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

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

  • เพิ่มคุณสมบัติใหม่ PointerInputChange#pressure เพื่อดึงค่าความดันแล้ว (I45a5e, b/205164819)
  • เพิ่ม rememberTextMeasurer เพื่อให้สามารถสร้างและจดจำอินสแตนซ์ TextMeasurer ในการเรียบเรียงได้อย่างง่ายดาย (I8d66e)
  • Rect, RoundRect และ MutableRect รองรับไวยากรณ์ in ของ Kotlin สำหรับการเรียกใช้ฟังก์ชัน contains แล้ว (Ie42b0, b/238642990)
  • นำฟังก์ชันที่ไม่จำเป็นออกจาก KeyInjectionScope เนื่องจากสามารถติดตั้งใช้งานได้ง่ายด้วยส่วนที่เรียบง่ายขึ้นของ API ฟังก์ชันที่นำออกแล้วประกอบด้วย pressKeys, keysDown และ keysUp (I81d77)
  • ชื่อของค่าคงที่และพารามิเตอร์ใน KeyInjectionScope ที่ปรับใหม่ให้รวมคำต่อท้าย "Millis" โดยที่หน่วยของค่าคงที่และพารามิเตอร์ดังกล่าวเป็นมิลลิวินาที (Iabef5)
  • เพิ่มเมธอด toStringForLog() ใน EditCommand เพื่อช่วยแก้ปัญหาการแก้ไขข้อความแล้ว (I53354, b/228862731)
  • เพิ่มฟังก์ชันของส่วนขยาย drawText ใน DrawScope เพื่อระบุวิธีเขียนข้อความที่มีสไตล์หลากหลายใน Composable และตัวแก้ไขที่ทำงานใน DrawScope เช่น Canvas และ drawBehind (I16a62, b/190787898)
  • เปิดตัว API เวอร์ชันทดลองใหม่ที่ชื่อว่า TextMeasurer ซึ่งเปิดใช้การคำนวณเลย์เอาต์ข้อความที่กำหนดเองและสร้างผลลัพธ์ที่เหมือนกันกับ BasicText โดยไม่ขึ้นอยู่กับรันไทม์ของ Compose (I17101)
  • เพิ่ม mapTree ไปยัง SlotTree.kt ซึ่งจะช่วยให้เครื่องมือตรวจสอบ SlotTree ได้โดยไม่ต้องสร้างสำเนาในหน่วยความจำก่อนเหมือนกับที่ AsTree ทำ สำหรับเครื่องมือตรวจสอบการออกแบบ การปรับปรุงนี้จะมีการปรับปรุงประสิทธิภาพ ปัจจัยที่ 10 (I5e113)
  • เปลี่ยน Compose Preview ได้รับการจัดเก็บไว้ในไฟล์เอาต์พุตไบนารีเพื่ออนุญาตให้นักพัฒนาซอฟต์แวร์เขียนและใช้คำอธิบายประกอบ 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 ใหม่ที่รองรับ Lookahead Pass ก่อนการวัด/เลย์เอาต์จริง ซึ่งช่วยให้คำนวณเลย์เอาต์ล่วงหน้าได้เมื่อมีการเปลี่ยนแปลง แต่อนุญาตให้การวัด/รูปแบบหลังการดูใช้ขนาด/ตำแหน่งที่คำนวณไว้ล่วงหน้าเพื่อทำให้ขนาดและตำแหน่งเคลื่อนไหวไปยังเป้าหมาย ระบบยังไม่รองรับ SubcomposeLayouts แต่ในรุ่นถัดไป (I477f5)
  • เพิ่มพารามิเตอร์อัลฟ่า (ไม่บังคับ) ลงในเวอร์ชันแปรงของ TextStyle และ SpanStyle เพื่อปรับความทึบแสงของทั้ง Text (Ic2fac, b/234117635)
  • เปิดตัวประเภทคำอธิบายประกอบ UrlAnnotation และวิธีที่เกี่ยวข้องเพื่อรองรับการรองรับลิงก์ TalkBack ใน AnnotatedString วินาที (I1c754, b/231495122)
  • กำลังย้ายฟังก์ชันการทำงานของยูทิลิตีไปที่รันไทม์ (I4f729)

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

การสนับสนุนภายนอก

  • เพิ่ม API ใหม่ WindowInfo.keyboardModifiers เพื่อสังเกตสถานะภายในฟังก์ชันที่ประกอบกันได้หรือผ่าน Snapflow (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 Loading ใช้งานได้แล้ว โดยใช้ API หลัก BeyondBoundsLayout ใหม่
    • 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 ไปยังแพ็กเกจพื้นฐานและเปลี่ยนชื่อเป็น 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 กับ Composable ทันทีหลังจากที่สลับจากการ์ดการตั้งค่าด่วน โดยที่คุณไม่ต้องออกและเข้าร่วมกิจกรรมอีกครั้ง (I843d5, b/225937688)
  • การค้นหาสตริงการช่วยเหลือพิเศษไม่ทริกเกอร์การโหลดแบบอักษร ก่อนหน้านี้ เครื่องมือจะพยายามโหลดแบบอักษรของ StyleSpans ซึ่ง ทำให้เกิดข้อขัดข้องหากมีการเขียนทับ FontFamily.Resolver (I4609D)
  • การกดแป้นลบไปข้างหน้าเมื่อเคอร์เซอร์อยู่ที่จุดสิ้นสุดของช่องข้อความจะไม่ขัดข้องอีกต่อไป
  • ตอนนี้ DeleteSurroundingTextCommand และ DeleteSurroundingTextInCodePointsCommand กำหนดให้อาร์กิวเมนต์ตัวสร้างเป็นค่าไม่ติดลบ (Ica8e6, b/199919707)

เวอร์ชัน 1.2.0-beta02

18 พฤษภาคม 2022

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

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

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

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

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

เวอร์ชัน 1.2.0-beta01

11 พฤษภาคม 2022

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

ฟีเจอร์ใหม่

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

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

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

เวอร์ชัน 1.2.0-alpha08

20 เมษายน 2022

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

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

  • ฟังก์ชัน pluralStringResource ได้รับการทำเครื่องหมายว่าเป็นเวอร์ชันทดลองเพื่อให้วิวัฒนาการรองรับการปรับให้เป็นสากลที่ดียิ่งขึ้นในอนาคต (If24e4)
  • ตอนนี้ย่อหน้าและหลายย่อหน้ายอมรับพารามิเตอร์ข้อจำกัดแล้ว การส่งผ่าน Constraints.maxHeight ยังไม่ผ่านการทดสอบในขณะนี้ แต่จะอนุญาตให้ทำการคำนวณบางอย่างในอนาคต เช่น การใช้จุดไข่ปลาตามความสูง (I6afee, b/168720622)
  • ตอนนี้ SubcomposeSlotReusePolicy.getSlotsToRetain() ยอมรับคลาสที่เหมือน MutableSet ที่กำหนดเองแล้ว ซึ่งไม่อนุญาตให้เพิ่มรายการใหม่ในชั้นนั้น (Icd314)
  • PointerIcon เป็นอินเทอร์เฟซ @Stable แล้ว (I9dafe)
  • เราเลิกใช้งานการใช้งานบางส่วน (ลดลง OR) แล้วใน PointerInputChange คุณใช้ consume() เพื่อทำการเปลี่ยนแปลงได้ทั้งหมด คุณสามารถใช้ isConsumed เพื่อดูว่าคนอื่นได้ใช้การเปลี่ยนแปลงก่อนหน้านี้หรือไม่
  • ตอนนี้ PointerInputChange::copy() จะทําสําเนาแบบตื้นเสมอ ซึ่งหมายความว่าระบบจะใช้สำเนาของ PointerInputChange เมื่อเลือกใช้สำเนา 1 ชุด หากต้องการสร้าง PointerInputChange ที่ไม่มีการเชื่อมโยง ให้ใช้ตัวสร้างแทน (Ie6be4, b/225669674)
  • เปิดใช้การทำงานร่วมกันของการเลื่อนที่ซ้อนกันระหว่างการเขียนและมุมมองในทิศทางเขียน > View นั้น ซึ่งหมายความว่าระดับบนสุดของการเขียนจะสามารถรับเดลต้าการเลื่อนที่ซ้อนกันจากมุมมองการเลื่อนที่ซ้อนกันได้ (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)
  • ผู้สอนย่อหน้าและผู้สอนหลายย่อหน้าจะจัดเรียงอาร์กิวเมนต์ตำแหน่งใหม่ก่อนอาร์กิวเมนต์ที่ไม่บังคับ (ไอดาฟา)
  • ตอนนี้ AndroidFont จะใช้ typefaceLoader เป็นพารามิเตอร์ตัวสร้าง (I2c971)

เวอร์ชัน 1.2.0-alpha07

6 เมษายน 2022

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

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

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

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

  • เพิ่มการตรวจสอบเศษส่วนบนวัสดุ/Scaffold เพื่อให้แน่ใจว่ามีการใช้ระยะห่างจากขอบด้านใน (Ifb111)

เวอร์ชัน 1.2.0-alpha06

23 มีนาคม 2022

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

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

  • เพิ่มการดำเนินการด้านความหมาย RequestFocus เพื่อขอให้โฟกัสที่เป้าหมายที่โฟกัสได้ (I17b71)
  • อัปเดตการแยกวิเคราะห์ของเวกเตอร์ที่ถอนออกได้เพื่อรองรับการมิเรอร์อัตโนมัติ เพื่อพลิกเนื้อหาของ VectorPainter หากเลย์เอาต์ปัจจุบัน คือขวาไปซ้าย (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 จะส่งผลให้สามารถเลื่อนดูได้อย่างมีประสิทธิภาพยิ่งขึ้นสำหรับ RecyclerViews ที่มีมุมมอง Compose เป็นรายการย่อย

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

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

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

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

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

  • อัปเดต 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)
  • อัปเดตค่า Nulling ในบริการหลักและ 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 ที่อนุญาตการรายงานเวลาคอมไพล์เมื่อ ฟังก์ชันที่ประกอบกันได้เรียกว่าการกำหนดเป้าหมายไปยังแอปพลิเคชันซึ่งไม่ใช่ ที่ออกแบบมาเพื่อใช้

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

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

  • ตอนนี้ Font(resId, ...) จะทำการโหลดหน้าเว็บใน API ที่เสถียรแล้ว (Ief3d2)

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

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

  • เพิ่ม 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 ซึ่งแปลง Composable แล้ว แลมบ์ดาลงในแลมบ์ดาที่ย้ายสถานะ และโหนดที่เกี่ยวข้อง ไปยังตำแหน่งใหม่ที่เรียกว่าตำแหน่งใหม่ เมื่อสายก่อนหน้าสิ้นสุดลง การเรียบเรียง สถานะจะเก็บไว้ชั่วคราว และหากมีการการเรียกใหม่ แลมบ์ดาจะเข้าสู่การเรียบเรียง จากนั้นเข้าสู่รัฐ และ จะย้ายไปยังตำแหน่งของการเรียกใหม่ หากไม่มีสายใหม่ เพิ่มรัฐนั้น ถูกนำออกอย่างถาวร และอย่าลืมว่าผู้สังเกตการณ์ การแจ้งเตือน

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

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

  • เพิ่ม createFontFamilyResolver(context) และ createFontFamilyResolver(context, coroutineScope) เพื่อสร้างรายการใหม่แล้ว รีโซลเวอร์ FontFamily ที่อยู่นอกการใช้งานการเขียน

  • ตอนนี้การใช้ย่อหน้าและย่อหน้าหลายย่อหน้าใช้เวลา FontFamily.Resolver

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

  • รองรับการโหลดแบบอักษรแบบไม่พร้อมกันและที่ไม่บังคับ (พร้อมตัวเลือกสำรอง) พฤติกรรมของคุณ ใช้เส้นทางนี้โดย Text และ TextField และเปิดเผยผ่าน FontFamilyมากกว่า

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

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

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

  • ขยาย API ของ Font.ResourceLoaded เพื่อรองรับแบบไม่บังคับและไม่พร้อมกัน กำลังโหลดแบบอักษร ไม่แนะนำให้นักพัฒนาแอปพลิเคชันใช้ 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 แสดงผล 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() สำหรับอุปกรณ์ Wear ที่มีปุ่มหมุนด้านข้าง (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)

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

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

เวอร์ชัน 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 ซึ่งมีลักษณะการทำงานที่สอดคล้องกันหากใช้มุมมองและการเขียนผสมกัน การเปลี่ยนแปลงนี้ยังช่วยให้มั่นใจว่าเมื่อคุณสร้าง 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

  • ล้างข้อมูลความสามารถในการเว้นว่างใน androidx.core.view (I7078a, b/204917439)
  • มีการเพิ่ม API ทดลองที่ช่วยให้ผู้ใช้สามารถใช้ PointerInputchange ทั้งหมดหรือตรวจสอบว่ามีการใช้ 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() การล้างเหตุการณ์ทั้งหมดและการนำเหตุการณ์ออก จะเกิดขึ้นที่ส่วนท้ายของเมธอด performance*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

  • เพิ่ม API เวอร์ชันทดลองของ BringIntoView ที่ให้คุณส่งคำขอถึงผู้ปกครองเพื่อให้ผู้ปกครองเลื่อนเพื่อนำรายการเข้ามาดูได้ (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)
  • เพิ่มโอเวอร์โหลดที่ไร้เด็กสำหรับ Layout แล้วโดยมีประสิทธิภาพดีขึ้น (Ib0d9a)
  • นำ InternalCompilerApi ออกจากเมธอด Composer ที่ จำเป็นต้องเรียกข้ามโมดูล (I1aa0b)
  • SemanticsNodeInteraction.performSemanticsAction กลับมาแล้ว SemanticsNodeInteraction ที่มีการเรียกใช้ฟังก์ชัน (I9e5db)
  • เพิ่ม LocalInputModeManager CompositionLocal เพื่อตรวจหา TouchMode/NonTouchMode (I6a83c, b/175899786)
  • เพิ่ม viewConfiguration: ViewConfiguration ไปที่ LayoutInfo เพื่อให้ผู้บริโภคได้รับค่าที่ถูกต้องสำหรับสิ่งต่างๆ เช่น การกดค้าง หมดเวลา (I76ca6)
    • เพิ่ม viewConfiguration: ViewConfiguration ไปที่ InjectionScope เพื่ออนุญาตให้การทดสอบปรับการแทรกอินพุตตาม เช่น การหมดเวลากดค้าง หรือการแตะ Slop
    • เปลี่ยนระยะเวลาเริ่มต้นของการกดค้างและการแตะสองครั้งสำหรับทั้ง 2 ส่วน แตะและป้อนข้อมูลด้วยเมาส์ โดยอิงตามค่าใน InjectionScope.viewConfiguration
  • การใช้งานเมนู ExposedDropdownMenu โดยอิงตาม ExposedDropdownMenuBox พร้อม TextField และ DropdownMenu ภายใน (If60b2)
  • เพิ่ม cancelOnThirdClick ลงใน PopupProperties แล้ว โดยแทนที่ CancelOnClickแผน ที่เลิกใช้งานไปแล้ว พร็อพเพอร์ตี้ใหม่จะได้รับตำแหน่งการคลิกและขอบเขตของแท็ก Anchor ซึ่งช่วยให้ควบคุมได้ละเอียดยิ่งขึ้นว่าควรเรียกใช้ onCloseRequest หรือไม่ ตัวอย่างเช่น วิธีนี้อาจมีประโยชน์ในการป้องกันไม่ให้โฆษณา Anchor ปิดไปเมื่อแตะที่จุดยึด
    • เพิ่มupdateAndroidWindowManagerFlags ลงใน PopupProperties ซึ่งมีการควบคุมระดับต่ำสำหรับแฟล็กที่ป๊อปอัปส่งผ่านไปยัง Android WindowManager พารามิเตอร์ lambda จะเป็นแฟล็กที่คํานวณจากค่า PopupProperties ที่ส่งผลให้เกิดแฟล็ก WindowManager เช่น โฟกัสได้ ผลลัพธ์ของ lambda จะเป็นแฟล็กขั้นสุดท้ายซึ่งจะส่งไปยัง WindowManager ของ Android โดยค่าเริ่มต้น อัปเดต AndroidWindowManagerFlags จะคงการตั้งค่าแฟล็กที่คำนวณจากพารามิเตอร์ไว้ตามเดิม คุณควรใช้ 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 และ LocalRecordingStateRegistryOwner ไปยังข้อมูลพร็อพเพอร์ตี้ผ่าน ViewTreeLifecycleOwner และ ViewTreeSavedStateRegistryOwner (I38f96, b/179708470)
  • แก้ปัญหาที่ WearOS ScrollToOffBox ไม่สามารถทำได้ในบางครั้ง (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 โปรดดู MouseInjectionScopeเพื่อดูเอกสารประกอบของ API ที่พร้อมใช้งาน (Iaa4a8, b/190493367)

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

  • แก้ไขการสนับสนุนการช่วยเหลือพิเศษสำหรับการเลื่อนได้ (ทั้งแบบ Lazy Loading และ ไม่ใช่แบบ Lazy Loading) สำหรับการเลื่อน (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)
  • เปลี่ยนชื่อพารามิเตอร์ที่ตรวจสอบได้ให้ตรงกับการเขียน (I3a482, b/191017532)
  • แนะนำ performTouchInput และ TouchInjectionScope เป็น การแทนที่ performTouchInput และ TouchInjectionScope กำลังปูพื้น วิธีการอื่นๆ (เช่น เมาส์)

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

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

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

    สุดท้าย 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 แล้ว เบลอกรณีการใช้งานโดย การใช้ธงของคลิปที่ใช้กันโดยทั่วไป และ TileModes กรณีการใช้งานส่วนใหญ่เกี่ยวข้องกับ ไม่ว่าจะเป็นการปล่อยให้ การแสดงผลเนื้อหาที่เบลอ อยู่นอกขอบเขตของเนื้อหาต้นฉบับ และการเบลอพื้นที่ที่อยู่นอกขอบเขตเหล่านี้ มีเนื้อหาที่โปร่งใส ขอบเขตของเนื้อหา สุ่มตัวอย่างขอบที่ใกล้ที่สุด สำหรับเคอร์เนลเบลอที่อยู่เกินปริมาณเนื้อหา ขอบเขต (I6b4b7, b/166927547)
  • เพิ่มการรองรับ RenderEffect แล้ว ในการเขียนบนเดสก์ท็อป เปิดตัว OffsetEffect และ ตัวแก้ไขการเบลอเป็นวิธีง่ายๆ ในการ นำเสนอเอฟเฟกต์ภาพเบลอบางส่วน ของลำดับชั้นการเรียบเรียง (I0f6aa, b/166927547)
  • เปิดตัว RenderEffect API ซึ่งสามารถกำหนดค่าได้ใน Modifier.graphicsLayer ที่จะแก้ไข เนื้อหาของเลเยอร์นั้นๆ ช่วงเวลานี้ สามารถใช้เพื่อเบลอเนื้อหาของ Composable และ Composable ย่อยภายในการเรียบเรียง ลำดับชั้น (I47c4d, b/166927547)
  • ตอนนี้ AwaitPointerEventScope มี withระยะหมดเวลา() และ withระยะหมดเวลาOrNull() (I507f0, b/179239764, b/182397793)
  • เพิ่มขนาดเป้าหมายการสัมผัสขั้นต่ำลงใน ViewConfiguration แล้ว เพื่อใช้ในอรรถศาสตร์และการป้อนข้อมูลตัวชี้เพื่อการช่วยเหลือพิเศษ (Ie861C)
  • เพิ่มการรองรับ TileMode.decal ซึ่งมีประโยชน์ ในการกำหนดขอบเขต ของ RenderEffect แบบเบลอ (I7e8ed, b/166927547)
  • performScrollToIndex performScrollToKey ตอนนี้ hasScrollToIndexAction และ hasScrollToKeyAction เป็น API ที่มีความเสถียรแล้ว (I142ae, b/178483889)
  • เพิ่มวิธีทดสอบเพื่อรับขอบเขตที่ตัดทอน (I6b28e)

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

  • นำเมธอด isBounded ออกแล้ว จาก BlurredEdgeTreatment โดยเป็นประโยชน์ คือการตรวจสอบว่ารูปร่าง เป็น Null (I85d68)

เวอร์ชัน 1.1.0-alpha02

18 สิงหาคม 2021

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

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

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

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

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

เวอร์ชัน 1.1.0-alpha01

4 สิงหาคม 2021

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

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

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

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

  • อัปเดตเมธอด DrawScope#drawImage ที่ ใช้ Rett ต้นทางและปลายทาง เพื่อใช้ตัวเลือกFilterquality พารามิเตอร์ มีประโยชน์สำหรับ Pixel อาร์ตเวิร์กที่มีจุดประสงค์ให้เป็นพิกเซล เมื่อปรับขนาดขึ้นสำหรับอาร์ตเวิร์กที่ใช้พิกเซล อัปเดต BitmapPainter + รูปภาพ Composable แล้ว ในการใช้ตัวเลือกFilter Quality ด้วย (Ie4fb0, b/180311607)

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

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

  • เพื่อที่จะสนับสนุนเชน ตัวปรับแต่งการวาด ตรวจสอบให้แน่ใจว่าการใช้ Modifier.paint การเรียกเนื้อหา ก่อนหน้านี้ Modifier.paint จะมีโหนด Leaf ใน แต่ห่วงโซ่ของตัวปรับแต่ง การทำเช่นนี้ทำให้ ไม่กำหนดค่าในคอนเทนเนอร์ที่ประกอบกันได้ (เช่น Box) หรือเพิ่มการตกแต่งเพิ่มเติมด้านบน เช่น Modifier.paint().border() ใช้ Modifier.paint เรียกDrawContent หลังจากวาดเนื้อหาของ จิตรกร เรามีพฤติกรรมที่สม่ำเสมอมากขึ้นในพฤติกรรม ด้วยรูปแบบตัวปรับแต่ง (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 มีคอมมิตเหล่านี้

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

  • อัปเดตเป็น Kotlin 1.5.31 แล้ว

เวอร์ชัน 1.0.3

29 กันยายน 2021

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

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

  • อัปเดตเป็น Kotlin 1.5.30 แล้ว

เวอร์ชัน 1.0.2

1 กันยายน 2021

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

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

เวอร์ชัน 1.0.1

4 สิงหาคม 2021

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

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

  • อัปเดตเพื่อใช้ Kotlin 1.5.21 แล้ว

เวอร์ชัน 1.0.0

28 กรกฎาคม 2021

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

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

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

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

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

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

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

เวอร์ชัน 1.0.0-rc02

14 กรกฎาคม 2021

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

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

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

เวอร์ชัน 1.0.0-rc01

1 กรกฎาคม 2021

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

ฟีเจอร์ใหม่

  • แยกโมดูลการใช้เครื่องมือ UI เป็น 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)

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

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

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

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

เวอร์ชัน 1.0.0-beta09

16 มิถุนายน 2021

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

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

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

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

  • ปัจจุบันค่าคงที่หลักคือ @ExperimentalComposeUiApi การใช้งาน สามารถประกาศค่าคงที่ส่วนตัวก่อนระบบกันภาพสั่นได้ (Ia5d48)
  • เขียนการทดสอบใน Robolectric ได้แล้ว ดังต่อไปนี้ เราตรวจพบข้อจำกัดต่อไปนี้
    • ไม่มีบิตแมปแบบเนทีฟ ดังนั้น ImageBitmap() จึงนำไปยัง NullPointerException
    • ไม่มีภาพวาด ดังนั้น captureToImage() จะรอ บัตรผ่านช่วงการวาดถัดไป (เช่น การติดตาย)
    • ไม่ได้โหลดแบบอักษร ระบบจึงจะวัดข้อความไม่ถูกต้อง ทั้งหมด อักขระมีความสูงคงที่ประมาณ 20px และกว้าง 1px
    • 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 ... กฎเหล่านี้มี 1 ใน 2 รูปแบบเพื่อกำหนดเป้าหมายเมธอดหรือคลาส

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

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

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

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

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

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

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

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

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

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

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

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

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

เวอร์ชัน 1.0.0-beta08

2 มิถุนายน 2021

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

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

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

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

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

เวอร์ชัน 1.0.0-beta07

18 พฤษภาคม 2021

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

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

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

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

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

เวอร์ชัน 1.0.0-beta06

5 พฤษภาคม 2021

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

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

  • แก้ไขความขัดแย้งด้วยท่าทางสัมผัสการนำทาง (I1145e)
  • @ComposeCompilerApi ไม่ใช่ @RequiresOptIn อีกต่อไป (Iab690)
  • เพิ่ม API การช่วยเหลือพิเศษ CollectionInfo และ CollectionItemInfo ซึ่งช่วยทำเครื่องหมายคอลเล็กชันและรายการสำหรับบริการช่วยเหลือพิเศษได้ (Id54ef, b/180479017)
  • เพิ่ม SemanticsActions.ScrollToIndex เพื่อเลื่อนรายการที่มี รายการที่จัดทำดัชนีให้กับรายการที่มีดัชนีที่กำหนด และ SemanticsProperties.IndexForKey เพื่อรับดัชนีของรายการในรายการ กับรายการคีย์ การดำเนินการทั้ง 2 รายการมีการใช้งานโดย LazyList
    • เพิ่ม SemanticsNodeInteraction.performScrollToIndex แล้ว จะเลื่อนรายการไปยังดัชนีที่กำหนด และ SemanticsNodeInteraction.performScrollToKey ที่เลื่อนรายการไปยัง ด้วยคีย์ที่ระบุ (I4fe63, b/178483889, b/161584524)
  • เพิ่ม ownerViewId ลงใน GraphicLayerInfo (I19f62)
  • เพิ่ม Font() มากเกินไปเพื่อโหลดแบบอักษร จากเนื้อหา File และ FileDescriptor (I5d382)
  • เพิ่ม API การช่วยเหลือพิเศษ error ที่อนุญาตให้ทำเครื่องหมายโหนดที่มีอินพุตที่ไม่ถูกต้อง (I12997, b/180584804, b/182142737)
  • เพิ่ม Font() โอเวอร์โหลดเพื่อโหลดแบบอักษร จากเนื้อหา, File และ FileDescriptor (I43007)
  • AnnotatedString บันทึกการสนับสนุนไปยัง TextFieldValue.Saver เพิ่มเมื่อ addTtsAnnotation และมีฟังก์ชันยูทิลิตีคำอธิบายประกอบเพื่อ 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)
  • เพิ่ม API performTextInputSelection แบบทดลอง (I2dcbb, b/178510628)
  • อินเทอร์เฟซ InputEventCallback เลิกใช้งานแล้ว คุณไม่สามารถใช้อินเทอร์เฟซ API สาธารณะ และไม่มีการใช้งานโซลูชันนี้ใน โค้ด (I34a02, b/184003208)
  • เลิกใช้งาน TextLayoutResult/createTextLayoutResult เป็นฟังก์ชันสาธารณะที่ไม่มีการใช้งานซึ่งเพิ่มเข้ามา เพื่อการทดสอบ ฟังก์ชันนี้ไม่สามารถทำให้สิ่งใดใช้งานได้สำหรับ เขียน API แบบข้อความ ตอนนี้เราได้เลิกใช้งานฟังก์ชันนี้แล้ว และจะ ถูกนำออกในภายหลัง (I80413)

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

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

เวอร์ชัน 1.0.0-beta04

7 เมษายน 2021

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

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

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

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

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

เวอร์ชัน 1.0.0-beta03

24 มีนาคม 2021

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

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

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

เวอร์ชัน 1.0.0-beta02

10 มีนาคม 2021

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

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

  • เพิ่มการเรียบเรียงเพลง LocalSoftwareKeyboardController ใหม่ในเครื่อง API สำหรับแทนที่อินเทอร์เฟซ SoftwareKeyboardController ก่อนหน้าที่เปิดอยู่ ฟิลด์ข้อความ (I5951e, b/168778053)
  • เพิ่มการเรียบเรียงเพลง LocalSoftwareKeyboardController ใหม่ในเครื่อง API สำหรับแทนที่อินเทอร์เฟซ SoftwareKeyboardController ก่อนหน้าที่เปิดอยู่ ฟิลด์ข้อความ (I84472, b/168778053)
  • นำ SemanticsMatcher ต่อไปนี้ออกแล้ว:
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance) (If16bd)
  • ทำเครื่องหมาย SemanticsMatchers ต่อไปนี้เป็น @ExampleTestApi:
    • 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) } ที่เสียหายเมื่อใช้ในปลายทางของการเขียนการนำทาง (I1312b, b/180042685, b/180701630)
  • เพิ่มการเรียบเรียงเพลง LocalSoftwareKeyboardController ใหม่ในเครื่อง API สำหรับแทนที่อินเทอร์เฟซ SoftwareKeyboardController ก่อนหน้าที่เปิดอยู่ ฟิลด์ข้อความ (I658b6, b/168778053)
  • แก้ไข NoSuchElementException ที่พบไม่บ่อยใน ComposeRootRegistry tearDownRegistry() (Iddce1)

เวอร์ชัน 1.0.0-beta01

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

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

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

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

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

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

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

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

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

  • เปลี่ยนชื่อตัวปรับขนาดแล้ว เปลี่ยนชื่อ Modifier.width/height/size เป็น requiredWidth/requiredHeight/requiredSize แล้ว เปลี่ยนชื่อ Modifier.suggestedWidth/ใส่ความสูงของเนื้อหา/เลือกขนาดเป็นความกว้าง/ความสูง/ขนาด (I5B414)

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

  • มีการนำการบริโภคบางส่วนออกจากระบบอินพุตตัวชี้ วิธีที่แนะนำในการประสานงานการใช้งานบางส่วนคือ Modifier.nestedscroll (Ie9c9b)

  • การวางแนวย้ายไปไว้ที่แพ็กเกจฐานแล้ว ย้าย VelocirtTracker จาก ui.gesture ไปยัง ui.input.pointer (Iff4a8, b/175294473)

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

  • ย้ายข้อมูล AnimationClockObservable และคลาสย่อยแล้ว ลบแล้ว นำ AnimatedFloat ออกแล้ว (Icde52, b/177457083)

  • ผู้ให้บริการเปลี่ยนชื่อเป็น CompositionLocalProvider

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

  • การรองรับที่กำหนดเองสำหรับ PointerInputModifier ถูกนำออกแล้ว (I02707, b/175294473)

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

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

  • นำ LongPressGestureFilter และ DoubleClickClicksFilter ออกแล้ว ใช้ Modifier.pointerInput กับฟังก์ชันตัวช่วย เช่นDetectTouchGestures (I2fedf, b/175294473)

  • นำ String.format API ออกแล้ว การใช้งานที่ปรับเปลี่ยนรูปแบบ เมธอด toString ที่จะไม่ใช้ String.format ภายใน (รหัส 1290)

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

  • นำ androidx.compose.runtime:runtime-dispatch (I55feb) ออกแล้ว

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

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

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

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

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

  • นำ Callback SoftwareKeyboardController ออกจากข้อความทั้งหมดแล้ว ที่จะแทนที่ด้วย API ใหม่ในไม่ช้า (Iae869, b/168778053)

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

  • ทำการเปลี่ยนแปลง Material API ต่อไปนี้

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

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

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

เวอร์ชัน 1.0.0-alpha12

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

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

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

  • การรองรับ ViewGroups ถูกนำออกจาก UiApplier แล้ว นำ Composable ของ emitView ที่เลิกใช้งานแล้วออก (Ifb214)
  • ตอนนี้ Modifier.pointerInput ต้องใช้แป้นจดจำเพื่อระบุ เมื่อใดที่ Coroutine ตรวจจับอินพุตตัวชี้ควรรีสตาร์ทสำหรับ ทรัพยากร Dependency (I849cd)
  • Compositionreference เปลี่ยนชื่อเป็น CompositionContext (I53fcb)
  • ขอบเขตเปลี่ยนชื่อเป็น DpRect (I4b32a)
  • การอัปเดตจากการทดสอบ: hasText() จะตรวจสอบทั้งอินพุตและข้อความป้ายกำกับ/คำแนะนำ/ตัวยึดตำแหน่งในช่องข้อความ (Iab803)
  • ย้าย viewModel() ที่ Composable และ LocalViewModelStoreOwner ได้ไปยัง androidx.lifecycle.viewmodel.compose แล้ว คุณจะต้องเพิ่มทรัพยากร Dependency androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 แยกต่างหากเพื่อให้ใช้งานได้ (I7a374)
  • อนุญาตการดำเนินการที่ไม่มีข้อมูลใน AccessibilityAction เปลี่ยนการดำเนินการ ป้ายกำกับใน AccessibilityAction และ CustomAccessibilityAction จาก ลำดับลำดับเป็นสตริง (I0dc82)
  • เพื่อให้ชื่อตรงกันมากขึ้น แบบแผนกับ ImageBitmap และ ImageVector ImagePainter เปลี่ยนชื่อเป็น BitmapPainter แล้ว กับ VectorPainter แบบขนาน (Iba381, b/174565889)
  • API การทดสอบสตริงย่อยที่ดีขึ้นซึ่งมีสตริงย่อยเป็นอาร์กิวเมนต์ (Icbe78) แล้ว
  • เพิ่ม Modifier.focusOrder() ที่ ยอมรับ FocusRequester โดยไม่ระบุ คำสั่งโฟกัสแบบกำหนดเองสำหรับ lambda มีประโยชน์ เมื่อเราเพียงต้องระบุข้อมูลอ้างอิง แต่ไม่ใช่ลำดับโฟกัสที่กำหนดเองสำหรับ Composable (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)
  • ด้วยเหตุผลด้านประสิทธิภาพ ตอนนี้ความหมายของ ScrollAxisRange lambdas จะแสดงค่า 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)
  • เพิ่มการขยายและยุบการดำเนินการด้านความหมาย เพิ่มเมื่อ ขยายและครึ่งขยายใน ModalBottomSheetState (Ib5064)
  • เลิกใช้งาน Modifier.dragGestureFilter แล้ว โปรดใช้ Modifier.pointerInput { detectDragGestures (...)} แทน หรือใช้ Modifier.draggable สำหรับการลากแกน 1 แกน (I0ba93, b/175294473)
  • เปลี่ยนชื่อแอมเบียนท์ให้ตรงกับแอมเบียนท์ -> การเปลี่ยนชื่อ CompositionLocal แอมเบียนท์เคยมีชื่อว่า AmbientFoo แต่ปัจจุบัน CompositionLocals เรียกว่า LocalFoo (I2d55d)
  • ตอนนี้เราได้นำ BaseTextField ที่เลิกใช้งานแล้วออกแล้ว โปรดใช้ BasicTextField แทน (I71368)
  • ย้ายรายการที่เลือกไปยังพื้นฐานแล้ว (I7892B)
  • เช่นเดียวกับที่เรานำ Composable ของ state { 0 } ออกก่อนหน้านี้และตอนนี้โปรโมตการใช้งาน เช่น remember { mutableStateOf(0) } เราจะนำ Composable ของ savedInstanceState { 0 } ออก คุณควรใช้ rememberSaveable { mutableStateOf(0) } แทน จากนั้นระบบจะบันทึกและคืนค่าโดยอัตโนมัติหากเก็บประเภทที่ใช้ภายใน MutableState ไว้ใน Bundle ได้ หากก่อนหน้านี้คุณส่งผ่านออบเจ็กต์เซฟที่กำหนดเองในตอนนี้ คุณจำเป็นต้องใช้ RememberSaveable ใหม่ที่โอเวอร์โหลดซึ่งมีพารามิเตอร์ stateSaver รายการ การใช้งานจะมีลักษณะดังนี้: val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) } (Ib4c26, b/177338004)
  • เพิ่มความหมายของรหัสผ่านสำหรับการช่วยเหลือพิเศษ (I231ce)
  • เพิ่ม ProgressBarRangeInfo เพิ่ม ProgressBarRangeInfo เพื่อทําเครื่องหมายแถบความคืบหน้าแบบไม่ชัดเจนสําหรับการช่วยเหลือพิเศษ (I6fe05)
  • เลิกใช้งานยูทิลิตี emptyContent() และ (@Composable () -> Unit).orEmpty() แล้วเนื่องจากไม่มีผลกระทบหรือค่าด้านประสิทธิภาพในเชิงบวกอีกต่อไป (I0484d)
  • snapshotFlow และ withMutableSnapshot ไม่ได้เป็นสมาชิกแล้ว ทดลอง (I6a45f)
  • ปิดเครื่องมือปรับแต่งได้แล้ว รีคอมโพสเซอร์แบบปิดจะ จัดองค์ประกอบใหม่ต่อจนกว่าโครูทีนเด็กการเรียบเรียงเพลงจะเสร็จสมบูรณ์ Recomposer.shutDown เปลี่ยนชื่อเพื่อตัดกับการปิด (Ib6d76)
  • UiSavedStateRegistry เปลี่ยนชื่อเป็น SaveableStateRegistry ส่วน AmbientUiSavedStateRegistry ได้เปลี่ยนชื่อเป็น AmbientSaveableStateRegistry และได้ย้ายไปที่แพ็กเกจ 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 ได้ใน write:runtime และ ดู AndroidUiDispatcher ได้ในCompose:ui (Ib5c36)
  • Outline.* คลาสจะไม่ใช่คลาสข้อมูลอีกต่อไป (I4879e, b/178001427)
  • นำ view.captureToImage() ออกแล้วโดยไม่มีการเปลี่ยนแทน (I7fcd2)
  • เปิดตัว ColorMatrix API ที่ใช้ เพื่อแก้ไขค่า RGB ของเนื้อหาต้นฉบับ ปรับเปลี่ยน ColorFilter API ใหม่ให้เป็น ของอินเทอร์เฟซและจับคู่การติดตั้ง ของ PathEffect (Ica1e8)
  • เพิ่มพารามิเตอร์LayoutDirection ใน createOutline ของรูปร่าง ฟีเจอร์นี้ช่วยให้สร้างรูปร่างที่รับรู้ทิศทางของเลย์เอาต์ได้ (I57c20, b/152756983)
  • onImeActionActioned เลิกใช้งานแล้ว ใช้ KeyboardActions แทน (If0bbd, b/179071523)
  • เริ่มใช้บริบทโครูทีน InfiniteAnimationPolicy แล้ว ที่จะนำไปใช้ในภาพเคลื่อนไหวที่ไม่จำกัด โดยค่าเริ่มต้น "ไม่" จะติดตั้งนโยบายแล้ว ยกเว้นเมื่อทำการทดสอบกับ ComposeTestRule (I50ec4, b/151940543)
  • นำ canDrag ออกจาก Modifier.scrollable แล้ว (Id66e7, b/175294473)
  • เปลี่ยนชื่อ LayoutCoordinates.parentCoordinates เป็น LayoutCoordinates.parentLayoutCoordinates พร็อพเพอร์ตี้ parentCoordinates พร็อพเพอร์ตี้ parentCoordinates จะมี LayoutCoordintes ของตัวปรับแต่งหลัก การดำเนินการนี้จะ ทำให้ Use Case ที่สมบูรณ์ยิ่งขึ้นสำหรับ onSizeChanged() และ onGloballyPositioned() (Idfbfd, b/177926591)
  • เลิกใช้งาน "tapGestureFilter, DoubleTouchGestureFilter, lengthPressGestureFilter และ pressIndicaitonGestureFilter ) แล้ว ใช้ Modifier.clickable หรือ Modifier.pointerInput กับฟังก์ชัน preventTouchGestures แทน (I6baf9, b/175294473)
  • นำ unregisterProvider ของ SaveableStateRegistry ออกแล้ว ในขณะนี้ เครื่องมือลงทะเบียนProvider() จะแสดงวัตถุ 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 ที่สร้างแบบ Lazy Loading เป็น Recomposer ที่มีขอบเขตเป็นหน้าต่าง ซึ่งขับเคลื่อนด้วย ViewTreeLifecycleOwner สำหรับหน้าต่าง การจัดองค์ประกอบใหม่และ หยุดภาพเคลื่อนไหวจาก withFrameNanos ไว้ชั่วคราวขณะ Lifecycle ของโฮสต์ จะหยุดลง (I38e11)
  • ตอนนี้ Recomposer.runningRecomposers มีระบบ StateFlow ระดับโลก RecomposerInfo แบบอ่านอย่างเดียวสำหรับสังเกตสถานะการเรียบเรียงต่อเนื่องใน ขั้นตอน เลือกใช้ API นี้กับ Recomposer.current() ซึ่งตอนนี้คือ เลิกใช้งานแล้ว (If8ebe)
  • โหมดประหยัด, listSaver(), MapSaver(), autoSaver ถูกย้ายจาก androidx.compose.runtime.savedinstancestate ไปยัง androidx.compose.runtime.saveable (I77fe6) แล้ว
  • EditCommands ยอมรับ AnnotatedString อย่างไรก็ตาม การเปลี่ยนแปลงเฉพาะ API และการแก้ไขข้อความแบบหลายสไตล์ไม่ใช่ มีการใช้งานแล้ว (I4c3ea)
  • นำระยะเวลาทำงานและระยะเวลาออกแล้ว (Ib9bf4, b/177420019)
  • ย้าย CompositionData.asTree() และ API ที่เกี่ยวข้องแล้ว เพื่อแยกโมดูล ui-tooling-data และทำเครื่องหมายว่าเป็นการทดลอง (Ic95b8)
  • พารามิเตอร์ใน RounderCornerShape, CutCornerShape และ CornerBasedShape ถูกเปลี่ยนชื่อจากซ้าย/ขวาไปยังจุดเริ่มต้น/สิ้นสุดเพื่อรองรับการมิเรอร์อัตโนมัติของรูปร่างในทิศทาง RTL เราได้เริ่มใช้ AbsoluteRounderCornerShape และ AbsoluteCutCornerShape สำหรับกรณีที่ไม่ต้องการให้มิเรอร์อัตโนมัติ (I61040, b/152756983)
  • API เป้าหมายของปลั๊กอินคอมไพเลอร์ Compose ได้รับการปรับโครงสร้างภายในโค้ดใหม่ เพื่อใช้อินเทอร์เฟซแทน ที่แน่นอนได้ง่าย อินเทอร์เฟซก็ไม่ใช้งาน พารามิเตอร์ประเภท

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

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

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

  • ComposeViews ในลำดับชั้นการแสดงผลซึ่งเป็นรายการย่อยของ ตอนนี้การเรียบเรียงเพลงอีกรายการหนึ่งมีบทประพันธ์เพลงที่เป็นลูกของบรรพบุรุษ (I92883)
  • อัปเดต imageFromResource ของการเขียนแล้ว API เพื่อใช้แคชที่ถอนออกได้ของทรัพยากรซ้ำ เมื่อโหลดออบเจ็กต์ 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)
  • เพิ่ม FocusManager.moveFocus() API เพื่อย้ายโฟกัสแบบเป็นโปรแกรม (I045cb, b/177681839)
  • เปลี่ยน PopupPositionProvider เพื่อใช้พิกัดที่สัมพันธ์กับหน้าต่าง ไม่ใช่พิกัดทั่วโลก เปลี่ยนชื่อ parentGlobalBounds เป็น anchorBounds และเปลี่ยน windowGlobalBounds เป็น windowSize: IntSize (I2994a)
  • ระบบจะแทนที่ระยะเวลาและระยะเวลาทำงานด้วยมิลลิวินาทีที่ใช้เวลานาน และขั้นตอนนี้จะนำการอ้างอิงอินพุตของตัวชี้เหล่านั้นออก ใหม่ (Ia33b2, b/175142755, b/177420019)
  • เพิ่ม AmbientSavedStateRegistryOwner ของช่องที่คล้ายกับ AmbientLifecycleOwner และ AmbientViewModelStoreOwner (I9a3e8, b/176756365) ที่มีอยู่แล้ว
  • อัปเดตกราฟิกเวกเตอร์แล้ว API ที่รองรับการแยกวิเคราะห์ของการแต้มสี ใช้กับรากของกราฟิกเวกเตอร์ (Id9d53, b/177210509)
  • เพิ่ม ToolType ใน PointerInputChange เพื่อแยกความแตกต่างของอุปกรณ์ (Iac787, b/175142755)
  • AmbientWindowManager เปลี่ยนชื่อเป็น AmbientWindowInfo (I2686a, b/177084714, b/177084983)
  • เลิกใช้งานวิธีการพิกัดโลกและ "สร้าง" วิธีการพิกัดใหม่ตามหน้าต่าง (Iee284)
  • เพิ่ม Modifier.toolingGraphicsLayer ซึ่งเพิ่มตัวปรับแต่งเลเยอร์กราฟิกเมื่อเปิดการตรวจสอบ (I315df)
  • ตอนนี้ FocusRequester.createRefs มีการทำเครื่องหมายเป็นทดลองเนื่องจากอาจมีการเปลี่ยนแปลง (I2d898, b/177000821)
  • SemanticsPropertyReceiver.hidden เปลี่ยนชื่อเป็น invisibleToUser และมีการทำเครื่องหมาย @ExperimentalComposeUiApi เปลี่ยนชื่อ AccessibilityRangeInfo เป็น ProgressBarRangeInfo StateDescriptionRange เปลี่ยนชื่อเป็นprogressBarRangeInfo AccessibilitySlideState เปลี่ยนชื่อเป็น ScrollAxisRange VerticalAccessibilitySlideState เปลี่ยนชื่อเป็น LandscapescrollAxisRange verticalAccessibilitySlideState เปลี่ยนชื่อเป็น verticalscrollAxisRange (รหัส 3148)
  • นำ PointerInputData ออกและ PointerInputChange ที่แก้ไขแล้ว เพื่อระบุฟิลด์ทั้งหมดของ PointerInputData สร้างเหตุการณ์ป้อนข้อมูลตัวชี้ และ PointerInputEventData ภายในเนื่องจากไม่ได้ใช้ใน API สาธารณะทั้งหมด (Ifff97, b/175142755)
  • ใช้งาน GraphicsLayerScope ที่อัปเดตแล้ว ความหนาแน่นเพื่อรองรับการแปลง dp เป็น พิกเซลดิบ (Ied528, b/176819695)
  • อัปเดต Matrix API ให้ติดตามแถวแล้ว การจัดลำดับหลักและระบุค่าคงที่ของดัชนี เพื่อช่วยให้เกิด Conversion ระหว่าง การแสดงเมตริกซ์ให้ตรงกับเฟรมเวิร์ก ตรรกะ Conversion ระหว่าง SkMatrix และ Matrix4 เป็นการภายใน (I432e6)
  • นำเมธอด monotonicFrameAnimationClockOf แบบทดลอง (Ib753f, b/170708374) ออกแล้ว
  • ย้าย String.fintPrecedingBreak และ String.fingfollowingBreak ไปยัง InternalTextApi (I657c4)
  • นำ androidx.compose.ui.util.isSurrogatePair ออกจาก API สาธารณะแล้ว (Ia9494)
  • เปลี่ยนชื่อ TransformedText.transformedText เป็น TransformedText.text แล้ว
    • TransformText ไม่ใช่คลาสข้อมูลอีกต่อไป (Ie672a)
  • นำ data class ออกจากชั้นเรียนต่อไปนี้แล้ว:
    • เนื้อหาข้อความในบรรทัด
    • LocaleList (I605c7)
  • คลาสต่อไปนี้ไม่ใช่คลาสข้อมูลแล้ว
    • สตริงคำอธิบายประกอบ
    • ParagraphStyle
    • สไตล์ Span
    • TextStyle
    • น้ำหนักแบบอักษร
    • การตกแต่งข้อความ
    • เปลี่ยนรูปแบบเรขาคณิตของข้อความ
    • ดัชนีข้อความ
    • ผลลัพธ์ของเลย์เอาต์ข้อความ
    • อินพุต TextLayout (Iaff99)
  • เปลี่ยน VisualTransformation ให้เป็นอินเทอร์เฟซที่ใช้งานได้ (I3bba4)
  • เพิ่มประเภทพารามิเตอร์อ้างอิงฟังก์ชัน (I5e1bd)
  • เพิ่มขอบเขตที่เปลี่ยนรูปแบบไปยัง InspectorNode (Ice42f)

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

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

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

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

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

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

  • OnSizeChanged รายงานขนาดของเค้าโครง เนื้อหา นอกจากนี้ยังรายงานขนาดที่ตำแหน่งภายใน สายตัวปรับแต่ง (I36b78, b/177562900)

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

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

    • นำ initial ออกจากพารามิเตอร์ตัวสร้าง EditBuffer (I326d5)
  • "โมฆะ" และ "ComCompositionReference()" จะถูกเลิกใช้งานเพื่อใช้ CurrentRecomposeScope และ RememberComCompositionReference ตามลำดับ (I583a8)

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

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

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

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

  • เลิกใช้งานการดำเนินการทางคณิตศาสตร์ระหว่าง 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 Loading และใช้ตัวแก้ไขโดยตรง เช่น Column(Modifier.verticalscroll(rememberscrollState())) (Ib976b, b/170468083)

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

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

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

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

  • เลิกใช้งานการเปลี่ยนที่ใช้ TransitionDefinition แล้ว (I0ac57)

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

เวอร์ชัน 1.0.0-alpha10

13 มกราคม 2021

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

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

  • การปรับโครงสร้างคอมไพเลอร์ภายใน API อนุญาตให้ทำการเปลี่ยนแปลงเป็นกลุ่มกับโหนดที่สร้าง อันเป็นผลมาจากองค์ประกอบลงใน "ใช้การเปลี่ยนแปลง" ระยะการเรียบเรียง หลังจากฟังก์ชันทั้งหมด @Composable รายการ เสร็จสมบูรณ์

    นี่เป็นการละเมิดด้านพฤติกรรม การเปลี่ยนแปลงที่อาจส่งผลกระทบต่อโค้ดของแอปพลิเคชัน ไม่สามารถใช้โหนดจากภายใน และ API ทดลองจนกว่าการเปลี่ยนแปลงจะเสร็จสิ้น ใช้แล้ว โดยทั่วไปแล้ว ปัญหานี้จะทำได้โดย รอบโค้ดที่มีการอ้างอิงดังกล่าวใน 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 สามารถกำหนดค่าการสร้าง เครื่องมือกำหนด UI ที่อยู่ระหว่างการทดสอบ (Ibebd8)
  • อัตราความเร็วที่ปรับแล้วให้มีชิ้นส่วนประกอบและการคำนวณทางคณิตศาสตร์ (Ib0447)
  • เปลี่ยนชื่อ @ExperimentalTesting เป็น @ExperimentalTestApi เป็น สอดคล้องกับคำอธิบายประกอบ API ทดลองที่คล้ายกัน (Ia4502, b/171464963)
  • เปลี่ยนชื่อ Color.useOrElse() เป็น Color.takeOrElse() (Ifdcf5)
  • นำคลาส DpInverse, DpSquared และ DpCubed ที่ไม่ได้ใช้ออก (I4d62b)
  • เปลี่ยนชื่อ Constraints#sจะเปลี่ยนโดย เป็น isSPricingBy (I9cf5c)
  • เพิ่ม Callback เพื่อแจ้งเจ้าของเมื่อขอบเขตของโหนดเลย์เอาต์เปลี่ยนแปลง (I72fd1)
  • เพิ่ม isSpecified, isUnidentifier และ useOrElse สำหรับ คลาสในบรรทัดที่มีค่าคงที่ที่ไม่ระบุ (I93f7b, b/174310811)
  • ขยาย [Abstract]ComposeView API เพื่ออนุญาตให้มีการรีไซเคิล มุมมองจากการเขียน นำการเรียบเรียงออกเพื่อสร้างใหม่อีกครั้ง ในภายหลัง เพิ่ม API สำหรับการติดตั้งและค้นหาเครื่องมือปรับแต่งขอบเขตหน้าต่าง และ CompositionReferences สำหรับสร้างการเรียบเรียงย่อย

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

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

  • นำ toStringAsFixed ออกแล้ว API ที่ต้องการใช้ String.format โดยตรงแทน (Iaba6b)

  • เพิ่มปุ่มสลับไปยัง Strings.kt พื้นฐาน (I4a5b7, b/172366489)

  • ย้าย NativeClass ไปยัง โมดูล UI และทำให้เป็นโมดูลภายใน อัปเดตการใช้งาน NativeClass ใน เท่ากับการติดตั้งใช้งาน "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 พร็อพเพอร์ตี้เพื่อรับเส้นตรงขอบเขต สำหรับการใช้งาน Outline ในแบบต่างๆ (I16e74, b/175093504)

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

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

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

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

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

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

  • ตอนนี้เครื่องมือปรับแต่งจะแสดงโฟลว์ของสถานะปัจจุบัน ซึ่งช่วยให้ ติดตามกิจกรรมและกิจกรรมของผลกระทบที่เกี่ยวข้อง (Ifb2b9)
  • ตอนนี้คุณจะเข้าถึง keyEvent แบบเนทีฟได้ผ่าน keyEvent.nativeKeyEvent (I87c57, b/173086397)
  • ตอนนี้แทนที่ animate() ด้วย animateAsState() แล้ว ซึ่งแสดงผลเป็น State<T> แทน T วิธีนี้ทำให้ ประสิทธิภาพสูงสุด เนื่องจากสามารถจำกัดขอบเขตการใช้งานไม่ได้ให้แคบลงได้ ตรงตำแหน่งที่มีการอ่านค่า State (Ib179e)
  • เพิ่ม API บทบาทความหมาย และเพิ่มบทบาทเป็นพารามิเตอร์ใน 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. นั่นคือObserver เลิกใช้งานแล้ว ใช้ Modifier.onFocusChanged หรือ Modifier.onFocusEvent แทน (I30f17, b/168511863, b/168511484)
  • สำหรับการระงับ API อินพุตตัวชี้ เปลี่ยนชื่อ HandlePointerInputScope กับ AwaitPointerEventScope และ ManagePointerInput() ไปยัง awaitPointerEventScope() (Idf0a1, b/175142755)
  • ขณะนี้ API ป้อนข้อความอัตโนมัติเป็น API ที่อยู่ระหว่างการทดลองและต้องมีการเลือกใช้ (I0a1ec)
  • การเพิ่มการประกาศการยกเลิกโครงสร้างเพื่อสร้างอินสแตนซ์ FocuSRequester (I35d84, b/174817008)
  • ได้เปลี่ยนชื่อ AccessibilityLabel เป็น contentDescription AccessibilityValue เปลี่ยนชื่อเป็น statusDescription แล้ว (I250f2)
  • นำเหตุการณ์ที่กำหนดเองออกจาก API การป้อนตัวชี้การระงับ (Ia54d5, b/175142755) แล้ว
  • ได้เปิดตัวฟังก์ชันใหม่หลายอย่างใน SelectionRegistrar รวมถึงเปลี่ยนชื่อ onPositionChange เป็นแจ้งให้ทราบPositionChange (Ifbaf7)
  • สมาชิกจำนวนมากขึ้นของ LayoutNode ที่เราทำเครื่องหมายว่าเป็นภายใน (I443c6)
  • มีการนำเสนอ LayoutInfo ให้นำมาใช้โดยการใช้เครื่องมือและการทดสอบ (I9b190)
  • AndroidOwner สร้างภายใน (Ibcad0, b/170296980)
  • นำคำอธิบายประกอบ ExperimentalPointerInput ออกแล้ว (Ia7a24)
  • เพิ่มระบบการเลื่อนที่ซ้อนกันแล้ว ดูรายละเอียดเพิ่มเติมได้ที่ Modifier.nestedscroll สำหรับรายละเอียดเพิ่มเติม (I36e15, b/162408885)
  • subcomposeInto(LayoutNode) ได้รับการสร้างขึ้นภายใน (Id724a)
  • มีการเปลี่ยนแปลงอินเทอร์เฟซของ Applier เพื่อลดความซับซ้อน สร้างต้นไม้จากล่างขึ้นบนแทนที่จะสร้างจากด้านบน

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

    เพิ่มเมธอด insertBottomUp() ใหม่แล้ว

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

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

  • เพิ่มพร็อพเพอร์ตี้ cancelOnBackPress และ pressOnClickExternal ใน AndroidDialogProperties ตัวเลือกเหล่านี้ช่วยให้กำหนดค่าได้เมื่อมีการเรียกใช้ onCancelRequest lambda ของกล่องโต้ตอบ (If5e17)

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

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

  • ย้าย ContentDrawScope ไปยังกราฟิก UI แล้ว กับ DrawScope (Iee043, b/173832789)

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

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

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

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

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

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

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

    API ตัวสร้างฟังก์ชันการไล่ระดับสีที่เลิกใช้งานแล้ว ในวิธีจากโรงงานกับวัตถุการไล่ระดับสี (I511fc, b/173066799)

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

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

  • เพิ่มฟังก์ชันค่าเริ่มต้น createAnnotatedString ในลำดับ เพื่อสร้าง AnnotatedString สตริงที่มีคำอธิบายประกอบที่เลิกใช้งานแล้ว เครื่องมือสร้างขึ้นมา (Idfe0b)

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

เวอร์ชัน 1.0.0-alpha08

2 ธันวาคม 2020

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

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

  • ปิดการดำเนินการเพิ่มความหมาย (I2b706)
  • ย้าย DrawModifier API จาก ในแพ็กเกจ androidx.compose.ui แพ็กเกจ androidx.compose.ui.draw สร้างไฟล์ DrawModifierDeprecated.kt ไปยังแล้ว รวมถึง typealiases/helper เพื่อช่วย การย้ายข้อมูลจาก API (รหัส 6044, b/173834241)
  • เปลี่ยนชื่อ Modifier.drawLayer เป็น Modifier.graphicsLayer แล้ว รวมทั้งอัปเดตคลาสที่เกี่ยวข้องเป็น GraphicsLayer ตาม ความคิดเห็นเกี่ยวกับ API (I0bd29, b/173834241)
  • มีการเพิ่มเมธอดใหม่ 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 ที่แสดง Callback onWindowFocusChanged (I53b2a, b/170932874)
  • อัปเดต TransformOrigin API แล้ว มีไวยากรณ์ที่ทำลายโครงสร้างแล้วให้แสดงผล pivotFractionX และ pivotFractionY เป็น component1 และ component2 (If43c4, b/173586560)
  • เพิ่มการตรวจสอบ Lint สำหรับการตั้งชื่อและตำแหน่งของพารามิเตอร์ lambda ที่ประกอบกันได้ เพื่อตรวจสอบความสอดคล้องของหลักเกณฑ์การเขียน รวมทั้งย้ายข้อมูล 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)
  • ตัวตรวจจับท่าทางสัมผัสการลากแบบใหม่ที่ระงับเคอร์เซอร์ API ของอินพุต รวมถึงการล็อกการวางแนว (Icef25)
  • เปลี่ยนชื่อ VectorAsset เป็น ImageVector แล้ว ย้ายและเปลี่ยนชื่อ VectorAsset เป็น Builder เป็นคลาสภายในของ ImageVector ตาม หลักเกณฑ์ API เพิ่ม typealias ของ VectorAssetBuilder แล้ว ลิงก์ไปยัง ImageVector.Builder สำหรับความเข้ากันได้ (Icfdc8)
  • เปลี่ยนชื่อ ImageAsset และ เมธอดที่เกี่ยวข้องกับ ImageBitmap (Ia2d99)
  • เพิ่มพารามิเตอร์ zIndex สำหรับ PlaceScope() เพื่อให้ Modifier.zIndex() ทำงานเป็น LayoutModifier และเลย์เอาต์ที่กําหนดเองจะสามารถตั้งค่า zIndex สําหรับรายการย่อยในการบล็อกตำแหน่ง (I711f7, b/171493718)
  • ย้ายคุณสมบัติพื้นฐานทางอรรถศาสตร์เป็น UI (I6f05c) แล้ว
  • สถานที่ที่เลิกใช้งาน(ออฟเซ็ต) และ PlaceRelative(ออฟเซ็ต) ใช้โอเวอร์โหลดที่มีออฟเซ็ต Int แทน (I4c5e7)
  • ก่อนหน้านี้มีการนำ API ที่เลิกใช้งานออก: นำ Modifier.onPositioned ออก โปรดใช้ Modifier.onGloballyPositioned Modifier.onDraw ถูกนำออกแล้ว ให้ใช้ Modifier.onDrawBehind นำ Modifier.plus ออกแล้ว โปรดใช้ Modifier นำ Color.Unset ออกแล้ว โปรดใช้ Color.Unidentifier นำคลาส PxBounds ออกแล้ว โปรดใช้ Rect แทน (Ie9d02, b/172562222)
  • อัปเดตอินเทอร์เฟซการปรับแนวและทำให้ใช้งานได้แล้ว (I46a07, b/172311734)
  • ตัวตรวจจับท่าทางสัมผัสสำหรับการแตะ แตะสองครั้ง กดค้าง และสัญลักษณ์การกดถูกเพิ่มโดยใช้ตัวชี้การระงับใหม่ อินพุต มีการเพิ่มยูทิลิตีบางอย่างด้วย ซึ่งทำให้ง่ายขึ้น ให้นักพัฒนาซอฟต์แวร์เขียนตัวตรวจจับท่าทางสัมผัสของตนเอง (I00807)
  • id เปลี่ยนชื่อเป็น layoutId สำหรับ LayoutIdParentData แล้ว เปลี่ยนชื่อ Measurable.id เป็น Measurable.layoutId แล้ว (Iadbcb, b/172449643)
  • ตัวตรวจจับท่าทางสัมผัสแบบมัลติทัชแบบใหม่ ได้แก่ ในการตรวจหาการหมุน การซูม และการเลื่อน (Ic459d)
  • เปิดตัว SweepGradientShader และ SweepGradientBrush API (Ia22c1)
  • การควบคุมเวลาในการทดสอบ (TestAnimationClock และการใช้งาน) คือ อยู่ในขั้นทดลอง (I6ef86, b/171378521)
  • เพิ่ม API การเลื่อนที่ใช้โครูทีน:

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

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

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

  • ตอนนี้ AndroidComposeTestRule สามารถยอมรับกิจกรรมที่กำหนดเองแล้ว Launcher (Ib8288, b/153623653, b/154135019)

  • เลิกใช้งาน TextLayoutผลลัพธ์.getLineVisibleEnd แล้ว ตอนนี้ TextLayoutResult.getLineEnd ที่มาแทนที่จะมีพารามิเตอร์ใหม่ที่มองเห็นได้ (I73282)

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

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

  • API ใหม่สำหรับการเรียกใช้ภาพเคลื่อนไหวในโครูทีน (Ied662)

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

  • พารามิเตอร์การจัดแนวของ Box เปลี่ยนชื่อเป็น contentAlignment แล้ว (I2c957)
  • เปลี่ยนชื่อตัวปรับแต่งออฟเซ็ตPx เป็นออฟเซ็ต ตอนนี้จะใช้พารามิเตอร์ lambda แทน State แล้ว (Ic3021, b/173594846)
  • เพิ่มพารามิเตอร์resetInput ลงใน TextInputService#onStateUpdated (I3e8f5, b/172239032, b/171860947)
  • เพิ่มการตรวจสอบ Lint สำหรับพารามิเตอร์ตัวปรับแต่งในฟังก์ชัน Composable การตรวจสอบ Lint นี้จะตรวจสอบการตั้งชื่อ ประเภทการแสดงผล ค่าเริ่มต้น และลำดับของพารามิเตอร์เพื่อให้สอดคล้องกับหลักเกณฑ์การเขียน (If493b)
  • เพิ่มตัวเลือกชั่วคราวเพื่ออนุญาตให้ TestAnimationClock ขับเคลื่อนโดย MonotonicFrameClock (I1403b, b/173402197)
  • เพิ่ม Wrapper ของแบบอักษร Android แล้ว คุณสามารถโหลด Android แบบตัวพิมพ์ผ่านฟังก์ชัน typeface เช่น typeface(Typeface.DEFAULT) และเปลี่ยนชื่อ typefaceFromFontFamily() เป็น typeface() (I52ab7) ด้วย
  • เพิ่มการตรวจสอบ Lint เพื่อดูว่าฟังก์ชันจากโรงงานของ Modifier ถือเป็นส่วนขยายใน Modifier เพื่อให้เชื่อมต่อกันได้อย่างคล่องแคล่ว (I07981)
  • นำโมดูลการทดสอบ UI เก่าและสตับของโมดูลออก (I3a7cb)
  • Recomposer ไม่ยอมรับ EmbeddingContext อีกต่อไป ต้องระบุ ทรัพยากร Dependency ของกำหนดการจะดึงมาจาก EffectCoroutineContext เลิกใช้งาน FrameManager แล้ว การผสานรวมแพลตฟอร์มควรเริ่มต้น การจัดการสแนปชอตทั่วโลกของตนเอง (I02369)
  • ส่งข้อมูลรูปแบบไปยังโหนดการช่วยเหลือพิเศษ (If5e8d)
  • TextUnit.Inherit เปลี่ยนชื่อเป็น TextUnit ไม่ระบุเพื่อให้สอดคล้องกับหน่วยอื่นๆ (กรณีที่ 19)

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

11 พฤศจิกายน 2020

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

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

  • เปิดตัว ScaleFactor คลาสแบบอินไลน์เพื่อแสดงสัดส่วน ปัจจัยสำหรับแนวนอนและแนวตั้ง แกนที่เป็นอิสระจากกันตามลำดับ เพื่อรองรับ Use Case ของการปรับขนาดที่ไม่ใช่แบบเดียวกัน
    • เพิ่มเมธอด computeScaleFactor ไปยัง สเกลเนื้อหา
    • เพิ่ม ContentScale.FillBounds เพื่อดำเนินการ การปรับขนาดไม่เป็นแบบเดียวกันเพื่อยืด src ขอบเขตเพื่อให้ครอบคลุมปลายทางทั้งหมด
    • เพิ่มเมธอดโอเปอเรเตอร์ที่จะประมวลผลแล้ว พารามิเตอร์ ScaleFactor ที่มีพารามิเตอร์ขนาด
    • (Ic96a6, b/172291582)
  • มีการเพิ่มโรงงาน BiasAlignment และ BiasAbsoluteAlignment สำหรับการสร้างการจัดแนว (Iac836, b/169406772)
  • อนุญาตให้นักพัฒนาซอฟต์แวร์บังคับล้างโฟกัส (I90372)
  • แก้ไขข้อบกพร่องที่ทำให้ไม่มีการวาดระดับความสูงเพื่อดูภายในการเขียนแล้ว (If7782)
  • สร้าง onDrawBehind API ภายใน ContentDrawScope ให้ตรงกับรูปแบบการตั้งชื่อกับ Modifier.drawBehind (I4fc3a, b/171955269)
  • เพิ่มการรองรับระยะห่างของกล้อง เพื่อเสริมการแปลง 3 มิติ การหมุนเวียนX/rotationY บน API ของเลเยอร์ (I40213, b/171492100)
  • เพิ่ม SelectionContainer โดยไม่มี Callback (Ibfadb) แล้ว
  • ลบคำอธิบายประกอบ ExperimentalSubcomposeLayoutApi แล้ว ตอนนี้สามารถใช้ SubcomposeLayout ได้โดยไม่ต้องเพิ่ม @OptIn (I708ad)
  • FirstBaseline และ LastBaseline ย้ายไปยังแพ็กเกจ androidx.compose.ui.layout (Ied2e7) แล้ว
  • นำความทึบแสงออกจากตัวปรับราคาเสนอ DrawShadow() ตามเดิม ทำให้เกิดความสับสน (I82c62, b/171624638)
  • ย้าย Measureผลลัพธ์ ออกจาก MeasureScope (Ibf96d, b/171184002)
  • มีการย้ายสัญลักษณ์ที่เกี่ยวข้องกับเลย์เอาต์หลายรายการจาก androidx.compose.ui ไปยัง androidx.compose.layout.ui (I0fa98, b/170475424)
  • นำ FocusState2 ที่เลิกใช้งานแล้วออก (I686cb, b/168686446)
  • ขณะนี้ ZIndexModifier เป็นระบบภายใน (I1808b, b/171493718)
  • อัปเดตประเภทการแสดงผล lerp ในพารามิเตอร์ขนาดที่จะแสดงผล ขนาดที่ไม่ใช่ null เพื่อหลีกเลี่ยงที่ไม่จำเป็น ชกมวย (Ib0044)
  • เพิ่ม TestMonotonicFrameClock สำหรับการทดสอบโค้ดที่อาศัย MonotonicFrameClock ของ Compose สำหรับรอเหตุการณ์ของเฟรมองค์ประกอบ การใช้ RunblockTest (I4402f) ของ kotlinx-coroutines-test
  • นำ ท่าทางสัมผัสScope.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)
  • อัปเดตฟิลด์ข้อความเพื่อยอมรับ 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 ใน โปรดจำ VectorPainter เพื่อ ระบุว่า Composable API ภายใน ใช้ประโยชน์จาก "การจดจำ" เพื่อคงข้อมูลไว้ งานประพันธ์ (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 เพื่อรวมทรัพยากร Dependency แล้ว สำหรับ DrawScope
    • นำวิธีการที่เลิกใช้งานออกจาก DrawScope แล้ว (I56f5e)
  • การเปลี่ยนแปลงที่ทำลาย: นำค่าที่ส่งกลับออกจาก PointerInputFilter.onPointerEvent(...) เนื่องจากค่าเดียวที่ควรเปลี่ยนได้ในเหตุการณ์ตัวชี้คือข้อมูลการใช้งาน ตอนนี้คุณสามารถเปลี่ยนแปลงข้อมูลการใช้งาน PointerEvents ที่ส่งผ่านแทนการส่งคืนข้อมูลจาก PointerInputFilter.onPointerEvent(...) ได้ (I6acd0)
  • MeasureScope และ IntrinsicMeasureScope สร้างเป็นอินเทอร์เฟซ (I1a087, b/170461665)
  • ฟังก์ชันผสานสำหรับ AlignmentLine ถูกซ่อนไว้ (I9da1a, b/170612900, b/170611568)
  • เพิ่มความสามารถในการระบุข้อมูลเครื่องมือตรวจสอบในตัวปรับแต่งที่เขียน (Idee08, b/163494569)
  • เพิ่มตัวเลือก SelectAll ในเมนูการเลือกแล้ว (Ief02b)
  • อัปเดต DrawTransform.rotate เพื่อใช้ พารามิเตอร์ Pivot เริ่มต้นของศูนย์ที่จะจับคู่ เอกสารประกอบ
    • อัปเดต DrawScope.rotateRad เพื่อใช้ค่าออฟเซ็ตสำหรับ จุด Pivot ให้ตรงกับวิธีการเปลี่ยนรูปแบบอื่นๆ
    • DrawScope.rotateRad การใช้งานที่เกินการใช้งานที่เลิกใช้งานแล้ว จะลอยสำหรับพิกัด 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 ย่อยที่ส่งคืนค่า False สำหรับ onTouchEvent สำหรับการดำเนินการทั้งหมดยกเว้น ACTION_DOWN (I94c5a, b/170320973)
  • Box สร้างฟังก์ชันในบรรทัด (Ibce0c, b/155056091)

การสนับสนุนภายนอก

  • รองรับภาษาAnnotatedString.capitalizeและAnnotatedString.decapitalize (I4aa7f)

เวอร์ชัน 1.0.0-alpha05

14 ตุลาคม 2020

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

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

  • เพิ่ม DSL เพื่อระบุข้อมูลเครื่องมือตรวจสอบ (Ic9a22)
  • เลื่อน LongPress ไปไว้ในข้อความ (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)

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

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

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

  • เพิ่ม API ในการล้างโฟกัสแบบเป็นโปรแกรม (Ie1dc2, b/161487952)

  • นำ PointerInputFilter.onPointerInput(...) ออกแล้ว ควรใช้ PointerInputFilter.onPointerEvent(...) แทน (I6F04a)

  • การเปลี่ยนแปลงขนาด

    • นำ Size.getFlped ออกแล้ว
    • นำ Size.rem ออกแล้ว
    • นำ Size.truncDiv (Ief44d, b/169790720) ออกแล้ว
  • ในฐานะส่วนหนึ่งของการกำหนดมาตรฐาน ของค่าที่ส่งสำหรับคลาสในบรรทัด เปลี่ยนชื่อสี ยกเลิกการตั้งค่าเป็นสี ไม่ระบุ เพื่อความสอดคล้องกับคลาสแบบอินไลน์อื่นๆ (I97611, b/169797763)

  • แนะนำ TextOverflow.None เมื่อส่วนเพิ่มเติมเป็น "ไม่มี" Text จะไม่จัดการกับส่วนเพิ่มเติมอีกต่อไป และจะรายงานขนาดจริงไปยัง LayoutNode (I175c9, b/158830170)

  • พารามิเตอร์ขอบเขตภายใน AnnotatedString.Builder.addStringAnnotation เปลี่ยนชื่อเป็นแท็กเพื่อความสอดคล้องของ API (I7c8cb)

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

  • ประสิทธิภาพการเลื่อนของ LazyColumn/Row ดีขึ้นโดยลดองค์ประกอบย่อยในการเลื่อนแต่ละครั้ง เพิ่มเมธอด hasทันทีหลังจากการทำซ้ำ() แบบใหม่สำหรับคลาสการเรียบเรียง เมธอด hasPendingChanges() จาก Recomposer ถูกเปลี่ยนชื่อเป็น hasให้สอดคล้องกับ() (Ib2f32, b/168293643, b/167972292, b/165028371)
  • ขนาดที่อัปเดตแล้ว ไม่ระบุ ให้เป็น Float.NaN แทน Float.POSITIVE_INFINITY อัปเดตการติดตั้งใช้งาน Painter เป็น ตรวจสอบกับ Size.Unidentifier ด้วย เป็นขนาดแบบไม่จำกัด (I95a7e)
  • ตอนนี้ลำดับของการเรียก Place() ในเลย์เอาต์ที่กำหนดเองจะเป็นตัวกำหนดลำดับการวาดสำหรับเด็กแล้ว (Ibc9f6)
  • รองรับการแปลง AnnotatedString เป็น SAttachableString สำหรับการเข้าถึง (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)

  • LocationScope#parentWidth และ PlacementScope#parentLayoutDirection จะอ่านจากบล็อกตำแหน่งของเลย์เอาต์ที่กำหนดเองไม่ได้อีกต่อไป (Icc1ae, b/168295623)

  • เพิ่ม AccessibilityscrollState ลงในพร็อพเพอร์ตี้ความหมาย (Ifeda9)

  • เปิดตัว Modifier.drawWithCache เพื่อรองรับการสร้างวัตถุภาพวาด ที่สร้างทรัพยากร Dependency ใหม่แบบมีเงื่อนไข ขึ้นอยู่กับข้อมูลขนาด/สถานะ (I376dc)

  • นำ ParagraphConstraints ออกแล้ว ระบบจะส่งความกว้างไปยังย่อหน้าโดยตรงตอนนี้ (Ica712)

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

  • อัปเดต Graphics API หลายรายการ
    • อัปเดตการปรับขนาดและการหมุนแล้ว การเปลี่ยนรูปแบบที่จะใช้ พารามิเตอร์ออฟเซ็ตเพื่อแสดง Pivot พิกัดแทนที่จะเป็นจุดลอยตัวแยกต่างหาก พารามิเตอร์ของพิกัด x/y ใน DrawScope และ DrawTransform
    • นำ Rect.expandToInclude และ Rect.join ออกแล้ว วิธีการ
    • อัปเดตเอกสารประกอบของรัศมีที่แสดงรูปวงรี นอกเหนือจากเครื่องอีลิปติคอล
    • เพิ่มเอกสารประกอบเพื่อระบุ เครื่องมือสร้างสาธารณะสำหรับรัศมีในบรรทัด ไม่ ต้องเรียกโดยตรง แต่ วัตถุที่มีรัศมีควรสร้างอินสแตนซ์ผ่าน เครื่องมือสร้างฟังก์ชัน
    • นำ RoundRect API ออกแล้วเพื่อค้นหาtopRight, bottomRight, bottomCenter ฯลฯ
    • เลิกใช้งาน Rect.shift เพื่อใช้ Rect.translate แล้ว
    • นำ API RoundRect.grow และ Rect.shrink ออกแล้ว
    • เปลี่ยนชื่อ RoundRect.outerRect เป็น Rect.boundingRect แล้ว
    • นำ RoundRect.middleRect/tallMiddleRect/wideMiddleRect ออกแล้ว และวิธีการ Rect.isStadium
    • เปลี่ยนชื่อ RoundRect.longestSide เป็น RoundRect.maxDimension แล้ว
    • เปลี่ยนชื่อ RoundRect.shortestSide เป็น RoundRect.minDimension แล้ว
    • เปลี่ยน RoundRect.center เป็นพร็อพเพอร์ตี้แทนฟังก์ชัน
    • อัปเดตตัวสร้าง RoundRect เพื่อใช้คุณสมบัติของรัศมี แทนพารามิเตอร์แต่ละตัวสำหรับค่ารัศมี x/y
    • นำ API ขนาดที่สันนิษฐานว่าเป็นสี่เหลี่ยมผืนผ้าที่มี ต้นทางที่ 0,0
    • เพิ่ม API ที่ทำลายลงในรัศมีแล้ว
    • ย้ายฟังก์ชันส่วนขยาย RoundRect ต่างๆ เป็น พร็อพเพอร์ตี้แทน
    • (I8f5c7, b/168762961)
  • Foundation.Box เลิกใช้งานแล้ว โปรดใช้ Foundation.layout.Box แทน (Ie5950, b/167680279)
  • เปลี่ยนชื่อกลุ่มเป็น Box แล้ว เราจะเลิกใช้งาน Box ที่มีอยู่ก่อนหน้านี้เพื่อเปลี่ยนไปใช้ Box ใหม่ใน publisher.foundation.layout ลักษณะการทำงานของ Box ใหม่คือการเรียงรายการย่อยซ้อนทับกันเมื่อมีรายการย่อยหลายคน ซึ่งแตกต่างจาก Box ก่อนหน้านี้ ซึ่งมีลักษณะการทำงานที่คล้ายกับคอลัมน์ (I94893, b/167680279)
  • เลิกใช้งานพารามิเตอร์การตกแต่งกล่องแล้ว หากต้องการให้มีการตกแต่ง/ระยะห่างจากขอบบนกล่อง ให้ใช้ตัวปรับแต่งแทน (Modifier.background, Modifier.border, Modifier.padding) (Ibae92, b/167680279)
  • อัปเดต Graphics API หลายรายการ
    • อัปเดต DrawScope API ที่มีขอบเขต เพื่อระบุว่าการเปลี่ยนแปลง การเปลี่ยนแปลงจะมีผลเฉพาะภายใน Callback และนำออกหลังจากมีการเรียกใช้ Callback
    • อัปเดตเอกสาร ClipsPath เพื่ออ้างอิงไปยังเส้นทางแล้ว แทนสี่เหลี่ยมผืนผ้ามุมมน
    • ระยะห่างคงที่ในเอกสารสำหรับพารามิเตอร์ที่ถูกต้อง ในClipPath
    • เปลี่ยนชื่อ DrawScope.drawCanvas เป็น DrawIntoCanvas และ พารามิเตอร์ขนาดที่นำออก
    • เปลี่ยนชื่อพารามิเตอร์ dx/dy ในเมธอด inset เป็น แนวนอนและแนวตั้ง
    • เพิ่มโอเวอร์โหลดส่วนที่ให้ ค่าที่แทรกเป็นขอบเขตทั้ง 4 ส่วน
    • ลบเอกสารที่ระบุว่าวิธีการฝัง ส่วนนั้นจะใช้กับทั้ง 4 ด้าน
    • อัปเดตเอกสารประกอบสำหรับคลาส Rect แล้ว
    • อัปเดตความคิดเห็นเกี่ยวกับพารามิเตอร์ Rect ให้ตรงกับ kdoc ภาพถ่ายไฮเปอร์เรียลลิสติก
    • นำ Rect.join และ Rect.expandToInclude ออกแล้ว
    • สร้างการโอเวอร์โหลดสำหรับ Rect.translate(offset) และ Rect.shift เลิกใช้งานแล้ว
    • (If086a, b/167737376)
  • ที่มีคำอธิบายประกอบrootAnimationClockfactor, การเปลี่ยนเปิดใช้, 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)
  • นำเมธอดโอเปอเรเตอร์ออกจาก "ขนาด" แล้ว API ที่ใช้พารามิเตอร์ออฟเซ็ต ผลของการดำเนินการเหล่านี้ไม่ชัดเจน และผลการค้นหาเป็นประเภทที่ไม่คาดคิด สำหรับสิ่งเหล่านี้ เช่น ควรขนาด - ผลลัพธ์ออฟเซ็ต ออฟเซ็ตหรือผลลัพธ์ขนาดแตกต่างกันอย่างไร

    และนำวิธีการที่เลิกใช้งานออกไปในคลาส Size ด้วย (Iec902, b/166514214)

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

  • แก้ไขรายการ LazyColumn ที่วาดไม่ถูกต้องในบางครั้ง ซึ่งก็ทำให้เกิดข้อขัดข้องในบางเงื่อนไขด้วย (Ibcf17, b/163066980, b/165921895)
  • DpConstraints และ API ที่ใช้เลิกใช้งานแล้ว (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

  • นำ Callback ออกเพื่อแจ้งเจ้าของเมื่อขอบเขตของโหนดเลย์เอาต์เปลี่ยนแปลง (If654e, b/166106882)
  • เพิ่มการรองรับfilltype แล้ว พารามิเตอร์บนเส้นทางกราฟิกเวกเตอร์ เพื่อรองรับรอยบากของรูปร่าง เป็นกฎการเติมเส้นทาง Odd หรือ NonZero (I43dd2)
  • ระยะเวลาทำงานและอัตราความเร็วเปลี่ยนเป็นคลาสแบบอินไลน์แล้ว (I48f4a)
  • ระยะเวลาเป็นคลาสในหน้าแล้ว (I565eb)
  • เพิ่ม Callback เพื่อแจ้งเจ้าของเมื่อขอบเขตของโหนดเลย์เอาต์เปลี่ยนแปลง (Ic40b3)
  • แก้ปัญหาที่มีตัวสร้างฟังก์ชันสี่เหลี่ยมผืนผ้า ที่มีออฟเซตและรัศมีจะสร้างสี่เหลี่ยมผืนผ้าในภาพ ลำดับของซ้าย ขวา บน ล่าง แทนที่จะเป็น ซ้าย บน ขวา ล่าง

    นำวิธีการที่แสดงร่วมกันที่เลิกใช้งานแล้วออกจาก Rect in ของเครื่องมือสร้างฟังก์ชัน

    เพิ่มการทดสอบเพื่อยืนยันเมธอดใน Rect.kt (I08460, b/165822356)

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

  • เพิ่ม MutableRect ซึ่งเป็นสี่เหลี่ยมผืนผ้าที่แก้ไขได้ (I71bd2, b/160140398)
  • Matrix4 ถูกแทนที่ด้วย Matrix ส่วนอื่นๆ ทั้งหมด ของแพ็กเกจเวกเตอร์คณิตศาสตร์ได้ถูกลบออกแล้ว (Ibd665, b/160140398)
  • แบบแผนการเรียกใช้สำหรับฟังก์ชันที่ประกอบกันได้มี มีการเปลี่ยนแปลง นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบไบนารี ห้องสมุดทั้งหมดต้องเป็น ได้รับการคอมไพล์ซ้ำเพื่อให้ทำงานร่วมกับปลั๊กอินคอมไพเลอร์ Compose เวอร์ชันนี้ได้

    การเปลี่ยนแปลงนี้จะไม่สร้างการเปลี่ยนแปลงช่วงพักโฆษณาระดับแหล่งที่มาเนื่องจาก เฉพาะ 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 แทนหากทำได้เพื่อปล่อย View ภายใน Compose โปรดทราบว่าระบบจะไม่รองรับการเขียน View และ ViewGroups โดยตรงในอนาคตเว้นแต่จะออกมาอยู่ในแผนผังองค์ประกอบ ทั้งในกรณีที่ใช้ AndroidView ได้ (I29b1e, b/163871221)
  • FocusState2 เลิกใช้งานแล้วและแทนที่ด้วย FocusState (Ia8b79, b/160822876, b/160923332)
  • ระบบนำโอเวอร์โหลด AndroidView ที่เลิกใช้งานแล้วออก (I946b9, b/163802393)
  • ตอนนี้การปล่อยที่กำหนดเองจะประกาศว่ามีตัวตั้งค่าอย่างน้อย 1 ตัว สามารถข้ามและเขียนใหม่ได้อย่างอิสระโดยไม่ขึ้นอยู่กับการปล่อย (Ibbd13)
  • เปลี่ยนคลาสเวกเตอร์เป็นไม่อีกต่อไป เป็นคลาสข้อมูลเพราะอินสแตนซ์ของออบเจ็กต์เดียวกัน ใช้ในการประพันธ์เพลง

    เพิ่ม 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 lambda ลงใน SemanticsPropertyKey แล้ว ประเภท ใช้เพื่อกำหนดนโยบายที่กำหนดเองสำหรับความหมายการผสานAllDescendants การผสาน นโยบายเริ่มต้นคือใช้ค่าระดับบน หากมีอยู่แล้ว ปรากฏ หรือไม่ก็มีค่าย่อย (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)

  • PxBound ที่เลิกใช้งานแล้วใน ชอบสี่เหลี่ยมผืนผ้า อัปเดตการใช้งานทั้งหมดแล้ว ของ PxBounds พร้อมรูปสี่เหลี่ยมและเพิ่ม การเลิกใช้งาน/แทนที่ด้วย เพื่อช่วยเสริม การย้ายข้อมูล (I37038, b/162627058)

  • นำ KeyEvent2 ที่เลิกใช้งานแล้วออก ใช้ KeyEvent แทน (Ied2d0, b/162097587)

  • KeyEvent มีพร็อพเพอร์ตี้ Unicode ที่ใช้เพื่อรับอักขระ Unicode ที่สร้างขึ้นจากชุดค่าผสมคีย์ที่ระบุและสถานะคีย์เมตา (If3afc)

  • สร้างเหตุการณ์ DelayUp ที่กําหนดเอง และคลาสที่เกี่ยวข้องการเลือกใช้ API ก็น่าจะเปลี่ยนแปลงไปอย่างมาก (I56d6f)

  • นำ PointerEventPass ออก 2 รายการที่ไม่ได้ใช้แล้ว ที่จำเป็น (I3dd9d)

  • เพิ่มสีพารามิเตอร์ เงา และการตกแต่งข้อความลงใน Paragraph.paint ฟังก์ชันนี้มีประโยชน์เพื่อหลีกเลี่ยงการสร้างย่อหน้าที่ไม่จำเป็น (I81689)

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

  • นำ onFocusChanged Callbacks ออกจาก 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)

  • ขัดข้องเมื่อมีการแก้ไขสิ่งที่บันทึกสถานะไว้ภายในสำหรับวนซ้ำ การมีคีย์เดียวกันใน savedInstanceState() ได้รับอนุญาตแล้ว ตอนนี้ API ของ UiSavedStateRegistry จึงมีการปรับตามข้อกำหนดใหม่นี้ (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561)

  • ขณะนี้ Composable ของ state { ... } เลิกใช้งานแล้วเพื่อให้ การเรียกไปที่ remember { mutableStateOf(...) } อย่างชัดแจ้งเพื่อความชัดเจน การดำเนินการนี้จะลดแพลตฟอร์ม API โดยรวมและจำนวนแนวคิดสำหรับสถานะ การจัดการ และตรงกับรูปแบบ by mutableStateOf() สำหรับชั้นเรียน การมอบสิทธิ์พร็อพเพอร์ตี้ (Ia5727)

  • เปลี่ยนชื่อ Rect เป็น RoundRect แล้ว เพื่อให้พอดีกับรูปแบบการตั้งชื่อ สร้างตัวสร้างฟังก์ชันที่คล้ายกัน ไปยัง "Rect" และเลิกใช้งานฟังก์ชัน 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 สนับสนุนแอตทริบิวต์ TriPath (I808fe)
  • ย้ายกล่องโต้ตอบไปยัง UI (I47fa6)
  • นำ PointerEventPass ออก 2 รายการที่ไม่ได้ใช้แล้ว ที่จำเป็น (I33ca7)
  • ใช้งาน PointerInteropModifier ซึ่งช่วยให้ ความสามารถในการรับ MotionEvents และโต้ตอบกับ 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 แทน "จากนั้น" มีสัญญาณในการจัดลำดับมากกว่า ในขณะเดียวกันก็ห้ามพิมพ์ Modifier.padding().background() + anotherModifier ทำให้เชนหลุดและอ่านยากขึ้น (Iedd58, b/161529964)
  • เพิ่มคลาสย่อย [Abstract]ComposeView View สำหรับการโฮสต์ Compose เนื้อหาในลำดับชั้นการแสดงผล (I46357)
  • ตอนนี้ Row และ Column เปลี่ยนเป็นฟังก์ชันในบรรทัดแล้ว ซึ่งช่วยลดค่าใช้จ่ายในการใช้งาน (I75C10)
  • เพิ่ม SubcomposeLayout แล้ว เป็นค่าพื้นฐานระดับต่ำที่ช่วยให้สร้างองค์ประกอบย่อยระหว่างการวัดค่าได้ หากเราต้องการใช้ค่าที่มีอยู่ภายหลังในระหว่างการวัดสําหรับองค์ประกอบของแผนผังย่อย ตัวอย่างเช่น ไม่ได้ติดตั้งใช้งาน WithConstraints โดยใช้ SubcomposeLayout (I25cc8)
  • เพิ่ม SemanticsNode.positionInRoot เพื่อรับตำแหน่งของ SemanticsNode ที่สัมพันธ์กับรูทของลำดับชั้น Compose (Icdf26, b/161336532)
  • Motion Events ผ่านมาแล้ว จาก Android ไปยัง Compose และ กลับมาใช้ Android (I14be8, b/158034713)
  • นำเมนูแบบเลื่อนลงป๊อปอัปออกแล้ว (I00430)
  • ตำแหน่งป๊อปอัปคงที่บนจอแสดงผลที่ตัดออก (Idd7dd)
  • เพิ่มการดำเนินการช่วยเหลือพิเศษเพื่อรับ TextLayoutผลลัพธ์ (I9d6e6)
  • เพิ่ม RemeasurementModifier แล้ว ซึ่งช่วยให้สามารถวัดเลย์เอาต์ได้พร้อมกัน โดยทั่วไปแล้วคุณไม่จำเป็นต้องใช้ฟีเจอร์นี้เพราะการวัด/รีเลย์จะเกิดขึ้นโดยอัตโนมัติ แต่เรานำมาใช้ภายใน LazyColumnItems ระหว่างการเลื่อน (I5f331, b/160791058)
  • นำ getLineEllipsisOffset/getLineEllipsisCount ออก ใช้ getLineVisibleEnd/getLineEnd/isLineEllipified แทน (I85aa2)
  • เพิ่มเครื่องหมาย/คำอธิบายประกอบเพื่อเหตุผลของแนวทางปฏิบัติแนะนำ (I66B20)
  • แสดง API บรรทัดเพิ่มเติมใน TextLayoutผลลัพธ์ (I79bd2)
  • ตัวแปลงเวกเตอร์ในตัวเพื่อแปลงค่าในตัว ขณะนี้คุณสามารถเข้าถึงหน่วยโฆษณาผ่าน Foo.VectorConverter เช่น Dp.VectorConverter, Color.VectorConverter, Float.VectorConverter ฯลฯ (I3e273)

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

  • แก้ไข API แบบกว้าง (I077bc)
    1. นำอินเทอร์เฟซ OffsetBase ที่ไม่ได้ใช้ออก
    2. จัดคลาสออฟเซ็ตและ IntOffset ให้มี แพลตฟอร์ม API ที่สอดคล้องกัน
    3. เปลี่ยนชื่อ IntOffset.Origin เป็น IntOffset.Zero เพื่อให้สอดคล้องกับ Offset API
    4. ย้ายเมธอด NativeCanvas ออกจาก Canvas แล้ว สำหรับสนับสนุนให้ผู้บริโภคสร้าง อินสแตนซ์ Canvas ของตัวเอง
    5. สร้างคลาส EmptyCanvas เพื่อเปลี่ยนโครงสร้างภายในโค้ดแล้ว DrawScope ให้เป็นพารามิเตอร์ที่ไม่ใช่ค่าว่างได้แทน lateinit และตรวจสอบว่าฟิลด์จะไม่เป็นโมฆะ
    6. เปลี่ยนชื่อ ClipOp enum เป็น Pascal Case แล้ว
    7. เปลี่ยนชื่อ enum ของFilterquality เป็น Pascal Case แล้ว
    8. เปลี่ยนชื่อ Strokeเข้าร่วม enum เป็น Pascal Case แล้ว
    9. เปลี่ยนชื่อ enum ของ PointMode เป็น Pascal Case แล้ว
    10. เปลี่ยนชื่อ enum ของ PaintingStyle เป็น Pascal Case แล้ว
    11. เปลี่ยนชื่อ PathFillType enum เป็น Pascal Case แล้ว
    12. เปลี่ยนชื่อ StrokeCap enum เป็น Pascal Case แล้ว
    13. อัปเดตการใช้งาน DrawCache เป็นไม่แล้ว ใช้พารามิเตอร์ Latinit
    14. อัปเดต DrawScope เพื่อไม่ให้ใช้การมอบสิทธิ์แบบ Lazy อีกต่อไป สำหรับพารามิเตอร์ภายในfillPaint และ Straint
    15. อัปเดตรูปภาพที่ประกอบขึ้นได้เพื่อหลีกเลี่ยงการใช้ Box ลดค่าใช้จ่าย
    16. อัปเดตคลาส Outline ให้มีคำอธิบายประกอบ @Immutable
    17. อัปเดต PathNode ให้มีคำอธิบายประกอบ @Immutable สำหรับ วิธีการในแต่ละเส้นทาง
    18. อัปเดตองค์ประกอบย่อยเวกเตอร์เพื่อนำรายการที่ซ้ำซ้อนออก การตรวจสอบความเทียบเท่าแบบมีเงื่อนไขตามแฮนเดิลของการเขียนที่มีอยู่แล้ว พวกมัน
    19. เลิกใช้งานเมธอดตัวสร้างโฆษณาที่แสดงร่วมรูปสี่เหลี่ยมผืนผ้าที่ต้องการแล้ว ของตัวสร้างฟังก์ชัน
    20. อัปเดตคลาสของแปรงและเครื่องมือสร้างฟังก์ชันด้วย API @ที่เปลี่ยนแปลงไม่ได้และ @เสถียร
    21. อัปเดต enum VertexMode เป็น PascalCase
    22. อัปเดต DrawScope เมธอด SelectPaint เป็นแบบมีเงื่อนไข เขียนทับพารามิเตอร์เส้นโครงร่างในการแสดงผล หากมี เปลี่ยนแปลงแล้ว
    23. อัปเดตขนาดเพื่อเพิ่ม API ที่ทำลายโครงสร้างแล้ว เปลี่ยนชื่อ UnidentifierSize เป็น "Unidentifier [ไม่ระบุ]" และ "นำเมธอดที่ไม่ได้ใช้ออก"
  • อัปเดตการใช้ Compose BlendMode API แล้ว เพื่อแมประหว่าง BlendModes ของเฟรมเวิร์ก 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 แล้ว (รหัส 7e04)
  • เนื้อหา FilledTextField ได้เปลี่ยนชื่อเป็น TextField และ TextField พื้นฐานได้เปลี่ยนชื่อเป็น BaseTextField เพื่อให้ค้นพบและใช้ API ที่ต้องการได้ง่ายที่สุด (Ia6242, b/155482676)
  • Modifier.drawBackground ได้เปลี่ยนชื่อเป็น Modifier.background (I13677)

เวอร์ชัน 0.1.0-dev15

22 กรกฎาคม 2020

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

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

  • หากต้องการใช้ Compose เวอร์ชัน 0.1.0-dev15 คุณจะต้องอัปเดตทรัพยากร Dependency ตามข้อมูลโค้ดใหม่ที่แสดงด้านบนในการประกาศทรัพยากร Dependency

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

  • FocusModifier เลิกใช้งานไปแล้วเพื่อใช้ Modifier.Focus, Modifier.focusRequester, Modifier.FocusObserver แทน FocusState และ FocusDescriptionState เลิกใช้งานแล้วเพื่อใช้ FocusState2 (I46919, b/160822875, b/160922136)
  • เพิ่มตัวแก้ไขเพื่อสังเกตการเปลี่ยนแปลงสถานะโฟกัส (I05866, b/160924455, b/160923326)
  • เพิ่มคีย์ตัวปรับแต่งในคำขอเปลี่ยนแปลงโฟกัส (I8dd73, b/161182057, b/160924778)
  • ปรับเมนูแถบเครื่องมือเพื่อแสดงการคัดลอก ตัด วาง อย่างถูกต้อง (Id3955)
  • ตอนนี้พร็อพเพอร์ตี้ความหมายค่าเดี่ยวใช้รูปแบบการเรียกแล้ว ตัวอย่างเช่น 'ความหมาย { hide = true }' เขียนเป็น: semantics { hidden() } (Ic1afd, b/145951226, b/145955412)
  • เพิ่ม Modifier.Focus ซึ่งแทนที่ FocusModifier (Ib852a, b/160924778)
  • เพิ่ม FloodToolbar สำหรับการเลือกฟิลด์ข้อความ (Ie8b07)
  • เพิ่มคำอธิบายประกอบ API ทดลองสำหรับ API ที่เกี่ยวข้องกับอินพุตคีย์ (I53c0a)
  • เพิ่มคำอธิบายประกอบ API ทดลองสำหรับ API ที่เกี่ยวข้องกับโฟกัสทั้งหมด (I53b24, b/160903352)
  • เพิ่ม FocusState2 แล้ว ซึ่งจะแทนที่ FocusDetailsState (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)
  • Made LayoutNode รุ่นทดลอง (I4f2e9)
  • เพิ่มวิธีการคัดลอกไปยัง ประเภทคลาสในหน้า ได้แก่

    • ออฟเซ็ต
    • ขนาด
    • รัศมี
    • การเคลื่อนไหว
    • ต้นกำเนิดการแปลง

    • เมธอดออบเจ็กต์ที่แสดงร่วม Size.copy ที่เลิกใช้งาน วิธีการคัดลอกอินสแตนซ์ (Ife290, b/159905651)

  • ป๊อปอัป กล่องโต้ตอบ และเมนูกำลังรับค่า MaterialTheme ตามบริบท (Ia3665, b/156527485)

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

  • นำพารามิเตอร์ทิศทางของเลย์เอาต์ออกจากบล็อกการวัดของฟังก์ชัน Layout() อย่างไรก็ตาม ทิศทางของเลย์เอาต์จะมีอยู่ใน Callback ผ่านออบเจ็กต์ Measure Scope (Ic7d9d)

  • เปลี่ยนโครงสร้างแฮนเดิลส่วนที่เลือกเพื่อนำมาใช้ใหม่ (I420e0)

  • "คลิกได้" ถูกนำออกแล้ว ใช้ Modifier.clickable (I84bdf)

  • ลบ TestTag และความหมายแล้ว ใช้ Modifier.testTag และ Modifier.semantics แทน (I15ff0, b/158841414)

  • ก่อนการเปลี่ยนแปลงนี้ ปลั๊กอินคอมไพเลอร์ของการเขียนจะสกัดกั้นการเรียกไปยังตัวสร้างภายในฟังก์ชัน @Composable หากมี (I5205a, b/158123804)

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

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

  • มีการเพิ่มพารามิเตอร์ Composable ของ AndroidView แล้ว (I48a88, b/158746303)

  • เลิกใช้งาน Semantics() แล้ว ใช้ Modifier.semantics() แทน (I72407, b/158841414)

  • เพิ่ม viewModel() ที่เขียนได้ด้วย Composable ซึ่งช่วยให้สร้างหรือสร้าง ViewModel แล้ว ซึ่งคล้ายกับวิธีการทำงานในกิจกรรมหรือ Fragment (I5fdd1)

  • แทนที่การใช้ IntPx ด้วย Int. แทนที่ IntPxPosition ด้วย IntOffset แทนที่ IntPxSize ด้วย IntSize (Ib7b44)

  • ในการรวม จำนวนคลาสที่ใช้แสดง ข้อมูลขนาด, ทำให้เป็นมาตรฐาน เกี่ยวกับการใช้คลาส Size แทน ของ PxSize ซึ่งมีประโยชน์ ของคลาสในหน้าที่จะใช้ประโยชน์จาก เพื่อบรรจุค่าจำนวนลอยตัว 2 ค่าเพื่อแสดง ความกว้างและความสูงแสดงเป็นแบบลอย (Ic0191)

  • ในการรวม จำนวนคลาสที่ใช้แสดง ข้อมูลการวางตำแหน่ง, ทำให้เป็นมาตรฐาน เกี่ยวกับการใช้คลาสออฟเซ็ตแทน ของ PxPosition ซึ่งมีประโยชน์ ของคลาสในหน้าที่จะใช้ประโยชน์จาก เพื่อบรรจุค่าจำนวนลอยตัว 2 ค่าเพื่อแสดง x และออฟเซ็ต y แสดงเป็นเลขทศนิยม (I3ad98)

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

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

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

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

  • เลิกใช้งาน TestTag แล้ว โปรดใช้ Modifier.testTag แทน (If5110, b/157173105)

  • ระบบนำการใช้งาน ParentDataModifier#modifyParentData ที่เป็นค่าเริ่มต้นออกแล้ว ซึ่งเทียบเท่ากับการไม่ใช้อินเทอร์เฟซตั้งแต่แรก (แนวคิด)

  • เลิกใช้งาน ScaleFit ไว้ก่อนหน้านี้เป็น ลบแล้ว โปรดใช้ ContentScale แทน (Ifbc5b)

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

  • เพิ่มคอมโพเนนต์เมนูแบบเลื่อนลงใน UI-material ซึ่งเป็นการใช้เมนูดีไซน์ Material (I9bb3d)

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

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

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

  • การใช้ CanvasScope แบบรวม ตอนนี้ก็มีแค่ DrawScope และ ขอบเขตการวาดเนื้อหา เปลี่ยนชื่อ CanvasScope เป็น DrawScope อัปเดต DrawScope เพื่อใช้ความหนาแน่น อินเทอร์เฟซ และแสดง LayoutDirection ลบคลาสย่อย DrawScope ใน ContentDrawScope อัปเดต Painter และ PainterModifier แล้ว เพื่อไม่ให้มีพร็อพเพอร์ตี้ RTL อีกต่อไป และ DrawScope มีข้อมูลนี้แล้ว โดยไม่ต้องระบุด้วยตนเอง (I1798e)

  • Double TapGestureFilter เลย แยกความแตกต่างของ Single TapGestureFilter บนต้นไม้ (If92b1)

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

  • มีการเปลี่ยนแปลง API ตัวแก้ไข DrawLayer: outlineShape เปลี่ยนชื่อเป็นรูปร่าง และมีค่าเริ่มต้น RectangleShape และเปลี่ยนเป็นค่าที่ไม่มีค่าว่างแล้ว ClipToOutline เปลี่ยนชื่อเป็นคลิป นำคลิปToBounds ออกแล้วเนื่องจากเหมือนกับคลิป == true ที่มี RectangleShape (I7ef11, b/155075735)

  • อัปเดตระดับสูงขึ้นแล้ว เขียน API ที่เปิดเผย Canvas ต่อ แสดง CanvasScope แทน การดำเนินการนี้จะนำ ความต้องการของผู้บริโภคในการรักษา เป็นเจ้าของออบเจ็กต์ Paint สำหรับผู้บริโภคที่ ยังคงต้องการเข้าถึง Canvas ก็สามารถใช้ส่วนขยาย DrawCanvas ที่ให้ผลลัพธ์ Callback ไปยังปัญหา ให้วาดคำสั่งด้วยฟังก์ชัน Canvas (I80afd)

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

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

  • นำอินเทอร์เฟซ LayoutModifier ที่เลิกใช้งานแล้วออก (I2a9d6)

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

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

  • เพิ่ม Modifier.zIndex() ใหม่เพื่อควบคุมลำดับการวาดขององค์ประกอบย่อยภายในเลย์เอาต์หลักเดียวกัน พร็อพเพอร์ตี้ระดับความสูงใน DrawLayerModifier เปลี่ยนชื่อเป็น shadowElevation และไม่ได้ควบคุมลำดับการวาดอีกต่อไป ลำดับของพารามิเตอร์สำหรับ DrawShadow มีการเปลี่ยนแปลง: ตอนนี้ระดับความสูงเป็นรายการแรก และรูปร่างคือรูปร่างที่สองที่มีค่าเริ่มต้นเป็น RectangleShape (I20150, b/152417501)

  • นำ onSizeChange และ onPositionChange ในเจ้าของแล้ว (I5c718)

  • เพิ่ม Constraints2 ซึ่งเป็นสำเนาของข้อจำกัดที่มี รองรับเฉพาะค่าที่จำกัด Int แทนที่จะเป็น IntPx IntPx จะถูกลบและจะถือว่าข้อจำกัดจำนวนเต็มทั้งหมด เช่น Android

    • มีการเพิ่ม IntSize ด้วย ซึ่งในที่สุดแล้วจะมาแทนที่ IntPxSize (I4b43a)
  • ทำให้การปรับความสอดคล้องเป็นค่าที่กำหนดเองได้ เพิ่มการจัดแนว 1D แล้ว (Ia0c05)

  • alignToSiblings ยอมรับ "วัดแล้ว" แทนที่จะเป็น "ตำแหน่งได้" (I5788D)

  • (I45f09, b/152842521)

    • เปลี่ยนชื่อ ScaleFit เป็น ContentScale แล้ว
    • ย้าย ContentScale จาก UI-graphics เป็น UI-core แล้ว อยู่ในโมดูลเดียวกับการจัดแนว API
    • เปลี่ยนชื่อ FillMaxDimension เป็น Crop แล้ว
    • เปลี่ยนชื่อ FillMinDimension เป็น Fit แล้ว
    • เปลี่ยนชื่อ Fit เป็น "Inside" เพื่อการจับคู่ที่ดียิ่งขึ้น
    • เทียบเท่า ImageView.ScaleType
    • เพิ่มเอกสารประกอบที่ระบุว่าการผสม Crop และ Alignment.Center ได้ผลลัพธ์ที่เหมือนกัน เป็น ImageView.ScaleType.CENTER_CROP และ Fit ที่ใช้กับ Alignment.Center จะได้ผลลัพธ์เหมือนกับ ImageView.ScaleType.FIT_CENTER ภายในที่ใช้ร่วมกับ Alignment.Center ทำได้ดีเท่ากัน ผลลัพธ์เป็น ImageView.ScaleType.CENTER_INSIDE
  • การรองรับ Rtl สำหรับตัวปรับแต่งการวาด (I0aaf9)

  • เปิดตัว API สำหรับการเพิ่มยอดดู Android ให้เพิ่มขึ้นจาก XML ดูรายละเอียดเพิ่มเติมที่การสาธิต ViewInCompose (I42916)

  • ปรับปรุง DrawModifier API:

    • สร้างขอบเขตตัวรับสำหรับDraw() ContentDrawScope
    • นำพารามิเตอร์ทั้งหมดในDraw() ออก
    • DrawScope มีอินเทอร์เฟซเดียวกันกับ CanvasScope เดิม
    • ContentDrawScope มีเมธอดDrawContent() (Ibaced, b/152919067)
  • เพิ่ม positionInParent และ boundsInParent สำหรับ LayoutCoordinates แล้ว (Icacdd, b/152735784)

  • DrawLayerModifier และDrawLayer() สร้างคลิปToBounds ตามค่าเริ่มต้นแล้ว และClipToOutline เป็น "เท็จ" (I0eb8b, b/152810850)

  • เปลี่ยนชื่อ Layoutผลลัพธ์ เป็น Measureผลลัพธ์แล้ว (Id8c68)

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

  • เปลี่ยนตัวปรับแต่งและโอเปอเรเตอร์ด้วยฟังก์ชันส่วนขยายจากโรงงาน (I225e4)

  • เพิ่มพร็อพเพอร์ตี้ TranslationX/Y ลงในการสนับสนุนแล้ว ออฟเซ็ตรายการคำสั่งวาดสำหรับ เลเยอร์หนึ่งๆ วิธีนี้มีประโยชน์ในการย้ายเนื้อหา เพื่อตอบสนองต่อภาพเคลื่อนไหวหรือเหตุการณ์การแตะ (I8641C)

  • เพิ่มพารามิเตอร์ PivotX, PivotY แล้ว เป็น Layer API เพื่อรองรับการหมุนและการปรับขนาด รอบจุดใดจุดหนึ่งบนเลเยอร์ (Icf7c3)

  • เพิ่ม OnPositionedModifier และ OnChildPositionedModifier เพื่อแทนที่ OnPositioned และ OnChildPositioned Composable (I2ec8f)

  • เพิ่ม LayerModifier ซึ่งเป็นตัวแก้ไขที่ช่วยให้ การเพิ่ม RenderNode สำหรับเลย์เอาต์ ช่วยให้สามารถตั้ง การตัด ความทึบแสง การหมุน การปรับขนาด และแสงเงา การดำเนินการนี้จะแทนที่ RepaintBoundary (I7100d, b/150774014)

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

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

  • การสนับสนุนเบื้องต้นสำหรับ Rtl ในเลย์เอาต์ของการเขียน (Ia5519)

  • เราได้รวมความหนาแน่นและ DensityScope เป็นอินเทอร์เฟซเดียว ตอนนี้คุณใช้ DensityAmbient.current แทนเงื่อนไขแอมเบียนท์Density() ได้แล้ว แทน withDensity(density) เพียงด้วย(density) (I11cb1)

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

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

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

  • การปรับปรุงแพลตฟอร์ม API ของข้อจำกัด (I0fd15)

  • สร้าง CanvasScope API ที่รวม วัตถุ Canvas เพื่อแสดงเป็นแบบไม่เก็บสถานะและมีการประกาศ วาดเขียน API มีการเปลี่ยนรูปแบบ ภายในขอบเขตตัวรับและขนาดของข้อมูล ยังกำหนดขอบเขตไว้เป็นขอบเขตที่เกี่ยวข้องด้วย ผู้บริโภคไม่จำเป็นต้องรักษาสถานะ Paint ของตนเองไว้ สำหรับการกำหนดค่าการดำเนินการวาด

    • เพิ่ม CanvasScopeSample รวมถึง อัปเดตแอปเดโมให้รวมกราฟิกประกาศ เดโม (Ifd86d)
  • นำ MaskFilter API ที่ไม่ได้ใช้ออกแล้ว เนื่องจากมีการใช้งานที่จำกัดและไม่ได้รับการเพิ่มประสิทธิภาพ สำหรับการเร่งฮาร์ดแวร์ในกรณีการใช้งานส่วนใหญ่ (I54f76)

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

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

  • แนะนำสี่เหลี่ยมผืนผ้าเพิ่มเติม พารามิเตอร์ไปยัง ImagePainter เพื่อรองรับ วาดส่วนย่อยของ ImageAsset ที่เกี่ยวข้อง (I0ea9e)

  • เพิ่ม "สีที่ไม่ได้ตั้งค่า" เพื่อแสดงค่าที่ยังไม่ได้ตั้งค่าโดยไม่มีค่า สีชกมวย (If901a)

  • เพิ่ม Canvas.rotate และ วิธีการขยายเวลาของ Canvas.scale เพื่อ ใช้พิกัด Pivot ที่เป็นตัวเลือกสำหรับ การเปลี่ยนรูปแบบทั้งหมด ค่าเริ่มต้นเหล่านี้ ที่มุมซ้ายบนของ การแปลแคนวาสปัจจุบัน

    และย้าย Canvas.rotateRad ไปยัง วิธีการขยายเวลาเพื่อความสอดคล้อง (Ibaca6)

  • สร้าง PixelMap API เพื่อรองรับการใช้งานแล้ว การค้นหาข้อมูลพิกเซลจาก ImageAsset (I69ad6)

  • เปลี่ยนชื่อเป็นFrameworkRect/toFrameworkRectF เป็น toAndroidRect/toAndroidRectF เพื่อให้ตรงกับรูปแบบการตั้งชื่อ สำหรับการแปลงออบเจ็กต์ระหว่างการเขียนและ Android เฟรมเวิร์ก API ที่ สร้างขึ้นมาต่อยอดกัน มีการอัปเดตด้วย เอกสารเกี่ยวกับ API เหล่านี้ (I86337)

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

    เปลี่ยนชื่อ API ของ Image(Painter) เป็น PaintBox(Painter) สร้าง Vector Composable ที่มีลักษณะการทำงานเหมือน รูปภาพ Composable ยกเว้น VectorAsset แทน ของ ImageAsset (I9af9a, b/149030271)

  • เปลี่ยนชื่อ "รูปภาพ" เป็น ImageAsset เพื่อให้แยกความแตกต่างระหว่างข้อมูลรูปภาพกับ Image Composable ที่กำลังจะเกิดขึ้นซึ่งใช้ในการเข้าร่วมในเลย์เอาต์และการวาดเนื้อหา _Body:สร้างเมธอดส่วนขยายใน android.graphics.Bitmap, Bitmap.asImageAsset() ในการสร้างอินสแตนซ์ของ ImageAsset มีประโยชน์สำหรับการรวม Android ดั้งเดิมเข้าด้วยกัน การพัฒนาแอปพลิเคชันด้วยเฟรมเวิร์กการเขียน (Id5bbd)

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

  • เพิ่มโอเปอเรเตอร์ TextComposition.plus (I0ad1a)

  • นำ Force ออกจากค่า enum ของ TextDirectionAlgorithm (Icc944) แล้ว

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

  • ใช้ LongPressAndDrag สำหรับการเลือกฟิลด์ข้อความ (I17919)

  • เพิ่ม AnnotatedString.getStringAlias ที่แสดงคำอธิบายประกอบทั้งหมดภายในช่วง (I1fa00)

  • เปลี่ยนชื่อแพ็กเกจสำหรับ Locale และ LocaleList จาก androidx.ui.text ไปยัง androidx.ui.intl (I8132c)

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

  • การเปลี่ยนแปลง API: AnnotatedString(builder: Builder) ถูกเปลี่ยนชื่อเป็น {5/}dString(builder: Builder) (Ia6377)

  • การเปลี่ยนแปลง API: AnnotatedString.Item เปลี่ยนชื่อเป็น AnnotatedString.Range (I2d44d)

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

  • ตอนนี้คุณสามารถซ่อน/แสดงแป้นพิมพ์ของซอฟต์แวร์ได้โดยใช้ SoftwareKeyboardController ที่นำส่งโดย onTextInputStarted Callback (I8dc44, b/151860051)

  • เพิ่มโอเปอเรเตอร์บวกสำหรับรูปแบบ (ข้อความ/ย่อหน้า/Span) มอบสิทธิ์ไปที่ฟังก์ชันMerge() (Ia1add)

  • Fontweight.lerp ไม่สแนปอีกต่อไป โดยยังคงเป็นคลาสข้อมูลอยู่ (I521c2)

  • ขณะนี้ตัวสร้าง Fontweight เป็นแบบสาธารณะ ซึ่งไม่ใช่คลาสข้อมูลอีกต่อไป (Id6b1f)

  • เพิ่ม getLineStart, getLineEnd, getEllipsisOffset และ getEllipsisCount ลงใน TextLayoutผลลัพธ์ (Ibc801)

  • โมดูลข้อความ UI เปลี่ยนชื่อเป็น ui-text-core (I57dec)

  • นำคลาส Size ที่ไม่ได้ใช้ออกแล้ว เพราะมีคลาสขนาดซ้ำกัน ในโมดูล UI-geometry ที่ ที่กำลังรับชมอยู่ (I1B602)

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

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

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

  • onFocusChange Callback ในช่องข้อความที่เปลี่ยนชื่อเป็น onFocusChanged (Ida4a1)
  • เลิกใช้งาน Vertical Scroller และ Horiziontalscroller แล้ว ใช้ ScrollableColumn และ ScrollableRow สำหรับประสบการณ์แบบบิวท์อินที่มีลักษณะการทำงานของคอลัมน์/แถวและพารามิเตอร์ หรือใช้ Modifier.verticalscroll และ Modifier.Inventoryscroll ในองค์ประกอบของคุณเอง ในทำนองเดียวกัน ScrollerPosition ถูกเลิกใช้งานเพื่อใช้ ScrollState แล้ว (I400ce, b/157225838, b/149460415, b/154105299)
  • runOnIdleCompose เปลี่ยนชื่อเป็น runOnIdle (I83607)
  • มีการเปลี่ยนชื่อ API การทดสอบหลายรายการเพื่อให้ใช้งานง่ายขึ้น ทั้งหมด searchXYZ API ได้เปลี่ยนชื่อเป็น onNodeXYZ เปลี่ยนชื่อ API ของ doXYZ ทั้งหมดเป็น OperatXYZ (I7F164)
  • ตอนนี้ UI เขียนสามารถเขียนภายใน ViewGroups ได้โดยไม่ต้องมีการเรียบเรียงใหม่ ดูตัวอย่างใน ViewInteropDemo (I9ab0b, b/160455080)
  • เพิ่ม SortWith และ removeRange ไปยัง MutableVector (Icccf7)
  • ใช้แฮนเดิลการเลือกการลากเพื่อเปลี่ยนการเลือกสำหรับ TextField (I27032)
  • ลบคลาส Shader inline ที่ รวมคลาส NativeShader คาดหวัง เปลี่ยนชื่อ NativeShader เป็น Shader คลาส Shader inline ที่รวมไว้ได้ ไม่เพิ่มสิ่งใดก็ตามที่มีคุณค่าลงในแพลตฟอร์ม API และเป็นคลาสแบบอินไลน์ ดังนั้นโปรดใช้ NativeShader โดยตรง (I25e4d)
  • ตัวปรับแต่งจิตรกรแบบเปลี่ยนโครงสร้าง เพื่อไม่ให้มีการปรับขนาดตาม ข้อจำกัดและ ContentScale ที่ระบุ พารามิเตอร์ การใช้งานช่างทาสี คือการปรับขนาดเนื้อหาภาพวาด ด้วยตนเองตามขนาดที่ระบุ DrawScope ที่พวกเขากำลังวาดรูป

    แก้ปัญหาแคชของ VectorPainter ปรับขนาดบิตแมปตามขนาดเริ่มต้นแล้ว แทนที่จะเป็นขนาดที่กำหนดเพื่อดึงข้อมูล

    อัปเดต ImagePainter เพื่อปรับขนาด เนื้อหาแทนการใช้ PainterModifier เพื่อดำเนินการดังกล่าวในนามขององค์กร (I6ba90)

  • เพิ่มฟังก์ชัน withFrameNanos ระดับบนสุดสำหรับเวลาของภาพเคลื่อนไหว (Ie34c5)

  • เลิกใช้งานคำอธิบายประกอบ @ที่ไม่ได้ติดตามแล้ว แทนที่ด้วย @ComposableContract(tracked=false) (Id211e)

  • androidx.ui.foundation.TextFieldValue และ เลิกใช้งาน androidx.ui.input.EditorValue แล้ว ฟิลด์ข้อความ FilledTextField และ CoreTextField ที่ใช้ Composable ที่ใช้ ประเภทนั้นก็เลิกใช้งานแล้วด้วย โปรดใช้ androidx.ui.input.TextFieldValue แทน (I4066d, b/155211005)

  • แก้ปัญหาการป้อนเคอร์เซอร์ การมอบหมายงานจะก่อให้เกิดข้อขัดข้องหาก PointerInputFilter ถูกนำออกผ่าน และองค์ประกอบย่อยระหว่างการแยกส่วน ซึ่งตอนนี้ปัญหาได้รับการแก้ไขแล้ว (I1f48b, b/157998762)

  • แก้ปัญหาที่การส่งอินพุตตัวชี้จะ ทำให้การทำงานขัดข้องหาก PointerInputFilter ถูกนำออกผ่าน และองค์ประกอบย่อยระหว่างการแยกส่วน ซึ่งตอนนี้ปัญหาได้รับการแก้ไขแล้ว (Iab398, b/157998762)

  • คลาสรัศมีแบบปรับโครงสร้างใหม่ให้เป็น ในบรรทัด นำการสร้างโฆษณาที่แสดงร่วมออกแล้ว เมธอดที่ใช้กับตัวสร้างฟังก์ชัน พร้อมด้วยพารามิเตอร์เริ่มต้นให้มีรัศมี ตามแกน y ให้ตรงกับค่าของ พารามิเตอร์รัศมีแกน x

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

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

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

  • เปลี่ยนกลยุทธ์การสร้างโค้ดของคอมไพเลอร์ของ Compose ก่อนการเปลี่ยนแปลง คอมไพเลอร์การเขียนจะเปลี่ยนรูปแบบการเรียกไปยังฟังก์ชันที่ประกอบกันได้ จากการเปลี่ยนแปลงนี้ เราจึงเปลี่ยนรูปแบบการทำงานของฟังก์ชัน Composable และไม่เปลี่ยนแปลง Callsite (ส่วนใหญ่)

    ซึ่งหมายความว่าตรรกะที่สื่อสารกับรันไทม์การเขียนส่วนใหญ่จะเกิดขึ้นที่จุดเริ่มต้นของส่วนเนื้อหาของฟังก์ชัน ไม่ใช่ที่ Callsite

    การเปลี่ยนแปลงนี้ควรเป็นการเปลี่ยนแปลงที่เข้ากันได้กับต้นทางสำหรับการใช้งานการเขียนทั้งหมด ผู้ใช้การเขียนส่วนใหญ่ไม่ควรต้องอัปเดตโค้ดใดๆ จากการเปลี่ยนแปลงนี้

    เพื่อที่จะรองรับงานนี้ ลายเซ็น JVM ของฟังก์ชัน Composable ทั้งหมดมีการเปลี่ยนแปลง ฟังก์ชัน Composable ที่ยอมรับพารามิเตอร์เดียวจะเปลี่ยนเป็นฟังก์ชันที่รับพารามิเตอร์ 3 รายการ พารามิเตอร์เพิ่มเติมคือ Composer ซึ่งเป็นจำนวนเต็ม "key" จำนวนเต็มบิตมาสก์ที่ใช้เผยแพร่ข้อมูลเมตาผ่านการเรียกใช้

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

    การเปลี่ยนแปลงพฤติกรรมโดยเจตนาที่ทราบซึ่งเกิดจากสิ่งต่อไปนี้

    1. การโทรบางครั้งจะข้ามจากที่ที่ไม่เคยทำมาก่อน
    2. นิพจน์ที่ประกอบกันได้ในนิพจน์อาร์กิวเมนต์เริ่มต้นได้รับการติดตามและจัดการอย่างถูกต้อง

    งานนี้มีการเพิ่มประสิทธิภาพบางอย่าง: 1. ผลลัพธ์ของการเปรียบเทียบพารามิเตอร์จะเผยแพร่ผ่านการเรียกใช้กราฟไปยังฟังก์ชันที่ประกอบกันได้อื่นๆ ซึ่งจะส่งผลให้การเปรียบเทียบน้อยลงขณะรันไทม์ ลดขนาดตารางช่อง รวมถึงการข้ามฟังก์ชันที่ประกอบกันได้ซึ่งก่อนหน้านี้ไม่ได้ข้ามได้มากขึ้น 2. ระบบจะไม่เปรียบเทียบหรือจัดเก็บพารามิเตอร์ที่พิจารณาแล้วว่าเป็น "คงที่" ในเวลาคอมไพล์อีกต่อไป ซึ่งจะลดจำนวนการเปรียบเทียบและลดขนาดตารางช่อง 3. ระบบจะใช้โครงสร้างการควบคุมโฟลว์ของฟังก์ชันเพื่อลดจำนวนกลุ่มที่สร้างขึ้น การดำเนินการนี้จะลดขนาดตารางของสล็อตและทำให้การทำงานสำหรับรันไทม์ลดลง 4. พารามิเตอร์การจ่ายงานและตัวรับสัญญาณที่ไม่ได้ใช้กับฟังก์ชันจะไม่รวมอยู่ในการพิจารณาความสามารถในการข้ามของฟังก์ชันหากไม่ได้ใช้ภายในส่วนเนื้อหาของฟังก์ชัน

    การเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นส่วนใหญ่เกี่ยวข้องกับ API ที่คอมไพเลอร์กำหนดเป้าหมายโดยตรง และการใช้งานการเขียนโดยทั่วไปจะไม่ได้รับผลกระทบ ดังนี้ 1. นำ Composer::startExpr ออกแล้ว 2. นำ Composer::endExpr ออกแล้ว 3. Composer::call เลิกใช้งานแล้ว 4. นำไฟล์ที่ไม่ใช่ภาษาวาร์ราร์โหลดมากเกินไปของ key ออกแล้ว โปรดใช้เวอร์ชัน vararg นับจากนี้ไป 5. เลิกใช้งานคำอธิบายประกอบ Pivotal แล้ว โปรดใช้ key เป็นการแทน 6. มีการเปลี่ยนแปลง ScopeUpdateScope::updateScope 7. RestartableFunction และRestartableFunctionN แล้ว เพื่อรวมพารามิเตอร์เวลาการคอมไพล์เพิ่มเติม (I60756, b/143464846)

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

  • นำ RepaintBoundary ออกเพื่อใช้ DrawLayerModifier (I00aa4) แทน

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

  • แทนที่ ButtonStyle ด้วยฟังก์ชันที่แตกต่างกันและข้อความ (สตริง) ที่ถูกนำออกมากเกินไป ดูตัวอย่างที่อัปเดตสำหรับข้อมูลการใช้งาน (If63ab, b/146478620, b/146482131)

  • การเปลี่ยนแปลงที่ส่งผลกับ Environments 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 เปลี่ยนชื่อเป็น ui-text-android (I68cbe)